summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeonah Moon <seonah1.moon@samsung.com>2022-12-21 10:55:45 +0900
committerSeonah Moon <seonah1.moon@samsung.com>2022-12-21 10:56:12 +0900
commitb16a7a56e08377965863acf50afb7d91f32ba995 (patch)
tree7089ff449de1523c4d094e602251b51e75d23c1b
parent58f7e70ff869dee66c90b1323e0d5c9f324067b8 (diff)
downloadcurl-b16a7a56e08377965863acf50afb7d91f32ba995.tar.gz
curl-b16a7a56e08377965863acf50afb7d91f32ba995.tar.bz2
curl-b16a7a56e08377965863acf50afb7d91f32ba995.zip
Imported Upstream version 7.86.0upstream/7.86.0
Change-Id: I69742b17b658f837c72674c476b7a93c6965b2dc
-rw-r--r--CHANGES15789
-rw-r--r--CMake/CMakeConfigurableFile.in4
-rw-r--r--CMake/CurlSymbolHiding.cmake4
-rw-r--r--CMake/CurlTests.c64
-rw-r--r--CMake/FindBearSSL.cmake4
-rw-r--r--CMake/FindBrotli.cmake4
-rw-r--r--CMake/FindCARES.cmake4
-rw-r--r--CMake/FindGSS.cmake4
-rw-r--r--CMake/FindLibPSL.cmake45
-rw-r--r--CMake/FindLibSSH2.cmake4
-rw-r--r--CMake/FindMSH3.cmake70
-rw-r--r--CMake/FindMbedTLS.cmake2
-rw-r--r--CMake/FindNGHTTP2.cmake4
-rw-r--r--CMake/FindNGHTTP3.cmake4
-rw-r--r--CMake/FindNGTCP2.cmake6
-rw-r--r--CMake/FindNSS.cmake4
-rw-r--r--CMake/FindQUICHE.cmake4
-rw-r--r--CMake/FindWolfSSL.cmake4
-rw-r--r--CMake/FindZstd.cmake4
-rw-r--r--CMake/Macros.cmake4
-rw-r--r--CMake/OtherTests.cmake160
-rw-r--r--CMake/Platforms/WindowsCache.cmake44
-rw-r--r--CMake/Utilities.cmake4
-rw-r--r--CMake/cmake_uninstall.cmake.in4
-rw-r--r--CMake/curl-config.cmake.in4
-rw-r--r--CMakeLists.txt317
-rw-r--r--COPYING2
-rwxr-xr-xMacOSX-Framework12
-rw-r--r--Makefile31
-rw-r--r--Makefile.am325
-rw-r--r--Makefile.in385
-rw-r--r--README6
-rw-r--r--RELEASE-NOTES651
-rw-r--r--acinclude.m4568
-rw-r--r--aclocal.m42
-rwxr-xr-xbuildconf4
-rw-r--r--buildconf.bat4
-rwxr-xr-xconfig.guess1500
-rwxr-xr-xconfig.sub2609
-rwxr-xr-xconfigure7400
-rw-r--r--configure.ac642
-rw-r--r--curl-config.in8
-rw-r--r--docs/ALTSVC.md4
-rw-r--r--docs/BINDINGS.md16
-rw-r--r--docs/BUFREF.md26
-rw-r--r--docs/BUG-BOUNTY.md65
-rw-r--r--docs/BUGS.md27
-rw-r--r--docs/CHECKSRC.md29
-rw-r--r--docs/CIPHERS.md87
-rw-r--r--docs/CMakeLists.txt4
-rw-r--r--docs/CODE_REVIEW.md8
-rw-r--r--docs/CODE_STYLE.md5
-rw-r--r--docs/CONTRIBUTE.md75
-rw-r--r--docs/CURL-DISABLE.md74
-rw-r--r--docs/DEPRECATE.md37
-rw-r--r--docs/DYNBUF.md54
-rw-r--r--docs/EXPERIMENTAL.md4
-rw-r--r--docs/FAQ140
-rw-r--r--docs/FEATURES.md27
-rw-r--r--docs/GOVERNANCE.md8
-rw-r--r--docs/HELP-US.md2
-rw-r--r--docs/HISTORY.md34
-rw-r--r--docs/HSTS.md10
-rw-r--r--docs/HTTP-COOKIES.md42
-rw-r--r--docs/HTTP2.md43
-rw-r--r--docs/HTTP3.md140
-rw-r--r--docs/HYPER.md14
-rw-r--r--docs/INSTALL.md137
-rw-r--r--docs/INTERNALS.md1069
-rw-r--r--docs/KNOWN_BUGS178
-rw-r--r--docs/MAIL-ETIQUETTE10
-rw-r--r--docs/Makefile.am7
-rw-r--r--docs/Makefile.in20
-rw-r--r--docs/NEW-PROTOCOL.md6
-rw-r--r--docs/PARALLEL-TRANSFERS.md4
-rw-r--r--docs/RELEASE-PROCEDURE.md34
-rw-r--r--docs/ROADMAP.md2
-rw-r--r--docs/RUSTLS.md2
-rw-r--r--docs/SECURITY-PROCESS.md123
-rw-r--r--docs/SSL-PROBLEMS.md11
-rw-r--r--docs/SSLCERTS.md82
-rw-r--r--docs/THANKS177
-rw-r--r--docs/TODO180
-rw-r--r--docs/TheArtOfHttpScripting.md66
-rw-r--r--docs/URL-SYNTAX.md42
-rw-r--r--docs/VERSIONS.md8
-rw-r--r--docs/WEBSOCKET.md121
-rw-r--r--docs/cmdline-opts/CMakeLists.txt4
-rw-r--r--docs/cmdline-opts/MANPAGE.md24
-rw-r--r--docs/cmdline-opts/Makefile.am4
-rw-r--r--docs/cmdline-opts/Makefile.in25
-rw-r--r--docs/cmdline-opts/Makefile.inc8
-rw-r--r--docs/cmdline-opts/abstract-unix-socket.d3
-rw-r--r--docs/cmdline-opts/alt-svc.d3
-rw-r--r--docs/cmdline-opts/anyauth.d3
-rw-r--r--docs/cmdline-opts/append.d3
-rw-r--r--docs/cmdline-opts/aws-sigv4.d3
-rw-r--r--docs/cmdline-opts/basic.d3
-rw-r--r--docs/cmdline-opts/cacert.d5
-rw-r--r--docs/cmdline-opts/capath.d8
-rw-r--r--docs/cmdline-opts/cert-status.d7
-rw-r--r--docs/cmdline-opts/cert-type.d11
-rw-r--r--docs/cmdline-opts/cert.d23
-rw-r--r--docs/cmdline-opts/ciphers.d5
-rw-r--r--docs/cmdline-opts/compressed-ssh.d3
-rw-r--r--docs/cmdline-opts/compressed.d3
-rw-r--r--docs/cmdline-opts/config.d10
-rw-r--r--docs/cmdline-opts/connect-timeout.d5
-rw-r--r--docs/cmdline-opts/connect-to.d5
-rw-r--r--docs/cmdline-opts/continue-at.d5
-rw-r--r--docs/cmdline-opts/cookie-jar.d6
-rw-r--r--docs/cmdline-opts/cookie.d14
-rw-r--r--docs/cmdline-opts/create-dirs.d3
-rw-r--r--docs/cmdline-opts/create-file-mode.d5
-rw-r--r--docs/cmdline-opts/crlf.d3
-rw-r--r--docs/cmdline-opts/crlfile.d5
-rw-r--r--docs/cmdline-opts/curves.d3
-rw-r--r--docs/cmdline-opts/data-ascii.d3
-rw-r--r--docs/cmdline-opts/data-binary.d3
-rw-r--r--docs/cmdline-opts/data-raw.d3
-rw-r--r--docs/cmdline-opts/data-urlencode.d5
-rw-r--r--docs/cmdline-opts/data.d9
-rw-r--r--docs/cmdline-opts/delegation.d5
-rw-r--r--docs/cmdline-opts/digest.d5
-rw-r--r--docs/cmdline-opts/disable-eprt.d3
-rw-r--r--docs/cmdline-opts/disable-epsv.d3
-rw-r--r--docs/cmdline-opts/disable.d3
-rw-r--r--docs/cmdline-opts/disallow-username-in-url.d9
-rw-r--r--docs/cmdline-opts/dns-interface.d3
-rw-r--r--docs/cmdline-opts/dns-ipv4-addr.d5
-rw-r--r--docs/cmdline-opts/dns-ipv6-addr.d5
-rw-r--r--docs/cmdline-opts/dns-servers.d5
-rw-r--r--docs/cmdline-opts/doh-cert-status.d3
-rw-r--r--docs/cmdline-opts/doh-insecure.d3
-rw-r--r--docs/cmdline-opts/doh-url.d6
-rw-r--r--docs/cmdline-opts/dump-header.d5
-rw-r--r--docs/cmdline-opts/egd-file.d6
-rw-r--r--docs/cmdline-opts/engine.d5
-rw-r--r--docs/cmdline-opts/etag-compare.d3
-rw-r--r--docs/cmdline-opts/etag-save.d3
-rw-r--r--docs/cmdline-opts/expect100-timeout.d3
-rw-r--r--docs/cmdline-opts/fail-early.d3
-rw-r--r--docs/cmdline-opts/fail-with-body.d4
-rw-r--r--docs/cmdline-opts/fail.d16
-rw-r--r--docs/cmdline-opts/false-start.d3
-rw-r--r--docs/cmdline-opts/form-escape.d7
-rw-r--r--docs/cmdline-opts/form-string.d7
-rw-r--r--docs/cmdline-opts/form.d7
-rw-r--r--docs/cmdline-opts/ftp-account.d5
-rw-r--r--docs/cmdline-opts/ftp-alternative-to-user.d3
-rw-r--r--docs/cmdline-opts/ftp-create-dirs.d3
-rw-r--r--docs/cmdline-opts/ftp-method.d5
-rw-r--r--docs/cmdline-opts/ftp-pasv.d8
-rw-r--r--docs/cmdline-opts/ftp-port.d10
-rw-r--r--docs/cmdline-opts/ftp-pret.d3
-rw-r--r--docs/cmdline-opts/ftp-skip-pasv-ip.d3
-rw-r--r--docs/cmdline-opts/ftp-ssl-ccc-mode.d3
-rw-r--r--docs/cmdline-opts/ftp-ssl-ccc.d3
-rw-r--r--docs/cmdline-opts/ftp-ssl-control.d3
-rwxr-xr-xdocs/cmdline-opts/gen.pl74
-rw-r--r--docs/cmdline-opts/get.d7
-rw-r--r--docs/cmdline-opts/globoff.d3
-rw-r--r--docs/cmdline-opts/happy-eyeballs-timeout-ms.d5
-rw-r--r--docs/cmdline-opts/haproxy-protocol.d3
-rw-r--r--docs/cmdline-opts/head.d3
-rw-r--r--docs/cmdline-opts/header.d52
-rw-r--r--docs/cmdline-opts/help.d3
-rw-r--r--docs/cmdline-opts/hostpubmd5.d3
-rw-r--r--docs/cmdline-opts/hostpubsha256.d3
-rw-r--r--docs/cmdline-opts/hsts.d3
-rw-r--r--docs/cmdline-opts/http0.9.d3
-rw-r--r--docs/cmdline-opts/http1.0.d5
-rw-r--r--docs/cmdline-opts/http1.1.d7
-rw-r--r--docs/cmdline-opts/http2-prior-knowledge.d5
-rw-r--r--docs/cmdline-opts/http2.d9
-rw-r--r--docs/cmdline-opts/http3.d6
-rw-r--r--docs/cmdline-opts/ignore-content-length.d3
-rw-r--r--docs/cmdline-opts/include.d3
-rw-r--r--docs/cmdline-opts/insecure.d5
-rw-r--r--docs/cmdline-opts/interface.d5
-rw-r--r--docs/cmdline-opts/ipv4.d7
-rw-r--r--docs/cmdline-opts/ipv6.d7
-rw-r--r--docs/cmdline-opts/json.d35
-rw-r--r--docs/cmdline-opts/junk-session-cookies.d3
-rw-r--r--docs/cmdline-opts/keepalive-time.d13
-rw-r--r--docs/cmdline-opts/key-type.d5
-rw-r--r--docs/cmdline-opts/key.d10
-rw-r--r--docs/cmdline-opts/krb.d5
-rw-r--r--docs/cmdline-opts/libcurl.d6
-rw-r--r--docs/cmdline-opts/limit-rate.d5
-rw-r--r--docs/cmdline-opts/list-only.d3
-rw-r--r--docs/cmdline-opts/local-port.d3
-rw-r--r--docs/cmdline-opts/location-trusted.d3
-rw-r--r--docs/cmdline-opts/location.d3
-rw-r--r--docs/cmdline-opts/login-options.d7
-rw-r--r--docs/cmdline-opts/mail-auth.d3
-rw-r--r--docs/cmdline-opts/mail-from.d3
-rw-r--r--docs/cmdline-opts/mail-rcpt-allowfails.d3
-rw-r--r--docs/cmdline-opts/mail-rcpt.d3
-rw-r--r--docs/cmdline-opts/manual.d3
-rw-r--r--docs/cmdline-opts/max-filesize.d3
-rw-r--r--docs/cmdline-opts/max-redirs.d5
-rw-r--r--docs/cmdline-opts/max-time.d11
-rw-r--r--docs/cmdline-opts/metalink.d3
-rw-r--r--docs/cmdline-opts/negotiate.d3
-rw-r--r--docs/cmdline-opts/netrc-file.d6
-rw-r--r--docs/cmdline-opts/netrc-optional.d3
-rw-r--r--docs/cmdline-opts/netrc.d7
-rw-r--r--docs/cmdline-opts/next.d5
-rw-r--r--docs/cmdline-opts/no-alpn.d3
-rw-r--r--docs/cmdline-opts/no-buffer.d6
-rw-r--r--docs/cmdline-opts/no-clobber.d19
-rw-r--r--docs/cmdline-opts/no-keepalive.d3
-rw-r--r--docs/cmdline-opts/no-npn.d5
-rw-r--r--docs/cmdline-opts/no-progress-meter.d3
-rw-r--r--docs/cmdline-opts/no-sessionid.d3
-rw-r--r--docs/cmdline-opts/noproxy.d5
-rw-r--r--docs/cmdline-opts/ntlm-wb.d3
-rw-r--r--docs/cmdline-opts/ntlm.d3
-rw-r--r--docs/cmdline-opts/oauth2-bearer.d7
-rw-r--r--docs/cmdline-opts/output-dir.d7
-rw-r--r--docs/cmdline-opts/output.d3
-rw-r--r--docs/cmdline-opts/page-footer16
-rw-r--r--docs/cmdline-opts/page-header6
-rw-r--r--docs/cmdline-opts/parallel-immediate.d3
-rw-r--r--docs/cmdline-opts/parallel-max.d3
-rw-r--r--docs/cmdline-opts/parallel.d3
-rw-r--r--docs/cmdline-opts/pass.d5
-rw-r--r--docs/cmdline-opts/path-as-is.d3
-rw-r--r--docs/cmdline-opts/pinnedpubkey.d5
-rw-r--r--docs/cmdline-opts/post301.d3
-rw-r--r--docs/cmdline-opts/post302.d3
-rw-r--r--docs/cmdline-opts/post303.d3
-rw-r--r--docs/cmdline-opts/preproxy.d5
-rw-r--r--docs/cmdline-opts/progress-bar.d3
-rw-r--r--docs/cmdline-opts/proto-default.d3
-rw-r--r--docs/cmdline-opts/proto-redir.d3
-rw-r--r--docs/cmdline-opts/proto.d11
-rw-r--r--docs/cmdline-opts/proxy-anyauth.d3
-rw-r--r--docs/cmdline-opts/proxy-basic.d3
-rw-r--r--docs/cmdline-opts/proxy-cacert.d3
-rw-r--r--docs/cmdline-opts/proxy-capath.d3
-rw-r--r--docs/cmdline-opts/proxy-cert-type.d3
-rw-r--r--docs/cmdline-opts/proxy-cert.d3
-rw-r--r--docs/cmdline-opts/proxy-ciphers.d3
-rw-r--r--docs/cmdline-opts/proxy-crlfile.d3
-rw-r--r--docs/cmdline-opts/proxy-digest.d3
-rw-r--r--docs/cmdline-opts/proxy-header.d3
-rw-r--r--docs/cmdline-opts/proxy-insecure.d3
-rw-r--r--docs/cmdline-opts/proxy-key-type.d3
-rw-r--r--docs/cmdline-opts/proxy-key.d3
-rw-r--r--docs/cmdline-opts/proxy-negotiate.d3
-rw-r--r--docs/cmdline-opts/proxy-ntlm.d3
-rw-r--r--docs/cmdline-opts/proxy-pass.d3
-rw-r--r--docs/cmdline-opts/proxy-pinnedpubkey.d5
-rw-r--r--docs/cmdline-opts/proxy-service-name.d3
-rw-r--r--docs/cmdline-opts/proxy-ssl-allow-beast.d3
-rw-r--r--docs/cmdline-opts/proxy-ssl-auto-client-cert.d3
-rw-r--r--docs/cmdline-opts/proxy-tls13-ciphers.d5
-rw-r--r--docs/cmdline-opts/proxy-tlsauthtype.d3
-rw-r--r--docs/cmdline-opts/proxy-tlspassword.d3
-rw-r--r--docs/cmdline-opts/proxy-tlsuser.d3
-rw-r--r--docs/cmdline-opts/proxy-tlsv1.d3
-rw-r--r--docs/cmdline-opts/proxy-user.d5
-rw-r--r--docs/cmdline-opts/proxy.d10
-rw-r--r--docs/cmdline-opts/proxy1.0.d3
-rw-r--r--docs/cmdline-opts/proxytunnel.d3
-rw-r--r--docs/cmdline-opts/pubkey.d5
-rw-r--r--docs/cmdline-opts/quote.d14
-rw-r--r--docs/cmdline-opts/random-file.d9
-rw-r--r--docs/cmdline-opts/range.d7
-rw-r--r--docs/cmdline-opts/rate.d34
-rw-r--r--docs/cmdline-opts/raw.d3
-rw-r--r--docs/cmdline-opts/referer.d7
-rw-r--r--docs/cmdline-opts/remote-header-name.d12
-rw-r--r--docs/cmdline-opts/remote-name-all.d3
-rw-r--r--docs/cmdline-opts/remote-name.d7
-rw-r--r--docs/cmdline-opts/remote-time.d3
-rw-r--r--docs/cmdline-opts/remove-on-error.d15
-rw-r--r--docs/cmdline-opts/request-target.d3
-rw-r--r--docs/cmdline-opts/request.d5
-rw-r--r--docs/cmdline-opts/resolve.d5
-rw-r--r--docs/cmdline-opts/retry-all-errors.d3
-rw-r--r--docs/cmdline-opts/retry-connrefused.d3
-rw-r--r--docs/cmdline-opts/retry-delay.d5
-rw-r--r--docs/cmdline-opts/retry-max-time.d5
-rw-r--r--docs/cmdline-opts/retry.d5
-rw-r--r--docs/cmdline-opts/sasl-authzid.d5
-rw-r--r--docs/cmdline-opts/sasl-ir.d3
-rw-r--r--docs/cmdline-opts/service-name.d3
-rw-r--r--docs/cmdline-opts/show-error.d3
-rw-r--r--docs/cmdline-opts/silent.d3
-rw-r--r--docs/cmdline-opts/socks4.d8
-rw-r--r--docs/cmdline-opts/socks4a.d8
-rw-r--r--docs/cmdline-opts/socks5-basic.d3
-rw-r--r--docs/cmdline-opts/socks5-gssapi-nec.d3
-rw-r--r--docs/cmdline-opts/socks5-gssapi-service.d3
-rw-r--r--docs/cmdline-opts/socks5-gssapi.d3
-rw-r--r--docs/cmdline-opts/socks5-hostname.d8
-rw-r--r--docs/cmdline-opts/socks5.d8
-rw-r--r--docs/cmdline-opts/speed-limit.d7
-rw-r--r--docs/cmdline-opts/speed-time.d13
-rw-r--r--docs/cmdline-opts/ssl-allow-beast.d3
-rw-r--r--docs/cmdline-opts/ssl-auto-client-cert.d3
-rw-r--r--docs/cmdline-opts/ssl-no-revoke.d3
-rw-r--r--docs/cmdline-opts/ssl-reqd.d5
-rw-r--r--docs/cmdline-opts/ssl-revoke-best-effort.d3
-rw-r--r--docs/cmdline-opts/ssl.d10
-rw-r--r--docs/cmdline-opts/sslv2.d3
-rw-r--r--docs/cmdline-opts/sslv3.d3
-rw-r--r--docs/cmdline-opts/stderr.d5
-rw-r--r--docs/cmdline-opts/styled-output.d3
-rw-r--r--docs/cmdline-opts/suppress-connect-headers.d3
-rw-r--r--docs/cmdline-opts/tcp-fastopen.d3
-rw-r--r--docs/cmdline-opts/tcp-nodelay.d3
-rw-r--r--docs/cmdline-opts/telnet-option.d3
-rw-r--r--docs/cmdline-opts/tftp-blksize.d5
-rw-r--r--docs/cmdline-opts/tftp-no-options.d3
-rw-r--r--docs/cmdline-opts/time-cond.d5
-rw-r--r--docs/cmdline-opts/tls-max.d3
-rw-r--r--docs/cmdline-opts/tls13-ciphers.d5
-rw-r--r--docs/cmdline-opts/tlsauthtype.d3
-rw-r--r--docs/cmdline-opts/tlspassword.d3
-rw-r--r--docs/cmdline-opts/tlsuser.d3
-rw-r--r--docs/cmdline-opts/tlsv1.0.d3
-rw-r--r--docs/cmdline-opts/tlsv1.1.d5
-rw-r--r--docs/cmdline-opts/tlsv1.2.d5
-rw-r--r--docs/cmdline-opts/tlsv1.3.d5
-rw-r--r--docs/cmdline-opts/tlsv1.d3
-rw-r--r--docs/cmdline-opts/tr-encoding.d3
-rw-r--r--docs/cmdline-opts/trace-ascii.d5
-rw-r--r--docs/cmdline-opts/trace-time.d3
-rw-r--r--docs/cmdline-opts/trace.d5
-rw-r--r--docs/cmdline-opts/unix-socket.d3
-rw-r--r--docs/cmdline-opts/upload-file.d3
-rw-r--r--docs/cmdline-opts/url.d7
-rw-r--r--docs/cmdline-opts/use-ascii.d3
-rw-r--r--docs/cmdline-opts/user-agent.d5
-rw-r--r--docs/cmdline-opts/user.d5
-rw-r--r--docs/cmdline-opts/verbose.d3
-rw-r--r--docs/cmdline-opts/version.d3
-rw-r--r--docs/cmdline-opts/write-out.d20
-rw-r--r--docs/cmdline-opts/xattr.d3
-rw-r--r--docs/curl-config.131
-rw-r--r--docs/curl.11598
-rw-r--r--docs/examples/10-at-a-time.c4
-rw-r--r--docs/examples/Makefile.am8
-rw-r--r--docs/examples/Makefile.example4
-rw-r--r--docs/examples/Makefile.in138
-rw-r--r--docs/examples/Makefile.inc9
-rw-r--r--docs/examples/Makefile.m32389
-rw-r--r--docs/examples/Makefile.netware436
-rw-r--r--docs/examples/README.md19
-rw-r--r--docs/examples/altsvc.c4
-rw-r--r--docs/examples/anyauthput.c60
-rw-r--r--docs/examples/cacertinmem.c4
-rw-r--r--docs/examples/certinfo.c4
-rw-r--r--docs/examples/chkspeed.c93
-rw-r--r--docs/examples/cookie_interface.c4
-rw-r--r--docs/examples/crawler.c17
-rw-r--r--docs/examples/curlgtk.c20
-rw-r--r--docs/examples/curlx.c574
-rw-r--r--docs/examples/debug.c4
-rw-r--r--docs/examples/ephiperfifo.c4
-rw-r--r--docs/examples/evhiperfifo.c4
-rw-r--r--docs/examples/externalsocket.c4
-rw-r--r--docs/examples/fileupload.c4
-rw-r--r--docs/examples/fopen.c546
-rw-r--r--docs/examples/ftp-wildcard.c6
-rw-r--r--docs/examples/ftpget.c4
-rw-r--r--docs/examples/ftpgetinfo.c13
-rw-r--r--docs/examples/ftpgetresp.c4
-rw-r--r--docs/examples/ftpsget.c4
-rw-r--r--docs/examples/ftpupload.c4
-rw-r--r--docs/examples/ftpuploadfrommem.c4
-rw-r--r--docs/examples/ftpuploadresume.c6
-rw-r--r--docs/examples/getinfo.c4
-rw-r--r--docs/examples/getinmemory.c4
-rw-r--r--docs/examples/getredirect.c4
-rw-r--r--docs/examples/getreferrer.c4
-rw-r--r--docs/examples/ghiper.c4
-rw-r--r--docs/examples/headerapi.c81
-rw-r--r--docs/examples/hiperfifo.c4
-rw-r--r--docs/examples/href_extractor.c4
-rw-r--r--docs/examples/htmltidy.c4
-rw-r--r--docs/examples/htmltitle.cpp4
-rw-r--r--docs/examples/http-post.c4
-rw-r--r--docs/examples/http2-download.c4
-rw-r--r--docs/examples/http2-pushinmemory.c4
-rw-r--r--docs/examples/http2-serverpush.c4
-rw-r--r--docs/examples/http2-upload.c4
-rw-r--r--docs/examples/http3-present.c4
-rw-r--r--docs/examples/http3.c4
-rw-r--r--docs/examples/httpcustomheader.c4
-rw-r--r--docs/examples/httpput-postfields.c10
-rw-r--r--docs/examples/httpput.c4
-rw-r--r--docs/examples/https.c4
-rw-r--r--docs/examples/imap-append.c4
-rw-r--r--docs/examples/imap-authzid.c6
-rw-r--r--docs/examples/imap-copy.c4
-rw-r--r--docs/examples/imap-create.c4
-rw-r--r--docs/examples/imap-delete.c4
-rw-r--r--docs/examples/imap-examine.c4
-rw-r--r--docs/examples/imap-fetch.c4
-rw-r--r--docs/examples/imap-list.c4
-rw-r--r--docs/examples/imap-lsub.c4
-rw-r--r--docs/examples/imap-multi.c4
-rw-r--r--docs/examples/imap-noop.c4
-rw-r--r--docs/examples/imap-search.c4
-rw-r--r--docs/examples/imap-ssl.c4
-rw-r--r--docs/examples/imap-store.c4
-rw-r--r--docs/examples/imap-tls.c4
-rw-r--r--docs/examples/makefile.dj4
-rw-r--r--docs/examples/multi-app.c14
-rw-r--r--docs/examples/multi-debugcallback.c4
-rw-r--r--docs/examples/multi-double.c4
-rw-r--r--docs/examples/multi-event.c4
-rw-r--r--docs/examples/multi-formadd.c13
-rw-r--r--docs/examples/multi-legacy.c4
-rw-r--r--docs/examples/multi-post.c4
-rw-r--r--docs/examples/multi-single.c4
-rw-r--r--docs/examples/multi-uv.c4
-rw-r--r--docs/examples/multithread.c4
-rw-r--r--docs/examples/opensslthreadlock.c4
-rw-r--r--docs/examples/parseurl.c4
-rw-r--r--docs/examples/persistent.c4
-rw-r--r--docs/examples/pop3-authzid.c6
-rw-r--r--docs/examples/pop3-dele.c4
-rw-r--r--docs/examples/pop3-list.c4
-rw-r--r--docs/examples/pop3-multi.c4
-rw-r--r--docs/examples/pop3-noop.c4
-rw-r--r--docs/examples/pop3-retr.c4
-rw-r--r--docs/examples/pop3-ssl.c4
-rw-r--r--docs/examples/pop3-stat.c4
-rw-r--r--docs/examples/pop3-tls.c4
-rw-r--r--docs/examples/pop3-top.c4
-rw-r--r--docs/examples/pop3-uidl.c4
-rw-r--r--docs/examples/post-callback.c4
-rw-r--r--docs/examples/postinmemory.c4
-rw-r--r--docs/examples/postit2-formadd.c16
-rw-r--r--docs/examples/postit2.c4
-rw-r--r--docs/examples/progressfunc.c4
-rw-r--r--docs/examples/resolve.c4
-rw-r--r--docs/examples/rtsp.c291
-rw-r--r--docs/examples/sampleconv.c112
-rw-r--r--docs/examples/sendrecv.c4
-rw-r--r--docs/examples/sepheaders.c4
-rw-r--r--docs/examples/sessioninfo.c4
-rw-r--r--docs/examples/sftpget.c4
-rw-r--r--docs/examples/sftpuploadresume.c4
-rw-r--r--docs/examples/shared-connection-cache.c4
-rw-r--r--docs/examples/simple.c4
-rw-r--r--docs/examples/simplepost.c4
-rw-r--r--docs/examples/simplessl.c4
-rw-r--r--docs/examples/smooth-gtk-thread.c4
-rw-r--r--docs/examples/smtp-authzid.c6
-rw-r--r--docs/examples/smtp-expn.c4
-rw-r--r--docs/examples/smtp-mail.c4
-rw-r--r--docs/examples/smtp-mime.c4
-rw-r--r--docs/examples/smtp-multi.c4
-rw-r--r--docs/examples/smtp-ssl.c4
-rw-r--r--docs/examples/smtp-tls.c4
-rw-r--r--docs/examples/smtp-vrfy.c4
-rw-r--r--docs/examples/sslbackend.c4
-rw-r--r--docs/examples/synctime.c6
-rw-r--r--docs/examples/threaded-ssl.c4
-rw-r--r--docs/examples/url2file.c4
-rw-r--r--docs/examples/urlapi.c4
-rw-r--r--docs/examples/usercertinmem.c4
-rwxr-xr-xdocs/examples/version-check.pl4
-rw-r--r--docs/examples/xmlstream.c4
-rw-r--r--docs/libcurl/ABI.md18
-rw-r--r--docs/libcurl/CMakeLists.txt4
-rw-r--r--docs/libcurl/Makefile.am4
-rw-r--r--docs/libcurl/Makefile.in26
-rw-r--r--docs/libcurl/Makefile.inc9
-rw-r--r--docs/libcurl/curl_easy_cleanup.36
-rw-r--r--docs/libcurl/curl_easy_duphandle.36
-rw-r--r--docs/libcurl/curl_easy_escape.312
-rw-r--r--docs/libcurl/curl_easy_getinfo.316
-rw-r--r--docs/libcurl/curl_easy_header.3154
-rw-r--r--docs/libcurl/curl_easy_init.36
-rw-r--r--docs/libcurl/curl_easy_nextheader.397
-rw-r--r--docs/libcurl/curl_easy_option_by_id.312
-rw-r--r--docs/libcurl/curl_easy_option_by_name.317
-rw-r--r--docs/libcurl/curl_easy_option_next.314
-rw-r--r--docs/libcurl/curl_easy_pause.316
-rw-r--r--docs/libcurl/curl_easy_perform.38
-rw-r--r--docs/libcurl/curl_easy_recv.38
-rw-r--r--docs/libcurl/curl_easy_reset.36
-rw-r--r--docs/libcurl/curl_easy_send.38
-rw-r--r--docs/libcurl/curl_easy_setopt.361
-rw-r--r--docs/libcurl/curl_easy_strerror.38
-rw-r--r--docs/libcurl/curl_easy_unescape.319
-rw-r--r--docs/libcurl/curl_easy_upkeep.36
-rw-r--r--docs/libcurl/curl_escape.316
-rw-r--r--docs/libcurl/curl_formadd.361
-rw-r--r--docs/libcurl/curl_formfree.38
-rw-r--r--docs/libcurl/curl_formget.310
-rw-r--r--docs/libcurl/curl_free.36
-rw-r--r--docs/libcurl/curl_getdate.323
-rw-r--r--docs/libcurl/curl_getenv.310
-rw-r--r--docs/libcurl/curl_global_cleanup.312
-rw-r--r--docs/libcurl/curl_global_init.322
-rw-r--r--docs/libcurl/curl_global_init_mem.312
-rw-r--r--docs/libcurl/curl_global_sslset.321
-rw-r--r--docs/libcurl/curl_mime_addpart.36
-rw-r--r--docs/libcurl/curl_mime_data.321
-rw-r--r--docs/libcurl/curl_mime_data_cb.36
-rw-r--r--docs/libcurl/curl_mime_encoder.312
-rw-r--r--docs/libcurl/curl_mime_filedata.310
-rw-r--r--docs/libcurl/curl_mime_filename.38
-rw-r--r--docs/libcurl/curl_mime_free.312
-rw-r--r--docs/libcurl/curl_mime_headers.310
-rw-r--r--docs/libcurl/curl_mime_init.36
-rw-r--r--docs/libcurl/curl_mime_name.312
-rw-r--r--docs/libcurl/curl_mime_subparts.316
-rw-r--r--docs/libcurl/curl_mime_type.310
-rw-r--r--docs/libcurl/curl_mprintf.366
-rw-r--r--docs/libcurl/curl_multi_add_handle.38
-rw-r--r--docs/libcurl/curl_multi_assign.38
-rw-r--r--docs/libcurl/curl_multi_cleanup.36
-rw-r--r--docs/libcurl/curl_multi_fdset.341
-rw-r--r--docs/libcurl/curl_multi_info_read.324
-rw-r--r--docs/libcurl/curl_multi_init.310
-rw-r--r--docs/libcurl/curl_multi_perform.310
-rw-r--r--docs/libcurl/curl_multi_poll.39
-rw-r--r--docs/libcurl/curl_multi_remove_handle.36
-rw-r--r--docs/libcurl/curl_multi_setopt.36
-rw-r--r--docs/libcurl/curl_multi_socket.368
-rw-r--r--docs/libcurl/curl_multi_socket_action.36
-rw-r--r--docs/libcurl/curl_multi_strerror.310
-rw-r--r--docs/libcurl/curl_multi_timeout.320
-rw-r--r--docs/libcurl/curl_multi_wait.319
-rw-r--r--docs/libcurl/curl_multi_wakeup.36
-rw-r--r--docs/libcurl/curl_share_cleanup.38
-rw-r--r--docs/libcurl/curl_share_init.317
-rw-r--r--docs/libcurl/curl_share_setopt.38
-rw-r--r--docs/libcurl/curl_share_strerror.312
-rw-r--r--docs/libcurl/curl_slist_append.36
-rw-r--r--docs/libcurl/curl_slist_free_all.36
-rw-r--r--docs/libcurl/curl_strequal.312
-rw-r--r--docs/libcurl/curl_unescape.312
-rw-r--r--docs/libcurl/curl_url.312
-rw-r--r--docs/libcurl/curl_url_cleanup.310
-rw-r--r--docs/libcurl/curl_url_dup.314
-rw-r--r--docs/libcurl/curl_url_get.38
-rw-r--r--docs/libcurl/curl_url_set.339
-rw-r--r--docs/libcurl/curl_url_strerror.36
-rw-r--r--docs/libcurl/curl_version.36
-rw-r--r--docs/libcurl/curl_version_info.317
-rw-r--r--docs/libcurl/curl_ws_meta.3120
-rw-r--r--docs/libcurl/curl_ws_recv.361
-rw-r--r--docs/libcurl/curl_ws_send.391
-rw-r--r--docs/libcurl/libcurl-easy.36
-rw-r--r--docs/libcurl/libcurl-env.328
-rw-r--r--docs/libcurl/libcurl-errors.369
-rw-r--r--docs/libcurl/libcurl-multi.319
-rw-r--r--docs/libcurl/libcurl-security.3100
-rw-r--r--docs/libcurl/libcurl-share.36
-rw-r--r--docs/libcurl/libcurl-symbols.31176
-rw-r--r--docs/libcurl/libcurl-thread.312
-rw-r--r--docs/libcurl/libcurl-tutorial.3314
-rw-r--r--docs/libcurl/libcurl-url.352
-rw-r--r--docs/libcurl/libcurl.341
-rw-r--r--docs/libcurl/libcurl.m44
-rwxr-xr-xdocs/libcurl/mksymbolsmanpage.pl6
-rw-r--r--docs/libcurl/opts/CMakeLists.txt4
-rw-r--r--docs/libcurl/opts/CURLINFO_ACTIVESOCKET.36
-rw-r--r--docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_CAINFO.368
-rw-r--r--docs/libcurl/opts/CURLINFO_CAPATH.368
-rw-r--r--docs/libcurl/opts/CURLINFO_CERTINFO.320
-rw-r--r--docs/libcurl/opts/CURLINFO_CONDITION_UNMET.39
-rw-r--r--docs/libcurl/opts/CURLINFO_CONNECT_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.38
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.38
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_TYPE.37
-rw-r--r--docs/libcurl/opts/CURLINFO_COOKIELIST.36
-rw-r--r--docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.36
-rw-r--r--docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.36
-rw-r--r--docs/libcurl/opts/CURLINFO_FILETIME.38
-rw-r--r--docs/libcurl/opts/CURLINFO_FILETIME_T.314
-rw-r--r--docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.36
-rw-r--r--docs/libcurl/opts/CURLINFO_HEADER_SIZE.36
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.36
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.36
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTP_VERSION.36
-rw-r--r--docs/libcurl/opts/CURLINFO_LASTSOCKET.36
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_IP.36
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_PORT.36
-rw-r--r--docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_NUM_CONNECTS.36
-rw-r--r--docs/libcurl/opts/CURLINFO_OS_ERRNO.36
-rw-r--r--docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_IP.36
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_PORT.311
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIVATE.36
-rw-r--r--docs/libcurl/opts/CURLINFO_PROTOCOL.312
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.36
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXY_ERROR.315
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.36
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.36
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_TIME.310
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_URL.36
-rw-r--r--docs/libcurl/opts/CURLINFO_REFERER.36
-rw-r--r--docs/libcurl/opts/CURLINFO_REQUEST_SIZE.36
-rw-r--r--docs/libcurl/opts/CURLINFO_RESPONSE_CODE.38
-rw-r--r--docs/libcurl/opts/CURLINFO_RETRY_AFTER.36
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.36
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.36
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.38
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.36
-rw-r--r--docs/libcurl/opts/CURLINFO_SCHEME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.38
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.38
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.310
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.310
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_ENGINES.38
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.36
-rw-r--r--docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SESSION.322
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.344
-rw-r--r--docs/libcurl/opts/CURLINFO_TOTAL_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.316
-rw-r--r--docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.310
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAXCONNECTS.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.39
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.310
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.37
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHDATA.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.316
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETDATA.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERDATA.38
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.316
-rw-r--r--docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.38
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.318
-rw-r--r--docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_ALTSVC.335
-rw-r--r--docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.38
-rw-r--r--docs/libcurl/opts/CURLOPT_APPEND.36
-rw-r--r--docs/libcurl/opts/CURLOPT_AUTOREFERER.312
-rw-r--r--docs/libcurl/opts/CURLOPT_AWS_SIGV4.326
-rw-r--r--docs/libcurl/opts/CURLOPT_BUFFERSIZE.37
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO.318
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO_BLOB.38
-rw-r--r--docs/libcurl/opts/CURLOPT_CAPATH.313
-rw-r--r--docs/libcurl/opts/CURLOPT_CERTINFO.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.314
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_DATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.38
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_ONLY.318
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_TO.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.319
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.311
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.311
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEFILE.323
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEJAR.36
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIELIST.319
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIESESSION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLF.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLFILE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CURLU.310
-rw-r--r--docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.314
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.38
-rw-r--r--docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.316
-rw-r--r--docs/libcurl/opts/CURLOPT_DIRLISTONLY.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.38
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_INTERFACE.37
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SERVERS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.38
-rw-r--r--docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.39
-rw-r--r--docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DOH_URL.320
-rw-r--r--docs/libcurl/opts/CURLOPT_EGDSOCKET.313
-rw-r--r--docs/libcurl/opts/CURLOPT_ERRORBUFFER.36
-rw-r--r--docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FAILONERROR.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FILETIME.38
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_DATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FORBID_REUSE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FRESH_CONNECT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPPORT.310
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPSSLAUTH.38
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.38
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.316
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.38
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.38
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_PRET.36
-rw-r--r--docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.310
-rw-r--r--docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.38
-rw-r--r--docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADER.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERFUNCTION.37
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADEROPT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HSTS.310
-rw-r--r--docs/libcurl/opts/CURLOPT_HSTSREADDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.321
-rw-r--r--docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.38
-rw-r--r--docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.326
-rw-r--r--docs/libcurl/opts/CURLOPT_HSTS_CTRL.38
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.38
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP200ALIASES.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPAUTH.316
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPGET.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPHEADER.349
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPOST.317
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.36
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_VERSION.313
-rw-r--r--docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.36
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERFACE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLDATA.38
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.38
-rw-r--r--docs/libcurl/opts/CURLOPT_IPRESOLVE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_ISSUERCERT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.36
-rw-r--r--docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.36
-rw-r--r--docs/libcurl/opts/CURLOPT_KEYPASSWD.38
-rw-r--r--docs/libcurl/opts/CURLOPT_KRBLEVEL.36
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.312
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_AUTH.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_FROM.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_RCPT.319
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXAGE_CONN.315
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXCONNECTS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXREDIRS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MIMEPOST.330
-rw-r--r--docs/libcurl/opts/CURLOPT_MIME_OPTIONS.38
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC.373
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC_FILE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_NOBODY.38
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROGRESS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROXY.326
-rw-r--r--docs/libcurl/opts/CURLOPT_NOSIGNAL.314
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.39
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PASSWORD.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PATH_AS_IS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.318
-rw-r--r--docs/libcurl/opts/CURLOPT_PIPEWAIT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PORT.317
-rw-r--r--docs/libcurl/opts/CURLOPT_POST.36
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDS.329
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTQUOTE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTREDIR.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PREQUOTE.39
-rw-r--r--docs/libcurl/opts/CURLOPT_PREREQDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PREREQFUNCTION.335
-rw-r--r--docs/libcurl/opts/CURLOPT_PRE_PROXY.38
-rw-r--r--docs/libcurl/opts/CURLOPT_PRIVATE.310
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.314
-rw-r--r--docs/libcurl/opts/CURLOPT_PROTOCOLS.314
-rw-r--r--docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.385
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY.39
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYAUTH.310
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYHEADER.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPASSWORD.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPORT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYTYPE.38
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERNAME.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERPWD.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CAINFO.312
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.38
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CAPATH.314
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.38
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.310
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.310
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.313
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.38
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.314
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.315
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.310
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.38
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.38
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PUT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_QUOTE.313
-rw-r--r--docs/libcurl/opts/CURLOPT_RANDOM_FILE.313
-rw-r--r--docs/libcurl/opts/CURLOPT_RANGE.315
-rw-r--r--docs/libcurl/opts/CURLOPT_READDATA.38
-rw-r--r--docs/libcurl/opts/CURLOPT_READFUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.313
-rw-r--r--docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.392
-rw-r--r--docs/libcurl/opts/CURLOPT_REFERER.36
-rw-r--r--docs/libcurl/opts/CURLOPT_REQUEST_TARGET.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVE.310
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_REQUEST.311
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.36
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_AUTHZID.330
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_IR.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKFUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 (renamed from docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3)22
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVICE_NAME.315
-rw-r--r--docs/libcurl/opts/CURLOPT_SHARE.310
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.38
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.310
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.312
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.38
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.366
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.388
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.39
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.38
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.311
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.38
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERT.328
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERTTYPE.316
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.315
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEY.314
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEYTYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLVERSION.38
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.315
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.312
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.332
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.310
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_FALSESTART.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_OPTIONS.38
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_STDERR.36
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.36
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.39
-rw-r--r--docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.310
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.39
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.39
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_NODELAY.314
-rw-r--r--docs/libcurl/opts/CURLOPT_TELNETOPTIONS.310
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.312
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.312
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMECONDITION.39
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT_MS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.318
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.38
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.38
-rw-r--r--docs/libcurl/opts/CURLOPT_TRAILERDATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.320
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFERTEXT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.36
-rw-r--r--docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.36
-rw-r--r--docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.322
-rw-r--r--docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD.36
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.38
-rw-r--r--docs/libcurl/opts/CURLOPT_URL.36
-rw-r--r--docs/libcurl/opts/CURLOPT_USERAGENT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_USERNAME.36
-rw-r--r--docs/libcurl/opts/CURLOPT_USERPWD.36
-rw-r--r--docs/libcurl/opts/CURLOPT_USE_SSL.310
-rw-r--r--docs/libcurl/opts/CURLOPT_VERBOSE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_WILDCARDMATCH.351
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEDATA.314
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEFUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_WS_OPTIONS.370
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFODATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.38
-rw-r--r--docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.316
-rw-r--r--docs/libcurl/opts/CURLSHOPT_LOCKFUNC.310
-rw-r--r--docs/libcurl/opts/CURLSHOPT_SHARE.38
-rw-r--r--docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.313
-rw-r--r--docs/libcurl/opts/CURLSHOPT_UNSHARE.38
-rw-r--r--docs/libcurl/opts/CURLSHOPT_USERDATA.310
-rw-r--r--docs/libcurl/opts/Makefile.am4
-rw-r--r--docs/libcurl/opts/Makefile.in106
-rw-r--r--docs/libcurl/opts/Makefile.inc89
-rw-r--r--docs/libcurl/symbols-in-versions614
-rwxr-xr-xdocs/libcurl/symbols.pl4
-rw-r--r--docs/mk-ca-bundle.169
-rw-r--r--docs/options-in-versions4
-rw-r--r--include/Makefile.am4
-rw-r--r--include/Makefile.in17
-rw-r--r--include/README.md6
-rw-r--r--include/curl/Makefile.am8
-rw-r--r--include/curl/Makefile.in25
-rw-r--r--include/curl/curl.h105
-rw-r--r--include/curl/curlver.h14
-rw-r--r--include/curl/easy.h4
-rw-r--r--include/curl/header.h74
-rw-r--r--include/curl/mprintf.h4
-rw-r--r--include/curl/multi.h7
-rw-r--r--include/curl/options.h8
-rw-r--r--include/curl/stdcheaders.h4
-rw-r--r--include/curl/system.h22
-rw-r--r--include/curl/typecheck-gcc.h17
-rw-r--r--include/curl/urlapi.h4
-rw-r--r--include/curl/websockets.h83
-rw-r--r--lib/CMakeLists.txt34
-rw-r--r--lib/Makefile.am53
-rw-r--r--lib/Makefile.in687
-rw-r--r--lib/Makefile.inc39
-rw-r--r--lib/Makefile.m32629
-rw-r--r--lib/Makefile.netware725
-rw-r--r--lib/Makefile.vxworks198
-rw-r--r--lib/altsvc.c93
-rw-r--r--lib/altsvc.h4
-rw-r--r--lib/amigaos.c212
-rw-r--r--lib/amigaos.h18
-rw-r--r--lib/arpa_telnet.h4
-rw-r--r--lib/asyn-ares.c54
-rw-r--r--lib/asyn-thread.c21
-rw-r--r--lib/asyn.h6
-rw-r--r--lib/base64.c115
-rw-r--r--lib/bufref.c4
-rw-r--r--lib/bufref.h4
-rw-r--r--lib/c-hyper.c108
-rw-r--r--lib/c-hyper.h5
-rw-r--r--lib/config-amigaos.h39
-rw-r--r--lib/config-dos.h37
-rw-r--r--lib/config-mac.h22
-rw-r--r--lib/config-os400.h135
-rw-r--r--lib/config-plan9.h48
-rw-r--r--lib/config-riscos.h130
-rw-r--r--lib/config-tpf.h680
-rw-r--r--lib/config-vxworks.h811
-rw-r--r--lib/config-win32.h170
-rw-r--r--lib/config-win32ce.h73
-rw-r--r--lib/conncache.c67
-rw-r--r--lib/conncache.h8
-rw-r--r--lib/connect.c122
-rw-r--r--lib/connect.h4
-rw-r--r--lib/content_encoding.c83
-rw-r--r--lib/content_encoding.h7
-rw-r--r--lib/cookie.c229
-rw-r--r--lib/cookie.h25
-rw-r--r--lib/curl_addrinfo.c6
-rw-r--r--lib/curl_addrinfo.h4
-rw-r--r--lib/curl_base64.h11
-rw-r--r--lib/curl_config.h.cmake269
-rw-r--r--lib/curl_config.h.in183
-rw-r--r--lib/curl_ctype.c133
-rw-r--r--lib/curl_ctype.h78
-rw-r--r--lib/curl_des.c15
-rw-r--r--lib/curl_des.h13
-rw-r--r--lib/curl_endian.c4
-rw-r--r--lib/curl_endian.h4
-rw-r--r--lib/curl_fnmatch.c4
-rw-r--r--lib/curl_fnmatch.h4
-rw-r--r--lib/curl_get_line.c10
-rw-r--r--lib/curl_get_line.h4
-rw-r--r--lib/curl_gethostname.c4
-rw-r--r--lib/curl_gethostname.h4
-rw-r--r--lib/curl_gssapi.c18
-rw-r--r--lib/curl_gssapi.h4
-rw-r--r--lib/curl_hmac.h6
-rw-r--r--lib/curl_krb5.h4
-rw-r--r--lib/curl_ldap.h4
-rw-r--r--lib/curl_md4.h4
-rw-r--r--lib/curl_md5.h4
-rw-r--r--lib/curl_memory.h4
-rw-r--r--lib/curl_memrchr.c4
-rw-r--r--lib/curl_memrchr.h4
-rw-r--r--lib/curl_multibyte.c14
-rw-r--r--lib/curl_multibyte.h4
-rw-r--r--lib/curl_ntlm_core.c63
-rw-r--r--lib/curl_ntlm_core.h37
-rw-r--r--lib/curl_ntlm_wb.c6
-rw-r--r--lib/curl_ntlm_wb.h4
-rw-r--r--lib/curl_path.c9
-rw-r--r--lib/curl_path.h4
-rw-r--r--lib/curl_printf.h4
-rw-r--r--lib/curl_range.c6
-rw-r--r--lib/curl_range.h4
-rw-r--r--lib/curl_rtmp.c6
-rw-r--r--lib/curl_rtmp.h4
-rw-r--r--lib/curl_sasl.c22
-rw-r--r--lib/curl_sasl.h6
-rw-r--r--lib/curl_setup.h101
-rw-r--r--lib/curl_setup_once.h79
-rw-r--r--lib/curl_sha256.h7
-rw-r--r--lib/curl_sspi.c4
-rw-r--r--lib/curl_sspi.h4
-rw-r--r--lib/curl_threads.c4
-rw-r--r--lib/curl_threads.h4
-rw-r--r--lib/curlx.h4
-rw-r--r--lib/dict.c16
-rw-r--r--lib/dict.h4
-rw-r--r--lib/doh.c29
-rw-r--r--lib/doh.h51
-rw-r--r--lib/dotdot.c182
-rw-r--r--lib/dynbuf.c21
-rw-r--r--lib/dynbuf.h10
-rw-r--r--lib/easy.c157
-rw-r--r--lib/easy_lock.h105
-rw-r--r--lib/easygetopt.c4
-rw-r--r--lib/easyif.h7
-rw-r--r--lib/easyoptions.c20
-rw-r--r--lib/easyoptions.h4
-rw-r--r--lib/escape.c43
-rw-r--r--lib/escape.h7
-rw-r--r--lib/file.c35
-rw-r--r--lib/file.h4
-rw-r--r--lib/fileinfo.c4
-rw-r--r--lib/fileinfo.h4
-rw-r--r--lib/fopen.c113
-rw-r--r--lib/fopen.h (renamed from lib/dotdot.h)15
-rw-r--r--lib/formdata.c31
-rw-r--r--lib/formdata.h4
-rw-r--r--lib/ftp.c68
-rw-r--r--lib/ftp.h7
-rw-r--r--lib/ftplistparser.c8
-rw-r--r--lib/ftplistparser.h4
-rw-r--r--lib/functypes.h115
-rw-r--r--lib/getenv.c4
-rw-r--r--lib/getinfo.c22
-rw-r--r--lib/getinfo.h4
-rw-r--r--lib/gopher.c6
-rw-r--r--lib/gopher.h4
-rw-r--r--lib/h2h3.c309
-rw-r--r--lib/h2h3.h61
-rw-r--r--lib/hash.c4
-rw-r--r--lib/hash.h4
-rw-r--r--lib/headers.c386
-rw-r--r--lib/headers.h55
-rw-r--r--lib/hmac.c8
-rw-r--r--lib/hostasyn.c4
-rw-r--r--lib/hostip.c90
-rw-r--r--lib/hostip.h6
-rw-r--r--lib/hostip4.c10
-rw-r--r--lib/hostip6.c10
-rw-r--r--lib/hostsyn.c4
-rw-r--r--lib/hsts.c67
-rw-r--r--lib/hsts.h4
-rw-r--r--lib/http.c479
-rw-r--r--lib/http.h74
-rw-r--r--lib/http2.c415
-rw-r--r--lib/http2.h4
-rw-r--r--lib/http_aws_sigv4.c546
-rw-r--r--lib/http_aws_sigv4.h4
-rw-r--r--lib/http_chunks.c42
-rw-r--r--lib/http_chunks.h4
-rw-r--r--lib/http_digest.c8
-rw-r--r--lib/http_digest.h4
-rw-r--r--lib/http_negotiate.c8
-rw-r--r--lib/http_negotiate.h4
-rw-r--r--lib/http_ntlm.c12
-rw-r--r--lib/http_ntlm.h4
-rw-r--r--lib/http_proxy.c72
-rw-r--r--lib/http_proxy.h5
-rw-r--r--lib/idn_win32.c36
-rw-r--r--lib/if2ip.c48
-rw-r--r--lib/if2ip.h16
-rw-r--r--lib/imap.c40
-rw-r--r--lib/imap.h4
-rw-r--r--lib/inet_ntop.c4
-rw-r--r--lib/inet_ntop.h4
-rw-r--r--lib/inet_pton.c4
-rw-r--r--lib/inet_pton.h4
-rw-r--r--lib/krb5.c32
-rw-r--r--lib/ldap.c55
-rw-r--r--lib/libcurl.plist6
-rw-r--r--lib/libcurl.plist.in35
-rw-r--r--lib/libcurl.rc4
-rw-r--r--lib/llist.c4
-rw-r--r--lib/llist.h4
-rw-r--r--lib/makefile.amiga6
-rw-r--r--lib/makefile.dj4
-rw-r--r--lib/md4.c15
-rw-r--r--lib/md5.c162
-rw-r--r--lib/memdebug.c25
-rw-r--r--lib/memdebug.h49
-rw-r--r--lib/mime.c136
-rw-r--r--lib/mime.h16
-rwxr-xr-xlib/mk-ca-bundle.vbs431
-rw-r--r--lib/mprintf.c40
-rw-r--r--lib/mqtt.c55
-rw-r--r--lib/mqtt.h4
-rw-r--r--lib/multi.c152
-rw-r--r--lib/multihandle.h14
-rw-r--r--lib/multiif.h13
-rw-r--r--lib/netrc.c124
-rw-r--r--lib/netrc.h12
-rw-r--r--lib/non-ascii.c336
-rw-r--r--lib/non-ascii.h61
-rw-r--r--lib/nonblock.c6
-rw-r--r--lib/nonblock.h4
-rw-r--r--lib/noproxy.c222
-rw-r--r--lib/noproxy.h (renamed from src/tool_convert.h)34
-rw-r--r--lib/nwlib.c327
-rw-r--r--lib/nwos.c88
-rw-r--r--lib/openldap.c379
-rw-r--r--lib/parsedate.c4
-rw-r--r--lib/parsedate.h4
-rw-r--r--lib/pingpong.c22
-rw-r--r--lib/pingpong.h4
-rw-r--r--lib/pop3.c18
-rw-r--r--lib/pop3.h4
-rw-r--r--lib/progress.c4
-rw-r--r--lib/progress.h4
-rw-r--r--lib/psl.c4
-rw-r--r--lib/psl.h4
-rw-r--r--lib/quic.h8
-rw-r--r--lib/rand.c81
-rw-r--r--lib/rand.h12
-rw-r--r--lib/rename.c4
-rw-r--r--lib/rename.h4
-rw-r--r--lib/rtsp.c45
-rw-r--r--lib/rtsp.h4
-rw-r--r--lib/select.c106
-rw-r--r--lib/select.h22
-rw-r--r--lib/sendf.c145
-rw-r--r--lib/sendf.h16
-rw-r--r--lib/setopt.c321
-rw-r--r--lib/setopt.h4
-rw-r--r--lib/setup-os400.h4
-rw-r--r--lib/setup-vms.h4
-rw-r--r--lib/setup-win32.h19
-rw-r--r--lib/sha256.c14
-rw-r--r--lib/share.c6
-rw-r--r--lib/share.h4
-rw-r--r--lib/sigpipe.h4
-rw-r--r--lib/slist.c4
-rw-r--r--lib/slist.h4
-rw-r--r--lib/smb.c27
-rw-r--r--lib/smb.h6
-rw-r--r--lib/smtp.c29
-rw-r--r--lib/smtp.h8
-rw-r--r--lib/sockaddr.h4
-rw-r--r--lib/socketpair.c4
-rw-r--r--lib/socketpair.h6
-rw-r--r--lib/socks.c4
-rw-r--r--lib/socks.h6
-rw-r--r--lib/socks_gssapi.c8
-rw-r--r--lib/socks_sspi.c6
-rw-r--r--lib/speedcheck.c4
-rw-r--r--lib/speedcheck.h4
-rw-r--r--lib/splay.c8
-rw-r--r--lib/splay.h4
-rw-r--r--lib/strcase.c228
-rw-r--r--lib/strcase.h17
-rw-r--r--lib/strdup.c4
-rw-r--r--lib/strdup.h4
-rw-r--r--lib/strerror.c45
-rw-r--r--lib/strerror.h4
-rw-r--r--lib/strtok.c4
-rw-r--r--lib/strtok.h4
-rw-r--r--lib/strtoofft.c10
-rw-r--r--lib/strtoofft.h4
-rw-r--r--lib/system_win32.c4
-rw-r--r--lib/system_win32.h4
-rw-r--r--lib/telnet.c8
-rw-r--r--lib/telnet.h4
-rw-r--r--lib/tftp.c10
-rw-r--r--lib/tftp.h4
-rw-r--r--lib/timediff.c88
-rw-r--r--lib/timediff.h52
-rw-r--r--lib/timeval.c4
-rw-r--r--lib/timeval.h12
-rw-r--r--lib/transfer.c240
-rw-r--r--lib/transfer.h7
-rw-r--r--lib/url.c977
-rw-r--r--lib/url.h11
-rw-r--r--lib/urlapi-int.h10
-rw-r--r--lib/urlapi.c969
-rw-r--r--lib/urldata.h364
-rw-r--r--lib/vauth/cleartext.c4
-rw-r--r--lib/vauth/cram.c4
-rw-r--r--lib/vauth/digest.c210
-rw-r--r--lib/vauth/digest.h13
-rw-r--r--lib/vauth/digest_sspi.c16
-rw-r--r--lib/vauth/gsasl.c7
-rw-r--r--lib/vauth/krb5_gssapi.c4
-rw-r--r--lib/vauth/krb5_sspi.c4
-rw-r--r--lib/vauth/ntlm.c118
-rw-r--r--lib/vauth/ntlm.h7
-rw-r--r--lib/vauth/ntlm_sspi.c4
-rw-r--r--lib/vauth/oauth2.c4
-rw-r--r--lib/vauth/spnego_gssapi.c10
-rw-r--r--lib/vauth/spnego_sspi.c26
-rw-r--r--lib/vauth/vauth.c21
-rw-r--r--lib/vauth/vauth.h15
-rw-r--r--lib/version.c52
-rw-r--r--lib/version_win32.c6
-rw-r--r--lib/version_win32.h4
-rw-r--r--lib/vquic/msh3.c527
-rw-r--r--lib/vquic/msh3.h (renamed from lib/vtls/mesalink.h)24
-rw-r--r--lib/vquic/ngtcp2.c1121
-rw-r--r--lib/vquic/ngtcp2.h36
-rw-r--r--lib/vquic/quiche.c353
-rw-r--r--lib/vquic/quiche.h10
-rw-r--r--lib/vquic/vquic.c6
-rw-r--r--lib/vquic/vquic.h4
-rw-r--r--lib/vssh/libssh.c89
-rw-r--r--lib/vssh/libssh2.c182
-rw-r--r--lib/vssh/ssh.h18
-rw-r--r--lib/vssh/wolfssh.c16
-rw-r--r--lib/vtls/bearssl.c371
-rw-r--r--lib/vtls/bearssl.h4
-rw-r--r--lib/vtls/gskit.c110
-rw-r--r--lib/vtls/gskit.h4
-rw-r--r--lib/vtls/gtls.c131
-rw-r--r--lib/vtls/gtls.h4
-rw-r--r--lib/vtls/hostcheck.c (renamed from lib/hostcheck.c)120
-rw-r--r--lib/vtls/hostcheck.h (renamed from lib/hostcheck.h)10
-rw-r--r--lib/vtls/keylog.c5
-rw-r--r--lib/vtls/keylog.h4
-rw-r--r--lib/vtls/mbedtls.c146
-rw-r--r--lib/vtls/mbedtls.h4
-rw-r--r--lib/vtls/mbedtls_threadlock.c4
-rw-r--r--lib/vtls/mbedtls_threadlock.h4
-rw-r--r--lib/vtls/mesalink.c679
-rw-r--r--lib/vtls/nss.c139
-rw-r--r--lib/vtls/nssg.h4
-rw-r--r--lib/vtls/openssl.c1117
-rw-r--r--lib/vtls/openssl.h25
-rw-r--r--lib/vtls/rustls.c88
-rw-r--r--lib/vtls/rustls.h4
-rw-r--r--lib/vtls/schannel.c590
-rw-r--r--lib/vtls/schannel.h98
-rw-r--r--lib/vtls/schannel_verify.c17
-rw-r--r--lib/vtls/sectransp.c68
-rw-r--r--lib/vtls/sectransp.h4
-rw-r--r--lib/vtls/vtls.c103
-rw-r--r--lib/vtls/vtls.h24
-rw-r--r--lib/vtls/wolfssl.c88
-rw-r--r--lib/vtls/wolfssl.h4
-rw-r--r--lib/vtls/x509asn1.c (renamed from lib/x509asn1.c)173
-rw-r--r--lib/vtls/x509asn1.h (renamed from lib/x509asn1.h)60
-rw-r--r--lib/warnless.c10
-rw-r--r--lib/warnless.h10
-rw-r--r--lib/wildcard.c4
-rw-r--r--lib/wildcard.h5
-rw-r--r--lib/ws.c757
-rw-r--r--lib/ws.h69
-rw-r--r--libcurl.pc.in4
-rwxr-xr-xltmain.sh827
-rw-r--r--m4/ax_compile_check_sizeof.m4115
-rw-r--r--m4/curl-amissl.m443
-rw-r--r--m4/curl-bearssl.m44
-rw-r--r--m4/curl-compilers.m480
-rw-r--r--m4/curl-confopts.m4106
-rw-r--r--m4/curl-functions.m4853
-rw-r--r--m4/curl-gnutls.m46
-rw-r--r--m4/curl-mbedtls.m44
-rw-r--r--m4/curl-mesalink.m4107
-rw-r--r--m4/curl-nss.m44
-rw-r--r--m4/curl-openssl.m4303
-rw-r--r--m4/curl-override.m44
-rw-r--r--m4/curl-reentrant.m44
-rw-r--r--m4/curl-rustls.m44
-rw-r--r--m4/curl-schannel.m44
-rw-r--r--m4/curl-sectransp.m44
-rw-r--r--m4/curl-sysconfig.m44
-rw-r--r--m4/curl-wolfssl.m423
-rw-r--r--m4/libtool.m4229
-rw-r--r--m4/ltoptions.m44
-rw-r--r--m4/ltsugar.m42
-rw-r--r--m4/ltversion.m413
-rw-r--r--m4/lt~obsolete.m44
-rw-r--r--m4/xc-am-iface.m44
-rw-r--r--m4/xc-cc-check.m44
-rw-r--r--m4/xc-lt-iface.m46
-rw-r--r--m4/xc-translit.m44
-rw-r--r--m4/xc-val-flgs.m44
-rw-r--r--m4/zz40-xc-ovr.m48
-rw-r--r--m4/zz50-xc-ovr.m44
-rw-r--r--m4/zz60-xc-ovr.m44
-rwxr-xr-xmaketgz14
-rw-r--r--packages/Android/Android.mk4
-rw-r--r--packages/DOS/README4
-rw-r--r--packages/DOS/common.dj10
-rw-r--r--packages/Makefile.am9
-rw-r--r--packages/Makefile.in26
-rw-r--r--packages/OS400/README.OS4008
-rw-r--r--packages/OS400/ccsidcurl.c4
-rw-r--r--packages/OS400/ccsidcurl.h4
-rw-r--r--packages/OS400/chkstrings.c4
-rw-r--r--packages/OS400/curl.inc.in16
-rw-r--r--packages/OS400/initscript.sh16
-rw-r--r--packages/OS400/make-include.sh4
-rw-r--r--packages/OS400/make-lib.sh4
-rw-r--r--packages/OS400/make-src.sh4
-rw-r--r--packages/OS400/make-tests.sh4
-rw-r--r--packages/OS400/makefile.sh6
-rw-r--r--packages/OS400/os400sys.c6
-rw-r--r--packages/OS400/os400sys.h4
-rw-r--r--packages/TPF/curl.mak80
-rw-r--r--packages/TPF/maketpf.env_curl45
-rw-r--r--packages/TPF/maketpf.env_curllib77
-rw-r--r--packages/vms/Makefile.am4
-rw-r--r--packages/vms/Makefile.in21
-rw-r--r--packages/vms/backup_gnv_curl_src.com4
-rw-r--r--packages/vms/build_curl-config_script.com3
-rw-r--r--packages/vms/build_gnv_curl.com3
-rw-r--r--packages/vms/build_gnv_curl_pcsi_desc.com3
-rw-r--r--packages/vms/build_gnv_curl_pcsi_text.com3
-rw-r--r--packages/vms/build_gnv_curl_release_notes.com4
-rw-r--r--packages/vms/build_libcurl_pc.com3
-rw-r--r--packages/vms/clean_gnv_curl.com6
-rw-r--r--packages/vms/compare_curl_source.com11
-rw-r--r--packages/vms/config_h.com123
-rw-r--r--packages/vms/curl_crtl_init.c4
-rw-r--r--packages/vms/curl_gnv_build_steps.txt4
-rw-r--r--packages/vms/curl_startup.com4
-rw-r--r--packages/vms/curlmsg.h4
-rw-r--r--packages/vms/curlmsg.msg4
-rw-r--r--packages/vms/curlmsg_vms.h4
-rw-r--r--packages/vms/generate_config_vms_h_curl.com6
-rw-r--r--packages/vms/generate_vax_transfer.com4
-rw-r--r--packages/vms/gnv_conftest.c_first4
-rw-r--r--packages/vms/gnv_curl_configure.sh4
-rw-r--r--packages/vms/gnv_libcurl_symbols.opt4
-rw-r--r--packages/vms/gnv_link_curl.com4
-rw-r--r--packages/vms/make_gnv_curl_install.sh4
-rw-r--r--packages/vms/make_pcsi_curl_kit_name.com4
-rw-r--r--packages/vms/pcsi_gnv_curl_file_list.txt4
-rw-r--r--packages/vms/pcsi_product_gnv_curl.com4
-rw-r--r--packages/vms/report_openssl_version.c4
-rw-r--r--packages/vms/setup_gnv_curl_build.com4
-rw-r--r--packages/vms/stage_curl_install.com3
-rw-r--r--packages/vms/vms_eco_level.h6
-rw-r--r--plan9/include/mkfile4
-rw-r--r--plan9/lib/mkfile4
-rwxr-xr-xplan9/lib/mkfile.inc4
-rw-r--r--plan9/mkfile4
-rw-r--r--plan9/mkfile.proto4
-rw-r--r--plan9/src/mkfile4
-rwxr-xr-xplan9/src/mkfile.inc4
-rw-r--r--projects/README159
-rw-r--r--projects/README.md160
-rw-r--r--projects/Windows/VC10/lib/libcurl.vcxproj79
-rw-r--r--projects/Windows/VC10/src/curl.vcxproj5
-rw-r--r--projects/Windows/VC11/lib/libcurl.vcxproj79
-rw-r--r--projects/Windows/VC11/src/curl.vcxproj5
-rw-r--r--projects/Windows/VC12/lib/libcurl.vcxproj79
-rw-r--r--projects/Windows/VC12/src/curl.vcxproj5
-rw-r--r--projects/Windows/VC14.10/curl-all.sln (renamed from projects/Windows/VC15/curl-all.sln)0
-rw-r--r--projects/Windows/VC14.10/lib/libcurl.sln (renamed from projects/Windows/VC15/lib/libcurl.sln)0
-rw-r--r--projects/Windows/VC14.10/lib/libcurl.vcxproj (renamed from projects/Windows/VC15/lib/libcurl.vcxproj)263
-rw-r--r--projects/Windows/VC14.10/lib/libcurl.vcxproj.filters (renamed from projects/Windows/VC15/lib/libcurl.vcxproj.filters)0
-rw-r--r--projects/Windows/VC14.10/src/curl.sln (renamed from projects/Windows/VC15/src/curl.sln)0
-rw-r--r--projects/Windows/VC14.10/src/curl.vcxproj (renamed from projects/Windows/VC15/src/curl.vcxproj)229
-rw-r--r--projects/Windows/VC14.10/src/curl.vcxproj.filters (renamed from projects/Windows/VC15/src/curl.vcxproj.filters)0
-rw-r--r--projects/Windows/VC14.30/curl-all.sln (renamed from projects/Windows/VC8/curl-all.sln)48
-rw-r--r--projects/Windows/VC14.30/lib/libcurl.sln (renamed from projects/Windows/VC8/lib/libcurl.sln)30
-rw-r--r--projects/Windows/VC14.30/lib/libcurl.vcxproj2675
-rw-r--r--projects/Windows/VC14.30/lib/libcurl.vcxproj.filters17
-rw-r--r--projects/Windows/VC14.30/src/curl.sln (renamed from projects/Windows/VC9/src/curl.sln)30
-rw-r--r--projects/Windows/VC14.30/src/curl.vcxproj2766
-rw-r--r--projects/Windows/VC14.30/src/curl.vcxproj.filters17
-rw-r--r--projects/Windows/VC14/lib/libcurl.vcxproj79
-rw-r--r--projects/Windows/VC14/src/curl.vcxproj5
-rw-r--r--projects/Windows/VC6/curl-all.dsw44
-rw-r--r--projects/Windows/VC6/lib/libcurl.dsp1925
-rw-r--r--projects/Windows/VC6/lib/libcurl.dsw29
-rw-r--r--projects/Windows/VC6/src/curl.dsp1094
-rw-r--r--projects/Windows/VC6/src/curl.dsw29
-rw-r--r--projects/Windows/VC7.1/curl-all.sln140
-rw-r--r--projects/Windows/VC7.1/lib/libcurl.sln87
-rw-r--r--projects/Windows/VC7.1/lib/libcurl.vcproj2206
-rw-r--r--projects/Windows/VC7.1/src/curl.sln87
-rw-r--r--projects/Windows/VC7.1/src/curl.vcproj1679
-rw-r--r--projects/Windows/VC7/curl-all.sln138
-rw-r--r--projects/Windows/VC7/lib/libcurl.sln87
-rw-r--r--projects/Windows/VC7/lib/libcurl.vcproj2060
-rw-r--r--projects/Windows/VC7/src/curl.sln87
-rw-r--r--projects/Windows/VC7/src/curl.vcproj1533
-rw-r--r--projects/Windows/VC8/lib/libcurl.vcproj4863
-rw-r--r--projects/Windows/VC8/src/curl.sln157
-rw-r--r--projects/Windows/VC8/src/curl.vcproj4499
-rw-r--r--projects/Windows/VC9/curl-all.sln258
-rw-r--r--projects/Windows/VC9/lib/libcurl.sln157
-rw-r--r--projects/Windows/VC9/lib/libcurl.vcproj4804
-rw-r--r--projects/Windows/VC9/src/curl.vcproj4356
-rw-r--r--projects/build-openssl.bat72
-rw-r--r--projects/build-wolfssl.bat53
-rw-r--r--projects/checksrc.bat42
-rw-r--r--projects/generate.bat149
-rw-r--r--projects/wolfssl_options.h138
-rw-r--r--scripts/Makefile.am8
-rw-r--r--scripts/Makefile.in66
-rwxr-xr-xscripts/checksrc.pl (renamed from lib/checksrc.pl)6
-rwxr-xr-xscripts/completion.pl23
-rwxr-xr-xscripts/coverage.sh6
-rwxr-xr-x[-rw-r--r--]scripts/firefox-db2pem.sh (renamed from lib/firefox-db2pem.sh)16
-rwxr-xr-xscripts/mk-ca-bundle.pl (renamed from lib/mk-ca-bundle.pl)292
-rwxr-xr-xscripts/updatemanpages.pl4
-rw-r--r--src/CMakeLists.txt12
-rw-r--r--src/Makefile.am26
-rw-r--r--src/Makefile.in251
-rw-r--r--src/Makefile.inc16
-rw-r--r--src/Makefile.m32430
-rw-r--r--src/Makefile.netware474
-rw-r--r--src/curl.rc4
-rw-r--r--src/macos/MACINSTALL.TXT1
-rw-r--r--src/macos/curl.mcp.xml.sit.hqx1
-rw-r--r--src/macos/src/curl_GUSIConfig.cpp1
-rw-r--r--src/macos/src/macos_main.cpp1
-rw-r--r--src/makefile.amiga6
-rw-r--r--src/makefile.dj4
-rwxr-xr-xsrc/mkhelp.pl8
-rw-r--r--src/slist_wc.c4
-rw-r--r--src/slist_wc.h4
-rw-r--r--src/tool_binmode.c4
-rw-r--r--src/tool_binmode.h4
-rw-r--r--src/tool_bname.c4
-rw-r--r--src/tool_bname.h4
-rw-r--r--src/tool_cb_dbg.c42
-rw-r--r--src/tool_cb_dbg.h4
-rw-r--r--src/tool_cb_hdr.c118
-rw-r--r--src/tool_cb_hdr.h4
-rw-r--r--src/tool_cb_prg.c4
-rw-r--r--src/tool_cb_prg.h4
-rw-r--r--src/tool_cb_rea.c4
-rw-r--r--src/tool_cb_rea.h4
-rw-r--r--src/tool_cb_see.c4
-rw-r--r--src/tool_cb_see.h4
-rw-r--r--src/tool_cb_wrt.c83
-rw-r--r--src/tool_cb_wrt.h4
-rw-r--r--src/tool_cfgable.c13
-rw-r--r--src/tool_cfgable.h36
-rw-r--r--src/tool_convert.c147
-rw-r--r--src/tool_dirhie.c4
-rw-r--r--src/tool_dirhie.h4
-rw-r--r--src/tool_doswin.c13
-rw-r--r--src/tool_doswin.h4
-rw-r--r--src/tool_easysrc.c6
-rw-r--r--src/tool_easysrc.h11
-rw-r--r--src/tool_filetime.c4
-rw-r--r--src/tool_filetime.h4
-rw-r--r--src/tool_findfile.c45
-rw-r--r--src/tool_findfile.h12
-rw-r--r--src/tool_formparse.c192
-rw-r--r--src/tool_formparse.h14
-rw-r--r--src/tool_getparam.c442
-rw-r--r--src/tool_getparam.h8
-rw-r--r--src/tool_getpass.c4
-rw-r--r--src/tool_getpass.h4
-rw-r--r--src/tool_help.c30
-rw-r--r--src/tool_help.h4
-rw-r--r--src/tool_helpers.c12
-rw-r--r--src/tool_helpers.h4
-rw-r--r--src/tool_hugehelp.c13815
-rw-r--r--src/tool_hugehelp.h9
-rw-r--r--src/tool_libinfo.c113
-rw-r--r--src/tool_libinfo.h20
-rw-r--r--src/tool_listhelp.c30
-rw-r--r--src/tool_main.c51
-rw-r--r--src/tool_main.h4
-rw-r--r--src/tool_msgs.c6
-rw-r--r--src/tool_msgs.h4
-rw-r--r--src/tool_operate.c433
-rw-r--r--src/tool_operate.h10
-rw-r--r--src/tool_operhlp.c217
-rw-r--r--src/tool_operhlp.h6
-rw-r--r--src/tool_panykey.c4
-rw-r--r--src/tool_panykey.h4
-rw-r--r--src/tool_paramhlp.c256
-rw-r--r--src/tool_paramhlp.h15
-rw-r--r--src/tool_parsecfg.c11
-rw-r--r--src/tool_parsecfg.h4
-rw-r--r--src/tool_progress.c21
-rw-r--r--src/tool_progress.h4
-rw-r--r--src/tool_sdecls.h7
-rw-r--r--src/tool_setopt.c267
-rw-r--r--src/tool_setopt.h18
-rw-r--r--src/tool_setup.h12
-rw-r--r--src/tool_sleep.c4
-rw-r--r--src/tool_sleep.h4
-rw-r--r--src/tool_strdup.c4
-rw-r--r--src/tool_strdup.h4
-rw-r--r--src/tool_urlglob.c7
-rw-r--r--src/tool_urlglob.h4
-rw-r--r--src/tool_util.c32
-rw-r--r--src/tool_util.h8
-rw-r--r--src/tool_version.h6
-rw-r--r--src/tool_vms.c4
-rw-r--r--src/tool_vms.h4
-rw-r--r--src/tool_writeout.c70
-rw-r--r--src/tool_writeout.h5
-rw-r--r--src/tool_writeout_json.c68
-rw-r--r--src/tool_writeout_json.h8
-rw-r--r--src/tool_xattr.c101
-rw-r--r--src/tool_xattr.h21
-rw-r--r--tests/CMakeLists.txt4
-rw-r--r--tests/FILEFORMAT.md147
-rw-r--r--tests/Makefile.am8
-rw-r--r--tests/Makefile.in25
-rw-r--r--tests/README.md49
-rw-r--r--tests/appveyor.pm6
-rw-r--r--tests/azure.pm6
-rwxr-xr-xtests/badsymbols.pl4
-rw-r--r--tests/certs/Makefile.am2
-rw-r--r--tests/certs/Makefile.in15
-rw-r--r--tests/certs/scripts/Makefile.am2
-rw-r--r--tests/certs/scripts/Makefile.in15
-rwxr-xr-xtests/certs/scripts/genroot.sh28
-rwxr-xr-xtests/certs/scripts/genserv.sh28
-rw-r--r--tests/data/CMakeLists.txt8
-rw-r--r--tests/data/DISABLED68
-rw-r--r--tests/data/Makefile.am22
-rw-r--r--tests/data/Makefile.in89
-rw-r--r--tests/data/Makefile.inc50
-rw-r--r--tests/data/test10012
-rw-r--r--tests/data/test10022
-rw-r--r--tests/data/test10043
-rw-r--r--tests/data/test100819
-rw-r--r--tests/data/test102127
-rw-r--r--tests/data/test10341
-rw-r--r--tests/data/test10351
-rw-r--r--tests/data/test10481
-rw-r--r--tests/data/test10533
-rw-r--r--tests/data/test10642
-rw-r--r--tests/data/test10652
-rw-r--r--tests/data/test10952
-rw-r--r--tests/data/test110521
-rw-r--r--tests/data/test11152
-rw-r--r--tests/data/test11163
-rw-r--r--tests/data/test11172
-rw-r--r--tests/data/test11333
-rw-r--r--tests/data/test1135165
-rw-r--r--tests/data/test11583
-rw-r--r--tests/data/test11852
-rw-r--r--tests/data/test11863
-rw-r--r--tests/data/test11873
-rw-r--r--tests/data/test11893
-rw-r--r--tests/data/test12104
-rw-r--r--tests/data/test12123
-rw-r--r--tests/data/test121519
-rw-r--r--tests/data/test12354
-rw-r--r--tests/data/test12382
-rw-r--r--tests/data/test12483
-rw-r--r--tests/data/test12493
-rw-r--r--tests/data/test12523
-rw-r--r--tests/data/test127475
-rw-r--r--tests/data/test127525
-rw-r--r--tests/data/test12933
-rw-r--r--tests/data/test13081
-rw-r--r--tests/data/test13153
-rw-r--r--tests/data/test13222
-rw-r--r--tests/data/test1338
-rw-r--r--tests/data/test140024
-rw-r--r--tests/data/test140133
-rw-r--r--tests/data/test140224
-rw-r--r--tests/data/test140326
-rw-r--r--tests/data/test140427
-rw-r--r--tests/data/test140524
-rw-r--r--tests/data/test140624
-rw-r--r--tests/data/test140724
-rw-r--r--tests/data/test142024
-rw-r--r--tests/data/test14592
-rw-r--r--tests/data/test14612
-rw-r--r--tests/data/test1465bin3028 -> 3240 bytes
-rw-r--r--tests/data/test146759
-rw-r--r--tests/data/test146863
-rw-r--r--tests/data/test15019
-rw-r--r--tests/data/test15015
-rw-r--r--tests/data/test15232
-rw-r--r--tests/data/test153816
-rw-r--r--tests/data/test15404
-rw-r--r--tests/data/test154376
-rw-r--r--tests/data/test15519
-rw-r--r--tests/data/test15533
-rw-r--r--tests/data/test156113
-rw-r--r--tests/data/test1583
-rw-r--r--tests/data/test15903
-rw-r--r--tests/data/test159732
-rw-r--r--tests/data/test161425
-rw-r--r--tests/data/test1633
-rw-r--r--tests/data/test163564
-rw-r--r--tests/data/test1663
-rw-r--r--tests/data/test167061
-rw-r--r--tests/data/test167172
-rw-r--r--tests/data/test168055
-rw-r--r--tests/data/test168161
-rw-r--r--tests/data/test168258
-rw-r--r--tests/data/test168361
-rw-r--r--tests/data/test16919
-rw-r--r--tests/data/test1701
-rw-r--r--tests/data/test170037
-rw-r--r--tests/data/test170125
-rw-r--r--tests/data/test17023
-rw-r--r--tests/data/test1733
-rw-r--r--tests/data/test1742
-rw-r--r--tests/data/test1752
-rw-r--r--tests/data/test1772
-rw-r--r--tests/data/test183
-rw-r--r--tests/data/test18003
-rw-r--r--tests/data/test1863
-rw-r--r--tests/data/test191951
-rw-r--r--tests/data/test19336
-rw-r--r--tests/data/test19346
-rw-r--r--tests/data/test19356
-rw-r--r--tests/data/test19366
-rw-r--r--tests/data/test19376
-rw-r--r--tests/data/test1938bin1281 -> 1308 bytes
-rw-r--r--tests/data/test194062
-rw-r--r--tests/data/test194176
-rw-r--r--tests/data/test194266
-rw-r--r--tests/data/test194362
-rw-r--r--tests/data/test194466
-rw-r--r--tests/data/test194576
-rw-r--r--tests/data/test194668
-rw-r--r--tests/data/test194771
-rw-r--r--tests/data/test194873
-rw-r--r--tests/data/test195575
-rw-r--r--tests/data/test202522
-rw-r--r--tests/data/test202822
-rw-r--r--tests/data/test202920
-rw-r--r--tests/data/test203020
-rw-r--r--tests/data/test203126
-rw-r--r--tests/data/test203218
-rw-r--r--tests/data/test20582
-rw-r--r--tests/data/test20592
-rw-r--r--tests/data/test20602
-rw-r--r--tests/data/test20733
-rw-r--r--tests/data/test208113
-rw-r--r--tests/data/test20919
-rw-r--r--tests/data/test213
-rw-r--r--tests/data/test21319
-rw-r--r--tests/data/test230062
-rw-r--r--tests/data/test230165
-rw-r--r--tests/data/test230270
-rw-r--r--tests/data/test230359
-rw-r--r--tests/data/test23919
-rw-r--r--tests/data/test24319
-rw-r--r--tests/data/test2452
-rw-r--r--tests/data/test2462
-rw-r--r--tests/data/test2581
-rw-r--r--tests/data/test2591
-rw-r--r--tests/data/test262bin1178 -> 1228 bytes
-rw-r--r--tests/data/test26519
-rw-r--r--tests/data/test2663
-rw-r--r--tests/data/test26719
-rw-r--r--tests/data/test2773
-rw-r--r--tests/data/test30212
-rw-r--r--tests/data/test30222
-rw-r--r--tests/data/test302645
-rw-r--r--tests/data/test302755
-rw-r--r--tests/data/test3041
-rw-r--r--tests/data/test312
-rw-r--r--tests/data/test3562
-rw-r--r--tests/data/test35817
-rw-r--r--tests/data/test35917
-rw-r--r--tests/data/test3682
-rw-r--r--tests/data/test37249
-rw-r--r--tests/data/test37378
-rw-r--r--tests/data/test37449
-rw-r--r--tests/data/test37533
-rw-r--r--tests/data/test37664
-rw-r--r--tests/data/test37839
-rw-r--r--tests/data/test37971
-rw-r--r--tests/data/test38063
-rw-r--r--tests/data/test38167
-rw-r--r--tests/data/test38356
-rw-r--r--tests/data/test38459
-rw-r--r--tests/data/test38556
-rw-r--r--tests/data/test38674
-rw-r--r--tests/data/test38753
-rw-r--r--tests/data/test388156
-rw-r--r--tests/data/test38957
-rw-r--r--tests/data/test393
-rw-r--r--tests/data/test39048
-rw-r--r--tests/data/test39172
-rw-r--r--tests/data/test39864
-rw-r--r--tests/data/test39932
-rw-r--r--tests/data/test413
-rw-r--r--tests/data/test41143
-rw-r--r--tests/data/test41264
-rw-r--r--tests/data/test41364
-rw-r--r--tests/data/test41484
-rw-r--r--tests/data/test41565
-rw-r--r--tests/data/test4352
-rw-r--r--tests/data/test43658
-rw-r--r--tests/data/test443
-rw-r--r--tests/data/test44073
-rw-r--r--tests/data/test44173
-rw-r--r--tests/data/test442210
-rw-r--r--tests/data/test44379
-rw-r--r--tests/data/test444190
-rw-r--r--tests/data/test44561
-rw-r--r--tests/data/test4931
-rw-r--r--tests/data/test49556
-rw-r--r--tests/data/test49636
-rw-r--r--tests/data/test5112
-rw-r--r--tests/data/test5163
-rw-r--r--tests/data/test54719
-rw-r--r--tests/data/test54819
-rw-r--r--tests/data/test5543
-rw-r--r--tests/data/test55519
-rw-r--r--tests/data/test582
-rw-r--r--tests/data/test5843
-rw-r--r--tests/data/test5873
-rw-r--r--tests/data/test5893
-rw-r--r--tests/data/test59019
-rw-r--r--tests/data/test6433
-rw-r--r--tests/data/test64485
-rw-r--r--tests/data/test6453
-rw-r--r--tests/data/test6463
-rw-r--r--tests/data/test6473
-rw-r--r--tests/data/test6483
-rw-r--r--tests/data/test6493
-rw-r--r--tests/data/test6503
-rw-r--r--tests/data/test6513
-rw-r--r--tests/data/test6523
-rw-r--r--tests/data/test6533
-rw-r--r--tests/data/test6543
-rw-r--r--tests/data/test6663
-rw-r--r--tests/data/test6673
-rw-r--r--tests/data/test6683
-rw-r--r--tests/data/test6693
-rw-r--r--tests/data/test6719
-rw-r--r--tests/data/test6703
-rw-r--r--tests/data/test6713
-rw-r--r--tests/data/test6723
-rw-r--r--tests/data/test6733
-rw-r--r--tests/data/test6752
-rw-r--r--tests/data/test67956
-rw-r--r--tests/data/test6819
-rw-r--r--tests/data/test68040
-rw-r--r--tests/data/test68151
-rw-r--r--tests/data/test68253
-rw-r--r--tests/data/test68353
-rw-r--r--tests/data/test68452
-rw-r--r--tests/data/test68552
-rw-r--r--tests/data/test6919
-rw-r--r--tests/data/test7003
-rw-r--r--tests/data/test7013
-rw-r--r--tests/data/test7023
-rw-r--r--tests/data/test7063
-rw-r--r--tests/data/test7073
-rw-r--r--tests/data/test7083
-rw-r--r--tests/data/test7093
-rw-r--r--tests/data/test713
-rw-r--r--tests/data/test7103
-rw-r--r--tests/data/test7113
-rw-r--r--tests/data/test7123
-rw-r--r--tests/data/test7133
-rw-r--r--tests/data/test7143
-rw-r--r--tests/data/test7153
-rw-r--r--tests/data/test7182
-rw-r--r--tests/data/test832
-rw-r--r--tests/data/test8119
-rw-r--r--tests/data/test82221
-rw-r--r--tests/data/test82721
-rw-r--r--tests/data/test8522
-rw-r--r--tests/data/test8552
-rw-r--r--tests/data/test86821
-rw-r--r--tests/data/test87321
-rw-r--r--tests/data/test8921
-rw-r--r--tests/data/test89894
-rw-r--r--tests/data/test93
-rw-r--r--tests/data/test9021
-rw-r--r--tests/data/test90621
-rw-r--r--tests/data/test9115
-rw-r--r--tests/data/test92121
-rw-r--r--tests/data/test9264
-rw-r--r--tests/data/test9574
-rw-r--r--tests/data/test9584
-rw-r--r--tests/data/test9614
-rw-r--r--tests/data/test9632
-rw-r--r--tests/data/test9729
-rw-r--r--tests/data/test97388
-rw-r--r--tests/data/test97491
-rw-r--r--tests/data/test97588
-rw-r--r--tests/data/test97692
-rw-r--r--tests/data/test97761
-rwxr-xr-xtests/dictserver.py4
-rw-r--r--tests/directories.pm4
-rwxr-xr-xtests/disable-scan.pl8
-rw-r--r--tests/error-codes.pl4
-rwxr-xr-xtests/extern-scan.pl25
-rw-r--r--tests/ftp.pm4
-rwxr-xr-xtests/ftpserver.pl4
-rw-r--r--tests/getpart.pm6
-rwxr-xr-xtests/http2-server.pl4
-rwxr-xr-xtests/httpserver.pl4
-rw-r--r--tests/libtest/CMakeLists.txt4
-rw-r--r--tests/libtest/Makefile.am16
-rw-r--r--tests/libtest/Makefile.in6089
-rw-r--r--tests/libtest/Makefile.inc67
-rw-r--r--tests/libtest/chkdecimalpoint.c4
-rw-r--r--tests/libtest/chkhostname.c4
-rw-r--r--tests/libtest/first.c21
-rw-r--r--tests/libtest/lib1156.c4
-rw-r--r--tests/libtest/lib1500.c4
-rw-r--r--tests/libtest/lib1501.c4
-rw-r--r--tests/libtest/lib1502.c4
-rw-r--r--tests/libtest/lib1506.c4
-rw-r--r--tests/libtest/lib1507.c13
-rw-r--r--tests/libtest/lib1508.c4
-rw-r--r--tests/libtest/lib1509.c4
-rw-r--r--tests/libtest/lib1510.c4
-rw-r--r--tests/libtest/lib1511.c4
-rw-r--r--tests/libtest/lib1512.c4
-rw-r--r--tests/libtest/lib1513.c4
-rw-r--r--tests/libtest/lib1514.c4
-rw-r--r--tests/libtest/lib1515.c4
-rw-r--r--tests/libtest/lib1517.c9
-rw-r--r--tests/libtest/lib1518.c42
-rw-r--r--tests/libtest/lib1520.c4
-rw-r--r--tests/libtest/lib1522.c4
-rw-r--r--tests/libtest/lib1523.c6
-rw-r--r--tests/libtest/lib1525.c6
-rw-r--r--tests/libtest/lib1526.c4
-rw-r--r--tests/libtest/lib1527.c4
-rw-r--r--tests/libtest/lib1528.c4
-rw-r--r--tests/libtest/lib1529.c4
-rw-r--r--tests/libtest/lib1530.c4
-rw-r--r--tests/libtest/lib1531.c13
-rw-r--r--tests/libtest/lib1532.c8
-rw-r--r--tests/libtest/lib1533.c6
-rw-r--r--tests/libtest/lib1534.c8
-rw-r--r--tests/libtest/lib1535.c8
-rw-r--r--tests/libtest/lib1536.c8
-rw-r--r--tests/libtest/lib1537.c4
-rw-r--r--tests/libtest/lib1538.c4
-rw-r--r--tests/libtest/lib1540.c4
-rw-r--r--tests/libtest/lib1542.c4
-rw-r--r--tests/libtest/lib1550.c4
-rw-r--r--tests/libtest/lib1551.c4
-rw-r--r--tests/libtest/lib1552.c4
-rw-r--r--tests/libtest/lib1553.c4
-rw-r--r--tests/libtest/lib1554.c4
-rw-r--r--tests/libtest/lib1555.c6
-rw-r--r--tests/libtest/lib1556.c4
-rw-r--r--tests/libtest/lib1557.c4
-rw-r--r--tests/libtest/lib1558.c6
-rw-r--r--tests/libtest/lib1559.c6
-rw-r--r--tests/libtest/lib1560.c167
-rw-r--r--tests/libtest/lib1564.c4
-rw-r--r--tests/libtest/lib1565.c4
-rw-r--r--tests/libtest/lib1567.c4
-rw-r--r--tests/libtest/lib1568.c5
-rw-r--r--tests/libtest/lib1569.c4
-rw-r--r--tests/libtest/lib1591.c4
-rw-r--r--tests/libtest/lib1592.c4
-rw-r--r--tests/libtest/lib1593.c4
-rw-r--r--tests/libtest/lib1594.c4
-rw-r--r--tests/libtest/lib1597.c115
-rw-r--r--tests/libtest/lib1905.c8
-rw-r--r--tests/libtest/lib1906.c6
-rw-r--r--tests/libtest/lib1907.c4
-rw-r--r--tests/libtest/lib1908.c4
-rw-r--r--tests/libtest/lib1910.c4
-rw-r--r--tests/libtest/lib1911.c9
-rw-r--r--tests/libtest/lib1912.c4
-rw-r--r--tests/libtest/lib1913.c4
-rw-r--r--tests/libtest/lib1915.c4
-rw-r--r--tests/libtest/lib1916.c4
-rw-r--r--tests/libtest/lib1918.c4
-rw-r--r--tests/libtest/lib1919.c53
-rw-r--r--tests/libtest/lib1933.c10
-rw-r--r--tests/libtest/lib1934.c10
-rw-r--r--tests/libtest/lib1935.c10
-rw-r--r--tests/libtest/lib1936.c10
-rw-r--r--tests/libtest/lib1937.c10
-rw-r--r--tests/libtest/lib1938.c10
-rw-r--r--tests/libtest/lib1939.c4
-rw-r--r--tests/libtest/lib1940.c119
-rw-r--r--tests/libtest/lib1945.c81
-rw-r--r--tests/libtest/lib1947.c89
-rw-r--r--tests/libtest/lib1948.c79
-rw-r--r--tests/libtest/lib1955.c76
-rw-r--r--tests/libtest/lib2301.c154
-rw-r--r--tests/libtest/lib2302.c157
-rw-r--r--tests/libtest/lib3010.c4
-rw-r--r--tests/libtest/lib3025.c4
-rw-r--r--tests/libtest/lib3026.c179
-rw-r--r--tests/libtest/lib3027.c56
-rw-r--r--tests/libtest/lib500.c4
-rw-r--r--tests/libtest/lib501.c4
-rw-r--r--tests/libtest/lib502.c4
-rw-r--r--tests/libtest/lib503.c4
-rw-r--r--tests/libtest/lib504.c4
-rw-r--r--tests/libtest/lib505.c4
-rw-r--r--tests/libtest/lib506.c4
-rw-r--r--tests/libtest/lib507.c4
-rw-r--r--tests/libtest/lib508.c9
-rw-r--r--tests/libtest/lib509.c4
-rw-r--r--tests/libtest/lib510.c9
-rw-r--r--tests/libtest/lib511.c4
-rw-r--r--tests/libtest/lib512.c4
-rw-r--r--tests/libtest/lib513.c4
-rw-r--r--tests/libtest/lib514.c4
-rw-r--r--tests/libtest/lib515.c4
-rw-r--r--tests/libtest/lib516.c4
-rw-r--r--tests/libtest/lib517.c6
-rw-r--r--tests/libtest/lib518.c8
-rw-r--r--tests/libtest/lib519.c4
-rw-r--r--tests/libtest/lib520.c4
-rw-r--r--tests/libtest/lib521.c4
-rw-r--r--tests/libtest/lib523.c4
-rw-r--r--tests/libtest/lib524.c4
-rw-r--r--tests/libtest/lib525.c4
-rw-r--r--tests/libtest/lib526.c4
-rw-r--r--tests/libtest/lib530.c17
-rw-r--r--tests/libtest/lib533.c4
-rw-r--r--tests/libtest/lib537.c9
-rw-r--r--tests/libtest/lib539.c4
-rw-r--r--tests/libtest/lib540.c2
-rw-r--r--tests/libtest/lib541.c4
-rw-r--r--tests/libtest/lib542.c4
-rw-r--r--tests/libtest/lib543.c4
-rw-r--r--tests/libtest/lib544.c15
-rw-r--r--tests/libtest/lib547.c13
-rw-r--r--tests/libtest/lib549.c4
-rw-r--r--tests/libtest/lib552.c9
-rw-r--r--tests/libtest/lib553.c8
-rw-r--r--tests/libtest/lib554.c24
-rw-r--r--tests/libtest/lib555.c15
-rw-r--r--tests/libtest/lib556.c15
-rw-r--r--tests/libtest/lib557.c159
-rw-r--r--tests/libtest/lib558.c4
-rw-r--r--tests/libtest/lib559.c4
-rw-r--r--tests/libtest/lib560.c4
-rw-r--r--tests/libtest/lib562.c4
-rw-r--r--tests/libtest/lib564.c4
-rw-r--r--tests/libtest/lib566.c4
-rw-r--r--tests/libtest/lib567.c4
-rw-r--r--tests/libtest/lib568.c4
-rw-r--r--tests/libtest/lib569.c4
-rw-r--r--tests/libtest/lib570.c4
-rw-r--r--tests/libtest/lib571.c4
-rw-r--r--tests/libtest/lib572.c4
-rw-r--r--tests/libtest/lib573.c4
-rw-r--r--tests/libtest/lib574.c4
-rw-r--r--tests/libtest/lib575.c4
-rw-r--r--tests/libtest/lib576.c4
-rw-r--r--tests/libtest/lib578.c9
-rw-r--r--tests/libtest/lib579.c9
-rw-r--r--tests/libtest/lib582.c2
-rw-r--r--tests/libtest/lib583.c4
-rw-r--r--tests/libtest/lib586.c4
-rw-r--r--tests/libtest/lib589.c4
-rw-r--r--tests/libtest/lib590.c4
-rw-r--r--tests/libtest/lib591.c4
-rw-r--r--tests/libtest/lib597.c4
-rw-r--r--tests/libtest/lib598.c4
-rw-r--r--tests/libtest/lib599.c4
-rw-r--r--tests/libtest/lib643.c31
-rw-r--r--tests/libtest/lib650.c11
-rw-r--r--tests/libtest/lib651.c4
-rw-r--r--tests/libtest/lib652.c4
-rw-r--r--tests/libtest/lib653.c4
-rw-r--r--tests/libtest/lib654.c9
-rw-r--r--tests/libtest/lib655.c4
-rw-r--r--tests/libtest/lib658.c8
-rw-r--r--tests/libtest/lib659.c6
-rw-r--r--tests/libtest/lib661.c4
-rw-r--r--tests/libtest/lib666.c4
-rw-r--r--tests/libtest/lib667.c9
-rw-r--r--tests/libtest/lib668.c12
-rw-r--r--tests/libtest/lib670.c11
-rw-r--r--tests/libtest/lib674.c8
-rw-r--r--tests/libtest/lib676.c4
-rw-r--r--tests/libtest/lib677.c4
-rw-r--r--tests/libtest/lib678.c4
-rw-r--r--tests/libtest/libauthretry.c4
-rw-r--r--tests/libtest/libntlmconnect.c4
-rw-r--r--tests/libtest/libprereq.c5
-rwxr-xr-xtests/libtest/mk-lib1521.pl7
-rwxr-xr-xtests/libtest/notexists.pl4
-rw-r--r--tests/libtest/sethostname.c4
-rw-r--r--tests/libtest/sethostname.h4
-rw-r--r--tests/libtest/stub_gssapi.c4
-rw-r--r--tests/libtest/stub_gssapi.h4
-rw-r--r--tests/libtest/test.h16
-rwxr-xr-xtests/libtest/test1013.pl4
-rwxr-xr-xtests/libtest/test1022.pl4
-rwxr-xr-xtests/libtest/test307.pl4
-rwxr-xr-xtests/libtest/test610.pl4
-rwxr-xr-xtests/libtest/test613.pl4
-rw-r--r--tests/libtest/testtrace.c4
-rw-r--r--tests/libtest/testtrace.h4
-rw-r--r--tests/libtest/testutil.c4
-rw-r--r--tests/libtest/testutil.h4
-rwxr-xr-xtests/manpage-scan.pl8
-rw-r--r--tests/manpage-syntax.pl48
-rw-r--r--tests/markdown-uppercase.pl100
-rwxr-xr-xtests/mem-include-scan.pl4
-rwxr-xr-xtests/memanalyze.pl13
-rwxr-xr-xtests/negtelnetserver.py4
-rwxr-xr-xtests/nroff-scan.pl4
-rw-r--r--tests/options-scan.pl4
-rw-r--r--tests/pathhelp.pm4
-rwxr-xr-xtests/rtspserver.pl4
-rw-r--r--tests/runtests.110
-rwxr-xr-xtests/runtests.pl169
-rwxr-xr-xtests/secureserver.pl4
-rw-r--r--tests/server/CMakeLists.txt5
-rw-r--r--tests/server/Makefile.am19
-rw-r--r--tests/server/Makefile.in354
-rw-r--r--tests/server/Makefile.inc7
-rwxr-xr-xtests/server/base64.pl4
-rw-r--r--tests/server/disabled.c11
-rw-r--r--tests/server/fake_ntlm.c4
-rw-r--r--tests/server/getpart.c62
-rw-r--r--tests/server/getpart.h4
-rw-r--r--tests/server/mqttd.c4
-rw-r--r--tests/server/resolve.c4
-rw-r--r--tests/server/rtspd.c4
-rw-r--r--tests/server/server_setup.h4
-rw-r--r--tests/server/server_sockaddr.h4
-rw-r--r--tests/server/sockfilt.c226
-rw-r--r--tests/server/socksd.c138
-rw-r--r--tests/server/sws.c429
-rw-r--r--tests/server/testpart.c4
-rw-r--r--tests/server/tftp.h4
-rw-r--r--tests/server/tftpd.c6
-rw-r--r--tests/server/util.c165
-rw-r--r--tests/server/util.h22
-rw-r--r--tests/serverhelp.pm4
-rwxr-xr-xtests/smbserver.py4
-rw-r--r--tests/sshhelp.pm4
-rw-r--r--tests/sshserver.pl4
-rwxr-xr-xtests/symbol-scan.pl98
-rw-r--r--tests/testcurl.18
-rwxr-xr-xtests/testcurl.pl35
-rwxr-xr-xtests/tftpserver.pl4
-rw-r--r--tests/unit/CMakeLists.txt4
-rw-r--r--tests/unit/Makefile.am20
-rw-r--r--tests/unit/Makefile.in162
-rw-r--r--tests/unit/Makefile.inc11
-rw-r--r--tests/unit/README.md47
-rw-r--r--tests/unit/curlcheck.h4
-rw-r--r--tests/unit/unit1300.c4
-rw-r--r--tests/unit/unit1301.c4
-rw-r--r--tests/unit/unit1302.c42
-rw-r--r--tests/unit/unit1303.c14
-rw-r--r--tests/unit/unit1304.c39
-rw-r--r--tests/unit/unit1305.c8
-rw-r--r--tests/unit/unit1307.c4
-rw-r--r--tests/unit/unit1308.c4
-rw-r--r--tests/unit/unit1309.c4
-rw-r--r--tests/unit/unit1323.c4
-rw-r--r--tests/unit/unit1330.c4
-rw-r--r--tests/unit/unit1394.c4
-rw-r--r--tests/unit/unit1395.c9
-rw-r--r--tests/unit/unit1396.c6
-rw-r--r--tests/unit/unit1397.c71
-rw-r--r--tests/unit/unit1398.c8
-rw-r--r--tests/unit/unit1399.c4
-rw-r--r--tests/unit/unit1600.c12
-rw-r--r--tests/unit/unit1601.c4
-rw-r--r--tests/unit/unit1602.c4
-rw-r--r--tests/unit/unit1603.c4
-rw-r--r--tests/unit/unit1604.c4
-rw-r--r--tests/unit/unit1605.c6
-rw-r--r--tests/unit/unit1606.c6
-rw-r--r--tests/unit/unit1607.c6
-rw-r--r--tests/unit/unit1608.c4
-rw-r--r--tests/unit/unit1609.c6
-rw-r--r--tests/unit/unit1610.c10
-rw-r--r--tests/unit/unit1611.c4
-rw-r--r--tests/unit/unit1612.c4
-rw-r--r--tests/unit/unit1614.c133
-rw-r--r--tests/unit/unit1620.c9
-rw-r--r--tests/unit/unit1621.c21
-rw-r--r--tests/unit/unit1650.c4
-rw-r--r--tests/unit/unit1651.c10
-rw-r--r--tests/unit/unit1652.c8
-rw-r--r--tests/unit/unit1653.c65
-rw-r--r--tests/unit/unit1654.c4
-rw-r--r--tests/unit/unit1655.c14
-rw-r--r--tests/unit/unit1660.c6
-rw-r--r--tests/unit/unit1661.c4
-rwxr-xr-xtests/util.py4
-rw-r--r--tests/valgrind.pm4
-rwxr-xr-xtests/version-scan.pl4
-rw-r--r--winbuild/Makefile.vc38
-rw-r--r--winbuild/MakefileBuild.vc90
-rw-r--r--winbuild/README.md94
-rwxr-xr-xwinbuild/gen_resp_file.bat4
2160 files changed, 72103 insertions, 81977 deletions
diff --git a/CHANGES b/CHANGES
index 692f78f2b..d48ababb4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,7935 +6,8860 @@
Changelog
-Version 7.81.0 (5 Jan 2022)
+Version 7.86.0 (26 Oct 2022)
+
+Daniel Stenberg (26 Oct 2022)
+- RELEASE: synced
+
+ The 7.86.0 release
+
+- THANKS: added from the 7.86.0 release
+
+Viktor Szakats (25 Oct 2022)
+- noproxy: include netinet/in.h for htonl()
+
+ Solve the Amiga build warning by including `netinet/in.h`.
+
+ `krb5.c` and `socketpair.c` are using `htonl()` too. This header is
+ already included in those sources.
+
+ Regression from 1e9a538e05c0107c54ef81d9de7cd0b27cd13309
+
+ Reviewed-by: Daniel Stenberg
+ Closes #9787
+
+Marc Hoersken (24 Oct 2022)
+- CI: fix AppVeyor status failing for starting jobs
+
+Daniel Stenberg (24 Oct 2022)
+- test445: verifies the protocols-over-http-proxy flaw and fix
+
+- http_proxy: restore the protocol pointer on error
+
+ Reported-by: Trail of Bits
+
+ Closes #9790
+
+- multi: remove duplicate include of connect.h
+
+ Reported-by: Martin Strunz
+ Fixes #9794
+ Closes #9795
+
+Daniel Gustafsson (24 Oct 2022)
+- idn: fix typo in test description
+
+ s/enabked/enabled/i
+
+Daniel Stenberg (24 Oct 2022)
+- url: use IDN decoded names for HSTS checks
+
+ Reported-by: Hiroki Kurosawa
+
+ Closes #9791
+
+- unit1614: fix disabled-proxy build
+
+ Follow-up to 1e9a538e05c01
+
+ Closes #9792
+
+Daniel Gustafsson (24 Oct 2022)
+- cookies: optimize control character check
+
+ When checking for invalid octets the strcspn() call will return the
+ position of the first found invalid char or the first NULL byte.
+ This means that we can check the indicated position in the search-
+ string saving a strlen() call.
+
+ Closes: #9736
+ Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
+
+Daniel Stenberg (24 Oct 2022)
+- netrc: replace fgets with Curl_get_line
+
+ Make the parser only accept complete lines and avoid problems with
+ overly long lines.
+
+ Reported-by: Hiroki Kurosawa
+
+ Closes #9789
+
+- RELEASE-NOTES: add "Planned upcoming removals include"
+
+ URL: https://curl.se/mail/archive-2022-10/0001.html
+
+ Suggested-by: Dan Fandrich
+
+Viktor Szakats (23 Oct 2022)
+- ci: bump to gcc-11 for macos
+
+ Ref: https://github.blog/changelog/2022-10-03-github-actions-jobs-running-on-macos-latest-are-now-running-on-macos-12/
+ Ref: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
+
+ Reviewed-by: Max Dymond
+ Closes #9785
+
+- Makefile.m32: reintroduce CROSSPREFIX and -W -Wall [ci skip]
+
+ - Reintroduce `CROSSPREFIX`:
+
+ If set, we add it to the `CC` and `AR` values, and to the _default_
+ value of `RC`, which is `windres`. This allows to control each of
+ these individidually, while also allowing to simplify configuration
+ via `CROSSPREFIX`.
+
+ This variable worked differently earlier. Hopefully this new solution
+ hits a better compromise in usefulness/complexity/flexibility.
+
+ Follow-up to: aa970c4c08775afcd0c2853be89b0a6f02582d50
+
+ - Enable warnings again:
+
+ This time with an option to override it via `CFLAGS`. Warnings are
+ also enabled by default in CMake, `makefile.dj` and `makefile.amiga`
+ builds (not in autotools though).
+
+ Follow-up to 10fbd8b4e3f83b967fd9ad9a41ab484c0e7e7ca3
+
+ Closes #9784
+
+- noproxy: silence unused variable warnings with no ipv6
+
+ Follow-up to 36474f1050c7f4117e3c8de6cc9217cfebfc717d
+
+ Reviewed-by: Daniel Stenberg
+ Closes #9782
+
+Daniel Stenberg (22 Oct 2022)
+- test644: verify --xattr (with redirect)
+
+- tool_xattr: save the original URL, not the final redirected one
+
+ Adjusted test 1621 accordingly.
+
+ Reported-by: Viktor Szakats
+ Fixes #9766
+ Closes #9768
+
+- docs: make sure libcurl opts examples pass in long arguments
+
+ Reported-by: Sergey
+ Fixes #9779
+ Closes #9780
+
+Marc Hoersken (21 Oct 2022)
+- CI: fix AppVeyor job links only working for most recent build
+
+ Ref: https://github.com/curl/curl/pull/9768#issuecomment-1286675916
+ Reported-by: Daniel Stenberg
+
+ Follow up to #9769
+
+Viktor Szakats (21 Oct 2022)
+- noproxy: fix builds without AF_INET6
+
+ Regression from 1e9a538e05c0107c54ef81d9de7cd0b27cd13309
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9778
+
+Daniel Stenberg (21 Oct 2022)
+- noproxy: support proxies specified using cidr notation
+
+ For both IPv4 and IPv6 addresses. Now also checks IPv6 addresses "correctly"
+ and not with string comparisons.
+
+ Split out the noproxy checks and functionality into noproxy.c
+
+ Added unit test 1614 to verify checking functions.
+
+ Reported-by: Mathieu Carbonneaux
+
+ Fixes #9773
+ Fixes #5745
+ Closes #9775
+
+- urlapi: remove two variable assigns
+
+ To please scan-build:
+
+ urlapi.c:1163:9: warning: Value stored to 'qlen' is never read
+ qlen = Curl_dyn_len(&enc);
+ ^ ~~~~~~~~~~~~~~~~~~
+ urlapi.c:1164:9: warning: Value stored to 'query' is never read
+ query = u->query = Curl_dyn_ptr(&enc);
+ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Follow-up to 7d6cf06f571d57
+
+ Closes #9777
+
+- [Jeremy Maitin-Shepard brought this change]
+
+ cmake: improve usability of CMake build as a sub-project
+
+ - Renames `uninstall` -> `curl_uninstall`
+ - Ensures all export rules are guarded by CURL_ENABLE_EXPORT_TARGET
+
+ Closes #9638
+
+- [Don J Olmstead brought this change]
+
+ easy_lock: check for HAVE_STDATOMIC_H as well
+
+ The check for `HAVE_STDATOMIC_H` looks to see if the `stdatomic.h`
+ header is present.
+
+ Closes #9755
-Daniel Stenberg (5 Jan 2022)
- RELEASE-NOTES: synced
-
- curl 7.81.0 release
-- THANKS: add names from 7.81.0 release
+- [Brad Harder brought this change]
-- curl_multi_init.3: fix the copyright year range
+ CURLMOPT_PIPELINING.3: dedup manpage xref
-- test719-721: require "proxy" feature present to run
-
- Bug: https://github.com/curl/curl/pull/8223#issuecomment-1005188696
- Reported-by: Marc Hörsken
-
- Closes #8226
+ Closes #9776
+
+Marc Hoersken (20 Oct 2022)
+- CI: report AppVeyor build status for each job
+
+ Also give each job on AppVeyor CI a human-readable name.
+
+ This aims to make job and therefore build failures more visible.
+
+ Reviewed-by: Marcel Raad
+ Closes #9769
+
+Viktor Szakats (20 Oct 2022)
+- amiga: set SIZEOF_CURL_OFF_T=8 by default [ci skip]
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9771
+
+- connect: fix builds without AF_INET6
+
+ Regression from 2b309560c1e5d6ed5c0e542e6fdffa968b0521c9
+
+ Reviewed-by: Daniel Stenberg
+ Reviewed-by: Jay Satiro
+
+ Closes #9770
+
+Daniel Stenberg (20 Oct 2022)
+- test1105: adjust <data> to work with a hyper build
+
+ Closes #9767
+
+- urlapi: fix parsing URL without slash with CURLU_URLENCODE
+
+ When CURLU_URLENCODE is set, the parser would mistreat the path
+ component if the URL was specified without a slash like in
+ http://local.test:80?-123
+
+ Extended test 1560 to reproduce and verify the fix.
+
+ Reported-by: Trail of Bits
+
+ Closes #9763
+
+Marc Hoersken (19 Oct 2022)
+- tests: avoid CreateThread if _beginthreadex is available
+
+ CreateThread is not threadsafe if mixed with CRT calls.
+ _beginthreadex on the other hand can be mixed with CRT.
+
+ Reviewed-by: Marcel Raad
+ Closes #9705
+
+Jay Satiro (19 Oct 2022)
+- [Joel Depooter brought this change]
+
+ schannel: Don't reset recv/send function pointers on renegotiation
+
+ These function pointers will have been set when the initial TLS
+ handshake was completed. If they are unchanged, there is no need to set
+ them again. If they have been changed, as is the case with HTTP/2, we
+ don't want to override that change. That would result in the
+ http22_recv/send functions being completely bypassed.
+
+ Prior to this change a connection that uses Schannel with HTTP/2 would
+ fail on renegotiation with error "Received HTTP/0.9 when not allowed".
+
+ Fixes https://github.com/curl/curl/issues/9451
+ Closes https://github.com/curl/curl/pull/9756
+
+Viktor Szakats (18 Oct 2022)
+- hostip: guard PF_INET6 use
+
+ Some platforms (e.g. Amiga OS) do not have `PF_INET6`. Adjust the code
+ for these.
+
+ ```
+ hostip.c: In function 'fetch_addr':
+ hostip.c:308:12: error: 'PF_INET6' undeclared (first use in this function)
+ pf = PF_INET6;
+ ^~~~~~~~
+ ```
+
+ Regression from 1902e8fc511078fb5e26fc2b907b4cce77e1240d
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9760
+
+- amiga: do not hardcode openssl/zlib into the os config [ci skip]
+
+ Enable them in `lib/makefile.amiga` and `src/makefile.amiga` instead.
+
+ This allows builds without openssl and/or zlib. E.g. with the
+ <https://github.com/bebbo/amiga-gcc> cross-compiler.
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9762
+
+- amigaos: add missing curl header [ci skip]
+
+ Without it, `CURLcode` and `CURLE_*` are undefined. `lib/hostip.h` and
+ conditional local code need them.
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9761
+
+Daniel Stenberg (18 Oct 2022)
+- cmdline/docs: add a required 'multi' keyword for each option
+
+ The keyword specifies how option works when specified multiple times:
+
+ - single: the last provided value replaces the earlier ones
+ - append: it supports being provided multiple times
+ - boolean: on/off values
+ - mutex: flag-like option that disable anoter flag
+
+ The 'gen.pl' script then outputs the proper and unified language for
+ each option's multi-use behavior in the generated man page.
+
+ The multi: header is requires in each .d file and will cause build error
+ if missing or set to an unknown value.
+
+ Closes #9759
+
+- CURLOPT_AUTOREFERER.3: highlight the privacy leak risk
+
+ Closes #9757
+
+- mprintf: reject two kinds of precision for the same argument
+
+ An input like "%.*1$.9999d" would first use the precision taken as an
+ argument *and* then the precision specified in the string, which is
+ confusing and wrong. pass1 will now instead return error on this double
+ use.
+
+ Adjusted unit test 1398 to verify
+
+ Reported-by: Peter Goodman
+
+ Closes #9754
+
+- ftp: remove redundant if
+
+ Reported-by: Trail of Bits
+
+ Closes #9753
+
+- tool_operate: more transfer cleanup after parallel transfer fail
+
+ In some circumstances when doing parallel transfers, the
+ single_transfer_cleanup() would not be called and then 'inglob' could
+ leak.
+
+ Test 496 verifies
+
+ Reported-by: Trail of Bits
+ Closes #9749
+
+- mqtt: spell out CONNECT in comments
+
+ Instead of calling it 'CONN' in several comments, use the full and
+ correct protocol packet name.
+
+ Suggested by Trail of Bits
+
+ Closes #9751
+
+- CURLOPT_POSTFIELDS.3: refer to CURLOPT_MIMEPOST
+
+ Not the deprecated CURLOPT_HTTPPOST option.
+
+ Also added two see-alsos.
+
+ Reported-by: Trail of Bits
+ Closes #9752
-- test719: require ipv6 support to run
-
- Follow-up to effd2bd7ba2a5fd244
- Reported-by: Marc Hörsken
- Bug: https://github.com/curl/curl/pull/8217#issuecomment-1004681145
-
- Closes #8223
-
-- test719-721: verify SOCKS details
-
- Using the new verify/socks details
-
-- runtests: add verify/socks check
-
- If used, this data is compared with the data in log/socksd-request.log
- which the socksd server logs.
-
- Added to FILEFORMAT.md
-
-- server/socksd: log atyp + address in a separate log
-
- To allow the test suite to verify that the right data arrived
-
-- socks5: use appropriate ATYP for numerical IP address host names
-
- When not resolving the address locallly (known as socks5h).
-
- Add test 719 and 720 to verify.
-
- Reported-by: Peter Piekarski
- Fixes #8216
- Closes #8217
-
-Jay Satiro (3 Jan 2022)
-- curl_multi_init.3: fix EXAMPLE formatting
-
-Daniel Stenberg (3 Jan 2022)
- RELEASE-NOTES: synced
-- libtest: avoid "assignment within conditional expression"
-
- In lib530, lib540 and lib582
-
- Closes #8218
-
-- ftp: disable warning 4706 in MSVC
-
- Follow-up to 21248e052d
-
- Disabling "assignment within conditional expression" for MSVC needs to
- be done before the function starts, for it to take effect.
-
- Closes #8218
-
-- tool_operate: warn if too many output arguments were found
-
- More output instructions than URLs is likely a user error.
-
- Add test case 371 to verify
-
- Closes #8210
-
-- .github/workflows/mbedtls.yml: bump to mbedtls 3.1.0
-
- Closes #8215
-
-- zuul: remove the mbedtls jobs
-
- Now running as github workflows
-
- Closes #8215
-
-- github/workflows: add mbedtls and mbedtls-clang
-
- Closes #8215
-
-- [Valentin Richter brought this change]
-
- mbedtls: fix private member designations for v3.1.0
-
- "As a last resort, you can access the field foo of a structure bar by
- writing bar.MBEDTLS_PRIVATE(foo). Note that you do so at your own risk,
- since such code is likely to break in a future minor version of Mbed
- TLS." -
- https://github.com/ARMmbed/mbedtls/blob/f2d1199edc5834df4297f247f213e614f7782d1d/docs/3.0-migration-guide.md
-
- That future minor version is v3.1.0. I set the >= to == for the version
- checks because v3.1.0 is a release, and I am not sure when the private
- designation was reverted after v3.0.0.
-
- Closes #8214
-
-- [Valentin Richter brought this change]
-
- cmake: prevent dev warning due to mismatched arg
-
- -- curl version=[7.81.0-DEV]
- CMake Warning (dev) at /usr/share/cmake-3.22.1/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
- The package name passed to `find_package_handle_standard_args` (MBEDTLS)
- does not match the name of the calling package (MbedTLS). This can lead to
- problems in calling code that expects `find_package` result variables
- (e.g., `_FOUND`) to follow a certain pattern.
- Call Stack (most recent call first):
- deps/curl/CMake/FindMbedTLS.cmake:31 (find_package_handle_standard_args)
- deps/curl/CMakeLists.txt:473 (find_package)
- This warning is for project developers. Use -Wno-dev to suppress it.
-
- Closes #8207
-
-- urlapi: if possible, shorten given numerical IPv6 addresses
-
- Extended test 1560 to verify
-
- Closes #8206
+Jay Satiro (17 Oct 2022)
+- ngtcp2: Fix build errors due to changes in ngtcp2 library
-- [Michał Antoniak brought this change]
+ ngtcp2/ngtcp2@b0d86f60 changed:
- url: reduce ssl backend count for CURL_DISABLE_PROXY builds
-
- Closes #8212
-
-- KNOWN_BUGS: "Trying local ports fails on Windows"
-
- Reported-by: gclinch on github
- Closes #8112
-
-- misc: update copyright year range
-
-- zuul: remove the wolfssl even more
-
- Follow-up to 1914465cf180d32b3d
-
-- examples/multi-single.c: remove WAITMS()
-
- As it isn't used.
-
- Reported-by: Melroy van den Berg
- Fixes #8200
- Closes #8201
-
-- gtls: add gnutls include for the session type
-
- Follow-up to 8fbd6feddfa5 to make it build more universally
-
-- m4/curl-compilers: tell clang -Wno-pointer-bool-conversion
-
- To hush compiler warnings we don't care for: error: address of function
- 'X' will always evaluate to 'true'
-
- Fixes #8197
- Closes #8198
-
-- http_proxy: don't close the socket (too early)
-
- ... and double-check in the OpenSSL shutdown that the socket is actually
- still there before it is used.
-
- Fixes #8193
- Closes #8195
-
- Reported-by: Leszek Kubik
-
-- ngtcp2: verify the server certificate for the gnutls case
-
- Closes #8178
-
-- ngtcp2: verify the server cert on connect (quictls)
-
- Make ngtcp2+quictls correctly acknowledge `CURLOPT_SSL_VERIFYPEER` and
- `CURLOPT_SSL_VERIFYHOST`.
-
- The name check now uses a function from lib/vtls/openssl.c which will
- need attention for when TLS is not done by OpenSSL or is disabled while
- QUIC is enabled.
-
- Possibly the servercert() function in openssl.c should be adjusted to be
- able to use for both regular TLS and QUIC.
-
- Ref: #8173
- Closes #8178
-
-- zuul: remove the wolfssl build
-
-- github workflow: add wolfssl
-
- Closes #8196
-
-- [Nicolas Sterchele brought this change]
-
- zuul: fix quiche build pointing to wrong Cargo
-
- Fixes #8184
- Closes #8189
-
-- checksrc: detect more kinds of NULL comparisons we avoid
-
- Co-authored-by: Jay Satiro
- Closes #8180
+ - ngtcp2_conn_get_max_udp_payload_size =>
+ ngtcp2_conn_get_max_tx_udp_payload_size
+
+ - ngtcp2_conn_get_path_max_udp_payload_size =>
+ ngtcp2_conn_get_path_max_tx_udp_payload_size
+
+ ngtcp2/ngtcp2@ec59b873 changed:
+
+ - 'early_data_rejected' member added to ng_callbacks.
+
+ Assisted-by: Daniel Stenberg
+ Reported-by: jurisuk@users.noreply.github.com
+
+ Fixes https://github.com/curl/curl/issues/9747
+ Closes https://github.com/curl/curl/pull/9748
+
+Daniel Stenberg (16 Oct 2022)
+- curl_path: return error if given a NULL homedir
+
+ Closes #9740
+
+- libssh: if sftp_init fails, don't get the sftp error code
+
+ This flow extracted the wrong code (sftp code instead of ssh code), and
+ the code is sometimes (erroneously) returned as zero anyway, so skip
+ getting it and set a generic error.
+
+ Reported-by: David McLaughlin
+ Fixes #9737
+ Closes #9740
+
+- mqtt: return error for too long topic
+
+ Closes #9744
+
+- [Rickard Hallerbäck brought this change]
+
+ tool_paramhlp: make the max argument a 'double'
+
+ To fix compiler warnings "Implicit conversion from 'long' to 'double'
+ may lose precision"
+
+ Closes #9700
+
+Marc Hoersken (15 Oct 2022)
+- [Philip Heiduck brought this change]
+
+ cirrus-ci: add more macOS builds with m1 based on x86_64 builds
+
+ Also refactor macOS builds to use task matrix.
+
+ Assisted-by: Marc Hörsken
+ Closes #9565
+
+Viktor Szakats (14 Oct 2022)
+- cmake: set HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID on Windows
+
+ `lib/config-win32.h` enables this configuration option unconditionally.
+ Make it apply to CMake builds as well.
+
+ While here, delete a broken check for
+ `HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID` from `CMakeLists.txt`. This came with
+ the initial commit [1], but did not include the actual verification code
+ inside `CMake/CurlTests.c`, so it always failed. A later commit [2]
+ added a second test, for non-Windows platforms.
+
+ Enabling this flag causes test 1056 to fail with CMake builds, as they
+ do with autotools builds. Let's apply the same solution and ignore the
+ results here as well.
+
+ [1] 4c5307b45655ba75ab066564afdc0c111a8b9291
+ [2] aec7c5a87c8482b6ddffa352d7d220698652262e
+
+ Reviewed-by: Daniel Stenberg
+ Assisted-by: Marcel Raad
+
+ Closes #9726
+
+- cmake: set HAVE_GETADDRINFO_THREADSAFE on Windows
+
+ autotools enables this configuration option unconditionally for Windows
+ [^1]. Do the same in CMake.
+
+ The above will make this work for all reasonably recent environments.
+ The logic present in `lib/config-win32.h` [^2] has the following
+ exceptions which we did not cover in this CMake update:
+
+ - Builds targeting Windows 2000 and earlier
+ - MS Visual C++ 5.0 (1997) and earlier
+
+ Also make sure to disable this feature when `HAVE_GETADDRINFO` isn't
+ set, to avoid a broken build. We might want to handle that in the C
+ sources in a future commit.
+
+ [^1]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/m4/curl-functions.m4#L2067-L2070
+
+ [^2]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/lib/config-win32.h#L511-L528
+
+ Closes #9727
+
+- cmake: sync HAVE_SIGNAL detection with autotools
+
+ `HAVE_SIGNAL` means the availability of the `signal()` function in
+ autotools, while in CMake it meant the availability of that function
+ _and_ the symbol `SIGALRM`.
+
+ The latter is not available on Windows, but the function is, which means
+ on Windows, autotools did define `HAVE_SIGNAL`, but CMake did not,
+ introducing a slight difference into the binaries.
+
+ This patch syncs CMake behaviour with autotools to look for the function
+ only.
+
+ The logic came with the initial commit adding CMake support to curl, so
+ the commit history doesn't reveal the reason behind it. In any case,
+ it's best to check the existence of `SIGALRM` directly in the source
+ before use. For now, curl builds fine with `HAVE_SIGNAL` enabled and
+ `SIGALRM` missing.
+
+ Follow-up to 68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6
+
+ Closes #9725
+
+- cmake: delete duplicate HAVE_GETADDRINFO test
+
+ A custom `HAVE_GETADDRINFO` check came with the initial CMake commit
+ [1]. A later commit [2] added a standard check for it as well. The
+ standard check run before the custom one, so CMake ignored the latter.
+
+ The custom check was also non-portable, so this patch deletes it in
+ favor of the standard check.
+
+ [1] 4c5307b45655ba75ab066564afdc0c111a8b9291
+ [2] aec7c5a87c8482b6ddffa352d7d220698652262e
+
+ Closes #9731
+
+Daniel Stenberg (14 Oct 2022)
+- tool_formparse: unroll the NULL_CHECK and CONST_FREE macros
+
+ To make the code read more obvious
+
+ Assisted-by: Jay Satiro
+
+ Closes #9710
+
+- [Christopher Sauer brought this change]
+
+ docs/INSTALL: update Android Instructions for newer NDKs
+
+ Closes #9732
+
+- markdown-uppercase: ignore quoted sections
+
+ Sections within the markdown ~~~ or ``` are now ignored.
+
+ Closes #9733
- RELEASE-NOTES: synced
-- mesalink: remove the BACKEND define kludge
-
- Closes #8183
+- test8: update as cookies no longer can have "embedded" TABs in content
+
+- test1105: extend to verify TAB in name/content discarding cookies
+
+- cookie: reject cookie names or content with TAB characters
+
+ TABs in name and content seem allowed by RFC 6265: "the algorithm strips
+ leading and trailing whitespace from the cookie name and value (but
+ maintains internal whitespace)"
+
+ Cookies with TABs in the names are rejected by Firefox and Chrome.
+
+ TABs in content are stripped out by Firefox, while Chrome discards the
+ whole cookie.
+
+ TABs in cookies also cause issues in saved netscape cookie files.
+
+ Reported-by: Trail of Bits
+
+ URL: https://curl.se/mail/lib-2022-10/0032.html
+ URL: https://github.com/httpwg/http-extensions/issues/2262
+
+ Closes #9659
+
+- curl/add_parallel_transfers: better error handling
+
+ 1 - consider the transfer handled at once when in the function, to avoid
+ the same list entry to get added more than once in rare error
+ situations
+
+ 2 - set the ERRORBUFFER for the handle first after it has been added
+ successfully
+
+ Reported-by: Trail of Bits
+
+ Closes #9729
+
+- netrc: remove the two 'changed' arguments
+
+ As no user of these functions used the returned content.
+
+- test495: verify URL encoded user name + netrc-optional
+
+ Reproduced issue #9709
+
+- netrc: use the URL-decoded user
+
+ When the user name is provided in the URL it is URL encoded there, but
+ when used for authentication the encoded version should be used.
+
+ Regression introduced after 7.83.0
+
+ Reported-by: Jonas Haag
+ Fixes #9709
+ Closes #9715
+
+- [Shaun Mirani brought this change]
+
+ url: allow non-HTTPS HSTS-matching for debug builds
+
+ Closes #9728
+
+- test1275: remove the check of stderr
+
+ To avoid the mysterious test failures on Windows, instead rely on the
+ error code returned on failure.
+
+ Fixes #9716
+ Closes #9723
+
+Viktor Szakats (13 Oct 2022)
+- lib: set more flags in config-win32.h
+
+ The goal is to add any flag that affect the created binary, to get in
+ sync with the ones built with CMake and autotools.
+
+ I took these flags from curl-for-win [0], where they've been tested with
+ mingw-w64 and proven to work well.
+
+ This patch brings them to curl as follows:
+
+ - Enable unconditionally those force-enabled via
+ `CMake/WindowsCache.cmake`:
+
+ - `HAVE_SETJMP_H`
+ - `HAVE_STRING_H`
+ - `HAVE_SIGNAL` (CMake equivalent is `HAVE_SIGNAL_FUNC`)
+
+ - Expand existing guards with mingw-w64:
+
+ - `HAVE_STDBOOL_H`
+ - `HAVE_BOOL_T`
+
+ - Enable Win32 API functions for Windows Vista and later:
+
+ - `HAVE_INET_NTOP`
+ - `HAVE_INET_PTON`
+
+ - Set sizes, if not already set:
+
+ - `SIZEOF_OFF_T = 8`
+ - `_FILE_OFFSET_BITS = 64` when `USE_WIN32_LARGE_FILES` is set,
+ and using mingw-w64.
+
+ - Add the remaining for mingw-w64 only. Feel free to expand as desired:
+
+ - `HAVE_LIBGEN_H`
+ - `HAVE_FTRUNCATE`
+ - `HAVE_BASENAME`
+ - `HAVE_STRTOK_R`
+
+ Future TODO:
+
+ - `HAVE_SIGNAL` has a different meaning in CMake. It's enabled when both
+ the `signal()` function and the `SIGALRM` macro are found. In
+ autotools and this header, it means the function only. For the
+ function alone, CMake uses `HAVE_SIGNAL_FUNC`.
+
+ [0] https://github.com/curl/curl-for-win/blob/c9b9a5f273c94c73d2b565ee892c4dff0ca97a8c/curl-m32.sh#L53-L58
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9712
+
+Daniel Stenberg (13 Oct 2022)
+- tests: add tests/markdown-uppercase.pl to dist tarball
+
+ Follow-up to aafb06c5928183d
+
+ Closes #9722
+
+- tool_paramhelp: asserts verify maximum sizes for string loading
+
+ The two defines MAX_FILE2MEMORY and MAX_FILE2STRING define the largest
+ strings accepted when loading files into memory, but as the size is
+ later used as input to functions that take the size as 'int' as
+ argument, the sizes must not be larger than INT_MAX.
+
+ These two new assert()s make the code error out if someone would bump
+ the sizes without this consideration.
+
+ Reported-by Trail of Bits
+
+ Closes #9719
+
+- http: try parsing Retry-After: as a number first
+
+ Since the date parser allows YYYYMMDD as a date format (due to it being
+ a bit too generic for parsing this particular header), a large integer
+ number could wrongly match that pattern and cause the parser to generate
+ a wrong value.
+
+ No date format accepted for this header starts with a decimal number, so
+ by reversing the check and trying a number first we can deduct that if
+ that works, it was not a date.
+
+ Reported-by Trail of Bits
+
+ Closes #9718
+
+- [Patrick Monnerat brought this change]
+
+ doc: fix deprecation versions inconsistencies
+
+ Ref: https://curl.se/mail/lib-2022-10/0026.html
+
+ Closes #9711
+
+- http_aws_sigv4: fix strlen() check
+
+ The check was off-by-one leading to buffer overflow.
+
+ Follow-up to 29c4aa00a16872
+
+ Detected by OSS-Fuzz
+
+ Closes #9714
+
+- curl/main_checkfds: check the fcntl return code better
+
+ fcntl() can (in theory) return a non-zero number for success, so a
+ better test for error is checking for -1 explicitly.
+
+ Follow-up to 41e1b30ea1b77e9ff
+
+ Mentioned-by: Dominik Klemba
+
+ Closes #9708
-- schannel: remove the BACKEND define kludge
-
- Closes #8182
+Viktor Szakats (12 Oct 2022)
+- tidy-up: delete unused HAVE_STRUCT_POLLFD
-- gtls: check return code for gnutls_alpn_set_protocols
-
- Closes #8181
+ It was only defined in `lib/config-win32.h`, when building for Vista.
-- [Stefan Huber brought this change]
+ It was only used in `select.h`, in a condition that also included a
+ check for `POLLIN` which is a superior choice for this detection and
+ which was already used by cmake and autotools builds.
- README: label the link to the support document
-
- Closes #8185
+ Delete both instances of this macro.
-- docs/HTTP3: describe how to setup a h3 reverse-proxy for testing
-
- Assisted-by: Matt Holt
-
- Closes #8177
+ Closes #9707
-- libcurl-multi.3: "SOCKS proxy handshakes" are not blocking
-
- Since 4a4b63daaa0
+Daniel Stenberg (12 Oct 2022)
+- test1275: verify upercase after period in markdown
-- [Vladimir Panteleev brought this change]
+ Script based on the #9474 pull-request logic, but implemented in perl.
- tests: Add test for CURLOPT_HTTP200ALIASES
+ Updated docs/URL-SYNTAX.md accordingly.
-- [Vladimir Panteleev brought this change]
+ Suggested-by: Dan Fandrich
- http: Fix CURLOPT_HTTP200ALIASES
-
- The httpcode < 100 check was also triggered when none of the fields were
- parsed, thus making the if(!nc) block unreachable.
-
- Closes #8171
+ Closes #9697
+- [12932 brought this change]
+
+ misc: nitpick grammar in comments/docs
+
+ because the 'u' in URL is actually a consonant *sound* it is only
+ correct to write "a URL"
+
+ sorry this is a bit nitpicky :P
+
+ https://english.stackexchange.com/questions/152/when-should-i-use-a-vs-an
+ https://www.techtarget.com/whatis/feature/Which-is-correct-a-URL-or-an-URL
+
+ Closes #9699
+
+Viktor Szakats (11 Oct 2022)
+- Makefile.m32: drop CROSSPREFIX and our CC/AR defaults [ci skip]
+
+ This patch aimed to fix a regression [0], where `CC` initialization
+ moved beyond its first use. But, on closer inspection it turned out that
+ the `CC` initialization does not work as expected due to GNU Make
+ filling it with `cc` by default. So unless implicit values were
+ explicitly disabled via a GNU Make option, the default value of
+ `$CROSSPREFIX` + `gcc` was never used. At the same time the implicit
+ value `cc` maps to `gcc` in (most/all?) MinGW envs.
+
+ `AR` has the same issue, with a default value of `ar`.
+
+ We could reintroduce a separate variable to fix this without ill
+ effects, but for simplicity and flexibility, it seems better to drop
+ support for `CROSSPREFIX`, along with our own `CC`/`AR` init logic, and
+ require the caller to initialize `CC`, `AR` and `RC` to the full
+ (prefixed if necessary) names of these tools, as desired.
+
+ We keep `RC ?= windres` because `RC` is empty by default.
+
+ Also fix grammar in a comment.
+
+ [0] 10fbd8b4e3f83b967fd9ad9a41ab484c0e7e7ca3
+
+ Closes #9698
+
+- smb: replace CURL_WIN32 with WIN32
+
+ PR #9255 aimed to fix a Cygwin/MSYS issue (#8220). It used the
+ `CURL_WIN32` macro, but that one is not defined here, while compiling
+ curl itself. This patch changes this to `WIN32`, assuming this was the
+ original intent.
+
+ Regression from 1c52e8a3795ccdf8ec9c308f4f8f19cf10ea1f1a
+
+ Reviewed-by: Marcel Raad
+
+ Closes #9701
+
+Daniel Stenberg (11 Oct 2022)
+- [Matthias Gatto brought this change]
+
+ aws_sigv4: fix header computation
+
+ Handle canonical headers and signed headers creation as explained here:
+ https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
+
+ The algo tells that signed and canonical must contain at last host and
+ x-amz-date.
+
+ So we check whatever thoses are present in the curl http headers list.
+ If they are, we use the one enter by curl user, otherwise we generate
+ them. then we to lower, and remove space from each http headers plus
+ host and x-amz-date, then sort them all by alphabetical order.
+
+ This patch also fix a bug with host header, which was ignoring the port.
+
+ Closes #7966
+
+Jay Satiro (11 Oct 2022)
+- [Aftab Alam brought this change]
+
+ README.md: link the curl logo to the website
+
+ - Link the curl:// image to https://curl.se/
+
+ Closes https://github.com/curl/curl/pull/9675
+
+- [Dustin Howett brought this change]
+
+ schannel: when importing PFX, disable key persistence
+
+ By default, the PFXImportCertStore API persists the key in the user's
+ key store (as though the certificate was being imported for permanent,
+ ongoing use.)
+
+ The documentation specifies that keys that are not to be persisted
+ should be imported with the flag PKCS12_NO_PERSIST_KEY.
+ NOTE: this flag is only supported on versions of Windows newer than XP
+ and Server 2003.
+
+ --
+
+ This is take 2 of the original fix. It extends the lifetime of the
+ client certificate store to that of the credential handle. The original
+ fix which landed in 70d010d and was later reverted in aec8d30 failed to
+ work properly because it did not do that.
+
+ Minor changes were made to the schannel credential context to support
+ closing the client certificate store handle at the end of an SSL session.
+
+ --
+
+ Reported-by: ShadowZzj@users.noreply.github.com
+
+ Fixes https://github.com/curl/curl/issues/9300
+ Supersedes https://github.com/curl/curl/pull/9363
+ Closes https://github.com/curl/curl/pull/9460
+
+Viktor Szakats (11 Oct 2022)
+- Makefile.m32: support more options [ci skip]
+
+ - Add support for these options:
+ `-wolfssl`, `-wolfssh`, `-mbedtls`, `-libssh`, `-psl`
+
+ Caveats:
+ - `-wolfssh` requires `-wolfssl`.
+ - `-wolfssl` cannot be used with OpenSSL backends in parallel.
+ - `-libssh` has build issues with BoringSSL and LibreSSL, and also
+ what looks like a world-writable-config vulnerability on Windows.
+ Consider it experimental.
+ - `-psl` requires `-idn2` and extra libs passed via
+ `LIBS=-liconv -lunistring`.
+
+ - Detect BoringSSL/wolfSSL and set ngtcp2 crypto lib accordingly.
+ - Generalize MultiSSL detection.
+ - Use else-if syntax. Requires GNU Make 3.81 (2006-04-01).
+ - Document more customization options.
+
+ This brings over some configuration logic from `curl-for-win`.
+
+ Closes #9680
+
+- cmake: enable more detection on Windows
+
+ Enable `HAVE_UNISTD_H`, `HAVE_STRTOK_R` and `HAVE_STRCASECMP` detection
+ on Windows, instead of having predefined values.
+
+ With these features detected correctly, CMake Windows builds get closer
+ to the autotools and `config-win32.h` ones.
+
+ This also fixes detecting `HAVE_FTRUNCATE` correctly, which required
+ `unistd.h`.
+
+ Fixing `ftruncate()` in turn causes a build warning/error with legacy
+ MinGW/MSYS1 due to an offset type size mismatch. This env misses to
+ detect `HAVE_FILE_OFFSET_BITS`, which may be a reason. This patch
+ force-disables `HAVE_FTRUNCATE` for this platform.
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9687
+
+- autotools: allow unix sockets on Windows
+
+ Fixes: https://github.com/curl/curl-for-win/blob/73a070d96fd906fdee929e2f1f00a9149fb39239/curl-autotools.sh#L44-L47
+
+ On Windows this feature is present, but not the header used in the
+ detection logic. It also requires an elaborate enabler logic
+ (as seen in `lib/curl_setup.h`). Let's always allow it and let the
+ lib code deal with the details.
+
+ Closes #9688
+
+- cmake: add missing inet_ntop check
+
+ This adds the missing half of the check, next to the other half
+ already present in `lib/curl_config.h.cmake`.
+
+ Force disable `HAVE_INET_NTOP` for old MSVC where it caused compiler
+ warnings.
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9689
+
+Daniel Stenberg (11 Oct 2022)
- RELEASE-NOTES: synced
-- language: "email"
-
- Missed three occurrences.
-
- Follow-up to 7a92f86
-
-- nss:set_cipher don't clobber the cipher list
-
- The string is set by the user and needs to remain intact for proper
- connection reuse etc.
-
- Reported-by: Eric Musser
- Fixes #8160
- Closes #8161
-
-- misc: s/e-mail/email
-
- Consistency is king. Following the lead in everything curl.
-
- Closes #8159
-
-- [Tobias Nießen brought this change]
-
- docs: fix typo in OpenSSL 3 build instructions
-
- Closes #8162
-
-- linkcheck.yml: add CI job that checks markdown links
-
- Closes #8158
-
-- RELEASE-PROCEDURE.md: remove ICAL link and old release dates
-
-- BINDINGS.md: "markdown-link-check-disable"
-
- It feels a bit unfortunate to litter an ugly tag for this functionality,
- but if we get link scans of all markdown files, this might be worth the
- price.
-
-- docs: fix dead links, remove ECH.md
-
-Jay Satiro (16 Dec 2021)
-- openssl: define HAVE_OPENSSL_VERSION for OpenSSL 1.1.0+
-
- Prior to this change OpenSSL_version was only detected in configure
- builds. For other builds the old version parsing code was used which
- would result in incorrect versioning for OpenSSL 3:
-
+- [bsergean on github brought this change]
+
+ asyn-ares: set hint flags when calling ares_getaddrinfo
+
+ The hint flag is ARES_AI_NUMERICSERV, and it will save a call to
+ getservbyname or getservbyname_r to set it.
+
+ Closes #9694
+
+- header.d: add category smtp and imap
+
+ They were previously (erroneously) added manually to tool_listhelp.c
+ which would make them get removed again when the file is updated next
+ time, unless added correctly here in header.d
+
+ Follow-up to 2437fac01
+
+ Closes #9690
+
+- curl/get_url_file_name: use libcurl URL parser
+
+ To avoid URL tricks, use the URL parser for this.
+
+ This update changes curl's behavior slightly in that it will ignore the
+ possible query part from the URL and only use the file name from the
+ actual path from the URL. I consider it a bugfix.
+
+ "curl -O localhost/name?giveme-giveme" will now save the output in the
+ local file named 'name'
+
+ Updated test 1210 to verify
+
+ Assisted-by: Jay Satiro
+
+ Closes #9684
+
+- [Martin Ågren brought this change]
+
+ docs: fix grammar around needing pass phrase
+
+ "You never needed a pass phrase" reads like it's about to be followed by
+ something like "until version so-and-so", but that is not what is
+ intended. Change to "You never need a pass phrase". There are two
+ instances of this text, so make sure to update both.
+
+- [Xiang Xiao brought this change]
+
+ cmake: add the check of HAVE_SOCKETPAIR
+
+ which is used by Curl_socketpair
+
+ Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
+
+ Closes #9686
+
+- curl/add_file_name_to_url: use the libcurl URL parser
+
+ instead of the custom error-prone parser, to extract and update the path
+ of the given URL
+
+ Closes #9683
+
+- single_transfer: use the libcurl URL parser when appending query parts
+
+ Instead of doing "manual" error-prone parsing in another place.
+
+ Used when --data contents is added to the URL query when -G is provided.
+
+ Closes #9681
+
+- ws: fix buffer pointer use in the callback loop
+
+ Closes #9678
+
+- [Petr Štetiar brought this change]
+
+ curl-wolfssl.m4: error out if wolfSSL is not usable
+
+ When I explicitly declare, that I would like to have curl built with
+ wolfSSL support using `--with-wolfssl` configure option, then I would
+ expect, that either I endup with curl having that support, for example
+ in form of https support or it wouldn't be available at all.
+
+ Downstream projects like for example OpenWrt build curl wolfSSL variant
+ with `--with-wolfssl` already, but in certain corner cases it does fail:
+
+ configure:25299: checking for wolfSSL_Init in -lwolfssl
+ configure:25321: x86_64-openwrt-linux-musl-gcc -o conftest [snip]
+ In file included from target-x86_64_musl/usr/include/wolfssl/wolfcrypt/dsa.h:33,
+ from target-x86_64_musl/usr/include/wolfssl/wolfcrypt/asn_public.h:35,
+ from target-x86_64_musl/usr/include/wolfssl/ssl.h:35,
+ from conftest.c:47:
+ target-x86_64_musl/usr/include/wolfssl/wolfcrypt/integer.h:37:14: fatal error: wolfssl/wolfcrypt/sp_int.h: No such file or directory
+ #include <wolfssl/wolfcrypt/sp_int.h>
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ compilation terminated.
+
+ and in the end thus produces curl without https support:
+
+ curl: (1) Protocol "https" not supported or disabled in libcurl
+
+ So fix it, by making the working wolfSSL mandatory and error out in
+ configure step when that's not the case:
+
+ checking for wolfSSL_Init in -lwolfssl... no
+ configure: error: --with-wolfssl but wolfSSL was not found or doesn't work
+
+ References: https://github.com/openwrt/packages/issues/19005
+ References: https://github.com/openwrt/packages/issues/19547
+ Signed-off-by: Petr Štetiar <ynezz@true.cz>
+
+ Closes #9682
+
+- tool_getparam: pass in the snprintf("%.*s") string length as 'int'
+
+ Reported by Coverity CID 1515928
+
+ Closes #9679
+
+- [Paul Seligman brought this change]
+
+ ws: minor fixes for web sockets without the CONNECT_ONLY flag
+
+ - Fixed an issue where is_in_callback was getting cleared when using web
+ sockets with debug logging enabled
+ - Ensure the handle is is_in_callback when calling out to fwrite_func
+ - Change the write vs. send_data decision to whether or not the handle
+ is in CONNECT_ONLY mode.
+ - Account for buflen not including the header length in curl_ws_send
+
+ Closes #9665
+
+Marc Hoersken (8 Oct 2022)
+- CI/cirrus: merge existing macOS jobs into a job matrix
+
+ Ref: #9627
+ Reviewed-by: Philip H.
+
+ Closes #9672
+
+Daniel Stenberg (8 Oct 2022)
+- strcase: add and use Curl_timestrcmp
+
+ This is a strcmp() alternative function for comparing "secrets",
+ designed to take the same time no matter the content to not leak
+ match/non-match info to observers based on how fast it is.
+
+ The time this function takes is only a function of the shortest input
+ string.
+
+ Reported-by: Trail of Bits
+
+ Closes #9658
+
+- tool_getparam: split out data_urlencode() into its own function
+
+ Closes #9673
+
+- connect: fix Curl_updateconninfo for TRNSPRT_UNIX
+
+ Reported-by: Vasiliy Ulyanov
+ Fixes #9664
+ Closes #9670
+
+- ws: fix Coverity complaints
+
+ Coverity pointed out several flaws where variables remained
+ uninitialized after forks.
+
+ Follow-up to e3f335148adc6742728f
+
+ Closes #9666
+
+Marc Hoersken (7 Oct 2022)
+- CI/GHA: merge msh3 and openssl3 builds into linux workflow
+
+ Continue work on merging all Linux workflows into one file.
+
+ Follow up to #9501
+ Closes #9646
+
+Daniel Stenberg (7 Oct 2022)
+- curl_ws_send.3: call the argument 'fragsize'
+
+ Since WebSocket works with "fragments" not "frames"
+
+ Closes #9668
+
+- easy: avoid Intel error #2312: pointer cast involving 64-bit pointed-to type
+
+ Follow-up to e3f335148adc6742728ff8
+
+ Closes #9669
+
+- tool_main: exit at once if out of file descriptors
+
+ If the main_checkfds function cannot create new file descriptors in an
+ attempt to detect of stdin, stdout or stderr are closed.
+
+ Also changed the check to use fcntl() to check if the descriptors are
+ open, which avoids superfluously calling pipe() if they all already are.
+
+ Follow-up to facfa19cdd4d0094
+
+ Reported-by: Trail of Bits
+
+ Closes #9663
+
+- websockets: remodeled API to support 63 bit frame sizes
+
+ curl_ws_recv() now receives data to fill up the provided buffer, but can
+ return a partial fragment. The function now also get a pointer to a
+ curl_ws_frame struct with metadata that also mentions the offset and
+ total size of the fragment (of which you might be receiving a smaller
+ piece). This way, large incoming fragments will be "streamed" to the
+ application. When the curl_ws_frame struct field 'bytesleft' is 0, the
+ final fragment piece has been delivered.
+
+ curl_ws_recv() was also adjusted to work with a buffer size smaller than
+ the fragment size. (Possibly needless to say as the fragment size can
+ now be 63 bit large).
+
+ curl_ws_send() now supports sending a piece of a fragment, in a
+ streaming manner, in addition to sending the entire fragment in a single
+ call if it is small enough. To send a huge fragment, curl_ws_send() can
+ be used to send it in many small calls by first telling libcurl about
+ the total expected fragment size, and then send the payload in N number
+ of separate invokes and libcurl will stream those over the wire.
+
+ The struct curl_ws_meta() returns is now called 'curl_ws_frame' and it
+ has been extended with two new fields: *offset* and *bytesleft*. To help
+ describe the passed on data chunk when a fragment is delivered in many
+ smaller pieces.
+
+ The documentation has been updated accordingly.
+
+ Closes #9636
+
+- [Patrick Monnerat brought this change]
+
+ docs/examples: avoid deprecated options in examples where possible
+
+ Example programs targeting a deprecated feature/option are commented with
+ a warning about it.
+ Other examples are adapted to not use deprecated options.
+
+ Closes #9661
+
+Viktor Szakats (6 Oct 2022)
+- cmake: fix enabling websocket support
+
+ Follow-up from 664249d095275ec532f55dd1752d80c8c1093a77
+
+ Closes #9660
+
+- tidy-up: delete parallel/unused feature flags
+
+ Detecting headers and lib separately makes sense when headers come in
+ variations or with extra ones, but this wasn't the case here. These were
+ duplicate/parallel macros that we had to keep in sync with each other
+ for a working build. This patch leaves a single macro for each of these
+ dependencies:
+
+ - Rely on `HAVE_LIBZ`, delete parallel `HAVE_ZLIB_H`.
+
+ Also delete CMake logic making sure these two were in sync, along with
+ a toggle to turn off that logic, called `CURL_SPECIAL_LIBZ`.
+
+ Also delete stray `HAVE_ZLIB` defines.
+
+ There is also a `USE_ZLIB` variant in `lib/config-dos.h`. This patch
+ retains it for compatibility and deprecates it.
+
+ - Rely on `USE_LIBSSH2`, delete parallel `HAVE_LIBSSH2_H`.
+
+ Also delete `LIBSSH2_WIN32`, `LIBSSH2_LIBRARY` from
+ `winbuild/MakefileBuild.vc`, these have a role when building libssh2
+ itself. And `CURL_USE_LIBSSH`, which had no use at all.
+
+ Also delete stray `HAVE_LIBSSH2` defines.
+
+ - Rely on `USE_LIBSSH`, delete parallel `HAVE_LIBSSH_LIBSSH_H`.
+
+ Also delete `LIBSSH_WIN32`, `LIBSSH_LIBRARY` and `HAVE_LIBSSH` from
+ `winbuild/MakefileBuild.vc`, these were the result of copy-pasting the
+ libssh2 line, and were not having any use.
+
+ - Delete unused `HAVE_LIBPSL_H` and `HAVE_LIBPSL`.
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9652
+
+Daniel Stenberg (6 Oct 2022)
+- netrc: compare user name case sensitively
+
+ User name comparisions in netrc need to match the case.
+
+ Closes #9657
+
+- CURLOPT_COOKIEFILE: insist on "" for enable-without-file
+
+ The former way that also suggested using a non-existing file to just
+ enable the cookie engine could lead to developers maybe a bit carelessly
+ guessing a file name that will not exist, and then in a future due to
+ circumstances, such a file could be made to exist and then accidentally
+ libcurl would read cookies not actually meant to.
+
+ Reported-by: Trail of bits
+
+ Closes #9654
+
+- tests/Makefile: remove run time stats from ci-test
+
+ The ci-test is the normal makefile target invoked in CI jobs. This has
+ been using the -r option to runtests.pl since a long time, but I find
+ that it mostly just adds many lines to the test output report without
+ anyone caring much about those stats.
+
+ Remove it.
+
+ Closes #9656
+
+- [Patrick Monnerat brought this change]
+
+ tool: reorganize function c_escape around a dynbuf
+
+ This is a bit shorter and a lot safer.
+
+ Substrings of unescaped characters are added by a single call to reduce
+ overhead.
+
+ Extend test 1465 to handle more kind of escapes.
+
+ Closes #9653
+
+Jay Satiro (5 Oct 2022)
+- CURLOPT_HTTPPOST.3: bolden the deprecation notice
+
+ Ref: https://github.com/curl/curl/pull/9621
+
+ Closes https://github.com/curl/curl/pull/9637
+
+Daniel Stenberg (5 Oct 2022)
+- [John Bampton brought this change]
+
+ misc: fix spelling in docs and comments
+
+ also: remove outdated sentence
+
+ Closes #9644
+
+- [Patrick Monnerat brought this change]
+
+ tool: avoid generating ambiguous escaped characters in --libcurl
+
+ C string hexadecimal-escaped characters may have more than 2 digits.
+ This results in a wrong C compiler interpretation of a 2-digit escaped
+ character when followed by an hex digit character.
+
+ The solution retained here is to represent such characters as 3-digit
+ octal escapes.
+
+ Adjust and extend test 1465 for this case.
+
+ Closes #9643
+
+- configure: the ngtcp2 option should default to 'no'
+
+ While still experimental.
+
+ Bug: https://curl.se/mail/lib-2022-10/0007.html
+ Reported-by: Daniel Hallberg
+
+ Closes #9650
+
+- CURLOPT_MIMEPOST.3: add an (inline) example
+
+ Reported-by: Jay Satiro
+ Bug: https://github.com/curl/curl/pull/9637#issuecomment-1268070723
+
+ Closes #9649
+
+Viktor Szakats (5 Oct 2022)
+- Makefile.m32: exclude libs & libpaths for shared mode exes [ci skip]
+
+ Exclude linker flags specifying depedency libs and libpaths, when
+ building against `libcurl.dll`. In such case these options are not
+ necessary (but may cause errors if not/wrongly configured.)
+
+ Also move and reword a comment on `CPPFLAGS` to not apply to
+ `UNICODE` options. These are necessary for all build targets.
+
+ Closes #9651
+
+Jay Satiro (5 Oct 2022)
+- runtests: fix uninitialized value on ignored tests
+
+ - Don't show TESTFAIL message (ie tests failed which aren't ignored) if
+ only ignored tests failed.
+
Before:
-
- curl 7.80.0 (i386-pc-win32) libcurl/7.80.0 OpenSSL/3.0.0a zlib/1.2.11
- WinIDN libssh2/1.9.0
-
+ IGNORED: failed tests: 571 612 1056
+ TESTDONE: 1214 tests out of 1217 reported OK: 99%
+ Use of uninitialized value $failed in concatenation (.) or string at
+ ./runtests.pl line 6290.
+ TESTFAIL: These test cases failed:
+
After:
-
- curl 7.80.0 (i386-pc-win32) libcurl/7.80.0 OpenSSL/3.0.1 zlib/1.2.11
- WinIDN libssh2/1.9.0
-
- Reported-by: lllaffer@users.noreply.github.com
-
- Fixes https://github.com/curl/curl/issues/8154
- Closes https://github.com/curl/curl/pull/8155
-
-Daniel Stenberg (16 Dec 2021)
-- [James Fuller brought this change]
-
- docs: add known bugs list to HTTP3.md
-
- Closes #8156
-
-Dan Fandrich (15 Dec 2021)
-- BINDINGS: add one from Everything curl and update a link
-
-- libcurl-security.3: mention address and URL mitigations
-
- The new CURLOPT_PREREQFUNCTION callback is another way to sanitize
- addresses.
- Using the curl_url API is a way to mitigate against attacks relying on
- URL parsing differences.
-
-Daniel Stenberg (15 Dec 2021)
+ IGNORED: failed tests: 571 612 1056
+ TESTDONE: 1214 tests out of 1217 reported OK: 99%
+
+ Closes https://github.com/curl/curl/pull/9648
+
+- cirrus: use make LDFLAGS=-all-static instead of curl_LDFLAGS
+
+ - Correct the use of -all-static for static Windows CI builds.
+
+ curl_LDFLAGS was removed from the makefile when metalink support was
+ removed. LDFLAGS=-all-static is passed to make only, because it is not a
+ valid option for configure compilation tests.
+
+ Closes https://github.com/curl/curl/pull/9633
+
+Viktor Szakats (4 Oct 2022)
+- Makefile.m32: fix regression with tool_hugehelp [ci skip]
+
+ In a recent commit I mistakenly deleted this logic, after seeing a
+ reference to a filename ending with `.cvs` and thinking it must have
+ been long gone. Turns out this is an existing file. Restore the rule
+ and the necessary `COPY` definitions with it.
+
+ The restored logic is required for a successful build on a bare source
+ tree (as opposed to a source release tarball).
+
+ Also shorten an existing condition similar to the one added in this
+ patch.
+
+ Regression since 07a0047882dd3f1fbf73486c5dd9c15370877ad6
+
+ Closes #9645
+
+- Makefile.m32: deduplicate build rules [ci skip]
+
+ After this patch, we reduce the three copies of most `Makefile.m32`
+ logic to one. This now resides in `lib/Makefile.m32`. It makes future
+ updates easier, the code shorter, with a small amount of added
+ complexity.
+
+ `Makefile.m32` reduction:
+
+ | | bytes | LOC total | blank | comment | code |
+ |-------------------|-------:|----------:|-------:|---------:|------:|
+ | 7.85.0 | 34772 | 1337 | 79 | 192 | 1066 |
+ | before this patch | 17601 | 625 | 62 | 106 | 457 |
+ | after this patch | 11680 | 392 | 52 | 104 | 236 |
+
+ Details:
+
+ - Change rules to create objects for the `v*` subdirs in the `lib` dir.
+ This allows to use a shared compile rule and assumes that filenames
+ are not (and will not be) colliding across these directories.
+ `Makefile.m32` now also stores a list of these subdirs. They are
+ changing rarely though.
+
+ - Sync as much as possible between the three `Makefile.m32` scripts'
+ rules and their source/target sections.
+
+ - After this patch `CPPFLAGS` are all applied to the `src` sources once
+ again. This matches the behaviour of cmake/autotools. Only zlib ones
+ are actually required there.
+
+ - Use `.rc` names from `Makefile.inc` instead of keeping a duplicate.
+
+ - Change examples to link `libcurl.dll` by default. This makes building
+ trivial, even as a cross-build:
+ `CC=x86_64-w64-mingw32-gcc make -f Makefile.m32`
+ To run them, you need to move/copy or add-to-path `libcurl.dll`.
+ You can select static mode via `CFG=-static`.
+
+ - List more of the `Makefile.m32` config variables.
+
+ - Drop `.rc` support from examples. It made it fragile without much
+ benefit.
+
+ - Include a necessary system lib for the `externalsocket.c` example.
+
+ - Exclude unnecessary systems libs when building in `-dyn` mode.
+
+ Closes #9642
+
+Daniel Stenberg (4 Oct 2022)
- RELEASE-NOTES: synced
-- x509asn1: return early on errors
-
- Overhaul to make sure functions that detect errors bail out early with
- error rather than trying to continue and risk hiding the problem.
-
- Closes #8147
+- CURLOPT_COOKIELIST.3: fix formatting mistake
-- [Patrick Monnerat brought this change]
+ Also, updated manpage-syntax.pl to make it detect this error in test
+ 1173.
- openldap: several minor improvements
-
- - Early check proper LDAP URL syntax. Reject URLs with a userinfo part.
- - Use dynamic memory for ldap_init_fd() URL rather than a
- stack-allocated buffer.
- - Never chase referrals: supporting it would require additional parallel
- connections and alternate authentication credentials.
- - Do not wait 1 microsecond while polling/reading query response data.
- - Store last received server code for retrieval with CURLINFO_RESPONSE_CODE.
-
- Closes #8140
+ Reported-by: ProceduralMan on github
+ Fixes #9639
+ Closes #9640
-- [Michał Antoniak brought this change]
+- [Jay Satiro brought this change]
+
+ connect: change verbose IPv6 address:port to [address]:port
+
+ - Use brackets for the IPv6 address shown in verbose message when the
+ format is address:port so that it is less confusing.
+
+ Before: Trying 2606:4700:4700::1111:443...
+ After: Trying [2606:4700:4700::1111]:443...
+
+ Bug: https://curl.se/mail/archive-2022-02/0041.html
+ Reported-by: David Hu
+
+ Closes #9635
+
+Viktor Szakats (3 Oct 2022)
+- Makefile.m32: major rework [ci skip]
+
+ This patch overhauls `Makefile.m32` scripts, fixing a list of quirks,
+ making its behaviour and customization envvars align better with other
+ build systems, aiming for less code, that is easier to read, use and
+ maintain.
+
+ Details:
+ - Rename customization envvars:
+ `CURL_CC` -> `CC`
+ `CURL_RC` -> `RC`
+ `CURL_AR` -> `AR`
+ `CURL_LDFLAG_EXTRAS_DLL` -> `CURL_LDFLAGS_LIB`
+ `CURL_LDFLAG_EXTRAS_EXE` -> `CURL_LDFLAGS_BIN`
+ - Drop `CURL_STRIP` and `CURL_RANLIB`. These tools are no longer used.
+ - Accept `CFLAGS`, `CPPFLAGS`, `RCFLAGS`, `LDFLAGS` and `LIBS` envvars.
+ - Drop `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, `CURL_RCFLAG_EXTRAS` in
+ favor of the above.
+ - Do not automatically enable `zlib` with `libssh2`. `zlib` is optional
+ with `libssh2`.
+ - Omit unnecessary `CPPFLAGS` options when building `curl.exe` and
+ examples.
+ - Drop support for deprecated `-winssl` `CFG` option. Use `-schannel`
+ instead.
+ - Avoid late evaluation where not necessary (`=` -> `:=`).
+ - Drop support for `CURL_DLL_A_SUFFIX` to override the implib suffix.
+ Instead, use the standard naming scheme by default: `libcurl.dll.a`.
+ The toolchain recognizes the name, and selects it automatically when
+ asking for a `-shared` vs. `-static` build.
+ - Stop applying `strip` to `libcurl.a`. Follow-up from
+ 16a58e9f93c7e89e1f87720199388bcfcfa148a4. There was no debug info to
+ strip since then.
+ - Stop setting `-O3`, `-W`, `-Wall` options. You can add these to
+ `CFLAGS` as desired.
+ - Always enable `-DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG` with OpenSSL,
+ to avoid that vulnerability on Windows.
+ - Add `-lbrotlicommon` to `LIBS` when using `brotli`.
+ - Do not enable `-nghttp3` without `-ngtcp2`.
+ - `-ssh2` and `-rtmp` options no longer try to auto-select a TLS-backend.
+ You need to set the backend explicitly. This scales better and avoids
+ issues with certain combinations (e.g. `libssh2` + `wolfssl` with no
+ `schannel`).
+ - Default to OpenSSL TLS-backend with `ngtcp2`. Possible to override via
+ `NGTCP2_LIBS`.
+ - Old, alternate method of enabling components (e.g. `SSH2=1`) no longer
+ supported.
+ - Delete `SPNEGO` references. They were no-ops.
+ - Drop support for Win9x environments.
+ - Allow setting `OPENSSL_LIBS` independently from `OPENSSL_LIBPATH`.
+ - Support autotools/CMake `libssh2` builds by default.
+ - Respect `CURL_DLL_SUFFIX` in `-dyn` mode when building `curl.exe` and
+ examples.
+ - Assume standard directory layout with `LIBCARES_PATH`. (Instead of the
+ long gone embedded one.)
+ - Stop static linking with c-ares by default. Add
+ `CPPFLAGS=-DCARES_STATICLIB` to enable it.
+ - Reorganize internal layout to avoid redundancy and emit clean diffs
+ between src/lib and example make files.
+ - Delete unused variables.
+ - Code cleanups/rework.
+ - Comment and indentation fixes.
+
+ Closes #9632
+
+- scripts/release-notes.pl: strip ci skip tag [ci skip]
+
+ Ref: https://github.com/curl/curl/commit/e604a82cae922bf86403a94f5803ac5e4303ae97#commitcomment-85637701
- misc: remove unused doh flags when CURL_DISABLE_DOH is defined
-
- Closes #8148
-
-- mbedtls: fix CURLOPT_SSLCERT_BLOB
-
- The memory passed to mbedTLS for this needs to be null terminated.
-
- Reported-by: Florian Van Heghe
- Closes #8146
-
-- asyn-ares: ares_getaddrinfo needs no happy eyeballs timer
-
- Closes #8142
-
-- mailmap: add Yongkang Huang
-
- From #8141
-
-- [Yongkang Huang brought this change]
-
- check ssl_config when re-use proxy connection
-
-- mbedtls: do a separate malloc for ca_info_blob
-
- Since the mbedTLS API requires the data to the null terminated.
-
- Follow-up to 456c53730d21b1fad0c7f72c1817
-
- Fixes #8139
- Closes #8145
-
-Marc Hoersken (14 Dec 2021)
-- CI: build examples for additional code verification
-
- Some CIs already build them, let's do it on more of them.
-
Reviewed-by: Daniel Stenberg
-
- Follow up to #7690 and 77311f420a541a0de5b3014e0e40ff8b4205d4af
- Replaces #7591
- Closes #7922
-
-- docs/examples: workaround broken -Wno-pedantic-ms-format
-
- Avoid CURL_FORMAT_CURL_OFF_T by using unsigned long instead.
- Improve size_t to long conversion in imap-append.c example.
-
- Ref: https://github.com/curl/curl/issues/6079
- Ref: https://github.com/curl/curl/pull/6082
- Assisted-by: Jay Satiro
+
+ Closes #9634
+
+- Makefile.m32: delete legacy component bits [ci skip]
+
+ - Drop auto-detection of OpenSSL 1.0.2 and earlier. Now always defaulting
+ to OpenSSL 1.1.0 and later, LibreSSL and BoringSSL.
+
+ - Drop `Invalid path to OpenSSL package` detection. OpenSSL has been
+ using a standard file layout since 1.1.0, so this seems unnecessary
+ now.
+
+ - Drop special logic to enable Novell LDAP SDK support.
+
+ - Drop special logic to enable OpenLDAP LDAP SDK support. This seems
+ to be distinct from native OpenLDAP, with support implemented inside
+ `lib/ldap.c` (vs. `lib/openldap.c`) back when the latter did not exist
+ yet in curl.
+
+ - Add `-lwldap32` only if there is no other LDAP library (either native
+ OpenLDAP, or SDKs above) present.
+
+ - Update `doc/INSTALL.md` accordingly.
+
+ After this patch, it's necessary to make configration changes when using
+ OpenSSL 1.0.2 or earlier, or the two LDAP SDKs.
+
+ OpenSSL 1.0.2 and earlier:
+ ```
+ export OPENSSL_INCLUDE = <path-to-openssl>/outinc
+ export OPENSSL_LIBPATH = <path-to-openssl>/out
+ export OPENSSL_LIBS = -lssl32 -leay32 -lgdi32
+ ```
+
+ Novell LDAP SDK, previously enabled via `USE_LDAP_NOVELL=1`:
+ ```
+ export CURL_CFLAG_EXTRAS = -I<path-to-sdk>/inc -DCURL_HAS_NOVELL_LDAPSDK
+ export CURL_LDFLAG_EXTRAS = -L<path-to-sdk>/lib/mscvc -lldapsdk -lldapssl -lldapx
+ ```
+
+ OpenLDAP LDAP SDK, previously enabled via `USE_LDAP_OPENLDAP=1`:
+ ```
+ export CURL_CFLAG_EXTRAS = -I<path-to-sdk>/include -DCURL_HAS_OPENLDAP_LDAPSDK
+ export CURL_LDFLAG_EXTRAS = -L<path-to-sdk>/lib -lldap -llber
+ ```
+
+ I haven't tested these scenarios, and in general we recommend using
+ a recent OpenSSL release. Also, WinLDAP (the Windows default) and
+ OpenLDAP (via `-DUSE_OPENLDAP`) are the LDAP options actively worked on
+ in curl.
+
+ Closes #9631
+
+Daniel Stenberg (2 Oct 2022)
+- vauth/ntlm.h: make line shorter than 80 columns
+
+ Follow-up from 265fbd937
+
+Viktor Szakats (1 Oct 2022)
+- docs: update sourceforge project links [ci skip]
+
+ SourceForge projects can now choose between two hostnames, with .io and
+ .net ending. Both support HTTPS by default now. Opening the other variant
+ will perm-redirected to the one chosen by the project.
+
+ The .io -> .net redirection is done insecurely.
+
+ Let's update the URLs to point to the current canonical endpoints to
+ avoid any redirects.
+
+ Closes #9630
+
+Daniel Stenberg (1 Oct 2022)
+- curl_url_set.3: document CURLU_APPENDQUERY proper
+
+ Listed among the other supported flags.
+
+ Reported-by: Robby Simpson
+ Fixes #9628
+ Closes #9629
+
+Viktor Szakats (1 Oct 2022)
+- Makefile.m32: cleanups and fixes [ci skip]
+
+ - Add `-lcrypt32` once, and add it always for simplicity.
+ - Delete broken link and reference to the pre-Vista WinIDN add-on.
+ MS no longer distribute it.
+ - Delete related `WINIDN_PATH` option. IDN is a system lib since Vista.
+ - Sync `LIBCARES_PATH` default with the rest of dependencies.
+ - Delete version numbers from dependency path defaults.
+ - `libgsasl` package is now called `gsasl`.
+ - Delete `libexpat` and `libxml2` references. No longer used by curl.
+ - Delete `Edit the path below...` comments. We recommend to predefine
+ those envvars instead.
+ - `libcares.a` is not an internal dependency anymore. Stop using it as
+ such.
+ - `windres` `--include-dir` -> `-I`, `-F` -> `--target=` for readability.
+ - Delete `STRIP`, `CURL_STRIP`, `AR` references from `src/Makefile.m32`.
+ They were never used.
+ - Stop to `clean` some objects twice in `src/Makefile.m32`.
+ - Delete cvs-specific leftovers.
+ - Finish resource support in examples make file.
+ - Delete `-I<root>/lib` from examples make file.
+ - Fix copyright start year in examples make file.
+ - Delete duplicate `ftpuploadresume` input in examples make file.
+ - Sync OpenSSL lib order, `SYNC` support, `PROOT` use, dependency path
+ defaults, variables names and other internal bits between the three
+ make files.
+ - `lib/Makefile.m32` accepted custom options via `DLL_LIBS` envvar. This
+ was lib-specific and possibly accidental. Use `CURL_LDFLAG_EXTRAS_DLL`
+ envvar for the same effect.
+ - Fix linking `curl.exe` and examples to wrong static libs with
+ auto-detected OpenSSL 1.0.2 or earlier.
+ - Add `-lgdi32` for OpenSSL 1.0.2 and earlier only.
+ - Add link to Novell LDAP SDK and use a relative default path. Latest
+ version is from 2016, linked to an outdated OpenSSL 1.0.1.
+ - Whitespace and comment cleanups.
+
+ TODO in a next commit:
+
+ Delete built-in detection/logic for OpenSSL 1.0.2 and earlier, the Novell
+ LDAP SDK and the other LDAP SDK (which is _not_ OpenLDAP). Write up the
+ necessary custom envvars to configure them.
+
+ Closes #9616
+
+Daniel Stenberg (30 Sep 2022)
+- RELEASE-NOTES: synced
+
+- [Matt Holt brought this change]
+
+ HTTP3.md: update Caddy example
+
+ Closes #9623
+
+- easy: fix the altsvc init for curl_easy_duphandle
+
+ It was using the old #ifdef which nothing sets anymore
+
+ Closes #9624
+
+- GHA: build tests in a separate step from the running of them
+
+ ... to make the output smaller for when you want to look at test
+ failures.
+
+ Removed the examples build from msh3
+
+ Closes #9619
+
+Viktor Szakats (29 Sep 2022)
+- ldap: delete stray CURL_HAS_MOZILLA_LDAP reference
+
+ Added in 68b215157fdf69612edebdb220b3804822277822, while adding openldap
+ support. This is also the single mention of this constant in the source
+ tree and also in that commit. Based on these, it seems like an accident.
+
+ Delete this reference.
+
Reviewed-by: Daniel Stenberg
-
- Preparation of #7922
-- tests/data/test302[12]: fix MSYS2 path conversion of hostpubsha256
-
- Ref: https://www.msys2.org/wiki/Porting/#filesystem-namespaces
-
- Reviewed-by: Marcel Raad
- Reviewed-by: Jay Satiro
-
- Fixes #8084
- Closes #8138
+ Closes #9625
+
+- docs: spelling nits
+
+ - MingW -> MinGW (Minimalist GNU for Windows)
+ - f.e. -> e.g.
+ - some whitespace and punctuation.
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9622
+
+Daniel Stenberg (29 Sep 2022)
+- [Philip Heiduck brought this change]
+
+ cirrus-ci: add macOS build with m1
+
+ Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
+
+ Closes #9565
-Daniel Stenberg (13 Dec 2021)
- [Patrick Monnerat brought this change]
- openldap: simplify ldif generation code
-
- and take care of zero-length values, avoiding conversion to base64
- and/or trailing spaces.
-
- Closes #8136
+ lib: sanitize conditional exclusion around MIME
-- example/progressfunc: remove code for old libcurls
-
- 7.61.0 is over three years old now, remove all #ifdefs for handling
- ancient libcurl versions so that the example gets easier to read and
- understand
-
- Closes #8137
+ The introduction of CURL_DISABLE_MIME came with some additional bugs:
+ - Disabled MIME is compiled-in anyway if SMTP and/or IMAP is enabled.
+ - CURLOPT_MIMEPOST, CURLOPT_MIME_OPTIONS and CURLOPT_HTTPHEADER are
+ conditioned on HTTP, although also needed for SMTP and IMAP MIME mail
+ uploads.
-- [x2018 brought this change]
+ In addition, the CURLOPT_HTTPHEADER and --header documentation does not
+ mention their use for MIME mail.
- sha256/md5: return errors when init fails
-
- Closes #8133
+ This commit fixes the problems above.
-- TODO: 13.3 Defeat TLS fingerprinting
-
- Closes #8119
+ Closes #9610
-- RELEASE-NOTES: synced
+- [Thiago Suchorski brought this change]
+
+ docs: minor grammar fixes
+
+ Closes #9609
+
+- CURLSHOPT_UNLOCKFUNC.3: the callback as no 'access' argument
+
+ Probably a copy and paste error from the lock function man page.
+
+ Reported-by: Robby Simpson
+ Fixes #9612
+ Closes #9613
+
+- CURLOPT_ACCEPT_ENCODING.3: remove "four" as they are five
+
+ ... instead just list the supported encodings.
+
+ Reported-by: ProceduralMan on github
+ Fixes #9614
+ Closes #9615
+
+Dan Fandrich (28 Sep 2022)
+- tests: Remove a duplicated keyword
+
+- docs: document more server names for test files
+
+Daniel Stenberg (28 Sep 2022)
+- altsvc: reject bad port numbers
+
+ The existing code tried but did not properly reject alternative services
+ using negative or too large port numbers.
+
+ With this fix, the logic now also flushes the old entries immediately
+ before adding a new one, making a following header with an illegal entry
+ not flush the already stored entry.
+
+ Report from the ongoing source code audit by Trail of Bits.
+
+ Adjusted test 356 to verify.
+
+ Closes #9607
+
+- functypes: provide the recv and send arg and return types
+
+ This header is for providing the argument types for recv() and send()
+ when built to not use a dedicated config-[platfor].h file.
+
+ Remove the slow brute-force checks from configure and cmake.
+
+ This change also removes the use of the types for select, as they were
+ not used in code.
+
+ Closes #9592
+
+- urlapi: reject more bad characters from the host name field
+
+ Extended test 1560 to verify
+
+ Report from the ongoing source code audit by Trail of Bits.
+
+ Closes #9608
+
+- configure: deprecate builds with small curl_off_t
+
+ If curl_off_t turns out to be smaller than 8 bytes,
+ --with-n64-deprecated needs to be used to allow the build to
+ continue. This is to highlight the fact that support for such builds is
+ going away next year.
+
+ Also mentioned in DEPRECATED.md
+
+ Closes #9605
- [Patrick Monnerat brought this change]
- openldap: process search query response messages one by one
-
- Upon receiving large result sets, this reduces memory consumption and
- allows starting to output results while the transfer is still in
- progress.
-
- Closes #8101
-
-- hash: lazy-alloc the table in Curl_hash_add()
-
- This makes Curl_hash_init() infallible which saves error paths.
-
- Closes #8132
-
-- multi: cleanup the socket hash when destroying it
-
- Since each socket hash entry may themselves have a hash table in them,
- the destroying of the socket hash needs to make sure all the subhashes
- are also correctly destroyed to avoid leaking memory.
-
- Fixes #8129
- Closes #8131
-
-- test1156: fixup the stdout check for Windows
-
- It is not text mode.
-
- Follow-up to 6f73e68d182
-
- Closes #8134
-
-- test1528: enable for hyper
-
- Closes #8128
-
-- test1527: enable for hyper
-
- Closes #8128
-
-- test1526: enable for hyper
-
- Closes #8128
-
-- test1525: slightly tweaked for hyper
-
- Closes #8128
-
-- test1156: enable for hyper
-
- Minor reorg of the lib1156 code and it works fine for hyper.
-
- Closes #8127
-
-- test661: enable for hyper
-
- Closes #8126
-
-- docs: fix proselint nits
-
- - remove a lot of exclamation marks
- - use consistent spaces (1, not 2)
- - use better words at some places
-
- Closes #8123
-
-- [RekGRpth brought this change]
-
- BINDINGS.md: add cURL client for PostgreSQL
-
- Closes #8125
-
-- [RekGRpth brought this change]
-
- CURLSHOPT_USERDATA.3: fix copy-paste mistake
-
- Closes #8124
-
-- docs: fix minor nroff format nits
-
- Repairs test 1140
-
- Follow-up to 436cdf82041
-
-- docs/URL-SYNTAX.md: space is not fine in a given URL
-
-- curl_multi_perform/socket_action.3: clarify what errors mean
-
- An error returned from one of these funtions mean that ALL still ongoing
- transfers are to be considered failed.
-
- Ref: #8114
- Closes #8120
-
-- libcurl-errors.3: add CURLM_ABORTED_BY_CALLBACK
-
- Follow-up to #8089 (2b3dd01)
-
- Closes #8116
-
-- hash: add asserts to help detect bad usage
-
- For example trying to add entries after the hash has been "cleaned up"
-
- Closes #8115
-
-- lib530: abort on curl_multi errors
-
- This makes torture tests run more proper.
-
- Also add an assert to trap situations where it would end up with no
- sockets to wait for.
-
- Closes #8121
-
-- FAQ: we never pronounced it "see URL", we say "kurl"
+ http, vauth: always provide Curl_allow_auth_to_host() functionality
+
+ This function is currently located in the lib/http.c module and is
+ therefore disabled by the CURL_DISABLE_HTTP conditional token.
+
+ As it may be called by TLS backends, disabling HTTP results in an
+ undefined reference error at link time.
+
+ Move this function to vauth/vauth.c to always provide it and rename it
+ as Curl_auth_allowed_to_host() to respect the vauth module naming
+ convention.
+
+ Closes #9600
+
+- ngtcp2: fix C89 compliance nit
+
+- openssl: make certinfo available for QUIC
+
+ Curl_ossl_certchain() is now an exported function in lib/vtls/openssl.c that
+ can also be used from quiche.c and ngtcp2.c to get the cert chain for QUIC
+ connections as well.
+
+ The *certchain function was moved to the top of the file for this reason.
+
+ Reported-by: Eloy Degen
+ Fixes #9584
+ Closes #9597
- RELEASE-NOTES: synced
-- CURLOPT_RESOLVE.3: minor polish
-
- Minor rephrasing for some explanations.
-
- Put the format strings in stand-alone lines with .nf/.fi to be easier to spot.
-
- Move "added in" to AVAILABILITY
-
- Closed #8110
-
-- test1556: adjust for hyper
-
- Closes #8105
-
-- test1554: adjust for hyper
-
- Closes #8104
-
-- retry-all-errors.d: make the example complete
-
- ... as it needs --retry too to work
-
-- TODO: 5.7 Require HTTP version X or higher
-
- Closes #7980
-
-- CURLOPT_STDERR.3: does not work with libcurl as a win32 DLL
-
- This is the exact same limitation already documented for
- CURLOPT_WRITEDATA but should be clarified here. It also has a different
- work-around.
-
- Reported-by: Stephane Pellegrino
- Bug: https://github.com/curl/curl/issues/8102
- Closes #8103
-
-- multi: handle errors returned from socket/timer callbacks
-
- The callbacks were partially documented to support this. Now the
- behavior is documented and returning error from either of these
- callbacks will effectively kill all currently ongoing transfers.
-
- Added test 530 to verify
-
- Reported-by: Marcelo Juchem
- Fixes #8083
- Closes #8089
-
-- http2:set_transfer_url() return early on OOM
-
- If curl_url() returns NULL this should return early to avoid mistakes -
- even if right now the subsequent function invokes are all OK.
-
- Coverity (wrongly) pointed out this as a NULL deref.
-
- Closes #8100
-
-- tool_parsecfg: use correct free() call to free memory
-
- Detected by Coverity. CID 1494642.
- Follow-up from 2be1aa619bca
-
- Closes #8099
-
-- tool_operate: fix potential memory-leak
-
- A 'CURLU *' would leak if url_proto() is called with no URL.
-
- Detected by Coverity. CID 1494643.
- Follow-up to 18270893abdb19
- Closes #8098
+- DEPRECATE.md: Support for systems without 64 bit data types
+
+ Closes #9604
+
+- [Patrick Monnerat brought this change]
+
+ tests: skip mime/form tests when mime is not built-in
+
+ Closes #9596
+
+- url: rename function due to name-clash in Watt-32
+
+ Follow-up to 2481dbe5f4f58 and applies the change the way it was
+ intended.
+
+Viktor Szakats (26 Sep 2022)
+- windows: adjust name of two internal public functions
+
+ According to `docs/INTERNALS.md`, internal function names spanning source
+ files start with uppercase `Curl_`. Bring these two functions in
+ alignment with this.
+
+ This also stops exporting them from `libcurl.dll` in autotools builds.
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9598
+
+Daniel Stenberg (26 Sep 2022)
+- [Gisle Vanem brought this change]
+
+ url: rename function due to name-clash in Watt-32
+
+ Since the commit 764c958c52edb427f39, there was a new function called
+ resolve_ip(). This clashes with an internal function in Watt-32.
+
+ Closes #9585
+
+Jay Satiro (26 Sep 2022)
+- schannel: ban server ALPN change during recv renegotiation
+
+ By the time schannel_recv is renegotiating the connection, libcurl has
+ already decided on a protocol and it is too late for the server to
+ select a protocol via ALPN except for the originally selected protocol.
+
+ Ref: https://github.com/curl/curl/issues/9451
+
+ Closes https://github.com/curl/curl/pull/9463
+
+Daniel Stenberg (26 Sep 2022)
+- url: a zero-length userinfo part in the URL is still a (blank) user
+
+ Adjusted test 1560 to verify
+
+ Reported-by: Jay Satiro
+
+ Fixes #9088
+ Closes #9590
+
+Viktor Szakats (25 Sep 2022)
+- autotools: allow --enable-symbol-hiding with windows
+
+ This local autotools logic was put in place in
+ 9e24b9c7afbcb81120af4cf3f6cdee49a06d8224 (in 2012) which disabled it for
+ Windows unconditionally. Testing reveals that it actually works with
+ tested toolchains (mingw-w64 and CI ones), so let's allow this build
+ feature on that platform. Bringing this in sync with CMake, which already
+ supported this.
+
+ Reviewed-by: Jay Satiro
+
+ Closes #9586
+
+- autotools: reduce brute-force when detecting recv/send arg list
+
+ autotools uses brute-force to detect `recv`/`send`/`select` argument
+ lists, by interating through _all_ argument type combinations on each
+ `./configure` run. This logic exists since
+ 01fa02d0b545e1433dced2430561f8c0c72b74a9 (from 2006) and was a bit later
+ extended with Windows support.
+
+ This results in a worst-case number of compile + link cycles as below:
+ - `recv`: 96
+ - `send`: 192
+ - `select`: 60
+ Total: 348 (the number of curl C source files is 195, for comparison)
+
+ Notice that e.g. curl-for-win autotools builds require two `./configure`
+ invocations, doubling these numbers.
+
+ `recv` on Windows was especially unlucky because `SOCKET` (the correct
+ choice there) was listed _last_ in one of the outer trial loops. This
+ resulted in lengthy waits while autotools was trying all invalid
+ combinations first, wasting cycles, disk writes and slowing down
+ iteration.
+
+ This patch reduces the amount of idle work by reordering the tests in
+ a way to succeed first on a well-known platform such as Windows, and
+ also on non-Windows by testing for POSIX prototypes first, on the
+ assumption that these are the most likely candidates these days. (We do
+ not touch `select`, where the order was already optimal for these
+ platforms.)
+
+ For non-Windows, this means to try a return value of `ssize_t` first,
+ then `int`, reordering the buffer argument type to try `void *` first,
+ then `byte *`, and prefer the `const` flavor with `send`. If we are
+ here, also stop testing for `SOCKET` type in non-Windows builds.
+
+ After the patch, detection on Windows is instantaneous. It should also be
+ faster on popular platforms such as Linux and BSD-based ones.
+
+ If there are known-good variations for other platforms, they can also be
+ fast-tracked like above, given a way to check for that platform inside
+ the autotools logic.
+
+ Reviewed-by: Daniel Stenberg
+
+ Closes #9591
+
+Daniel Stenberg (23 Sep 2022)
+- TODO: Provide the error body from a CONNECT response
+
+ Spellchecked-by: Jay Satiro
+
+ Closes #9513
+ Closes #9581
+
+Viktor Szakats (23 Sep 2022)
+- windows: autotools .rc warnings fixup
+
+ Move `LT_LANG([Windows Resource])` after `XC_LIBTOOL`, fixing:
+
+ - Warnings when running `autoreconf -fi`.
+
+ - Warning when compiling .rc files:
+ libtool: compile: unable to infer tagged configuration
+ libtool: error: specify a tag with '--tag'
+
+ Follow up to 6de7322c03d5b4d91576a7d9fc893e03cc9d1057
+ Ref: https://github.com/curl/curl/pull/9521#issuecomment-1256291156
+
+ Suggested-by: Patrick Monnerat
+ Closes #9582
+
+Daniel Stenberg (23 Sep 2022)
+- [Randall S. Becker brought this change]
+
+ curl_setup: disable use of FLOSS for 64-bit NonStop builds
+
+ Older 32-bit builds currently need FLOSS. This dependency may be removed
+ in future OS releases.
+
+ Signed-off-by: Randall S. Becker <randall.becker@nexbridge.ca>
+
+ Closes #9575
+
+- [Patrick Monnerat brought this change]
+
+ tool: remove dead code
+
+ Add a debug assertion to verify protocols included/excluded in a set
+ are always tokenized.
+
+ Follow-up to commit 677266c.
+
+ Closes #9576
+
+- [Patrick Monnerat brought this change]
+
+ lib: prepare the incoming of additional protocols
+
+ Move the curl_prot_t to its own conditional block. Introduce symbol
+ PROTO_TYPE_SMALL to control it.
+
+ Fix a cast in a curl_prot_t assignment.
+ Remove an outdated comment.
+
+ Follow-up to cd5ca80.
+
+ Closes #9534
+
+- msh3: change the static_assert to make the code C89
+
+- bearssl: make it proper C89 compliant
+
+- curl-compilers.m4: for gcc + want warnings, set gnu89 standard
+
+ To better verify that the code is C89
+
+ Closes #9542
- [Patrick Monnerat brought this change]
- openldap: implement STARTTLS
-
- As this introduces use of CURLOPT_USE_SSL option for LDAP, also check
- this option in ldap.c as it is not supported by this backend.
-
- Closes #8065
+ lib517: fix C89 constant signedness
+
+ In C89, positive integer literals that overflow an int but not an
+ unsigned int may be understood as a negative int.
+
+ lib517.c:129:3: warning: this decimal constant is unsigned only in ISO C90
+ {"Sun, 06 Nov 2044 08:49:37 GMT", 2362034977 },
+ ^
+
+ Closes #9572
+
+- mprintf: use snprintf if available
+
+ This is the single place in libcurl code where it uses the "native"
+ s(n)printf() function. Used for writing floats. The use has been
+ reviewed and vetted and uses a HUGE target buffer, but switching to
+ snprintf() still makes this safer and removes build-time warnings.
+
+ Reported-by: Philip Heiduck
-- [Jun Tseng brought this change]
+ Fixes #9569
+ Closes #9570
- curl_easy_unescape.3: call curl_easy_cleanup in example
-
- Closes #8097
+- docs: tag curl options better in man pages
-- [Jun Tseng brought this change]
+ As it makes them links in the HTML versions.
- curl_easy_escape.3: call curl_easy_cleanup in example
-
- Closes #8097
+ Verified by the extended test 1176
-- tool_listhelp: sync
-
- Follow-up to 172068b76f
+- symbols-in-versions: CURLOPT_ENCODING is deprecated since 7.21.6
-- [Damien Walsh brought this change]
+- manpage-syntax.pl: all libcurl option symbols should be \fI-tagged
- request.d: refer to 'method' rather than 'command'
-
- Closes #8094
+ ... as that makes them links to their corresponding man page.
+
+ This script is used for test 1173.
+
+ Closes #9574
- RELEASE-NOTES: synced
-- writeout: fix %{http_version} for HTTP/3
-
- Output "3" properly when HTTP/3 was used.
-
- Reported-by: Bernat Mut
- Fixes #8072
- Closes #8092
-
-- urlapi: accept port number zero
-
- This is a regression since 7.62.0 (fb30ac5a2d).
-
- Updated test 1560 accordingly
-
- Reported-by: Brad Fitzpatrick
- Fixes #8090
- Closes #8091
-
-- [Mark Dodgson brought this change]
-
- lift: ignore is a deprecated config option, use ignoreRules
-
- Closes #8082
-
-- [Alessandro Ghedini brought this change]
-
- HTTP3: update quiche build instructions
-
- The repo repo was re-organized a bit, so the build instructions need to
- be updated.
-
- Closes #8076
-
-- CURLMOPT_TIMERFUNCTION.3: call it expire time, not interval
-
- Since we say it is a non-repating timer
-
-- [Florian Van Heghe brought this change]
-
- mbedTLS: include NULL byte in blob data length for CURLOPT_CAINFO_BLOB
-
- Fixes #8079
- Closes #8081
-
-Jay Satiro (2 Dec 2021)
-- [Wyatt O'Day brought this change]
+- [Patrick Monnerat brought this change]
- version_win32: Check build number and platform id
-
- Prior to this change the build number was not checked during version
- comparison, and the platform id was supposed to be checked but wasn't.
-
- Checking the build number is required for enabling "evergreen"
- Windows 10/11 features (like TLS 1.3).
-
- Ref: https://github.com/curl/curl/pull/7784
-
- Closes https://github.com/curl/curl/pull/7824
- Closes https://github.com/curl/curl/pull/7867
-
-- libssh2: fix error message for sha256 mismatch
-
- - On mismatch error show sha256 fingerprint in base64 format.
-
- Prior to this change the fingerprint was mistakenly printed in binary.
-
-Daniel Stenberg (1 Dec 2021)
-- [x2018 brought this change]
-
- openssl: check the return value of BIO_new()
-
- Closes #8078
-
-Dan Fandrich (30 Nov 2021)
-- docs: Update the Reducing Size section
-
- Add many more options that can reduce the size of the binary that were
- added since the last update. Update the sample minimal binary size for
- version 7.80.0.
-
-- tests: Add some missing keywords to tests
-
- These are needed to skip some tests when configure options have disabled
- certain features.
-
-Daniel Stenberg (30 Nov 2021)
-- [Florian Van Heghe brought this change]
-
- mbedTLS: add support for CURLOPT_CAINFO_BLOB
-
- Closes #8071
+ tool: remove protocol count limitation
-- [Glenn Strauss brought this change]
+ Replace bit mask protocol sets by null-terminated arrays of protocol
+ tokens. These are the addresses of the protocol names returned by
+ curl_version_info().
- digest: compute user:realm:pass digest w/o userhash
-
- https://datatracker.ietf.org/doc/html/rfc7616#section-3.4.4
- ... the client MUST calculate a hash of the username after
- any other hash calculation ...
-
- Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
- Closes #8066
+ Protocol names are sorted case-insensitively before output to satisfy CI
+ tests matches consistency.
-- config.d: update documentation to match the path search
-
- Assisted-by: Jay Satiro
+ The protocol list returned by curl_version_info() is augmented with all
+ RTMP protocol variants.
-- tool_findfile: search for a file in the homedir
-
- The homedir() function is now renamed into findfile() and iterates over
- all the environment variables trying to access the file in question
- until it finds it. Last resort is then getpwuid() if
- available. Previously it would first try to find a home directory and if
- that was set, insist on checking only that directory for the file. This
- now returns the full file name it finds.
-
- The Windows specific checks are now done differently too and in this
- order:
-
- 1 - %USERPROFILE%
- 2 - %APPDATA%
- 3 - %USERPROFILE%\\Application Data
-
- The windows order is modified to match how the Windows 10 ssh tool works
- when it searches for .ssh/known_hosts.
-
- Reported-by: jeffrson on github
- Co-authored-by: Jay Satiro
- Fixes #8033
- Closes #8035
-
-- docs: consistent manpage SYNOPSIS
-
- Make all libcurl related options use .nf (no fill) for the SYNOPSIS
- section - for consistent look. roffit then renders that section using
- <pre> (monospace font) in html for the website.
-
- Extended manpage-syntax (test 1173) with a basic check for it.
-
- Closes #8062
+ Test 1401 adjusted for new alpha ordered output.
+
+ Closes #9546
+
+- test972: verify the output without using external tool
+
+ It seems too restrictive to assume and use an external tool to verify
+ the JSON. This now verifies the outut byte per byte. We could consider
+ building a local "JSON verifyer" in a future.
+
+ Remove 'jsonlint' from the CI job.
+
+ Reported-by: Marcel Raad
+ Fixes #9563
+ Closes #9564
+
+- hostip: lazily wait to figure out if IPv6 works until needed
+
+ The check may take many milliseconds, so now it is performed once the
+ value is first needed. Also, this change makes sure that the value is
+ not used if the resolve is set to be IPv4-only.
+
+ Closes #9553
+
+- curl.h: fix mention of wrong error code in comment
+
+ The same error and comment were also used and is now corrected in
+ CURLOPT_SSH_KEYFUNCTION.3
+
+- symbol-scan.pl: scan and verify .3 man pages
+
+ This script now also finds all .3 man pages in docs/include and
+ docs/include/opts, extracts all uses of CURL* symbols and verifies that all
+ symbols mentioned in docs are defined in public headers.
+
+ A "global symbol" is one of those matching a known prefix and the script makes
+ an attempt to check all/most of them. Just using *all* symbols that match
+ CURL* proved matching a little too many other references as well and turned
+ difficult turning into something useful.
+
+ Closes #9544
+
+- symbols-in-versions: add missing LIBCURL* symbols
+
+- symbol-scan.pl: also check for LIBCURL* symbols
+
+ Closes #9544
+
+- docs/libcurl/symbols-in-versions: add several missing symbols
+
+- test1119: scan all public headers
+
+ Previously this test only scanned a subset of the headers, which made us
+ accidentally miss symbols that were provided in the others. Now, the script
+ iterates over all headers present in include/curl.
+
+ Closes #9544
+
+- [Patrick Monnerat brought this change]
+
+ examples/chkspeed: improve portability
+
+ The example program chkspeed uses strncasecmp() which is not portable
+ across systems. Replace calls to this function by tests on characters.
+
+ Closes #9562
+
+- easy: fix the #include order
+
+ The mentioned "last 3 includes" order should be respected. easy_lock.h should
+ be included before those three.
+
+ Reported-by: Yuriy Chernyshov
+ Fixes #9560
+ Closes #9561
+
+- docs: spellfixes
+
+ Pointed by the new CI job
+
+- GHA: spellcheck
+
+ This spellchecker checks markdown files. For this reason this job
+ converts all man pages in the repository to markdown with pandoc before
+ the check runs.
+
+ The perl script 'cleanspell' filters out details from the man page in
+ the process, to avoid the spellchecker trying to spellcheck things it
+ can't. Like curl specific symbols and the SYNOPSIS and EXAMPLE sections
+ of libcurl man pages.
+
+ The spell checker does not check words in sections that are within pre,
+ strong and em tags.
+
+ 'spellcheck.words' is a custom word list with additional accepted words.
+
+ Closes #9523
+
+- connect: fix the wrong error message on connect failures
+
+ The "Failed to connect to" message after a connection failure would
+ include the strerror message based on the presumed previous socket
+ error, but in times it seems that error number is not set when reaching
+ this code and therefore it would include the wrong error message.
+
+ The strerror message is now removed from here and the curl_easy_strerror
+ error is used instead.
+
+ Reported-by: Edoardo Lolletti
+ Fixes #9549
+ Closes #9554
+
+- httpput-postfields.c: shorten string for C89 compliance
+
+ httpput-postfields.c:41:3: error: string length ‘522’ is greater than the length ‘509’ ISO C90 compilers are required to support [-Woverlength-strings]
+ 41 | "this chapter.";
+ | ^~~~~~~~~~~~~~~
+
+ Closes #9555
+
+- ws: fix a C89 compliance nit
+
+ Closes #9541
+
+- [Patrick Monnerat brought this change]
+
+ unit test 1655: make it C89-compliant
+
+ Initializations performed in unit test 1655 use automatic variables in
+ aggregates and thus can only be computed at run-time. Using gcc in C89
+ dialect mode produces warning messages like:
+
+ unit1655.c:96:7: warning: initializer element is not computable at load time [-Wpedantic]
+ 96 | { toolong, DOH_DNS_NAME_TOO_LONG }, /* expect early failure */
+ | ^~~~~~~
+
+ Fix the problem by converting these automatic pointer variables to
+ static arrays.
+
+ Closes #9551
+
+- [Tobias Schaefer brought this change]
+
+ curl_strequal.3: fix typo
+
+ Closes #9548
+
+- [Dmitry Karpov brought this change]
+
+ resolve: make forced IPv4 resolve only use A queries
+
+ This protects IPv4-only transfers from undesired bad IPv6-related side
+ effects and make IPv4 transfers in dual-stack libcurl behave the same
+ way as in IPv4 single-stack libcurl.
+
+ Closes #9540
- RELEASE-NOTES: synced
+- winbuild/MakefileBuild.vc: handle spaces in libssh(2) include paths
+
+ Patched-by: Mark Itzcovitz
+ Bug: https://curl.se/mail/lib-2022-09/0038.html
+
+ Closes #9536
+
+- TODO: Reduce CA certificate bundle reparsing
+
+ By adding some sort of cache.
+
+ Reported-by: Michael Drake
+ Closes #9379
+ Closes #9538
+
+Marc Hoersken (19 Sep 2022)
+- CI/GHA: cancel outdated CI runs on new PR changes
+
+ Avoid letting outdated CI runs continue if a PR receives
+ new changes. Outside a PR we let them continue running
+ by tying the concurrency to the commit hash instead.
+
+ Also only let one CodeQL or Hacktoberfest job run at a time.
+
+ Other CI platforms we use have this build in, but GitHub
+ unfortunately neither by default nor with a simple option.
+
+ This saves CI resources and therefore a little energy.
+
+ Approved-by: Daniel Stenberg
+ Approved-by: Max Dymond
+ Closes #9533
+
+Daniel Stenberg (19 Sep 2022)
+- docs: fix proselint complaints
+
+- GHA: run proselint on markdown files
+
+ Co-authored-by: Marc Hörsken
+
+ Closes #9520
+
+- lib: the number four in a sequence is the "fourth"
+
+ Spelling is hard
+
+ Closes #9535
+
+- [John Bampton brought this change]
+
+ misc: fix spelling in two source files
+
+ Closes #9529
+
+Viktor Szakats (18 Sep 2022)
+- windows: add .rc support to autotools builds
+
+ After this update autotools builds will compile and link `.rc` resources
+ to Windows executables. Bringing this feature on par with CMake and
+ Makefile.m32 builds. And also making it unnecessary to improvise these
+ steps manually, while monkey patching build files, e.g. [0].
+
+ You can customize the resource compiler via the `RC` envvar, and its
+ options via `RCFLAGS`.
+
+ This harmless warning may appear throughout the build, even though the
+ autotools manual documents [1] `RC` as a valid tag, and it fails when
+ omitting one:
+ `libtool: error: ignoring unknown tag RC`
+
+ [0] https://github.com/curl/curl-for-win/blob/535f19060d4b708f72e75dd849409ce50baa1b84/curl-autotools.sh#L376-L382
+ [1] https://www.gnu.org/software/libtool/manual/html_node/Tags.html
+
+ Closes #9521
+
+Marc Hoersken (18 Sep 2022)
+- CI/linkcheck: only run if a Markdown file is changed
+
+ This saves CI resources and therefore a little energy.
+
+ Reviewed-by: Max Dymond
+ Closes #9531
+
+- README.md: add GHA status badges for Linux and macOS builds
+
+ This makes sense now that Linux builds are being consolidated.
+
+ Approved-by: Daniel Stenberg
+ Closes #9530
+
+ [skip ci]
+
+Daniel Stenberg (17 Sep 2022)
+- misc: null-terminate
+
+ Make use of this term consistently.
+
+ Closes #9527
+
+Marc Hoersken (17 Sep 2022)
+- CI/GHA: merge intel CC and more TLS libs into linux workflow
+
+ Continue work on merging all Linux workflows into one file.
+
+ Reviewed-by: Max Dymond
+ Follow up to #9501
+ Closes #9514
+
+Daniel Stenberg (17 Sep 2022)
- [Patrick Monnerat brought this change]
- openldap: handle connect phase with a state machine
-
- Closes #8054
-
-- docs: address proselint nits
-
- - avoid exclamation marks
- - use consistent number of spaces after periods: one
- - avoid clichés
- - avoid using 'very'
-
- Closes #8060
-
-- [Bruno Baguette brought this change]
-
- FAQ: typo fix : "yout" ➤ "your"
-
- Closes #8059
-
-- [Bruno Baguette brought this change]
-
- docs/INSTALL.md: typo fix : added missing "get" verb
-
- Closes #8058
-
-- insecure.d: detail its use for SFTP and SCP as well
-
- Closes #8056
-
-Viktor Szakats (25 Nov 2021)
-- Makefile.m32: rename -winssl option to -schannel and tidy up
-
- - accept `-schannel` as an alternative to `CFG` option `-winssl`
- (latter still accepted, but deprecated)
- - rename internal variable `WINSSL` to `SCHANNEL`
- - make the `CFG` option evaluation shorter, without repeating the option
- name
-
- Reviewed-by: Marcel Raad
+ lib1597: make it C89-compliant again
+
+ Automatic variable addresses cannot be used in an initialisation
+ aggregate.
+
+ Follow-up to 9d51329
+
+ Reported-by: Daniel Stenberg
+ Fixes: #9524
+ Closes #9525
+
+- tool_libinfo: silence "different 'const' qualifiers" in qsort()
+
+ MSVC 15.0.30729.1 warned about it
+
+ Follow-up to dd2a024323dcc
+
+ Closes #9522
+
+- [Patrick Monnerat brought this change]
+
+ docs: tell about disabled protocols in CURLOPT_*PROTOCOLS_STR.
+
+ Disabled protocols are now handled as if they were unknown.
+ Also update the possible protocol list.
+
+- [Patrick Monnerat brought this change]
+
+ cli tool: do not use disabled protocols
+
+ As they are now rejected by the library, take care of not passing
+ disabled protocol names to CURLOPT_PROTOCOLS_STR and
+ CURLOPT_REDIR_PROTOCOLS_STR.
+
+ Rather than using the CURLPROTO_* constants, dynamically assign protocol
+ numbers based on the order they are listed by curl_version_info().
+
+ New type proto_set_t implements prototype bit masks: it should therefore
+ be large enough to accomodate all library-enabled protocols. If not,
+ protocol numbers beyond the bit count of proto_set_t are recognized but
+ "inaccessible": when used, a warning is displayed and the value is
+ ignored. Should proto_set_t overflows, enabled protocols are reordered to
+ force those having a public CURLPROTO_* representation to be accessible.
+
+ Code has been added to subordinate RTMP?* protocols to the presence of
+ RTMP in the enabled protocol list, being returned by curl_version_info()
+ or not.
+
+- [Patrick Monnerat brought this change]
+
+ setopt: use the handler table for protocol name to number conversions
+
+ This also returns error CURLE_UNSUPPORTED_PROTOCOL rather than
+ CURLE_BAD_FUNCTION_ARGUMENT when a listed protocol name is not found.
+
+ A new schemelen parameter is added to Curl_builtin_scheme() to support
+ this extended use.
+
+ Note that disabled protocols are not recognized anymore.
+
+ Tests adapted accordingly.
+
+ Closes #9472
+
+- altsvc: use 'h3' for h3
+
+ Since the official and real version has been out for a while now and servers
+ are deployed out there using it, there is no point in sticking to h3-29.
+
+ Reported-by: ウさん
+ Fixes #9515
+ Closes #9516
+
+Jay Satiro (16 Sep 2022)
+- [chemodax brought this change]
+
+ winbuild: Use NMake batch-rules for compilation
+
+ - Invoke cl compiler once for each group of .c files.
+
+ This is significantly improves compilation time. For example in my
+ environment: 40 s --> 20 s.
+
+ Prior to this change cl was invoked per .c file.
+
+ Closes https://github.com/curl/curl/pull/9512
+
+Daniel Stenberg (16 Sep 2022)
+- ws: the infof() flags should be %zu
+
+ Follow-up to e5e9e0c5e49ae0
+
+ Closes #9518
+
+- curl: warn for --ssl use, considered insecure
+
+ Closes #9519
+
+- [Sergey Bronnikov brought this change]
+
+ curl_escape.3: fix typo
+
+ lengthf -> length
+
+ Closes #9517
+
+- mailmap: merge Philip Heiduck's two addresses into one
+
+- test1948: verify PUT + POST reusing the same handle
+
+ Reproduced #9507, verifies the fix
+
+- setopt: when POST is set, reset the 'upload' field
+
+ Reported-by: RobBotic1 on github
+ Fixes #9507
+ Closes #9511
+
+Marc Hoersken (15 Sep 2022)
+- github: initial CODEOWNERS setup for CI configuration
+
Reviewed-by: Daniel Stenberg
- Closes #8053
-
-Daniel Stenberg (25 Nov 2021)
-- KNOWN_BUGS: 5.6 make distclean loops forever
-
- Reported-by: David Bohman
- Closes #7716
-
-- KNOWN_BUGS: add one, remove one
-
- - 5.10 SMB tests fail with Python 2
-
- Just use python 3.
-
- + 5.10 curl hangs on SMB upload over stdin
-
- Closes #7896
-
-- urlapi: provide more detailed return codes
-
- Previously, the return code CURLUE_MALFORMED_INPUT was used for almost
- 30 different URL format violations. This made it hard for users to
- understand why a particular URL was not acceptable. Since the API cannot
- point out a specific position within the URL for the problem, this now
- instead introduces a number of additional and more fine-grained error
- codes to allow the API to return more exactly in what "part" or section
- of the URL a problem was detected.
-
- Also bug-fixes curl_url_get() with CURLUPART_ZONEID, which previously
- returned CURLUE_OK even if no zoneid existed.
-
- Test cases in 1560 have been adjusted and extended. Tests 1538 and 1559
- have been updated.
-
- Updated libcurl-errors.3 and curl_url_strerror() accordingly.
-
- Closes #8049
-
-- urlapi: make Curl_is_absolute_url always use MAX_SCHEME_LEN
-
- Instad of having all callers pass in the maximum length, always use
- it. The passed in length is instead used only as the length of the
- target buffer for to storing the scheme name in, if used.
-
- Added the scheme max length restriction to the curl_url_set.3 man page.
-
- Follow-up to 45bcb2eaa78c79
-
- Closes #8047
+ Reviewed-by: Marcel Raad
+ Reviewed-by: Max Dymond
-- [Jay Satiro brought this change]
+ Closes #9505
+
+ [skip ci]
+
+- [Philip Heiduck brought this change]
+
+ CI: optimize some more dependencies install
+
+ Signed-off-by: Philip Heiduck <pheiduck@Philips-MBP.lan>
+
+ Closes #9500
+
+- CI/GHA: merge event-based and NSS into new linux workflow
+
+ Continue work on merging all Linux workflows into one file.
+
+ Follow up to #9501
+ Closes #9506
+
+Daniel Stenberg (15 Sep 2022)
+- include/curl/websockets.h: add extern "C" for C++
+
+ Reported-by: n0name321 on github
+ Fixes #9509
+ Closes #9510
+
+- lib1560: extended to verify detect/reject of unknown schemes
+
+ ... when no guessing is allowed.
+
+- urlapi: detect scheme better when not guessing
+
+ When the parser is not allowed to guess scheme, it should consider the
+ word ending at the first colon to be the scheme, independently of number
+ of slashes.
+
+ The parser now checks that the scheme is known before it counts slashes,
+ to improve the error messge for URLs with unknown schemes and maybe no
+ slashes.
+
+ When following redirects, no scheme guessing is allowed and therefore
+ this change effectively prevents redirects to unknown schemes such as
+ "data".
+
+ Fixes #9503
+
+- strerror: improve two URL API error messages
+
+Marc Hoersken (14 Sep 2022)
+- CI/GHA: merge bearssl and hyper into initial linux workflow
+
+ Begin work on merging all Linux workflows into one file.
- cmake: warn on use of the now deprecated symbols
-
- Follow-up to 9108da2c26d
-
- Closes #8052
-
-- [Kevin Burke brought this change]
-
- tests/CI.md: add more information on CI environments
-
- Fixes #8012
- Closes #8022
-
-- cmake: private identifiers use CURL_ instead of CMAKE_ prefix
-
- Since the 'CMAKE_' prefix is reserved for cmake's own private use.
- Ref: https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html
-
- Reported-by: Boris Rasin
- Fixes #7988
- Closes #8044
-
-- urlapi: reject short file URLs
-
- file URLs that are 6 bytes or shorter are not complete. Return
- CURLUE_MALFORMED_INPUT for those. Extended test 1560 to verify.
-
- Triggered by #8041
- Closes #8042
-
-- curl: improve error message for --head with -J
-
- ... it now focuses on the "output of headers" combined with the
- --remote-header-name option, as that is actually the problem. Both
- --head and --include can output headers.
-
- Reported-by: nimaje on github
- Fixes #7987
- Closes #8045
+ Closes #9501
+Daniel Stenberg (14 Sep 2022)
- RELEASE-NOTES: synced
-- [Stefan Eissing brought this change]
+- cmake: define BUILDING_LIBCURL in lib/CMakeLists, not config.h
- urlapi: cleanup scheme parsing
-
- Makea Curl_is_absolute_url() always leave a defined 'buf' and avoids
- copying on urls that do not start with a scheme.
-
- Closes #8043
-
-- tool_operate: only set SSH related libcurl options for SSH URLs
-
- For example, this avoids trying to find and set the known_hosts file (or
- warn for its absence) if SFTP or SCP are not used.
-
- Closes #8040
-
-- [Jacob Hoffman-Andrews brought this change]
-
- rustls: remove comment about checking handshaking
-
- The comment is incorrect in two ways:
- - It says the check needs to be last, but the check is actually first.
- - is_handshaking actually starts out true.
-
- Closes #8038
-
-Marcel Raad (20 Nov 2021)
-- openssl: use non-deprecated API to read key parameters
-
- With OpenSSL 3.0, the parameters are read directly from the `EVP_PKEY`
- using `EVP_PKEY_get_bn_param`.
-
- Closes https://github.com/curl/curl/pull/7893
-
-- openssl: reduce code duplication
-
- `BN_print`'s `BIGNUM` parameter has been `const` since OpenSSL 0.9.4.
-
- Closes https://github.com/curl/curl/pull/7893
-
-- openssl: remove `RSA_METHOD_FLAG_NO_CHECK` handling if unavailable
-
- The flag has been deprecated without replacement in OpenSSL 3.0.
-
- Closes https://github.com/curl/curl/pull/7893
-
-- openssl: remove usage of deprecated `SSL_get_peer_certificate`
-
- The function name was changed to `SSL_get1_peer_certificate` in OpenSSL
- 3.0.
-
- Closes https://github.com/curl/curl/pull/7893
-
-Daniel Stenberg (19 Nov 2021)
-- page-footer: fix typo
-
- Closes #8036
-
-- http: enable haproxy support for hyper backend
-
- This is done by having native code do the haproxy header output before
- hyper issues its request. The little downside with this approach is that
- we need the entire Curl_buffer_send() function built, which is otherwise
- not used for hyper builds.
-
- If hyper ends up getting native support for the haproxy protocols we can
- backpedal on this.
-
- Enables test 1455 and 1456
-
- Closes #8034
-
-- [Bernhard Walle brought this change]
-
- configure: fix runtime-lib detection on macOS
-
- With a non-standard installation of openssl we get this error:
-
- checking run-time libs availability... failed
- configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lnghttp2 -lssl -lcrypto -lssl -lcrypto -lz
-
- There's already code to set LD_LIBRARY_PATH on Linux, so set
- DYLD_LIBRARY_PATH equivalent on macOS.
-
- Closes #8028
+ Since the config file might also get included by the tool code at times.
+ This syncs with how other builds do it.
-- [Don J Olmstead brought this change]
+ Closes #9498
+
+- tool_hugehelp: make hugehelp a blank macro when disabled
+
+ Closes #9485
+
+- getparameter: return PARAM_MANUAL_REQUESTED for -M even when disabled
+
+ ... to improve the output in this situation. Now it doesn't say "option
+ unknown" anymore.
+
+ Closes #9485
+
+- setopt: fix compiler warning
+
+ Follow-up to cd5ca80f00d2
+
+ closes #9502
+
+- [Philip Heiduck brought this change]
+
+ CI: skip make, do make install at once for dependencies
+
+ Signed-off-by: Philip Heiduck <pheiduck@Philips-MBP.lan>
+
+ Closes #9477
+
+- formdata: typecast the va_arg return value
+
+ To avoid "enumerated type mixed with another type" warnings
+
+ Follow-up from 0f52dd5fd5aa3592691a
+
+ Closes #9499
+
+- RELEASE-PROCEDURE.md: mention patch releases
+
+ - When to make them and how to argue for them
+ - Refreshed the release date list
+
+ Closes #9495
+
+- urldata: use a curl_prot_t type for storing protocol bits
+
+ This internal-use-only storage type can be bumped to a curl_off_t once
+ we need to use bit 32 as the previous 'unsigned int' can no longer hold
+ them all then.
+
+ The websocket protocols take bit 30 and 31 so they are the last ones
+ that fit within 32 bits - but cannot properly be exported through APIs
+ since those use *signed* 32 bit types (long) in places.
+
+ Closes #9481
+
+- [zhanghu on xiaomi brought this change]
+
+ formdata: fix warning: 'CURLformoption' is promoted to 'int'
+
+ curl/lib/formdata.c: In function 'FormAdd':
+ curl/lib/formdata.c:249:31: warning: 'CURLformoption' is promoted to 'int' when passed through '...'
+ 249 | option = va_arg(params, CURLformoption);
+ | ^
+ curl/lib/formdata.c:249:31: note: (so you should pass 'int' not 'CURLformoption' to 'va_arg')
+ curl/lib/formdata.c:249:31: note: if this code is reached, the program will abort
+
+ Closes #9484
+
+- CURLOPT_CONNECT_ONLY.3: for ws(s) as well
+
+ and correct the version number for when that support comes. Even if it
+ is still experimental for WebSocket.
+
+ Closes #9487
+
+- tool_operate: avoid a few #ifdefs for disabled-libcurl builds
+
+ By providing empty macros in the header file instead, the code gets
+ easier to read and yet is disabled on demand.
+
+ Closes #9486
+
+- [a1346054 on github brought this change]
+
+ scripts: use `grep -E` instead of `egrep`
+
+ egrep is deprecated
+
+ Closes #9491
+
+- [Hayden Roche brought this change]
+
+ wolfSSL: fix session management bug.
+
+ Prior to this commit, non-persistent pointers were being used to store
+ sessions. When a WOLFSSL object was then freed, that freed the session
+ it owned, and thus invalidated the pointer held in curl's cache. This
+ commit makes it so we get a persistent (deep copied) session pointer
+ that we then add to the cache. Accordingly, wolfssl_session_free, which
+ was previously a no-op, now needs to actually call SSL_SESSION_free.
+
+ This bug was discovered by a wolfSSL customer.
+
+ Closes #9492
+
+- docs: use "WebSocket" in singular
+
+ This is how the RFC calls the protocol. Also rename the file in docs/ to
+ WEBSOCKET.md in uppercase to match how we have done it for many other
+ protocol docs in similar fashion.
+
+ Add the WebSocket docs to the tarball.
+
+ Closes #9496
+
+Marcel Raad (12 Sep 2022)
+- ws: fix build without `USE_WEBSOCKETS`
+
+ The curl.h include is required unconditionally.
- cmake: don't set _USRDLL on a static Windows build
-
- Closes #8030
-
-- page-footer: document more environment variables
-
- ... that curl might use.
-
- Closes #8027
-
-- netrc.d: edit the .netrc example to look nicer
-
- Works nicely thanks to d1828b470f43d
-
- Closes #8025
-
-- tftp: mark protocol as not possible to do over CONNECT
-
- ... and make connect_init() refusing trying to tunnel protocols marked
- as not working. Avoids a double-free.
-
- Reported-by: Even Rouault
- Fixes #8018
- Closes #8020
-
-- docs/cmdline-opts: do not say "protocols: all"
-
- Remove the lines saying "protocols: all". It makes the output in the
- manpage look funny, and the expectation is probably by default that if
- not anything is mentioned about protocols the option apply to them all.
-
- Closes #8021
-
-- curl.1: require "see also" for every documented option
-
- gen.pl now generates a warning if the "See Also" field is not filled in for a
- command line option
-
- All command line options now provide one or more related options. 167
- "See alsos" added!
-
- Closes #8019
-
-- insecure.d: expand and clarify
-
- Closes #8017
-
-- gen.pl: improve example output format
-
- Treat consecutive lines that start with a space to be "examples". They
- are output enclosed by .nf and .fi
-
- Updated form.d to use this new fanciness
-
- Closes #8016
-
-- Revert "form-escape.d: double the back-slashes for proper man page output"
-
- This reverts commit a2d8eac04a4eb1d5a98cf24b4e5cec5cec565d27.
-
- silly me, it was intended to be one backslash!
-
-- form-escape.d: double the back-slashes for proper man page output
-
-- page-footer: add a mention of how to report bugs to the man page
+- ws: add missing curl.h include
+
+ A conflict between commits 664249d0952 and e5839f4ee70 broke the build.
+
+Daniel Stenberg (12 Sep 2022)
+- ws: fix an infof() call to use %uz for size_t output
+
+ Detected by Coverity, CID 1514665.
+
+ Closes #9480
+
+Marcel Raad (12 Sep 2022)
+- curl_setup: include only system.h instead of curl.h
+
+ As done before commit 9506d01ee50.
+
+ Ref: https://github.com/curl/curl/pull/9375#discussion_r957010158
+ Closes https://github.com/curl/curl/pull/9453
+
+- lib: add missing limits.h includes
+
+ Closes https://github.com/curl/curl/pull/9453
+
+- lib and tests: add missing curl.h includes
+
+ Closes https://github.com/curl/curl/pull/9453
+
+- curl_setup: include curl.h after platform setup headers
+
+ The platform setup headers might set definitions required for the
+ includes in curl.h.
+
+ Ref: https://github.com/curl/curl/pull/9375#discussion_r956998269
+ Closes https://github.com/curl/curl/pull/9453
+
+Daniel Stenberg (12 Sep 2022)
+- [Benjamin Loison brought this change]
+
+ docs: correct missing uppercase in Markdown files
+
+ To detect these typos I used:
+
+ ```
+ clear && grep -rn '\. [a-z]' . | uniq | grep -v '\. lib' | grep -v '[0-9]\. [a-z]' | grep -v '\.\. [a-z]' | grep -v '\. curl' | grep -v 'e.g. [a-z]' | grep -v 'eg. [a-z]' | grep -v '\etc. [a-z]' | grep -v 'i.e\. [a-z]' | grep --color=always '\. [a-z]' | grep '\.md'
+ ```
+
+ Closes #9474
+
+- tool_setopt: use better English in --libcurl source comments
+
+ Like this:
+
+ XYZ was set to an object pointer
+ ABC was set to a function pointer
+
+ Closes #9475
+
+- setopt: make protocol2num use a curl_off_t for the protocol bit
+
+ ... since WSS does not fit within 32 bit.
+
+ Bug: https://github.com/curl/curl/pull/9467#issuecomment-1243014887
+ Closes #9476
- RELEASE-NOTES: synced
-
- and bump to 7.81.0-DEV
+
+- configure: polish the grep -E message a bit further
+
+ Suggested-by: Emanuele Torre
+ Closes #9473
+
+- GHA: add a gcc-11 -O3 build using OpenSSL
+
+ Since -O3 might trigger other warnings
+
+ Closes #9454
- [Patrick Monnerat brought this change]
- mime: use percent-escaping for multipart form field and file names
-
- Until now, form field and file names where escaped using the
- backslash-escaping algorithm defined for multipart mails. This commit
- replaces this with the percent-escaping method for URLs.
-
- As this may introduce incompatibilities with server-side applications, a
- new libcurl option CURLOPT_MIME_OPTIONS with bitmask
- CURLMIMEOPT_FORMESCAPE is introduced to revert to legacy use of
- backslash-escaping. This is controlled by new cli tool option
- --form-escape.
-
- New tests and documentation are provided for this feature.
-
- Reported by: Ryan Sleevi
- Fixes #7789
- Closes #7805
-
-- [Kevin Burke brought this change]
-
- zuul.d: update rustls-ffi to version 0.8.2
-
- This version fixes errors with ALPN negotiation in rustls, which is
- necessary for HTTP/2 support. For more information see the rustls-ffi
- changelog.
-
- Closes #8013
-
-- configure: better diagnostics if hyper is built wrong
-
- If hyper is indeed present in the specified directory but couldn't be
- used to find the correct symbol, then offer a different error message to
- better help the user understand the issue.
-
- Suggested-by: Jacob Hoffman-Andrews
- Fixes #8001
- Closes #8005
-
-- test1939: require proxy support to run
-
- Follow-up to f0b7099a10d1a
-
- Closes #8011
-
-- test302[12]: run only with the libssh2 backend
-
- ... as the others don't support --hostpubsha256
-
- Reported-by: Paul Howarth
- Fixes #8009
- Closes #8010
-
-- runtests: make the SSH library a testable feature
-
- libssh2, libssh and wolfssh
-
-- [Jacob Hoffman-Andrews brought this change]
-
- rustls: read of zero bytes might be okay
-
- When we're reading out plaintext from rustls' internal buffers, we might
- get a read of zero bytes (meaning a clean TCP close, including
- close_notify). However, we shouldn't return immediately when that
- happens, since we may have already copied out some plaintext bytes.
- Break out of the loop when we get a read of zero bytes, and figure out
- which path we're dealing with.
-
- Acked-by: Kevin Burke
-
- Closes #8003
-
-- [Jacob Hoffman-Andrews brought this change]
-
- rustls: remove incorrect EOF check
-
- The update to rustls-ffi 0.8.0 changed handling of EOF and close_notify.
- From the CHANGELOG:
-
- > Handling of unclean close and the close_notify TLS alert. Mirroring
- > upstream changes, a rustls_connection now tracks TCP closed state like
- > so: rustls_connection_read_tls considers a 0-length read from its
- > callback to mean "TCP stream was closed by peer." If that happens
- > before the peer sent close_notify, rustls_connection_read will return
- > RUSTLS_RESULT_UNEXPECTED_EOF once the available plaintext bytes are
- > exhausted. This is useful to protect against truncation attacks. Note:
- > some TLS implementations don't send close_notify. If you are already
- > getting length information from your protocol (e.g. Content-Length in
- > HTTP) you may choose to ignore UNEXPECTED_EOF so long as the number of
- > plaintext bytes was as expected.
-
- That means we don't need to check for unclean EOF in `cr_recv()`,
- because `process_new_packets()` will give us an error if appropriate.
-
- Closes #8003
-
-- lib1939: make it endure torture tests
-
- Follow-up to f0b7099a10d1a
-
- Closes #8007
-
-- azure: make the "w/o HTTP/SMTP/IMAP" build disable SSL proper
-
- The configure line would previously depend on a configure mistake using
- --without-openssl that is fixed and now this configure line needs
- adjusting to use --without-ssl.
-
- Follow-up to b589696f0312d
-
- Closes #8006
-
-- [Jacob Hoffman-Andrews brought this change]
-
- configure: add -lm to configure for rustls build.
-
- Note: The list of libraries that rustc tells us we need to include is
- longer, but also includes some more platform-specific libraries that I
- am not sure how to effectively incorporate. Adding just -lm seems to
- solve an immediate problem, so I'm adding just that.
-
- Closes #8002
-
-- curl_share_setopt.3: refer to CURLSHOPT_USERDATA(3) properly
-
-- curl_share_setopt.3: split out options into their own manpages
-
- CURLSHOPT_LOCKFUNC.3
- CURLSHOPT_SHARE.3
- CURLSHOPT_UNLOCKFUNC.3
- CURLSHOPT_UNSHARE.3
- CURLSHOPT_USERDATA.3
-
- Closes #7998
-
-- http_proxy: make Curl_connect_done() work for proxy disabled builds
-
- ... by making it an empty macro then.
-
- Follow-up to f0b7099a10d1a
- Reported-by: Vincent Grande
- Fixes #7995
- Closes #7996
-
-- Curl_connect_done: handle being called twice
-
- Follow-up to f0b7099a10d1a7c
-
- When torture testing 1021, it turns out the Curl_connect_done function
- might be called twice and that previously then wrongly cleared the HTTP
- pointer in the second invoke.
-
- Closes #7999
-
-- [Stan Hu brought this change]
-
- configure: don't enable TLS when --without-* flags are used
-
- Previously specifying `--without-gnutls` would unexpectedly attempt to
- compile with GnuTLS, effectively interpreting this as
- `--with-gnutls`. This caused a significant amount of confusion when
- `libcurl` was built with SSL disabled since GnuTLS wasn't present.
-
- 68d89f24 dropped the `--without-*` options from the configure help, but
- `AC_ARG_WITH` still defines these flags automatically. As
- https://www.gnu.org/software/autoconf/manual/autoconf-2.60/html_node/External-Software.html
- describes, the `action-if-given` is called when the user specifies
- `--with-*` or `--without-*` options.
-
- To prevent this confusion, we make the `--without` flag do the right
- thing by ignoring the value if it set to "no".
-
- Closes #7994
-
-- [Rikard Falkeborn brought this change]
-
- docs/checksrc: Add documentation for STRERROR
-
- Closes #7991
-
-- vtls/rustls: adapt to the updated rustls_version proto
-
- Closes #7956
-
-- [Kevin Burke brought this change]
-
- vtls/rustls: handle RUSTLS_RESULT_PLAINTEXT_EMPTY
-
- Previously we'd return CURLE_READ_ERROR if we received this, instead
- of triggering the error handling logic that's present in the next if
- block down.
-
- After this change, curl requests to https://go.googlesource.com using
- HTTP/2 complete successfully.
-
- Fixes #7949
- Closes #7948
-
-- [Kevin Burke brought this change]
-
- zuul: update build environment for rustls-ffi 0.8.0
-
-- [Kevin Burke brought this change]
-
- vtls/rustls: update to compile with rustls-ffi v0.8.0
-
- Some method names, as well as the generated library name, were changed
- in a recent refactoring.
-
- Further, change the default configuration instructions to check for
- Hyper in either "target/debug" or "target/release" - the latter
- contains an optimized build configuration.
-
- Fixes #7947
- Closes #7948
+ content_encoding: use writer struct subclasses for different encodings
+
+ The variable-sized encoding-specific storage of a struct contenc_writer
+ currently relies on void * alignment that may be insufficient with
+ regards to the specific storage fields, although having not caused any
+ problems yet.
+
+ In addition, gcc 11.3 issues a warning on access to fields of partially
+ allocated structures that can occur when the specific storage size is 0:
+
+ content_encoding.c: In function ‘Curl_build_unencoding_stack’:
+ content_encoding.c:980:21: warning: array subscript ‘struct contenc_writer[0]’ is partly outside array bounds of ‘unsigned char[16]’ [-Warray-bounds]
+ 980 | writer->handler = handler;
+ | ~~~~~~~~~~~~~~~~^~~~~~~~~
+ In file included from content_encoding.c:49:
+ memdebug.h:115:29: note: referencing an object of size 16 allocated by ‘curl_dbg_calloc’
+ 115 | #define calloc(nbelem,size) curl_dbg_calloc(nbelem, size, __LINE__, __FILE__)
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ content_encoding.c:977:60: note: in expansion of macro ‘calloc’
+ 977 | struct contenc_writer *writer = (struct contenc_writer *)calloc(1, sz);
+
+ To solve both these problems, the current commit replaces the
+ contenc_writer/params structure pairs by "subclasses" of struct
+ contenc_writer. These are structures that contain a contenc_writer at
+ offset 0. Proper field alignment is therefore handled by the compiler and
+ full structure allocation is performed, silencing the warnings.
+
+ Closes #9455
+
+- configure: correct the wording when checking grep -E
+
+ The check first checks that grep -E works, and only as a fallback tries
+ to find and use egrep. egrep is deprecated.
+
+ This change only corrects the output wording, not the checks themselves.
+
+ Closes #9471
+
+Viktor Szakats (10 Sep 2022)
+- websockets: sync prototypes in docs with implementation [ci skip]
+
+ Docs for the new send/recv functions synced with the committed versions
+ of these.
+
+ Closes #9470
+
+Daniel Stenberg (10 Sep 2022)
+- setopt: make protocols2num() work with websockets
+
+ So that CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR can
+ specify those as well.
+
+ Reported-by: Patrick Monnerat
+ Bug: https://curl.se/mail/lib-2022-09/0016.html
+ Closes #9467
+
+- curl/websockets.h: remove leftover bad typedef
+
+ Just a leftover trace of a development thing that did not stay like
+ that.
+
+ Reported-by: Marc Hörsken
+ Fixes #9465
+ Cloes #9466
+
+Marcel Raad (10 Sep 2022)
+- [Orgad Shaneh brought this change]
+
+ fix Cygwin/MSYS compilation
+
+ _getpid is Windows API. On Cygwin variants it should remain getpid.
+
+ Fixes #8220
+ Closes #9255
+
+Marc Hoersken (10 Sep 2022)
+- GHA: prepare workflow merge by aligning structure again
+
+ Closes #9413
+
+Daniel Stenberg (9 Sep 2022)
+- docs: the websockets symbols are added in 7.86.0
+
+ Nothing else
+
+ Closes #9459
+
+- tests/libtest/Makefile.inc: fixup merge conflict mistake
+
+- EXPERIMENTAL.md: add WebSockets
+
+- appveyor: enable websockets
+
+- cirrus: enable websockets in the windows builds
+
+- GHA: add websockets to macos, openssl3 and hyper builds
+
+- tests: add websockets tests
+
+ - add websockets support to sws
+ - 2300: first very basic websockets test
+ - 2301: first libcurl test for ws (not working yet)
+ - 2302: use the ws callback
+ - 2303: test refused upgrade
+
+- curl_ws_meta: initial implementation
+
+- curl_ws_meta.3: added docs
+
+- ws: initial websockets support
+
+ Closes #8995
+
+- version: add ws + wss
+
+- libtest/lib1560: test basic websocket URL parsing
+
+- configure: add --enable-websockets
+
+- docs/WebSockets.md: docs
+
+- test415: verify Content-Length parser with control code + negative value
+
+- strtoofft: after space, there cannot be a control code
+
+ With the change from ISSPACE() to ISBLANK() this function no longer
+ deals with (ignores) control codes the same way, which could lead to
+ this function returning unexpected values like in the case of
+ "Content-Length: \r-12354".
+
+ Follow-up to 6f9fb7ec2d7cb389a0da5
+
+ Detected by OSS-fuzz
+ Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51140
+ Assisted-by: Max Dymond
+ Closes #9458
+
+- headers: reset the requests counter at transfer start
+
+ If not, reusing an easy handle to do a subsequent transfer would
+ continue the counter from the previous invoke, which then would make use
+ of the header API difficult/impossible as the request counter
+ mismatched.
+
+ Add libtest 1947 to verify.
+
+ Reported-by: Andrew Lambert
+ Fixes #9424
+ Closes #9447
+
+Jay Satiro (8 Sep 2022)
+- header: define public API functions as extern c
+
+ Prior to this change linker errors would occur if curl_easy_header or
+ curl_easy_nextheader was called from a C++ unit.
+
+ Bug: https://github.com/curl/curl/issues/9424#issuecomment-1238818007
+ Reported-by: Andrew Lambert
+
+ Closes https://github.com/curl/curl/pull/9446
+
+Daniel Stenberg (8 Sep 2022)
+- http2: make nghttp2 less picky about field whitespace
+
+ In nghttp2 1.49.0 it returns error on leading and trailing whitespace in
+ header fields according to language in the recently shipped RFC 9113.
+
+ nghttp2 1.50.0 introduces an option to switch off this strict check and
+ this change enables this option by default which should make curl behave
+ more similar to how it did with nghttp2 1.48.0 and earlier.
+
+ We might want to consider making this an option in the future.
+
+ Closes #9448
- RELEASE-NOTES: synced
-
- and bump the version to 7.80.1
-
-- multi: shut down CONNECT in Curl_detach_connnection
-
- ... to prevent a lingering pointer that would lead to a double-free.
-
- Added test 1939 to verify.
-
- Reported-by: Stephen M. Coakley
- Fixes #7982
- Closes #7986
-
-- curl_easy_cleanup.3: remove from multi handle first
-
- Easy handles that are used by the multi interface should be removed from
- the multi handle before they are cleaned up.
-
- Reported-by: Stephen M. Coakley
- Ref: #7982
- Closes #7983
-
-- url.c: fix the SIGPIPE comment for Curl_close
-
- Closes #7984
-
-Version 7.80.0 (10 Nov 2021)
-
-Daniel Stenberg (10 Nov 2021)
-- RELEASE-NOTES: synced
-
- for curl 7.80.0
-- THANKS: add contributors from the 7.80.0 cycle
+ And bump to 7.86.0 for the pending next release
-- [Tatsuhiro Tsujikawa brought this change]
+- [Michael Heimpold brought this change]
- ngtcp2: advertise h3 as well as h3-29
-
- Advertise h3 as well as h3-29 since some servers out there require h3
- for QUIC v1.
-
- Closes #7979
+ ftp: ignore a 550 response to MDTM
-- [Tatsuhiro Tsujikawa brought this change]
+ The 550 is overused as a return code for multiple error case, e.g.
+ file not found and/or insufficient permissions to access the file.
- ngtcp2: use QUIC v1 consistently
-
- Since we switched to v1 quic_transport_parameters codepoint in #7960
- with quictls, lets use QUIC v1 consistently.
-
- Closes #7979
+ So we cannot fail hard in this case.
-- [Tatsuhiro Tsujikawa brought this change]
+ Adjust test 511 since we now fail later.
+ Add new test 3027 which check that when MDTM failed, but the file could
+ actually be retrieved, that in this case no filetime is provided.
- ngtcp2: compile with the latest nghttp3
-
- Closes #7978
-
-Marc Hoersken (9 Nov 2021)
-- tests: add Schannel-specific tests and disable unsupported ones
-
- Adds Schannel variants of SSLpinning tests that include the option
- --ssl-revoke-best-effort to ignore certificate revocation check
- failures which is required due to our custom test CA certificate.
-
- Disable the original variants if the Schannel backend is enabled.
-
- Also skip all IDN tests which are broken while using an msys shell.
-
- This is a step to simplify test exclusions for Windows and MinGW.
-
- Reviewed-by: Jay Satiro
+ Reported-by: Michael Heimpold
+ Fixes #9357
+ Closes #9387
+
+- urlapi: leaner with fewer allocs
+
+ Slightly faster with more robust code. Uses fewer and smaller mallocs.
+
+ - remove two fields from the URL handle struct
+ - reduce copies and allocs
+ - use dynbuf buffers more instead of custom malloc + copies
+ - uses dynbuf to build the host name in reduces serial alloc+free within
+ the same function.
+ - move dedotdotify into urlapi.c and make it static, not strdup the input
+ and optimize it by checking for . and / before using strncmp
+ - remove a few strlen() calls
+ - add Curl_dyn_setlen() that can "trim" an existing dynbuf
+
+ Closes #9408
+
+Jay Satiro (7 Sep 2022)
+- setup-win32: no longer define UNICODE/_UNICODE implicitly
+
+ - If UNICODE or _UNICODE is defined but the other isn't then error
+ instead of implicitly defining it.
+
+ As Marcel pointed out it is too late at this point to make such a define
+ because Windows headers may already be included, so likely it never
+ worked. We never noticed because build systems that can make Windows
+ Unicode builds always define both. If one is defined but not the other
+ then something went wrong during the build configuration.
+
+ Bug: https://github.com/curl/curl/pull/9375#discussion_r956545272
+ Reported-by: Marcel Raad
+
+ Closes https://github.com/curl/curl/pull/9384
+
+Dan Fandrich (6 Sep 2022)
+- tests: fix tag syntax errors in test files
+
+Marc Hoersken (6 Sep 2022)
+- lib: add required Win32 setup definitions in setup-win32.h
+
+ Assisted-by: Jay Satiro
Reviewed-by: Marcel Raad
- Reviewed-by: Daniel Stenberg
- Closes #7968
-
-Daniel Stenberg (8 Nov 2021)
-- docs: NAME fixes in easy option man pages
-
- Closes #7975
-
-- [Roger Young brought this change]
-
- ftp: make the MKD retry to retry once per directory
-
- Reported-by: Roger Young
- Fixes #7967
- Closes #7976
-
-- tool_operate: reorder code to avoid compiler warning
-
- tool_operate.c(889) : warning C4701: potentially uninitialized local
- variable 'per' use
-
- Follow-up to cc71d352651a0d95
- Reported-by: Marc Hörsken
- Bug: https://github.com/curl/curl/pull/7922#issuecomment-963042676
- Closes #7971
-
-- curl_easy_perform.3: add a para about recv and send data
-
- Reported-by: Godwin Stewart
- Fixes #7973
- Closes #7974
-
-- tool_operate: fclose stream only if fopened
-
- Fixes torture test failures
- Follow-up to cc71d352651
-
- Closes #7972
-
-- libcurl-easy.3: language polish
-
-- limit-rate.d: this is average over several seconds
-
- Closes #7970
-
-- docs: reduce/avoid English contractions
-
- You're => You are
- Hasn't => Has not
- Doesn't => Does not
- Don't => Do not
- You'll => You will
- etc
-
- Closes #7930
-
-- tool_operate: fix torture leaks with etags
-
- Spotted by torture testing 343 344 345 347.
-
- Follow-up from cc71d352651a0
- Pointed-out-by: Dan Fandrich
-
- Closes #7969
-
-- [Amaury Denoyelle brought this change]
-
- ngtcp2: support latest QUIC TLS RFC9001
-
- QUIC Transport Parameters Extension has been changed between draft-29
- and latest RFC9001. Most notably, its identifier has been updated from
- 0xffa5 to 0x0039. The version is selected through the QUIC TLS library
- via the legacy codepoint.
-
- Disable the usage of legacy codepoint in curl to switch to latest
- RFC9001. This is required to be able to keep up with latest QUIC
- implementations.
-
- Acked-by: Tatsuhiro Tsujikawa
- Closes #7960
-
-- test1173: make manpage-syntax.pl spot \n errors in examples
-
-- man pages: fix backslash-n in examples
-
- ... to be proper backslash-backslash-n sequences to render nicely in man
- and on website.
-
- Follow-up to 24155569d8a
- Reported-by: Sergey Markelov
-
- Fixes https://github.com/curl/curl-www/issues/163
- Closes #7962
-
-- scripts/release-notes.pl: use out of repo links verbatim in refs
-
-- tool_operate: a failed etag save now only fails that transfer
-
- When failing to create the output file for saving an etag, only fail
- that particular single transfer and allow others to follow.
-
- In a serial transfer setup, if no transfer at all is done due to them
- all being skipped because of this error, curl will output an error
- message and return exit code 26.
-
- Added test 369 and 370 to verify.
-
- Reported-by: Earnestly on github
- Ref: #7942
- Closes #7945
-
-- [Kevin Burke brought this change]
-
- .github: retry macos "brew install" command on failure
-
- Previously we saw errors attempting to run "brew install", see
- https://github.com/curl/curl/runs/4095721123?check_suite_focus=true for
- an example, since this command is idempotent, it is safe to run again.
-
- Closes #7955
-
-- CURLOPT_ALTSVC_CTRL.3: mention conn reuse is preferred
-
- Ref: https://github.com/curl/curl/discussions/7954
-
- Closes #7957
+
+ Follow up to #9312
+ Closes #9375
+
+Daniel Stenberg (6 Sep 2022)
+- pingpong: extend the response reading error with errno
+
+ To help diagnosing the cause of the problem.
+
+ See #9380
+ Closes #9443
+
+- curl-compilers.m4: use -O2 as default optimize for clang
+
+ Not -Os
+
+ Closes #9444
+
+- tool_operate: fix msnprintfing the error message
+
+ Follow-up to 7be53774c41c59b47075fba
+
+ Coverity CID 1513717 pointed out that we cannot use sizeof() on the
+ error buffer anymore.
+
+ Closes #9440
+
+- [Emanuele Torre brought this change]
+
+ curl_ctype: add space around <= operator in ISSPACE macro
+
+ Follow-up to f65f750
+
+ Closes #9441
+
+- CURLOPT_PROXY_SSLCERT_BLOB.3: this is for HTTPS proxies
+
+ The 'protocols' listed were previously wrong.
+
+ Reported-by: ProceduralMan on github
+ Fixes #9434
+ Closes #9435
+
+- curl_ctype: convert to macros-only
+
+ This no longer provide functions, only macros. Runs faster and produces
+ smaller output.
+
+ The biggest precaution this change brings:
+
+ DO NOT use post/pre-increments when passing arguments to the macros.
+
+ Closes #9429
+
+- misc: ISSPACE() => ISBLANK()
+
+ Instances of ISSPACE() use that should rather use ISBLANK(). I think
+ somewhat carelessly used because it sounds as if it checks for space or
+ whitespace, but also includes %0a to %0d.
+
+ For parsing purposes, we should only accept what we must and not be
+ overly liberal. It leads to surprises and surprises lead to bad things.
+
+ Closes #9432
+
+- ctype: remove all use of <ctype.h>, use our own versions
+
+ Except in the test servers.
+
+ Closes #9433
+
+Marc Hoersken (5 Sep 2022)
+- cmake: skip superfluous hex2dec conversion using math expr
+
+ CMake seems to be able to compare two hex values just fine.
+ Also make sure CURL_TARGET_WINDOWS_VERSION is respected.
+
+ Assisted-by: Marcel Raad
+ Reviewed-by: Viktor Szakats
+ Reported-by: Keitagit-kun on github
+
+ Follow up to #9312
+ Fixes #9406
+ Closes #9411
+
+Daniel Stenberg (5 Sep 2022)
+- curl_easy_pause.3: unpausing is as fast as possible
+
+ Reported-by: ssdbest on github
+ Fixes #9410
+ Closes #9430
+
+- CURLOPT_DNS_INTERFACE.3: mention it works for almost all protocols
+
+ Except file.
+
+ Reported-by: ProceduralMan on github
+ Fixes #9427
+ Closes #9428
+
+- NPN: remove support for and use of
+
+ Next Protocol Negotiation is a TLS extension that was created and used
+ for agreeing to use the SPDY protocol (the precursor to HTTP/2) for
+ HTTPS. In the early days of HTTP/2, before the spec was finalized and
+ shipped, the protocol could be enabled using this extension with some
+ servers.
+
+ curl supports the NPN extension with some TLS backends since then, with
+ a command line option `--npn` and in libcurl with
+ `CURLOPT_SSL_ENABLE_NPN`.
+
+ HTTP/2 proper is made to use the ALPN (Application-Layer Protocol
+ Negotiation) extension and the NPN extension has no purposes
+ anymore. The HTTP/2 spec was published in May 2015.
+
+ Today, use of NPN in the wild should be extremely rare and most likely
+ totally extinct. Chrome removed NPN support in Chrome 51, shipped in
+ June 2016. Removed in Firefox 53, April 2017.
+
+ Closes #9307
- RELEASE-NOTES: synced
-- zuul: pin the quiche build to use an older cmake-rs
-
- The latest cmake-rs assumes cmake's --parallel works. That was added in
- cmake 3.12, but a lot of our CI builds run on Ubuntu Bionic which only
- has cmake 3.10.
-
- Fixes #7927
- Closes #7952
+ and bump the tentative next release version to 7.85.1
-- [Marc Hoersken brought this change]
+- [Samuel Henrique brought this change]
- Revert "src/tool_filetime: disable -Wformat on mingw for this file"
-
- This reverts commit 7c88fe375b15c44d77bccc9ab733b8069d228e6f.
-
- Follow up to #6535 as the pragma is obsolete with warnf
-
- Closes #7941
-
-Jay Satiro (2 Nov 2021)
-- schannel: fix memory leak due to failed SSL connection
-
- - Call schannel_shutdown if the SSL connection fails.
-
- Prior to this change schannel_shutdown (which shuts down the SSL
- connection as well as memory cleanup) was not called when the SSL
- connection failed (eg due to failed handshake).
-
- Co-authored-by: Gisle Vanem
-
- Fixes https://github.com/curl/curl/issues/7877
- Closes https://github.com/curl/curl/pull/7878
-
-Daniel Stenberg (2 Nov 2021)
-- Curl_updateconninfo: store addresses for QUIC connections too
-
- So that CURLINFO_PRIMARY_IP etc work for HTTP/3 like for other HTTP
- versions.
-
- Reported-by: Jerome Mao
- Fixes #7939
- Closes #7944
-
-- [Sergio Durigan Junior brought this change]
-
- curl.1: fix typos in the manpage
-
- s/transfering/transferring/
- s/transfered/transferred/
-
- Signed-off-by: Sergio Durigan Junior <sergiodj@sergiodj.net>
- Closes #7937
-
-Marc Hoersken (1 Nov 2021)
-- tests/smbserver.py: fix compatibility with impacket 0.9.23+
-
- impacket now performs sanity checks if the requested and to
- be served file path actually is inside the real share path.
-
- Ref: https://github.com/SecureAuthCorp/impacket/pull/1066
-
- Fixes #7924
- Closes #7935
-
-Daniel Stenberg (1 Nov 2021)
-- docs: reduce use of "very"
-
- "Very" should be avoided in most texts. If intensifiers are needed, try
- find better words instead.
-
- Closes #7936
+ configure: fail if '--without-ssl' + explicit parameter for an ssl lib
-- [Tatsuhiro Tsujikawa brought this change]
+ A side effect of a previous change to configure (576e507c78bdd2ec88)
+ exposed a non-critical issue that can happen if configure is called with
+ both '--without-ssl' and some parameter setting the use of a ssl library
+ (e.g. --with-gnutls). The configure script would end up assuming this is
+ a MultiSSL build, due to the way the case statement is written.
+
+ I have changed the order of the variables in the string concatenation
+ for the case statement and also tweaked the options so that
+ --without-ssl never turns the build into a MultiSSL one and also clearly
+ stating that there are conflicting parameters if the user sets it like
+ described above.
+
+ Closes #9414
+
+- tests/certs/scripts: insert standard curl source headers
+
+ ... including the SPDX-License-Identifier.
+
+ These omissions were not detected by the RUEUSE CI job nor the copyright.pl
+ scanners because we have a general wildcard in .reuse/dep5 for
+ "tests/certs/*".
+
+ Reported-by: Samuel Henrique
+ Fixes #9417
+ Closes #9420
+
+- [Samuel Henrique brought this change]
+
+ docs: remove mentions of deprecated '--without-openssl' config parameter
+
+ Closes #9415
+
+- [Samuel Henrique brought this change]
+
+ manpages: Fix spelling of "allows to" -> "allows one to"
+
+ References:
+ https://salsa.debian.org/lintian/lintian/-/blob/master/tags/t/typo-in-manual-page.tag
+ https://english.stackexchange.com/questions/60271/grammatical-complements-for-allow/60285#60285
+
+ Closes #9419
+
+- [Samuel Henrique brought this change]
+
+ CURLOPT_WILDCARDMATCH.3: Fix backslash escaping under single quotes
+
+ Lintian (on Debian) has been complaining about this for a while but
+ I didn't bother initially as the groff parser that we use is not
+ affected by this.
+
+ But I have now noticed that the online manpage is affected by it:
+ https://curl.se/libcurl/c/CURLOPT_WILDCARDMATCH.html
+
+ (I'm using double quotes for quoting-only down below)
+
+ The section that should be parsed as "'\'" ends up being parsed as
+ "'´".
+
+ This is due to roffit not parsing "'\\'" correctly, which is fine
+ as the "correct" way of writing "'\'" is "'\e'" instead.
+
+ Note that this fix is not enough to fix the online manpage at
+ curl's website, as roffit seems to parse it wrongly either way.
+
+ My intent is to at least fix the manpage so that roffit can
+ be changed to parse "'\e'" correctly (although I suggest making
+ roffit parse both ways correctly, since that's what groff does).
+
+ More details at:
+ https://bugs.debian.org/966803
+ https://salsa.debian.org/lintian/lintian/-/blob/930b18e4b28b7540253f458ef42a884cca7965c3/tags/a/acute-accent-in-manual-page.tag
+
+ Closes #9418
+
+- tool_operate: reduce errorbuffer allocs
+
+ - parallel transfers: only alloc and keep errorbuffers in memory for
+ actual "live" transfers and not for the ones in the pending queue
+
+ - serial transfers: reuse the same fixed buffer for all transfers, not
+ allocated at all.
+
+ Closes #9394
+
+Viktor Szakats (31 Aug 2022)
+- misc: spelling fixes
+
+ Found using codespell 2.2.1.
+
+ Also delete the redundant protocol designator from an archive.org URL.
- ngtcp2: specify the missing required callback functions
-
- Closes #7929
-
-- CURLOPT_[PROXY]_SSL_CIPHER_LIST.3: bold instead of quote
-
- Bold the example ciphers instead of using single quotes, which then also
- avoids the problem of how to use single quotes when first in a line.
-
- Also rephrased the pages a little.
-
- Reported-by: Sergio Durigan Junior
- Ref: #7928
- Closes #7934
-
-- gen.pl: replace leading single quotes with \(aq
-
- ... and allow single quotes to be used "normally" in the .d files.
-
- Makes the output curl.1 use better nroff.
-
- Reported-by: Sergio Durigan Junior
- Ref: #7928
- Closes #7933
-
-Marc Hoersken (1 Nov 2021)
-- tests: kill some test servers afterwards to avoid locked logfiles
-
Reviewed-by: Daniel Stenberg
- Closes #7925
-
-Daniel Stenberg (1 Nov 2021)
-- smooth-gtk-thread.c: enhance the mutex lock use
-
- Reported-by: ryancaicse on github
- Fixes #7926
- Closes #7931
-
-Marc Hoersken (31 Oct 2021)
-- CI/runtests.pl: restore -u flag, but remove it from CI runs
-
- This makes it possible to use -u again for local testing,
- but removes the flag from CI config files and make targets.
-
+ Closes #9403
+
+Daniel Stenberg (31 Aug 2022)
+- tool_progress: remove 'Qd' from the parallel progress bar
+
+ The "queued" value is no longer showing anything useful to the user. It
+ is an internal number of transfers waiting at that moment.
+
+ Closes #9389
+
+- tool_operate: prevent over-queuing in parallel mode
+
+ When doing a huge amount of parallel transfers, we must not add them to
+ the per_transfer list frivolously since they all use memory after all.
+ This was previous done without really considering millions or billions
+ of transfers. Massive parallelism would use a lot of memory for no good
+ purpose.
+
+ The queue is now limited to twice the paralleism number.
+
+ This makes the 'Qd' value in the parallel progress meter mostly useless
+ for users, but works for now for us as a debug display.
+
+ Reported-by: justchen1369 on github
+ Fixes #8933
+ Closes #9389
+
+Viktor Szakats (31 Aug 2022)
+- cmake: fix original MinGW builds
+
+ 1. Re-enable `HAVE_GETADDRINFO` detection on Windows
+
+ Commit d08ee3c83d6bd416aef62ff844c98e47c4682429 (in 2013) added logic
+ that automatically assumed `getaddrinfo()` to be present for builds
+ with IPv6 enabled. As it turns out, certain toolchains (e.g. original
+ MinGW) by default target older Windows versions, and thus do not
+ support `getaddrinfo()` out of the box. The issue was masked for
+ a while by CMake builds forcing a newer Windows version, but that
+ logic got deleted in commit 8ba22ffb2030ed91312fc8634e29516cdf0a9761.
+ Since then, some CI builds started failing due to IPv6 enabled,
+ `HAVE_GETADDRINFO` set, but `getaddrinfo()` in fact missing.
+
+ It also turns out that IPv6 works without `getaddrinfo()` since commit
+ 67a08dca27a6a07b36c7f97252e284ca957ff1a5 (from 2019, via #4662). So,
+ to resolve all this, we can now revert the initial commit, thus
+ restoring `getaddrinfo()` detection and support IPv6 regardless of its
+ outcome.
+
+ Reported-by: Daniel Stenberg
+
+ 2. Omit `bcrypt` with original MinGW
+
+ Original (aka legacy/old) MinGW versions do not support `bcrypt`
+ (introduced with Vista). We already have logic to handle that in
+ `lib/rand.c` and autotools builds, where we do not call the
+ unsupported API and do not link `bcrypt`, respectively, when using
+ original MinGW.
+
+ This patch ports that logic to CMake, fixing the link error:
+ `c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot find -lbcrypt`
+
+ Ref: https://ci.appveyor.com/project/curlorg/curl/builds/44624888/job/40vle84cn4vle7s0#L508
+ Regression since 76172511e7adcf720f4c77bd91f49278300ec97e
+
+ Fixes #9214
+ Fixes #9393
+ Fixes #9395
+ Closes #9396
+
+Version 7.85.0 (31 Aug 2022)
+
+Daniel Stenberg (31 Aug 2022)
+- RELEASE-NOTES: synced
+
+ curl 7.85.0 release
+
+- THANKS: add contributors from the 7.85.0 release
+
+- getparam: correctly clean args
+
+ Follow-up to bf7e887b2442783ab52
+
+ The previous fix for #9128 was incomplete and caused #9397.
+
+ Fixes #9397
+ Closes #9399
+
+- zuul: remove the clang-tidy job
+
+ Turns out we don't see the warnings, but the warnings right now are
+ plain ridiculous and unhelpful so we can just as well just kill this
+ job.
+
+ Closes #9390
+
+- cmake: set feature PSL if present
+
+ ... make test 1014 pass when libpsl is used.
+
+ Closes #9391
+
+- lib530: simplify realloc failure exit path
+
+ To make code analyzers happier
+
+ Closes #9392
+
+- [Orgad Shaneh brought this change]
+
+ tests: add tests for netrc login/password combinations
+
+ Covers the following PRs:
+
+ - #9066
+ - #9247
+ - #9248
+
+ Closes #9256
+
+- [Orgad Shaneh brought this change]
+
+ url: really use the user provided in the url when netrc entry exists
+
+ If the user is specified as part of the URL, and the same user exists
+ in .netrc, Authorization header was not sent at all.
+
+ The user and password fields were assigned in conn->user and password
+ but the user was not assigned to data->state.aptr, which is the field
+ that is used in output_auth_headers and friends.
+
+ Fix by assigning the user also to aptr.
+
+ Amends commit d1237ac906ae7e3cd7a22c3a2d3a135a97edfbf5.
+
+ Fixes #9243
+
+- [Orgad Shaneh brought this change]
+
+ netrc: Use the password from lines without login
+
+ If netrc entry has password with empty login, use it for any username.
+
+ Example:
+ .netrc:
+ machine example.com password 123456
+
+ curl -vn http://user@example.com/
+
+ Fix it by initializing state_our_login to TRUE, and reset it only when
+ finding an entry with the same host and different login.
+
+ Closes #9248
+
+- [Jay Satiro brought this change]
+
+ url: treat missing usernames in netrc as empty
+
+ - If, after parsing netrc, there is a password with no username then
+ set a blank username.
+
+ This used to be the case prior to 7d600ad (precedes 7.82). Note
+ parseurlandfillconn already does the same thing for URLs.
+
+ Reported-by: Raivis <standsed@users.noreply.github.com>
+ Testing-by: Domen Kožar
+
+ Fixes https://github.com/curl/curl/issues/8653
+ Closes #9334
+ Closes #9066
+
+- test8: verify that "ctrl-byte cookies" are ignored
+
+- cookie: reject cookies with "control bytes"
+
+ Rejects 0x01 - 0x1f (except 0x09) plus 0x7f
+
+ Reported-by: Axel Chong
+
+ Bug: https://curl.se/docs/CVE-2022-35252.html
+
+ CVE-2022-35252
+
+ Closes #9381
+
+- libssh: ignore deprecation warnings
+
+ libssh 0.10.0 marks all SCP functions as "deprecated" which causes
+ compiler warnings and errors in our CI jobs and elsewhere. Ignore
+ deprecation warnings if 0.10.0 or later is found in the build.
+
+ If they actually remove the functions at a later point, then someone can
+ deal with that pain and functionality break then.
+
+ Fixes #9382
+ Closes #9383
+
+- Revert "schannel: when importing PFX, disable key persistence"
+
+ This reverts commit 70d010d285315e5f1cad6bdb4953e167b069b692.
+
+ Due to further reports in #9300 that indicate this commit might
+ introduce problems.
+
+- multi: use larger dns hash table for multi interface
+
+ Have curl_multi_init() use a much larger DNS hash table than used for
+ the easy interface to scale and perform better when used with _many_
+ host names.
+
+ curl_share_init() sets an in-between size.
+
+ Inspired-by: Ivan Tsybulin
+ See #9340
+ Closes #9376
+
+Marc Hoersken (28 Aug 2022)
+- CI/runtests.pl: add param for dedicated curl to talk to APIs
+
+ This should make it possible to also report test failures
+ if our freshly build curl binary is not fully functional.
+
Reviewed-by: Daniel Stenberg
-
- Partially reverts #7841
- Closes #7921
+ Closes #9360
+
+Daniel Stenberg (27 Aug 2022)
+- [Jacob Tolar brought this change]
+
+ openssl: add cert path in error message
+
+ Closes #9349
+
+- [Jacob Tolar brought this change]
+
+ cert.d: clarify that escape character works for file paths
+
+ Closes #9349
+
+- gha: move over ngtcp2-gnutls CI job from zuul
-Daniel Stenberg (29 Oct 2021)
-- [Jonathan Cardoso Machado brought this change]
+ Closes #9331
- CURLOPT_HSTSWRITEFUNCTION.3: using CURLOPT_HSTS_CTRL is required
-
- Closes #7923
+Marc Hoersken (26 Aug 2022)
+- cmake: add detection of threadsafe feature
-- [Axel Morawietz brought this change]
+ Avoids failing test 1014 by replicating configure checks
+ for HAVE_ATOMIC and _WIN32_WINNT with custom CMake tests.
- imap: display quota information
-
- Show response to "GETQUOTAROOT INBOX" command.
-
- Closes #6973
+ Reviewed-by: Marcel Raad
+
+ Follow up to #8680
+ Closes #9312
+Daniel Stenberg (26 Aug 2022)
- RELEASE-NOTES: synced
-- [Boris Rasin brought this change]
-
- cmake: fix error getting LOCATION property on non-imported target
-
- Closes #7885
-
-- [x2018 brought this change]
-
- url: check the return value of curl_url()
-
- Closes #7917
-
-- [Roy Li brought this change]
-
- configure.ac: replace krb5-config with pkg-config
-
- The rationale is that custom *-config tools don't work well when
- cross-compiling or using sysroots (such as when using Yocto project) and
- require custom fixing for each of them; pkg-config on the other hand
- works similarly everywhere.
-
- Signed-off-by: Roy Li <rongqing.li@windriver.com>
- Signed-off-by: Alexander Kanavin <alex@linutronix.de>
-
- Closes #7916
-
-- test1160: edited to work with hyper
-
- Closes #7912
-
-- data/DISABLED: enable tests that now work with hyper
-
- Closes #7911
-
-- test559: add 'HTTP' in keywords
-
- Makes it run fine with hyper
-
- Closes #7911
-
-- test552: updated to work with hyper
-
- Closes #7911
-
-Marc Hoersken (27 Oct 2021)
-- github: fix incomplete permission to label PRs for Hacktoberfest
-
- Unfortunately the GitHub API requires a token with write permission
- for both issues and pull-requests to edit labels on even just PRs.
-
- Follow up to #7897
-
-Daniel Stenberg (27 Oct 2021)
-- opt-manpages: use 'Added in' instead of 'Since'
-
- Closes #7913
-
-Marc Hoersken (27 Oct 2021)
-- github: fix missing permission to label PRs for Hacktoberfest
-
- Follow up to #7897
-
- Test references to see if permissions are now sufficient:
-
- Closes #7832
- Closes #7897
-
-- CI: more use of test-ci make target and verbose output
-
- Replace test-nonflaky with test-ci and enable verbose output
- in all remaining CIs except Zuul which is customized a lot.
-
+Marc Hoersken (26 Aug 2022)
+- CI/azure: align torture shallowness with GHA
+
+ There 25 is used with FTP tests skipped, and 20 for FTP tests.
+ This should make torture tests stay within the 60min timeout.
+
Reviewed-by: Daniel Stenberg
+ Closes #9371
+
+- multi_wait: fix and improve Curl_poll error handling on Windows
+
+ First check for errors and return CURLM_UNRECOVERABLE_POLL
+ before moving forward and waiting on socket readiness events.
+
Reviewed-by: Jay Satiro
-
- Follow up to #7785
- Closes #7832
-
-- github: add support for Hacktoberfest using labels
-
- Automatically add hacktoberfest-accepted label to PRs opened between
- September 30th and November 1st once a commit with a close reference
- to it is pushed onto the master branch.
-
- With this workflow we can participate in Hacktoberfest while not
- relying on GitHub to identify PRs as merged due to our rebasing.
-
- Requires hacktoberfest-accepted labels to exist for PRs on the
- participating repository. Also requires hacktoberfest topic on
- the participating repository to avoid applying to forked repos.
-
+ Reviewed-by: Marcel Raad
+
+ Reported-by: Daniel Stenberg
+ Ref: #9361
+
+ Follow up to #8961
+ Closes #9372
+
+- multi_wait: fix skipping to populate revents for extra_fds
+
+ On Windows revents was not populated for extra_fds if
+ multi_wait had to wait due to the Curl_poll pre-check
+ not signalling any readiness. This commit fixes that.
+
+ Reviewed-by: Marcel Raad
+ Reviewed-by: Jay Satiro
+
+ Closes #9361
+
+- CI/appveyor: disable TLS in msys2-native autotools builds
+
+ Schannel cannot be used from msys2-native Linux-emulated builds.
+
+ Reviewed-by: Marcel Raad
Reviewed-by: Daniel Stenberg
-
- Fixes #7865
- Closes #7897
-Daniel Stenberg (27 Oct 2021)
-- http: reject HTTP response codes < 100
-
- ... which then also includes negative ones as test 1430 uses.
-
- This makes native + hyper backend act identically on this and therefore
- test 1430 can now be enabled when building with hyper. Adjust test 1431
- as well.
-
- Closes #7909
+ Follow up to #9367
+ Closes #9370
-- [Kerem Kat brought this change]
+Jay Satiro (25 Aug 2022)
+- tests: fix http2 tests to use CRLF headers
- docs: fix typo in CURLOPT_TRAILERFUNCTION example
-
- Closes #7910
+ Prior to this change some tests that rely on nghttpx proxy did not use
+ CRLF headers everywhere. A recent change in nghttp2, which updated its
+ version of llhttp (HTTP parser), requires curl's HTTP/1.1 test server to
+ use CRLF headers.
-- docs/HYPER: remove some remaining issues, add HTTP/0.9 limitation
+ Ref: https://github.com/nghttp2/nghttp2/commit/9d389e8
-- configure: when hyper is selected, deselect nghttp2
-
- Closes #7908
+ Fixes https://github.com/curl/curl/issues/9364
+ Closes https://github.com/curl/curl/pull/9365
-- [Patrick Monnerat brought this change]
+Daniel Stenberg (25 Aug 2022)
+- [rcombs brought this change]
- sendf: accept zero-length data in Curl_client_write()
-
- Historically, Curl_client_write() used a length value of 0 as a marker
- for a null-terminated data string. This feature has been removed in
- commit f4b85d2. To detect leftover uses of the feature, a DEBUGASSERT
- statement rejecting a length with value 0 was introduced, effectively
- precluding use of this function with zero-length data.
-
- The current commit removes the DEBUGASSERT and makes the function to
- return immediately if length is 0.
-
- A direct effect is to fix trying to output a zero-length distinguished
- name in openldap.
-
- Another DEBUGASSERT statement is also rephrased for better readability.
-
- Closes #7898
-
-- hyper: disable test 1294 since hyper doesn't allow such crazy headers
-
- Closes #7905
-
-- c-hyper: make CURLOPT_SUPPRESS_CONNECT_HEADERS work
-
- Verified by the enabled test 1288
-
- Closes #7905
-
-- test1287: make work on hyper
-
- Closes #7905
-
-- test1266/1267: disabled on hyper: no HTTP/0.9 support
-
- Closes #7905
-
-Viktor Szakats (25 Oct 2021)
-- Makefile.m32: fix to not require OpenSSL with -libssh2 or -rtmp options
-
- Previously, -libssh2/-rtmp options assumed that OpenSSL is also enabled
- (and then failed with an error when not finding expected OpenSSL headers),
- but this isn't necessarly true, e.g. when building both libssh2 and curl
- against Schannel. This patch makes sure to only enable the OpenSSL backend
- with -libssh2/-rtmp, when there was no SSL option explicitly selected.
-
- - Re-implement the logic as a single block of script.
- - Also fix an indentation while there.
-
- Assisted-by: Jay Satiro
-
- Closes #7895
-
-Daniel Stenberg (25 Oct 2021)
-- docs: consistent use of "Added in"
-
- Make them all say "Added in [version]" without using 'curl' or 'libcurl'
- in that phrase.
-
-- man pages: require all to use the same section header order
-
- This is the same order we already enforce among the options' man pages:
- consistency is good. Add lots of previously missing examples.
-
- Adjust the manpage-syntax script for this purpose, used in test 1173.
-
- Closes #7904
-
-- [David Hu brought this change]
-
- docs/HTTP3: improve build instructions
-
- 1. If writing to a system path if the command is not prefixed with
- `sudo` it will cause a permission denied error
-
- 2. The patched OpenSSL branch has been updated to `openssl-3.0.0+quic`
- to match upstream OpenSSL version.
-
- 3. We should not disable GnuTLS docs.
-
- Updated some commands about `make install`
-
- Closes #7842
-
-- [Ricardo Martins brought this change]
-
- CMake: restore support for SecureTransport on iOS
-
- Restore support for building curl for iOS with SecureTransport enabled.
-
- Closes #7501
-
-- tests: enable more tests with hyper
-
- Adjusted 1144, 1164 and 1176.
-
- Closes #7900
-
-- docs: provide "RETURN VALUE" section for more func manpages
-
- Three were missing, one used a non-standard name for the header.
-
- Closes #7902
-
-Jay Satiro (25 Oct 2021)
-- curl_multi_socket_action.3: add a "RETURN VALUE" section
-
- .. because it may not be immediately clear to the user what
- curl_multi_socket_action returns.
-
- Ref: https://curl.se/mail/lib-2021-10/0035.html
-
- Closes https://github.com/curl/curl/pull/7901
-
-Daniel Stenberg (24 Oct 2021)
-- RELEASE-NOTES: synced
+ multi: use a pipe instead of a socketpair on apple platforms
-- [Samuel Henrique brought this change]
+ Sockets may be shut down by the kernel when the app is moved to the
+ background, but pipes are not.
- tests: use python3 in test 1451
-
- This is a continuation of commit ec91b5a69000bea0794bbb3 in which
- changing this test was missed. There are no other python2 leftovers
- now.
-
- Based on a Debian patch originally written by Alessandro Ghedini
- <ghedo@debian.org>
-
- Closes #7899
-
-- [Eddie Lumpkin brought this change]
-
- lib: fixing comment spelling typos in lib files
-
- Closes #7894
- Signed-off-by: ewlumpkin <ewlumpkin@gmail.com>
-
-- openssl: if verifypeer is not requested, skip the CA loading
-
- It was previously done mostly to show a match/non-match in the verbose
- output even when verification was not asked for. This change skips the
- loading of the CA certs unless verifypeer is set to save memory and CPU.
-
- Closes #7892
-
-- curl-confopts.m4: remove --enable/disable-hidden-symbols
-
- These configure options have been saying "deprecated" since 9e24b9c7af
- (April 2012). It was about time we remove them.
-
- Closes #7891
-
-- c-hyper: don't abort CONNECT responses early when auth-in-progress
-
- ... and make sure to stop ignoring the body once the CONNECT is done.
-
- This should make test 206 work proper again and not be flaky.
-
- Closes #7889
-
-- hyper: does not support disabling CURLOPT_HTTP_TRANSFER_DECODING
-
- Simply because hyper doesn't have this ability. Mentioned in docs now.
-
- Skip test 326 then
-
- Closes #7889
-
-- test262: don't attempt with hyper
-
- This test verifies that curl works with binary zeroes in HTTP response
- headers and hyper refuses such. They're not kosher http.
-
- Closes #7889
-
-- c-hyper: make test 217 run
-
- Closes #7889
-
-- DISABLED: enable test 209+213 for hyper
-
- Follow-up to 823d3ab855c
-
- Closes #7889
-
-- test207: accept a different error code for hyper
-
- It returns HYPERE_UNEXPECTED_EOF for this case which we convert to the
- somewhat generic CURLE_RECV_ERROR.
-
- Closes #7889
-
-- [Érico Nogueira brought this change]
-
- INSTALL: update symbol hiding option
-
- --enable-hidden-symbols was deprecated in
- 9e24b9c7afbcb81120af4cf3f6cdee49a06d8224.
-
- Closes #7890
-
-- http_proxy: multiple CONNECT with hyper done better
-
- Enabled test 206
-
- Closes #7888
-
-- hyper: pass the CONNECT line to the debug callback
-
- Closes #7887
-
-- mailmap: Malik Idrees Hasan Khan
-
-Jay Satiro (21 Oct 2021)
-- [Malik Idrees Hasan Khan brought this change]
-
- build: fix typos
-
- Closes https://github.com/curl/curl/pull/7886
-
-- URL-SYNTAX: add IMAP UID SEARCH example
-
- - Explain the difference between IMAP search via URL (which returns
- message sequence numbers) and IMAP search via custom request (which
- can return UID numbers if prefixed with UID, eg "UID SEARCH ...").
-
- Bug: https://github.com/curl/curl/issues/7626
- Reported-by: orycho@users.noreply.github.com
-
- Ref: https://github.com/curl/curl/issues/2789
-
- Closes https://github.com/curl/curl/pull/7881
-
-Daniel Stenberg (20 Oct 2021)
-- manpage: adjust the asterisk in some SYNOPSIS sections
-
- Closes #7884
-
-- curl_multi_perform.3: polish wording
-
- - simplify the example by using curl_multi_poll
-
- - mention curl_multi_add_handle in the text
-
- - cut out the description of pre-7.20.0 return code behavior - that version
- is now more than eleven years old and is basically no longer out there
-
- - adjust the "typical usage" to mention curl_multi_poll
-
- Closes #7883
-
-- docs/THANKS: removed on request
-
-- FAQ: polish the explanation of libcurl
-
-- curl_easy_perform.3: minor wording tweak
-
-- [Erik Stenlund brought this change]
-
- mime: mention CURL_DISABLE_MIME in comment
-
- CURL_DISABLE_MIME is not mentioned in the comment describing the if else
- preprocessor directive.
-
- Closes #7882
-
-- tls: remove newline from three infof() calls
-
- Follow-up to e7416cf
-
- Reported-by: billionai on github
- Fixes #7879
- Closes #7880
+ Removed from KNOWN_BUGS
-- RELEASE-NOTES: synced
+ Fixes #6132
+ Closes #9368
-- curl_gssapi: fix build warnings by removing const
-
- Follow-up to 20e980f85b0ea6
-
- In #7875 these inits were modified but I get two warnings that these new
- typecasts are necessary for.
-
- Closes #7876
-
-- [Bo Anderson brought this change]
-
- curl_gssapi: fix link error on macOS Monterey
-
- Fixes #7657
- Closes #7875
-
-- test1185: verify checksrc
-
- Closes #7866
-
-- checksrc: improve the SPACESEMICOLON error message
-
- and adjust the MULTISPACE one to use plural
-
- Closes #7866
-
-- url: set "k->size" -1 at start of request
-
- The size of the transfer is unknown at that point.
-
- Fixes #7871
- Closes #7872
-
-Daniel Gustafsson (18 Oct 2021)
-- doh: remove experimental code for DoH with GET
-
- The code for sending DoH requests with GET was never enabled in a way
- such that it could be used or tested. As there haven't been requests
- for this feature, and since it at this is effectively dead, remove it
- and favor reimplementing the feature in case anyone is interested.
-
- Closes #7870
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+- [Somnath Kundu brought this change]
-Daniel Stenberg (18 Oct 2021)
-- cirrus: remove FreeBSD 11.4 from the matrix
-
- It has reached End-Of-Life and causes some LDAP CI issues.
-
- Closes #7869
-
-- cirrus: switch to openldap24-client
-
- ... as it seems openldap-client doesn't exist anymore.
-
- Reported-by: Jay Satiro
- Fixes #7868
- Closes #7869
-
-- checksrc: ignore preprocessor lines
-
- In order to check the actual code better, checksrc now ignores
- everything that look like preprocessor instructions. It also means
- that code in macros are now longer checked.
-
- Note that some rules then still don't need to be followed when code is
- exactly below a cpp instruction.
-
- Removes two checksrc exceptions we needed previously because of
- preprocessor lines being checked.
-
- Reported-by: Marcel Raad
- Fixes #7863
- Closes #7864
-
-- urlapi: skip a strlen(), pass in zero
-
- ... to let curl_easy_escape() itself do the strlen. This avoids a (false
- positive) Coverity warning and it avoids us having to store the strlen()
- return value in an int variable.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7862
+ libssh2: provide symlink name in SFTP dir listing
-- misc: update copyright years
+ When reading the symbolic link name for a file, we need to add the file
+ name to base path name.
-- examples/htmltidy: correct wrong printf() use
-
- ... and update the includes to match how current htmltidy wants them
- used.
-
- Reported-by: Stathis Kapnidis
- Fixes #7860
- Closes #7861
-
-Jay Satiro (15 Oct 2021)
-- http: set content length earlier
-
- - Make content length (ie download size) accessible to the user in the
- header callback, but only after all headers have been processed (ie
- only in the final call to the header callback).
-
- Background:
-
- For a long time the content length could be retrieved in the header
- callback via CURLINFO_CONTENT_LENGTH_DOWNLOAD_T as soon as it was parsed
- by curl.
-
- Changes were made in 8a16e54 (precedes 7.79.0) to ignore content length
- if any transfer encoding is used. A side effect of that was that
- content length was not set by libcurl until after the header callback
- was called the final time, because until all headers are processed it
- cannot be determined if content length is valid.
-
- This change keeps the same intention --all headers must be processed--
- but now the content length is available before the final call to the
- header function that indicates all headers have been processed (ie
- a blank header).
-
- Bug: https://github.com/curl/curl/commit/8a16e54#r57374914
- Reported-by: sergio-nsk@users.noreply.github.com
-
- Co-authored-by: Daniel Stenberg
-
- Fixes https://github.com/curl/curl/issues/7804
- Closes https://github.com/curl/curl/pull/7803
+ Closes #9369
-Daniel Stenberg (15 Oct 2021)
-- [Abhinav Singh brought this change]
+- configure: if asked to use TLS, fail if no TLS lib was detected
- aws-sigv4: make signature work when post data is binary
-
- User sets the post fields size for binary data. Hence, we should not be
- using strlen on it.
-
- Added test 1937 and 1938 to verify.
-
- Closes #7844
+ Previously the configure script would just warn about this fact and
+ continue with TLS disabled build which is not always helpful. TLS should
+ be explicitly disabled if that is what the user wants.
-- [a1346054 brought this change]
+ Closes #9367
- MacOSX-Framework: remove redundant ';'
-
- Closes #7859
+- [Dustin Howett brought this change]
-- RELEASE-NOTES: synced
+ schannel: when importing PFX, disable key persistence
-- openssl: with OpenSSL 1.1.0+ a failed RAND_status means goaway
-
- One reason we know it can fail is if a provider is used that doesn't do
- a proper job or is wrongly configured.
-
- Reported-by: Michael Baentsch
- Fixes #7840
- Closes #7856
-
-Marcel Raad (14 Oct 2021)
-- [Ryan Mast brought this change]
-
- cmake: add CURL_ENABLE_SSL option and make CMAKE_USE_* SSL backend options depend on it
-
- Closes https://github.com/curl/curl/pull/7822
-
-Daniel Stenberg (14 Oct 2021)
-- http: remove assert that breaks hyper
-
- Reported-by: Jay Satiro
- Fixes #7852
- Closes #7855
-
-- http_proxy: fix one more result assign for hyper
-
- and remove the bad assert again, since it was run even with no error!
-
- Closes #7854
-
-Jay Satiro (14 Oct 2021)
-- sws: fix memory leak on exit
-
- - Free the allocated http request struct on cleanup.
-
- Prior to this change if sws was built with leak sanitizer it would
- report a memory leak error during testing.
-
- Closes https://github.com/curl/curl/pull/7849
-
-Daniel Stenberg (14 Oct 2021)
-- c-hyper: make Curl_http propagate errors better
-
- Pass on better return codes when errors occur within Curl_http instead
- of insisting that CURLE_OUT_OF_MEMORY is the only possible one.
-
- Pointed-out-by: Jay Satiro
- Closes #7851
-
-- http_proxy: make hyper CONNECT() return the correct error code
-
- For every 'goto error', make sure the result variable holds the error
- code for what went wrong.
-
- Reported-by: Rafał Mikrut
- Fixes #7825
- Closes #7846
-
-- docs/Makefile.am: repair 'make html'
-
- by removing index.html which isn't around anymore
-
- Closes #7853
-
-- [Борис Верховский brought this change]
-
- curl: correct grammar in generated libcurl code
-
- Closes #7802
-
-- tests: disable test 2043
-
- It uses revoked.badssl.com which now is expired and therefor this now
- permafails. We should not use external sites for tests, this test should
- be converted to use our own infra.
-
- Closes #7845
-
-- runtests: split out ignored tests
-
- Report ignore tests separately from the actual fails.
-
- Don't exit non-zero if test servers couldn't get killed.
-
- Assisted-by: Jay Satiro
-
- Fixes #7818
- Closes #7841
-
-- http2: make getsock not wait for write if there's no remote window
-
- While uploading, check for remote window availability in the getsock
- function so that we don't wait for a writable socket if no data can be
- sent.
-
- Reported-by: Steini2000 on github
- Fixes #7821
- Closes #7839
-
-- test368: verify dash is appended for "-r [num]"
-
- Follow-up to 8758a26f8878
-
-- [Борис Верховский brought this change]
-
- curl: actually append "-" to --range without number only
-
- Closes #7837
+ By default, the PFXImportCertStore API persists the key in the user's
+ key store (as though the certificate was being imported for permanent,
+ ongoing use.)
+
+ The documentation specifies that keys that are not to be persisted
+ should be imported with the flag `PKCS12_NO_PERSIST_KEY`.
+ NOTE: this flag is only supported on versions of Windows newer than XP
+ and Server 2003.
+
+ Fixes #9300
+ Closes #9363
+
+- unit1303: four tests should have TRUE for 'connecting'
+
+ To match the comments.
+
+ Reported-by: Wu Zheng
+
+ See #9355
+ Closes #9356
+
+- CURLOPT_BUFFERSIZE.3: add upload buffersize to see also
+
+ Closes #9354
+
+- [Fabian Fischer brought this change]
+
+ HTTP3.md: add missing autoreconf command for building with wolfssl
+
+ Closes #9353
- RELEASE-NOTES: synced
-- urlapi: URL decode percent-encoded host names
-
- The host name is stored decoded and can be encoded when used to extract
- the full URL. By default when extracting the URL, the host name will not
- be URL encoded to work as similar as possible as before. When not URL
- encoding the host name, the '%' character will however still be encoded.
-
- Getting the URL with the CURLU_URLENCODE flag set will percent encode
- the host name part.
-
- As a bonus, setting the host name part with curl_url_set() no longer
- accepts a name that contains space, CR or LF.
-
- Test 1560 has been extended to verify percent encodings.
-
- Reported-by: Noam Moshe
- Reported-by: Sharon Brizinov
- Reported-by: Raul Onitza-Klugman
- Reported-by: Kirill Efimov
- Fixes #7830
- Closes #7834
-
-Marc Hoersken (8 Oct 2021)
-- CI/makefiles: introduce dedicated test target
-
- Make it easy to use the same set of test flags
- throughout all current and future CI builds.
-
- Reviewed-by: Jay Satiro
-
- Follow up to #7690
- Closes #7785
-
-Daniel Stenberg (8 Oct 2021)
-- maketgz: redirect updatemanpages.pl output to /dev/null
-
-- CURLOPT_HTTPHEADER.3: add descripion for specific headers
-
- Settting Host: or Transfer-Encoding: chunked actually have special
- meanings to libcurl. This change tries to document them
-
- Closes #7829
-
-- c-hyper: use hyper_request_set_uri_parts to make h2 better
-
- and make sure to not send Host: over h2.
-
- Fixes #7679
- Reported-by: David Cook
- Closes #7827
-
-- [Michael Afanasiev brought this change]
-
- curl-openssl.m4: modify library order for openssl linking
-
- lcrypto may depend on lz, and configure corrently fails with when
- statically linking as the order is "-lz -lcrypto". This commit switches
- the order to "-lcrypto -lz".
-
- Closes #7826
-
-Marcel Raad (7 Oct 2021)
-- sha256: use high-level EVP interface for OpenSSL
-
- Available since OpenSSL 0.9.7. The low-level SHA256 interface is
- deprecated in OpenSSL v3, and its usage was discouraged even before.
-
- Closes https://github.com/curl/curl/pull/7808
-
-- curl_ntlm_core: use OpenSSL only if DES is available
-
- This selects another SSL backend then if available, or otherwise at
- least gives a meaningful error message.
-
- Closes https://github.com/curl/curl/pull/7808
-
-- md5: fix compilation with OpenSSL 3.0 API
-
- Only use OpenSSL's MD5 code if it's available.
-
- Also fix wolfSSL build with `NO_MD5`, in which case neither the
- wolfSSL/OpenSSL implementation nor the fallback implementation was
- used.
-
- Closes https://github.com/curl/curl/pull/7808
-
-Daniel Stenberg (7 Oct 2021)
-- print_category: printf %*s needs an int argument
-
- ... not a size_t!
-
- Detected by Coverity: CID 1492331.
- Closes #7823
-
-Jay Satiro (7 Oct 2021)
-- version_win32: use actual version instead of manifested version
-
- - Use RtlVerifyVersionInfo instead of VerifyVersionInfo, when possible.
-
- Later versions of Windows have normal version functions that compare and
- return versions based on the way the application is manifested, instead
- of the actual version of Windows the application is running on. We
- prefer the actual version of Windows so we'll now call the Rtl variant
- of version functions (RtlVerifyVersionInfo) which does a proper
- comparison of the actual version.
-
- Reported-by: Wyatt O'Day
-
- Ref: https://github.com/curl/curl/pull/7727
-
- Fixes https://github.com/curl/curl/issues/7742
- Closes https://github.com/curl/curl/pull/7810
-
-Daniel Stenberg (6 Oct 2021)
+- multi: have curl_multi_remove_handle close CONNECT_ONLY transfer
+
+ Ẃhen it has been used in the multi interface, it is otherwise left in
+ the connection cache, can't be reused and nothing will close them since
+ the easy handle loses the association with the multi handle and thus the
+ connection cache - until the multi handle is closed or it gets pruned
+ because the cache is full.
+
+ Reported-by: Dominik Thalhammer
+ Fixes #9335
+ Closes #9342
+
+- docs/cmdline-opts: remove \& escapes from all .d files
+
+ gen.pl escapes them itself now
+
+- docs/cmdline-opts/gen.pl: encode leading single and double quotes
+
+ As "(aq" and "(dq" to prevent them from implying a meaning in the nroff
+ output. This removes the need for using \& escapes in the .d files'
+ description parts.
+
+ Closes #9352
+
+Marc Hoersken (23 Aug 2022)
+- tests/server/sockfilt.c: avoid race condition without a mutex
+
+ Avoid loosing any triggered handles by first aborting and joining
+ the waiting threads before evaluating the individual signal state.
+
+ This removes the race condition and therefore need for a mutex.
+
+ Closes #9023
+
+Daniel Stenberg (22 Aug 2022)
+- [Emil Engler brought this change]
+
+ url: output the maximum when rejecting a url
+
+ This commit changes the failf message to output the maximum length, when
+ curl refuses to process a URL because it is too long.
+
+ See: #9317
+ Closes: #9327
+
+- [Chris Paulson-Ellis brought this change]
+
+ configure: fix broken m4 syntax in TLS options
+
+ Commit b589696f added lines to some shell within AC_ARG_WITH macros, but
+ inadvertently failed to move the final closing ).
+
+ Quote the script section using braces.
+
+ So, if these problems have been around for a while, how did I find them?
+ Only because I did a configure including these options:
+
+ $ ./configure --with-openssl --without-rustls
+ SSL: enabled (OpenSSL)
+
+ Closes #9344
+
+- tests/data/CMakeLists: remove making the 'show' makefile target
+
+ It is not used by runtests since 3c0f462
+
+ Closes #9333
+
+- tests/data/Makefile: remove 'filecheck' target
+
+ No practical use anymore since 3c0f4622cdfd6
+
+ Closes #9332
+
+- libssh2: make atime/mtime date overflow return error
+
+ Closes #9328
+
+- libssh: make atime/mtime date overflow return error
+
+ Closes #9328
+
+- examples/curlx.c: remove
+
+ This example is a bit convoluted to use as an example, combined with the
+ special license for it makes it unsuitable.
+
+ Closes #9330
+
+- [Tobias Nygren brought this change]
+
+ curl.h: include <sys/select.h> on SunOS
+
+ It is needed for fd_set to be visible to downstream consumers that use
+ <curl/multi.h>. Header is known to exist at least as far back as Solaris
+ 2.6.
+
+ Closes #9329
+
+- DEPRECATE.md: push the NSS deprecation date forward one year to 2023
+
+ URL: https://curl.se/mail/lib-2022-08/0016.html
+
+- libssh2: setting atime or mtime >32bit on 4-bytes-long systems
+
+ Since the libssh2 API uses 'long' to store the timestamp, it cannot
+ transfer >32bit times on Windows and 32bit architecture builds.
+
+ Avoid nasty surprises by instead not setting such time.
+
+ Spotted by Coverity
+
+ Closes #9325
+
+- libssh: setting atime or mtime > 32bit is now just skipped
+
+ The libssh API used caps the time to an unsigned 32bit variable. Avoid
+ nasty surprises by instead not setting such time.
+
+ Spotted by Coverity.
+
+ Closes #9324
+
+Jay Satiro (16 Aug 2022)
+- KNOWN_BUGS: Windows Unicode builds use homedir in current locale
+
+ Bug: https://github.com/curl/curl/pull/7252
+ Reported-by: dEajL3kA@users.noreply.github.com
+
+ Ref: https://github.com/curl/curl/pull/7281
+
+ Closes https://github.com/curl/curl/pull/9305
+
+Daniel Stenberg (16 Aug 2022)
+- test399: switch it to use a config file instead
+
+ ... as using a 65535 bytes host name in a URL does not fit on the
+ command line on some systems - like Windows.
+
+ Reported-by: Marcel Raad
+ Fixes #9321
+ Closes #9322
+
- RELEASE-NOTES: synced
-- http: fix Basic auth with empty name field in URL
-
- Add test 367 to verify.
-
- Reported-by: Rick Lane
- Fixes #7819
- Closes #7820
-
-- [Jeffrey Tolar brought this change]
-
- CURLOPT_MAXLIFETIME_CONN: maximum allowed lifetime for conn reuse
-
- ... and close connections that are too old instead of reusing them.
-
- By default, this behavior is disabled.
-
- Bug: https://curl.se/mail/lib-2021-09/0058.html
- Closes #7751
-
-Daniel Gustafsson (6 Oct 2021)
-- docs/examples: add missing binaries to gitignore
-
- Commit f65d7889b added getreferrer, and commit ae8e11ed5 multi-legacy,
- both of which missed adding .gitignore clauses for the built binaries.
-
- Closes #7817
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+- asyn-ares: make a single alloc out of hostname + async data
-Daniel Stenberg (5 Oct 2021)
-- [Josip Medved brought this change]
+ This saves one alloc per name resolve and simplifies the exit path.
- HTTP3: fix the HTTP/3 Explained book link
-
- Closes #7813
+ Closes #9310
-- [Lucas Holt brought this change]
+- Curl_close: call Curl_resolver_cancel to avoid memory-leak
- misc: fix a few issues on MidnightBSD
-
- Closes #7812
+ There might be a pending (c-ares) resolve that isn't free'd up yet.
-Daniel Gustafsson (4 Oct 2021)
-- [8U61ife brought this change]
+ Closes #9310
- tool_main: fix typo in comment
-
- Closes: #7811
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+- asyn-thread: fix socket leak on OOM
-Daniel Stenberg (4 Oct 2021)
-- [Ryan Mast brought this change]
+ Closes #9310
- BINDINGS: URL updates
-
- For cpr, BBHTTP, Eiffel, Harbour, Haskell, Mono, and Rust
-
- Closes #7809
+- GHA: mv CI torture test from Zuul
-- scripts/delta: hide a git error message we don't care about
-
- fatal: path 'src/tool_listhelp.c' exists on disk, but not in [tag]
+ Closes #9310
-- [Patrick Monnerat brought this change]
+- ngtcp2-wolfssl.yml: add GHA to build ngtcp2 + wolfSSL
- sasl: binary messages
-
- Capabilities of sasl module are extended to exchange messages in binary
- as an alternative to base64.
-
- If http authentication flags have been set, those are used as sasl
- default preferred mechanisms.
-
- Closes #6930
+ Closes #9318
-- [Hayden Roche brought this change]
+- test399: verify check of too long host name
+
+- url: reject URLs with hostnames longer than 65535 bytes
+
+ It *probably* causes other problems too since DNS can't resolve such
+ long names, but the SNI field in TLS is limited to 16 bits length.
+
+ Closes #9317
+
+- curl_multi_perform.3: minor language fix
- wolfssl: use for SHA256, MD4, MD5, and setting DES odd parity
-
- Prior to this commit, OpenSSL could be used for all these functions, but
- not wolfSSL. This commit makes it so wolfSSL will be used if USE_WOLFSSL
- is defined.
-
- Closes #7806
+ Closes #9316
-- scripts/delta: count command line options in the new file
-
- ... which makes the shown delta number wrong until next release.
+- ngtcp2: fix picky compiler warnings with wolfSSL for QUIC
+
+ Follow-up to 8a13be227eede2
+
+ Closes #9315
+
+- ngtcp2: remove leftover variable
+
+ Mistake leftover from my edit before push.
+
+ Follow-up from 8a13be227eede2601c2b3b
+ Reported-by: Viktor Szakats
+ Bug: https://github.com/curl/curl/pull/9290#issuecomment-1214569167
+
+Viktor Szakats (15 Aug 2022)
+- Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip]
+
+ Before this patch `-nghttp3`/`-ngtcp2` had an effect only when `-ssl`
+ was also enabled. `-ssl` meaning OpenSSL (and its forks). After
+ 8a13be227eede2601c2b3b1c63e08b3dc9b35dd5 nghttp3/ngtcp2 can also be
+ used together with wolfSSL. This patch adds the ability to enable
+ `-nghttp3`/`-ngtcp2` independently from `-ssl` (OpenSSL), allowing to
+ use it with wolfSSL or other, future TLS backends.
+
+ Before this patch, it was fine to enable `-nghttp3`/`-ngtcp2`
+ unconditionally. After this patch, this is no longer the case, and now
+ it's the user's responsibility to enable `-nghttp3`/`-ngtcp2` only
+ together with a compatible TLS backend.
+
+ When using a TLS backend other than OpenSSL, the TLS-specific ngtcp2
+ library must be configured manually, e.g.:
+ `export CURL_LDFLAG_EXTRAS=-lngtcp2_crypto_wolfssl`
+
+ (or via `NGTCP2_LIBS`)
+
+ Closes #9314
+
+Daniel Stenberg (15 Aug 2022)
+- [Stefan Eissing brought this change]
+
+ quic: add support via wolfSSL
+
+ - based on ngtcp2 PR https://github.com/ngtcp2/ngtcp2/pull/505
+ - configure adapted to build against ngtcp2 wolfssl crypto lib
+ - quic code added for creation of WOLFSSL* instances
+
+ Closes #9290
+
+Marcel Raad (14 Aug 2022)
+- [David Carlier brought this change]
+
+ memdebug: add annotation attributes
+
+ memory debug tracking annotates whether the returned pointer does not
+ `alias`, hints where the size required is, for Windows to be better
+ debugged via Visual Studio.
+
+ Closes https://github.com/curl/curl/pull/9306
+
+Daniel Stenberg (14 Aug 2022)
+- GHA: move libressl CI from zuul to GitHub
+
+ Closes #9309
+
+- KNOWN_BUGS: FTPS directory listing hangs on Windows with Schannel
+
+ Closes #9161
+
+- KNOWN_BUGS: CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
+
+ Closes #8741
+
+- KNOWN_BUGS: libssh blocking and infinite loop problem
+
+ Closes #8632
- RELEASE-NOTES: synced
-- print_category: print help descriptions aligned
-
- Adjust the description position to make an aligned column when doing
- help listings, which is more pleasing to the eye.
-
- Suggested-by: Gisle Vanem
- Closes #7792
-
-- lib/mk-ca-bundle.pl: skip certs passed Not Valid After date
-
- With this change applied, the now expired 'DST Root CA X3' cert will no
- longer be included in the output.
-
- Details: https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/
-
- Closes #7801
-
-- tool_listhelp: easier to generate with gen.pl
-
- tool_listhelp.c is now a separate file with only the command line --help
- output, exactly as generated by gen.pl. This makes it easier to generate
- updates according to what's in the docs/cmdline-opts docs.
-
- cd $srcroot/docs/cmdline-opts
- ./gen.pl listhelp *.d > $srcroot/src/tool_listhelp.c
-
- With a configure build, this also works:
-
- make -C src listhelp
-
- Closes #7787
-
-- [Anthony Hu brought this change]
-
- wolfssl: allow setting of groups/curves
-
- In particular, the quantum safe KEM and hybrid curves if wolfSSL is
- built to support them.
-
- Closes #7728
-
-- [Jan Mazur brought this change]
-
- connnect: use sysaddr_un fron sys/un.h or custom-defined for windows
-
- Closes #7737
-
-Jay Satiro (30 Sep 2021)
-- [Rikard Falkeborn brought this change]
-
- hostip: Move allocation to clarify there is no memleak
-
- By just glancing at the code, it looks like there is a memleak if the
- call to Curl_inet_pton() fails. Looking closer, it is clear that the
- call to Curl_inet_pton() can not fail, so the code will never leak
- memory. However, we can make this obvious by moving the allocation
- after the if-statement.
-
- Closes https://github.com/curl/curl/pull/7796
-
-Daniel Stenberg (30 Sep 2021)
-- gen.pl: make the output date format work better
-
- Follow-up to 15910dfd143dd
-
- The previous strftime format used didn't work correctly on Windows, so
- change to %B %d %Y which today looks like "September 29 2021".
-
- Reported-by: Gisle Vanem
- Bug: #7782
- Closes #7793
-
-- typecheck-gcc.h: add CURLOPT_PREREQDATA awareness
-
- Follow-up to a517378de58358a
-
- To make test 1912 happy again
-
- Closes #7799
-
-Marcel Raad (29 Sep 2021)
-- configure: remove `HAVE_WINSOCK_H` definition
-
- It's not used anymore.
-
- Closes https://github.com/curl/curl/pull/7795
-
-- CMake: remove `HAVE_WINSOCK_H` definition
-
- It's not used anymore.
-
- Closes https://github.com/curl/curl/pull/7795
-
-- config: remove `HAVE_WINSOCK_H` definition
-
- It's not used anymore.
-
- Closes https://github.com/curl/curl/pull/7795
-
-- lib: remove `HAVE_WINSOCK_H` usage
-
- WinSock v1 is not supported anymore. Exclusively use `HAVE_WINSOCK2_H`
- instead.
-
- Closes https://github.com/curl/curl/pull/7795
-
-Daniel Stenberg (29 Sep 2021)
-- easyoptions: add the two new PRE* options
-
- Follow-up to a517378de58358a
-
- Also fix optiontable.pl to do the correct remainder on the entry.
-
+- msh3: fix the QUIC disconnect function
+
+ And free request related memory better in 'done'. Fixes a memory-leak.
+
Reported-by: Gisle Vanem
- Bug: https://github.com/curl/curl/commit/a517378de58358a85b7cfe9efecb56051268f629#commitcomment-57224830
- Closes #7791
-
-- Revert "build: remove checks for WinSock 1"
-
- Due to CI issues
-
- This reverts commit c2ea04f92b00b6271627cb218647527b5a50f2fc.
-
- Closes #7790
-
-Daniel Gustafsson (29 Sep 2021)
-- lib: avoid fallthrough cases in switch statements
-
- Commit b5a434f7f0ee4d64857f8592eced5b9007d83620 inhibits the warning
- on implicit fallthrough cases, since the current coding of indicating
- fallthrough with comments is falling out of fashion with new compilers.
- This attempts to make the issue smaller by rewriting fallthroughs to no
- longer fallthrough, via either breaking the cases or turning switch
- statements into if statements.
-
- lib/content_encoding.c: the fallthrough codepath is simply copied
- into the case as it's a single line.
- lib/http_ntlm.c: the fallthrough case skips a state in the state-
- machine and fast-forwards to NTLMSTATE_LAST. Do this before the
- switch statement instead to set up the states that we actually
- want.
- lib/http_proxy.c: the fallthrough is just falling into exiting the
- switch statement which can be done easily enough in the case.
- lib/mime.c: switch statement rewritten as if statement.
- lib/pop3.c: the fallthrough case skips to the next state in the
- statemachine, do this explicitly instead.
- lib/urlapi.c: switch statement rewritten as if statement.
- lib/vssh/wolfssh.c: the fallthrough cases fast-forwards the state
- machine, do this by running another iteration of the switch
- statement instead.
- lib/vtls/gtls.c: switch statement rewritten as if statement.
- lib/vtls/nss.c: the fallthrough codepath is simply copied into the
- case as it's a single line. Also twiddle a comment to not be
- inside a non-brace if statement.
-
- Closes: #7322
- See-also: #7295
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+ Fixes #8915
+ Closes #9304
-Marcel Raad (28 Sep 2021)
-- config-win32ce: enable WinSock 2
-
- WinSock 2.2 is supported by Windows CE .NET 4.1 (from 2002, out of
- support since 2013).
-
- Ref: https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms899586(v=msdn.10)
-
- Closes https://github.com/curl/curl/pull/7778
-
-- externalsocket: use WinSock 2.2
-
- That's the only version we support.
-
- Closes https://github.com/curl/curl/pull/7778
-
-- build: remove checks for WinSock 1
-
- It's not supported anymore.
-
- Closes https://github.com/curl/curl/pull/7778
-
-Daniel Stenberg (28 Sep 2021)
-- scripts/copyright: .muse is .lift now
-
- And update 5 files with old copyright year range
-
-- cmdline-opts: made the 'Added:' field mandatory
-
- Since "too old" versions are no longer included in the generated man
- page, this field is now mandatory so that it won't be forgotten and then
- not included in the documentation.
-
- Closes #7786
-
-- curl.1: remove mentions of really old version changes
-
- To make the man page more readable, this change removes all references
- to changes in support/versions etc that happened before 7.30.0 from the
- curl.1 output file. 7.30.0 was released on Apr 12 2013. This particular
- limit is a bit arbitrary but was fairly easy to grep for.
-
- It is handled like this: the 'Added' keyword is only used in output if
- it refers to 7.30.0 or later. All occurances of "(Added in $VERSION)" in
- description will be stripped out if the mentioned $VERSION is from
- before 7.30.0. It is therefore important that the "Added in..."
- references are always written exactly like that - and on a single line,
- not split over two.
-
- This change removes about 80 version number references from curl.1, down
- to 138 from 218.
-
- Closes #7786
+- connect: close the happy eyeballs loser connection when using QUIC
-- RELEASE-NOTES: synced
+ Reviewed-by: Nick Banks
+
+ Closes #9303
+
+- [Emil Engler brought this change]
+
+ refactor: split resolve_server() into functions
+
+ This commit splits the branch-heavy resolve_server() function into
+ various sub-functions, in order to reduce the amount of nested
+ if/else-statements.
+
+ Beside this, it also removes many else-sequences, by returning in the
+ previous if-statement.
+
+ Closes #9283
+
+- schannel: re-indent to use curl style better
+
+ Only white space changes
+
+ Closes #9301
+
+- [Emanuele Torre brought this change]
+
+ docs/cmdline-opts: fix example and categories for --form-escape
+
+ The example was missing a "--form" argument
+ I also replaced "--form" with "-F" to shorten the line a bit since it
+ was already very long.
+
+ And I also moved --form-escape from the "post" category to the "upload"
+ category (this is what I originally wanted to fix, before also noticing
+ the mistake in the example).
+
+ Closes #9298
+
+- [Nick Banks brought this change]
+
+ HTTP3.md: update to msh3 v0.4.0
-- tool_cb_prg: make resumed upload progress bar show better
-
- This is a regression that was *probably* injected in the larger progress
- bar overhaul in 2018.
-
- Reported-by: beslick5 on github
- Fixes #7760
- Closes #7777
-
-- gen.pl: insert the current date and version in generated man page
-
+ Closes #9297
+
+- hostip: resolve *.localhost to 127.0.0.1/::1
+
+ Following the footsteps of other clients like Firefox/Chrome. RFC 6761
+ says clients SHOULD do this.
+
+ Add test 389 to verify.
+
+ Reported-by: TheKnarf on github
+ Fixes #9192
+ Closes #9296
+
+Jay Satiro (11 Aug 2022)
+- KNOWN_BUGS: long paths are not fully supported on Windows
+
+ Bug: https://github.com/curl/curl/issues/8361
Reported-by: Gisle Vanem
- Ref: #7780
- Closes #7782
-
-- NTLM: use DES_set_key_unchecked with OpenSSL
-
- ... as the previously used function DES_set_key() will in some cases
- reject using a key that it deems "weak" which will cause curl to
- continue using the unitialized buffer content as key instead.
-
- Assisted-by: Harry Sintonen
- Fixes #7779
- Closes #7781
-
-Marc Hoersken (27 Sep 2021)
-- CI: align make and test flags in various config files
-
- 1. Use Makefile target to run tests in autotools builds on AppVeyor.
- 2. Disable testing of SCP protocol on native Windows environments.
- 3. Remove redundant parameters -a -p from target test-nonflaky.
- 4. Don't use -vc parameter which is reserved for debugging.
-
- Replaces #7591
- Closes #7690
-
-Daniel Stenberg (27 Sep 2021)
-- mailmap: unify Max!
-
-- [Max Dymond brought this change]
-
- CURLOPT_PREREQFUNCTION: add new callback
-
- Triggered before a request is made but after a connection is set up
-
- Changes:
-
- - callback: Update docs and callback for pre-request callback
- - Add documentation for CURLOPT_PREREQDATA and CURLOPT_PREREQFUNCTION,
- - Add redirect test and callback failure test
- - Note that the function may be called multiple times on a redirection
- - Disable new 2086 test due to Windows weirdness
-
- Closes #7477
-
-- KNOWN_BUGS: HTTP/2 connections through HTTPS proxy frequently stall
-
- Closes #6936
-
-- TODO: make configure use --cache-file more and better
-
- Closes #7753
-- [Sergey Markelov brought this change]
+ Closes https://github.com/curl/curl/pull/9288
- urlapi: support UNC paths in file: URLs on Windows
-
- - file://host.name/path/file.txt is a valid UNC path
- \\host.name\path\files.txt to a non-local file transformed into URI
- (RFC 8089 Appendix E.3)
-
- - UNC paths on other OSs must be smb: URLs
-
- Closes #7366
-
-- [Gleb Ivanovsky brought this change]
-
- urlapi: add curl_url_strerror()
-
- Add curl_url_strerror() to convert CURLUcode into readable string and
- facilitate easier troubleshooting in programs using URL API.
- Extend CURLUcode with CURLU_LAST for iteration in unit tests.
- Update man pages with a mention of new function.
- Update example code and tests with new functionality where it fits.
-
- Closes #7605
+Daniel Stenberg (11 Aug 2022)
+- config: remove the check for and use of SIZEOF_SHORT
-- RELEASE-NOTES: synced
+ shorts are 2 bytes on all platforms curl runs and have ever run on.
-- [Mats Lindestam brought this change]
-
- libssh2: add SHA256 fingerprint support
-
- Added support for SHA256 fingerprint in command line curl and in
- libcurl.
-
- Closes #7646
-
-- libcurl.rc: switch out the copyright symbol for plain ASCII
-
- Reported-by: Vitaly Varyvdin
- Assisted-by: Viktor Szakats
- Fixes #7765
- Closes #7776
-
-- [Jun-ya Kato brought this change]
-
- ngtcp2: fix QUIC transport parameter version
-
- fix inappropriate version setting for QUIC transport parameters.
- this patch keeps curl with ngtcp2 uses QUIC draft version (h3-29).
-
- Closes #7771
-
-- examples/imap-append: fix end-of-data check
-
- Reported-by: Alexander Chuykov
- Fixes #7774
- Closes #7775
-
-Michael Kaufmann (24 Sep 2021)
-- vtls: Fix a memory leak if an SSL session cannot be added to the cache
-
- On connection shutdown, a new TLS session ticket may arrive after the
- SSL session cache has already been destructed. In this case, the new
- SSL session cannot be added to the SSL session cache.
-
- The callers of Curl_ssl_addsessionid() need to know whether the SSL
- session has been added to the cache. If it has not been added, the
- reference counter of the SSL session must not be incremented, or memory
- used by the SSL session must be freed. This is now possible with the new
- output parameter "added" of Curl_ssl_addsessionid().
-
- Fixes #7683
- Closes #7752
-
-Daniel Stenberg (24 Sep 2021)
-- [Momoka Yamamoto brought this change]
-
- HTTP3.md: use 'autoreconf -fi' instead of buildconf
-
- buildconf is not used since #5853
-
- Closes #7746
-
-- GIT-INFO: rephrase to adapt to s/buildconf/autoreconf
-
-- [h1zzz brought this change]
-
- llist: remove redundant code, branch will not be executed
-
- Closes #7770
-
-- [tlahn brought this change]
-
- HTTP-COOKIES.md: remove duplicate 'each'
-
- Closes #7772
-
-Jay Satiro (24 Sep 2021)
-- [Joel Depooter brought this change]
+ Closes #9291
- libssh2: Get the version at runtime if possible
-
- Previously this code used a compile time constant, meaning that libcurl
- always reported the libssh2 version that libcurl was built with. This
- could differ from the libssh2 version actually being used. The new code
- uses the CURL_LIBSSH2_VERSION macro, which is defined in ssh.h. The
- macro calls the libssh2_version function if it is available, otherwise
- it falls back to the compile time version.
-
- Closes https://github.com/curl/curl/pull/7768
+- configure: introduce CURL_SIZEOF
-- [Joel Depooter brought this change]
+ This is a rewrite of the previously used GPLv3+exception licensed
+ file. With this change, there is no more reference to GPL so we can
+ remove that from LICENSES/.
- schannel: fix typo
-
- Closes https://github.com/curl/curl/pull/7769
-
-Daniel Stenberg (23 Sep 2021)
-- cmake: with OpenSSL, define OPENSSL_SUPPRESS_DEPRECATED
-
- To avoid the "... is deprecated" warnings brought by OpenSSL v3.
- (We need to address the underlying code at some point of course.)
-
- Assisted-by: Jakub Zakrzewski
- Closes #7767
-
-- curl-openssl: pass argument to sed single-quoted
-
- ... instead of using an escaped double-quote. This is an attempt to make
- this work better with ksh that otherwise would insist on a double
- escape!
-
- Reported-by: Randall S. Becker
- Fixes #7758
- Closes #7764
+ Ref: #9220
+ Closes #9291
-- RELEASE-NOTES: synced
-
- Bumped curlver to 7.80.0-dev
+- [Sean McArthur brought this change]
+
+ hyper: customize test1274 to how hyper unfolds headers
+
+ Closes #9217
-- [a1346054 brought this change]
+- [Orgad Shaneh brought this change]
+
+ curl-config: quote directories with potential space
+
+ On Windows (at least with CMake), the default prefix is
+ C:/Program Files (x86)/CURL.
+
+ Closes #9253
- misc: fix typos in docs and comments
-
- No user facing output from curl/libcurl is changed by this, just
- comments.
-
- Closes #7747
+- [Oliver Roberts brought this change]
-- [Thomas M. DuBuisson brought this change]
+ amigaos: fix threaded resolver on AmigaOS 4.x
- ci: update Lift config to match requirements of curl build
-
- Also renamed Muse -> Lift, the new tool name.
-
- Closes #7761
+ Replace ip4 resolution function on AmigaOS 4.x, as it requires runtime
+ feature detection and extra code to make it thread safe.
+
+ Closes #9265
+
+- [Emil Engler brought this change]
-- [Rikard Falkeborn brought this change]
+ imap: use ISALNUM() for alphanumeric checks
- cleanup: constify unmodified static structs
-
- Constify a number of static structs that are never modified. Make them
- const to show this.
-
- Closes #7759
+ This commit replaces a self-made character check for alphanumeric
+ characters within imap_is_bchar() with the ISALNUM() macro, as it is
+ reduces the size of the code and makes the performance better, due to
+ ASCII arithmetic.
-Version 7.79.1 (22 Sep 2021)
+ Closes #9289
-Daniel Stenberg (22 Sep 2021)
- RELEASE-NOTES: synced
-
- curl 7.79.1 release
-
-- THANKS: added names from the 7.79.1 release
-
-- test897: verify delivery of IMAP post-body header content
-
- The "content" is delivered as "body" by curl, but the envelope continues
- after the body and the rest of it should be delivered as header.
-
- The IMAP server can now get 'POSTFETCH' set to include more data to
- include after the body and test 897 is done to verify that such "extra"
- header data is in fact delivered by curl as header.
-
- Ref: #7284 but fails to reproduce the issue
-
- Closes #7748
-
-- KNOWN_BUGS: connection migration doesn't work
-
- Closes #7695
+
+- [Cering on github brought this change]
+
+ connect: add quic connection information
+
+ Fixes #9286
+ Closes #9287
+
+- [Philip Heiduck brought this change]
+
+ cirrus/freebsd-ci: bootstrap the pip installer
+
+ Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
+
+ Closes #9213
+
+- urldata: move smaller fields down in connectdata struct
+
+ By (almost) sorting the struct fields in connectdata in a decending size
+ order, having the single char ones last, we reduce the number of holes
+ in the struct and thus the amount of storage needed.
+
+ Closes #9280
+
+- ldap: adapt to conn->port now being an 'int'
+
+ Remove typecasts. Fix printf() formats.
+
+ Follow-up from 764c6bd3bf.
+ Pointed out by Coverity CID 1507858.
+
+ Closes #9281
+
+- KNOWN_BUGS: Negotiate authentication against Hadoop HDFS
+
+ Closes #8264
+
+- [Oliver Roberts brought this change]
+
+ file: add handling of native AmigaOS paths
+
+ On AmigaOS 4.x, handle native absolute paths, whilst blocking relative
+ paths. Also allow unix style paths if feature enabled at link time.
+
+ Inspiration-from: Michael Trebilcock
+
+ Closes #9259
+
+- KNOWN_BUGS: cmake build is not thread-safe
+
+ The cmake build does not check for and verify presence of a working
+ Atomic type, which then makes curl_global_init() to not build
+ thread-safe on non-Windows platforms.
+
+ Closes https://github.com/curl/curl/issues/8973
+ Closes https://github.com/curl/curl/pull/8982
+
+- [Oliver Roberts brought this change]
+
+ configure: fixup bsdsocket detection code for AmigaOS 4.x
+
+ The code that detects bsdsocket.library for AmigaOS did not work
+ for AmigaOS 4.x. This has been fixed and also cleaned up a little
+ to reduce duplication. Wasn't technically necessary before, but is
+ required when building with AmiSSL instead of OpenSSL.
+
+ Closes #9268
+
+- [Oliver Roberts brought this change]
+
+ tool: reintroduce set file comment code for AmigaOS
+
+ Amiga specific code which put the URL in the file comment was perhaps
+ accidentally removed in b88940850002a3f1c25bc6488b95ad30eb80d696 having
+ originally been added in 5c215bdbdfde8b2350cdcbac82aae0c914da5314.
+ Reworked to fit the code changes and added it back in.
+
+ Reported-by: Michael Trebilcock
+ Originally-added-by: Chris Young
+
+ Closes #9258
+
+- urldata: make 'negnpn' use less storage
+
+ The connectdata struct field 'negnpn' never holds a value larger than
+ 30, so an unsigned char saves 3 bytes struct space.
+
+ Closes #9279
+
+- urldata: make three *_proto struct fields smaller
+
+ Use 'unsigned char' for storage instead of the enum, for three GSSAPI
+ related fields in the connectdata struct.
+
+ Closes #9278
+
+- connect: set socktype/protocol correctly
+
+ So that an address used from the DNS cache that was previously used for
+ QUIC can be reused for TCP and vice versa.
+
+ To make this possible, set conn->transport to "unix" for unix domain
+ connections ... and store the transport struct field in an unsigned char
+ to use less space.
+
+ Reported-by: ウさん
+ Fixes #9274
+ Closes #9276
+
+- [Oliver Roberts brought this change]
+
+ amissl: allow AmiSSL to be used with AmigaOS 4.x builds
+
+ Enable AmiSSL to be used instead of static OpenSSL link libraries.
+ for AmigaOS 4.x, as it already is in the AmigaOS 3.x build.
+
+ Closes #9269
+
+- [opensignature on github brought this change]
+
+ openssl: add details to "unable to set client certificate" error
+
+ from: "curl: (58) unable to set client certificate"
+
+ to: curl: (58) unable to set client certificate [error:0A00018F:SSL
+ routines::ee key too small]
+
+ Closes #9228
+
+- [Oliver Roberts brought this change]
+
+ amissl: make AmiSSL v5 a minimum requirement
+
+ AmiSSL v5 is the latest version, featuring a port of OpenSSL 3.0.
+ Support for previous OpenSSL 1.1.x versions has been dropped, so
+ makes sense to enforce v5 as the minimum requirement. This also
+ allows all the AmiSSL stub workarounds to be removed as they are
+ now provided in a link library in the AmiSSL SDK.
+
+ Closes #9267
+
+- [Oliver Roberts brought this change]
+
+ configure: -pthread not available on AmigaOS 4.x
+
+ The most recent GCC builds for AmigaOS 4.x do not allow -pthread and
+ exit with an error. Instead, need to explictly specify -lpthread.
+
+ Closes #9266
+
+- digest: pass over leading spaces in qop values
+
+ When parsing the "qop=" parameter of the digest authentication, and the
+ value is provided within quotes, the list of values can have leading
+ white space which the parser previously did not handle correctly.
+
+ Add test case 388 to verify.
+
+ Reported-by: vlubart on github
+ Fixes #9264
+ Closes #9270
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+ digest: reject broken header with session protocol but without qop
+
+ Closes #9077
+
+- CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples
+
+ Reported-by: jvvprasad78 on github
+ Assisted-by: Jay Satiro
+ Fixes #9239
+ Closes #9241
+
+- [Fabian Keil brought this change]
+
+ test44[2-4]: add '--resolve' to the keywords
+
+ ... so the tests can be automatically skipped when
+ using an external proxy like Privoxy.
+
+ Closes #9250
- RELEASE-NOTES: synced
-- http: fix the broken >3 digit response code detection
-
- When the "reason phrase" in the HTTP status line starts with a digit,
- that was treated as the forth response code digit and curl would claim
- the response to be non-compliant.
-
- Added test 1466 to verify this case.
-
- Regression brought by 5dc594e44f73b17
- Reported-by: Glenn de boer
- Fixes #7738
- Closes #7739
-
-Jay Satiro (17 Sep 2021)
-- strerror: use sys_errlist instead of strerror on Windows
-
- - Change Curl_strerror to use sys_errlist[errnum] instead of strerror to
- retrieve the error message on Windows.
-
- Windows' strerror writes to a static buffer and is not thread-safe.
-
- Follow-up to 2f0bb86 which removed most instances of strerror in favor
- of calling Curl_strerror (which calls strerror_r for other platforms).
-
- Ref: https://github.com/curl/curl/pull/7685
- Ref: https://github.com/curl/curl/commit/2f0bb86
-
- Closes https://github.com/curl/curl/pull/7735
-
-Daniel Stenberg (16 Sep 2021)
-- dist: provide lib/.checksrc in the tarball
-
- So that debug builds work (checksrc really)
-
- Reported-by: Marcel Raad
- Reported-by: tawmoto on github
- Fixes #7733
- Closes #7734
-
-- TODO: Improve documentation about fork safety
-
- Closes #6968
-
-- hsts: CURLSTS_FAIL from hsts read callback should fail transfer
-
- ... and have CURLE_ABORTED_BY_CALLBACK returned.
-
- Extended test 1915 to verify.
-
- Reported-by: Jonathan Cardoso
- Fixes #7726
- Closes #7729
-
-- test1184: disable
-
- The test should be fine and it works for me repeated when run manually,
- but clearly it causes CI failures and it needs more research.
-
- Reported-by: RiderALT on github
- Fixes #7725
- Closes #7732
-
-- Curl_http2_setup: don't change connection data on repeat invokes
-
- Regression from 3cb8a748670ab88c (releasde in 7.79.0). That change moved
- transfer oriented inits to before the check but also erroneously moved a
- few connection oriented ones, which causes problems.
-
- Reported-by: Evangelos Foutras
- Fixes #7730
- Closes #7731
+- CURLOPT_CONNECT_ONLY.3: clarify multi API use
+
+ Reported-by: Maxim Ivanov
+ Fixes #9244
+ Closes #9262
+
+- [Andrew Lambert brought this change]
+
+ curl_easy_header: Add CURLH_PSEUDO to sanity check
+
+ Fixes #9235
+ Closes #9236
+
+- [Emil Engler brought this change]
+
+ docs: add dns category to --resolve
+
+ This commit adds the dns category to the --resolve command line option,
+ because it can be interpreted as both: a low-level connection option and
+ an option related to the resolving of a hostname.
+
+ It is also not common for dns options to belong to the connection
+ category and vice versa. --ipv4 and --ipv6 are both good examples.
+
+ Closes #9229
+
+Jay Satiro (2 Aug 2022)
+- [Wyatt O'Day brought this change]
+
+ schannel: Add TLS 1.3 support
+
+ - Support TLS 1.3 as the default max TLS version for Windows Server 2022
+ and Windows 11.
+
+ - Support specifying TLS 1.3 ciphers via existing option
+ CURLOPT_TLS13_CIPHERS (tool: --tls13-ciphers).
+
+ Closes https://github.com/curl/curl/pull/8419
+
+Daniel Stenberg (2 Aug 2022)
+- [Emil Engler brought this change]
+
+ cmdline-opts/gen.pl: improve performance
+
+ On some systems, the gen.pl script takes nearly two minutes for the
+ generation of the main-page, which is a completely unacceptable time.
+
+ The slow performance has two causes:
+ 1. Use of a regex locale operator
+ 2. Useless invokations of loops
+
+ The commit addresses the first issue by replacing the "\W" wiht
+ [^a-zA-Z0-9_], which is, according to regex101.com, functionally
+ equivalent to the previous operation, except that it is obviously
+ limited to ASCII only, which is fine, as the curl project is
+ English-only anyway.
+
+ The second issue is being addressed by only running the loop if the line
+ contains a "--" in it. The loop may be completeley removed in the
+ future.
+
+ Co-authored-by: Emanuele Torre <torreemanuele6@gmail.com>
+
+ See #8299
+ Fixes #9230
+ Closes #9232
+
+- docs/cmdline: mark fail and fail-with-body as mutually exclusive
+
+ Reported-by: Andreas Sommer
+ Fixes #9221
+ Closes #9222
+
+- [Nao Yonashiro brought this change]
+
+ quiche: fix build failure
+
+ Reviewed-by: Alessandro Ghedini
+ Closes #9223
+
+Viktor Szakats (2 Aug 2022)
+- configure.ac: drop references to deleted functions
+
+ follow-up from 4d73854462f30948acab12984b611e9e33ee41e6
+
+ Reported-by: Oliver Roberts
+ Fixes #9238
+ Closes #9240
+
+Daniel Stenberg (28 Jul 2022)
+- [Sean McArthur brought this change]
+
+ hyper: enable obs-folded multiline headers
+
+ Closes #9216
+
+- connect: revert the use of IP*_RECVERR
+
+ The options were added in #6341 and d13179d, but cause problems: Lots of
+ POLLIN event occurs but recvfrom read nothing.
+
+ Reported-by: Tatsuhiro Tsujikawa
+ Fixes #9209
+ Closes #9215
+
+- [Marco Kamner brought this change]
+
+ docs: remove him/her/he/she from documentation
+
+ Closes #9208
- RELEASE-NOTES: synced
-
- and bump to 7.79.1
-
-Kamil Dudka (16 Sep 2021)
-- tests/sshserver.pl: make it work with openssh-8.7p1
-
- ... by not using options with no argument where an argument is required:
-
- === Start of file tests/log/ssh_server.log
- curl_sshd_config line 6: no argument after keyword "DenyGroups"
- curl_sshd_config line 7: no argument after keyword "AllowGroups"
- curl_sshd_config line 10: Deprecated option AuthorizedKeysFile2
- curl_sshd_config line 29: Deprecated option KeyRegenerationInterval
- curl_sshd_config line 39: Deprecated option RhostsRSAAuthentication
- curl_sshd_config line 40: Deprecated option RSAAuthentication
- curl_sshd_config line 41: Deprecated option ServerKeyBits
- curl_sshd_config line 45: Deprecated option UseLogin
- curl_sshd_config line 56: no argument after keyword "AcceptEnv"
- curl_sshd_config: terminating, 3 bad configuration options
- === End of file tests/log/ssh_server.log
-
- === Start of file log/sftp_server.log
- curl_sftp_config line 33: Unsupported option "rhostsrsaauthentication"
- curl_sftp_config line 34: Unsupported option "rsaauthentication"
- curl_sftp_config line 52: no argument after keyword "sendenv"
- curl_sftp_config: terminating, 1 bad configuration options
- Connection closed.
- Connection closed
- === End of file log/sftp_server.log
-
- Closes #7724
-
-Daniel Stenberg (15 Sep 2021)
-- hsts: handle unlimited expiry
-
- When setting a blank expire string, meaning unlimited, curl would pass
- TIME_T_MAX to getime_r() when creating the output, while on 64 bit
- systems such a large value cannot be convetered to a tm struct making
- curl to exit the loop with an error instead. It can't be converted
- because the year it would represent doesn't fit in the 'int tm_year'
- field!
-
- Starting now, unlimited expiry is instead handled differently by using a
- human readable expiry date spelled out as "unlimited" instead of trying
- to use a distant actual date.
-
- Test 1660 and 1915 have been updated to help verify this change.
-
- Reported-by: Jonathan Cardoso
- Fixes #7720
- Closes #7721
-
-- curl_multi_fdset: make FD_SET() not operate on sockets out of range
-
- The VALID_SOCK() macro was made to only check for FD_SETSIZE if curl was
- built to use select(), even though the curl_multi_fdset() function
- always and unconditionally uses FD_SET and needs the check.
-
- Reported-by: 0xee on github
- Fixes #7718
- Closes #7719
-
-- FAQ: add GOPHERS + curl works on data, not files
-
-Version 7.79.0 (14 Sep 2021)
-
-Daniel Stenberg (14 Sep 2021)
+
+- tool_getparam: make --doh-url "" switch it off
+
+ A possible future addition could be to parse the URL first too to verify
+ that it is valid before trying to use it.
+
+ Assisted-by: Jay Satiro
+ Closes #9207
+
+- mailmap: add rzrymiak on github
+
+Jay Satiro (26 Jul 2022)
+- ngtcp2: Fix build error due to change in nghttp3 prototypes
+
+ ngtcp2/nghttp3@4a066b2 changed nghttp3_conn_block_stream and
+ nghttp3_conn_shutdown_stream_write return from int to void.
+
+ Reported-by: jurisuk@users.noreply.github.com
+
+ Fixes https://github.com/curl/curl/issues/9204
+ Closes https://github.com/curl/curl/pull/9200
+
+Daniel Stenberg (26 Jul 2022)
+- [rzrymiak on github brought this change]
+
+ BUGS.md: improve language
+
+ Closes #9205
+
+- [Philip Heiduck brought this change]
+
+ cirrus.yml: replace py38-pip with py39-pip
+
+ Reported-by: Jay Satiro
+ Fixes #9201
+ Closes #9202
+
+- tool_getparam: fix cleanarg() for unicode builds
+
+ Use the correct type, and make cleanarg an empty macro if the cleaning
+ ability is absent.
+
+ Fixes #9195
+ Closes #9196
+
+ Reviewed-by: Jay Satiro
+ Reviewed-by: Marcel Raad
+
+Marc Hoersken (25 Jul 2022)
+- test3026: add support for Windows using native Win32 threads
+
+ Reviewed-by: Viktor Szakats
+ Reviewed-by: Jay Satiro
+ Reviewed-by: Daniel Stenberg
+
+ Follow up to 7ade9c50b35d95d47a43880c3097bebab7a7e690
+ Closes #9012
+
+Jay Satiro (25 Jul 2022)
+- [Evgeny Grin (Karlson2k) brought this change]
+
+ digest: fix memory leak, fix not quoted 'opaque'
+
+ Fix leak regression introduced by 3a6fe0c.
+
+ Closes https://github.com/curl/curl/pull/9199
+
+Daniel Stenberg (23 Jul 2022)
+- tests: several enumerated type cleanups
+
+ To please icc
+
+ Closes #9179
+
+- tool_paramhlp: fix "enumerated type mixed with another type"
+
+ Warning by icc
+
+ Closes #9179
+
+- tool_writeout: fix enumerated type mixed with another type
+
+ Closes #9179
+
+- tool_cfgable: make 'synthetic_error' a plain bool
+
+ The specific reason was not used.
+
+ Closes #9179
+
+- tool_paramhlp: make check_protocol return ParameterError
+
+ "enumerated type mixed with another type"
+
+ Closes #9179
+
+- tool_formparse: fix variable may be used before its value is set
+
+ Warning by icc
+
+ Closes #9179
+
+- sendf: skip storing HTTP headers if HTTP disabled
+
+ Closes #9179
+
+- url: enumerated type mixed with another type
+
+ Follow-up to 1c58e7ae99ce2030213f28b
+
+ Closes #9179
+
+- urldata: change second proxytype field to unsigned char to match
+
+ To avoid "enumerated type mixed with another type"
+
+ Closes #9179
+
+- http: typecast the httpreq assignment to avoid icc compiler warning
+
+ error #188: enumerated type mixed with another type
+
+ Closes #9179
+
+- urldata: make state.httpreq an unsigned char
+
+ To match set.method used for the same purpose.
+
+ Closes #9179
+
+- splay: avoid using -1 in unsigned variable
+
+ To fix icc compiler warning integer conversion resulted in a change of sign
+
+ Closes #9179
+
+- sendf: store the header type in an usigned char to avoid icc warnings
+
+ Closes #9179
+
+- multi: fix the return code from Curl_pgrsDone()
+
+ It does not return a CURLcode. Detected by the icc compiler warning
+ "enumerated type mixed with another type"
+
+ Closes #9179
+
+- sendf: make Curl_debug a void function
+
+ As virtually no called checked the return code, and those that did
+ wrongly treated it as a CURLcode. Detected by the icc compiler warning:
+ enumerated type mixed with another type
+
+ Closes #9179
+
+- http_chunks: remove an assign + typecast
+
+ As it caused icc to complain: "pointer cast involving 64-bit pointed-to
+ type"
+
+ Closes #9179
+
+- vtls: make Curl_ssl_backend() return the enum type curl_sslbackend
+
+ To fix the icc warning enumerated type mixed with another type
+
+ Closes #9179
+
+- curl-compilers.m4: make icc use -diag* options and disable two warnings
+
+ -wd and -we are deprecated and are now -diag-disable and -diag-error
+
+ Disable warning 1024 and 2259
+
+ Closes #9179
+
+- [Matthew Thompson brought this change]
+
+ GHA: add two Intel compiler CI jobs
+
+ Closes #9179
+
+- [Daniel Katz brought this change]
+
+ curl-functions.m4: check whether atomics can link rather than just compile
+
+ Some build toolchains support C11 atomics (i.e., _Atomic types), but
+ will not link the associated atomics runtime unless a flag is passed. In
+ such an environment, linking an application with libcurl.a can fail due
+ to undefined symbols for atomic load/store functions.
+
+ I encountered this behavior when upgrading curl to 7.84.0 and attempting
+ to build with Solaris Studio 12.6. Solaris provides the flag
+ -xatomic=[gcc | studio], allowing users to link to one of two atomics
+ runtime implementations. However, if the user does not provide this
+ flag, then neither runtime is linked. This led to builds failing in CI.
+
+ Closes #9190
+
+- [Rosen Penev brought this change]
+
+ curl-wolfssl.m4: add options header when building test code
+
+ Needed for certain configurations of wolfSSL. Otherwise, missing header
+ error may occur.
+
+ Tested with OpenWrt.
+
+ Closes #9187
+
+- ftp: use a correct expire ID for timer expiry
+
+ This was an accurate error pointed out by the icc warning: enumerated
+ type mixed with another type
+
+ Ref: #9179
+ Closes #9184
+
+- sendf: fix paused header writes since after the header API
+
+ Regression since d1e4a67
+
+ Reported-by: Sergey Ogryzkov
+ Fixes #9180
+ Closes #9182
+
+- mprintf: fix *dyn_vprintf() when out-of-memory
+
+ Follow-up to 0e48ac1f99a. Torture-testing 1455 would lead to a memory
+ leak otherwise.
+
+ Closes #9185
+
+- curl-confopts: remove leftover AC_REQUIREs
+
+ configure.ac:3488: warning: CURL_CHECK_FUNC_IOCTL is m4_require'd but not m4_defun'd
+ configure.ac:3488: warning: CURL_CHECK_FUNC_SETSOCKOPT is m4_require'd but not m4_defun'd
+
+ follow-up from 4d73854462f30
+
+ Closes #9183
+
+- file: fix icc enumerated type mixed with another type warning
+
+ Ref: #9179
+ Closes #9181
+
+Viktor Szakats (19 Jul 2022)
+- tidy-up: delete unused build configuration macros
+
+ Most of them feature guards:
+
+ - `CURL_INCLUDES_SYS_UIO` [1]
+ - `HAVE_ALLOCA_H` [2]
+ - `HAVE_CRYPTO_CLEANUP_ALL_EX_DATA` (unused since de71e68000c8624ea13f90b136f8734dd0fb1bdc)
+ - `HAVE_DLFCN_H`
+ - `HAVE_DLOPEN`
+ - `HAVE_DOPRNT`
+ - `HAVE_FCNTL`
+ - `HAVE_GETHOSTBYNAME` [3]
+ - `HAVE_GETOPT_H`
+ - `HAVE_GETPASS`
+ - `HAVE_GETPROTOBYNAME`
+ - `HAVE_GETSERVBYNAME`
+ - `HAVE_IDN_FREE*`
+ - `HAVE_INET_ADDR`
+ - `HAVE_IOCTL`
+ - `HAVE_KRB4`
+ - `HAVE_KRB_GET_OUR_IP_FOR_REALM`
+ - `HAVE_KRB_H`
+ - `HAVE_LDAPSSL_H`
+ - `HAVE_LDAP_INIT_FD`
+ - `HAVE_LIBDL`
+ - `HAVE_LIBNSL`
+ - `HAVE_LIBRESOLV*`
+ - `HAVE_LIBUCB`
+ - `HAVE_LL`
+ - `HAVE_LOCALTIME_R`
+ - `HAVE_MALLOC_H`
+ - `HAVE_MEMCPY`
+ - `HAVE_MEMORY_H`
+ - `HAVE_NETINET_IF_ETHER_H`
+ - `HAVE_NI_WITHSCOPEID`
+ - `HAVE_OPENSSL_CRYPTO_H`
+ - `HAVE_OPENSSL_ERR_H`
+ - `HAVE_OPENSSL_PEM_H`
+ - `HAVE_OPENSSL_PKCS12_H`
+ - `HAVE_OPENSSL_RAND_H`
+ - `HAVE_OPENSSL_RSA_H`
+ - `HAVE_OPENSSL_SSL_H`
+ - `HAVE_OPENSSL_X509_H`
+ - `HAVE_PEM_H`
+ - `HAVE_POLL`
+ - `HAVE_RAND_SCREEN`
+ - `HAVE_RAND_STATUS`
+ - `HAVE_RECVFROM`
+ - `HAVE_SETSOCKOPT`
+ - `HAVE_SETVBUF`
+ - `HAVE_SIZEOF_LONG_DOUBLE`
+ - `HAVE_SOCKIO_H`
+ - `HAVE_SOCK_OPTS`
+ - `HAVE_STDIO_H`
+ - `HAVE_STRCASESTR`
+ - `HAVE_STRFTIME`
+ - `HAVE_STRLCAT`
+ - `HAVE_STRNCMPI`
+ - `HAVE_STRNICMP`
+ - `HAVE_STRSTR`
+ - `HAVE_STRUCT_IN6_ADDR`
+ - `HAVE_TLD_H`
+ - `HAVE_TLD_STRERROR`
+ - `HAVE_UNAME`
+ - `HAVE_USLEEP`
+ - `HAVE_WINBER_H`
+ - `HAVE_WRITEV`
+ - `HAVE_X509_H`
+ - `LT_OBJDIR`
+ - `NEED_BASENAME_PROTO`
+ - `NOT_NEED_LIBNSL`
+ - `OPENSSL_NO_KRB5`
+ - `RECVFROM_TYPE*`
+ - `SIZEOF_LONG_DOUBLE`
+ - `STRERROR_R_TYPE_ARG3`
+ - `USE_YASSLEMUL`
+ - `_USRDLL` (from CMake) [4]
+
+ [1] Related parts in `m4/curl-functions.m4` and `configure.ac` might
+ also be deleted.
+
+ [2] Related comment can possibly be deleted in
+ `packages/vms/generate_config_vms_h_curl.com`.
+
+ [3] There are more instances of this in autotools, but I did not dare to
+ touch those. Looked like it's used to detect socket support.
+
+ [4] This is necessary for MFC (Microsoft Foundation Class) DLLs to
+ force linking MFC components statically to the DLL. `libcurl.dll`
+ does not use MFC, so we can delete this define.
+ Ref: https://docs.microsoft.com/cpp/build/regular-dlls-statically-linked-to-mfc
+
+ Script that can help finding unused settings like above:
+ ```shell
+
+ autoheader configure.ac # generate lib/curl_config.h.in
+
+ {
+ grep -o -E 'set\([A-Z][A-Z0-9_]{3,}' CMake/Platforms/WindowsCache.cmake | sed -E 's|set\(||g'
+ grep -o -E -h '#define +[A-Z][A-Z0-9_]{3,}' lib/config-*.h | sed -E 's|#define +||g'
+ grep -o -E '#cmakedefine +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.cmake | sed -E 's|#cmakedefine +||g'
+ grep -o -E '#undef +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.in | sed -E 's|#undef +||g'
+ } | sort -u | grep -v -F 'HEADER_CURL_' | while read -r def; do
+ c="$(git grep -w -F "${def}" | grep -v -E -c '(/libcurl\.tmpl|^lib/config-|^lib/curl_config\.h\.cmake|^CMakeLists\.txt|^CMake/Platforms/WindowsCache\.cmake|^packages/vms/config_h\.com|^m4/curl-functions\.m4|^acinclude\.m4|^configure\.ac)')"
+ if [ "${c}" = '0' ]; then
+ echo "${def}"
+ fi
+ done
+ ```
+
+ Reviewed-by: Daniel Stenberg
+ Closes #9044
+
+Daniel Stenberg (19 Jul 2022)
- RELEASE-NOTES: synced
-
- For the 7.79.0 release
-
-- THANKS: add contributors from 7.79.0 release cycle
-
-- FAQ: add two dev related questions
-
- 8.1 Why does curl use C89?
- 8.2 Will curl be rewritten?
-
- Spell-checked-by: Paul Johnson
- Closes #7715
-
-- zuul.d/jobs: disable three tests for *-openssl-disable-proxy
-
- ... as they mysteriously seem to permfail without being related to
- proxy.
-
- Closes #7714
-- [Patrick Monnerat brought this change]
+- cookie: treat a blank domain in Set-Cookie: as non-existing
+
+ This matches what RFC 6265 section 5.2.3 says.
- ftp,imap,pop3,smtp: reject STARTTLS server response pipelining
-
- If a server pipelines future responses within the STARTTLS response, the
- former are preserved in the pingpong cache across TLS negotiation and
- used as responses to the encrypted commands.
-
- This fix detects pipelined STARTTLS responses and rejects them with an
- error.
-
- CVE-2021-22947
-
- Bug: https://curl.se/docs/CVE-2021-22947.html
+ Extended test 31 to verify.
+
+ Fixes #9164
+ Reported-by: Gwen Shapira
+ Closes #9177
- [Patrick Monnerat brought this change]
- ftp,imap,pop3: do not ignore --ssl-reqd
-
- In imap and pop3, check if TLS is required even when capabilities
- request has failed.
-
- In ftp, ignore preauthentication (230 status of server greeting) if TLS
- is required.
-
- Bug: https://curl.se/docs/CVE-2021-22946.html
-
- CVE-2021-22946
-
-- [z2_ on hackerone brought this change]
-
- mqtt: clear the leftovers pointer when sending succeeds
-
- CVE-2021-22945
-
- Bug: https://curl.se/docs/CVE-2021-22945.html
-
-- zuul: bump the rustls job to use v0.7.2
-
- ... and add -lm when using a rust library.
-
- Closes #7701
-
-- RELEASE-PROCEDURE: add release dates from now to 8.0.0 in 2023
-
-- SECURITY-PROCESS: tweak a little to match current practices
-
- Closes #7713
-
-- http_proxy: fix the User-Agent inclusion in CONNECT
-
- It should not refer to the uagent string that is allocated and created
- for the end server http request, as that pointer may be cleared on
- subsequent CONNECT requests.
-
- Added test case 1184 to verify.
-
- Reported-by: T200proX7 on github
- Fixes #7705
- Closes #7707
-
-- Curl_hsts_loadcb: don't attempt to load if hsts wasn't inited
-
- Reported-by: Jonathan Cardoso
- Fixes #7710
- Closes #7711
+ base64: base64url encoding has no padding
-- [Tatsuhiro Tsujikawa brought this change]
+ See RFC4648 section 5 and RFC7540 section 3.2.1.
+
+ Suppress generation of '=' padding of base64url encoding. This is
+ accomplished by considering the string beginning at offset 64 in the
+ character table as the padding: this is "=" for base64, "" for base64url.
+
+ Also use strchr() to replace character search loops where possible.
+
+ Suppress erroneous comments about empty encoding results.
+
+ Adjust unit test 1302 to unpadded base64url encoding and add tests for
+ empty results.
+
+ Closes #9139
+
+- easyoptions: fix icc warning
+
+ easyoptions.c(360): error #188: enumerated type mixed with another type
+
+ Ref: #9156
+ Reported-by: Matthew Thompson
+ Closes #9176
+
+- [lwthiker brought this change]
+
+ h2h3: fix overriding the 'TE: Trailers' header
+
+ A 'TE: Trailers' header is explicitly replaced by 'te: trailers'
+ (lowercase) in Curl_pseudo_headers() when building the list of HTTP/2 or
+ HTTP/3 headers. However, this is then replaced again by the original
+ value due to a bug, resulting in the uppercased version being sent. Some
+ HTTP/2 servers reject the whole HTTP/2 stream when this is the case.
+
+ Closes #9170
+
+- lib3026: reduce the number of threads to 100
+
+ Down from 1000, to make it run and work in more systems.
+
+ Fixes #9172
+ Reported-by: Érico Nogueira Rolim
+ Closes #9173
+
+- doh: move doh related struct definitions to doh.h
+
+ and make 'dnstype' in 'struct dnsprobe' use the DNStype to fix the icc compiler warning:
+
+ doh.c(924): error #188: enumerated type mixed with another type
+
+ Reported-by: Matthew Thompson
+ Ref #9156
+ Closes #9174
+
+Viktor Szakats (17 Jul 2022)
+- Makefile.m32: stop trying to build libcares.a [ci skip]
+
+ Before this patch, `lib/Makefile.m32` had a rule to build `libcares.a` in
+ `-cares`-enabled builds, via c-ares's own `Makefile.m32`. Committed in
+ 2007 [1]. The commit message doesn't specifically address this particular
+ change. This logic comes from the times when c-ares was part of the curl
+ source tree, hence the special treatment.
+
+ This feature creates problems when building c-ares first, using CMake
+ and pointing `LIBCARES_PATH` to its install prefix, where `Makefile.m32`
+ is missing in such case. A sub-build for c-ares is undesired also when
+ c-ares had already been build via its own `Makefile.m32`.
+
+ To avoid the sub-build, this patch deletes its Makefile rule. After this
+ patch `libcares.a` needs to be manually built before using it in
+ `Makefile.m32`. Aligning it with the rest of dependencies.
+
+ [1] 46c92c0b806da041d7a5c6fb64dbcdc474d99b31
- ngtcp2: fix build with ngtcp2 and nghttp3
-
- ngtcp2_conn_client_new and nghttp3_conn_client_new are now macros.
- Check the wrapped functions instead.
-
- ngtcp2_stream_close callback now takes flags parameter.
-
- Closes #7709
-
-- write-out.d: clarify size_download/upload
-
- They show the number of "body" bytes transfered.
- Fixes #7702
- Closes #7706
-
-- http2: Curl_http2_setup needs to init stream data in all invokes
-
- Thus function was written to avoid doing multiple connection data
- initializations, which is fine, but since it also initiates stream
- related data it is crucial that it doesn't skip those even if called
- again for the same connection. Solved by moving the stream
- initializations before the "doing-it-again" check.
-
- Reported-by: Inho Oh
- Fixes #7630
- Closes #7692
-
-- url: fix compiler warning in no-verbose builds
-
- Follow-up from 2f0bb864c12
-
- Closes #7700
-
-- non-ascii: fix build errors from strerror fix
-
- Follow-up to 2f0bb864c12
-
- Closes #7697
-
-- parse_args: redo the warnings for --remote-header-name combos
-
- ... to avoid the memory leak risk pointed out by scan-build.
-
- Follow-up from 7a3e981781d6c18a
-
- Closes #7698
-
-- ngtcp2: adapt to new size defintions upstream
-
- Reviewed-by: Tatsuhiro Tsujikawa
- Closes #7699
-
-- rustls: add strerror.h include
-
- Follow-up to 2f0bb864c12
-
-- docs: the security list is reached at security at curl.se now
-
- Also update the FAQ section a bit to encourage users to rather submit
- security issues on hackerone than sending email.
-
- Closes #7689
-
-Marc Hoersken (9 Sep 2021)
-- runtests: add option -u to error on server unexpectedly alive
-
- Let's try to actually handle the server unexpectedly alive
- case by first making them visible on CI builds as failures.
-
- This is needed to detect issues with killing of the test
- servers completely including nested process chains with
- multiple PIDs per test server (including bash and perl).
-
- On Windows/cygwin platforms this is especially helpful with
- debugging PID mixups due to cygwin using its own PID space.
-
Reviewed-by: Daniel Stenberg
- Closes #7180
-
-Daniel Stenberg (9 Sep 2021)
-- opts docs: unify phrasing in NAME header
-
- - avoid writing "set ..." or "enable/disable ..." or "specify ..."
- *All* options for curl_easy_setopt() are about setting or enabling
- things and most of the existing options didn't use that way of
- description.
-
- - start with lowercase letter, unless abbreviation. For consistency.
-
- - Some additional touch-ups
-
- Closes #7688
-
-- strerror.h: remove the #include from files not using it
-
-- lib: don't use strerror()
-
- We have and provide Curl_strerror() internally for a reason: strerror()
- is not necessarily thread-safe so we should always try to avoid it.
-
- Extended checksrc to warn for this, but feature the check disabled by
- default and only enable it in lib/
-
- Closes #7685
-
-Daniel Gustafsson (8 Sep 2021)
-- cirrus: Add FreeBSD 13.0 job and disable sanitizer build
-
- As alluded to the in the now removed comment, a 13.0 image became
- available and is now ready to be used.
-
- The sanitizer builds were running on the 12.1 image which since has
- been removed from the config, leaving the builds not running at all.
- When enabled it turns out that they don't actually work due to very
- long timeouts in executing the tests, so keep the disabled for now
- but a bit more controlled.
-
- Closes #7592
-
-Daniel Stenberg (8 Sep 2021)
-- copyrights: update copyright year ranges
+ Closes #9169
-- RELEASE-NOTES: synced
+Daniel Stenberg (17 Jul 2022)
+- curl: writeout: fix repeated header outputs
-- INTERNALS: c-ares has a new home: c-ares.org
+ The function stored a terminating zero into the buffer for convenience,
+ but when on repeated calls that would cause problems. Starting now, the
+ passed in buffer is not modified.
-- docs: remove experimental mentions from HSTS and MQTT
-
- Reported-by: Jonathan Cardoso
- Bug: https://github.com/curl/curl/pull/6700#issuecomment-913792863
- Closes #7681
+ Reported-by: highmtworks on github
+ Fixes #9150
+ Closes #9152
-- [Cao ZhenXiang brought this change]
+- curl_multi_timeout.3: clarify usage
- curl: add warning for incompatible parameters usage
-
- --continue-at - and --remote-header-name are known incompatible parameters
-
- Closes #7674
+ Fixes #9155
+ Closes #9157
+ Reported-by: jvvprasad78 on github
-- [git-bruh brought this change]
+- mprintf: make dprintf_formatf never return negative
- examples/*hiperfifo.c: fix calloc arguments to match function proto
-
- Closes #7678
+ This function no longer returns a negative value if the formatting
+ string is bad since the return value would sometimes be propagated as a
+ return code from the mprintf* functions and they are documented to
+ return the length of the output. Which cannot be negative.
-- INTERNALS: bump c-ares requirement to 1.16.0
-
- Since ba904db0705c93 we use ares_getaddrinfo, added in c-ares 1.16.0
+ Fixes #9149
+ Closes #9151
+ Reported-by: yiyuaner on github
-- curl: stop retry if Retry-After: is longer than allowed
-
- If Retry-After: specifies a period that is longer than what fits within
- --retry-max-time, then stop retrying immediately.
-
- Added test 366 to verify.
-
- Reported-by: Kari Pahula
- Fixes #7675
- Closes #7676
+Viktor Szakats (17 Jul 2022)
+- trace: 0x7F character is non-printable
-- [Michał Antoniak brought this change]
+ `0x7F` is `DEL`, a non-printable symbol, so print it as
+ `UNPRINTABLE_CHAR`.
- mbedtls: avoid using a large buffer on the stack
-
- Use dynamic memory allocation for the buffer used in checking "pinned
- public key". The PUB_DER_MAX_BYTES parameter with default settings is
- set to a value greater than 2kB.
-
- Co-authored-by: Daniel Stenberg
- Closes #7586
-
-- configure: make --disable-hsts work
-
- The AC_ARG_ENABLE() macro itself uses a variable called
- 'enable_[option]', so when our script also used a variable with that
- name for the purpose of storing what the user wants, it also
- accidentally made it impossible to switch off the feature with
- --disable-hsts. Fix this by renaming our variable.
-
- Reported-by: Michał Antoniak
- Fixes #7669
- Closes #7672
+ Reported-by: MasterInQuestion on github
+ Fixes #9162
+ Closes #9166
-Jay Satiro (5 Sep 2021)
-- config.d: note that curlrc is used even when --config
-
- Bug: https://github.com/curl/curl/pull/7666#issuecomment-912214751
- Reported-by: Viktor Szakats
-
- Closes https://github.com/curl/curl/pull/7667
+- doh: use https protocol by default
-Daniel Stenberg (4 Sep 2021)
-- RELEASE-NOTES: synced
+ The only allowed protocol is https, so it makes sense to use that
+ by default if not passed explicitly by the user.
-- test1173: check references to libcurl options
-
- ... that they refer to actual existing libcurl options.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7656
-
-- CURLOPT_UNIX_SOCKET_PATH.3: remove nginx reference, add see also
-
- Closes #7656
-
-- opt-docs: verify man page sections + order
-
- In every libcurl option man page there are now 8 mandatory sections that
- must use the right name in the correct order and test 1173 verifies
- this. Only 14 man pages needed adjustments.
-
- The sections and the order is as follows:
-
- - NAME
- - SYNOPSIS
- - DESCRIPTION
- - PROTOCOLS
- - EXAMPLE
- - AVAILABILITY
- - RETURN VALUE
- - SEE ALSO
-
- Reviewed-by: Daniel Gustafsson
- Closes #7656
-
-- opt-docs: make sure all man pages have examples
-
- Extended manpage-syntax.pl (run by test 1173) to check that every man
- page for a libcurl option has an EXAMPLE section that is more than two
- lines. Then fixed all errors it found and added examples.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7656
-
-- get.d: provide more useful examples
-
- Closes #7668
-
-- page-header: add GOPHERS, simplify wording in the 1st para
-
- Closes #7665
-
-- connect: get local port + ip also when reusing connections
-
- Regression. In d6a37c23a3c (7.75.0) we removed the duplicated storage
- (connection + easy handle), so this info needs be extracted again even
- for re-used connections.
-
- Add test 435 to verify
-
- Reported-by: Max Dymond
- Fixes #7660
- Closes #7662
-
-Marcel Raad (2 Sep 2021)
-- multi: fix compiler warning with `CURL_DISABLE_WAKEUP`
-
- `use_wakeup` is unused in this case.
-
- Closes https://github.com/curl/curl/pull/7661
-
-Daniel Stenberg (1 Sep 2021)
-- tests: adjust the tftpd output to work with hyper mode
-
- By making them look less like http headers, the hyper mode "tweak"
- doesn't interfere.
-
- Enable test 2002 and 2003 in hyper builds (and 1280 which is unrelated
- but should be enabled).
-
- Closes #7658
-
-Daniel Gustafsson (1 Sep 2021)
-- [Gisle Vanem brought this change]
+ Reported-by: MasterInQuestion on github
+ Reviewed-by: Jay Satiro
+ Fixes #9163
+ Closes #9165
- openssl: annotate SSL3_MT_SUPPLEMENTAL_DATA
-
- This adds support for the previously unhandled supplemental data which
- in -v output was printed like:
-
- TLSv1.2 (IN), TLS header, Unknown (23):
-
- These will now be printed with proper annotation:
-
- TLSv1.2 (OUT), TLS header, Supplemental data (23):
-
- Closes #7652
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+- openssl: fix BoringSSL symbol conflicts with LDAP and Schannel
+
+ Same issue as here [1], but this time when building curl with BoringSSL
+ for Windows with LDAP(S) or Schannel support enabled.
+
+ Apply the same fix [2] for these source files as well.
+
+ This can also be fixed by moving `#include "urldata.h"` _before_
+ including `winldap.h` and `schnlsp.h` respectively. This seems like
+ a cleaner fix, though I'm not sure why it works and if it has any
+ downside.
+
+ [1] https://github.com/curl/curl/issues/5669
+ [2] https://github.com/curl/curl/commit/fbe07c6829ba8c5793c84c2856526e19e9029ab9
+
+ Co-authored-by: Jay Satiro
+ Closes #9110
+
+Daniel Stenberg (13 Jul 2022)
+- asyn-thread: make getaddrinfo_complete return CURLcode
+
+ ... as the only caller that cares about what it returns assumes that
+ anyway. This caused icc to warn:
+
+ asyn-thread.c(505): error #188: enumerated type mixed with another type
+ result = getaddrinfo_complete(data);
+
+ Repoorted-by: Matthew Thompson
+ Bug: https://github.com/curl/curl/issues/9081#issuecomment-1182143076
+ Closes #9146
+
+- easy_lock: fix build with icc
+
+ The Intel compiler tries to look like GCC *and* clang *and* it lies in
+ its __has_builtin() function (returns true when it should return false),
+ so override it.
+
+ Reported-by: Matthew Thompson
+ Fixes #9081
+ Closes #9144
+
+- configure: fix --disable-headers-api
-Daniel Stenberg (1 Sep 2021)
-- curl.1: provide examples for each option
-
- The file format for each option now features a "Example:" header that
- can provide one or more examples that get rendered appropriately in the
- output. All options MUST have at least one example or gen.pl complains
- at build-time.
-
- This fix also does a few other minor format and consistency cleanups.
-
- Closes #7654
-
-- progress: make trspeed avoid floats
-
- and compiler warnings for data conversions.
-
Reported-by: Michał Antoniak
- Fixes #7645
- Closes #7653
+ Fixes #9134
+ Closes #9143
+
+- test3026: require 'threadsafe'
+
+ Reported-by: Sukanya Hanumanthu
+ Fixes #9141
+ Closes #9142
+
+- [Even Rouault brought this change]
+
+ CMake: link curl to its dependencies with PRIVATE
+
+ The current PUBLIC visibility causes issues for downstream users.
+ Cf https://github.com/OSGeo/PROJ/pull/3172#issuecomment-1157942986
+
+ Reviewed-by: Jakub Zakrzewski
+ Closes #9125
+
+- [Even Rouault brought this change]
+
+ CMake: remove APPEND in export(TARGETS)
+
+ When running cmake several times, new content was appended to already
+ existing generated files, which is not appropriate
+
+ Reviewed-by: Jakub Zakrzewski
+ Closes #9124
+
+- [Tatsuhiro Tsujikawa brought this change]
-- test365: verify response with chunked AND Content-Length headers
+ ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks
-- http: ignore content-length if any transfer-encoding is used
-
- Fixes #7643
- Closes #7649
+ Closes #9135
- RELEASE-NOTES: synced
-- Revert "http2: skip immediate parsing of payload following protocol switch"
-
- This reverts commit 455a63c66f188598275e87d32de2c4e8e26b80cb.
-
- Reported-by: Tk Xiong
- Fixes #7633
- Closes #7648
-
-- KNOWN_BUGS: HTTP/3 doesn't support client certs
-
- Closes #7625
-
-- mailing lists: move from cool.haxx.se to lists.haxx.se
-
-- http_proxy: only wait for writable socket while sending request
-
- Otherwise it would wait socket writability even after the entire CONNECT
- request has sent and make curl basically busy-loop while waiting for a
- response to come back.
-
- The previous fix attempt in #7484 (c27a70a591a4) was inadequate.
-
- Reported-by: zloi-user on github
- Reported-by: Oleguer Llopart
- Fixes #7589
- Closes #7647
-
-- http: disallow >3-digit response codes
-
- Make the built-in HTTP parser behave similar to hyper and reject any
- HTTP response using more than 3 digits for the response code.
-
- Updated test 1432 accordingly.
- Enabled test 1432 in the hyper builds.
-
- Closes #7641
+Viktor Szakats (11 Jul 2022)
+- build: improve OS string in CMake and `config-win32.h`
+
+ This patch makes CMake fill the "OS string" with the value of
+ `CMAKE_C_COMPILER_TARGET`, if passed. This typically contains a triplet,
+ the same we can pass to `./configure` via `--host=`.
+
+ For non-CMake, non-autotools, Windows builds, this patch adds the ability
+ to override the default `OS` value in `lib/config-win32.h`.
+
+ With these its possible to get the same OS string across the three build
+ systems.
+
+ This patch supersedes the earlier, partial, CMake-only solution:
+ 435f395f3f8c11eebfcc243ca55ebcc11a19b8b8, thus retiring the
+ `CURL_OS_SUFFIX` CMake option.
+
+ Reviewed-by: Jay Satiro
+ Closes #9117
+
+- Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip]
+
+ They allow to override the hardcoded values for the `windres` and `strip`
+ tools, complementing the existing set of `CURL_{CC,AR,RANLIB}` variables.
+
+ `CURL_RC` comes handy when using LLVM tools with `CROSSPREFIX=llvm-` and
+ `CURL_CC=clang` set on current latest debian:unstable or earlier, where
+ `llvm-windres` is missing, and a `CURL_RC=<triplet>-windres` fixes it.
+ Hopefully this will be fixed in the llvm package. FWIW `llvm-windres`
+ does exist in Homebrew llvm, MSYS2 llvm and llvm-mingw.
+
+ Reviewed-by: Daniel Stenberg
+ Closes #9132
+
+Daniel Stenberg (10 Jul 2022)
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: fix stall or busy loop on STOP_SENDING with upload data
+
+ Fixes #9122
+ Closes #9123
+
+- [Xiaoke Wang brought this change]
+
+ tool_operate: better cleanup of easy handle in exit path
+
+ Closes #9114
+
+- [Xiaoke Wang brought this change]
+
+ getinfo: return better error on NULL as first argument
+
+ Closes #9114
+
+- tool_getparam: repair cleanarg
+
+ Regression since 9e5669f.
+
+ Make sure the "cleaning" of command line arguments is done on the
+ original argv[] pointers. As a bonus, it also exits better on out of
+ memory error.
+
+ Reported-by: Litter White
+ Fixes #9128
+ Closes #9130
+
+Jay Satiro (10 Jul 2022)
+- docs: explain curl_easy_escape/unescape curl handle is ignored
+
+ 26101421 (precedes 7.82.0) removed character conversion support used by
+ very old legacy operating systems and since then the curl handle passed
+ to curl_easy_escape/unescape is always ignored.
+
+ Bug: https://github.com/curl/curl/discussions/9115
+ Reported-by: Ted Lyngmo
+
+ Closes https://github.com/curl/curl/pull/9121
+
+Viktor Szakats (8 Jul 2022)
+- openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL
+
+ BoringSSL doesn't keep a version number, and doesn't self-identify itself
+ via any other revision number via its own headers. We can identify
+ BoringSSL revisions by their commit hash. This hash is typically known by
+ the builder. This patch adds a way to pass this hash to libcurl, so that
+ it can display in the curl version string:
+
+ For example:
+
+ `CFLAGS=-DCURL_BORINGSSL_VERSION="c239ffd0"`
+
+ ```
+ curl 7.84.0 (x86_64-w64-mingw32) libcurl/7.84.0 BoringSSL/c239ffd0 (Schannel) zlib/1.2.12 [...]
+ Release-Date: 2022-06-27
+ Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 [...]
+ Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos [...]
+ ```
+
+ The setting is optional, and if not passed, BoringSSL will appear without
+ a version number, like before this patch.
+
+ Closes #9113
+
+Jay Satiro (8 Jul 2022)
+- escape: remove outdated comment
+
+ Bug: https://github.com/curl/curl/discussions/9115
+ Reported-by: Ted Lyngmo
- [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: stop buffering crypto data
-
- Stop buffering crypto data because libngtcp2 now buffers submitted
- crypto data.
-
- Closes #7637
-
-- test1280: CRLFify the response to please hyper
-
- Closes #7639
-
-- tests: enable test 1129 for hyper builds
-
- Closes #7638
-
-- curl: better error message when -O fails to get a good name
-
- Due to how this currently works internally, it needs a working initial
- file name to store contents in, so it may still fail even with -J is
- used (and thus accepting a name from content-disposition:) if the file
- name part of the URL isn't "good enough".
-
- Fixes #7628
- Closes #7635
-
-- curl_easy_setopt: tweak the string copy wording
-
- Reported-by: Yaobin Wen
- Fixes #7632
- Closes #7634
+ ngtcp2: Fix missing initialization of nghttp3_nv.flags
+
+ Closes https://github.com/curl/curl/pull/9118
+
+Daniel Stenberg (6 Jul 2022)
+- [Brad Forschinger brought this change]
+
+ netrc.d: remove spurious quote
+
+ Closes #9111
+
+Viktor Szakats (6 Jul 2022)
+- Makefile.m32: add `NGTCP2_LIBS` option [ci skip]
+
+ Makefile.m32's ngtcp2 has its two libs hardwired for OpenSSL.
+ Add `NGTCP2_LIBS` envvar to override them with a custom list,
+ making it possible to use BoringSSL, or any other backend.
+
+ Closes #9109
+
+Jay Satiro (6 Jul 2022)
+- [Evgeny Grin (Karlson2k) brought this change]
+ digest: fix missing increment of 'nc' value for auth-int
+
+ - Increment nc regardless of qop type.
+
+ Prior to this change nc was only incremented for qop type auth even
+ though libcurl sends nc with any qop.
+
+ Closes https://github.com/curl/curl/pull/9090
+
+Daniel Stenberg (5 Jul 2022)
- RELEASE-NOTES: synced
+ Bumped to 7.85.0
+
+- urldata: reduce size of four ftp related members
+
+ ftp_filemethod, ftpsslauth and ftp_ccc are now uchars
+
+ accepttimeout is now unsigned int - almost 50 days ought to be enough
+ for this value.
+
+ Closes #9106
+
+- urldata: reduce three type-members from int to uchar
+
+ - timecondition
+ - proxytype
+ - method
+
+ ... previously used their enum type in the struct, which made them
+ unnecesarily large.
+
+ Closes #9105
+
+- CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name
+
+ Starting now, CURLOPT_FTP_RESPONSE_TIMEOUT is the alias instead of the
+ other way around.
+
+ Since 7.20.0, CURLOPT_SERVER_RESPONSE_TIMEOUT has existed as an alias
+ but since the option is for more protocols than FTP the more "correct"
+ version of the option is the "server" one so now we switch.
+
+ Closes #9104
+
+- urldata: make 'ftp_create_missing_dirs' a uchar
+
+ It only ever holds the values 0-2.
+
+ Closes #9103
+
- [Don J Olmstead brought this change]
- cmake: sync CURL_DISABLE options
-
- Adds the full listing of CURL_DISABLE options to the CMake build. Moves
- all option code, except for CURL_DISABLE_OPENSSL_AUTO_LOA_CONFIG which
- resides near OpenSSL configuration, to the same block of code. Also
- sorts the options here and in the cmake config header.
-
- Additionally sorted the CURL-DISABLE listing and fixed the
- CURL_DISABLE_POP3 option.
-
- Closes #7624
-
-Jay Satiro (25 Aug 2021)
-- KNOWN_BUGS: FTPS upload data loss with TLS 1.3
-
- Bug: https://github.com/curl/curl/issues/6149
- Reported-by: Bylon2@users.noreply.github.com
-
- Closes https://github.com/curl/curl/pull/7623
-
-Daniel Stenberg (24 Aug 2021)
-- cmake: avoid poll() on macOS
-
- ... like we do in configure builds. Since poll() on macOS is not
- reliable enough.
-
- Reported-by: marc-groundctl
- Fixes #7595
- Closes #7619
-
-- c-hyper: handle HTTP/1.1 => HTTP/1.0 downgrade on reused connection
-
- Enable test 1074
-
- Closes #7617
-
-- c-hyper: deal with Expect: 100-continue combined with POSTFIELDS
-
- Enable test 1130 and 1131
-
- Closes #7616
-
-- [a1346054 brought this change]
-
- tests: be explicit about using 'python3' instead of 'python'
-
- This fixes running tests in virtualenvs (or on distros) that no longer
- have a symlink from python to python2 or python3.
-
- Closes #7602
-
-- [a1346054 brought this change]
-
- scripts: invoke interpreters through /usr/bin/env
-
- Closes #7602
-
-- DISABLED: enable 11 more tests for hyper builds
-
- Closes #7612
-
-- setopt: enable CURLOPT_IGNORE_CONTENT_LENGTH for hyper
-
- Since this option is also used for FTP, it needs to work to set for
- applications even if hyper doesn't support it for HTTP. Verified by test
- 1137.
-
- Updated docs to specify that the option doesn't work for HTTP when using
- the hyper backend.
-
- Closes #7614
-
-- test1138: remove trailing space to make work with hyper
-
- Closes #7613
-
-- libcurl-errors.3: clarify two CURLUcode errors
-
- CURLUE_BAD_HANDLE and CURLUE_BAD_PARTPOINTER should be for "bad" or
- wrong pointers in a generic sense, not just for NULL pointers.
-
+ cmake: support ngtcp2 boringssl backend
+
+ Update the ngtcp2 find module to detect the boringssl backend. Determine
+ if the underlying OpenSSL implementation is BoringSSL and if so use that
+ as the ngtcp2 backend.
+
+ Reviewed-by: Jakub Zakrzewski
+ Closes #9065
+
+- urldata: change 4 timeouts to unsigned int from long
+
+ They're not used for that long times anyway, 32 bit milliseconds is long
+ enough.
+
+ Closes #9101
+
+- urldata: make 'use_netrc' a uchar
+
+ Closes #9102
+
+- urldata: make 'buffer_size' an unsigned int
+
+ It is already capped at READBUFFER_MAX which fits easily in 32 bits.
+
+ Closes #9098
+
+- urldata: remove the unused 'rtspversion' struct member
+
+ Closes #9100
+
+- urldata: make 'use_port' an usigned short
+
+ ... instead of a long. It is already enforced to not attempt to set any
+ value outside of 16 bits unsigned.
+
+ Closes #9099
+
+- urldata: store dns cache timeout in an int
+
+ 68 years ought to be enough for most.
+
+ Closes #9097
+
+- curl: proto2num: make sure obuf is inited
+
+ Detected by Coverity. CID 1507052.
+
+ Closes #9096
+
+- cookie: use %zu to infof() for size_t values
+
+ Detected by Coverity. CID 1507051
+ Closes #9095
+
+Viktor Szakats (4 Jul 2022)
+- makefile.m32: add support for custom ARCH [ci skip]
+
+ When building curl for target platform other than x64 and x86, it is now
+ possible to pass `ARCH=custom`, that will omit all hardcoded logic for
+ setting up CFLAGS/LDFLAGS/RCFLAGS for these platforms, and let these be
+ customized via `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, and a newly
+ added one for the resource compiler: `CURL_RCFLAG_EXTRAS`.
+
+ This makes it possible to use `makefile.m32` to build for ARM64 for
+ example.
+
+ Reviewed-by: Daniel Stenberg
+ Closes #9092
+
+- cmake: do not force Windows target versions
+
+ The goal of this patch is to avoid CMake forcing specific Windows
+ versions and rely on toolchain defaults or manual selection instead.
+ This gives back control to the user. This also brings CMake closer to
+ how autotools and `Makefile.m32` behaves in this regard.
+
+ - CMake had a setting `ENABLE_INET_PTON` defaulting to `ON`, which did
+ nothing else than fixing the Windows build target to Vista. This also
+ happened when the toolchain did not have Vista support (e.g. original
+ MinGW), breaking such builds.
+
+ In other environments it did not make a user-facing difference,
+ because libcurl has its own pton() implementation, so it works well
+ with or without Vista's inet_pton().
+
+ This patch drops this setting. inet_pton() is now used whenever
+ building for Vista or newer, either when requested manually or by
+ default with modern toolchains (e.g. mingw-w64). Older envs will fall
+ back to curl's pton().
+
+ Ref: https://github.com/curl/curl/pull/9027#issuecomment-1164157604
+ Ref: https://github.com/curl/curl/pull/8997#issuecomment-1164344155
+
+ - When the user did no select a Windows target version manually, stop
+ explicitly targeting Windows XP, and instead use the toolchain default.
+
+ This may pose an issue with old toolchains defaulting to pre-XP
+ targets. In such case you must manually target Windows XP via:
+ `-DCURL_TARGET_WINDOWS_VERSION=0x0501`
+ or
+ `-DCMAKE_C_FLAGS=-D_WIN32_WINNT=0x0501`
+
Reviewed-by: Jay Satiro
-
- Ref: #7605
- Closes #7611
-
-Jay Satiro (23 Aug 2021)
-- symbols-in-versions: fix CURLSSLBACKEND_QSOSSL last used version
-
- ... and also change the 'Removed' column name to 'Last' since that
- column is for the last version to contain the symbol.
-
- Closes https://github.com/curl/curl/pull/7609
-
-Daniel Stenberg (23 Aug 2021)
-- urlapi.c:seturl: assert URL instead of using if-check
-
- There's no code flow possible where this can happen. The assert makes
- sure it also won't be introduced undetected in the future.
-
- Closes #7610
-
-- curl-openssl.m4: show correct output for OpenSSL v3
-
- Using 3.0.0 versions configure should now show this:
-
- checking for OpenSSL headers version... 3.0.0 - 0x300
- checking for OpenSSL library version... 3.0.0
- checking for OpenSSL headers and library versions matching... yes
-
- This output doesn't actually change what configure generates but is only
- "cosmetic".
-
- Reported-by: Randall S. Becker
- Fixes #7606
- Closes #7608
-
-Jay Satiro (22 Aug 2021)
-- mksymbolsmanpage.pl: Fix showing symbol's last used version
-
- Prior to this change the symbol's deprecated version was erroneously
- shown as its last used version.
-
- Bug: https://github.com/curl/curl/commit/4e53b94#commitcomment-55239509
- Reported-by: i-ky@users.noreply.github.com
-
-Daniel Stenberg (21 Aug 2021)
-- mksymbolsmanpage.pl: match symbols case insenitively
-
- Follow-up to 4e53b9430c750 which made this bug show.
-
- Reported-by: i-ky
- Bug: https://github.com/curl/curl/commit/4e53b9430c7504de8984796e2a2091ec16f27136#commitcomment-55239253
- Closes #7607
-
-- asyn-ares: call ares_freeaddrinfo() to clean up addrinfo results
-
- As this leaks memory otherwise
-
- Follow-up to ba904db0705c931
-
- Closes #7599
-
-- [Ehren Bendler brought this change]
-
- wolfssl: clean up wolfcrypt error queue
-
- If wolfSSL is built in certain ways (OPENSSL_EXTRA or Debug), the error
- queue gets added on to for each session and never freed. Fix it by
- calling ERR_clear_error() like in vtls/openssl when needed. This func is
- a no-op in wolfcrypt if the error queue is not enabled.
-
- Closes #7594
-
-- man pages: remove trailing whitespaces
-
- Extended test 1173 (via the manpage-syntax.pl script) to detect and warn
- for them.
-
- Ref: #7602
- Reported-by: a1346054 on github
- Closes #7604
-
-- mailmap: add Gleb Ivanovsky
-
-- config.d: escape the backslash properly
-
- Closes #7603
+ Reviewed-by: Marcel Raad
+ Closes #9046
-- [Don J Olmstead brought this change]
+- windows: improve random source
+
+ - Use the Windows API to seed the fallback random generator.
+
+ This ensures to always have a random seed, even when libcurl is built
+ with a vtls backend lacking a random generator API, such as rustls
+ (experimental), GSKit and certain mbedTLS builds, or, when libcurl is
+ built without a TLS backend. We reuse the Windows-specific random
+ function from the Schannel backend.
+
+ - Implement support for `BCryptGenRandom()` [1] on Windows, as a
+ replacement for the deprecated `CryptGenRandom()` [2] function.
+
+ It is used as the secure random generator for Schannel, and also to
+ provide entropy for libcurl's fallback random generator. The new
+ function is supported on Vista and newer via its `bcrypt.dll`. It is
+ used automatically when building for supported versions. It also works
+ in UWP apps (the old function did not).
+
+ - Clear entropy buffer before calling the Windows random generator.
+
+ This avoids using arbitrary application memory as entropy (with
+ `CryptGenRandom()`) and makes sure to return in a predictable state
+ when an API call fails.
+
+ [1] https://docs.microsoft.com/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
+ [2] https://docs.microsoft.com/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom
+
+ Closes #9027
+
+Daniel Stenberg (4 Jul 2022)
+- setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR
+
+ ... as replacements for deprecated CURLOPT_PROTOCOLS and
+ CURLOPT_REDIR_PROTOCOLS as these new ones do not risk running into the
+ 32 bit limit the old ones are facing.
+
+ CURLINFO_PROTCOOL is now deprecated.
+
+ The curl tool is updated to use the new options.
+
+ Added test 1597 to verify the libcurl protocol parser.
+
+ Closes #8992
+
+- digest: simplify a switch() to a simple if
+
+- digest: provide a special bit for "sess" algos
+
+ Also shortened the names and moved them to the .c file since they are
+ private for this source file only. Also made them #defines instead of
+ enum.
+
+ Closes #9079
+
+Jay Satiro (4 Jul 2022)
+- [Thomas Weißschuh brought this change]
+
+ select: do not return fatal error on EINTR from poll()
+
+ The same was done for select() in 5912da25 but poll() was missed.
+
+ Bug: https://bugs.archlinux.org/task/75201
+ Reported-by: Alexandre Bury (gyscos at archlinux)
+
+ Ref: https://github.com/curl/curl/issues/8921
+ Ref: https://github.com/curl/curl/pull/8961
+ Ref: https://github.com/curl/curl/commit/5912da25#r77584294
+
+ Closes https://github.com/curl/curl/pull/9091
+
+- [Kai Pastor brought this change]
+
+ cmake: fix build for mingw cross compile
+
+ - Change normaliz lib name to all lowercase.
+
+ This is from a standing patch in vcpkg:
+ Mingw has libnormaliz.a. For case-sensitive file systems (e.g. cross
+ builds from Linux), the spelling must match exactly.
+
+ Closes https://github.com/curl/curl/pull/9084
+
+- easy_lock: fix build for mingw
+
+ - Define SRWLOCK symbols missing in some mingw environments.
+
+ Closes https://github.com/curl/curl/pull/8997
+
+Daniel Stenberg (2 Jul 2022)
+- tool_progress: avoid division by zero in parallel progress meter
+
+ Reported-by: Brian Carpenter
+ Fixes #9082
+ Closes #9083
+
+- http_aws_sigv4.c: remove two unusued includes
+
+ Closes #9080
+
+- .mailmap: additional edit
+
+ Follow-up to 861e2a8aca6c7 so that Evgeny appears with the same in git
+ logs even when using old email.
- curl_setup.h: sync values for HTTP_ONLY
-
- The values for HTTP_ONLY differed between CMakeLists.txt and
- curl_setup.h. Sync them and sort the values in curl_setup.h to make it
- easier to spot differences.
-
- Closes #7601
-
-Jay Satiro (21 Aug 2021)
-- configure: set classic mingw minimum OS version to XP
-
- - If the user has not specified a minimum OS version (via WINVER or
- _WIN32_WINNT macros) then set it to Windows XP.
-
- Prior to this change classic MinGW defaulted the minimum OS version
- to Windows NT 4.0 which is way too old. At least Windows XP is needed
- for getaddrinfo (which resolves hostnames to IPv6 addresses).
-
- Ref: https://github.com/curl/curl/issues/7483#issuecomment-891597034
-
- Closes https://github.com/curl/curl/pull/7581
-
-- schannel: Work around typo in classic mingw macro
-
- - Define ALG_CLASS_DHASH (the typo from the include) to ALG_CLASS_HASH.
-
- Prior to this change there was an incomplete fix to ignore the
- CALG_TLS1PRF macro on those versions of MinGW where it uses the
- ALG_CLASS_DHASH typoed macro.
-
- Ref: 48cf45c
- Ref: https://osdn.net/projects/mingw/ticket/38391
- Ref: https://github.com/curl/curl/issues/2924
-
- Closes https://github.com/curl/curl/pull/7580
-
-Daniel Stenberg (20 Aug 2021)
- RELEASE-NOTES: synced
-- http_proxy: fix user-agent and custom headers for CONNECT with hyper
-
- Enable test 287
-
- Closes #7598
-
-- c-hyper: initial support for "dumping" 1xx HTTP responses
-
- With the use hyper_request_on_informational()
-
- Enable test 155 and 158
-
- Closes #7597
-
-Marc Hoersken (18 Aug 2021)
-- tests/*server.pl: flush output before executing subprocess
-
- Also avoid shell processes staying around by using exec.
- This is necessary to avoid output data being buffering
- inside the process chain of Perl, Bash/Shell and our
- test server binaries. On non-Windows systems the exec
- will also make the subprocess replace the intermediate
- shell, but on Windows it will at least bind the processes
- together since there is no real fork or exec available.
-
- See: https://cygwin.com/cygwin-ug-net/highlights.html
- and: https://docs.microsoft.com/cpp/c-runtime-library/exec-wexec-functions
- Ref: https://github.com/curl/curl/pull/7530#issuecomment-900949010
-
- Reviewed-by: Daniel Stenberg
+ bumped to 7.84.1
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+ .mailmap: updated
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+ THANKS: merged two entries for Evgeny Grin
+
+ Also updated THANKS-filter file
+
+ Closes #9076
+
+- [Jilayne Lovejoy brought this change]
+
+ lib/curl_path.c: add ISC to license expression
+
+ THe text of the ISC license is in this file, so the SPDX license
+ expression should be updated
+
+ Closes #9073
+
+- [Sean McArthur brought this change]
+
+ hyper: use wakers for curl pause/resume
+
+ Closes #9070
+
+Viktor Szakats (30 Jun 2022)
+- Makefile.m32: do not set the libcurl.rc debug flag [ci skip]
+
+ Delete `-DDEBUGBUILD=0` windres option. This was likely meant to
+ disable VS_FF_DEBUG in FILEFLAGS, but any assigned value enabled
+ it instead. Delete this unnecessary option and thus sync up with
+ how CMake compiles libcurl.rc by default.
+
Reviewed-by: Jay Satiro
- Closes #7530
-
-- CI: use GitHub Container Registry instead of Docker Hub
-
- Avoid limits on Docker Hub and improve image pull/download speed.
-
- Closes #7587
-
-Daniel Stenberg (18 Aug 2021)
-- openssl: when creating a new context, there cannot be an old one
-
- Remove the previous handling that would call SSL_CTX_free(), and instead
- add an assert that halts a debug build if there ever is a context
- already set at this point.
-
- Closes #7585
-
-Jay Satiro (18 Aug 2021)
-- KNOWN_BUGS: Renegotiate from server may cause hang for OpenSSL backend
-
- Closes https://github.com/curl/curl/issues/6785
-
-Viktor Szakats (17 Aug 2021)
-- docs/BINDINGS: URL update
-
-Marc Hoersken (17 Aug 2021)
-- tests/server/*.c: align handling of portfile argument and file
-
- 1. Call the internal variable portname (like pidname) everywhere.
- 2. Have a variable wroteportfile (like wrotepidfile) everywhere.
- 3. Make sure the file is cleaned up on exit (like pidfile).
- 4. Add parameter --portfile to usage outputs everywhere.
-
+ Closes #9069
+
+Daniel Stenberg (29 Jun 2022)
+- curl.h: CURLE_CONV_FAILED is obsoleted
+
+ The last use was removed in 7.82.0. Updated some docs too to reflect the
+ current error code situation.
+
+ Closes #9067
+
+- curl: output warning when a cookie is dropped due to size
+
+ Dropped from the request, that is.
+
+ Closes #9064
+
+- curl_mime_data.3: polish the wording
+
+ Closes #9063
+
+- configure: check for the stdatomic.h header in configure
+
+ ... and only set HAVE_ATOMIC if that header exists since we use
+ typedefes set in it.
+
+ Reported-by: Ryan Schmidt
+ Fixes #9059
+ Closes #9060
+
+- easy_lock: fix the #ifdef conditional for ia32_pause
+
+ To work better with new and old clang compilers.
+
+ Reported-by: Ryan Schmidt
+ Assisted-by: Joshua Root
+
+ Fixes #9058
+ Closes #9062
+
+- easy_lock: switch to using atomic_int instead of bool
+
+ To work with more compilers without requiring separate libs to
+ link. Like with gcc-12 for RISC-V on Linux.
+
+ Reported-by: Adam Sampson
+ Fixes #9055
+ Closes #9061
+
+- [vvb2060 brought this change]
+
+ ngtcp2: fix incompatible function pointer types
+
+ Closes #9056
+
+- [vvb2060 brought this change]
+
+ easy_lock.h: use __asm__ instead of asm to fix build
+
+ Closes #9056
+
+- [Samuel Henrique brought this change]
+
+ libcurl-security.3: fix typo on macro "SH_"
+
+ During the packaging of the latest curl release for Debian, Lintian
+ warned me about a typo which causes the section name "Secrets in memory"
+ to not be rendered in the manpage due to "SH_" not being recognized as a
+ header.
+
+ Closes #9057
+
+- easy_lock.h: include sched.h if available to fix build
+
+ Patched-by: Harry Sintonen
+
+ Closes #9054
+
+Version 7.84.0 (27 Jun 2022)
+
+Daniel Stenberg (27 Jun 2022)
+- RELEASE-NOTES: synced
+
+ Version 7.84.0 release
+
+- THANKS: contributors from 7.84.0 release notes
+
+- hsts: use Curl_fopen()
+
+- altsvc: use Curl_fopen()
+
+- fopen: add Curl_fopen() for better overwriting of files
+
+ Bug: https://curl.se/docs/CVE-2022-32207.html
+ CVE-2022-32207
+ Reported-by: Harry Sintonen
+ Closes #9050
+
+- test444: test many received Set-Cookie:
+
+ The amount of sent cookies in the test is limited to 80 because hyper
+ has its own strict limits in how many headers it allows to be received
+ which triggers at some point beyond this number.
+
+- test442/443: test cookie caps
+
+ 442 - verify that only 150 cookies are sent
+ 443 - verify that the cookie: header remains less than 8K in size
+
+- cookie: apply limits
+
+ - Send no more than 150 cookies per request
+ - Cap the max length used for a cookie: header to 8K
+ - Cap the max number of received Set-Cookie: headers to 50
+
+ Bug: https://curl.se/docs/CVE-2022-32205.html
+ CVE-2022-32205
+ Reported-by: Harry Sintonen
+ Closes #9048
+
+- test387: verify rejection of compression chain attack
+
+- content_encoding: return error on too many compression steps
+
+ The max allowed steps is arbitrarily set to 5.
+
+ Bug: https://curl.se/docs/CVE-2022-32206.html
+ CVE-2022-32206
+ Reported-by: Harry Sintonen
+ Closes #9049
+
+- krb5: return error properly on decode errors
+
+ Bug: https://curl.se/docs/CVE-2022-32208.html
+ CVE-2022-32208
+ Reported-by: Harry Sintonen
+ Closes #9051
+
+- easy_lock.h: remove use of the deprecated ATOMIC_VAR_INIT macro
+
+ clang 14 warns about its use. It is being deprecated by the working
+ group for the programming language C: "The macro ATOMIC_VAR_INIT is
+ basically useless for the purpose for which it was designed"
+
+ Ref: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2886.htm
+
+ Reported-by: Tatsuhiro Tsujikawa
+ Fixes #9041
+ Closes #9042
+
+- [Stefan Eissing brought this change]
+
+ ngtcp2: avoid supplying 0 length `msg_control` to sendmsg()
+
+ Testing on macOS 12.4, sendmsg() fails with EINVAL when a msg_control
+ buffer is provided in sengmsg(), even though msg_controllen was set to
+ 0.
+
+ Initialize msg.msg_controllen just as needed and also perform the size
+ assertion only when needed.
+
+ Closes #9039
+
+- [Tom Eccles brought this change]
+
+ ftp: restore protocol state after http proxy CONNECT
+
+ connect_init() (lib/http_proxy.c) swaps out the protocol state while
+ working on the proxy connection, this is then restored by
+ Curl_connect_done() after the connection completes.
+
+ ftp_do_more() extracted the protocol state pointer to a local variable
+ at the start of the function then calls Curl_proxy_connect(). If the proxy
+ connection completes, Curl_proxy_connect() will call Curl_connect_done()
+ (via Curl_proxyCONNECT()), which restores data->req.p to point to the ftp
+ protocol state instead of the http proxy protocol state, but the local
+ variable in ftp_do_more still pointed to the old value.
+
+ Ultimately this meant that the state worked on by ftp_do_more() was the
+ http proxy state not the ftp state initialised by ftp_connect(), but
+ subsequent calls to any ftp_ function would use the original state.
+
+ For my use-case, the visible consequence was that ftp->downloadsize was
+ never set and so downloaded data was never returned to the application.
+
+ This commit updates the ftp protocol state pointer in ftp_do_more() after
+ Curl_proxy_connect() returns, ensuring that the correct state pointer is
+ used.
+
+ Fixes #8737
+ Closes #9043
+
+Jay Satiro (23 Jun 2022)
+- THANKS: add contributor missing from aea8ac1
+
+ aea8ac1 fixed #8980 which was reported by Sgharat on github, but that
+ info was not included in the commit message.
+
+- curl_setup: include _mingw.h
+
+ Prior to this change _mingw.h needed to be included in each unit before
+ evaluating __MINGW{32,64}_xxx_VERSION macros since it defines them. It
+ is included only in some mingw headers (eg stdio.h) and not others
+ (eg windows.h) so it's better to explicitly include it once.
+
+ Closes https://github.com/curl/curl/pull/9036
+
+Viktor Szakats (22 Jun 2022)
+- rand: stop detecting /dev/urandom in cross-builds
+
+ - Prevent CMake to auto-detect /dev/urandom when cross-building.
+ Before this patch, it would detect it in a cross-build scenario on *nix
+ hosts with this device present. This was a problem for example with
+ Windows builds, but it could affect any target system with this device
+ missing. This also syncs detection behaviour with autotools, which also
+ skips it for cross-builds.
+ - Also, make sure to never use the file RANDOM_FILE as entropy for libcurl's
+ fallback random number generator on Windows. Windows does not have the
+ concept of reading a random stream from a filename, nor any guaranteed
+ non-world-writable path on disk. With this, a manual misconfiguration or
+ an overeager auto-detection can no longer result in a user-controllable
+ seed source.
+
Reviewed-by: Daniel Stenberg
-
- Replaces #7523
- Closes #7574
-
-Daniel Gustafsson (17 Aug 2021)
-- KNOWN_BUGS: Fix a number of typos in KNOWN_BUGS
-
- Fixes a set of typos found in section 11.3.
-
-Daniel Stenberg (17 Aug 2021)
-- getparameter: fix the --local-port number parser
-
- It could previously get tricked into parsing the uninitialized stack
- based buffer.
-
- Reported-by: Brian Carpenter
- Closes #7582
-
-- KNOWN_BUGS: Can't use Secure Transport with Crypto Token Kit
-
- Closes #7048
-
-- [Jan Verbeek brought this change]
-
- curl: add warning for ignored data after quoted form parameter
-
- In an argument like `-F 'x=@/etc/hostname;filename="foo"abc'` the `abc`
- is ignored. This adds a warning if the ignored data isn't all
- whitespace.
-
- Closes #7394
-
-Jay Satiro (17 Aug 2021)
-- codeql: fix error "Resource not accessible by integration"
-
- - Enable codeql writing security-events.
-
- GitHub set the default permissions to read, apparently since earlier
- this year.
-
- Ref: https://github.com/github/codeql-action/issues/464
- Ref: https://github.blog/changelog/2021-04-20-github-actions-control-permissions-for-github_token/
-
- Fixes https://github.com/curl/curl/issues/7575
- Closes https://github.com/curl/curl/pull/7576
-
-- tool_operate: Fix --fail-early with parallel transfers
-
- - Abort via progress callback to fail early during parallel transfers.
-
- When a critical error occurs during a transfer (eg --fail-early
- constraint) then other running transfers will be aborted via progress
- callback and finish with error CURLE_ABORTED_BY_CALLBACK (42). In this
- case, the callback error does not become the most recent error and a
- custom error message is used for those transfers:
-
- curld --fail --fail-early --parallel
- https://httpbin.org/status/404 https://httpbin.org/delay/10
-
- curl: (22) The requested URL returned error: 404
- curl: (42) Transfer aborted due to critical error in another transfer
-
- > echo %ERRORLEVEL%
- 22
-
- Fixes https://github.com/curl/curl/issues/6939
- Closes https://github.com/curl/curl/pull/6984
-
-Daniel Stenberg (17 Aug 2021)
-- [Sergey Markelov brought this change]
+ Closes #9038
+
+Daniel Stenberg (22 Jun 2022)
+- [Emanuele Torre brought this change]
+
+ ci: avoid `cmake -Hpath`
+
+ This is an undocumented option similar to the `-Spath' option introduced
+ in cmake 3.13.
+ Replace all instances of `-Hpath' with `-Spath' in macos workflow.
+ Replace `-H. -Bpath' with `mkdir path; cd ./path; cmake ..' in zuul
+ scripts since it runs an older version of cmake.
+
+ Fixes #9008
+ Closes #9014
+
+- INTERNALS: bring back the "Library symbols" section
+
+ Most contents was moved, but this text should remain here.
+
+ Follow-up to: d324ac8
+ Reported-by: Viktor Szakats
+ Bug: https://github.com/curl/curl/pull/9027#discussion_r903382326
+ Closes #9037
+
+Viktor Szakats (22 Jun 2022)
+- Makefile.m32: stop forcing XP target with ipv6 enabled [ci skip]
+
+ Since this [1] commit in 2011, `_WIN32_WINNT` was set fixed to Windows
+ XP when the `-ipv6` option is selected. Maybe this was added to support
+ pre-XP Windows versions (?). These days libcurl builds fine for both XP
+ and post-XP versions with IPv6 support enabled. The relevance of pre-XP
+ version is also low by now. Other build methods also do not impose such
+ limitation for a similar configuration. So, drop this hard-wired
+ `_WIN32_WINNT` limit from `Makefile.m32`, thus building for the default
+ Windows version set by the compiler. This is Vista for recent MinGW
+ versions.
+
+ Old behaviour can be restored by setting this envvar:
+ export CURL_CFLAG_EXTRAS=-D_WIN32_WINNT=0x0501
+
+ [1] 98a61d8e2e8982786aaf3916cbbcac96838316e7
+
+ Closes #9035
+
+Daniel Stenberg (21 Jun 2022)
+- CONTRIBUTE: mention how we maintain REUSE compliance
+
+ for copyright and license information of all files stored in git
+
+ Closes #9032
+
+- CURLOPT_ALTSVC.3: document the file format
+
+ Closes #9033
+
+Jay Satiro (21 Jun 2022)
+- runtests: add "threadsafe" to detected features
+
+ Follow-up to recent commits which added thread-safety support.
+
+ Bug: https://github.com/curl/curl/pull/9012#discussion_r902018782
+ Reported-by: Marc Hörsken
+
+ Closes https://github.com/curl/curl/pull/9030
+
+Daniel Stenberg (20 Jun 2022)
+- easy: remove dead code
+
+ Follow-up from 5912da253b64d
+
+ Detected by Coverity (CID 1506519)
+
+ Closes #9029
+
+- [Glenn Strauss brought this change]
+
+ transfer: upload performance; avoid tiny send
+
+ Append to the upload buffer when only small amount remains in buffer
+ rather than performing a separate tiny send to empty buffer.
+
+ Avoid degenerative upload behavior which might cause curl to send mostly
+ 1-byte DATA frames after exhausing the h2 send window size
+
+ Related discussion: https://github.com/nghttp2/nghttp2/issues/1722
+
+ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
+ Closes #8965
+
+- [Steve Holme brought this change]
+
+ projects: fix third-party SSL library build paths for Visual Studio
+
+ The paths used by the build batch files were inconsistent with those in
+ the Visual Studio project files.
- sectransp: support CURLINFO_CERTINFO
-
- Fixes #4130
- Closes #7372
+ Closes #8991
-- ngtcp2: remove the acked_crypto_offset struct field init
-
- ... as it is gone from the API upstream.
-
- Closes #7578
+- [Pierrick Charron brought this change]
-- misc: update incorrect copyright year ranges
-
- Closes #7577
+ urlapi: make curl_url_set(url, CURLUPART_URL, NULL, 0) clear all parts
-- KNOWN_BUGS: HTTP/3 quiche upload large file fails
-
- Closes #7532
+ As per the documentation :
-- KNOWN_BUGS: CMake build with MIT Kerberos does not work
-
- Closes #6904
+ > Setting a part to a NULL pointer will effectively remove that
+ > part's contents from the CURLU handle.
-- TODO: add asynch getaddrinfo support
-
- Closes #6746
+ But currently clearing CURLUPART_URL does nothing and returns
+ CURLUE_OK. This change will clear all parts of the URL at once.
+
+ Closes #9028
+
+- [Philip Heiduck brought this change]
+
+ CI: bump FreeBSD 13.0 to 13.1
+
+ Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
+ Closes #8815
- RELEASE-NOTES: synced
-- [Artur Sinila brought this change]
+ and updated release date in RELEASE-PROCEDURE.md
- http2: revert call the handle-closed function correctly on closed stream
-
- Reverts 252790c5335a221
-
- Assisted-by: Gergely Nagy
- Fixes #7400
- Closes #7525
+- [divinity76 brought this change]
-- [Patrick Monnerat brought this change]
+ CURLOPT_HTTPHEADER.3: improve comment in example
- auth: do not append zero-terminator to authorisation id in kerberos
-
- RFC4752 Section 3.1 states "The authorization identity is not terminated
- with a zero-valued (%x00) octet". Although a comment in code said it may
- be needed anyway, nothing confirms it. In addition, servers may consider
- it as part of the identity, causing a failure.
-
- Closes #7008
+ Closes #9025
-- [Patrick Monnerat brought this change]
+Marc Hoersken (16 Jun 2022)
+- CI/azure: reduce flakiness by retrying install/prepare steps
- auth: use sasl authzid option in kerberos
-
- ... instead of deriving it from active ticket.
- Closes #7008
+ Closes #9010
-- [Patrick Monnerat brought this change]
+- CI/cirrus: align Windows timeout with Azure CI at 120 minutes
- auth: we do not support a security layer after kerberos authentication
-
- Closes #7008
+ Closes #9009
-- [Patrick Monnerat brought this change]
+Jay Satiro (16 Jun 2022)
+- vtls: make curl_global_sslset thread-safe
- auth: properly handle byte order in kerberos security message
-
- Closes #7008
+ .. and update some docs to explain curl_global_* is now thread-safe.
-- [z2_ brought this change]
+ Follow-up to 23af112 which made curl_global_init/cleanup thread-safe.
- x509asn1: fix heap over-read when parsing x509 certificates
-
- Assisted-by: Patrick Monnerat
- Closes #7536
+ Closes https://github.com/curl/curl/pull/9016
-- KNOWN_BUGS: Disconnects don't do verbose
-
- Closes #6995
+- curl_easy_pause.3: remove explanation of progress function
-- mailmap: fixup Michał Antoniak
+ - Remove misleading text that says progress function "gets called at
+ least once per second, even if the connection is paused."
-- [Michał Antoniak brought this change]
+ The progress function behavior is more nuanced and the user is better
+ served reading the progress function doc rather than attempt to explain
+ it in the curl_easy_pause doc.
- build: fix compiler warnings
-
- For when CURL_DISABLE_VERBOSE_STRINGS and DEBUGBUILD flags are both
- active.
-
- - socks.c : warning C4100: 'lineno': unreferenced formal parameter
- (co-authored by Daniel Stenberg)
-
- - mbedtls.c: warning C4189: 'port': local variable is initialized but
- not referenced
-
- - schannel.c: warning C4189: 'hostname': local variable is initialized
- but not referenced
-
- Cloes #7528
-
-- [Gleb Ivanovsky brought this change]
-
- CODE_STYLE-md: fix bold font style
-
- Markdown gets confused with abundance of asterisks, so use underscores
- instead.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7569
+ The progress function can only be called at least once per second if an
+ appropriate multi transfer function is called (eg curl_multi_perform) in
+ that time. For a paused transfer there may not be such a call. Rather
+ than explain this in detail in the curl_easy_pause doc, rely on the user
+ reading the CURLOPT_PROGRESSFUNCTION doc.
-- [Gleb Ivanovsky brought this change]
+ Ref: https://github.com/curl/curl/issues/8983
+
+ Closes https://github.com/curl/curl/pull/9015
+
+Daniel Stenberg (15 Jun 2022)
+- libssh: skip the fake-close when libssh does the right thing
+
+ Starting in libssh 0.10.0 ssh_disconnect() will no longer close our
+ socket. Instead it will be kept alive as we want it, and it is our
+ responsibility to close it later.
+
+ Ref: #8718
+ Ref: https://gitlab.com/libssh/libssh-mirror/-/merge_requests/240
+ Closes #9021
+
+- configure: warn about rustls being experimental
+
+ Right now a dozen test cases are disabled because they don't work with
+ rustls.
+
+ Closes #9019
+
+- runtests: skip starting the ssh server if user name is lacking
+
+ Because the ssh server startup script *requires* a user name there's no
+ point in invoking it if no name was found.
+
+ Reported-by: Ricardo M. Correia
+ Ref: #9007
+ Closes #9013
+
+- copyright.pl: parse and use .reuse/dep5 for skips
+
+ Also scan skipped files to be able to find superfluous ignores, shown with -v.
+
+ Closes #9006
+
+- reuse/dep5: adjusted to parse better
+
+ ... adjusted a few files to contain copyright and license info.
+
+ Closes #9006
+
+- buildconf.bat: update copyright year range
+
+ Closes #9006
+
+- README.md: use the common "Copyright" style formatting
+
+ Closes #9006
+
+- reuse: move license info from .mailmap.license to .reuse/dep5
+
+ Closes #9006
+
+- README.md: add a REUSE badge
+
+ Closes #9004
+
+- .reuse/dep5: remove recursive docs ignore, only skip markdown files
+
+ ... and some additional non-markdown individual files in docs/
+
+ Closes #9005
+
+- docs/cmdline-opts: add copyright and license identifier to each file
+
+ gen.pl now insists on C: and SPDX-License-Identifier: fields to be
+ present in all files.
+
+ Closes #9002
+
+- copyright: info for/ignore .github/ISSUE_TEMPLATE/bug_report.md
+
+ Follow-up from 448f7ef9ab2afb7. The adding of the copyright text in that
+ file broke site functionality.
+
+ Closes #9001
+
+- bug_report.md: revert the REUSE template to see if it works again
+
+Viktor Szakats (13 Jun 2022)
+- version: rename threadsafe-init to threadsafe
+
+ Referring to Daniel's article [1], making the init function thread-safe
+ was the last bit to make libcurl thread-safe as a whole. So the name of
+ the feature may as well be the more concise 'threadsafe', also telling
+ the story that libcurl is now fully thread-safe, not just its init
+ function. Chances are high that libcurl wants to remain so in the
+ future, so there is little likelihood of ever needing any other distinct
+ `threadsafe-<name>` feature flags.
+
+ For consistency we also shorten `CURL_VERSION_THREADSAFE_INIT` to
+ `CURL_VERSION_THREADSAFE`, update its description and reference libcurl's
+ thread safety documentation.
+
+ [1]: https://daniel.haxx.se/blog/2022/06/08/making-libcurl-init-more-thread-safe/
- CODE_STYLE-md: add missing comma
-
- Reviewed-by: Daniel Gustafsson
- Closes #7570
-
-- [Daniel Gustafsson brought this change]
-
- examples/ephiperfifo.c: simplify signal handler
-
- The signal handler registered for SIGINT is only handling SIGINT
- so there isn't much need for inspecting the signo. While there,
- rename the handler to be more specific.
-
- g_should_exit should really be of sig_atomic_t type, but relying
- on autoconf in the examples seems like a bad idea so keep that
- for now.
-
Reviewed-by: Daniel Stenberg
- Closes #7310
+ Reviewed-by: Jay Satiro
+ Closes #8989
-- c-hyper: initial step for 100-continue support
-
- Enabled test 154
-
- Closes #7568
+Daniel Stenberg (13 Jun 2022)
+- test3026: disable on win32
-- [Ikko Ashimine brought this change]
+ ... as it's not likely to have working pthreads
- vtls: fix typo in schannel_verify.c
-
- occurence -> occurrence
-
- Closes #7566
+ Closes #8996
-- [Emil Engler brought this change]
+- GHA: shorten the reuse CI job name
- curl_url_get.3: clarify about path and query
-
- The current man-page lacks some details regarding the obtained path and
- query.
-
- Closes #7563
-
-- c-hyper: fix header value passed to debug callback
-
- Closes #7567
-
-Viktor Szakats (12 Aug 2021)
-- cleanup: URL updates
-
- - replace broken URL with the one it was most probably pointing to
- when added (lib/tftp.c)
- - replace broken URL with archive.org link (lib/curl_ntlm_wb.c)
- - delete unnecessary protocol designator from archive.org URL
- (docs/BINDINGS.md)
-
- Closes #7562
-
-Daniel Stenberg (12 Aug 2021)
-- [April King brought this change]
-
- DEPRECATE.md: linkify curl-library mailing list
-
- Closes #7561
-
-- [Barry Pollard brought this change]
-
- output.d: add method to suppress response bodies
-
- Closes #7560
-
-- TODO: remove 'c-ares deviates on http://1346569778'
-
- Fixed since 56a037cc0ad1b2 (7.77.0)
-
-- [Colin O'Dell brought this change]
-
- BINDINGS.md: update links to use https where available
-
- Closes #7558
-
-- asyn-ares.c: move all version number checks to the top
-
- ... and use #ifdef [feature] in the code as per our guidelines.
-
-- ares: use ares_getaddrinfo()
-
- ares_getaddrinfo() is the getaddrinfo() cloned provided by c-ares, introduced
- in version 1.16.0.
-
- With older c-ares versions, curl invokes ares_gethostbyname() twice - once for
- IPv4 and once for IPv6 to resolve both addresses, and then combines the
- returned results.
-
- Reported-by: jjandesmet
- Fixes #7364
- Closes #7552
+ "REUSE compliance / check" should be good enough
-- [Tatsuhiro Tsujikawa brought this change]
+ Closes #9000
- ngtcp2: utilize crypto API functions to simplify
-
- Closes #7551
+- misc: add missing SPDX-License-Identifier info
-- [megatronking brought this change]
+ For some reason the REUSE CI job did not find these.
- ngtcp2: reset the oustanding send buffer again when drained
-
- Closes #7538
+ Closes #8999
-Michael Kaufmann (10 Aug 2021)
-- progress: fix a compile warning on some systems
-
- lib/progress.c:380:40: warning: conversion to 'long double' from
- 'curl_off_t {aka long long int}' may alter its value [-Wconversion]
-
- Closes #7549
+- copyright: verify SPDX-License-Identifier presence as well
-Daniel Stenberg (10 Aug 2021)
+- easy_lock: add SPDX license identifier
+
+ Closes #8998
+
+- mailmap: Max Mehl
+
+- [Max Mehl brought this change]
+
+ git: ignore large commit making the curl REUSE compliant
+
+- [Max Mehl brought this change]
+
+ copyright: make repository REUSE compliant
+
+ Add licensing and copyright information for all files in this repository. This
+ either happens in the file itself as a comment header or in the file
+ `.reuse/dep5`.
+
+ This commit also adds a Github workflow to check pull requests and adapts
+ copyright.pl to the changes.
+
+ Closes #8869
+
+- curl_url_set.3: clarify by default using known schemes only
+
+ Closes #8994
+
+- scripts/copyright.pl: ignore leading spaces
+
+Viktor Szakats (10 Jun 2022)
+- ngtcp2: fix typo in preprocessor condition
+
+ Ref: 927ede7edcb7b05b8e8bbf9ced6aed523ae594a7
+
+ Bug: https://github.com/curl/curl/pull/8981#discussion_r894312185
+ Reported-by: Emil Engler
+ Closes #8987
+
+Daniel Stenberg (10 Jun 2022)
- RELEASE-NOTES: synced
-- http: consider cookies over localhost to be secure
-
- Updated test31.
- Added test 392 to verify secure cookies used for http://localhost
-
- Reviewed-by: Daniel Gustafsson
- Fixes #6733
- Closes #7263
-
-- TODO: erase secrets from heap/stack after use
-
- Closes #7268
-
-Jay Satiro (10 Aug 2021)
-- hostip: Make Curl_ipv6works function independent of getaddrinfo
-
- - Do not assume IPv6 is not working when getaddrinfo is not present.
-
- The check to see if IPv6 actually works is now independent of whether
- there is any resolver that can potentially resolve a hostname to IPv6.
-
- Prior to this change if getaddrinfo() was not found at compile time then
- Curl_ipv6works() would be defined as a macro that returns FALSE.
-
- When getaddrinfo is not found then libcurl is built with CURLRES_IPV4
- defined instead of CURLRES_IPV6, meaning that it cannot do IPv6 lookups
- in the traditional way. With this commit if libcurl is built with IPv6
- support (ENABLE_IPV6) but without getaddrinfo (CURLRES_IPV6), and the
- IPv6 stack is actually working, then it is possible for libcurl to
- resolve IPv6 addresses by using DoH.
-
- Ref: https://github.com/curl/curl/issues/7483#issuecomment-890765378
-
- Closes https://github.com/curl/curl/pull/7529
-
-- test1565: fix windows build errors
-
- - Use our wait_ms() instead of sleep() since Windows doesn't have the
- latter.
-
- - Use a separate variable to keep track of whether the pthread_t thread
- id is valid.
-
- On Windows pthread_t is not an integer type. pthread offers no macro for
- invalid pthread_t thread id, so validity is kept track of separately.
-
- Closes https://github.com/curl/curl/pull/7527
-
-- [Jeremy Falcon brought this change]
-
- winbuild/README.md: clarify GEN_PDB option
-
- - Document that GEN_PDB option creates an external database.
-
- Ref: https://github.com/curl/curl/issues/7502
-
-Daniel Stenberg (9 Aug 2021)
- [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: replace deprecated functions with nghttp3_conn_shutdown_stream_read
-
- Closes #7546
+ ngtcp2: build without sendmsg
+
+ Closes #8981
- [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: rework the return value handling of ngtcp2_conn_writev_stream
-
- Rework the return value handling of ngtcp2_conn_writev_stream and treat
- NGTCP2_ERR_STREAM_SHUT_WR separately.
-
- Closes #7546
+ ngtcp2: use handshake helper funcs to simplify TLS handshake integration
+
+ Closes #8968
+
+- test390: verify --parallel
+
+ Closes #8985
+
+- test1543: verify CURLINFO_EFFECTIVE_URL with CURLOPT_CURLU set
+
+ Triggered by a bug report from Adam Light:
+ https://curl.se/mail/lib-2022-06/0013.html - which ended up being mostly
+ a misunderstanding of how CURLINFO_EFFECTIVE_URL works.
+
+ Closes #8971
+
+- url: URL encode the path when extracted, if spaces were set
+
+- urlapi: support CURLU_URLENCODE for curl_url_get()
+
+- server/sws: support spaces in the HTTP request path
+
+- tests/getpart: fix getpartattr to work with "data" and "data2"
+
+- select: return error from "lethal" poll/select errors
+
+ Adds two new error codes: CURLE_UNRECOVERABLE_POLL and
+ CURLM_UNRECOVERABLE_POLL one each for the easy and the multi interfaces.
+
+ Reported-by: Harry Sintonen
+ Fixes #8921
+ Closes #8961
+
+- test3026: add missing control file
+
+ Follow-up from 2ed101256414ea5
+
+ Makes the test run, makes 'make dist' work
+
+ This single test takes 24-25 seconds on my machine (with valgrind). For
+ this reason I tag it with a "slow" keyword.
+
+ Closes #8976
+
+- runtests: fix skipping tests not done event-based
+
+ ... and call timestampskippedevents() to avoid the flood of
+ uninitialized variable warnings.
+
+ Closes #8977
+
+- transfer: maintain --path-as-is after redirects
+
+ Reported-by: Marcus T
+ Fixes #8974
+ Closes #8975
+
+- test391: verify --path-as-is with redirect
+
+Jay Satiro (8 Jun 2022)
+- curl_global_init.3: Separate the Windows loader lock warning
+
+ This is a slight correction of the parent commit which implied the
+ loader lock warning only applied if not thread-safe. In fact the loader
+ lock warning applies either way.
+
+ Ref: https://github.com/curl/curl/pull/8972#discussion_r891987030
+
+Daniel Stenberg (8 Jun 2022)
+- curl_global_init.3: this is now (usually) thread-safe
+
+ Follow-up to 23af112f5556
+
+ Closes #8972
+
+Jay Satiro (8 Jun 2022)
+- [Haxatron brought this change]
+
+ libcurl-security.3: Document CRLF header injection
-- configure: error out if both ngtcp2 and quiche are specified
-
- Reported-by: Vincent Grande
- See #7539
- Closes #7545
+ - Document that user input to header options is not sanitized, which
+ could result in CRLF used to modify the request in a way other than
+ what was intended.
-- [Jeff Mears brought this change]
+ Ref: https://hackerone.com/reports/1589877
+ Ref: https://medium.com/@tomnomnom/crlf-injection-into-phps-curl-options-e2e0d7cfe545
- easy: use a custom implementation of wcsdup on Windows
-
- ... so that malloc/free overrides from curl_global_init are used for
- wcsdup correctly.
-
- Closes #7540
+ Closes https://github.com/curl/curl/pull/8964
-- zuul: add an mbedtls3 CI job
-
- Closes #7544
+- CURLOPT_RANGE.3: remove ranged upload advice
-- [Benau brought this change]
+ The e-mail link in the advice contains instructions that are prone to
+ error. We need an example that works and can demonstrate how to properly
+ perform a ranged upload, and then we can refer to that example instead.
- mbedTLS: initial 3.0.0 support
-
- Closes #7428
+ Bug: https://github.com/curl/curl/issues/8969
+ Reported-by: Simon Berger
+
+ Closes https://github.com/curl/curl/pull/8970
+
+Daniel Stenberg (7 Jun 2022)
+- [Thomas Guillem brought this change]
+
+ curl_version_info: add CURL_VERSION_THREADSAFE_INIT
+
+ This flag can be used to make sure that curl_global_init() is
+ thread-safe.
+
+ This can be useful for libraries that can't control what other
+ dependencies are doing with Curl.
+
+ Closes #8680
+
+- [Thomas Guillem brought this change]
+
+ lib: make curl_global_init() threadsafe when possible
+
+ Use a posix pthread or a Windows SRWLOCK to lock curl_global_init*() and
+ curl_global_cleanup().
+
+ Closes #8680
- RELEASE-NOTES: synced
-- configure.ac: revert bad nghttp2 library detection improvements
-
- This reverts commit b4b34db65f9f8, 673753344c5f and 29c7cf79e8b.
-
- The logic is now back to assuming that the nghttp2 lib is called nghttp2 and
- nothing else.
-
- Reported-by: Rui Pinheiro
- Reported-by: Alex Crichton
- Fixes #7514
- Closes #7515
-
-- happy-eyeballs-timeout-ms.d: polish the wording
-
- Reported-by: Josh Soref
- Fixes #7433
- Closes #7542
-
-- [modbw brought this change]
-
- mbedtls_threadlock: fix unused variable warning
-
- Closes #7393
+- [Fabian Keil brought this change]
+
+ test414: add the '--resolve' keyword
+
+ ... so the test can be automatically skipped when
+ using an external proxy like Privoxy.
+
+ Closes #8959
+
+- [Fabian Keil brought this change]
+
+ test{440,441,493,977}: add "HTTP proxy" keywords
+
+ ... so the tests can be automatically skipped when
+ using an external proxy like Privoxy.
+
+ Closes #8959
+
+- [Fabian Keil brought this change]
+
+ runtests.pl: add the --repeat parameter to the --help output
+
+ Closes #8959
+
+- [Fabian Keil brought this change]
+
+ test 2081: add a valid reply for the second request
+
+ ... so the test works when using a HTTP proxy like
+ Privoxy that sends an error message if the server
+ doesn't send data.
+
+ Closes #8959
+
+- [Fabian Keil brought this change]
+
+ test 675: add missing CR so the test passes when run through Privoxy
+
+ Closes #8959
+
+- ftp: when failing to do a secure GSSAPI login, fail hard
+
+ ... instead of switching to cleartext. For the sake of security.
+
+ Reported-by: Harry Sintonen
+ Bug: https://hackerone.com/reports/1590102
+ Closes #8963
+
+- http2: reject overly many push-promise headers
+
+ Getting more than a thousand of them is rather a sign of some kind of
+ attack.
+
+ Reported-by: Harry Sintonen
+ Bug: https://hackerone.com/reports/1589847
+ Closes #8962
+
+- [Fabian Keil brought this change]
+
+ misc: spelling improvements
+
+ Closes #8956
- [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: compile with the latest ngtcp2 and nghttp3
-
- Closes #7541
+ ngtcp2: fix assertion failure on EMSGSIZE
+
+ Closes #8958
+
+- easy/transfer: fix cookie-disabled build
+
+ Follow-up from 45de940cebf6a
+ Reported-by: Marcel Raad
+ Fixes #8953
+ Closes #8954
+
+- examples/crawler.c: use the curl license
+
+ With permission from Jeroen Ooms
+
+ URL: https://github.com/curl/curl/pull/8869#issuecomment-1144742731
+ Closes #8950
+
+- speed-limit/time.d: mention these affect transfers in either direction
+
+ Reported-by: Ladar Levison
+ Fixes #8948
+ Closes #8951
+
+- scripts/copyright.pl: fix the exclusion to not ignore man pages
+
+ Ref: #8869
+ Closes #8952
+
+- examples: remove fopen.c and rtsp.c
+
+ To simplify the license situation, as they were the only files in the
+ source tree using these specific BSD-3 clause licenses.
+
+ For an fopen style API, we recommend instead going
+ https://github.com/curl/fcurl
+
+ Ref: #8869
+ Closes #8949
+
+- [Wolf Vollprecht brought this change]
+
+ netrc: check %USERPROFILE% as well on Windows
+
+ Closes #8855
+
+- CURLOPT_SSH_HOSTKEYDATA/FUNCTION.3: minor polish
+
+- [michael musset brought this change]
+
+ libssh2: add CURLOPT_SSH_HOSTKEYFUNCTION
+
+ The callback set by CURLOPT_SSH_HOSTKEYFUNCTION is called to check
+ wether or not the connection should continue.
+
+ The host key is passed in argument with a custom handle for the
+ application.
+
+ It overrides CURLOPT_SSH_KNOWNHOSTS
+
+ Closes #7959
+
+- docs/CONTRIBUTE.md: document the 'needs-votes' concept
+
+ A pull request sent to the project might get labeled `needs-votes` by a
+ project maintainer. This label means that in addition to meeting all
+ other checks and qualifications this pull request must also receive
+ proven support/thumbs-ups from more community members to be considered
+ for merging.
+
+ Closes #8910
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+ digest: tolerate missing "realm"
+
+ Server headers may not define "realm", avoid NULL pointer dereference
+ in such cases.
+
+ Closes #8912
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+ digest: added detection of more syntax error in server headers
+
+ Invalid headers should not be processed otherwise they may create
+ a security risk.
+
+ Closes #8912
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+ digest: unquote realm and nonce before processing
+
+ RFC 7616 (and 2617) requires values to be "unquoted" before used for
+ digest calculations. The only place where unquoting can be done
+ correctly is header parsing function (realm="DOMAIN\\host" and
+ realm=DOMAN\\host are different realms).
+
+ This commit adds unquoting (de-escaping) of all values during header
+ parsing and quoting of the values during header forming. This approach
+ should be most straightforward and easy to read/maintain as all values
+ are processed in the same way as required by RFC.
+
+ Closes #8912
+
+- headers: handle unfold of space-cleansed headers
+
+ Detected by OSS-fuzz
+
+ Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47767
+
+ Updated test 1274
+
+ Closes #8947
+
+- lib: make more protocol specific struct fields #ifdefed
+
+ ... so that they don't take up space if the protocols are disabled in
+ the build.
+
+ Closes #8944
+
+- DISABLED: disable 1021 for hyper again
+
+ due to flakiness in the CI builds
+
+- urldata: store tcp_keepidle and tcp_keepintvl as ints
+
+ They can't be set larger than INT_MAX in the setsocket API calls.
+
+ Also document the max values in their respective man pages.
+
+ Closes #8940
+
+- urldata: reduce size of a few struct fields
+
+ When the values are never larger than 32 bit, ints are better than longs.
+
+ Closes #8940
+
+- urldata: remove three unused booleans from struct UserDefined
+
+ - is_fwrite_set
+ - free_referer
+ - strip_path_slash
+
+ Closes #8940
+
+- remote-name.d: mention --output-dir
+
+ plus add two see-alsos
+
+ Closes #8945
+
+Jay Satiro (1 Jun 2022)
+- configure: skip libidn2 detection when winidn is used
+
+ Prior to this change --with-winidn could be overridden by libidn2
+ detection.
+
+ Closes https://github.com/curl/curl/pull/8934
+
+Daniel Stenberg (31 May 2022)
+- CURLOPT_FILETIME.3: fix the protocols this works with
+
+- test681: verify --no-remote-name
+
+ Follow-up to 83ee5c428d960 (from #8931)
+
+ Closes #8942
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: enable Linux GSO
+
+ Enable Linux GSO in ngtcp2 QUIC. In order to recover from the
+ EAGAIN/EWOULDBLOCK by sendmsg with multiple packets in one GSO write,
+ packet buffer is now held by struct quicsocket. GSO write might fail in
+ runtime depending on NIC. Disable GSO if sendmsg returns EIO.
+
+ Closes #8909
+
+- CURLOPT_PORT.3: We discourage using this option
+
+ Closes #8941
+
+- RELEASE-NOTES: synced
+
+- headers_push: error out if a folded header has no previous header
+
+ As that would indicate an illegal header. The fuzzer reached the assert
+ in unfold_value() proving that this case can happen.
+
+ Follow-up to c9b60f005358a364
+
+ Closes #8939
+
+- [Boris Verkhovskiy brought this change]
+
+ curl: re-enable --no-remote-name
+
+ Closes #8931
+
+- test680: require 'http' since it uses such a URL
+
+ Follow-up to d1b376c03524
+
+- CURLOPT_NETRC.3: document the .netrc file format
+
+- test680: verify rejection of malformatted .netrc quoted password
+
+- test679: verify netrc quoted string
+
+- netrc: support quoted strings
+
+ The .netrc parser now accepts strings within double-quotes in order to
+ deal with for example passwords containing white space - which
+ previously was not possible.
+
+ A password that starts with a double-quote also ends with one, and
+ double-quotes themselves are escaped with backslashes, like \". It also
+ supports \n, \r and \t for newline, carriage return and tabs
+ respectively.
+
+ If the password does not start with a double quote, it will end at first
+ white space and no escaping is performed.
+
+ WARNING: this change is not entirely backwards compatible. If anyone
+ previously used a double-quote as the first letter of their password,
+ the parser will now get it differently compared to before. This is
+ highly unfortunate but hard to avoid.
+
+ Reported-by: ImpatientHippo on GitHub
+ Fixes #8908
+ Closes #8937
+
+- curl_getdate.3: document that some illegal dates pass through
+
+ Closes #8938
+
+- CI: remove configure --enable-headers-api flags
+
+- headers api: remove EXPERIMENTAL tag
+
+ Closes #8900
+
+Daniel Gustafsson (30 May 2022)
+- cookies: fix documentation comment
+
+ Commit 4073cd83b2 added the noexpire parameter to Curl_cookie_add but
+ missed updating the documentation comment at the head of the file.
+
+Daniel Stenberg (30 May 2022)
+- [Marc Hoersken brought this change]
+
+ tests/data/test1940: use binary mode for expected stdout
+
+ The generated stdout data is written in binary mode with [LF]
+ line endings, therefore we also need to do a binary comparison.
+
+ Assisted-by: Jay Satiro
+ Assisted-by: Daniel Stenberg
+
+ Follow up to c9b60f005358a364cbcddbebd8d12593acffdd84
+ Fixes #8920
+ Closes #8936
+
+- CURLINFO_CAINFO/PATH.3: clarify the multiple TLS situation
+
+ Spell out the multi-TLS situation.
+
+ Reported-by: Dan Fandrich
+ Fixes #8926
+ Closes #8932
+
+Jay Satiro (28 May 2022)
+- [JustAnotherArchivist brought this change]
+
+ tool_getparam: fix --parallel-max maximum value constraint
+
+ - Clamp --parallel-max to MAX_PARALLEL (300) instead of resetting to
+ default value.
+
+ Previously, --parallel-max 300 would use 300 concurrent transfers, but
+ --parallel-max 301 would unexpectedly use only 50. This change clamps
+ higher values to the maximum (ie --parallel-max 301 would use 300).
+
+ Closes https://github.com/curl/curl/pull/8930
+
+Daniel Stenberg (27 May 2022)
+- curl.1: add a few see also --tls-max
+
+ Closes #8929
+
+Viktor Szakats (26 May 2022)
+- cmake: do not add libcurl.rc to the static libcurl library
+
+ Fixes: https://github.com/curl/curl/pull/8918#issuecomment-1138263855
+
+ Reviewed-By: Karlson2k@users.noreply.github.com
+ Closes #8923
+
+- cmake: support adding a suffix to the OS value
+
+ CMake automatically uses the `CMAKE_SYSTEM_NAME` value to fill the OS
+ string appearing in the --version output after the curl version number,
+ for example:
+
+ 'curl 7.83.1 (Windows)'
+
+ This patchs adds the ability to pass a suffix that is appended to this
+ value. It's useful to add CPU info or other platform details,
+ for example:
+
+ 'curl 7.83.1 (Windows-x64)'
+
+ Closes #8919
+
+- cmake: enable curl.rc for all Windows targets
+
+ Before this patch, it was only enabled for MSVC. This syncs this
+ configuration with libcurl.rc, which was already included with
+ every Windows compiler.
+
+ Closes #8918
+
+- cmake: fix detecting libidn2
+
+ Without this patch, libidn2 detection doesn't even seem to be
+ attempted. With this patch, cmake can be configured to pick it
+ up and enable it. Necessary configuration remains manual and
+ differs from most other dependencies.
+
+ If you are aware of a better fix, we're glad hearing about it
+ in a new Issue.
+
+ Closes #8917
+
+- version: allow stricmp() for sorting the feature list
+
+ In CMakeLists.txt there is an attempt to detect `stricmp()`, and in
+ certain cases, this attempt is the only successful one to detect a
+ case-insensitive comparison function. `HAVE_STRICMP` is defined as
+ a result, but this macro wasn't used anywhere in the source. This
+ patch makes use of it as an alternative when alpha-sorting the
+ `--version` feature list.
-Marc Hoersken (31 Jul 2021)
-- CI/cirrus: reduce compile time with increased parallism
-
- Cirrus CI VMs have 2 CPUs, let's use them also for Windows builds.
-
Reviewed-by: Daniel Stenberg
- Closes #7505
-
-Daniel Stenberg (30 Jul 2021)
-- [Bin Lan brought this change]
-
- tool/tests: fix potential year 2038 issues
-
- The length of 'long' in a 32-bit system is 32 bits, which cannot be used
- to save timestamps after 2038. Most operating systems have extended
- time_t to 64 bits.
-
- Remove the castings to long.
-
- Closes #7466
-
-- compressed.d: it's a request, not an order
-
- Clarified
-
- Reported-by: Dan Jacobson
+ Closes #8916
+
+Daniel Stenberg (25 May 2022)
+- DISABLED: add six tests that fail with hyper
+
+ 1117 1274 1940 1941 1942 1943
+
+- c-hyper: mark status line as status for Curl_client_write()
+
+ To make sure the headers API can filter it out as not a regular header.
+
+ Reported-by: Gisle Vanem
+ Fixes #8894
+ Closes #8914
+
+Marc Hoersken (25 May 2022)
+- tests/data/test1501: kill ftp server after slow LIST response
+
+ This test is contributing to flakiness on the Windows CI runs.
+ Killing the ftp server after the test run like other slowness
+ tests already do may help resolve or reduce the flakiness.
+
+ Closes #8907
+
+Daniel Stenberg (25 May 2022)
+- headers: fix the unfold realloc to use proper new size
+
+ Previously it didn't take the old name length into acount
+
+ Follow-up to: c9b60f005358a364
+ Closes #8913
+
+Marc Hoersken (25 May 2022)
+- GHA: align all install, configure and build steps again
+
+ First step towards more unified build steps on GitHub Actions.
+
+ Closes #8873
+
+- CI/azure: remove obsolete strategy for single builds
+
+ This shortens these CI job names on GitHub even more.
+ Follow up to #8906 which also increased their timeout.
+
+ Closes #8911
+
+- CI/azure: shorten names of Windows CI jobs
+
+ Suggested-by: Daniel Stenberg
+ Closes #8906
+
+Daniel Stenberg (24 May 2022)
+- http: restore header folding behavior
+
+ Folded header lines will now get passed through like before. The headers
+ API is adapted and will provide the content unfolded.
+
+ Added test 1274 and extended test 1940 to verify.
+
+ Reported-by: Petr Pisar
+ Fixes #8844
+ Closes #8899
+
+Viktor Szakats (24 May 2022)
+- Makefile.m32: delete obsolete options, improve -On [ci skip]
+
+ - `-D_AMD64_` has not been necessary for mingw-w64 builds for a long time now.
+ - `-fno-strict-aliasing` is mentioned for Intel C compiler in autotools, and
+ I used this with VxWorks in another project, but otherwise this isn't
+ necessary anymore as a default. If a target still needs it, it can be
+ added with `CURL_CFLAG_EXTRAS=-fno-strict-aliasing`
+ - bump up default optimization level to `-O3` (from `-O2`), and also rearrange
+ option order so the default can now be overridden via
+ `CURL_CFLAG_EXTRAS`.
+ - delete `-g` (generate debug info) from `CFLAGS` and `-s` from `LDFLAGS`
+ (strip debug info). They were working against each other. Now, if someone
+ needs debug info, it can be enabled via `CURL_CFLAG_EXTRAS=-g`
+
+ Closes #8904
+
+Daniel Gustafsson (24 May 2022)
+- ntlm: fix one more hostname test fallout
+
+ This fixup was missed in commit 5a41abef6dca19.
+
+ Closes: #8901
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- doh: remove UNITTEST macro definition
+
+ The UNITTEST macro is defined by curl_setup.h so there is no use in
+ carry a local copy of the logic.
+
+ Closes: #8902
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (24 May 2022)
+- cookie: fix false positive "potentially uninitialized local variable"
+
Reviewed-by: Daniel Gustafsson
- Fixes #7516
- Closes #7517
-
-- [Bernhard M. Wiedemann brought this change]
-
- tests: make three tests pass until 2037
-
- after 2038 something in test1915 fails on 32-bit OSes
-
- Closes #7512
-
-Daniel Gustafsson (30 Jul 2021)
-- connect: remove superfluous conditional
-
- Commit dbd16c3e2 cleaned up the logic for traversing the addrinfos,
- but the move left a conditional on ai which no longer is needed as
- the while loop reevaluation will cover it.
-
- Closes #7511
- Reviewed-by: Carlo Marcelo Arenas Belón
+ Closes #8903
+
+- curl: add --rate to set max request rate per time unit
+
+ --rate "12/m" - for 12 per minute or
+ --rate "5/h" - for 5 per hour
+
+ Removed from TODO
+
+ Closes #8671
+
+- [Jay Satiro brought this change]
+
+ max-time.d: clarify max-time sets max transfer time
+
+ Prior to this change the doc said --max-time set the maximum time of the
+ 'whole operation' which is not accurate. The option maps to
+ CURLOPT_TIMEOUT_MS which sets maximum transfer time.
+
+ For example, the maximum time on a transfer is reset if the transfer is
+ retried (--retry).
+
+ Reported-by: Nuru@users.noreply.github.com
+
+ Fixes https://github.com/curl/curl/issues/8877
+ Closes #8879
+
+- GHA/hyper: enable debug in the build
+
+- hyper: use 'alt-used'
+
+ Makes test 412+413 work
+
+ Closes #8898
+
+- RELEASE-NOTES: synced
+
+- CURLINFO_CAPATH/CAINFO: get the default CA paths from libcurl
+
+ Closes #8888
+
+- links: update dead links
+
+ The wiki pages are gone, remove and link to more long-living docs.
+
+ Closes #8897
+
+- ntlm: (void) typecast msnprintf() where we ignore return code
+
+ Follow-up to 5a41abef6, to please Coverity
+
+Daniel Gustafsson (22 May 2022)
+- ntlm: copy NTLM_HOSTNAME to host buffer
+
+ Commit 709ae2454f43 added a fake hostname to avoid leaking the local
+ hostname, but omitted copying it to the host buffer. Fix by copying
+ and adjust the test fallout.
+
+ Closes: #8895
+ Fixes: #8893
+ Reported-by: Patrick Monnerat <patrick@monnerat.net>
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- configure: use the SED value to invoke sed
+
+ Rather than assuming sed in PATH, use the resolved $SED variable
+ like in all other invocations of sed in configure.
+
+ Closes: #8891
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+ Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
+
+Daniel Stenberg (20 May 2022)
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: Allow curl to send larger UDP datagrams
+
+ Allow curl to send larger UDP datagram if Path MTU Discovery finds the
+ availability of larger path MTU. To make it work and not to send
+ fragmented packet, we need to set DF bit. That makes send(2) fail with
+ EMSGSIZE if UDP datagram is too large. In that case, just let it be
+ lost. This patch enables DF bit for Linux only.
+
+ Closes #8883
+
+- libcurl-security.3: add "Secrets in memory"
+
+ Closes #8881
+
+- tests: update NTLM tests to use new host name
+
+ Also drop the debug requirement, remove the setenv sections, remove
+ prechecks and add NTLM to the top keywords.
+
+ Closes #8889
+
+- ntlm: provide a fixed fake host name
+
+ The NTLM protocol includes providing the local host name, but apparently
+ other implementations already provide a fixed fake name instead to avoid
+ leaking the real local name.
+
+ The exact name used is 'WORKSTATION', because Firefox uses that.
+
+ The change is written to allow someone to "back-pedal" fairly easy in
+ case of need.
+
+ Reported-by: Carlo Alberto
+ Fixes #8859
+ Closes #8889
+
+Daniel Gustafsson (20 May 2022)
+- KNOWN_BUGS: fix typo in problem description
+
+ s/TSL/TLS/
+
+- FEATURES: remove yassl as TLS library for NTLM
+
+ yassl was added in commit 9d904ee41b880b but is no longer available
+ and is thus not a library to use for NTLM. This aligns the FEATURES
+ doc with the FAQ.
+
+ Closes: #8886
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- FEATURES: reorder footnotes
+
+ The empty left-behind footnote confused the website rendering into
+ creating a nested emoty list, making the resulting page look quite
+ odd. Remove and re-order the remaining ones to avoid a gap in the
+ sequence.
+
+ Closes: #8886
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- FAQ: remove opinionated sentence on NTLM
+
+ curl is a tool that support many different things, and it doesn't
+ really seem like our job to tell other what to use (as they might
+ not have much say in the matter even). Also tidy up wording.
+
+ Closes: #8886
Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-Daniel Stenberg (29 Jul 2021)
+Viktor Szakats (20 May 2022)
+- log2changes: do not indent empty lines [ci skip]
+
+ This will omit two spaces of indentation from lines with no content,
+ thus avoiding 'spaces @ EOL'.
+
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+ Closes #8887
+
+Daniel Stenberg (19 May 2022)
+- wolfssl: correct the failf() message when a handle can't be made
+
+ Closes #8885
+
+Viktor Szakats (19 May 2022)
+- Makefile.m32: delete two obsolete OpenSSL options [ci skip]
+
+ - -DOPENSSL_NO_KRB5: No longer used by OpenSSL 1.1.x, 3.x, or
+ LibreSSL 3.5.x, yet it collides with the latter, which defines
+ it unconditionally, resulting in this warning:
+ ../../libressl/include/openssl/opensslfeatures.h:14:9: warning: 'OPENSSL_NO_KRB5' macro redefined [-Wmacro-redefined]
+ It was originally added to curl in 2004.
+
+ - -DHAVE_OPENSSL_PKCS12_H: No longer used by OpenSSL 1.1.x, 3.x, or
+ LibreSSL back to at least 2.5.5. Originally added in the same
+ commit as the above, in 2004.
+
+ Closes #8884
+
+Daniel Stenberg (19 May 2022)
- RELEASE-NOTES: synced
-
- and bump curlver to 7.79.0 for next release
-
-Marc Hoersken (29 Jul 2021)
-- tests/*server.py: remove pidfile on server termination
-
- Avoid pidfile leaking/laying around after server already exited.
-
- Reviewed-by: Daniel Stenberg
- Closes #7506
-
-Daniel Gustafsson (27 Jul 2021)
-- tool_main: fix typo in comment
-
- The referred to library is NSPR, so fix the switched around characters.
-
-Daniel Stenberg (28 Jul 2021)
-- [Aleksandr Krotov brought this change]
-
- bearssl: support CURLOPT_CAINFO_BLOB
-
- Closes #7468
-
-- curl.1: mention "global" flags
-
- Mention options that are "global". A global command line option is one
- that doesn't get reset at --next uses and therefore don't need to be
- used again.
-
- Reported-by: Josh Soref
-
- Fixes #7457
- Closes #7510
-
-- CURLOPT_DOH_URL.3: CURLOPT_OPENSOCKETFUNCTION is not inherited
-
- Reported-by: Daniel Woelfel
- Fixes #7441
- Closes #7509
-
-- KNOWN_BUGS: add more HTTP/3 problems
-
- Closes #7351
- Closes #7339
- Closes #7125
-
-Marc Hoersken (27 Jul 2021)
-- CI/azure: reduce compile time with increased parallism
-
- Azure Pipelines CI VMs have 2 CPUs, let's use them.
-
- Closes #7489
-
-Jay Satiro (27 Jul 2021)
-- [Josh Soref brought this change]
-
- docs: fix grammar
-
- Fixes https://github.com/curl/curl/issues/7444
- Fixes https://github.com/curl/curl/issues/7451
- Fixes https://github.com/curl/curl/issues/7465
- Closes https://github.com/curl/curl/pull/7495
-
-- mail-rcpt.d: fix grammar
-
- Remove confusing sentence that says to specify an e-mail address for
- mail transfer, since that's implied.
-
- Reported-by: Josh Soref
-
- Fixes https://github.com/curl/curl/issues/7452
- Closes https://github.com/curl/curl/pull/7495
-
-Daniel Stenberg (27 Jul 2021)
-- c-hyper: remove the hyper_executor_poll() loop from Curl_http
-
- 1. it's superfluous
- 2. it didn't work identically to the Curl_hyper_stream one which could
- cause problems like #7486
-
- Pointed-out-by: David Cook
- Closes #7499
-
-- curl-openssl.m4: check lib64 for the pkg-config file
-
- OpenSSL recently started putting the libs in $prefix/lib64 on 'make
- install', so we check that directory for pkg-config data if the 'lib'
- check fails.
-
- Closes #7503
-
-- CURLOPT_SSL_CTX_*.3: tidy up the example
-
- Use the proper code style. Don't store return codes that aren't read.
- Copy the same example into CURLOPT_SSL_CTX_FUNCTION.3 as well.
-
- Closes #7500
-
-- example/cookie_interface: fix scan-build printf warning
-
- Follow-up to 4b79c4fb565
-
- Fixes #7497
- Closes #7498
-
-- [Josh Soref brought this change]
-
- limit-rate.d: clarify base unit
-
- Fixes #7439
- Closes #7494
-
-- [Carlo Marcelo Arenas Belón brought this change]
-
- examples/cookie_interface: avoid printfing time_t directly
-
- time_t representation is undefined and varies on bitsize and signedness,
- and as of C11 could be even non integer.
-
- instead of casting to unsigned long (which would truncate in systems
- with a 32bit long after 2106) use difftime to get the elapsed time as a
- double and print that (without decimals) instead.
-
- alternatively a cast to curl_off_t and its corresponding print
- formatting could have been used (at least in POSIX) but portability and
- curl agnostic code was prioritized.
-
- Closes #7490
-
-Marc Hoersken (25 Jul 2021)
-- tests/servers: remove obsolete pid variable
-
- Variable is not used since pidfile handling moved to util.[ch]
-
- Reviewed-by: Jay Satiro
- Closes #7482
-
-- tests/servers: use our platform-aware pid for server verification
-
- The pid used for server verification is later stored as pid2 in
- the hash of running test servers and therefore used for shutdown.
-
- The pid used for shutdown must be the platform-aware (Win32) pid
- to avoid leaking test servers while running them using Cygwin/msys.
-
- Reviewed-by: Jay Satiro
- Closes #7481
-- tests/runtests.pl: cleanup copy&paste mistakes and unused code
-
- Reviewed-by: Jay Satiro
- Part of #7481
+ bump to 7.84.0
+
+- [Christian Weisgerber via curl-library brought this change]
+
+ Makefile.am: fix portability issues
+
+ Commit a04f0b961333e1a19848d073d8c7db9c20b2a371 made me notice that
+ there is a portability issue in curl's top-level Makefile.am.
+
+ $< can only be used in rules that deal with .SUFFIXES. Its use
+ for general prerequisites is a GNU make extension.
+
+ $< could be replaced by $?, but I think in an autotools context,
+ something like this is better:
+
+ Bug: https://curl.se/mail/lib-2022-05/0024.html
+ Closes #8861
+
+- [Balakrishnan Balasubramanian brought this change]
+
+ socks: support unix sockets for socks proxy
+
+ Usage:
+ curl -x "socks5h://localhost/run/tor/socks" "https://example.com"
+
+ Updated runtests.pl to run a socksd server listening on unix socket
+
+ Added tests test1467 test1468
+
+ Added documentation for proxy command line option and socks proxy
+ options
+
+ Closes #8668
+
+- [Vincent Torri brought this change]
+
+ cmake: add libpsl support
+
+ Fixes #8865
+ Closes #8867
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: extend QUIC transport parameters buffer
+
+ Extend QUIC transport parameters buffer because 64 bytes are too
+ short for the ever increasing parameters.
+
+ Closes #8872
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: handle error from ngtcp2_conn_submit_crypto_data
+
+ Closes #8871
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: send appropriate connection close error code
+
+ Closes #8870
+
+- test1561: adjusted for the cookie fix
+
+- test414: verify secure cookie domain overlay
+
+- [Harry Sintonen brought this change]
+
+ cookie: address secure domain overlay
+
+ Bug: https://hackerone.com/reports/1560324
+ Co-authored-by: Daniel Stenberg
+ Closes #8840
+
+- [Frank Gevaerts brought this change]
+
+ strcase: some optimisations
+
+ Lookup tables for toupper() and tolower() make Curl_strcasecompare()
+ about 1.5 times faster. Reorganising Curl_strcasecompare() to fully exit
+ early then also allows simplifying the check at the end, for another
+ 15%. In total, the changes make Curl_strcasecompare() around 1.6 to 1.7
+ times faster.
+
+ Note that these optimisation assume ASCII. The original
+ Curl_raw_toupper() and raw_tolower() look like they already made that
+ assumption.
+
+ Closes #8875
+
+- BUG-BOUNTY.md: mention the audit exception
+
+ Dedicated - paid for - security audits that are performed in
+ collaboration with curl developers are not eligible for bounties.
+
+ (plus I changed the sub-titles to use ## instead of # in the markdown)
+
+ Closes #8880
+
+- lib/vssh/wolfssh.h: removed
+
+ Unused header file
+
+ Reported-by: Illarion Taev
+ Fixes #8863
+ Closes #8866
+
+- [Elms brought this change]
+
+ wolfSSL: explicitly use compatibility layer
+
+ This change removes adding an include `$prefix/wolfssl` or similar to
+ allow for openssl include aliasing. Include paths of `wolfssl/openssl/`
+ are used to explicitly use wolfSSL includes. This fixes cmake builds as
+ well as avoiding potentially using openSSL headers since include path
+ order is not guaranteed.
+
+ Closes #8864
+
+- curl: deprecate --random-file and --egd-file
+
+ As libcurl no longer has any functionality for them, the tool now does
+ nothing with them.
+
+ Closes #8670
+
+- opts: deprecate RANDOM_FILE and EGDSOCKET
+
+ These two options were only ever used for the OpenSSL backend for
+ versions before 1.1.0. They were never used for other backends and they
+ are not used with recent OpenSSL versions. They were never used much by
+ applications.
+
+ The defines RANDOM_FILE and EGD_SOCKET can still be set at build-time
+ for ancient EOL OpenSSL versions.
+
+ Closes #8670
+
+- [Harry Sintonen brought this change]
+
+ bindlocal: don't use a random port if port number would wrap
+
+ Earlier if CURLOPT_LOCALPORT + CURLOPT_LOCALPORTRANGE would go past port
+ 65535 the code would fall back to random port rather than giving up.
+
+ Closes #8862
+
+Daniel Gustafsson (16 May 2022)
+- transfer: Fix potential NULL pointer dereference
+
+ Commit 0ef54abf5208 accidentally used the conn variable before the
+ assertion for it being NULL. Fix by moving the assignment which use
+ conn to after the assertion.
+
+ Closes: #8857
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- docs: clarify data replacement policy for MIME API
+
+ The API documentation for the MIME functions specify that the parts
+ can be set twice, with the last call winning. While true, the user
+ can set the parts n times for n > 2, reword to specify multiple API
+ calls instead.
+
+ Closes: #8860
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (16 May 2022)
+- [vvb2060 on github brought this change]
+
+ ngtcp2: support boringssl crypto backend
+
+ Closes #8789
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ quic: add Curl_quic_idle
+
+ Add Curl_quic_idle which is called when no HTTP level read or write is
+ performed. It is a good place to handle timer expiry for QUIC transport
+ (.e.g, retransmission).
+
+ Closes #8698
+
+- [Gregor Jasny brought this change]
+
+ mprintf: ignore clang non-literal format string
+
+ Closes #8740
+
+- [Nick Zitzmann brought this change]
+
+ sectransp: check for a function defined when __BLOCKS__ is undefined
+
+ SecTrustEvaluateAsync() is defined in the macOS 10.7 SDK, but it
+ requires Grand Central Dispatch to be supported by the compiler, and
+ some third-party macOS compilers do not support Grand Central Dispatch.
+ SecTrustCopyPublicKey() is not present in macOS 10.6, so this shouldn't
+ adversely affect anything.
+
+ Fixes #8846
+ Reported-by: Egor Pugin
+ Closes #8854
+
+Daniel Gustafsson (16 May 2022)
+- test412/413: Use version macro for User-Agent
+
+ Commit 46d45ea3a incorrectly hardcoded the User-Agent in the test
+ output file which breaks when curlver is updated. Shift to using
+ the %VERSION macro instead.
+
+ Closes: #8856
+
+- macos9: remove partial support
+
+ The support for compiling on Mac OS 9 hasn't been modified since 2001
+ and has no active maintainer or packager, so it's time to remove it as
+ it's incredibly unlikely to work. If a maintainer re-emerges it can be
+ resurrected from Git history.
+
+ Closes: #8836
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (16 May 2022)
+- test1635: verify --fail-with-body with --retry
+
+ Almost a dupe of 1634
+
+ Closes #8847
+
+- tool_operate: make sure --fail-with-body works with --retry
+
+ ... in the same way --fail already does.
+
+ Reported-by: Jakub Bochenski
+ Fixes #8845
+ Closes #8847
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: Correct use of ngtcp2 and nghttp3 signed integer types
+
+ Closes #8851
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: Fix alert_read_func return value
+
+ Closes #8852
+
+- [Harry Sintonen brought this change]
+
+ Curl_parsenetrc: don't access local pwbuf outside of scope
+
+ Accessing local variables outside of the scope is forbidden and
+ depending on the compiler can result in the value being
+ overwritten. Fixed by moving the pwbuf to be in scope.
+
+ Closes #8850
-Daniel Stenberg (25 Jul 2021)
- RELEASE-NOTES: synced
-
- bumped to 7.78.1 for next release
-
-- http_proxy: clear 'sending' when the outgoing request is sent
-
- ... so that Curl_connect_getsock() will know how to wait for the socket
- to become readable and not writable after the entire CONNECT request has
- been issued.
-
- Regression added in 7.77.0
-
- Reported-by: zloi-user on github
- Assisted-by: Jay Satiro
- Fixes #7155
- Closes #7484
-
-Jay Satiro (25 Jul 2021)
-- [Josh Soref brought this change]
-
- openssl: fix grammar
-
- Closes https://github.com/curl/curl/pull/7480
-
-- configure.ac: tweak nghttp2 library name fix again
-
- - Change extraction to handle multiple library names returned by
- pkg-config (eg a possible scenario with pkg-config --static).
-
- Ref: https://github.com/curl/curl/pull/7472
-
- Closes https://github.com/curl/curl/pull/7485
-
-Dan Fandrich (23 Jul 2021)
-- Get rid of the unused HAVE_SIG_ATOMIC_T et. al.
-
- It was added in 2006 but I see no evidence it was ever used.
-
-Jay Satiro (23 Jul 2021)
-- docs: change max-filesize caveat again
-
- - Add protocols field to max-filesize.d.
-
- - Revert wording on unknown file size caveat and do not discuss specific
- protocols in that section.
-
- Partial revert of ecf0225. All max-filesize options now have the list of
- protocols and it's clearer just to have that list without discussing
- specific protocols in the caveat.
-
- Reported-by: Josh Soref
-
- Ref: https://github.com/curl/curl/issues/7453#issuecomment-884128762
-
-Daniel Stenberg (22 Jul 2021)
-- [Christian Weisgerber brought this change]
- configure: tweak nghttp2 library name fix
-
- commit 29c7cf79e8b44cf (shipped in 7.78.0) introduced a problem by
- assuming that LIB_H2 does not have any leading whitespace. At least
- OpenBSD's native pkg-config can produce such whitespace, though:
-
- $ pkg-config --libs-only-l libnghttp2
- -lnghttp2
-
- As a result, the configure check for libnghttp2 will erroneously fail.
-
- Bug: https://curl.se/mail/lib-2021-07/0050.html
- Closes #7472
-
-- [Bastian Krause brought this change]
-
- docs/MQTT: update state of username/password support
-
- PR #7243 implemented username/password support for MQTT, so let's drop
- these items from the caveats.
-
- Signed-off-by: Bastian Krause <bst@pengutronix.de>
-
- Closes #7474
-
-- [Oleg Pudeyev brought this change]
-
- CURLMOPT_TIMERFUNCTION.3: remove misplaced "time"
-
- Closes #7470
-
-Version 7.78.0 (21 Jul 2021)
-
-Daniel Stenberg (21 Jul 2021)
+ and bump curlver to 7.83.2 for now (but likely to become 7.84.0 soon)
+
+- [Frazer Smith brought this change]
+
+ ci: update github actions
+
+ - bump actions/checkout from 2 to 3
+ - bump actions/upload-artifact from 1 to 3
+ - bump github/codeql-actions from 1 to 2
+ - use version tag for actions/checkout
+
+ Closes #8843
+
+- test1919: verify CURLOPT_XOAUTH2_BEARER leak fix
+
+- url: free old conn better on reuse
+
+ Make use of conn_free() better and avoid duplicate code.
+
+ Reported-by: Andrea Pappacoda
+ Fixes #8841
+ Closes #8842
+
+Jay Satiro (14 May 2022)
+- FAQ: Clarify Windows double quote usage
+
+ - Windows command prompt doesn't use literal quoting via single quotes.
+
+ - Windows command prompt inner double quotes are escaped with a
+ backslash.
+
+ - Windows powershell does use single quotes but curl is not a powershell
+ script so the arguments may not be passed on correctly.
+
+ - Windows powershell inner double quotes seems can be passed to curl if
+ the outer quotes are double quotes and an escape of backslash-backtick
+ is used.
+
+ Command prompt example:
+
+ ~~~
+ getargs -v -d "\"a\""
+
+ argv[0]: getargs
+ argv[1]: -v
+ argv[2]: -d
+ argv[3]: "a"
+ ~~~
+
+ Ref: https://github.com/curl/curl/issues/8818
+ Ref: https://gist.github.com/jay/19aba48653bd591cf4b90eb9249a302c
+
+ Reported-by: KotlinIsland@users.noreply.github.com
+
+ Closes https://github.com/curl/curl/pull/8823
+
+Daniel Stenberg (12 May 2022)
+- github/workflows/nss: apt update first
+
+ Fix "libnss3-dev_3.49.1-1ubuntu1.6_amd64.deb 404 Not Found"
+
+ Closes #8837
+
+- page-footer: mention exit code zero too
+
+ Success (zero) is also an "exit code" worth mentioning.
+
+ Closes #8833
+
+Daniel Gustafsson (12 May 2022)
+- gssapi: initialize gss_buffer_desc strings
+
+ Explicitly initialize gss_buffer_desc strings such that a call to
+ freeing resources will succeed even if no data has been allocated
+ to it.
+
+ Reported-by: Jay Satiro <raysatiro@yahoo.com>
+
+- gssapi: improve handling of errors from gss_display_status
+
+ In case gss_display_status() returns an error, avoid trying to add
+ it to the buffer as the message may well be a NULL pointer.
+
+ Originally this fix comes from a discussion in issue #8816.
+
+ Closes: #8832
+ Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
+
+Jay Satiro (12 May 2022)
+- [steini2000 brought this change]
+
+ http2: always debug print stream id in decimal with %u
+
+ Prior to this change the stream id shown could be hex or decimal which
+ was inconsistent and confusing.
+
+ Closes https://github.com/curl/curl/pull/8808
+
+Kamil Dudka (11 May 2022)
+- url: remove redundant #ifdefs in allocate_conn()
+
+ No change in behavior intended by this commit.
+
+Daniel Stenberg (11 May 2022)
+- [Fabian Keil brought this change]
+
+ tests 266, 116 and 1540: add a small write delay
+
+ This makes it more likely that the trailer is received
+ seperately from the last-chunk.
+
+ curl doesn't seem to care about this but it makes the tests
+ more useful when testing external proxies like Privoxy.
+
+- [Fabian Keil brought this change]
+
+ tests 1117,1238,1523: adjust writedelay servercmds
+
+ ... so the delays are the same now that the unit
+ is in milliseconds.
+
+- [Fabian Keil brought this change]
+
+ tests/server/sws.c: change the HTTP writedelay unit to milliseconds
+
+ This allows to use write delays for large responses without
+ resulting in the test taking an unreasonable amount of time.
+
+ In many cases delaying writes by a whole second or more isn't
+ necessary for the desired effect.
+
+ Closes #8827
+
+Daniel Gustafsson (11 May 2022)
+- aws-sigv4: fix potentional NULL pointer arithmetic
+
+ We need to check if the strchr() call returns NULL (due to missing
+ char) before we use the returned value in arithmetic. There is no
+ live bug here, but fixing it before it can become for hygiene.
+
+ Closes: #8814
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (11 May 2022)
+- quiche: support ca-fallback
+
+ Follow-up to b01f3e679f4c1ea3 which added this for ngtcp2/openssl
+
+ Removed from KNOWN_BUGS
+
+ Fixes #8696
+ Closes #8830
+
+Daniel Gustafsson (11 May 2022)
+- x509asn1: mark msnprintf return as unchecked
+
+ We have lots of unchecked msnprintf calls, and this particular msnprintf
+ call isn't more interesting than the others, but this one yields a Coverity
+ warning so let's implicitly silence it. Going over the other invocations
+ is probably a worthwhile project, but for now let's keep the static
+ analyzers happy.
+
+ Closes: #8831
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Version 7.83.1 (11 May 2022)
+
+Daniel Stenberg (11 May 2022)
- RELEASE-NOTES: synced
-
- curl 7.78.0 release
-- winbuild/MakefileBuild.vc: bump copyright year
+ curl 7.83.1 release
-Jay Satiro (21 Jul 2021)
-- docs: mention max-filesize options also apply to MQTT transfers
-
- Also make it clearer that the caveat 'if the file size is unknown it
- the option will have no effect' may apply to protocols other than FTP
- and HTTP.
-
- Reported-by: Josh Soref
-
- Fixes https://github.com/curl/curl/issues/7453
+- THANKS: added contributors from 7.83.1
-- [Josh Soref brought this change]
+- zuul: fix the ngtcp2-gnutls build
- docs/cmdline: fix grammar and typos
+ Add packages and tweak the configure options.
-- [Josh Soref brought this change]
+ Use the GnuTLS 3.7.4 branch (not main).
+
+ Closes #8829
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: add ca-fallback support for OpenSSL backend
+
+ Closes #8828
+
+- url: check SSH config match on connection reuse
+
+ CVE-2022-27782
- dump-header.d: Drop suggestion to use for cookie storage
-
- Since --cookie-jar is the preferred way to store cookies, no longer
- suggest using --dump-header to do so.
-
- Co-authored-by: Daniel Stenberg
-
- Closes https://github.com/curl/curl/issues/7414
-
-- [Josh Soref brought this change]
-
- doc/cmdline: fix grammar and typos
-
- Closes https://github.com/curl/curl/pull/7454
- Closes https://github.com/curl/curl/pull/7455
- Closes https://github.com/curl/curl/pull/7456
- Closes https://github.com/curl/curl/pull/7459
- Closes https://github.com/curl/curl/pull/7460
- Closes https://github.com/curl/curl/pull/7461
- Closes https://github.com/curl/curl/pull/7462
- Closes https://github.com/curl/curl/pull/7463
-
-Daniel Stenberg (20 Jul 2021)
-- vtls: fix connection reuse checks for issuer cert and case sensitivity
-
- CVE-2021-22924
-
Reported-by: Harry Sintonen
- Bug: https://curl.se/docs/CVE-2021-22924.html
-
-- sectransp: check for client certs by name first, then file
-
- CVE-2021-22926
-
- Bug: https://curl.se/docs/CVE-2021-22926.html
-
- Assisted-by: Daniel Gustafsson
+ Bug: https://curl.se/docs/CVE-2022-27782.html
+ Closes #8825
+
+- tls: check more TLS details for connection reuse
+
+ CVE-2022-27782
+
Reported-by: Harry Sintonen
+ Bug: https://curl.se/docs/CVE-2022-27782.html
+ Closes #8825
-- telnet: fix option parser to not send uninitialized contents
-
- CVS-2021-22925
-
- Reported-by: Red Hat Product Security
- Bug: https://curl.se/docs/CVE-2021-22925.html
-
-Jay Satiro (20 Jul 2021)
-- connect: fix wrong format specifier in connect error string
-
- 0842175 (not in any release) used the wrong format specifier (long int)
- for timediff_t. On an OS such as Windows libcurl's timediff_t (usually
- 64-bit) is bigger than long int (32-bit). In 32-bit Windows builds the
- upper 32-bits of the timediff_t were erroneously then used by the next
- format specifier. Usually since the timeout isn't larger than 32-bits
- this would result in null as a pointer to the string with the reason for
- the connection failing. On other OSes or maybe other compilers it could
- probably result in garbage values (ie crash on deref).
-
- Before:
- Failed to connect to localhost port 12345 after 1201 ms: (nil)
-
- After:
- Failed to connect to localhost port 12345 after 1203 ms: Connection refused
-
- Closes https://github.com/curl/curl/pull/7449
-
-- winbuild: support alternate nghttp2 static lib name
-
- - Support both nghttp2.lib and nghttp2_static.lib for static nghttp2.
-
- nghttp2 briefly changed its static lib name to nghttp2_static, but then
- made the _static suffix optional.
-
- Ref: https://github.com/nghttp2/nghttp2/pull/1394
- Ref: https://github.com/nghttp2/nghttp2/pull/1418
- Ref: https://github.com/nghttp2/nghttp2/issues/1466
-
- Reported-by: Pierre Yager
-
- Fixes https://github.com/curl/curl/issues/7446
- Closes https://github.com/curl/curl/pull/7447
-
-- [Josh Soref brought this change]
-
- docs/cmdline: fix grammar and typos
-
- Closes https://github.com/curl/curl/pull/7432
- Closes https://github.com/curl/curl/pull/7436
- Closes https://github.com/curl/curl/pull/7438
- Closes https://github.com/curl/curl/pull/7440
- Closes https://github.com/curl/curl/pull/7445
-
-- [Josh Soref brought this change]
-
- delegation.d: mention what happens when used multiple times
-
- Closes https://github.com/curl/curl/pull/7408
-
-- [Josh Soref brought this change]
-
- create-file-mode.d: mention what happens when used multiple times
-
- Closes https://github.com/curl/curl/pull/7407
-
-- [Josh Soref brought this change]
-
- config.d: split comments and option-per line
-
- Closes https://github.com/curl/curl/pull/7405
-
-Daniel Stenberg (19 Jul 2021)
-- misc: copyright year range updates
-
-- mailmap: add Tobias and Timur
-
-Daniel Gustafsson (18 Jul 2021)
-- [Josh Soref brought this change]
-
- docs: spell out directories instead of dirs in create-dirs
-
- Write out directories rather than using the dirs abbrevation. Also
- use plural form consistently, even if the code in the end might just
- create a single directory.
-
- Closes #7406
+- cookies: make bad_domain() not consider a trailing dot fine
+
+ The check for a dot in the domain must not consider a single trailing
+ dot to be fine, as then TLD + trailing dot is fine and curl will accept
+ setting cookies for it.
+
+ CVE-2022-27779
+
+ Reported-by: Axel Chong
+ Bug: https://curl.se/docs/CVE-2022-27779.html
+ Closes #8820
+
+- test977: reproduce ability to set cookie on TLD
+
+ When PSL is not enabled
+
+- scripts/contributors.sh: correct the copyright range
+
+- docs/RELEASE-PROCEDURE.md: refreshed and adjsuted the release dates
+
+- test379: verify --remove-on-error with --no-clobber
+
+- post_per_transfer: remove the updated file name
+
+ When --remove-on-error is used with --no-clobber, it might have an
+ updated file name to remove.
+
+ Bug: https://curl.se/docs/CVE-2022-27778.html
+
+ CVE-2022-27778
+
+ Reported-by: Harry Sintonen
+
+ Closes #8824
+
+- hsts: ignore trailing dots when comparing hosts names
+
+ CVE-2022-30115
+
+ Reported-by: Axel Chong
+ Bug: https://curl.se/docs/CVE-2022-30115.html
+ Closes #8821
+
+- test440/441: verify HSTS with trailing dots
+
+- libtest/lib1560: verify the host name percent decode fix
+
+- urlapi: reject percent-decoding host name into separator bytes
+
+ CVE-2022-27780
+
+ Reported-by: Axel Chong
+ Bug: https://curl.se/docs/CVE-2022-27780.html
+ Closes #8826
+
+- nss: return error if seemingly stuck in a cert loop
+
+ CVE-2022-27781
+
+ Reported-by: Florian Kohnhäuser
+ Bug: https://curl.se/docs/CVE-2022-27781.html
+ Closes #8822
+
+- test412/413: verify alt-svc with trailing dots
+
+- altsvc: fix host name matching for trailing dots
+
+ Closes #8819
+
+- [Garrett Squire brought this change]
+
+ hyper: fix test 357
+
+ This change fixes the hyper API such that PUT requests that receive a
+ 417 response can retry without the Expect header.
+
+ Closes #8811
+
+- [Harry Sintonen brought this change]
+
+ sectransp: bail out if SSLSetPeerDomainName fails
+
+ Before the code would just warn about SSLSetPeerDomainName() errors.
+
+ Closes #8798
+
+- http_proxy/hyper: handle closed connections
+
+ Enable test 1021 for hyper builds.
+
+ Patched-by: Prithvi MK
+ Fixes #8700
+ Closes #8806
+
+- KNOWN_BUGS: timeout when reusing a http3 connection
+
+ Closes #8764
+
+- KNOWN_BUGS: configure --with-ca-fallback is not supported by h3
+
+ Closes #8696
+
+- [Ryan Schmidt brought this change]
+
+ Makefile: fix "make ca-firefox"
+
+ Closes #8804
+
+Daniel Gustafsson (5 May 2022)
+- tests: fix markdown formatting in README
+
+ The asterisk in the abbreviation *NIX (for UNIX/Linux) needs to be
+ escaped to not mean start of italic formatting. This is consistent
+ with docs/RELEASE-PROCEDURE.md.
+
+ Closes: #8802
Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (5 May 2022)
+- TODO: expand on "Expose tried IP addresses that failed"
+
+ Ref: #8794
+
+Daniel Gustafsson (5 May 2022)
+- [Fabian Keil brought this change]
+
+ tests/server: declare variable 'reqlogfile' static
+
+ Silences the warning:
+
+ CC socksd-socksd.o
+ socksd.c:143:13: warning: no previous extern declaration for
+ non-static variable 'reqlogfile' [-Wmissing-variable-declarations]
+ const char *reqlogfile = DEFAULT_REQFILE;
+ ^
+ socksd.c:143:7: note: declare 'static' if the variable is not
+ intended to be used outside of this translation unit
+ const char *reqlogfile = DEFAULT_REQFILE;
+ ^
+ 1 warning generated.
+
+ ... when compiling with clang 13.
+
+ Closes: #8799
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
-- [Tobias Nyholm brought this change]
+- HTTP-COOKIES: add missing CURLOPT_COOKIESESSION
- docs: correct spelling errors and a broken link
-
- Update grammar and spelling in docs and source code comments.
-
- Closes: #7427
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+ Commit 980a47b42 added support for ignoring session cookies, but it
+ was never added to the documentation.
-Marc Hoersken (18 Jul 2021)
-- CI/cirrus: install impacket from PyPI instead of FreeBSD packages
-
- Availability of impacket as FreeBSD package is too flaky.
-
- Stick to legacy version of cryptography which still
- supports OpenSSL version 1.0.2 due to FreeBSD 11.
-
- Reviewed-by: Daniel Stenberg
-
- Closes #7418
+ Closes: #8795
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-Daniel Stenberg (18 Jul 2021)
-- [Josh Soref brought this change]
+Daniel Stenberg (5 May 2022)
+- docs/THANKS: remove name duplicate
- docs/cmdline: mention what happens when used multiple times
-
- For --dns-ipv4-addr, --dns-ipv6-addr and --dns-servers
-
- Closes #7410
- Closes #7411
- Closes #7412
+- [Philip Heiduck brought this change]
-- [Michał Antoniak brought this change]
+ .mailmap: update
- lib: fix compiler warnings with CURL_DISABLE_NETRC
-
- warning C4189: 'netrc_user_changed': local variable is initialized but
- not referenced
-
- warning C4189: 'netrc_passwd_changed': local variable is initialized but
- not referenced
-
- Closes #7423
-
-- disable-epsv.d: remove duplicate "(FTP)"
-
- ... since the tooling adds that to the output based on the "Protocols:"
- tag.
-
-- [Max Zettlmeißl brought this change]
-
- docs: make the documentation for --etag-save match the program behaviour
-
- When using curl with the option `--etag-save` I expected it to save the
- ETag without its surrounding quotes, as stated by the documentation in
- the repository and by the generated man pages.
-
- My first endeavour was to fix the program, but while investigating the
- history of the relevant parts, I discovered that curl once saved the
- ETag without the quotes. This was undone by Daniel Stenberg in commit
- `98c94596f5928840177b6bd3c7b0f0dd03a431af`, therefore I decided that in
- this case the documentation should be adjusted to match the behaviour of
- curl.
-
- The changed save behaviour also made parts of the `--etag-compare`
- documentation wrong or superfluous, so I adjusted those accordingly.
-
- Closes #7429
-
-- [Josh Soref brought this change]
-
- write-out.d: add missing periods
-
- Closes #7404
-
-- [Josie Huddleston brought this change]
-
- easy: during upkeep, attach Curl_easy to connections in the cache
-
- During the protocol-specific parts of connection upkeep, some code
- assumes that the data->conn pointer already is set correctly. However,
- there's currently no guarantee of that in the code.
-
- This fix temporarily attaches each connection to the Curl_easy object
- before performing the protocol-specific connection check on it, in a
- similar manner to the connection checking in extract_if_dead().
-
- Fixes #7386
- Closes #7387
- Reported-by: Josie Huddleston
-
-- [Josh Soref brought this change]
-
- cleanup: spell DoH with a lowercase o
-
- Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
-
- Closes #7413
-
-- [Josh Soref brought this change]
-
- TheArtOfHttpScripting: polish
-
- - add missing backticks and comma
-
- - fix proxy description:
-
- * example proxy isn't local
- * locally doesn't really make sense
-
- Closes #7416
-
-- [Josh Soref brought this change]
-
- form.d: add examples of `,`/`;` for file[name]
-
- Fixes #7415
- Closes #7417
+ Closes #8800
-- [Michał Antoniak brought this change]
+Jay Satiro (5 May 2022)
+- mbedtls: fix some error messages
- mbedtls: Remove unnecessary include
-
- - curl_setup.h: all references to mbedtls_md4* functions and structures
- are in the md4.c. This file already includes the <mbedtls/md4.h> file
- along with the file existence control (defined (MBEDTLS_MD4_C))
-
- - curl_ntlm_core.c: unnecessary include - repeated below
-
- Closes #7419
+ Prior to this change some of the error messages misidentified the
+ function that failed.
+Daniel Stenberg (5 May 2022)
- RELEASE-NOTES: synced
-Jay Satiro (16 Jul 2021)
-- [User Sg brought this change]
-
- multi: fix crash in curl_multi_wait / curl_multi_poll
-
- Appears to have been caused by 51c0ebc (precedes 7.77.0) which added a
- VALID_SOCK check to one of the loops through the sockets but not the
- other.
-
- Reported-by: sylgal@users.noreply.github.com
- Authored-by: sylgal@users.noreply.github.com
-
- Fixes https://github.com/curl/curl/issues/7379
- Closes https://github.com/curl/curl/pull/7389
-
-- [Daniel Gustafsson brought this change]
-
- tool_help: remove unused define
-
- The PRINT_LINES_PAUSE macro is no longer used, and has been mostly
- cleaned out but one occurrence remained.
-
- Closes https://github.com/curl/curl/pull/7380
+- [Sergey Markelov brought this change]
+
+ x509asn1: make do_pubkey handle EC public keys
+
+ Closes #8757
+
+- [Harry Sintonen brought this change]
+
+ mbedtls: bail out if rng init fails
+
+ There was a failf() call but no actual error return.
+
+ Closes #8796
- [Sergey Markelov brought this change]
- build: fix compiler warnings when CURL_DISABLE_VERBOSE_STRINGS
-
- fix compiler warnings about unused variables and parameters when
- built with --disable-verbose.
-
- Closes https://github.com/curl/curl/pull/7377
-
-- [Andrea Pappacoda brought this change]
-
- build: fix IoctlSocket FIONBIO check
-
- Prior to this change HAVE_IOCTLSOCKET_CAMEL_FIONBIO mistakenly checked
- for (lowercase) ioctlsocket when it should have checked for IoctlSocket.
-
- Closes https://github.com/curl/curl/pull/7375
-
-- [Timur Artikov brought this change]
-
- configure: fix nghttp2 library name for static builds
-
- Don't hardcode the nghttp2 library name,
- because it can vary, be "nghttp2_static" for example.
-
- Fixes https://github.com/curl/curl/issues/7367
- Closes https://github.com/curl/curl/pull/7368
-
-Gisle Vanem (16 Jul 2021)
-- [PellesC] fix _lseeki64() macro
-
-- [SChannel] Use '_tcsncmp()' instead
-
- Revert previous change for PellesC.
-
- Instead replace all use of `_tcsnccmp()` with `_tcsncmp()`.
-
-- [PellesC] missing '_tcsnccmp'
-
- PellesC compiler does not have this macro in it's `<tchar.h>`
-
-Daniel Gustafsson (14 Jul 2021)
-- TODO: add mention of mbedTLS 3 incompatibilities
-
- Wyatt OʼDay reported in #7385 that mbedTLS isn't backwards compatible
- and curl no longer builds with it. Document the need to fix our support
- until so has been done.
-
- Closes #7390
- Fixes #7385
- Reported-by: Wyatt OʼDay
- Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
+ urlapi: address (harmless) UndefinedBehavior sanitizer warning
-- docs: fix inconsistencies in EGDSOCKET documentation
-
- Only the OpenSSL backend actually use the EGDSOCKET, and also use
- TLS consistently rather than mixing SSL and TLS. While there, also
- fix a minor spelling nit.
-
- Closes: #7391
- Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
+ `while(i--)` causes runtime error: unsigned integer overflow: 0 - 1
+ cannot be represented in type 'size_t' (aka 'unsigned long')
+
+ Closes #8797
+
+- [Fabian Keil brought this change]
+
+ test{898,974,976}: add 'HTTP proxy' keywords
+
+ ... so the tests can be automatically skipped when
+ testing external HTTP proxies like Privoxy.
-- [Борис Верховский brought this change]
+ Closes #8791
- docs: document missing arguments to commands
-
- This is a followup to commit f410b9e538129e77607fef1 fixing a few
- more commands which takes arguments.
-
- Closes #7382
+- [Harry Sintonen brought this change]
+
+ gskit_connect_step1: fixed bogus setsockopt calls
+
+ setsockopt takes a reference to value, not value. With the current
+ code this just leads to -1 return value with errno EFAULT.
+
+ Closes #8793
+
+- CURLOPT_SSH_AUTH_TYPES.3: fix the default
+
+ The default is all possible methods.
+
+ Closes #8792
+
+- CURLOPT_DOH_URL.3: mention the known bug
+
+ It is mostly duplicating info from KNOWN_BUGS but make it easier to find
+ for users of this option.
+
+ Closes #8790
+
+- CURLOPT_HSTS*FUNCTION.3: document the involved structs as well
+
+ Reviewed-By: Daniel Gustafsson
+ Closes #8788
+
+- docs/SECURITY-PROCESS.md: "Visible command line arguments"
+
+- SECURITY-PROCESS: mention "URL inconsistencies"
+
+ ... as common problems that are *not* vulns.
+
+Daniel Gustafsson (2 May 2022)
+- contributors: strip off final comma
+
+ The final row of contributors should not end with a comma as it's the
+ end of the list.
+
+ Closes: #8785
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (2 May 2022)
+- [Philip Heiduck brought this change]
+
+ misc: use "autoreconf -fi" instead buildconf
+
+ Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
+ Closes #8777
+
+Daniel Gustafsson (2 May 2022)
+- [Philip Heiduck brought this change]
+
+ cirrus: Use pip for Python packages on FreeBSD
+
+ Using pip instead of easy_install is more in line with how other
+ CI images are being maintained.
+
+ Closes: #8783
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
-- [Randolf J brought this change]
+- [Philip Heiduck brought this change]
- docs: fix incorrect argument name reference
-
- The documentation for the read callback was erroneously referencing
- the nitems argument by nmemb. The error was introduced in commit
- ce0881edee3c7.
-
- Closes #7383
+ cirrus: Update to FreeBSD 12.3
+
+ Closes: #8783
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
-- [Борис Верховский brought this change]
+- tool_getparam: simplify conditional statement
+
+ param_place cannot be NULL here since we immediately efter this block
+ perform arithmetic on it (and use it in order to get here) so there is
+ little reason to check.
+
+ Closes: #8786
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- RELEASE-NOTES: synced
+
+- gskit: remove unused function set_callback
+
+ This function has been unused since the initial commit of the GSKit
+ backend in 0eba02fd4. The motivation for the code was getting the
+ whole certificate chain: the only place where the latter is available
+ is as a callback parameter. Unfortunately it is not possible to pass
+ a user pointer to this callback, which precludes the possibility to
+ associate the cert chain with a data/conn structure.
+
+ For further information, search for pgsk_cert_validation_callback on:
+ https://www.ibm.com/docs/api/v1/content/ssw_ibm_i_71/apis/gsk_attribute_set_callback.htm
+
+ As the upstream library never added a parameter like that to the API,
+ we give up the wait and remove the dead code.
+
+ Closes: #8782
+ Reviewed-by: Patrick Monnerat <patrick@monnerat.net>
+
+- curl: free resource in error path
+
+ If the new filename cannot be generated due to memory pressure, free
+ the allocated aname on the way out to avoid a small leak.
- tool_help: Document that --tlspassword takes a password
-
- Closes #7378
+ Closes: #8770
Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-- scripts: Fix typo in release-notes instructions
-
- The command to run had a typo in the pathname which prevented copy
- pasting it to work, which has annoyed me enough to fix this now.
+- curl: guard against size_t wraparound in no-clobber code
+
+ When generating the new filename, make sure we aren't overflowing the
+ size_t limit when calculating the new length. This is mostly academic
+ but good code hygeine nonetheless.
+
+ Closes: #8771
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (30 Apr 2022)
+- gha: build msh3
+
+ Closes #8779
+
+- scripts/cijobs.pl: try "current branch" first then "master"
+
+- [Yusuke Nakamura brought this change]
+
+ msh3: get msh3 version from MsH3Version
+
+ Closes #8762
+
+- [Yusuke Nakamura brought this change]
+
+ msh3: psss remote_port to MsH3ConnectionOpen
+
+ MsH3 supported additional "Port" parameter to connect not hosted on
+ 443 port QUIC website.
+
+ * https://github.com/nibanks/msh3/releases/tag/v0.3.0
+ * https://github.com/nibanks/msh3/pull/37
+
+ Closes #8762
+
+- [Christian Weisgerber brought this change]
+
+ openssl: define HAVE_SSL_CTX_SET_EC_CURVES for libressl
+
+ SSL_CTX_set1_curves_list() has been available since LibreSSL 2.5.3,
+ released five years ago.
+
+ Bug: https://curl.se/mail/lib-2022-04/0059.html
+ Closes #8773
+
+- http: move Curl_allow_auth_to_host()
+
+ It was mistakenly put within the CURL_DISABLE_HTTP_AUTH #ifdef
+
+ Reported-by: Michael Olbrich
+ Fixes #8772
+ Closes #8775
+
+Daniel Gustafsson (29 Apr 2022)
+- msh3: print boolean value as text representation
+
+ Print the boolean value as its string representation instead of with
+ %hhu which isn't a format we typically use.
+
+ Closes: #8763
+ Reviewed-by: Nick Banks <nibanks@microsoft.com>
+
+Daniel Stenberg (29 Apr 2022)
+- data/test376: set a proper name
+
+- GHA/mbedtls: enabled nghttp2 in the build
+
+ Closes #8767
+
+- mbedtls: fix compile when h2-enabled
+
+ Fixes #8766
+ Reported-by: LigH-de on github
+ Closes #8768
- RELEASE-NOTES: synced
-Jay Satiro (10 Jul 2021)
-- write-out.d: Clarify urlnum is not unique for de-globbed URLs
-
- Reported-by: Коваленко Анатолий Викторович
-
- Fixes https://github.com/curl/curl/issues/7342
- Closes https://github.com/curl/curl/pull/7369
+ bumped curlver to 7.83.1-dev
-Daniel Gustafsson (3 Jul 2021)
-- [William Desportes brought this change]
+- SECURITY-PROCESS: extended
- docs: Fix typos
-
- Closes: #7370
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+ Also clarify BUG-BOUNTY.md with IBB details.
+
+ Closes #8754
+
+- [Adam Rosenfield brought this change]
-Daniel Stenberg (8 Jul 2021)
-- [Jonathan Wernberg brought this change]
-
- Revert "ftp: Expression 'ftpc->wait_data_conn' is always false"
-
- The reverted commit introduced a logic error in code that was
- correct.
-
- The client using libcurl would notice the error since FTP file
- uploads in active transfer mode would somtimes complete with
- success despite no transfer having been performed and the
- "uploaded" file thus not being on the remote server afterwards.
-
- The FTP server would notice the error because it receives a
- RST on the data connection it has established with the client
- before any data was transferred at all.
-
- The logic error happens if the STOR response from the server have
- arrived by the time ftp_multi_statemach() in the affected code path
- is called, but the incoming data connection have not arrived yet.
- In that case, the processing of the STOR response will cause
- 'ftpc->wait_data_conn' to be set to TRUE, contradicting the comment
- in the code. Since 'complete' will also be set, later logic would
- believe the transfer was done.
-
- In most cases, the STOR response will not have arrived yet when
- the affected code path is executed, or the incoming connection will
- also have arrived, and thus the error would not express itself.
- But if the speed difference of the device using libcurl and the
- FTP server is exactly right, the error may happen as often as in
- one out of hundred file transfers.
-
- This reverts commit 49f3117a238b6eac0e22a32f50699a9eddcb66ab.
-
- Bug: https://curl.se/mail/lib-2021-07/0025.html
- Closes #7362
-
-- msnprintf: return number of printed characters excluding null byte
-
- ... even when the output is "capped" by the maximum length argument.
-
- Clarified in the docs.
-
- Closes #7361
-
-- infof: remove newline from format strings, always append it
-
- - the data needs to be "line-based" anyway since it's also passed to the
- debug callback/application
-
- - it makes infof() work like failf() and consistency is good
-
- - there's an assert that triggers on newlines in the format string
-
- - Also removes a few instances of "..."
-
- - Removes the code that would append "..." to the end of the data *iff*
- it was truncated in infof()
-
- Closes #7357
-
-- examples/multi-single: fix scan-build warning
-
- warning: Value stored to 'mc' during its initialization is never read
-
- Follow-up to ae8e11ed5fd2ce
-
- Closes #7360
-
-- wolfssl: failing to set a session id is not reason to error out
-
- ... as it is *probably* just timed out.
-
- Reported-by: Francisco Munoz
-
- Closes #7358
-
-- docs/examples: use curl_multi_poll() in multi examples
-
- The API is soon two years old and deserves being shown as the primary
- way to drive multi code as it makes it much easier to write code.
-
- multi-poll: removed
-
- multi-legacy: add to show how we did multi API use before
- curl_multi_wait/poll.
-
- Closes #7352
-
-- KNOWN_BUGS: flaky Windows CI builds
-
- Closes #6972
+ conn: fix typo 'connnection' -> 'connection' in two function names
+ Closes #8759
+
+Version 7.83.0 (27 Apr 2022)
+
+Daniel Stenberg (27 Apr 2022)
- RELEASE-NOTES: synced
-- test1147: hyper doesn't allow "crazy" request headers like built-in
-
- ... so strip that from the test.
-
- Closes #7349
-
-- c-hyper: bail on too long response headers
-
- To match with built-in behaviors. Makes test 1154 work.
-
- Closes #7350
-
-- test1151: added missing CRLF to work with hyper
-
- Closes #7350
-
-- c-hyper: add support for transfer-encoding in the request
-
- Closes #7348
-
-- [Andrea Pappacoda brought this change]
-
- cmake: remove libssh2 feature checks
-
- libssh2 features are detected based on version since commit
- 9dbbba997608f7c3c5de1c627c77c8cd2aa85b73
-
- Closes #7343
-
-- test1116: hyper doesn't pass through "surprise-trailers"
-
- Closes #7344
-
-- socks4: scan for the IPv4 address in resolve results
-
- Follow-up to 84d2839740 which changed the resolving to always resolve
- both address families, but since SOCKS4 only supports IPv4 it should
- scan for and use the first available IPv4 address.
-
- Reported-by: shithappens2016 on github
- Fixes #7345
- Closes #7346
-
-Jay Satiro (5 Jul 2021)
-- proto.d: fix formatting for paragraphs after margin changes
-
- Closes https://github.com/curl/curl/pull/7341
-
-- pinnedpubkey.d: fix formatting for version support lists
-
- Closes https://github.com/curl/curl/pull/7340
-
-Daniel Stenberg (2 Jul 2021)
-- TODO: "Support in-memory certs/ca certs/keys" done
-
- Has been suppored for a while now with the *BLOB options.
-
-- examples: safer and more proper read callback logic
-
- The same callback code is used in:
-
- imap-append.c
- smtp-authzid.c
- smtp-mail.c
- smtp-multi.c
- smtp-ssl.c
- smtp-tls.c
-
- It should not assume that it can copy full lines into the buffer as it
- will encourage sloppy coding practices. Instead use byte-wise logic and
- check/acknowledge the buffer size appropriately.
-
+ The 7.83.0 release
+
+- docs/THANKS: contributors from 7.83.0
+
+- test 898/974/976: require proxy to run
+
+ Fixes #8755
+ Reported-by: Marc Hörsken
+ Closes #8756
+
+- gnutls: don't leak the SRP credentials in redirects
+
+ Follow-up to 620ea21410030 and 139a54ed0a172a
+
Reported-by: Harry Sintonen
- Fixes #7330
- Closes #7331
-
-- test1519: adjusted to work with hyper
-
- Closes #7333
-
-- test1518: adjusted to work with hyper
-
- ... by making sure the stdout output doesn't look like HTTP headers.
-
- Closes #7333
-
-- test1514: add a CRLF to the response to make it correct
-
- Makes hyper accept it fine instead returning HYPERE_UNEXPECTED_EOF on
- us.
-
- Closes #7334
-
-- formdata: avoid "Argument cannot be negative" warning
-
- ... when converting a curl_off_t to size_t, by using
- CURL_ZERO_TERMINATED before passing the argument to the function.
-
- Detected by Coverity CID 1486590.
-
- Closes #7328
- Assisted-by: Daniel Gustafsson
-
-- lib: more %u for port and int for %*s fixes
-
- Detected by Coverity
-
- Closes #7329
-
-- doh: (void)-prefix call to curl_easy_setopt
-
-- lib: fix type of len passed to *printf's %*s
-
- ... it needs to be 'int'. Detected by Coverity CID 1486611 (etc)
-
- Closes #7326
-
-- lib: use %u instead of %ld for port number printf
-
- Follow-up to 764c6bd3bf which changed the type of some port number
- fields. Detected by Coverity (CID 1486624) etc.
-
- Closes #7325
-
-- version: turn version number functions into returning void
-
- ... as we never use the return codes from them.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7319
-
-- mqtt: extend the error message for no topic
-
- ... and mention that it needs URL encoding.
-
- Reported-by: Peter Körner
- Fixes #7316
- Closes #7317
-
-- formdata: correct typecast in curl_mime_data call
-
- Coverity pointed out it the mismatch. CID 1486590
-
- Closes #7327
-
-- url: (void)-prefix a curl_url_get() call
-
- Coverity (CID 1486645) pointed out a use of curl_url_get() in the
- parse_proxy function where the return code wasn't checked. A
- (void)-prefix makes the intention obvious.
-
- Closes #7320
-
-- glob: pass an 'int' as len when using printf's %*s
-
- Detected by Coverity CID 1486629.
-
- Closes #7324
-
-- vtls: use free() not curl_free()
-
- curl_free() is provided for users of the API to free returned data,
- there's no need to use it internally.
-
- Closes #7318
-
-- zuul: use the new rustls directory name
-
- Follow-up to 6d972c8b1cbb3 which missed updating this directory name.
-
- Also no longer call it crustls in the docs and bump to rusttls-ffi 0.7.1
-
- Closes #7311
-
-Jay Satiro (29 Jun 2021)
-- http: fix crash in rate-limited upload
-
- - Don't set the size of the piece of data to send to the rate limit if
- that limit is larger than the buffer size that will hold the piece.
-
- Prior to this change if CURLOPT_MAX_SEND_SPEED_LARGE
- (curl tool: --limit-rate) was set then it was possible that a temporary
- buffer used for uploading could be written to out of bounds. A likely
- scenario for this would be a non-trivial amount of post data combined
- with a rate limit larger than CURLOPT_UPLOAD_BUFFERSIZE (default 64k).
-
- The bug was introduced in 24e469f which is in releases since 7.76.0.
-
- perl -e "print '0' x 200000" > tmp
- curl --limit-rate 128k -d @tmp httpbin.org/post
-
- Reported-by: Richard Marion
-
- Fixes https://github.com/curl/curl/issues/7308
- Closes https://github.com/curl/curl/pull/7315
-
-Daniel Stenberg (29 Jun 2021)
-- copyright: add boiler-plate headers to CI config files
-
- And whitelist .zuul.ignore
-
- Closes #7314
-
-- CI: remove travis details
-
- Rename still used leftovers to "zuul" as that's now the CI using them.
-
- Closes #7313
+ Closes #8752
-- RELEASE-NOTES: synced
+- CURLOPT*TLSAUTH: they only work with OpenSSL or GnuTLS
-- openssl: avoid static variable for seed flag
-
- Avoid the race condition risk by instead storing the "seeded" flag in
- the multi handle. Modern OpenSSL versions handle the seeding itself so
- doing the seeding once per multi-handle instead of once per process is
- less of an issue.
-
- Reported-by: Gerrit Renker
- Fixes #7296
- Closes #7306
-
-- configure: inhibit the implicit-fallthrough warning on gcc-12
-
- ... since it no longer acknowledges the comment markup we use for that
- purpose.
-
- Reported-by: Younes El-karama
- Fixes #7295
- Closes #7307
-
-Daniel Gustafsson (28 Jun 2021)
-- [Andrei Rybak brought this change]
-
- misc: fix typos in comments which repeat a word
-
- Fix typos in code comments which repeat various words. In trivial
- cases, just delete the repeated word. Reword the affected sentence in
- "lib/url.c" for it to make sense.
-
- Closes #7303
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+ Closes #8753
-Daniel Stenberg (27 Jun 2021)
-- lib677: make it survive torture testing
-
- Follow-up to a5ab72d5edd7
-
- Closes #7300
+- openssl: don't leak the SRP credentials in redirects either
-- [Tommy Chiang brought this change]
+ Follow-up to 620ea21410030
- docs/BINDINGS: fix outdated links
-
- * luacurl page is now not accessible, fix it with wayback machine page
- * Scheme one seems not providing https now, change it back to http one
-
- Closes #7301
+ Reported-by: Harry Sintonen
+ Closes #8751
-- [Jacob Hoffman-Andrews brought this change]
+- [Liam Warfield brought this change]
- curstls: bump crustls version and use new URL
-
- crustls moved to https://github.com/rustls/rustls-ffi. This also bumps
- the expected version to 0.7.0.
-
- Closes #7297
+ hyper: fix tests 580 and 581 for hyper
-- RELEASE-NOTES: synced
+ Hyper now has the ability to preserve header order. This commit adds a
+ few lines setting the connection options for this feature.
-- examples: length-limit two sscanf() uses of %s
-
- Reported-by: Jishan Shaikh
- Fixes #7293
- Closes #7294
-
-- [Richard Whitehouse brought this change]
-
- multi: alter transfer timeout ordering
-
- - Check whether a connection has succeded before checking whether it's
- timed out.
-
- This means if we've connected quickly, but subsequently been
- descheduled, we allow the connection to succeed. Note, if we timeout,
- but between checking the timeout, and connecting to the server the
- connection succeeds, we will allow it to go ahead. This is viewed as
- an acceptable trade off.
-
- - Add additional failf logging around failed connection attempts to
- propogate the cause up to the caller.
-
- Co-Authored-by: Martin Howarth
- Closes #7178
-
-- test677: IMAP CONNECT_ONLY, custom command and then exit
-
- Adjusted ftpserver.pl to add support for the IMAP IDLE command
-
- Adjusted test 660 to sync with the fix
-
-- multi: do not switch off connect_only flag when closing
-
- ... as it made protocol specific disconnect commands wrongly get used.
-
- Bug: https://curl.se/mail/lib-2021-06/0024.html
- Reported-by: Aleksander Mazur
- Closes #7288
-
-- http: make the haproxy support work with unix domain sockets
-
- ... it should then pass on "PROXY UNKNOWN" since it doesn't know the
- involved IP addresses.
-
- Reported-by: Valentín Gutiérrez
- Fixes #7290
- Closes #7291
+ Related to issue #8617
+ Closes #8707
-- [Xiang Xiao brought this change]
+- conncache: remove name arg from Curl_conncache_find_bundle
- curl.h: include sys/select.h for NuttX RTOS
-
- Closes #7287
-
-- [Bin Meng brought this change]
-
- curl.h: remove the execution bit
-
- The execution bit of curl.h file was wrongly added:
-
- commit 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
-
- and should be removed.
-
- Follow-up to 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
- Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
- Closes #7286
-
-- [Bin Lan brought this change]
-
- curl.h: <sys/select.h> is supported by VxWorks7
-
- Closes #7285
-
-- [Bachue Zhou brought this change]
-
- quiche: use send() instead of sendto() to avoid macOS issue
-
- sendto() always returns "Socket is already connected" error on macos
-
- Closes #7260
-
-- [Li Xinwei brought this change]
-
- cmake: fix support for UnixSockets feature on Win32
-
- Move the definition of sockaddr_un struct from config-win32.h to
- curl_setup.h, so that it could be shared by all build systems.
-
- Add ADDRESS_FAMILY typedef for old mingw, now old mingw can also use
- unix sockets.
-
- Also fix the build of tests/server/sws.c on Win32 when USE_UNIX_SOCKETS
- is defined.
-
- Closes #7034
-
-- [Gregory Muchka brought this change]
-
- hostip: (macOS) free returned memory of SCDynamicStoreCopyProxies
-
- From Apples documentation on SCDynamicStoreCopyProxies, "Return Value: A
- dictionary of key-value pairs that represent the current internet proxy
- settings, or NULL if no proxy settings have been defined or if an error
- occurred. You must release the returned value."
-
- Failure to release the returned value of SCDynamicStoreCopyProxies can
- result in a memory leak.
-
- Source: https://developer.apple.com/documentation/systemconfiguration/1517088-scdynamicstorecopyproxies
-
- Closes #7265
+ To simplify, and also since the returned name is not the full actual
+ name used for the check. The port number and zone id is also involved,
+ so just showing the name is misleading.
-- RELEASE-NOTES: synced
+ Closes #8750
+
+- tests: verify the fix for CVE-2022-27774
+
+ - Test 973 redirects from HTTP to FTP, clear auth
+ - Test 974 redirects from HTTP to HTTP different port, clear auth
+ - Test 975 redirects from HTTP to FTP, permitted to keep auth
+ - Test 976 redirects from HTTP to HTTP different port, permitted to keep
+ auth
+
+- transfer: redirects to other protocols or ports clear auth
+
+ ... unless explicitly permitted.
+
+ Bug: https://curl.se/docs/CVE-2022-27774.html
+ Reported-by: Harry Sintonen
+ Closes #8748
+
+- connect: store "conn_remote_port" in the info struct
+
+ To make it available after the connection ended.
+
+- cookie.d: clarify when cookies are always sent
+
+- test898: verify the fix for CVE-2022-27776
+
+ Do not pass on Authorization headers on redirects to another port
-Jay Satiro (21 Jun 2021)
-- vtls: fix warning due to function prototype mismatch
-
- b09c8ee changed the function prototype. Caught by Visual Studio.
-
-- curl_multibyte: Remove local encoding fallbacks
-
- - If the UTF-8 to UTF-16 conversion fails in Windows Unicode builds then
- no longer fall back to assuming the string is in a local encoding.
-
- Background:
-
- Some functions in Windows Unicode builds must convert UTF-8 to UTF-16 to
- pass to the Windows CRT API wide-character functions since in Windows
- UTF-8 is not a valid locale (or at least 99% of the time right now).
-
- Prior to this change if the Unicode encoding conversion failed then
- libcurl would assume, for backwards compatibility with applications that
- may have written their code for non-Unicode builds, attempt to convert
- the string from local encoding to UTF-16.
-
- That type of "best effort" could theoretically cause some type of
- security or other problem if a string that was locally encoded was also
- valid UTF-8, and therefore an unexpected UTF-8 to UTF-16 conversion
- could occur.
-
- Ref: https://github.com/curl/curl/pull/7246
-
- Closes https://github.com/curl/curl/pull/7257
-
-Daniel Stenberg (20 Jun 2021)
-- curl_endian: remove the unused Curl_write64_le function
-
- The last usage was removed in cca455a36
-
- Closes #7280
-
-- vtls: only store TIMER_APPCONNECT for non-proxy connect
-
- Introducing a 'isproxy' argument to the connect function so that it
- knows wether to store the time stamp or not.
-
- Reported-by: Yongkang Huang
- Fixes #7274
- Closes #7274
-
-- gnutls: set the preferred TLS versions in correct order
-
- Regression since 781864bedbc57 (curl 7.77.0)
-
- Reported-by: civodul on github
- Assisted-by: Nikos Mavrogiannopoulos
- Fixes #7277
- Closes #7278
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove checks for unused gethostbyaddr and gethostbyaddr_r
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove checks for unused inet_ntoa and inet_ntoa_r
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove unused define HAVE_PERROR
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure: remove unused check for gai_strerror
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove unused define HAVE_FREEIFADDRS
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove unused define HAVE_FORK
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove unused define HAVE_FDOPEN
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove checks for unused sgtty.h
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove remaining checks for rsa.h
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
-
- configure/cmake: remove remaining checks for err.h
-
- Closes #7276
-
-- [Gergely Nagy brought this change]
+- http: avoid auth/cookie on redirects same host diff port
- configure/cmake: remove remaining checks for crypto.h
-
- Closes #7276
+ CVE-2022-27776
-- [Gergely Nagy brought this change]
+ Reported-by: Harry Sintonen
+ Bug: https://curl.se/docs/CVE-2022-27776.html
+ Closes #8749
- configure/cmake: remove checks for unused getservbyport_r
-
- Closes #7276
+- libssh2: make the md5 comparison fail if wrong length
-- --socks4[a]: clarify where the host name is resolved
-
- Closes #7273
+ Making it just skip the check unless exactly 32 is too brittle. Even if
+ the docs says it needs to be exactly 32, it is be safer to make the
+ comparison fail here instead.
-- libcurl-security.3: mention file descriptors and forks
-
- ... and move the security report section last.
-
Reported-by: Harry Sintonen
- Closes #7270
-
-- [Alex Xu (Hello71) brought this change]
-
- configure.ac: make non-executable
-
- it needs to be processed by autoconf or autoreconf, and doesn't have a
- suitable shebang to be directly executed. other projects normally set
- configure.ac -x.
-
- Closes #7272
-
-- configure: do not strip out debug flags
-
- To allow users to set them when invoking configure without using
- --with-debug.
-
- Reported-by: Alex Xu
- Fixes #7216
- Closes #7267
-
-- libssh2: limit time a disconnect can take to 1 second
-
- Closes #7271
-
-- TLS: prevent shutdown loops to get stuck
-
- ... by making sure the loops are only allowed to read the shutdown
- traffic a limited number of times.
-
+ Bug: https://hackerone.com/reports/1549461
+ Closes #8745
+
+- conncache: include the zone id in the "bundle" hashkey
+
+ Make connections to two separate IPv6 zone ids create separate
+ connections.
+
Reported-by: Harry Sintonen
- Closes #7271
-
-- hyper: propagate errors back up from read callbacks
-
- Makes test 513 work with hyper
-
- Closes #7266
-
-- KNOWN_BUGS: Negotiate on Windows fails
-
- Closes #5881
-
-- KNOWN_BUGS: renames instead of locking for atomic operations
-
- Closes #6882
- Closes #6884
-
-- zuul: add two missing CI jobs
-
- ... that were configured, just not run
-
- Closes #7261
-
-Viktor Szakats (15 Jun 2021)
-- idn: fix libidn2 with windows unicode builds
-
- Unicode Windows builds use UTF-8 strings internally in libcurl,
- so make sure to call the UTF-8 flavour of the libidn2 API. Also
- document that Windows builds with libidn2 and UNICODE do expect
- CURLOPT_URL as an UTF-8 string.
-
- Reported-by: dEajL3kA on github
- Assisted-by: Jay Satiro
- Reviewed-by: Marcel Raad
- Closes #7246
- Fixes #7228
-
-Daniel Stenberg (15 Jun 2021)
-- curl_url_set: reject spaces in URLs w/o CURLU_ALLOW_SPACE
-
- They were never officially allowed and slipped in only due to sloppy
- parsing. Spaces (ascii 32) should be correctly encoded (to %20) before
- being part of a URL.
-
- The new flag bit CURLU_ALLOW_SPACE when a full URL is set, makes libcurl
- allow spaces.
-
- Updated test 1560 to verify.
-
- Closes #7073
+ Bug: https://curl.se/docs/CVE-2022-27775.html
+ Closes #8747
+
+- [Patrick Monnerat brought this change]
+
+ url: check sasl additional parameters for connection reuse.
+
+ Also move static function safecmp() as non-static Curl_safecmp() since
+ its purpose is needed at several places.
+
+ Bug: https://curl.se/docs/CVE-2022-22576.html
+
+ CVE-2022-22576
+
+ Closes #8746
+
+- libssh2: compare sha256 strings case sensitively
-- RELEASE-NOTES: synced
-
- ... and bump to version 7.78.0 for the next planned release.
-
-Jay Satiro (15 Jun 2021)
-- docs: Remove outdated curl tool limitation
-
- - Document that HTTP/2 multiplexing is supported by the curl tool when
- parallel transfers are used.
-
- Supported since 7.66.0 via --parallel, but the doc wasn't updated.
-
- Closes https://github.com/curl/curl/pull/7259
-
-- http2: Clarify 'Using HTTP2' verbose message
-
- - Change phrasing from multi-use to multiplexing since the former may
- not be as well understood.
-
- Before: * Using HTTP2, server supports multi-use
-
- After: * Using HTTP2, server supports multiplexing
-
- Bug: https://github.com/curl/curl/discussions/7255
- Reported-by: David Hu
-
- Closes https://github.com/curl/curl/pull/7258
-
-Daniel Stenberg (14 Jun 2021)
-- winbuild/README: VC should be set to 6 'or larger'
-
- Previously it listed all versions up to 15 (missing 16) but this new
- phrasing is more open ended.
-
- Reported-by: Hugh Macdonald
- Fixes #7253
- Closes #7254
-
-- [Jacob Hoffman-Andrews brought this change]
-
- rustls: remove native_roots fallback
-
- For the commandline tool, we expect to be passed
- SSL_CONN_CONFIG(CAfile); for library use, the use should pass a set of
- trusted roots (like in other TLS backends).
-
- This also removes a dependency on Security.framework when building on
- macOS.
-
- Closes #7250
-
-- [Albin Vass brought this change]
-
- travis: remove jobs that have migrated to zuul
-
- Closes #7245
-
-- [Mohammed Naser brought this change]
-
- CI: add jobs using Zuul
-
- It also includes a few changes to get the builds going:
- - Added autoconf to common dependencies
- - Added automake to common dependencies
- - Added libtool to common dependencies
- - Added libssl-dev to common dependencies
-
- Co-authored-by: Albin Vass
-
- Closes #7245
-
-- netrc: skip 'macdef' definitions
-
- Add test 494 to verify
-
Reported-by: Harry Sintonen
- Fixes #7238
- Closes #7244
-
-- multi: add scan-build-6 work-around in curl_multi_fdset
-
- scan-build-6 otherwise warns, saying: warning: The left operand of '>='
- is a garbage value otherwise, which is false.
-
- Later scan-builds don't claim this on the same code.
-
- Closes #7248
-
-- asyn-ares: remove check for 'data' in Curl_resolver_cancel
-
- It implied it would survive a NULL in there which it won't. Instead do
- an assert.
-
- Pointed out by scan-build.
-
- Closes #7248
-
-- url.c: remove two variable assigns that are never read
-
- Pointed out by scan-build
-
- Closes #7248
-
-- [Gealber Morales brought this change]
-
- mqtt: add support for username and password
-
- Minor-edits-by: Daniel Stenberg
- Added test 2200 to 2205
-
- Closes #7243
-
-- travis: remove the arm job
-
- We do it on circle CI instead
-
-- CI: add .circleci/config.yml
-
- Assisted-by: Gabriel Simmer
-
- Closes #7239
+ Bug: https://hackerone.com/reports/1549435
+ Closes #8744
-- RELEASE-NOTES: synced
+- tool_getparam: error out on missing -K file
+
+ Add test 411 to verify.
+
+ Reported-by: Median Median Stride
+ Bug: https://hackerone.com/reports/1542881
+ Closes #8731
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: deal with sub-millisecond timeout
+
+ Closes #8738
+
+- misc: update copyright year ranges
+
+- c_escape: escape '?' in generated --libcurl code
+
+ In order to avoid the risk of it being used in an accidental trigraph in
+ the generated code.
-- runtests: init $VERSION to avoid warnings when using -l
-
-- openssl: don't remove session id entry in disassociate
-
- When a connection is disassociated from a transfer, the Session ID entry
- should remain.
-
- Regression since 7f4a9a9 (shipped in libcurl 7.77.0)
- Reported-by: Gergely Nagy
- Reported-by: Paul Groke
-
- Fixes #7222
- Closes #7230
-
-- single_transfer: ignore blank --output-dir
-
- ... as otherwise it creates a rather unexpected target directory with a
- leading slash.
-
Reported-by: Harry Sintonen
- Fixes #7218
- Closes #7233
+ Bug: https://hackerone.com/reports/1548535
+ Closes #8742
-- tests: update README about servers and port numbers
-
- Closes #7242
+- [Philip Heiduck brought this change]
-- conn_shutdown: if closed during CONNECT cleanup properly
-
- Reported-by: Alex Xu
- Reported-by: Phil E. Taylor
-
- Fixes #7236
- Closes #7237
+ mlc: curl.zuul.vexxhost.dev is reachable again
-- [Christian Weisgerber brought this change]
+ remove it from ignorelist for linkcheck
- sws: malloc request struct instead of using stack
-
- ... 2MB requests is otherwise just too big for some systems.
-
- (The allocations are not freed properly.)
-
- Bug: https://curl.se/mail/lib-2021-06/0018.html
-
- Closes #7235
-
-- [Mark Swaanenburg brought this change]
-
- lib: don't compare fd to FD_SETSIZE when using poll
-
- FD_SETSIZE is irrelevant when using poll. So ensuring that the file
- descriptor is smaller than FD_SETSIZE in VALID_SOCK, can cause
- multi_wait to ignore perfectly valid file descriptors and simply wait
- for 1s to avoid hammering the CPU in a busy loop.
-
- Fixes #7240
- Closes #7241
-
-- [zhangxiuhua brought this change]
-
- doh: fix wrong DEBUGASSERT for doh private_data
-
- Closes #7227
-
-- [yb999 brought this change]
-
- tests: update README.md with a missing single quote
-
- Closes #7231
-
-- GHA: run all tests for hyper too
-
- As it lists disabled ones in DISABLED now
-
- Closes #7209
-
-- tests/data/DISABLED: add tests not working with hyper
-
- The goal is to remove them all from here over time.
-
- Closes #7209
-
-- runtests: also find the last test in Makefile.inc
-
- Closes #7209
-
-- test3010: work with hyper mode
-
- Closes #7209
-
-- configure: disable RTSP when hyper is selected
-
- Makes test 1013 work
-
- Closes #7209
-
-- test1594/1595/1596: fix to work in hyper mode
-
- Closes #7209
-
-- test1438/1457: add HTTP keyword to make hyper mode work
-
- Closes #7209
-
-- test1340/1341: adjusted for hyper mode
-
- Closes #7209
-
-- test1218: adjusted for hyper mode
-
- Closes #7209
-
-- test1216: adjusted for hyper mode
-
- Closes #7209
-
-- test1230: adjust to work in hyper mode
-
- Closes #7209
-
-- c-hyper: abort CONNECT response reading early on non 2xx responses
-
- Fixes test 493
-
- Closes #7209
-
-- test434: add HTTP keyword
-
- Closes #7209
-
-- test599: adjusted to work in hyper mode
-
- Closes #7209
-
-- c-hyper: fix the uploaded field in progress callbacks
-
- Makes test 578 work
-
- Closes #7209
-
-- test566: adjust to work with hyper mode
-
- Closes #7209
-
-- [Fawad Mirza brought this change]
-
- CURLOPT_WRITEFUNCTION.3: minor update of the example
-
- Safely avoid chunk.size garbage value if declared non globally.
-
- Closes #7219
-
-- [Bastian Krause brought this change]
-
- configure: rename get-easy-option configure option to get-easy-options
-
- "get-easy-options" is the configure option advertised by the help text
- anyway, so use that.
-
- Fixes #7211
- Closes #7213
-
- Follow-up to ad691b191 ("configure: added --disable-get-easy-options")
- Suggested-by: Daniel Stenberg <daniel@haxx.se>
- Signed-off-by: Bastian Krause <bst@pengutronix.de>
-
-- runtests: skip disabled tests unless -f is used
-
- To make it easier to write ranges like '115 to 229' without that
- explicitly enabling tests that are listed in DISABLED, this makes
- runtests always skip disabled tests unless the -f command line option is
- used.
-
- Previously the code attempted to not run such tests, but didn't do it
- correctly.
-
- Closes #7212
-
-- [Jun-ya Kato brought this change]
-
- ngtcp2: disable TLSv1.3 compatible mode when using GnuTLS
-
- The latest GnuTLS-3.7.2 implements disable switch for TLSv1.3 compatible
- mode for middle box but it is enabled by default, which is unnecessary
- for QUIC.
-
- Fixes #6896
- Closes #7202
-
-- test644: remove as duplicate of test 587
-
- Closes #7208
-
-Daniel Gustafsson (8 Jun 2021)
-- RELEASE-NOTES: synced
+ Closes #8736
-- cookies: track expiration in jar to optimize removals
-
- Removing expired cookies needs to be a fast operation since we want to
- be able to perform it often and speculatively. By tracking the timestamp
- of the next known expiration we can exit early in case the timestamp is
- in the future.
-
- Closes: #7172
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+- [Tatsuhiro Tsujikawa brought this change]
-Daniel Stenberg (7 Jun 2021)
-- GHA: add several libcurl tests to the hyper job
-
- 500 to 512
-
-- test500: adjust to work with hyper mode
-
-- c-hyper: support CURLINFO_STARTTRANSFER_TIME
-
- Closes #7204
-
-- c-hyper: support CURLOPT_HEADER
-
- When enabled, the headers are passed to the body write callback as well.
-
- Like in test 500
-
- Closes #7204
-
-- GHA: run the newly fixed tests with hyper
-
- Closes #7205
-
-- test433: adjust for hyper mode
-
- Closes #7205
-
-- test395: hyper cannot work around > 64 bit content-lengths like built-in
-
- Closes #7205
-
-- test394: hyper returns a different error
-
- Closes #7205
-
-- test393: make Content-Length fit within 64 bit for hyper
-
- Closes #7205
-
-- test347: CRLFify to work in hyper mode
-
- Closes #7205
-
-- test339: CRLFify better to work in hyper mode
-
- Closes #7205
-
-- travis: remove the hyper build
-
-- GHA: add a linux-hyper job
-
- Closes #7206
-
-- test328: avoid a header-looking body to make hyper mode work
-
- The test still works the same, just modified two bytes in the content.
-
- Closes #7203
-
-- release-notes.pl: also spot common 'closes' typo
-
-- metalink: remove
-
- Warning: this will make existing curl command lines that use metalink to
- stop working.
-
- Reasons for removal:
-
- 1. We've found several security problems and issues involving the
- metalink support in curl. The issues are not detailed here. When
- working on those, it become apparent to the team that several of the
- problems are due to the system design, metalink library API and what
- the metalink RFC says. They are very hard to fix on the curl side
- only.
-
- 2. The metalink usage with curl was only very briefly documented and was
- not following the "normal" curl usage pattern in several ways, making
- it surprising and non-intuitive which could lead to further security
- issues.
-
- 3. The metalink library was last updated 6 years ago and wasn't so
- active the years before that either. An unmaintained library means
- there's a security problem waiting to happen. This is probably reason
- enough.
-
- 4. Metalink requires an XML parsing library, which is complex code (even
- the smaller alternatives) and to this day often gets security
- updates.
-
- 5. Metalink is not a widely used curl feature. In the 2020 curl user
- survey, only 1.4% of the responders said that they'd are using it. In
- 2021 that number was 1.2%. Searching the web also show very few
- traces of it being used, even with other tools.
-
- 6. The torrent format and associated technology clearly won for
- downloading large files from multiple sources in parallel.
-
- Cloes #7176
-
-- docs/INSTALL: remove mentions of configure --with-darwin-ssl
-
- ... as it isn't supported since a while back.
-
- Make configure fail with a warning if used.
-
- Reported-by: Vadim Grinshpun
- Bug: https://curl.se/mail/lib-2021-06/0008.html
- Closes #7200
+ ngtcp2: avoid busy loop in low CWND situation
-- RELEASE-NOTES: synced
+ Closes #8739
-- [Gregor Jasny brought this change]
+- TODO: telnet - exit immediately upon connection if stdin is /dev/null
- cmake: Avoid leaking absolute paths into exported config
-
- The `find_libarary` command resolves the library or framework
- into an absolute path. In case of system frameworks which are
- located within an Xcode-provided SDK this results in the Xcode
- path and SDK version being part of the library path.
-
- Because those library paths end up in the exported CMake config
- importing curl will fail once the Xcode location or SDK version
- changes:
-
- ```cmake
- set_target_properties(CURL::libcurl PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
- INTERFACE_LINK_LIBRARIES "lber;ldap;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/SystemConfiguration.framework;OpenSSL::SSL;OpenSSL::Crypto;ZLIB::ZLIB"
- )
- ```
-
- A work-around is to link against system-level frameworks with
- `-framework XYZ`. In case of `SystemConfiguration` we might be able
- to omit the lookup-check because we could assume the framework is
- always present.
-
- Closes #7152
-
-- [Shikha Sharma brought this change]
-
- http2_connisdead: handle trailing GOAWAY better
-
- When checking the connection the input processing returns error
- immediately, we now consider that a dead connnection.
-
- Bug: https://curl.se/mail/lib-2021-06/0001.html
- Closes #7192
+ Suggested-by: Robin A. Meade
+ URL: https://curl.se/mail/archive-2022-04/0027.html
-- [Dmitry Karpov brought this change]
+- [Kushal Das brought this change]
- ares: always store IPv6 addresses first
-
- Trying dual-stack on some embedded platform, I noticed that quite
- frequently (20%) libCurl starts from IPv4 regardless the Happy Eyeballs
- timeout value. After debugging this issue, I noticed that this happens
- if c-ares resolver response for IPv6 family comes before IPv4 (which was
- randomly happening in my tests).
-
- In such cases, because libCurl puts the last resolver response on top of
- the address list, when IPv4 resolver response comes after IPv6 one - the
- IPv4 family starts the connection phase instead of IPv6 family.
-
- The solution for this issue is to always put IPv6 addresses on top of
- the address list, regardless the order of resolver responses.
-
- Bug: https://curl.se/mail/lib-2021-06/0003.html
-
- Closes #7188
-
-- Revert "Revert "socketpair: fix potential hangs""
-
- This reverts commit 3e70c3430a370a31eff2c1d8fea29edaca8f1127.
-
- Thus brings back the change from #7144 as was originally landed in
- c769d1eab4de8b
-
- Closes #7144 (again)
-
-- [Ebe Janchivdorj brought this change]
-
- schannel: move code out of SChannel_connect_step1
-
- Reviewed-by: Marc Hoersken
- Closes #7168
-
-- tests/data/Makefile.inc: error: trailing backslash on last line
-
- Follow-up to d8dcb399b8009d
-
-- TODO: Support rate-limiting for MQTT
-
-- [Dmitry Kostjuchenko brought this change]
-
- warnless: simplify type size handling
-
- By using sizeof(T), existing defines and relying on the compiler to
- define the required signed/unsigned mask.
-
- Closes #7181
-
-Gisle Vanem (4 Jun 2021)
-- [Win32] Fix for USE_WATT32
-
- My Watt-32 tcp/ip stack works on Windows but it does not have `WSAIoctl()`
-
-Daniel Stenberg (4 Jun 2021)
-- [Alexis Vachette brought this change]
-
- url: bad CURLOPT_CONNECT_TO syntax now returns error
-
- Added test 3020 to verify
-
- Closes #7183
-
-- github: remove the cmake macOS gcc-8 jobs
-
- They're too similar to the gcc-9 ones to be useful (and seems to not
- work anymore).
-
- Closes #7187
-
-- test269: disable for hyper
-
- --ignore-content-length / CURLOPT_IGNORE_CONTENT_LENGTH doesn't work
- with hyper.
-
- Closes #7184
-
-- runtests: enable 'hyper mode' only for HTTP tests
-
- The 'hyper mode' makes line-ending checks work in the test suite for
- when hyper is used. Now it also requires that HTTP or HTTPS are
- mentioned as keywords to be enabled so that it doesn't wrongly adjusts
- tests for other protocols.
-
- This makes test 271 (TFTP) work again in hyper enabled builds.
-
- Closes #7185
-
-- [Alexis Vachette brought this change]
-
- hostip: bad CURLOPT_RESOLVE syntax now returns error
-
- Added test 3019
- Fixes #7170
- Closes #7174
-
-Daniel Gustafsson (3 Jun 2021)
-- cookies: fix typo and expand comment
-
- Fix a typo in the sorting comment, and while in there elaborate slightly
- on why creationtime can be used as a tiebreaker.
-
-- cookies: remove unused header
-
- Commit 1c1d9f1affbd3367bcb24062e261d0ea5d185e3a removed the last use
- for the inet_pton.h headerfile, this removes the inclusion of the
- header.
-
- Closes: #7182
+ docs: updates spellings with full words
+
+ Closes #8730
+
+- tests/FILEFORMAT.md: spellfix
+
+Daniel Gustafsson (21 Apr 2022)
+- misc: fix typos
+
+ Fix a few random typos is comments and workflow names.
+
+- macos: fix .plist installation into framework
+
+ The copy command introduced in e498a9b1f had leftover '>' from the
+ previous sed command it replaced, which broke its syntax. Fix by
+ removing.
+
+ Reported-by: Emanuele Torre <torreemanuele6@gmail.com>
+
+Daniel Stenberg (21 Apr 2022)
+- [Christopher Degawa brought this change]
+
+ Makefile: fix ca-bundle due to mk-ca-bundle.pl being moved
+
+ The script was moved in 8e22fc68e7dda43e9f but the lines that called it
+ was not changed to reflect it's new position
+
+ Signed-off-by: Christopher Degawa <ccom@randomderp.com>
+
+ Closes #8728
+
+Daniel Gustafsson (20 Apr 2022)
+- macos: set .plist version in autoconf
+
+ Set the libcurl version in libcurl.plist like how libcurl.vers is
+ created.
+
+ Closes: #8692
Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+ Reviewed-by: Nick Zitzmann <nickzman@gmail.com>
-Daniel Stenberg (3 Jun 2021)
-- Revert "socketpair: fix potential hangs"
-
- This reverts commit c769d1eab4de8b9f1bd84d992c63692fdc43c5be.
-
- See #7144 for details
-
-- [Paul Groke brought this change]
-
- socketpair: fix potential hangs
-
- Fixes potential hang in accept by using select + non-blocking accept.
-
- Fixes potential hang in peer check by replacing the send/recv check with
- a getsockname/getpeername check.
-
- Adds length check for returned sockaddr data.
-
- Closes #7144
-
-- runtests: parse data/Makefile.inc instead of using make
-
- The warning about missing entries in that file then doesn't require that
- the Makefile has been regenerated which was confusing.
-
- The scan for the test num is a little more error prone than before
- (since now it doesn't actually verify that it is legitimate Makefile
- syntax), but I think it is good enough.
-
- Closes #7177
+- cookies: Improve errorhandling for reading cookiefile
-- [Harry Sintonen brought this change]
+ The existing programming had some issues with errorhandling for reading
+ the cookie file. If the file failed to open, we would silently ignore it
+ and continue as if there was no file (or stdin) passed. In this case, we
+ would also call fclose() on the NULL FILE pointer, which is undefined
+ behavior. Fix by ensuring that the FILE pointer is set before calling
+ fclose on it, and issue a warning in case the file cannot be opened.
+ Erroring out on nonexisting file would break backwards compatibility of
+ very old behavior so we can't really go there.
- filecheck: quietly remove test-place/*~
-
- Closes #7179
-
-- CURLE_SETOPT_OPTION_SYNTAX: new error name for wrong setopt syntax
-
- For options that pass in lists or strings that are subsequently parsed
- and must be correct. This broadens the scope for the option previously
- known as CURLE_TELNET_OPTION_SYNTAX but the old name is of course still
- provided as a #define for existing applications.
-
- Closes #7175
-
-- tests: fix Accept-Encoding strips to work with Hyper builds
-
- The previous strip also removed the CR which turned problematic.
-
- valgrind.supp: add zstd suppression using hyper
-
- Reported-and-analyzed-by: Kevin Burke
- Fixes #7169
- Closes #7171
-
-- github: timeout jobs on macOS after 90 minutes
-
- Assisted-by: Marc Hoersken
- Closes #7173
+ Closes: #8699
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+ Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
-- [Harry Sintonen brought this change]
+Daniel Stenberg (20 Apr 2022)
+- libcurl-tutorial.3: spellfix and minor polish
+
+- CURLINFO_PRIMARY_PORT.3: spellfix
+
+ Reported-by: Patrick Monnerat
+
+- [Jay Dommaschk brought this change]
+
+ libssh: fix double close
+
+ libssh closes the socket in ssh_diconnect() so make sure that libcurl
+ does not also close it.
+
+ Fixes #8708
+ Closes #8718
+
+Jay Satiro (20 Apr 2022)
+- [Gisle Vanem brought this change]
+
+ unit1620: call global_init before calling Curl_open
- mqtt: detect illegal and too large file size
-
- Add test 3017 and 3018 to verify.
- Closes #7166
+ Curl_open calls the resolver init and on Windows if the resolver backend
+ is c-ares then the Windows sockets library (winsock) must already have
+ been initialized (via global init).
-- [Abhinav Singh brought this change]
+ Ref: https://github.com/curl/curl/pull/8540#issuecomment-1059771800
- cmake: add CURL_DISABLE_NTLM option
-
- Closes #7028
+ Closes https://github.com/curl/curl/pull/8719
-- [Abhinav Singh brought this change]
+Daniel Stenberg (19 Apr 2022)
+- CURLINFO_PRIMARY_PORT.3: clarify which port this is
- configure: add --disable-ntlm option
-
- Closes #7028
+ As it was not entirely clear previously.
-- [Abhinav Singh brought this change]
+ Closes #8725
- define: re-add CURL_DISABLE_NTLM and corresponding ifdefs
-
- This flag will be further exposed by adding build options.
-
- Reverts #6809
- Closes #7028
+- CURLOPT_UNRESTRICTED_AUTH.3: extended explanation
+
+ Include details about Authentication headers.
+
+ Reported-by: Brad Spencer
+ Fixes #8724
+ Closes #8726
+
+- .github/workflows/macos.yml: add a libssh job with c-ares
+
+ ... to enable the memdebug system
+
+ Closes #8720
- RELEASE-NOTES: synced
-Viktor Szakats (1 Jun 2021)
-- travis: delete --enable-hsts option (it is the default now) [ci skip]
-
+Jay Satiro (17 Apr 2022)
+- [Gisle Vanem brought this change]
+
+ docs/HTTP3.md: fix typo
+
+ also fix msh3 section formatting
+
+ Ref: https://github.com/curl/curl/commit/37492ebb#r70980087
+
+Marc Hoersken (17 Apr 2022)
+- timediff.[ch]: add curlx helper functions for timeval conversions
+
+ Also move timediff_t definitions from timeval.h to timediff.h and
+ then make timeval.h include the new standalone-capable timediff.h.
+
+ Reviewed-by: Jay Satiro
Reviewed-by: Daniel Stenberg
- Closes #7167
-
-Daniel Stenberg (1 Jun 2021)
-- hostip: fix 3 coverity complaints
-
- Follow-up to 1a0ebf6632f889eed
-
- - Check the return code to Curl_inet_pton() in two instances, even
- though we know the input is valid so the functions won't fail.
-
- - Clear the 'struct sockaddr_in' struct before use so that the
- 'sin_zero' field isn't left uninitialized.
-
- Detected by Coverity.
- Assisted-by: Harry Sintonen
- Closes #7163
-
-- c-hyper: fix NTLM on closed connection tested with test159
-
- Closes #7154
-
-- conncache: lowercase the hash key for better match
-
- As host names are case insensitive, the use of case sensitive hashing
- caused unnecesary cache misses and therefore lost performance. This
- lowercases the hash key.
-
- Reported-by: Harry Sintonen
- Fixes #7159
- Closes #7161
-
-- mbedtls: make mbedtls_strerror always work
-
- If the function doesn't exist, provide a macro that just clears the
- error message. Removes #ifdef uses from the code.
-
- Closes #7162
-
-- vtls: exit addsessionid if no cache is inited
-
- Follow-up to b249592d29ae0
-
- Avoids NULL pointer derefs.
-
- Closes #7165
-- [Harry Sintonen brought this change]
+ Supersedes #5888
+ Closes #8595
- Curl_ntlm_core_mk_nt_hash: fix OOM in error path
-
- Closes #7164
-
-Michael Kaufmann (1 Jun 2021)
-- ssl: read pending close notify alert before closing the connection
-
- This avoids a TCP reset (RST) if the server initiates a connection
- shutdown by sending an SSL close notify alert and then closes the TCP
- connection.
-
- For SSL connections, usually the server announces that it will close the
- connection with an SSL close notify alert. curl should read this alert.
- If curl does not read this alert and just closes the connection, some
- operating systems close the TCP connection with an RST flag.
-
- See RFC 1122, section 4.2.2.13
-
- If curl reads the close notify alert, the TCP connection is closed
- normally with a FIN flag.
-
- The new code is similar to existing code in the "SSL shutdown" function:
- try to read an alert (non-blocking), and ignore any read errors.
-
- Closes #7095
-
-Daniel Stenberg (1 Jun 2021)
-- [Laurent Dufresne brought this change]
-
- setopt: fix incorrect comments
-
- Closes #7157
-
-- [Laurent Dufresne brought this change]
-
- mbedtls: add support for cert and key blob options
-
- CURLOPT_SSLCERT_BLOB and CURLOPT_SSLKEY_BLOB weren't usable with
- mbedtls backend, so the support was added.
-
- Closes #7157
+Daniel Stenberg (17 Apr 2022)
+- [Balakrishnan Balasubramanian brought this change]
-- [Gregor Jasny brought this change]
+ tests: refactor server/socksd.c to support --unix-socket
- cmake: try well-known send/recv signature for Apple
-
- The CMake `try_compile` command is especially slow for
- the Xcode generator. With this patch applied it first tests
- for the currently used (and Open Group specified) send/recv
- signature. In case this fails testing falls-back to the
- permutations.
-
- speed-up:
-
- ```
- time cmake .. -GNinja -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
- before: 11.64s user 11.09s system 55% cpu 40.754 total
- after: 7.84s user 6.57s system 51% cpu 28.074 total
- ```
-
- ```
- time cmake .. -GXcode -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
- before: 217.07s user 104.15s system 60% cpu 8:51.79 total
- after: 108.76s user 51.80s system 58% cpu 4:32.58 total
- ```
-
- Closes #7158
-
-- http2: init recvbuf struct for pushed streams
-
- Debug builds would warn that these structs were not initialized properly
- for pushed streams.
-
- Ref: #7148
- Closes #7153
-
-- Curl_ssl_getsessionid: fail if no session cache exists
-
- This function might get called for an easy handle for which the session
- cache hasn't been setup. It now just returns a "miss" in that case.
-
- Reported-by: Christoph M. Becker
- Fixes #7148
- Closes #7153
-
-- GOVERNANCE: add 'user', 'committer' and 'contributor'
-
- As those are commonly used terms in the project.
-
- Closes #7151
-
-- URL-SYNTAX.md: document the new 'localhost' treatment
-
-- hostip: make 'localhost' return fixed values
-
- Resolving the case insensitive host name 'localhost' now returns the
- addresses 127.0.0.1 and (if IPv6 is enabled) ::1 without using any
- resolver.
-
- This removes the risk that users accidentally resolves 'localhost' to
- something else. By making sure 'localhost' is always local, we can
- assume a "secure context" for such transfers (for cookies etc).
-
- Closes #7039
-
-Daniel Gustafsson (31 May 2021)
-- docs: fix typos
-
-Daniel Stenberg (30 May 2021)
-- hsts: ignore numberical IP address hosts
-
- Also, use a single function library-wide for detecting if a given hostname is
- a numerical IP address.
-
- Reported-by: Harry Sintonen
- Fixes #7146
- Closes #7149
-
-- test178: adjust for hyper
-
- Hyper returns the same error for wrong HTTP version as for negative
- content-length. Test 178 verifies that negative content-length is
- rejected but the hyper backend will return a different error for it (and
- without any helpful message telling why the message was bad). It will
- also not return any headers at all for the response, not even the ones
- that arrived before the error.
-
- Closes #7147
-
-- HYPER: remove mentions of deprecated development branch
-
-- c-hyper: handle NULL from hyper_buf_copy()
-
- Closes #7143
-
-- HSTS: not experimental anymore
-
-- [Douglas R. Reno brought this change]
-
- INSTALL: use correct extension for CURL-DISABLE.md
-
- In INSTALL.MD, it's currently set to CURL-DISABLE-md instead of
- CURL-DISABLE.md. This generates a 404 on the cURL website as well as
- when viewing the docs through Github.
-
- Closes #7142
-
-- travis: run tests 1 - 153 with hyper
-
-- c-hyper: convert HYPERE_INVALID_PEER_MESSAGE to CURLE_UNSUPPORTED_PROTOCOL
-
- Makes test 129 work (HTTP/1.2 response).
-
- Closes #7141
-
-- http_proxy: deal with non-200 CONNECT response with Hyper
-
- Makes test 94 and 95 work
-
- Closes #7141
-
-- c-hyper: clear NTLM auth buffer when request is issued
-
- To prevent previous ones to get reused on subsequent requests. Matches
- how the built-in HTTP code works. Makes test 90 to 93 work.
-
- Add test 90 to 93 in travis.
-
- Closes #7139
+ Closes #8687
-- [Joel Depooter brought this change]
+- [Emanuele Torre brought this change]
- schannel: set ALPN length correctly for HTTP/2
-
- In a3268eca792f1 this code was changed to use the ALPN_H2 constant
- instead of the NGHTTP2_PROTO_ALPN constant. However, these constants are
- not the same. The nghttp2 constant included the length of the string,
- like this: "\x2h2". The ALPN_H2 constant is just "h2". Therefore we need
- to re-add the length of the string to the ALPN buffer.
-
- Closes #7138
-
-- travis: run tests 1-89 in the hyper build
-
- Closes #7137
-
-- Revert "c-hyper: handle body on HYPER_TASK_EMPTY"
-
- This reverts commit c3eefa95c31f55657f0af422e8268d738f689066.
-
- Reported-by: Kevin Burke
- Fixes #7122
- Closes #7136
-
-- [Jon Rumsey brought this change]
-
- ccsidcurl: fix the compile errors
-
- Looks like the declaration of cpp shoule be const char ** and return
- null if convert_version_info_string fails.
-
- Fixes #7134
- Closes #7135
-
-- [Viktor Szakats brought this change]
-
- docs: use --max-redirs instead of --max-redir
-
- For consistency.
-
- Closes #7130
+ tool_paramhlp: use feof(3) to identify EOF correctly when using fread(3)
-- RELEASE-NOTES: synced
-
- ... and bump to 7.77.1
+ This loop was using the number of bytes read from the file as condition
+ to keep reading.
-- [Michael Forney brought this change]
+ From Linux's fread(3) man page:
+ > On success, fread() and fwrite() return the number of items read or
+ > written. This number equals the number of bytes transferred only when
+ > size is 1. If an error occurs, or the end of the file is reached, the
+ > return value is a short item count (or zero).
+ >
+ > The file position indicator for the stream is advanced by the number
+ > of bytes successfully read or written.
+ >
+ > fread() does not distinguish between end-of-file and error, and
+ > callers must use feof(3) and ferror(3) to determine which occurred.
- travis: add bearssl build
-
- Closes #7133
+ This means that nread!=0 doesn't make much sense as an end condition for
+ the loop: nread==0 doesn't necessarily mean that EOF has been reached or
+ an error has occured (but that is usually the case) and nread!=0 doesn't
+ necessarily mean that EOF has not been reached or that no read errors
+ have occured. feof(3) and ferror(3) should be uses when using fread(3).
-- [Michael Forney brought this change]
+ Currently curl has to performs an extra fread(3) call to get a return
+ value equal to 0 to stop looping.
- bearssl: explicitly initialize all fields of Curl_ssl
-
- Also, add comments like the other vtls backends.
-
- Closes #7133
+ This usually "works" (even though nread==0 shouldn't be interpreted as
+ EOF) if stdin is a pipe because EOF usually marks the "real" end of the
+ stream, so the extra fread(3) call will return immediately and the extra
+ read syscall won't be noticeable:
-- [Michael Forney brought this change]
+ bash-5.1$ strace -e read curl -s -F file=@- 0x0.st <<< a 2>&1 |
+ > tail -n 5
+ read(0, "a\n", 4096) = 2
+ read(0, "", 4096) = 0
+ read(0, "", 4096) = 0
+ http://0x0.st/oRs.txt
+ +++ exited with 0 +++
+ bash-5.1$
- bearssl: remove incorrect const on variable that is modified
-
- hostname may be set to NULL later on in this function if it is an
- IP address.
-
- Closes #7133
+ But this doesn't work if curl is reading from stdin, stdin is a
+ terminal, and the EOF is being emulated using a shell with ^D. Two
+ consecutive ^D will be required in this case to actually make curl stop
+ reading:
-Version 7.77.0 (26 May 2021)
+ bash-5.1$ curl -F file=@- 0x0.st
+ a
+ ^D^D
+ http://0x0.st/oRs.txt
+ bash-5.1$
-Daniel Stenberg (26 May 2021)
-- RELEASE-NOTES: synced
+ A possible workaround to this issue is to use a program that handles EOF
+ correctly to indirectly send data to curl's stdin:
-- THANKS: added contributors from 7.77.0 cycle
+ bash-5.1$ cat - | curl -F file=@- 0x0.st
+ a
+ ^D
+ http://0x0.st/oRs.txt
+ bash-5.1$
-- copyright: update copyright year ranges to 2021
+ This patch makes curl handle EOF properly when using fread(3) in
+ file2memory() so that the workaround is not necessary.
-- [Radek Zajic brought this change]
+ Since curl was previously ignoring read errors caused by this fread(3),
+ ferror(3) is also used in the condition of the loop: read errors and EOF
+ will have the same meaning; this is done to somewhat preserve the old
+ behaviour instead of making the command fail when a read error occurs.
- hostip: fix broken macOS/CMake/GCC builds
-
- Follow-up to 31f631a142d855f06
-
- Fixes #7128
- Closes #7129
+ Closes #8701
-- TODO: netrc caching and sharing
-
- URL: https://curl.se/mail/archive-2021-05/0018.html
+- gen.pl: change wording for mutexed options
-- [Orgad Shaneh brought this change]
+ Instead of saying "This option overrides NNN", now say "This option is
+ mutually exclusive to NNN" in the generated man page ouput, as the
+ option does not in all cases actually override the others but they are
+ always mutually exclusive.
- setopt: streamline ssl option code
-
- Make it use the same style as the code next to it
-
- Closes #7123
-
-- [Radek Zajic brought this change]
-
- lib/hostip6.c: make NAT64 address synthesis on macOS work
-
- Closes #7121
-
-- [ejanchivdorj brought this change]
-
- sectransp: fix EXC_BAD_ACCESS caused by uninitialized buffer
-
- When the SecCertificateCopyCommonName function fails, it leaves
- common_name in a invalid state so CFStringCompare uses the invalid
- result, causing EXC_BAD_ACCESS.
-
- The fix is to check the return value of the function before using the
- name.
-
- Closes #7126
-
-- [Paweł Wegner brought this change]
-
- CMake: add CURL_ENABLE_EXPORT_TARGET option
-
- install(EXPORT ...) causes trouble when embedding curl dependencies
- which don't provide install(EXPORT ...) targets (e.g libressl and
- nghttp2) with cmake's add_subdirectory.
-
- Reviewed-by: Jakub Zakrzewski
- Closes #7060
+ Ref: #8704
+ Closes #8716
-- [Alessandro Ghedini brought this change]
+- curl: error out if -T and -d are used for the same URL
- quiche: update for network path aware API
-
- Latest version of quiche requires the application to pass the peer
- address of received packets, and it provides the address for outgoing
- packets back.
-
- Closes #7120
+ As one implies PUT and the other POST, both cannot be used
+ simultaneously.
-- [Jacob Hoffman-Andrews brought this change]
+ Add test 378 to verify.
- rustls: switch read_tls and write_tls to callbacks
-
- And update to 0.6.0, including a rename from session to connection for
- many fields.
-
- Closes #7071
+ Reported-by: Boris Verkhovskiy
+ Fixes #8704
+ Closes #8715
-- [Koichi Shiraishi brought this change]
+- lib: remove exclamation marks
- sectransp: fix 7f4a9a9b2a49 commit about missing comma
-
- Follow-up to 7f4a9a9b2a495
-
- Closes #7119
+ ... from infof() and failf() calls. Make them less attention seeking.
-- [Harry Sintonen brought this change]
+ Closes #8713
- openssl: associate/detach the transfer from connection
-
- CVE-2021-22901
-
- Bug: https://curl.se/docs/CVE-2021-22901.html
+- fail.d: tweak the description
-- [Harry Sintonen brought this change]
+ Reviewed-by: Daniel Gustafsson
+ Suggested-by: Robert Charles Muir
+ Ref: https://twitter.com/rcmuir/status/1514915401574010887
- telnet: check sscanf() for correct number of matches
-
- CVE-2021-22898
-
- Bug: https://curl.se/docs/CVE-2021-22898.html
+ Closes #8714
-- schannel: don't use static to store selected ciphers
-
- CVE-2021-22897
-
- Bug: https://curl.se/docs/CVE-2021-22897.html
+Daniel Gustafsson (15 Apr 2022)
+- docs: Fix missing semicolon in example code
-- docs/tests: remove freenode references
+ Multiple share examples were missing a semicolon on the line defining
+ the CURLSHcode variable.
-- RELEASE-NOTES: synced
+ Closes: #8697
+ Reported-by: Michael Kaufmann <mail@michael-kaufmann.ch>
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-- [Sergey Markelov brought this change]
+- infof: consistent capitalization of warning messages
- NSS: make colons, commas and spaces valid separators in cipher list
-
- Fixes #7110
- Closes #7115
-
-- curl: include libmetalink version in --version output
-
- Closes #7112
-
-Jay Satiro (21 May 2021)
-- [Matias N. Goldberg brought this change]
-
- cmake: Use multithreaded compilation on VS 2008+
-
- Multithreaded compilation has been supported since at least VS 2005 and
- been robustly stable since at least VS 2008
-
- Closes https://github.com/curl/curl/pull/7109
-
-Daniel Stenberg (21 May 2021)
-- [Matias N. Goldberg brought this change]
-
- cmake: fix two invokes result in different curl_config.h
-
- Fixes #7100
- Closes #7101
-
- Reviewed-by: Jakub Zakrzewski
- Signed-off-by: Matias N. Goldberg <dark_sylinc@yahoo.com.ar>
-
-- [Peng-Yu Chen brought this change]
-
- cmake: detect CURL_SA_FAMILY_T
-
- Fixes #7049
- Closes #7065
-
-- [Lucas Clemente Vella brought this change]
-
- CURLOPT_IPRESOLVE: preventing wrong IP version from being used
-
- In some situations, it was possible that a transfer was setup to
- use an specific IP version, but due do DNS caching or connection
- reuse, it ended up using a different IP version from requested.
-
- This commit changes the effect of CURLOPT_IPRESOLVE from simply
- restricting address resolution to preventing the wrong connection
- type being used, when choosing a connection from the pool, and
- to restricting what addresses could be used when establishing
- a new connection.
-
- It is important that all addresses versions are resolved, even if
- not used in that transfer in particular, because the result is
- cached, and could be useful for a different transfer with a
- different CURLOPT_IPRESOLVE setting.
-
- Closes #6853
-
-- [Oliver Urbann brought this change]
-
- AmigaOS: add functions definitions for SHA256
-
- AmiSSL replaces many functions with macros. Curl requires pointer
- to some of these functions. Thus, we have to encapsulate these macros:
- SHA256_Init, SHA256_Update, SHA256_Final, X509_INFO_free.
-
- Bug: https://github.com/jens-maus/amissl/issues/15
- Co-authored-by: Daniel Stenberg <daniel@haxx.se>
-
- Closes #7099
-
-- test2100: make it run with and require IPv6
-
- Closes #7083
-
-- tests/getpart: generate output URL encoded for better diffs
-
- Closes #7083
-
-- [Ryan Beck-Buysse brought this change]
-
- docs/TheArtOfHttpScripting: fix markdown links
-
- extra parens cause the links to be incorrectly formatted
- and inconsistent with the rest of the document.
-
- Signed-off-by: Ryan Beck-Buysse <rbuysse@gmail.com>
- Closes #7097
+ Ensure that all infof calls with a warning message are capitalized
+ in the same way. At some point we should probably set up a style-
+ guide for infof but until then let's aim for a little consistenncy
+ where we can.
+
+ Closes: #8711
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- RELEASE-NOTES: synced
-- [Emil Engler brought this change]
+- [Matteo Baccan brought this change]
- docs: replace dots with dashes in markdown enums
-
- We use dashes instead of dots nearly everywhere except for those few
- cases. This commit addresses this issues and brings more coherency into
- it.
-
- Closes #7093
+ perl: removed a double semicolon at end of line
-- [Emil Engler brought this change]
+ Remove double semicolons at end of line in Perl code.
- docs: improve INTERNALS.md regarding getsock cb
-
- This adds the I/O prefix to indicate that those "actions" are kind-of
- related to those found in select(2) or poll(2) (reading/writing).
-
- It also adds a note where the prototypes of those functions can be found
- in the source code.
-
- Closes #7092
+ Closes: #8709
+ Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
-- [Emil Engler brought this change]
+- curl_easy_header: fix typos in documentation
- docs: document attach in INTERNALS.md
-
- The new field in the Curl_handler struct still lacks documentation. This
- adds it it from the information extracted from lib/urldata.h:797
-
- Closes #7091
-
-- [Marc Aldorasi brought this change]
-
- config: remove now-unused macros
-
- Closes #7094
-
-- [Marc Aldorasi brought this change]
-
- hostip.h: remove declaration of unimplemented function
-
- Closes #7094
-
-- h3: add 'attach' callback to protocol handlers
-
- Follow-up to 0c55fbab45be
-
- Reviewed-by: Emil Engler
- Closes #7090
-
-- wolfssl: remove SSLv3 support leftovers
-
- Closes #7088
-
-- curl-wolfssl.m4: without custom include path, assume /usr/include
-
- ... so that we can point out the root of the OpenSSL emulation headers.
- Previously this used the '$includedir' variable which is wrong since
- that defaults to the dir where the current configure invoke will install
- the built libcurl headers: /usr/local by default.
-
- Fixes #7085
- Reported-by: Joel Jakobsson
- Closes #7087
+ Closes: #8694
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-- [Joel Depooter brought this change]
+Marcel Raad (11 Apr 2022)
+- appveyor: add Cygwin build
- data_pending: check only SECONDARY socket for FTP(S) transfers
-
- Check the FIRST for all other protocols.
-
- This fixes a timeout in an ftps download. The server sends a TLS
- close_notify message in the same packet as the file data. The
- close_notify seems to not be handled in the schannel_recv function, so
- libcurl is not aware that the server has closed the connection. Thus
- libcurl ends up waiting for action on the socket until a timeout is
- reached. With the secondary socket check added to the data_pending
- function, the close_notify is properly handled, and the ftps transfer
- terminates as expected.
-
- Fixes #7068
- Closes #7069
-
-- github: inhibit deprecated declarations for clang on macOS
-
- ... as they otherwise cause ldap build errors in the CI.
-
- Fixes #7081
- Closes #7082
-
-- conn: add 'attach' to protocol handler, make libssh2 use it
-
- The libssh2 backend has SSH session associated with the connection but
- the callback context is the easy handle, so when a connection gets
- attached to a transfer, the protocol handler now allows for a custom
- function to get used to set things up correctly.
-
- Reported-by: Michael O'Farrell
- Fixes #6898
- Closes #7078
-
-- http2: make sure pause is done on HTTP
-
- Since the function is called for any protocol, we can't assume that the
- HTTP struct is there without first making sure it is HTTP.
-
- Reported-by: Denis Goleshchikhin
- Fixes #7079
- Closes #7080
-
-- docs: cookies from HTTP headers need domain set
-
- ... or the cookies won't get sent. Push users to using the "Netscape"
- format instead, which curl uses when saving a cookie "jar".
-
- Reported-by: Martin Dorey
- Reviewed-by: Daniel Gustafsson
- Fixes #6723
- Closes #7077
+ Closes https://github.com/curl/curl/pull/8693
+
+- appveyor: only add MSYS2 to PATH where required
+
+ Closes https://github.com/curl/curl/pull/8693
+
+Daniel Stenberg (10 Apr 2022)
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: fix memory leak
+
+ Closes #8691
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: remove remote_addr which is not used in a meaningful way
+
+ Closes #8689
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: enlarge H3_SEND_SIZE
+
+ Make h3_SEND_SIZE larger because current value (20KiB) is too small
+ for the high latency environment.
+
+ Closes #8690
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: fix HTTP/3 upload stall and avoid busy loop
+
+ This commit fixes HTTP/3 upload stall if upload data is larger than
+ H3_SEND_SIZE. Only check writability of socket if a stream is
+ writable to avoid busy loop when QUIC flow control window is filled
+ up, or upload buffer is full.
+
+ Closes #8688
+
+- [Nick Banks brought this change]
+
+ msh3: add support for QUIC and HTTP/3 using msh3
+
+ Considered experimental, as the other HTTP/3 backends.
+
+ Closes #8517
+
+- TODO: "SFTP with SCP://"
+
+- GHA: move bearssl jobs over from zuul
+
+ Closes #8684
+
+- data/DISABLED: disable test 313 on bearssl builds
+
+ Closes #8684
+
+- runtests: add 'bearssl' as testable feature
+
+ Closes #8684
+
+- GHA: add openssl3 jobs moved over from zuul
+
+ Closes #8683
+
+- schannel: remove dead code that will never run
+
+ As the condition can't ever evaluate true
+
+ Reported-by: Andrey Alifanov
+ Ref: #8675
+ Closes #8677
+
+- connecache: remove duplicate connc->closure_handle check
+
+ The superfluous extra check could cause analyzer false positives
+ and doesn't serve any purpose.
+
+ Closes #8676
+
+- [Michał Antoniak brought this change]
+
+ mbedtls: remove server_fd from backend
+
+ Closes #8682
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: use token when detecting :status header field
+
+ Closes #8679
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: make curl 1ms faster
+
+ Pass 0 for an already expired timer.
+
+ Closes #8678
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: fix QUIC_IDLE_TIMEOUT
+
+ QUIC_IDLE_TIMEOUT should be of type ngtcp2_duration which is
+ nanoseconds resolution.
+
+ Closes #8678
+
+- English: use American spelling consistently
+
+ Authorization, Initialization, Organization etc.
+
+ Closes #8673
+
+Daniel Gustafsson (5 Apr 2022)
+- [Sascha Zengler brought this change]
+
+ BUGS: Fix incorrect punctuation
+
+ Closes #8672
+ Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
+Daniel Stenberg (4 Apr 2022)
+- tool_listhelp.c: uppercase URL
- RELEASE-NOTES: synced
-- github: add a workflow with libssh2 on macOS using cmake
-
- Closes #7047
-
-- sws: allow HTTP requests up to 2MB in size
-
- To allow tests with slightly larger payloads. Like #7071 ...
-
- Closes #7075
-
-Marc Hoersken (16 May 2021)
-- CI/azure: increase verbosity and fix outdated task names
-
- Closes #7063
-
-- CI/cirrus: add shared and static Windows release builds
-
- Azure Pipelines is currently being used for debug builds,
- let's also run some non-debug (release) Windows builds and
- make use of previously underutilized Cirrus CI for that.
-
- Reviewed-by: Marcel Raad
-
- Closes #6991
-
-Daniel Stenberg (16 May 2021)
-- CURLOPT_CAPATH.3: defaults to a path, not NULL
-
- Reported-by: Andrew Barnert
-
- Closes #7062
-
-- [Jacob Hoffman-Andrews brought this change]
-
- c-hyper: handle body on HYPER_TASK_EMPTY
-
- Some of the time, we get a HYPER_TASK_EMPTY response before the status
- line, headers, and body have been read. Previously, that would cause us
- to poll again, leading to a 1 second timeout.
-
- The HYPER_TASK_EMPTY docs say:
-
- The value of this task is null (does not imply an error).
-
- So, if we receive a HYPER_TASK_EMPTY, continue on with processing the
- response.
-
- Reported-by: Kevin Burke
- Fixes #7064
- Closes #7070
-
-- [Ikko Ashimine brought this change]
-
- tool_getparam: fix comment typo in tool_getparam.c
-
- enfore -> enforce
-
- Closes #7074
-
-- mem-include-scan.pl: require a non-word letter before memory funcs
-
- ... so that ldap_memfree() for example doesn't match the scan for free.
-
- Closes #7061
-
-- version: free the openldap info correctly
-
- ... to avoid memory leaks.
-
- Follow-up to: bf0feae7768d9
- Closes #7061
-
-- dupset: remove totally off comment
-
- Closes #7067
-
-- configure: if asked for, fail if ldap is not found
-
- Reported-by: Jakub Zakrzewski
- Fixes #7053
- Closes #7055
-
-- version: add OpenLDAP version in the output
-
- Assisted-by: Howard Chu
- Closes #7054
-
-Jay Satiro (13 May 2021)
-- [Joel Depooter brought this change]
+- http: streamclose "already downloaded"
+
+ Instead of connclose()ing, since when HTTP/2 is used it doesn't need to
+ close the connection as stopping the current transfer is enough.
+
+ Reported-by: Evangelos Foutras
+ Closes #8665
+
+Jay Satiro (1 Apr 2022)
+- ftp: fix error message for partial file upload
+
+ - Show the count of bytes written on partial file upload.
+
+ Prior to this change the error message mistakenly showed the count of
+ bytes read, not written.
+
+ Bug: https://github.com/curl/curl/discussions/8637
+ Reported-by: Taras Kushnir
+
+ Closes https://github.com/curl/curl/pull/8649
+
+Daniel Stenberg (1 Apr 2022)
+- http: correct the header error message to say colon
+
+ Not semicolon
+
+ Reported-by: Gisle Vanem
+ Ref: #8666
+ Closes #8667
+
+- lib: #ifdef on USE_HTTP2 better
+
+ ... as nghttp2 might not be the library that provides HTTP/2 support.
+
+ Closes #8661
+
+- [Michał Antoniak brought this change]
+
+ mbedtls: remove 'protocols' array from backend when ALPN is not used
+
+ Closes #8663
+
+- http2: RST the stream if we stop it on our own will
+
+ For the "simulated 304" case the done-call isn't considered "premature"
+ but since the server didn't close the stream it needs to be reset to
+ stop delivering data.
+
+ Closes #8664
+
+- http: close the stream (not connection) on time condition abort
+
+ Closes #8664
+
+- http2: handle DONE called for the paused stream
+
+ As it could otherwise stall all streams on the connection
+
+ Reported-by: Evangelos Foutras
+ Fixes #8626
+ Closes #8664
+
+- tls: make mbedtls and NSS check for h2, not nghttp2
+
+ This makes them able to also negotiate HTTP/2 even when built to use
+ hyper for h2.
+
+ Closes #8656
+
+- tests/libtest/lib670.c: fixup the copyright year range
- schannel: Ensure the security context request flags are always set
-
- As of commit 54e7475, these flags would only be set when using a new
- credential handle. When re-using an existing credential handle, the
- flags would not be set.
-
- Closes https://github.com/curl/curl/pull/7051
-
-Dan Fandrich (12 May 2021)
-- tests: Fix some tag matching issues in a number of tests
-
-Daniel Stenberg (12 May 2021)
-- sasl: use 'unsigned short' to store mechanism
-
- ... saves a few bytes of struct size in memory and it only uses
- 10 bits anyway.
-
- Closes #7045
-
-- hostip: remove the debug code for LocalHost
-
- The Curl_resolv() had special code (when built in debug mode) for when
- resolving the host name "LocalHost" (using that exact casing). It would
- then get the host name from the --interface option instead.
-
- This development-only feature was not used by anything (anymore) and we
- have the --resolve feature if we want to play similar tricks properly
- going forward.
-
- Closes #7044
-
-- progress: reset limit_size variables at transfer start
-
- Otherwise the old value would linger from a previous use and would mess
- up the network speed cap logic.
-
- Reported-by: Ymir1711 on github
-
- Fixes #7042
- Closes #7043
+ follow-up to b54e18640ea4b7
+
+- [Leandro Coutinho brought this change]
+
+ lib670: avoid double check result
+
+ Closes #8660
+
+- vtls: use a generic "ALPN, server accepted" message
+
+ Closes #8657
+
+- vtls: use a backend standard message for "ALPN: offers %s"
+
+ I call it VTLS_INFOF_ALPN_OFFER_1STR, the '1str' meaning that the
+ infof() call also needs a string argument: the ALPN ID.
+
+ Closes #8657
+
+- [Christian Schmitz brought this change]
+
+ strcase.h: add comment about the return code
+
+ Tool often we run into expecting this to work like strcmp, but it
+ returns 1 instead of 0 for match.
+
+ Closes #8658
+
+- vtls: provide a unified APLN-disagree string for all backends
+
+ Also rephrase to make it sound less dangerous:
+
+ "ALPN: server did not agree on a protocol. Uses default."
+
+ Reported-by: Nick Coghlan
+ Fixes #8643
+ Closes #8651
+
+- projects/README: converted to markdown
+
+ Closes #8652
+
+- misc: spelling fixes
+
+ Mostly in comments but also in the -w documentation for headers_json.
+
+ Closes #8647
+
+- KNOW_BUGS: HTTP3/Transfer closed with n bytes remaining to read
+
+ "HTTP/3 does not support client certs" considered fixed, at least with
+ the ngtcp2 backend.
+
+ Closes #8523
+
+- CURLOPT_PREQUOTE.3: only works for FTP file transfers, not dirs
+
+ Also add to quote.d. Add to TODO as something to add in a future.
+
+ Reported-by: anon00000000 on github
+ Closes #8602
+ Closes #8648
- RELEASE-NOTES: synced
-- [Daniel Gustafsson brought this change]
-
- cookies: use CURLcode for cookie_output reporting
-
- Writing the cookie file has multiple error conditions, and was using an
- int with magic numbers to report the different error (which in turn were
- disregarded anyways). This moves reporting to use a CURLcode value.
-
- Lightly-touched-by: Daniel Stenberg
-
- Closes #7037
- Closes #6749
-
-- [Daniel Gustafsson brought this change]
-
- cookies: make use of string duplication function
-
- strstore() is defined as a strdup which ensures to free the target
- pointer before duping the source char * into it. Make use of it in
- two more cases where it can simplify the code.
-
-- [Daniel Gustafsson brought this change]
-
- cookies: refactor comments
-
- Comments in the cookie code were a bit all over the place in terms of
- style and wording. This takes a stab at cleaning them up by keeping to
- a single style and overall shape. Some comments are moved a little and
- some removed alltogether due to being redundant. No functional changes
- have been made,
-
-- [Peng-Yu Chen brought this change]
-
- http2: skip immediate parsing of payload following protocol switch
-
- This is considered not harmful as a following http2_recv shall be
- called very soon.
-
- This is considered helpful in the specific situation where some
- servers (e.g. nghttpx v1.43.0) may fulfill stream 1 immediately
- following the return of HTTP status 101, other than waiting for
- the client-side connection preface to arrive.
-
- Fixes #7036
- Closes #7040
-
-- [Peng-Yu Chen brought this change]
-
- http2: use nghttp2_session_upgrade2 instead of nghttp2_session_upgrade
-
- Following the upstream deprecation of nghttp2_session_upgrade.
-
- Also provides further checks for requests with the HEAD method.
-
- Closes #7041
-
-- progress/trspeed: use a local convenient pointer to beautify code
-
- The function becomes easier to read and understand with less repetition.
-
-- trspeed: use long double for transfer speed calculation
-
-- progress: move transfer speed calc into function
-
- This silences two scan-build-11 warnings: "The result of the '/'
- expression is undefined"
-
- Bug: https://curl.se/mail/lib-2021-05/0022.html
- Closes #7035
-
-- [Cameron Cawley brought this change]
-
- openssl: remove unneeded cast for CertOpenSystemStore()
-
- Closes #7025
-
-- travis: disable the libssh build
-
- It can't run on focal and causes warnings on bionic. Since the focal
- failure started rather suddenly a while ago, we can suspect it might be
- temporary.
-
- Added "bring back the build" to the TODO document.
-
- Fixes #7011
- Closes #7012
-
-- [Peng-Yu Chen brought this change]
-
- http: use calculated offsets inst of integer literals for header parsing
-
- Assumed to be a minor coding style improvement with no behavior change.
-
- A modern compiler is expected to have the calculation optimized during
- compilation. It may be deemed okay even if that's not the case, since
- the added overhead is considered very low.
-
- Closes #7032
-
-- [Peng-Yu Chen brought this change]
-
- GIT-INFO: suggest using autoreconf instead of buildconf
-
- Follow-up to 85868537d
-
- Closes #7033
-
-- http: deal with partial CONNECT sends
-
- Also added 'CURL_SMALLSENDS' to make Curl_write() send short packets,
- which helped verifying this even more.
-
- Add test 363 to verify.
-
- Reported-by: ustcqidi on github
- Fixes #6950
- Closes #7024
-
-- HTTP3: make the ngtcp2 build use the quictls fork
-
- ... as ngtcp2 itself documents the build this way.
-
- Closes #7031
-
-- http: limit the initial send amount to used upload buffer size
-
- Previously this logic would cap the send to CURL_MAX_WRITE_SIZE bytes,
- but for the situations where a larger upload buffer has been set, this
- function can benefit from sending more bytes. With default size used,
- this does the same as before.
-
- Also changed the storage of the size to an 'unsigned int' as it is not
- allowed to be set larger than 2M.
-
- Also added cautions to the man pages about changing buffer sizes in
- run-time.
-
- Closes #7022
+- pop3/smtp: return *WEIRD_SERVER_REPLY when not understood
+
+ This leaves the CURLE_RECV_ERROR error code for explicit failure to
+ receive network data and allows users to better separate the problems.
+
+ Ref #8356
+ Reported-by: Rianov Viacheslav
+ Closes #8506
+
+- docs: lots of minor language polish
+
+ Mostly based on recent language decisions from "everything curl":
+
+ - remove contractions (isn't => is not)
+ - *an* HTTP (consistency)
+ - runtime (no hyphen)
+ - backend (no hyphen)
+ - URL is uppercase
+
+ Closes #8646
+
+Jay Satiro (29 Mar 2022)
+- projects: Update VC version names for VS2017, VS2022
+
+ - Rename VC15 -> VC14.10, VC17 -> VC14.30.
+
+ The projects directory that holds the pre-generated Visual Studio
+ project files uses VC<ver> to indicate the MSVC version. At some point
+ support for Visual Studio 2017 (Visual Studio version 15 which uses MSVC
+ 14.10) was added as VC15. Visual Studio 2022 (Visual Studio version 17
+ which uses MSVC 14.30) project files were recently added and followed
+ that same format using VC17.
+
+ There is no such MSVC version (yet) as VC15 or VC17.
+
+ For VS 2017 for example, the name we use is correct as either VS17,
+ VS2017, VC14.10. I opted for the latter since we use VC for earlier
+ versions (eg VC10, VC12, etc).
+
+ Ref: https://github.com/curl/curl/pull/8438#issuecomment-1037070192
+
+ Closes https://github.com/curl/curl/pull/8447
+
+Daniel Stenberg (29 Mar 2022)
+- mqtt: better handling of TCP disconnect mid-message
+
+ Reported-by: Jenny Heino
+ Bug: https://hackerone.com/reports/1521610
+ Closes #8644
+
+- CURLOPT_DISALLOW_USERNAME_IN_URL.3: use uppercase URL
+
+- [Ian Blanes brought this change]
+
+ docs/DYNBUF: clarify documentation for Curl_dyn_ptr and Curl_dyn_uptr
+
+ Closes #8606
+
+- [Ian Blanes brought this change]
+
+ curl: fix segmentation fault for empty output file names.
+
+ Function glob_match_url set *result to NULL when called with filename =
+ "", producing an indirect NULL pointer dereference.
+
+ Closes #8606
+
+- TODO: Read keys from ~/.ssh/id_ecdsa, id_ed25519
+
+ It would be nice to expand the list of key locations curl uses for the
+ newer key types supported by libssh2.
+
+ Closes #8586
+
+- ngtcp2: update to work after recent ngtcp2 updates
+
+ Assisted-by: Tatsuhiro Tsujikawa
+ Reported-by: jurisuk on github
+ Fixes #8638
+ Closes #8639
+
+- [Farzin brought this change]
+
+ CURLOPT_PROGRESSFUNCTION.3: fix typo in example
+
+ Closes #8636
+
+- curl/header_json: output the header names in lowercase
+
+ To better allow json[“header”].
+
+ Reported-by: Peter Korsgaard
+ Bug: https://daniel.haxx.se/blog/2022/03/24/easier-header-picking-with-curl/comment-page-1/#comment-25878
+ Closes #8633
- RELEASE-NOTES: synced
-- ngtcp2: fix the cb_acked_stream_data_offset proto
-
- The 'datalen' value should be 64 bit, not size_t!
-
- Reported-by: Dmitry Karpov
- Bug: https://curl.se/mail/lib-2021-05/0019.html
- Closes #7027
-
-- progress: when possible, calculate transfer speeds with microseconds
-
- ... this improves precision, especially for transfers in the few or even
- sub millisecond range.
-
- Reported-by: J. Bromley
- Fixes #7017
- Closes #7020
-
-- http: reset the header buffer when sending the request
-
- A reused transfer handle could otherwise reuse the previous leftover
- buffer and havoc would ensue.
-
- Reported-by: sergio-nsk on github
- Fixes #7018
- Closes #7021
-
-- curl_mprintf.3: add description
-
- These functions have existed in the API since the dawn of time. It is
- about time we describe how they work, even if we discourage users from
- using them.
-
- Closes #7010
-
-- [Timothy Gu brought this change]
-
- URL-SYNTAX: update IDNA section for WHATWG spec changes
-
- WHATWG URL has dictated the use of Nontransitional Processing (IDNA
- 2008) for several years now. Chrome (and derivatives) still use
- Transitional Processing, but Firefox and Safari have both switched.
-
- Also document the fact that winidn functions differently from libidn2
- here.
-
- Closes #7026
-
-- [Calvin Buckley brought this change]
-
- INSTALL: add IBM i specific quirks
-
- Fixes #6830
- Closes #7013
-
-- libcurl.3: mention the URL API
-
- To make it easier to find. Also a minor polish of libcurl-url.3
-
- Closes #7009
-
-- GnuTLS: don't allow TLS 1.3 for versions that don't support it
-
- Follow-up to 781864bedbc5
-
- ... as they don't understand it and will return error at us!
-
- Closes #7014
-
-Kamil Dudka (6 May 2021)
-- tool_getparam: handle failure of curlx_convert_tchar_to_UTF8()
-
- Reported by GCC analyzer:
-
- Error: GCC_ANALYZER_WARNING (CWE-476):
- src/tool_getparam.c: scope_hint: In function 'parse_args'
- src/tool_getparam.c:2318:38: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 'orig_opt'
- lib/curlx.h:56: included_from: Included from here.
- src/tool_getparam.c:28: included_from: Included from here.
- lib/curl_multibyte.h:70:51: note: in definition of macro 'curlx_convert_tchar_to_UTF8'
- src/tool_getparam.c:2316:16: note: in expansion of macro 'curlx_convert_tchar_to_UTF8'
-
- Reviewed-by: Marcel Raad
+- headers.h: make Curl_headers_push() be CURLE_OK when not built
+
+ ... to avoid errors when the function isn't there.
+
+ Reported-by: Marcel Raad
+ Fixes #8627
+ Closes #8628
+
+- scripts: move three scripts from lib/ to scripts/
+
+ Move checksrc.pl, firefox-db2pem.sh and mk-ca-bundle.pl since they don't
+ particularly belong in lib/
+
+ Also created an EXTRA_DIST= in scripts/Makefile.am instead of specifying
+ those files in the root Makefile.am
+
+ Closes #8625
+
+Marc Hoersken (23 Mar 2022)
+- lib/warnless.[ch]: only check for WIN32 and ignore _WIN32
+
+ curl_setup.h automatically defines WIN32 if just _WIN32 is defined.
+
+ Therefore make sure curl_setup.h is included through warnless.h.
+
Reviewed-by: Daniel Stenberg
- Closes #7023
-
-Daniel Stenberg (6 May 2021)
-- scripts/delta: also show total number of days
-
-Marc Hoersken (5 May 2021)
-- sockfilt: fix invalid increment of handles index variable nfd
-
- Only increment the array index if we actually stored a handle.
-
- Follow up to e917492048f4b85a0fd58a033d10072fc7666c3b
- Closes #6992
-
-- sockfilt: avoid getting stuck waiting for writable socket
-
- Reset FD_WRITE event using the same approach as in multi.c
-
- Follow up to b36442b24305f3cda7c13cc64b46838995a4985b
- Closes #6992
-
-Jay Satiro (5 May 2021)
-- test678: Fix for Windows multibyte builds
-
- Follow-up to 77fc385 from yesterday.
-
- Bug: https://github.com/curl/curl/pull/6662#issuecomment-832966557
- Reported-by: Marc Hörsken
+ Reviewed-by: Jay Satiro
+
+ Closes #8594
+
+- tests/server/util.h: align WIN32 condition with util.c
+
+ There is no need to test for both _WIN32 and WIN32 as curl_setup.h
+ automatically defines the later if the first one is defined.
+
+ Also tests/server/util.c is only checking for WIN32 arouund the
+ implementation of win32_perror, so just defining _WIN32
+ would not be sufficient for a successful compilation.
+
+ Reviewed-by: Daniel Stenberg
+ Reviewed-by: Jay Satiro
+
+ Closes #8594
+
+Daniel Stenberg (22 Mar 2022)
+- [Philip Heiduck brought this change]
+
+ firefox-db2pem.sh: make the shell script safer
+
+ Reported by lift
+
+ Closes #8616
+
+Jay Satiro (22 Mar 2022)
+- gtls: fix build for disabled TLS-SRP
+
+ Prior to this change if, at build time, the GnuTLS backend was found to
+ have TLS-SRP support (HAVE_GNUTLS_SRP) but TLS-SRP was disabled in curl
+ via --disable-tls-srp (!USE_TLS_SRP) then a build error would occur.
+
+ Bug: https://curl.se/mail/lib-2022-03/0046.html
+ Reported-by: Robert Brose
+
+ Closes https://github.com/curl/curl/pull/8604
+
+- winbuild: Add a Visual Studio example to the README
+
+ - Add an example that explains in detail how the user can add libcurl to
+ their Visual Studio project.
+
+ Ref: https://github.com/curl/curl/issues/8591
+
+ Closes https://github.com/curl/curl/pull/8592
+
+- docs/opts: Mention Schannel client cert type is P12
+
+ Schannel backend code behaves same as Secure Transport, it expects a P12
+ certificate file or the name of a certificate already in the user's OS
+ key store. Also, both backends ignore CURLOPT_SSLKEY (tool: --key)
+ because they expect the private key to already be available from the
+ keystore or P12 certificate.
+
+ Ref: https://github.com/curl/curl/discussions/8581#discussioncomment-2337260
+
+ Closes https://github.com/curl/curl/pull/8587
+
+Daniel Stenberg (22 Mar 2022)
+- lib1945: fix compiler warning 4706 on MSVC
+
+ Follow-up from d1e4a677340c
+
+ Closes #8623
-- [Dmitry Kostjuchenko brought this change]
-
- build: fix compilation for Windows UWP platform
-
- - Include afunix.h which is necessary for sockaddr_un when
- USE_UNIX_SOCKETS is defined on Windows.
-
- Closes https://github.com/curl/curl/pull/7006
-
-Daniel Stenberg (5 May 2021)
-- gnutls: make setting only the MAX TLS allowed version work
-
- Previously, settting only the max allowed TLS version, leaving the
- minimum one at default, didn't actually set it and left it to default
- (TLS 1.3) too!
-
- As a bonus, this change also removes the dead code handling of SSLv3
- since that version can't be set anymore (since eff614fb0242cb).
-
- Reported-by: Daniel Carpenter
- Fixes #6998
- Closes #7000
-
-- openldap: replace ldap_ prefix on private functions
-
- Since openldap itself uses that prefix and with OpenĹDAP 2.5.4 (at
- least) there's a symbol collision because of that.
-
- The private functions now use the 'oldap_' prefix where it previously
- used 'ldap_'.
-
- Reported-by: 3eka on github
- Fixes #7004
- Closes #7005
-
-Jay Satiro (5 May 2021)
-- http2: fix potentially uninitialized variable
-
- introduced several days ago in 3193170. caught by visual studio linker.
-
-- [Gilles Vollant brought this change]
-
- SSL: support in-memory CA certs for some backends
-
- - New options CURLOPT_CAINFO_BLOB and CURLOPT_PROXY_CAINFO_BLOB to
- specify in-memory PEM certificates for OpenSSL, Schannel (Windows)
- and Secure Transport (Apple) SSL backends.
-
- Prior to this change PEM certificates could only be imported from a file
- and not from memory.
-
- Co-authored-by: moparisthebest@users.noreply.github.com
-
- Ref: https://github.com/curl/curl/pull/4679
- Ref: https://github.com/curl/curl/pull/5677
- Ref: https://github.com/curl/curl/pull/6109
-
- Closes https://github.com/curl/curl/pull/6662
-
-Daniel Stenberg (4 May 2021)
-- [David Cook brought this change]
-
- tests: ignore case of chunked hex numbers in tests
-
- When hyper is used, it emits uppercase hexadecimal numbers for chunked
- encoding lengths. Without hyper, lowercase hexadecimal numbers are used.
- This change adds preprocessor statements to tests where this is an
- issue, and adapts the fixtures to match.
-
- Closes #6987
-
-- cmake: check for getppid and utimes
-
- ... as they're checked for in the configure script and are used by
- source code.
-
- Removed checks for perror, setvbuf and strlcat since those defines are
- not checked for in source code.
-
- Bonus: removed HAVE_STRLCPY from a few config-*.h files since that
- symbol is not used in source code.
-
- Closes #6997
-
-- libtest: remove lib530.c
-
- Follow up from e50a877df when test 530 was removed. Since then this
- source file has not been used/needed.
-
- Closes #6999
-
-- FILEFORMAT: mention sectransp as a feature
-
- Been supported since at least 40259ca65
-
- Closes #7001
+- [Philip Heiduck brought this change]
+
+ ci/event-based.yml: improve impacket install
+
+ skip python3-pip
+ install impacket with library module
+
+ Closes #8621
+
+- test1459: disable for oldlibssh
+
+ This test with libssh 0.9.3 works fine on github but fails on circleci.
+ Might as well disable this test for oldlibssh installations.
+
+ Closes #8622
+
+- test1135: sync with recent API updates
+
+ This test verifies that the order of functions in public headers remain
+ the same but hasn't been updated to care for recently added header
+ files. The order is important for some few platforms - or VERSIONINFO
+ needs to updated.
+
+ This fix also updates VERSIONINFO to be sure.
+
+ Closes #8620
+
+- curl_easy_nextheader.3: fix two typos
+
+ Reported-by: Timothe Litt
+ Bug: https://curl.se/mail/lib-2022-03/0060.html
+
+- options: remove mistaken space before paren in prototype
+
+- cirrus: add --enable-headers-api for some windows builds
+
+- GHA: --enable-headers-api in all workflows
+
+- lib: make the headers API depend on --enable-headers-api
+
+- configure: add --enable-headers-api to enable the headers API
+
+ Defaults to disabled while labeled EXPERIMENTAL.
+
+ Make all the headers API tests require 'headers-api' to run.
+
+- test1671: verify -w '%{header_json}
+
+- test1670: verify -w %header{}
+
+- curl: add %{header_json} support in -w handling
+
+ Outputs all response headers as a JSON object.
+
+- curl: add %header{name} support in -w handling
+
+ Outputs the response header 'name'
+
+- header api: add curl_easy_header and curl_easy_nextheader
+
+ Add test 1940 to 1946 to verify.
+
+ Closes #8593
+
+- test1459: remove the different exit code for oldlibssh
+
+ When using libssh/0.9.3/openssl/zlib, we seem to be getting the "right"
+ error code.
+
+ Closes #8490
+
+- libssh: unstick SFTP transfers when done event-based
+
+ Test 604 and 606 (at least).
+
+ Closes #8490
+
+- gha: move the event-based test over from Zuul
+
+ Switched libssh2 to libssh
+
+ Closes #8490
- RELEASE-NOTES: synced
-- libssh2: ignore timeout during disconnect
-
- ... to avoid memory leaks!
-
- libssh2 is tricky as we have to deal with the non-blockiness even in
- close and shutdown cases. In the cases when we shutdown after a timeout
- already expired, it is crucial that curl doen't let the timeout abort
- the shutdown process as that then leaks memory!
-
- Reported-by: Benjamin Riefenstahl
- Fixes #6990
-
-- KNOWN_BUGS: add two HTTP/2 bugs
-
-- KNOWN_BUGS: add three HTTP/3 issues
-
- ... and moved the HTTP/2 issues to its own section
-
- Closes #6606
- Closes #6510
- Closes #6494
-
-- [ejanchivdorj brought this change]
-
- CURLcode: add CURLE_SSL_CLIENTCERT
-
- When a TLS server requests a client certificate during handshake and
- none can be provided, libcurl now returns this new error code
- CURLE_SSL_CLIENTCERT
-
- Only supported by Secure Transport and OpenSSL for TLS 1.3 so far.
-
- Closes #6721
-
-- [Tobias Gabriel brought this change]
-
- .github/FUNDING: add link to GitHub sponsors
-
- Closes #6985
+- http: return error on colon-less HTTP headers
-- [Harry Sintonen brought this change]
+ It's a protocol violation and accepting them leads to no good.
- krb5/name_to_level: replace checkprefix with curl_strequal
-
- Closes #6993
+ Add test case 398 to verify
-- [Harry Sintonen brought this change]
+ Closes #8610
- Curl_input_digest: require space after Digest
-
- Closes #6993
+- test718: edited slightly to return better HTTP
-- [Harry Sintonen brought this change]
+ Since hyper is picky and won't play ball otherwise.
- Curl_http_header: check for colon when matching Persistent-Auth
-
- Closes #6993
+ Bug: https://github.com/hyperium/hyper/issues/2783
+ Reported-by: Daniel Valenzuela
+ Closes #8614
-- [Harry Sintonen brought this change]
+- hyper: no h2c support
- Curl_http_input_auth: require valid separator after negotiation type
-
- Closes #6993
-
-- http: fix the check for 'Authorization' with Bearer
-
- The code would wrongly check for it using an additional colon.
-
- Reported-by: Blake Burkhart
- Closes #6988
-
-- [Kamil Dudka brought this change]
-
- http2: fix a resource leak in push_promise()
-
- ... detected by Coverity:
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:532: alloc_fn: Storage is returned from allocation function "duphandle".
- lib/http2.c:532: var_assign: Assigning: "newhandle" = storage returned from "duphandle(data)".
- lib/http2.c:552: noescape: Resource "newhandle" is not freed or pointed-to in "set_transfer_url".
- lib/http2.c:555: leaked_storage: Variable "newhandle" going out of scope leaks the storage it points to.
-
- Closes #6986
-
-- [Kamil Dudka brought this change]
-
- http2: fix resource leaks in set_transfer_url()
-
- ... detected by Coverity:
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
- lib/http2.c:486: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:488: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
- lib/http2.c:493: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:495: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
- lib/http2.c:500: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:502: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
- lib/http2.c:505: noescape: Resource "u" is not freed or pointed-to in "curl_url_get". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:507: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-
- Closes #6986
-
-- [Jacob Hoffman-Andrews brought this change]
-
- rustls: use ALPN
-
- Update required rustls to 0.5.0
-
- Closes #6960
+ Make tests require h2c feature present to run, and only set h2c if
+ nghttp2 is used in the build. Hyper does not support it.
-- [Michał Antoniak brought this change]
+ Remove those tests from DISABLED
- gskit: fix CURL_DISABLE_PROXY build
-
- Removed localfd and remotefd from ssl_backend_data (ued only with proxy
- connection). Function pipe_ssloverssl return always 0, when proxy is not
- used.
-
- Closes #6981
+ Fixes #8605
+ Closes #8613
-- [Michał Antoniak brought this change]
+- configure: bump the copyright year range int the generated output
+
+- [Andreas Falkenhahn brought this change]
+
+ BINDINGS.md: add Hollywood binding
+
+ Closes #8609
+
+- HISTORY: add some 2022 data
+
+- scripts/copyright.pl: ignore the new mlc_config.json file
+
+- [Philip Heiduck brought this change]
+
+ mlc_config.json: add file to ignore known troublesome URLs
- gskit: fix undefined reference to 'conn'
-
- Closes #6980
+ This is the config file for the CI markdown link checker and lets us
+ filter URLs that are known to cause problems. Like
+ https://curl.zuul.vexxhost.dev/ for now.
-- [Jacob Hoffman-Andrews brought this change]
+ Closes #8597
- tls: add USE_HTTP2 define
-
- This abstracts across the two HTTP/2 backends: nghttp2 and Hyper.
-
- Add our own define for the "h2" ALPN protocol, so TLS backends can use
- it without depending on a specific HTTP backend.
-
- Closes #6959
+- [Philip Heiduck brought this change]
-- [Jacob Hoffman-Andrews brought this change]
+ winbuild/README.md: fixup dead link
- lib: fix 0-length Curl_client_write calls
-
- Closes #6954
+ Closes #8597
-- [Jacob Hoffman-Andrews brought this change]
+Jay Satiro (18 Mar 2022)
+- rtsp: don't let CSeq error override earlier errors
- lib: remove strlen call from Curl_client_write
-
- At all call sites with an explicit 0 len, pass an appropriate nonzero
- len.
-
- Closes #6954
+ - When done, if an error has already occurred then don't check the
+ sequence numbers for mismatch.
-- [Ayushman Singh Chauhan brought this change]
+ A sequence number may not have been received if an error occurred.
- docs: camelcase it like GitHub everywhere
-
- Closes #6979
+ Prior to this change a sequence mismatch error would override earlier
+ errors. For example, a server that returns nothing would cause error
+ CURLE_GOT_NOTHING in Curl_http_done which was then overridden by
+ CURLE_RTSP_CSEQ_ERROR in rtsp_done.
-Jay Satiro (27 Apr 2021)
-- [Lucas Servén Marín brought this change]
+ Closes https://github.com/curl/curl/pull/8525
- docs: fix typo in fail-with-body doc
-
- This commit fixes a small typo in the documentation for the
- --fail-with-body flag.
-
- Closes https://github.com/curl/curl/pull/6977
+- lib: fix some misuse of curlx_convert_wchar_to_UTF8
-- lib: fix some misuse of curlx_convert_UTF8_to_tchar
-
- curlx_convert_UTF8_to_tchar must be freed by curlx_unicodefree, but
+ curlx_convert_wchar_to_UTF8 must be freed by curlx_unicodefree, but
prior to this change some uses mistakenly called free.
-
- I've reviewed all other uses of curlx_convert_UTF8_to_tchar and
- curlx_convert_tchar_to_UTF8.
-
- Bug: https://github.com/curl/curl/pull/6602#issuecomment-825236763
- Reported-by: sergio-nsk@users.noreply.github.com
-
- Closes https://github.com/curl/curl/pull/6938
-
-Daniel Stenberg (27 Apr 2021)
-- ntlm: precaution against super huge type2 offsets
-
- ... which otherwise caused an integer overflow and circumvented the if()
- conditional size check.
-
- Detected by OSS-Fuzz
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33720
- Assisted-by: Max Dymond
- Closes #6975
-- c-hyper: fix unused variable ‘wrote’
+ I've reviewed all other uses of curlx_convert_wchar_to_UTF8 and
+ curlx_convert_UTF8_to_wchar.
-- libcurl-security.3: be careful of setuid
-
- Reported-by: Harry Sintonen
- Closes #6970
+ Ref: https://github.com/curl/curl/commit/1d5d0ae
-- [Kevin Burke brought this change]
+ Closes https://github.com/curl/curl/pull/8521
- c-hyper: don't write to set.writeheader if null
-
- Previously if a caller set CURLOPT_WRITEFUNCTION but did not set a
- CURLOPT_HEADERDATA buffer, Hyper would still attempt to write headers to
- the data->set.writeheader header buffer, even though it is null. This
- led to NPE segfaults attempting to use libcurl+Hyper with Git, for
- example.
-
- Instead, process the client write for the status line using the same
- logic we use to process the client write for the later HTTP headers,
- which contains the appropriate guard logic. As a side benefit,
- data->set.writeheader is now only read in one file instead of two.
-
- Fixes #6619
- Fixes abetterinternet/crustls#49
- Fixes hyperium/hyper#2438
- Closes #6971
-
-- wolfssl: handle SSL_write() returns 0 for error
-
- Reported-by: Timo Lange
-
- Closes #6967
-
-- easy: ignore sigpipe in curl_easy_send
-
- Closes #6965
-
-- sigpipe: ignore SIGPIPE when using wolfSSL as well
-
- Closes #6966
-
-- libcurl-security.3: don't try to filter IPv4 hosts based on the URL
-
- Closes #6942
+- mk-ca-bundle.pl: Use stricter logic to process the certificates
-- [Harry Sintonen brought this change]
+ .. and bump version to 1.29.
+
+ This change makes the script properly ignore unknown blocks and
+ otherwise fail when Mozilla changes the certdata format in ways we
+ don't expect. Though this is less flexible behavior it makes it far less
+ likely that an invalid certificate can slip through.
+
+ Prior to this change the state machine did not always properly reset,
+ and it was possible that a certificate marked as invalid could then
+ later be marked as valid when there was conflicting trust info or
+ an unknown block was erroneously processed as part of the certificate.
+
+ Ref: https://github.com/curl/curl/pull/7801#pullrequestreview-768384569
+
+ Closes https://github.com/curl/curl/pull/8411
+
+Marcel Raad (17 Mar 2022)
+- test375: fix line endings on Windows
+
+ Closes https://github.com/curl/curl/pull/8599
+
+Daniel Stenberg (17 Mar 2022)
+- http: reject header contents with nul bytes
+
+ They are not allowed by the protocol and allowing them risk that curl
+ misbehaves somewhere where C functions are used but won't work on the
+ full contents. Further, they are not supported by hyper and they cause
+ problems for the new coming headers API work.
- nss_set_blocking: avoid static for sock_opt
-
- Reviewed-by: Kamil Dudka
- Closes #6945
+ Updated test 262 to verify and enabled it for hyper as well
+
+ Closes #8601
+
+- [Philip Heiduck brought this change]
+
+ CI: Do not use buildconf. Instead, just use: autoreconf -fi
+
+ Closes #8596
- RELEASE-NOTES: synced
-- [Yusuke Nakamura brought this change]
+Jay Satiro (14 Mar 2022)
+- libssh: Improve fix for missing SSH_S_ stat macros
- docs/HTTP3.md: fix nghttp2's HTTP/3 server port
-
- Port 8443 does not work now.
- Correct origin is in the quicwg's wiki.
- https://github.com/quicwg/base-drafts/wiki/Implementations#ngtcp2
-
- Closes #6964
-
-- krb5: don't use 'static' to store PBSZ size response
-
- ... because it makes the knowledge and usage cross-transfer in funny and
- unexpected ways.
-
- Reported-by: Harry Sintonen
- Closes #6963
-
-- [Kevin Burke brought this change]
-
- m4: add security frameworks on Mac when compiling rustls
-
- Previously compiling rustls on Mac would only complete if you also
- compiled the SecureTransport TLS backend, which curl would prefer to
- the Rust backend.
-
- Appending these flags to LDFLAGS makes it possible to compile the
- Rustls backend on Mac without the SecureTransport backend, which means
- this patch will make it possible for Mac users to use the Rustls
- backend for TLS.
-
- Reviewed-by: Jacob Hoffman-Andrews
-
- Fixes #6955
- Cloes #6956
-
-- krb5: remove the unused 'overhead' function
-
- Closes #6947
-
-- [Johann150 brought this change]
-
- curl_url_set.3: add memory management information
-
- wording taken from man page for CURLOPT_URL.3
-
- As far as I can see, the URL part is either malloc'ed before due to
- encoding or it is strdup'ed.
-
- Closes #6953
-
-- [Jacob Hoffman-Andrews brought this change]
-
- c-hpyer: fix handling of zero-byte chunk from hyper
-
- Closes #6951
-
-- CURLOPT_POSTFIELDS.3: clarify how it gets the size of the data
-
- Ref: https://curl.se/mail/lib-2021-04/0085.html
- Closes #6943
-
-- [Ralph Langendam brought this change]
-
- cmake: make libcurl output filename configurable
-
- Reviewed-by: Jakub Zakrzewski
- Closes #6933
+ - If building libcurl against an old libssh version missing SSH_S_IFMT
+ and SSH_S_IFLNK then use the values from a supported version.
-- [Patrick Monnerat brought this change]
+ Prior to this change if libssh did not define SSH_S_IFMT and SSH_S_IFLNK
+ then S_IFMT and S_IFLNK, respectively, were used instead. The problem
+ with that is the user's S_ stat macros don't have the same values across
+ platforms. For example Windows has values different from Linux.
+
+ Follow-up to 7b0fd39.
+
+ Ref: https://github.com/curl/curl/pull/8511#discussion_r815292391
+ Ref: https://github.com/curl/curl/pull/8574
+
+ Closes https://github.com/curl/curl/pull/8588
+
+Marc Hoersken (13 Mar 2022)
+- tool and tests: force flush of all buffers at end of program
+
+ On Windows data can be lost in buffers in case of abnormal program
+ termination, especially in process chains as seen due to flaky tests.
+ Therefore flushing all buffers manually should avoid this data loss.
+
+ In the curl tool we play the safe game by only flushing write buffers,
+ but in the testsuite where we manage all buffers, we flush everything.
+
+ This should drastically reduce Windows CI and testsuite flakiness.
+
+ Reviewed-by: Daniel Stenberg
+
+ Supersedes #7833 and #6064
+ Closes #8516
+
+Daniel Stenberg (12 Mar 2022)
+- [Jan Venekamp brought this change]
+
+ BearSSL: add CURLOPT_SSL_CTX_FUNCTION support
+
+ Closes #8478
+
+- [Jan Venekamp brought this change]
+
+ BearSSL: add CURLOPT_SSL_CIPHER_LIST support
+
+ Closes #8477
+
+Dan Fandrich (11 Mar 2022)
+- tool_cb_hdr: Turn the Location: into a terminal hyperlink
+
+ This turns even relative URLs into clickable hyperlinks in a supported
+ terminal when --styled-output is enabled. Many terminals already turn
+ URLs into clickable links but there is not enough information in a
+ relative URL to do this automatically otherwise.
+
+- keepalive-time.d: It takes many probes to detect brokenness
+
+Daniel Stenberg (11 Mar 2022)
+- [HexTheDragon brought this change]
+
+ curl: add --no-clobber
+
+ Does not overwrite output files if they already exist
+
+ Closes #7708
+ Co-authored-by: Daniel Stenberg
- vtls: reset ssl use flag upon negotiation failure
-
- Fixes the segfault in ldaps disconnect.
-
- Reported-by: Illarion Taev
- Fixes #6934
- Closes #6937
-
-- configure: fix typo in TLS error message
-
- Reported-by: Pontus Lundkvist
-
-- README: link to the commercial support option
-
-Jay Satiro (22 Apr 2021)
-- [Martin Halle brought this change]
-
- version: add gsasl_version to curl_version_info_data
-
- - Add gsasl_version string and bump to CURLVERSION_TENTH.
-
- Ref: https://curl.se/mail/lib-2021-04/0003.html
-
- Closes https://github.com/curl/curl/pull/6843
-
-- [Morten Minde Neergaard brought this change]
-
- schannel: Support strong crypto option
-
- - Support enabling strong crypto via optional user cipher list when
- USE_STRONG_CRYPTO or SCH_USE_STRONG_CRYPTO is in the list.
-
- MSDN says SCH_USE_STRONG_CRYPTO "Instructs Schannel to disable known
- weak cryptographic algorithms, cipher suites, and SSL/TLS protocol
- versions that may be otherwise enabled for better interoperability."
-
- Ref: https://curl.se/mail/lib-2021-02/0066.html
- Ref: https://curl.se/docs/manpage.html#--ciphers
- Ref: https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html
- Ref: https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-schannel_cred
-
- Closes https://github.com/curl/curl/pull/6734
-
-Daniel Stenberg (22 Apr 2021)
- RELEASE-NOTES: synced
-- ci: adapt to configure requiring an explicit TLS choice
+ also bump next pending version to become 7.83.0
+
+- [Jean-Philippe Menil brought this change]
+
+ openssl: check SSL_get_peer_cert_chain return value
+
+ Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
+ Closes #8579
+
+- [Jay Satiro brought this change]
+
+ mk-ca-bundle.vbs: delete this script in favor of mk-ca-bundle.pl
+
+ mk-ca-bundle.vbs is a Windows-specific script for Mozilla certificate
+ extraction, similar to mk-ca-bundle.pl which runs on any platform. The
+ vbs version has not been maintained while the perl version has been
+ maintained with improvements and security fixes. I don't think it's
+ worth the work to maintain both versions. Windows users should be able
+ to use mk-ca-bundle.pl without any problems, as long as they have perl.
+
+ Closes #8412
+
+- CURLSHOPT_UNLOCKFUNC.3: fix the callback prototype
+
+ Copy and paste error
+
+ Reported-by: Francisco Olarte
+ Fixes #8573
+ Closes #8577
+
+- remove-on-error.d: typo
+
+ Reported-by: Colin Leroy
+ Bug: https://github.com/curl/curl/pull/8503#pullrequestreview-906520081
+
+- curl: add --remove-on-error
+
+ If a transfer returns an error, using this option makes curl remove the
+ leftover downloded (partial) local file before exiting.
+
+ Added test 376 to verify
+
+ Closes #8503
+
+- libssh: fix build with old libssh versions
+
+ ... that don't have the SSH_S_* defines. Spotted on a machine using
+ libssh 0.7.3
+
+ Closes #8574
+
+- hyper: fix status_line() return code
+
+ Detected while working on #7708 that happened to trigger an error here
+ with a new test case.
+
+ Closes #8572
+
+- [Alejandro R. Sedeño brought this change]
+
+ configure.ac: move -pthread CFLAGS setting back where it used to be
+
+ The fix for #8276 proposed in #8374 set `CFLAGS="$CFLAGS -pthead"`
+ earlier than it used to be set, applying it in cases where it should not
+ have been applied.
+
+ This moves the AIX XLC check to a new `case $host in` block inside of
+ the `if test "$USE_THREADS_POSIX" != "1"` block, where `CFLAGS="$CFLAGS
+ -pthead"` used to happen.
+
+ Fixes #8541
+ Closes #8542
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: add client certificate authentication for OpenSSL
+
+ Closes #8522
+
+- tool_operate: fix a scan-build warning
+
+ ... and avoid the temp storing of the return code in a diff variable.
+
+ Closes #8565
+
+- test375: verify that --proxy errors out if proxy is disabled in the build
+
+ Closes #8565
+
+- curl: error out when options need features not present in libcurl
+
+ Trying to use a proxy when libcurl was built with proxy support disabled
+ should make curl error out properly.
+
+ Remove knowledge of disabled features from the tool code and instead
+ make it properly respond to what libcurl returns. Update all tests to
+ properly require the necessary features to be present/absent so that the
+ test suite can still be run even with libcurl builds with disabled
+ features.
+
+ Ref: https://curl.se/mail/archive-2022-03/0013.html
+ Closes #8565
+
+- ngtcp2: disconnect the QUIC connection proper
+
+ Reported-by: mehatzri on github
+ Reviewed-by: Tatsuhiro Tsujikawa
+ Fixes #8534
+ closes #8569
+
+Dan Fandrich (9 Mar 2022)
+- test386: Fix an incorrect test markup tag
+
+Daniel Stenberg (9 Mar 2022)
+- [Don J Olmstead brought this change]
+
+ nonblock: restore setsockopt method to curlx_nonblock
+
+ The implementation using setsockopt was removed when BeOS support was
+ purged. However this functionality wasn't BeOS specific, it is still
+ used by for example Orbis OS (Playstation 4/5 OS).
+
+ Closes #8562
+
+- openssl: fix CN check error code
+
+ Due to a missing 'else' this returns error too easily.
+
+ Regressed in: d15692ebb
+
+ Reported-by: Kristoffer Gleditsch
+ Fixes #8559
+ Closes #8560
+
+- [Frank Meier brought this change]
+
+ connect: make Curl_getconnectinfo work with conn cache from share handle
-- configure: split out each TLS library detector into its own function
-
- ... and put those functions in separate m4 files per TLS library.
+ Closes #8524
diff --git a/CMake/CMakeConfigurableFile.in b/CMake/CMakeConfigurableFile.in
index 8ccd016a6..b93e7539a 100644
--- a/CMake/CMakeConfigurableFile.in
+++ b/CMake/CMakeConfigurableFile.in
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,5 +18,7 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
@CMAKE_CONFIGURABLE_FILE_CONTENT@
diff --git a/CMake/CurlSymbolHiding.cmake b/CMake/CurlSymbolHiding.cmake
index e99ea6f64..75215a122 100644
--- a/CMake/CurlSymbolHiding.cmake
+++ b/CMake/CurlSymbolHiding.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
include(CheckCSourceCompiles)
diff --git a/CMake/CurlTests.c b/CMake/CurlTests.c
index 8666da0da..6a9fdea09 100644
--- a/CMake/CurlTests.c
+++ b/CMake/CurlTests.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifdef TIME_WITH_SYS_TIME
/* Time with sys/time test */
@@ -56,7 +58,7 @@ return 0;
# define PLATFORM_AIX_V3
#endif
/* */
-#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__)
+#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3)
#error "O_NONBLOCK does not work on this platform"
#endif
@@ -182,28 +184,6 @@ if (sizeof (bool *) )
#include <float.h>
int main() { return 0; }
#endif
-#ifdef HAVE_GETADDRINFO
-#include <netdb.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-int main(void) {
- struct addrinfo hints, *ai;
- int error;
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_STREAM;
-#ifndef getaddrinfo
- (void)getaddrinfo;
-#endif
- error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
- if (error) {
- return 1;
- }
- return 0;
-}
-#endif
#ifdef HAVE_FILE_OFFSET_BITS
#ifdef _FILE_OFFSET_BITS
#undef _FILE_OFFSET_BITS
@@ -514,3 +494,39 @@ main() {
return 0;
}
#endif
+#ifdef HAVE_ATOMIC
+/* includes start */
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_STDATOMIC_H
+# include <stdatomic.h>
+#endif
+/* includes end */
+
+int
+main() {
+ _Atomic int i = 1;
+ i = 0; // Force an atomic-write operation.
+ return i;
+}
+#endif
+#ifdef HAVE_WIN32_WINNT
+/* includes start */
+#ifdef WIN32
+# include "../lib/setup-win32.h"
+#endif
+/* includes end */
+
+#define enquote(x) #x
+#define expand(x) enquote(x)
+#pragma message("_WIN32_WINNT=" expand(_WIN32_WINNT))
+
+int
+main() {
+ return 0;
+}
+#endif
diff --git a/CMake/FindBearSSL.cmake b/CMake/FindBearSSL.cmake
index 9455f4ba3..88d5e87ad 100644
--- a/CMake/FindBearSSL.cmake
+++ b/CMake/FindBearSSL.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
find_path(BEARSSL_INCLUDE_DIRS bearssl.h)
diff --git a/CMake/FindBrotli.cmake b/CMake/FindBrotli.cmake
index 0ed08550d..833e1811a 100644
--- a/CMake/FindBrotli.cmake
+++ b/CMake/FindBrotli.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
include(FindPackageHandleStandardArgs)
diff --git a/CMake/FindCARES.cmake b/CMake/FindCARES.cmake
index 71806823d..99cf31d91 100644
--- a/CMake/FindCARES.cmake
+++ b/CMake/FindCARES.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# - Find c-ares
# Find the c-ares includes and library
diff --git a/CMake/FindGSS.cmake b/CMake/FindGSS.cmake
index 4e4747d6c..ec2bd57ba 100644
--- a/CMake/FindGSS.cmake
+++ b/CMake/FindGSS.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# - Try to find the GSS Kerberos library
# Once done this will define
diff --git a/CMake/FindLibPSL.cmake b/CMake/FindLibPSL.cmake
new file mode 100644
index 000000000..66abdd79a
--- /dev/null
+++ b/CMake/FindLibPSL.cmake
@@ -0,0 +1,45 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# - Try to find the libpsl library
+# Once done this will define
+#
+# LIBPSL_FOUND - system has the libpsl library
+# LIBPSL_INCLUDE_DIR - the libpsl include directory
+# LIBPSL_LIBRARY - the libpsl library name
+
+find_path(LIBPSL_INCLUDE_DIR libpsl.h)
+
+find_library(LIBPSL_LIBRARY NAMES psl libpsl)
+
+if(LIBPSL_INCLUDE_DIR)
+ file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" libpsl_version_str REGEX "^#define[\t ]+PSL_VERSION[\t ]+\"(.*)\"")
+ string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBPSL_VERSION "${libpsl_version_str}")
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LibPSL
+ REQUIRED_VARS LIBPSL_LIBRARY LIBPSL_INCLUDE_DIR
+ VERSION_VAR LIBPSL_VERSION)
+
+mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY)
diff --git a/CMake/FindLibSSH2.cmake b/CMake/FindLibSSH2.cmake
index ce46a408b..0ec7f7e3b 100644
--- a/CMake/FindLibSSH2.cmake
+++ b/CMake/FindLibSSH2.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# - Try to find the libssh2 library
# Once done this will define
diff --git a/CMake/FindMSH3.cmake b/CMake/FindMSH3.cmake
new file mode 100644
index 000000000..96477e282
--- /dev/null
+++ b/CMake/FindMSH3.cmake
@@ -0,0 +1,70 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindMSH3
+----------
+
+Find the msh3 library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``MSH3_FOUND``
+ System has msh3
+``MSH3_INCLUDE_DIRS``
+ The msh3 include directories.
+``MSH3_LIBRARIES``
+ The libraries needed to use msh3
+#]=======================================================================]
+if(UNIX)
+ find_package(PkgConfig QUIET)
+ pkg_search_module(PC_MSH3 libmsh3)
+endif()
+
+find_path(MSH3_INCLUDE_DIR msh3.h
+ HINTS
+ ${PC_MSH3_INCLUDEDIR}
+ ${PC_MSH3_INCLUDE_DIRS}
+)
+
+find_library(MSH3_LIBRARY NAMES msh3
+ HINTS
+ ${PC_MSH3_LIBDIR}
+ ${PC_MSH3_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MSH3
+ REQUIRED_VARS
+ MSH3_LIBRARY
+ MSH3_INCLUDE_DIR
+)
+
+if(MSH3_FOUND)
+ set(MSH3_LIBRARIES ${MSH3_LIBRARY})
+ set(MSH3_INCLUDE_DIRS ${MSH3_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(MSH3_INCLUDE_DIRS MSH3_LIBRARIES)
diff --git a/CMake/FindMbedTLS.cmake b/CMake/FindMbedTLS.cmake
index 7bdb1976d..fcd6717f6 100644
--- a/CMake/FindMbedTLS.cmake
+++ b/CMake/FindMbedTLS.cmake
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h)
diff --git a/CMake/FindNGHTTP2.cmake b/CMake/FindNGHTTP2.cmake
index 8614492b1..6d70c4a04 100644
--- a/CMake/FindNGHTTP2.cmake
+++ b/CMake/FindNGHTTP2.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
include(FindPackageHandleStandardArgs)
diff --git a/CMake/FindNGHTTP3.cmake b/CMake/FindNGHTTP3.cmake
index 643b60097..8d8ebc1b1 100644
--- a/CMake/FindNGHTTP3.cmake
+++ b/CMake/FindNGHTTP3.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#[=======================================================================[.rst:
diff --git a/CMake/FindNGTCP2.cmake b/CMake/FindNGTCP2.cmake
index 5757009a5..61e54c2d6 100644
--- a/CMake/FindNGTCP2.cmake
+++ b/CMake/FindNGTCP2.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#[=======================================================================[.rst:
@@ -69,7 +71,7 @@ endif()
if(NGTCP2_FIND_COMPONENTS)
set(NGTCP2_CRYPTO_BACKEND "")
foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
- if(component MATCHES "^(OpenSSL|GnuTLS)")
+ if(component MATCHES "^(BoringSSL|OpenSSL|GnuTLS)")
if(NGTCP2_CRYPTO_BACKEND)
message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
endif()
diff --git a/CMake/FindNSS.cmake b/CMake/FindNSS.cmake
index 899c6b075..6742dda83 100644
--- a/CMake/FindNSS.cmake
+++ b/CMake/FindNSS.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
if(UNIX)
find_package(PkgConfig QUIET)
diff --git a/CMake/FindQUICHE.cmake b/CMake/FindQUICHE.cmake
index 0247364d4..fc47027d7 100644
--- a/CMake/FindQUICHE.cmake
+++ b/CMake/FindQUICHE.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#[=======================================================================[.rst:
diff --git a/CMake/FindWolfSSL.cmake b/CMake/FindWolfSSL.cmake
index 42256b3cd..986f01e00 100644
--- a/CMake/FindWolfSSL.cmake
+++ b/CMake/FindWolfSSL.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
find_path(WolfSSL_INCLUDE_DIR NAMES wolfssl/ssl.h)
find_library(WolfSSL_LIBRARY NAMES wolfssl)
diff --git a/CMake/FindZstd.cmake b/CMake/FindZstd.cmake
index eaba39746..2d6540443 100644
--- a/CMake/FindZstd.cmake
+++ b/CMake/FindZstd.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#[=======================================================================[.rst:
diff --git a/CMake/Macros.cmake b/CMake/Macros.cmake
index d57dd6ad5..4d7380eb5 100644
--- a/CMake/Macros.cmake
+++ b/CMake/Macros.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#File defines convenience macros for available feature testing
diff --git a/CMake/OtherTests.cmake b/CMake/OtherTests.cmake
index 73c813fe5..b3031f749 100644
--- a/CMake/OtherTests.cmake
+++ b/CMake/OtherTests.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
include(CheckCSourceCompiles)
# The begin of the sources (macros and includes)
@@ -46,158 +48,6 @@ endif()
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
-function(curl_cv_func_recv_run_test recv_retv recv_arg1 recv_arg2 recv_arg3 recv_arg4)
- unset(curl_cv_func_recv_test CACHE)
- check_c_source_compiles("
- ${_source_epilogue}
- #ifdef WINSOCK_API_LINKAGE
- WINSOCK_API_LINKAGE
- #endif
- 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_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}" PARENT_SCOPE)
- set(RECV_TYPE_ARG1 "${recv_arg1}" PARENT_SCOPE)
- set(RECV_TYPE_ARG2 "${recv_arg2}" PARENT_SCOPE)
- set(RECV_TYPE_ARG3 "${recv_arg3}" PARENT_SCOPE)
- set(RECV_TYPE_ARG4 "${recv_arg4}" PARENT_SCOPE)
- set(RECV_TYPE_RETV "${recv_retv}" PARENT_SCOPE)
- set(HAVE_RECV 1 PARENT_SCOPE)
- set(curl_cv_func_recv_done 1 PARENT_SCOPE)
- endif()
-endfunction()
-
-check_c_source_compiles("${_source_epilogue}
-int main(void) {
- recv(0, 0, 0, 0);
- return 0;
-}" curl_cv_recv)
-if(curl_cv_recv)
- if(NOT DEFINED curl_cv_func_recv_args OR curl_cv_func_recv_args STREQUAL "unknown")
- if(APPLE)
- curl_cv_func_recv_run_test("ssize_t" "int" "void *" "size_t" "int")
- endif()
- foreach(recv_retv "int" "ssize_t" )
- foreach(recv_arg1 "SOCKET" "int" )
- foreach(recv_arg2 "char *" "void *" )
- foreach(recv_arg3 "int" "size_t" "socklen_t" "unsigned int")
- foreach(recv_arg4 "int" "unsigned int")
- if(NOT curl_cv_func_recv_done)
- curl_cv_func_recv_run_test(${recv_retv} ${recv_arg1} ${recv_arg2} ${recv_arg3} ${recv_arg4})
- endif()
- endforeach()
- endforeach()
- endforeach()
- endforeach()
- endforeach()
- 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}")
- endif()
-
- if(curl_cv_func_recv_args STREQUAL "unknown")
- message(FATAL_ERROR "Cannot find proper types to use for recv args")
- endif()
-else()
- message(FATAL_ERROR "Unable to link function recv")
-endif()
-set(curl_cv_func_recv_args "${curl_cv_func_recv_args}" CACHE INTERNAL "Arguments for recv")
-set(HAVE_RECV 1)
-
-function(curl_cv_func_send_run_test send_retv send_arg1 send_arg2 send_arg3 send_arg4)
- unset(curl_cv_func_send_test CACHE)
- check_c_source_compiles("
- ${_source_epilogue}
- #ifdef WINSOCK_API_LINKAGE
- WINSOCK_API_LINKAGE
- #endif
- 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_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)
- 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
- "${send_arg1},${send_arg2},${send_arg3},${send_arg4},${send_retv},${send_qual_arg2}" PARENT_SCOPE)
- set(SEND_TYPE_ARG1 "${send_arg1}" PARENT_SCOPE)
- set(SEND_TYPE_ARG2 "${send_arg2}" PARENT_SCOPE)
- set(SEND_TYPE_ARG3 "${send_arg3}" PARENT_SCOPE)
- set(SEND_TYPE_ARG4 "${send_arg4}" PARENT_SCOPE)
- set(SEND_TYPE_RETV "${send_retv}" PARENT_SCOPE)
- set(HAVE_SEND 1 PARENT_SCOPE)
- set(curl_cv_func_send_done 1 PARENT_SCOPE)
- endif()
-endfunction()
-
-check_c_source_compiles("${_source_epilogue}
-int main(void) {
- send(0, 0, 0, 0);
- return 0;
-}" curl_cv_send)
-if(curl_cv_send)
- if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
- if(APPLE)
- curl_cv_func_send_run_test("ssize_t" "int" "const void *" "size_t" "int")
- endif()
- foreach(send_retv "int" "ssize_t" )
- foreach(send_arg1 "SOCKET" "int" "ssize_t" )
- foreach(send_arg2 "const char *" "const void *" "void *" "char *")
- foreach(send_arg3 "int" "size_t" "socklen_t" "unsigned int")
- foreach(send_arg4 "int" "unsigned int")
- if(NOT curl_cv_func_send_done)
- curl_cv_func_send_run_test("${send_retv}" "${send_arg1}" "${send_arg2}" "${send_arg3}" "${send_arg4}")
- endif()
- endforeach()
- endforeach()
- endforeach()
- endforeach()
- endforeach()
- 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}")
- endif()
-
- if("${curl_cv_func_send_args}" STREQUAL "unknown")
- message(FATAL_ERROR "Cannot find proper types to use for send args")
- endif()
- set(SEND_QUAL_ARG2 "const")
-else()
- message(FATAL_ERROR "Unable to link function send")
-endif()
-set(curl_cv_func_send_args "${curl_cv_func_send_args}" CACHE INTERNAL "Arguments for send")
-set(HAVE_SEND 1)
-
check_c_source_compiles("${_source_epilogue}
int main(void) {
int flag = MSG_NOSIGNAL;
@@ -236,8 +86,8 @@ endif()
unset(CMAKE_TRY_COMPILE_TARGET_TYPE)
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
- if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- # only try this on non-macOS
+ if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "iOS")
+ # only try this on non-apple platforms
# if not cross-compilation...
include(CheckCSourceRuns)
diff --git a/CMake/Platforms/WindowsCache.cmake b/CMake/Platforms/WindowsCache.cmake
index fb803f8a6..9a513bb6c 100644
--- a/CMake/Platforms/WindowsCache.cmake
+++ b/CMake/Platforms/WindowsCache.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,36 +18,26 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
if(NOT UNIX)
if(WIN32)
- set(HAVE_LIBDL 0)
- set(HAVE_LIBUCB 0)
set(HAVE_LIBSOCKET 0)
- set(NOT_NEED_LIBNSL 0)
- set(HAVE_LIBNSL 0)
set(HAVE_GETHOSTNAME 1)
set(HAVE_LIBZ 0)
- set(HAVE_DLOPEN 0)
-
- set(HAVE_ALLOCA_H 0)
set(HAVE_ARPA_INET_H 0)
- set(HAVE_DLFCN_H 0)
set(HAVE_FCNTL_H 1)
set(HAVE_INTTYPES_H 0)
set(HAVE_IO_H 1)
- set(HAVE_MALLOC_H 1)
- set(HAVE_MEMORY_H 1)
set(HAVE_NETDB_H 0)
- set(HAVE_NETINET_IF_ETHER_H 0)
set(HAVE_NETINET_IN_H 0)
set(HAVE_NET_IF_H 0)
set(HAVE_PROCESS_H 1)
set(HAVE_PWD_H 0)
set(HAVE_SETJMP_H 1)
set(HAVE_SIGNAL_H 1)
- set(HAVE_SOCKIO_H 0)
set(HAVE_STDINT_H 0)
set(HAVE_STDLIB_H 1)
set(HAVE_STRINGS_H 0)
@@ -64,43 +54,26 @@ if(NOT UNIX)
set(HAVE_TERMIOS_H 0)
set(HAVE_TERMIO_H 0)
set(HAVE_TIME_H 1)
- set(HAVE_UNISTD_H 0)
set(HAVE_UTIME_H 0)
- set(HAVE_X509_H 0)
- set(HAVE_ZLIB_H 0)
-
- set(HAVE_SIZEOF_LONG_DOUBLE 1)
- set(SIZEOF_LONG_DOUBLE 8)
set(HAVE_SOCKET 1)
- set(HAVE_POLL 0)
set(HAVE_SELECT 1)
set(HAVE_STRDUP 1)
- set(HAVE_STRSTR 1)
- set(HAVE_STRTOK_R 0)
- set(HAVE_STRFTIME 1)
- set(HAVE_UNAME 0)
- set(HAVE_STRCASECMP 0)
set(HAVE_STRICMP 1)
set(HAVE_STRCMPI 1)
set(HAVE_GETTIMEOFDAY 0)
- set(HAVE_INET_ADDR 1)
set(HAVE_CLOSESOCKET 1)
- set(HAVE_SETVBUF 0)
set(HAVE_SIGSETJMP 0)
+ set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1)
set(HAVE_GETPASS_R 0)
- set(HAVE_STRLCAT 0)
set(HAVE_GETPWUID 0)
set(HAVE_GETEUID 0)
set(HAVE_UTIME 1)
set(HAVE_RAND_EGD 0)
- set(HAVE_RAND_SCREEN 0)
- set(HAVE_RAND_STATUS 0)
set(HAVE_GMTIME_R 0)
- set(HAVE_LOCALTIME_R 0)
+ set(HAVE_GETADDRINFO_THREADSAFE 1)
set(HAVE_GETHOSTBYNAME_R 0)
- set(HAVE_SIGNAL_FUNC 1)
- set(HAVE_SIGNAL_MACRO 0)
+ set(HAVE_SIGNAL 1)
set(HAVE_GETHOSTBYNAME_R_3 0)
set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
@@ -112,11 +85,6 @@ if(NOT UNIX)
set(TIME_WITH_SYS_TIME 0)
set(HAVE_O_NONBLOCK 0)
set(HAVE_IN_ADDR_T 0)
- if(ENABLE_IPV6)
- set(HAVE_GETADDRINFO 1)
- else()
- set(HAVE_GETADDRINFO 0)
- endif()
set(STDC_HEADERS 1)
set(HAVE_SIGACTION 0)
diff --git a/CMake/Utilities.cmake b/CMake/Utilities.cmake
index 8f9b861ba..78bfd6ffe 100644
--- a/CMake/Utilities.cmake
+++ b/CMake/Utilities.cmake
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# File containing various utilities
diff --git a/CMake/cmake_uninstall.cmake.in b/CMake/cmake_uninstall.cmake.in
index e96c1432a..55801f507 100644
--- a/CMake/cmake_uninstall.cmake.in
+++ b/CMake/cmake_uninstall.cmake.in
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
diff --git a/CMake/curl-config.cmake.in b/CMake/curl-config.cmake.in
index 957148ecc..496a92d0e 100644
--- a/CMake/curl-config.cmake.in
+++ b/CMake/curl-config.cmake.in
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
@PACKAGE_INIT@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 125b0a02b..62fee8e6d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# curl/libcurl CMake script
# by Tetetest and Sukender (Benoit Neil)
@@ -37,6 +39,27 @@
# 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.
+
+# Note: By default this CMake build script detects the version of some
+# dependencies using `check_symbol_exists`. Those checks do not work
+# in the case that both CURL and its dependency are included as
+# sub-projects in a larger build using `FetchContent`. To support
+# that case, additional variables may be defined by the parent
+# project, ideally in the "extra" find package redirect file:
+# https://cmake.org/cmake/help/latest/module/FetchContent.html#integrating-with-find-package
+#
+# The following variables are available:
+# HAVE_RAND_EGD: `RAND_egd` present in OpenSSL
+# HAVE_BORINGSSL: OpenSSL is BoringSSL
+# HAVE_PK11_CREATEMANAGEDGENERICOBJECTL: `PK11_CreateManagedGenericObject` present in NSS
+# HAVE_SSL_CTX_SET_QUIC_METHOD: `SSL_CTX_set_quic_method` present in OpenSSL
+# HAVE_QUICHE_CONN_SET_QLOG_FD: `quiche_conn_set_qlog_fd` present in QUICHE
+# HAVE_ZSTD_CREATEDSTREAM: `ZSTD_createDStream` present in Zstd
+#
+# For each of the above variables, if the variable is DEFINED (either
+# to ON or OFF), the symbol detection will be skipped. If the
+# variable is NOT DEFINED, the symbol detection will be performed.
+
cmake_minimum_required(VERSION 3.2...3.16 FATAL_ERROR)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
@@ -65,7 +88,11 @@ message(STATUS "curl version=[${CURL_VERSION}]")
# SET(PACKAGE_STRING "curl-")
# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/")
set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")
-set(OS "\"${CMAKE_SYSTEM_NAME}\"")
+if(CMAKE_C_COMPILER_TARGET)
+ set(OS "\"${CMAKE_C_COMPILER_TARGET}\"")
+else()
+ set(OS "\"${CMAKE_SYSTEM_NAME}\"")
+endif()
include_directories(${CURL_SOURCE_DIR}/include)
@@ -76,20 +103,12 @@ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
if(WIN32)
option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
- option(ENABLE_INET_PTON "Set to OFF to prevent usage of inet_pton when building against modern SDKs while still requiring compatibility with older Windows versions, such as Windows XP, Windows Server 2003 etc." ON)
option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string")
if(CURL_TARGET_WINDOWS_VERSION)
add_definitions(-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION})
set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
- elseif(ENABLE_INET_PTON)
- # _WIN32_WINNT_VISTA (0x0600)
- add_definitions(-D_WIN32_WINNT=0x0600)
- set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0600")
- else()
- # _WIN32_WINNT_WINXP (0x0501)
- add_definitions(-D_WIN32_WINNT=0x0501)
- set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0501")
+ set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
endif()
if(ENABLE_UNICODE)
add_definitions(-DUNICODE -D_UNICODE)
@@ -109,7 +128,7 @@ option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OF
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
if(PICKY_COMPILER)
- foreach(_CCOPT -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wfloat-equal -Wsign-compare -Wundef -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wstrict-aliasing=3 -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wvla -Wdouble-promotion)
+ foreach(_CCOPT -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wfloat-equal -Wsign-compare -Wundef -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wstrict-aliasing=3 -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wvla -Wdouble-promotion -Wenum-conversion -Warith-conversion)
# surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new
# test result in.
string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
@@ -330,20 +349,7 @@ if(ENABLE_THREADED_RESOLVER)
endif()
# Check for all needed libraries
-check_library_exists_concat("${CMAKE_DL_LIBS}" dlopen HAVE_LIBDL)
check_library_exists_concat("socket" connect HAVE_LIBSOCKET)
-check_library_exists("c" gethostbyname "" NOT_NEED_LIBNSL)
-
-# Yellowtab Zeta needs different libraries than BeOS 5.
-if(BEOS)
- set(NOT_NEED_LIBNSL 1)
- check_library_exists_concat("bind" gethostbyname HAVE_LIBBIND)
- check_library_exists_concat("bnetapi" closesocket HAVE_LIBBNETAPI)
-endif()
-
-if(NOT NOT_NEED_LIBNSL)
- check_library_exists_concat("nsl" gethostbyname HAVE_LIBNSL)
-endif()
check_function_exists(gethostname HAVE_GETHOSTNAME)
@@ -455,16 +461,12 @@ if(CURL_USE_OPENSSL)
endif()
set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
- check_include_file("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
- check_include_file("openssl/err.h" HAVE_OPENSSL_ERR_H)
- check_include_file("openssl/pem.h" HAVE_OPENSSL_PEM_H)
- check_include_file("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
- check_include_file("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
- check_include_file("openssl/x509.h" HAVE_OPENSSL_X509_H)
- check_include_file("openssl/rand.h" HAVE_OPENSSL_RAND_H)
- check_symbol_exists(RAND_status "${CURL_INCLUDES}" HAVE_RAND_STATUS)
- check_symbol_exists(RAND_screen "${CURL_INCLUDES}" HAVE_RAND_SCREEN)
- check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
+ if(NOT DEFINED HAVE_RAND_EGD)
+ check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
+ endif()
+ if(NOT DEFINED HAVE_BORINGSSL)
+ check_symbol_exists(OPENSSL_IS_BORINGSSL "openssl/base.h" HAVE_BORINGSSL)
+ endif()
add_definitions(-DOPENSSL_SUPPRESS_DEPRECATED)
endif()
@@ -499,11 +501,13 @@ if(CURL_USE_NSS)
list(APPEND CURL_LIBS ${NSS_LIBRARIES})
set(SSL_ENABLED ON)
set(USE_NSS ON)
- cmake_push_check_state()
- set(CMAKE_REQUIRED_INCLUDES ${NSS_INCLUDE_DIRS})
- set(CMAKE_REQUIRED_LIBRARIES ${NSS_LIBRARIES})
- check_symbol_exists(PK11_CreateManagedGenericObject "pk11pub.h" HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
- cmake_pop_check_state()
+ if(NOT DEFINED HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES ${NSS_INCLUDE_DIRS})
+ set(CMAKE_REQUIRED_LIBRARIES ${NSS_LIBRARIES})
+ check_symbol_exists(PK11_CreateManagedGenericObject "pk11pub.h" HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
+ cmake_pop_check_state()
+ endif()
endif()
option(USE_NGHTTP2 "Use Nghttp2 library" OFF)
@@ -515,20 +519,26 @@ endif()
function(CheckQuicSupportInOpenSSL)
# Be sure that the OpenSSL library actually supports QUIC.
- cmake_push_check_state()
- set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
- set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}")
- check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD)
+ if(NOT DEFINED HAVE_SSL_CTX_SET_QUIC_METHOD)
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
+ set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}")
+ check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD)
+ cmake_pop_check_state()
+ endif()
if(NOT HAVE_SSL_CTX_SET_QUIC_METHOD)
- message(FATAL_ERROR "QUIC support is missing in OpenSSL/boringssl. Try setting -DOPENSSL_ROOT_DIR")
+ message(FATAL_ERROR "QUIC support is missing in OpenSSL/BoringSSL. Try setting -DOPENSSL_ROOT_DIR")
endif()
- cmake_pop_check_state()
endfunction()
option(USE_NGTCP2 "Use ngtcp2 and nghttp3 libraries for HTTP/3 support" OFF)
if(USE_NGTCP2)
if(USE_OPENSSL)
- find_package(NGTCP2 REQUIRED OpenSSL)
+ if(HAVE_BORINGSSL)
+ find_package(NGTCP2 REQUIRED BoringSSL)
+ else()
+ find_package(NGTCP2 REQUIRED OpenSSL)
+ endif()
CheckQuicSupportInOpenSSL()
elseif(USE_GNUTLS)
# TODO add GnuTLS support as vtls library.
@@ -556,11 +566,23 @@ if(USE_QUICHE)
set(USE_QUICHE ON)
include_directories(${QUICHE_INCLUDE_DIRS})
list(APPEND CURL_LIBS ${QUICHE_LIBRARIES})
- cmake_push_check_state()
- set(CMAKE_REQUIRED_INCLUDES "${QUICHE_INCLUDE_DIRS}")
- set(CMAKE_REQUIRED_LIBRARIES "${QUICHE_LIBRARIES}")
- check_symbol_exists(quiche_conn_set_qlog_fd "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD)
- cmake_pop_check_state()
+ if(NOT DEFINED HAVE_QUICHE_CONN_SET_QLOG_FD)
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES "${QUICHE_INCLUDE_DIRS}")
+ set(CMAKE_REQUIRED_LIBRARIES "${QUICHE_LIBRARIES}")
+ check_symbol_exists(quiche_conn_set_qlog_fd "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD)
+ cmake_pop_check_state()
+ endif()
+endif()
+
+option(USE_MSH3 "Use msquic library for HTTP/3 support" OFF)
+if(USE_MSH3)
+ if(USE_NGTCP2 OR USE_QUICHE)
+ message(FATAL_ERROR "Only one HTTP/3 backend can be selected!")
+ endif()
+ set(USE_MSH3 ON)
+ include_directories(${MSH3_INCLUDE_DIRS})
+ list(APPEND CURL_LIBS ${MSH3_LIBRARIES})
endif()
if(NOT CURL_DISABLE_LDAP)
@@ -586,7 +608,6 @@ if(NOT CURL_DISABLE_LDAP)
# Now that we know, we're not using windows LDAP...
if(USE_WIN32_LDAP)
check_include_file_concat("winldap.h" HAVE_WINLDAP_H)
- check_include_file_concat("winber.h" HAVE_WINBER_H)
else()
# Check for LDAP
set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
@@ -669,33 +690,28 @@ endif()
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 for idn2
option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
-set(HAVE_LIBIDN2 OFF)
if(USE_LIBIDN2)
check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
+else()
+ set(HAVE_LIBIDN2 OFF)
endif()
if(WIN32)
option(USE_WIN32_IDN "Use WinIDN for IDN support" OFF)
if(USE_WIN32_IDN)
- list(APPEND CURL_LIBS "Normaliz")
+ list(APPEND CURL_LIBS "normaliz")
set(WANT_IDN_PROTOTYPES ON)
endif()
endif()
-# Check for symbol dlopen (same as HAVE_LIBDL)
-check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
-
set(HAVE_LIBZ OFF)
-set(HAVE_ZLIB_H OFF)
set(USE_ZLIB OFF)
optional_dependency(ZLIB)
if(ZLIB_FOUND)
- set(HAVE_ZLIB_H ON)
set(HAVE_LIBZ ON)
set(USE_ZLIB ON)
@@ -727,11 +743,13 @@ option(CURL_ZSTD "Set to ON to enable building curl with zstd support." OFF)
set(HAVE_ZSTD OFF)
if(CURL_ZSTD)
find_package(Zstd REQUIRED)
- cmake_push_check_state()
- set(CMAKE_REQUIRED_INCLUDES ${Zstd_INCLUDE_DIRS})
- set(CMAKE_REQUIRED_LIBRARIES ${Zstd_LIBRARIES})
- check_symbol_exists(ZSTD_createDStream "zstd.h" HAVE_ZSTD_CREATEDSTREAM)
- cmake_pop_check_state()
+ if (NOT DEFINED HAVE_ZSTD_CREATEDSTREAM)
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_INCLUDES ${Zstd_INCLUDE_DIRS})
+ set(CMAKE_REQUIRED_LIBRARIES ${Zstd_LIBRARIES})
+ check_symbol_exists(ZSTD_createDStream "zstd.h" HAVE_ZSTD_CREATEDSTREAM)
+ cmake_pop_check_state()
+ endif()
if(Zstd_FOUND AND HAVE_ZSTD_CREATEDSTREAM)
set(HAVE_ZSTD ON)
list(APPEND CURL_LIBS ${Zstd_LIBRARIES})
@@ -739,42 +757,46 @@ if(CURL_ZSTD)
endif()
endif()
+#libpsl
+option(CURL_USE_LIBPSL "Use libPSL" ON)
+mark_as_advanced(CURL_USE_LIBPSL)
+set(USE_LIBPSL OFF)
+
+if(CURL_USE_LIBPSL)
+ find_package(LibPSL)
+ if(LIBPSL_FOUND)
+ list(APPEND CURL_LIBS ${LIBPSL_LIBRARY})
+ list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBPSL_INCLUDE_DIR}")
+ include_directories("${LIBPSL_INCLUDE_DIR}")
+ set(USE_LIBPSL ON)
+ endif()
+endif()
+
#libSSH2
option(CURL_USE_LIBSSH2 "Use libSSH2" ON)
mark_as_advanced(CURL_USE_LIBSSH2)
set(USE_LIBSSH2 OFF)
-set(HAVE_LIBSSH2 OFF)
-set(HAVE_LIBSSH2_H OFF)
if(CURL_USE_LIBSSH2)
find_package(LibSSH2)
if(LIBSSH2_FOUND)
list(APPEND CURL_LIBS ${LIBSSH2_LIBRARY})
- set(CMAKE_REQUIRED_LIBRARIES ${LIBSSH2_LIBRARY})
list(APPEND 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")
- unset(CMAKE_REQUIRED_LIBRARIES)
endif()
endif()
# libssh
option(CURL_USE_LIBSSH "Use libSSH" OFF)
mark_as_advanced(CURL_USE_LIBSSH)
-if(NOT HAVE_LIBSSH2 AND CURL_USE_LIBSSH)
+if(NOT USE_LIBSSH2 AND CURL_USE_LIBSSH)
find_package(libssh CONFIG)
if(libssh_FOUND)
message(STATUS "Found libssh ${libssh_VERSION}")
# Use imported target for include and library paths.
list(APPEND CURL_LIBS ssh)
set(USE_LIBSSH ON)
- set(HAVE_LIBSSH_LIBSSH_H 1)
endif()
endif()
@@ -816,14 +838,15 @@ if(CURL_USE_GSSAPI)
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 DEFINED HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+ 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)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+ endif()
if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE)
set(HAVE_OLD_GSSMIT ON)
endif()
- unset(CMAKE_REQUIRED_LIBRARIES)
-
endif()
include_directories(${GSS_INCLUDE_DIR})
@@ -935,7 +958,6 @@ if(NOT UNIX)
check_include_file_concat("wincrypt.h" HAVE_WINCRYPT_H)
endif()
-check_include_file_concat("stdio.h" HAVE_STDIO_H)
check_include_file_concat("inttypes.h" HAVE_INTTYPES_H)
check_include_file_concat("sys/filio.h" HAVE_SYS_FILIO_H)
check_include_file_concat("sys/ioctl.h" HAVE_SYS_IOCTL_H)
@@ -948,11 +970,9 @@ check_include_file_concat("sys/sockio.h" HAVE_SYS_SOCKIO_H)
check_include_file_concat("sys/stat.h" HAVE_SYS_STAT_H)
check_include_file_concat("sys/time.h" HAVE_SYS_TIME_H)
check_include_file_concat("sys/types.h" HAVE_SYS_TYPES_H)
-check_include_file_concat("sys/uio.h" HAVE_SYS_UIO_H)
check_include_file_concat("sys/un.h" HAVE_SYS_UN_H)
check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H)
check_include_file_concat("sys/xattr.h" HAVE_SYS_XATTR_H)
-check_include_file_concat("alloca.h" HAVE_ALLOCA_H)
check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H)
check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H)
check_include_file_concat("assert.h" HAVE_ASSERT_H)
@@ -961,7 +981,6 @@ check_include_file_concat("fcntl.h" HAVE_FCNTL_H)
check_include_file_concat("idn2.h" HAVE_IDN2_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("locale.h" HAVE_LOCALE_H)
check_include_file_concat("net/if.h" HAVE_NET_IF_H)
@@ -970,15 +989,14 @@ 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("linux/tcp.h" HAVE_LINUX_TCP_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)
check_include_file_concat("setjmp.h" HAVE_SETJMP_H)
check_include_file_concat("signal.h" HAVE_SIGNAL_H)
check_include_file_concat("ssl.h" HAVE_SSL_H)
+check_include_file_concat("stdatomic.h" HAVE_STDATOMIC_H)
check_include_file_concat("stdbool.h" HAVE_STDBOOL_H)
check_include_file_concat("stdint.h" HAVE_STDINT_H)
-check_include_file_concat("stdio.h" HAVE_STDIO_H)
check_include_file_concat("stdlib.h" HAVE_STDLIB_H)
check_include_file_concat("string.h" HAVE_STRING_H)
check_include_file_concat("strings.h" HAVE_STRINGS_H)
@@ -988,26 +1006,18 @@ check_include_file_concat("termios.h" HAVE_TERMIOS_H)
check_include_file_concat("time.h" HAVE_TIME_H)
check_include_file_concat("unistd.h" HAVE_UNISTD_H)
check_include_file_concat("utime.h" HAVE_UTIME_H)
-check_include_file_concat("x509.h" HAVE_X509_H)
check_include_file_concat("process.h" HAVE_PROCESS_H)
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("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_type_size(size_t SIZEOF_SIZE_T)
check_type_size(ssize_t SIZEOF_SSIZE_T)
check_type_size("long long" SIZEOF_LONG_LONG)
check_type_size("long" SIZEOF_LONG)
-check_type_size("short" SIZEOF_SHORT)
check_type_size("int" SIZEOF_INT)
check_type_size("__int64" SIZEOF___INT64)
-check_type_size("long double" SIZEOF_LONG_DOUBLE)
check_type_size("time_t" SIZEOF_TIME_T)
if(NOT HAVE_SIZEOF_SSIZE_T)
if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
@@ -1021,11 +1031,12 @@ endif()
if(HAVE_SIZEOF_LONG_LONG)
set(HAVE_LONGLONG 1)
- set(HAVE_LL 1)
endif()
-find_file(RANDOM_FILE urandom /dev)
-mark_as_advanced(RANDOM_FILE)
+if(NOT CMAKE_CROSSCOMPILING)
+ find_file(RANDOM_FILE urandom /dev)
+ mark_as_advanced(RANDOM_FILE)
+endif()
# Check for some functions that are used
if(HAVE_LIBWS2_32)
@@ -1034,57 +1045,46 @@ elseif(HAVE_LIBSOCKET)
set(CMAKE_REQUIRED_LIBRARIES socket)
endif()
+check_symbol_exists(fchmod "${CURL_INCLUDES}" HAVE_FCHMOD)
check_symbol_exists(basename "${CURL_INCLUDES}" HAVE_BASENAME)
check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET)
+check_symbol_exists(socketpair "${CURL_INCLUDES}" HAVE_SOCKETPAIR)
+check_symbol_exists(recv "${CURL_INCLUDES}" HAVE_RECV)
+check_symbol_exists(send "${CURL_INCLUDES}" HAVE_SEND)
check_symbol_exists(select "${CURL_INCLUDES}" HAVE_SELECT)
-check_symbol_exists(poll "${CURL_INCLUDES}" HAVE_POLL)
check_symbol_exists(strdup "${CURL_INCLUDES}" HAVE_STRDUP)
-check_symbol_exists(strstr "${CURL_INCLUDES}" HAVE_STRSTR)
check_symbol_exists(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R)
-check_symbol_exists(strftime "${CURL_INCLUDES}" HAVE_STRFTIME)
-check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME)
check_symbol_exists(strcasecmp "${CURL_INCLUDES}" HAVE_STRCASECMP)
check_symbol_exists(stricmp "${CURL_INCLUDES}" HAVE_STRICMP)
check_symbol_exists(strcmpi "${CURL_INCLUDES}" HAVE_STRCMPI)
-check_symbol_exists(strncmpi "${CURL_INCLUDES}" HAVE_STRNCMPI)
check_symbol_exists(alarm "${CURL_INCLUDES}" HAVE_ALARM)
-if(NOT HAVE_STRNCMPI)
- set(HAVE_STRCMPI)
-endif()
check_symbol_exists(getppid "${CURL_INCLUDES}" HAVE_GETPPID)
check_symbol_exists(utimes "${CURL_INCLUDES}" HAVE_UTIMES)
check_symbol_exists(gettimeofday "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
-check_symbol_exists(inet_addr "${CURL_INCLUDES}" HAVE_INET_ADDR)
check_symbol_exists(closesocket "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
check_symbol_exists(sigsetjmp "${CURL_INCLUDES}" HAVE_SIGSETJMP)
check_symbol_exists(getpass_r "${CURL_INCLUDES}" HAVE_GETPASS_R)
check_symbol_exists(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID)
check_symbol_exists(getpwuid_r "${CURL_INCLUDES}" HAVE_GETPWUID_R)
check_symbol_exists(geteuid "${CURL_INCLUDES}" HAVE_GETEUID)
-check_symbol_exists(usleep "${CURL_INCLUDES}" HAVE_USLEEP)
check_symbol_exists(utime "${CURL_INCLUDES}" HAVE_UTIME)
check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R)
-check_symbol_exists(localtime_r "${CURL_INCLUDES}" HAVE_LOCALTIME_R)
-check_symbol_exists(gethostbyname "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME)
check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R)
-check_symbol_exists(signal "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC)
-check_symbol_exists(SIGALRM "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO)
-if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
- set(HAVE_SIGNAL 1)
-endif()
-check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME)
+check_symbol_exists(signal "${CURL_INCLUDES}" HAVE_SIGNAL)
check_symbol_exists(strtoll "${CURL_INCLUDES}" HAVE_STRTOLL)
check_symbol_exists(_strtoi64 "${CURL_INCLUDES}" HAVE__STRTOI64)
check_symbol_exists(strerror_r "${CURL_INCLUDES}" HAVE_STRERROR_R)
check_symbol_exists(siginterrupt "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
check_symbol_exists(getaddrinfo "${CURL_INCLUDES}" HAVE_GETADDRINFO)
+if(NOT HAVE_GETADDRINFO)
+ set(HAVE_GETADDRINFO_THREADSAFE OFF)
+endif()
check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
check_symbol_exists(pipe "${CURL_INCLUDES}" HAVE_PIPE)
check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE)
-check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
check_symbol_exists(getpeername "${CURL_INCLUDES}" HAVE_GETPEERNAME)
check_symbol_exists(getsockname "${CURL_INCLUDES}" HAVE_GETSOCKNAME)
check_symbol_exists(if_nametoindex "${CURL_INCLUDES}" HAVE_IF_NAMETOINDEX)
@@ -1092,10 +1092,16 @@ check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
check_symbol_exists(setmode "${CURL_INCLUDES}" HAVE_SETMODE)
check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT)
-check_symbol_exists(fcntl "${CURL_INCLUDES}" HAVE_FCNTL)
-check_symbol_exists(ioctl "${CURL_INCLUDES}" HAVE_IOCTL)
-check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
+
+if(NOT MSVC OR (MSVC_VERSION GREATER_EQUAL 1900))
+ # earlier MSVC compilers had faulty snprintf implementations
+ check_symbol_exists(snprintf "${CURL_INCLUDES}" HAVE_SNPRINTF)
+endif()
check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME)
+check_symbol_exists(inet_ntop "${CURL_INCLUDES}" HAVE_INET_NTOP)
+if(MSVC AND (MSVC_VERSION LESS_EQUAL 1600))
+ set(HAVE_INET_NTOP OFF)
+endif()
check_symbol_exists(inet_pton "${CURL_INCLUDES}" HAVE_INET_PTON)
check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
@@ -1145,7 +1151,6 @@ foreach(CURL_TEST
HAVE_IOCTL_FIONBIO
HAVE_IOCTL_SIOCGIFADDR
HAVE_SETSOCKOPT_SO_NONBLOCK
- HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
TIME_WITH_SYS_TIME
HAVE_O_NONBLOCK
HAVE_GETHOSTBYNAME_R_3
@@ -1157,10 +1162,10 @@ foreach(CURL_TEST
HAVE_IN_ADDR_T
HAVE_BOOL_T
STDC_HEADERS
- HAVE_GETADDRINFO
HAVE_FILE_OFFSET_BITS
HAVE_VARIADIC_MACROS_C99
HAVE_VARIADIC_MACROS_GCC
+ HAVE_ATOMIC
)
curl_internal_test(${CURL_TEST})
endforeach()
@@ -1177,8 +1182,30 @@ set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h")
check_type_size("curl_off_t" SIZEOF_CURL_OFF_T)
set(CMAKE_EXTRA_INCLUDE_FILES "")
+if(WIN32)
+ # detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT
+ curl_internal_test(HAVE_WIN32_WINNT)
+ if(HAVE_WIN32_WINNT)
+ string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" OUTPUT "${OUTPUT}")
+ string(REGEX REPLACE ".*_WIN32_WINNT=" "" HAVE_WIN32_WINNT "${OUTPUT}")
+ message(STATUS "Found _WIN32_WINNT=${HAVE_WIN32_WINNT}")
+ endif()
+ # avoid storing HAVE_WIN32_WINNT in CMake cache
+ unset(HAVE_WIN32_WINNT CACHE)
+endif()
+
set(CMAKE_REQUIRED_FLAGS)
+option(ENABLE_WEBSOCKETS "Set to ON to enable EXPERIMENTAL websockets" OFF)
+
+if(ENABLE_WEBSOCKETS)
+ if(${SIZEOF_CURL_OFF_T} GREATER "4")
+ set(USE_WEBSOCKETS ON)
+ else()
+ message(WARNING "curl_off_t is too small to enable WebSockets")
+ endif()
+endif()
+
foreach(CURL_TEST
HAVE_GLIBC_STRERROR_R
HAVE_POSIX_STRERROR_R
@@ -1222,18 +1249,6 @@ if(NOT HAVE_IN_ADDR_T)
set(in_addr_t "unsigned long")
endif()
-# Fix libz / zlib.h
-
-if(NOT CURL_SPECIAL_LIBZ)
- if(NOT HAVE_LIBZ)
- set(HAVE_ZLIB_H 0)
- endif()
-
- if(NOT HAVE_ZLIB_H)
- set(HAVE_LIBZ 0)
- endif()
-endif()
-
# Check for nonblocking
set(HAVE_DISABLED_NONBLOCKING 1)
if(HAVE_FIONBIO OR
@@ -1293,6 +1308,25 @@ if(WIN32)
if(USE_WIN32_CRYPTO OR USE_SCHANNEL)
list(APPEND CURL_LIBS "advapi32" "crypt32")
endif()
+
+ # Matching logic used for Curl_win32_random()
+ if(MINGW)
+ check_c_source_compiles("
+ #include <_mingw.h>
+ #if defined(__MINGW64_VERSION_MAJOR)
+ #error
+ #endif
+ int main(void) {
+ return 0;
+ }"
+ HAVE_MINGW_ORIGINAL)
+ endif()
+
+ if(NOT HAVE_MINGW_ORIGINAL)
+ list(APPEND CURL_LIBS "bcrypt")
+ else()
+ set(HAVE_FTRUNCATE OFF)
+ endif()
endif()
if(MSVC)
@@ -1433,6 +1467,9 @@ _add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE)
_add_if("MultiSSL" CURL_WITH_MULTI_SSL)
_add_if("HTTPS-proxy" SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS OR USE_NSS))
_add_if("unicode" ENABLE_UNICODE)
+_add_if("threadsafe" HAVE_ATOMIC OR (WIN32 AND
+ HAVE_WIN32_WINNT GREATER_EQUAL 0x600))
+_add_if("PSL" USE_LIBPSL)
string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
message(STATUS "Enabled features: ${SUPPORT_FEATURES}")
@@ -1469,6 +1506,8 @@ _add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH)
_add_if("RTSP" NOT CURL_DISABLE_RTSP)
_add_if("RTMP" USE_LIBRTMP)
_add_if("MQTT" NOT CURL_DISABLE_MQTT)
+_add_if("WS" USE_WEBSOCKETS)
+_add_if("WSS" USE_WEBSOCKETS)
if(_items)
list(SORT _items)
endif()
@@ -1602,13 +1641,13 @@ if(MSVC_VERSION EQUAL 1600)
endif()
endif()
-if(NOT TARGET uninstall)
+if(NOT TARGET curl_uninstall)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake
IMMEDIATE @ONLY)
- add_custom_target(uninstall
+ add_custom_target(curl_uninstall
COMMAND ${CMAKE_COMMAND} -P
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake)
endif()
diff --git a/COPYING b/COPYING
index 48f144758..90f05adf2 100644
--- a/COPYING
+++ b/COPYING
@@ -1,6 +1,6 @@
COPYRIGHT AND PERMISSION NOTICE
-Copyright (c) 1996 - 2021, Daniel Stenberg, <daniel@haxx.se>, and many
+Copyright (c) 1996 - 2022, Daniel Stenberg, <daniel@haxx.se>, and many
contributors, see the THANKS file.
All rights reserved.
diff --git a/MacOSX-Framework b/MacOSX-Framework
index 3c8452774..240eb845e 100755
--- a/MacOSX-Framework
+++ b/MacOSX-Framework
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# This script performs all of the steps needed to build a
# universal binary libcurl.framework for Mac OS X 10.4 or greater.
@@ -81,12 +83,12 @@ if test $PPC64_NEEDED -gt 0
then
SDK64=10.5
ARCHES64='-arch x86_64 -arch ppc64'
- SDK64=`ls $SDK_PATH|grep 10.5|head -1`
+ SDK64=`ls $SDK_PATH | grep "10\.5" | head -1`
else
ARCHES64='-arch x86_64'
#We "know" that 10.4 and earlier do not support 64bit
- OLD_SDK64=`ls $SDK_PATH|egrep -v "10.[0-4]"|head -1`
- NEW_SDK64=`ls -r $SDK_PATH|egrep -v "10.[0-4][^0-9]" | head -1`
+ OLD_SDK64=`ls $SDK_PATH | grep -v "10\.[0-4]" | head -1`
+ NEW_SDK64=`ls -r $SDK_PATH | grep -v "10\.[0-4][^0-9]" | head -1`
if test $USE_OLD -gt 0
then
SDK64=$OLD_SDK64
@@ -116,7 +118,7 @@ if test ! -z $SDK32; then
mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Resources
cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl
install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl
- /usr/bin/sed -e "s/7\.12\.3/$VERSION/" lib/libcurl.plist >libcurl.framework/${FRAMEWORK_VERSION}/Resources/Info.plist
+ cp lib/libcurl.plist libcurl.framework/${FRAMEWORK_VERSION}/Resources/Info.plist
mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
cp include/curl/*.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
pushd libcurl.framework
diff --git a/Makefile b/Makefile
index 1a531c153..ab5a9b5f3 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
all:
@@ -73,31 +75,6 @@ amiga:
cd ./lib && make -f makefile.amiga
cd ./src && make -f makefile.amiga
-netware:
- $(MAKE) -C lib -f Makefile.netware
- $(MAKE) -C src -f Makefile.netware
-
-netware-clean:
- $(MAKE) -C lib -f Makefile.netware clean
- $(MAKE) -C src -f Makefile.netware clean
- $(MAKE) -C docs/examples -f Makefile.netware clean
-
-netware-vclean netware-distclean:
- $(MAKE) -C lib -f Makefile.netware vclean
- $(MAKE) -C src -f Makefile.netware vclean
- $(MAKE) -C docs/examples -f Makefile.netware vclean
-
-netware-install:
- $(MAKE) -C lib -f Makefile.netware install
- $(MAKE) -C src -f Makefile.netware install
-
-netware-examples-%:
- $(MAKE) -C docs/examples -f Makefile.netware CFG=$@
-
-netware-%:
- $(MAKE) -C lib -f Makefile.netware CFG=$@
- $(MAKE) -C src -f Makefile.netware CFG=$@
-
unix: all
unix-ssl: ssl
@@ -106,7 +83,7 @@ linux: all
linux-ssl: ssl
-ca-bundle: lib/mk-ca-bundle.pl
+ca-bundle: scripts/mk-ca-bundle.pl
@echo "generate a fresh ca-bundle.crt"
@perl $< -b -l -u lib/ca-bundle.crt
diff --git a/Makefile.am b/Makefile.am
index 3e55230ee..40771ed38 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign
@@ -34,8 +36,10 @@ CMAKE_DIST = \
CMake/FindBrotli.cmake \
CMake/FindCARES.cmake \
CMake/FindGSS.cmake \
+ CMake/FindLibPSL.cmake \
CMake/FindLibSSH2.cmake \
CMake/FindMbedTLS.cmake \
+ CMake/FindMSH3.cmake \
CMake/FindNGHTTP2.cmake \
CMake/FindNGHTTP3.cmake \
CMake/FindNGTCP2.cmake \
@@ -49,41 +53,6 @@ CMAKE_DIST = \
CMake/Utilities.cmake \
CMakeLists.txt
-VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
-VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
-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.dist
-VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
-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.dist
-VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
-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.dist
-VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
-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.dist
-VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
-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.dist
VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
@@ -112,59 +81,56 @@ VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
-VC15_LIBTMPL = projects/Windows/VC15/lib/libcurl.tmpl
-VC15_LIBVCXPROJ = projects/Windows/VC15/lib/libcurl.vcxproj.dist
-VC15_LIBVCXPROJ_DEPS = $(VC15_LIBTMPL) Makefile.am lib/Makefile.inc
-VC15_SRCTMPL = projects/Windows/VC15/src/curl.tmpl
-VC15_SRCVCXPROJ = projects/Windows/VC15/src/curl.vcxproj.dist
-VC15_SRCVCXPROJ_DEPS = $(VC15_SRCTMPL) Makefile.am src/Makefile.inc
-
-VC_DIST = projects/README \
- projects/build-openssl.bat \
- projects/build-wolfssl.bat \
- projects/checksrc.bat \
- projects/Windows/VC6/curl-all.dsw \
- projects/Windows/VC6/lib/libcurl.dsw \
- projects/Windows/VC6/src/curl.dsw \
- projects/Windows/VC7/curl-all.sln \
- projects/Windows/VC7/lib/libcurl.sln \
- projects/Windows/VC7/src/curl.sln \
- projects/Windows/VC7.1/curl-all.sln \
- projects/Windows/VC7.1/lib/libcurl.sln \
- projects/Windows/VC7.1/src/curl.sln \
- projects/Windows/VC8/curl-all.sln \
- projects/Windows/VC8/lib/libcurl.sln \
- projects/Windows/VC8/src/curl.sln \
- projects/Windows/VC9/curl-all.sln \
- projects/Windows/VC9/lib/libcurl.sln \
- projects/Windows/VC9/src/curl.sln \
- projects/Windows/VC10/curl-all.sln \
- projects/Windows/VC10/lib/libcurl.sln \
- projects/Windows/VC10/lib/libcurl.vcxproj.filters \
- projects/Windows/VC10/src/curl.sln \
- projects/Windows/VC10/src/curl.vcxproj.filters \
- projects/Windows/VC11/curl-all.sln \
- projects/Windows/VC11/lib/libcurl.sln \
- projects/Windows/VC11/lib/libcurl.vcxproj.filters \
- projects/Windows/VC11/src/curl.sln \
- projects/Windows/VC11/src/curl.vcxproj.filters \
- projects/Windows/VC12/curl-all.sln \
- projects/Windows/VC12/lib/libcurl.sln \
- projects/Windows/VC12/lib/libcurl.vcxproj.filters \
- projects/Windows/VC12/src/curl.sln \
- projects/Windows/VC12/src/curl.vcxproj.filters \
- projects/Windows/VC14/curl-all.sln \
- projects/Windows/VC14/lib/libcurl.sln \
- projects/Windows/VC14/lib/libcurl.vcxproj.filters \
- projects/Windows/VC14/src/curl.sln \
- projects/Windows/VC14/src/curl.vcxproj.filters \
- projects/Windows/VC15/curl-all.sln \
- projects/Windows/VC15/lib/libcurl.sln \
- projects/Windows/VC15/lib/libcurl.vcxproj.filters \
- projects/Windows/VC15/src/curl.sln \
- projects/Windows/VC15/src/curl.vcxproj.filters \
- projects/generate.bat \
- projects/wolfssl_options.h \
+VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl
+VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist
+VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl
+VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist
+VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl
+VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist
+VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl
+VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist
+VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC_DIST = projects/README.md \
+ projects/build-openssl.bat \
+ projects/build-wolfssl.bat \
+ projects/checksrc.bat \
+ projects/Windows/VC10/curl-all.sln \
+ projects/Windows/VC10/lib/libcurl.sln \
+ projects/Windows/VC10/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC10/src/curl.sln \
+ projects/Windows/VC10/src/curl.vcxproj.filters \
+ projects/Windows/VC11/curl-all.sln \
+ projects/Windows/VC11/lib/libcurl.sln \
+ projects/Windows/VC11/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC11/src/curl.sln \
+ projects/Windows/VC11/src/curl.vcxproj.filters \
+ projects/Windows/VC12/curl-all.sln \
+ projects/Windows/VC12/lib/libcurl.sln \
+ projects/Windows/VC12/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC12/src/curl.sln \
+ projects/Windows/VC12/src/curl.vcxproj.filters \
+ projects/Windows/VC14/curl-all.sln \
+ projects/Windows/VC14/lib/libcurl.sln \
+ projects/Windows/VC14/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14/src/curl.sln \
+ projects/Windows/VC14/src/curl.vcxproj.filters \
+ projects/Windows/VC14.10/curl-all.sln \
+ projects/Windows/VC14.10/lib/libcurl.sln \
+ projects/Windows/VC14.10/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14.10/src/curl.sln \
+ projects/Windows/VC14.10/src/curl.vcxproj.filters \
+ projects/Windows/VC14.30/curl-all.sln \
+ projects/Windows/VC14.30/lib/libcurl.sln \
+ projects/Windows/VC14.30/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14.30/src/curl.sln \
+ projects/Windows/VC14.30/src/curl.vcxproj.filters \
+ projects/generate.bat \
+ projects/wolfssl_options.h \
projects/wolfssl_override.props
WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
@@ -180,17 +146,14 @@ PLAN9_DIST = plan9/include/mkfile \
plan9/src/mkfile.inc \
plan9/src/mkfile
-EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
- scripts/updatemanpages.pl $(CMAKE_DIST) \
- $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) \
- lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
+EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST) \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat
-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) \
- $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) $(VC15_LIBVCXPROJ) $(VC15_SRCVCXPROJ)
+CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ) \
+ $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \
+ $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \
+ $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ)
bin_SCRIPTS = curl-config
@@ -318,13 +281,13 @@ uninstall-hook:
(cd docs && $(MAKE) uninstall)
(cd docs/libcurl && $(MAKE) uninstall)
-ca-bundle: lib/mk-ca-bundle.pl
+ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl
@echo "generating a fresh ca-bundle.crt"
- @perl $< -b -l -u lib/ca-bundle.crt
+ @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt
-ca-firefox: lib/firefox-db2pem.sh
+ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh
@echo "generating a fresh ca-bundle.crt"
- ./lib/firefox-db2pem.sh lib/ca-bundle.crt
+ $(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt
checksrc:
(cd lib && $(MAKE) checksrc)
@@ -336,13 +299,11 @@ checksrc:
.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) \
+vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
$(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
- $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
+ $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \
+ $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS)
@(win32_lib_srcs='$(LIB_CFILES)'; \
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
win32_lib_rc='$(LIB_RCFILES)'; \
@@ -503,104 +464,8 @@ function gen_element(type, dir, file)\
printf("%s\r\n", $$0);\
}';\
\
- 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_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
- -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
- -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
- -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
- -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; }; \
- \
- 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; }; \
- \
- 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_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
- -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
- -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
- -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
- -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; }; \
- \
- 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; }; \
- \
- 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_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
- -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
- -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
- -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
- -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 "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_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
- -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
- -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
- -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
- -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 \
+ 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" \
@@ -612,18 +477,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-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; }; \
+ "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC9_SRCVCPROJ)'"; \
- awk -v proj_type=vcproj2 \
+ 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)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC10_LIBVCXPROJ)'"; \
+ echo "generating '$(VC11_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -636,18 +501,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-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; }; \
+ "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC10_SRCVCXPROJ)'"; \
+ 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)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC11_LIBVCXPROJ)'"; \
+ echo "generating '$(VC12_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -660,18 +525,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-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; }; \
+ "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC11_SRCVCXPROJ)'"; \
+ 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)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC12_LIBVCXPROJ)'"; \
+ echo "generating '$(VC14_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -684,18 +549,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-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; }; \
+ "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC12_SRCVCXPROJ)'"; \
+ echo "generating '$(VC14_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; }; \
+ "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC14_LIBVCXPROJ)'"; \
+ echo "generating '$(VC14_10_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -708,18 +573,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC14_SRCVCXPROJ)'"; \
+ echo "generating '$(VC14_10_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)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC15_LIBVCXPROJ)'"; \
+ echo "generating '$(VC14_30_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -732,16 +597,16 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC15_SRCVCXPROJ)'"; \
+ echo "generating '$(VC14_30_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)/$(VC15_SRCTMPL) > $(VC15_SRCVCXPROJ) || { exit 1; };)
+ "$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };)
tidy:
(cd src && $(MAKE) tidy)
diff --git a/Makefile.in b/Makefile.in
index bd11ecf7c..158bdfc4f 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#***************************************************************************
@@ -43,7 +45,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -56,6 +58,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#***************************************************************************
@@ -65,7 +69,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -78,12 +82,13 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# ./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
-# this idea (posted to the libcurl list by Adam Kellas):
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
# CSRC1 = file1.c file2.c file3.c
# CSRC2 = file4.c file5.c file6.c
# CSOURCES = $(CSRC1) $(CSRC2)
@@ -165,15 +170,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -376,6 +379,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -393,6 +397,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -450,6 +455,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -468,12 +474,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -540,7 +547,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -558,8 +564,10 @@ CMAKE_DIST = \
CMake/FindBrotli.cmake \
CMake/FindCARES.cmake \
CMake/FindGSS.cmake \
+ CMake/FindLibPSL.cmake \
CMake/FindLibSSH2.cmake \
CMake/FindMbedTLS.cmake \
+ CMake/FindMSH3.cmake \
CMake/FindNGHTTP2.cmake \
CMake/FindNGHTTP3.cmake \
CMake/FindNGTCP2.cmake \
@@ -573,36 +581,6 @@ CMAKE_DIST = \
CMake/Utilities.cmake \
CMakeLists.txt
-VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
-VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
-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.dist
-VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
-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.dist
-VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
-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.dist
-VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
-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.dist
-VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
-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.dist
VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
@@ -627,58 +605,54 @@ VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
-VC15_LIBTMPL = projects/Windows/VC15/lib/libcurl.tmpl
-VC15_LIBVCXPROJ = projects/Windows/VC15/lib/libcurl.vcxproj.dist
-VC15_LIBVCXPROJ_DEPS = $(VC15_LIBTMPL) Makefile.am lib/Makefile.inc
-VC15_SRCTMPL = projects/Windows/VC15/src/curl.tmpl
-VC15_SRCVCXPROJ = projects/Windows/VC15/src/curl.vcxproj.dist
-VC15_SRCVCXPROJ_DEPS = $(VC15_SRCTMPL) Makefile.am src/Makefile.inc
-VC_DIST = projects/README \
- projects/build-openssl.bat \
- projects/build-wolfssl.bat \
- projects/checksrc.bat \
- projects/Windows/VC6/curl-all.dsw \
- projects/Windows/VC6/lib/libcurl.dsw \
- projects/Windows/VC6/src/curl.dsw \
- projects/Windows/VC7/curl-all.sln \
- projects/Windows/VC7/lib/libcurl.sln \
- projects/Windows/VC7/src/curl.sln \
- projects/Windows/VC7.1/curl-all.sln \
- projects/Windows/VC7.1/lib/libcurl.sln \
- projects/Windows/VC7.1/src/curl.sln \
- projects/Windows/VC8/curl-all.sln \
- projects/Windows/VC8/lib/libcurl.sln \
- projects/Windows/VC8/src/curl.sln \
- projects/Windows/VC9/curl-all.sln \
- projects/Windows/VC9/lib/libcurl.sln \
- projects/Windows/VC9/src/curl.sln \
- projects/Windows/VC10/curl-all.sln \
- projects/Windows/VC10/lib/libcurl.sln \
- projects/Windows/VC10/lib/libcurl.vcxproj.filters \
- projects/Windows/VC10/src/curl.sln \
- projects/Windows/VC10/src/curl.vcxproj.filters \
- projects/Windows/VC11/curl-all.sln \
- projects/Windows/VC11/lib/libcurl.sln \
- projects/Windows/VC11/lib/libcurl.vcxproj.filters \
- projects/Windows/VC11/src/curl.sln \
- projects/Windows/VC11/src/curl.vcxproj.filters \
- projects/Windows/VC12/curl-all.sln \
- projects/Windows/VC12/lib/libcurl.sln \
- projects/Windows/VC12/lib/libcurl.vcxproj.filters \
- projects/Windows/VC12/src/curl.sln \
- projects/Windows/VC12/src/curl.vcxproj.filters \
- projects/Windows/VC14/curl-all.sln \
- projects/Windows/VC14/lib/libcurl.sln \
- projects/Windows/VC14/lib/libcurl.vcxproj.filters \
- projects/Windows/VC14/src/curl.sln \
- projects/Windows/VC14/src/curl.vcxproj.filters \
- projects/Windows/VC15/curl-all.sln \
- projects/Windows/VC15/lib/libcurl.sln \
- projects/Windows/VC15/lib/libcurl.vcxproj.filters \
- projects/Windows/VC15/src/curl.sln \
- projects/Windows/VC15/src/curl.vcxproj.filters \
- projects/generate.bat \
- projects/wolfssl_options.h \
+VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl
+VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist
+VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl
+VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist
+VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc
+VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl
+VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist
+VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl
+VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist
+VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc
+VC_DIST = projects/README.md \
+ projects/build-openssl.bat \
+ projects/build-wolfssl.bat \
+ projects/checksrc.bat \
+ projects/Windows/VC10/curl-all.sln \
+ projects/Windows/VC10/lib/libcurl.sln \
+ projects/Windows/VC10/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC10/src/curl.sln \
+ projects/Windows/VC10/src/curl.vcxproj.filters \
+ projects/Windows/VC11/curl-all.sln \
+ projects/Windows/VC11/lib/libcurl.sln \
+ projects/Windows/VC11/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC11/src/curl.sln \
+ projects/Windows/VC11/src/curl.vcxproj.filters \
+ projects/Windows/VC12/curl-all.sln \
+ projects/Windows/VC12/lib/libcurl.sln \
+ projects/Windows/VC12/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC12/src/curl.sln \
+ projects/Windows/VC12/src/curl.vcxproj.filters \
+ projects/Windows/VC14/curl-all.sln \
+ projects/Windows/VC14/lib/libcurl.sln \
+ projects/Windows/VC14/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14/src/curl.sln \
+ projects/Windows/VC14/src/curl.vcxproj.filters \
+ projects/Windows/VC14.10/curl-all.sln \
+ projects/Windows/VC14.10/lib/libcurl.sln \
+ projects/Windows/VC14.10/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14.10/src/curl.sln \
+ projects/Windows/VC14.10/src/curl.vcxproj.filters \
+ projects/Windows/VC14.30/curl-all.sln \
+ projects/Windows/VC14.30/lib/libcurl.sln \
+ projects/Windows/VC14.30/lib/libcurl.vcxproj.filters \
+ projects/Windows/VC14.30/src/curl.sln \
+ projects/Windows/VC14.30/src/curl.vcxproj.filters \
+ projects/generate.bat \
+ projects/wolfssl_options.h \
projects/wolfssl_override.props
WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
@@ -694,17 +668,14 @@ PLAN9_DIST = plan9/include/mkfile \
plan9/src/mkfile.inc \
plan9/src/mkfile
-EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
- scripts/updatemanpages.pl $(CMAKE_DIST) \
- $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) \
- lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
+EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST) \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat
-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) \
- $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) $(VC15_LIBVCXPROJ) $(VC15_SRCVCXPROJ)
+CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ) \
+ $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \
+ $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \
+ $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ)
bin_SCRIPTS = curl-config
SUBDIRS = lib src
@@ -735,10 +706,10 @@ LIB_VTLS_CFILES = \
vtls/bearssl.c \
vtls/gskit.c \
vtls/gtls.c \
+ vtls/hostcheck.c \
vtls/keylog.c \
vtls/mbedtls.c \
vtls/mbedtls_threadlock.c \
- vtls/mesalink.c \
vtls/nss.c \
vtls/openssl.c \
vtls/rustls.c \
@@ -746,30 +717,34 @@ LIB_VTLS_CFILES = \
vtls/schannel_verify.c \
vtls/sectransp.c \
vtls/vtls.c \
- vtls/wolfssl.c
+ vtls/wolfssl.c \
+ vtls/x509asn1.c
LIB_VTLS_HFILES = \
vtls/bearssl.h \
vtls/gskit.h \
vtls/gtls.h \
+ vtls/hostcheck.h \
vtls/keylog.h \
vtls/mbedtls.h \
vtls/mbedtls_threadlock.h \
- vtls/mesalink.h \
vtls/nssg.h \
vtls/openssl.h \
vtls/rustls.h \
vtls/schannel.h \
vtls/sectransp.h \
vtls/vtls.h \
- vtls/wolfssl.h
+ vtls/wolfssl.h \
+ vtls/x509asn1.h
LIB_VQUIC_CFILES = \
+ vquic/msh3.c \
vquic/ngtcp2.c \
vquic/quiche.c \
vquic/vquic.c
LIB_VQUIC_HFILES = \
+ vquic/msh3.h \
vquic/ngtcp2.h \
vquic/quiche.h \
vquic/vquic.h
@@ -795,7 +770,6 @@ LIB_CFILES = \
content_encoding.c \
cookie.c \
curl_addrinfo.c \
- curl_ctype.c \
curl_des.c \
curl_endian.c \
curl_fnmatch.c \
@@ -814,7 +788,6 @@ LIB_CFILES = \
curl_threads.c \
dict.c \
doh.c \
- dotdot.c \
dynbuf.c \
easy.c \
easygetopt.c \
@@ -822,16 +795,18 @@ LIB_CFILES = \
escape.c \
file.c \
fileinfo.c \
+ fopen.c \
formdata.c \
ftp.c \
ftplistparser.c \
getenv.c \
getinfo.c \
gopher.c \
+ h2h3.c \
hash.c \
+ headers.c \
hmac.c \
hostasyn.c \
- hostcheck.c \
hostip.c \
hostip4.c \
hostip6.c \
@@ -861,8 +836,8 @@ LIB_CFILES = \
mqtt.c \
multi.c \
netrc.c \
- non-ascii.c \
nonblock.c \
+ noproxy.c \
openldap.c \
parsedate.c \
pingpong.c \
@@ -894,6 +869,7 @@ LIB_CFILES = \
system_win32.c \
telnet.c \
tftp.c \
+ timediff.c \
timeval.c \
transfer.c \
url.c \
@@ -902,7 +878,7 @@ LIB_CFILES = \
version_win32.c \
warnless.c \
wildcard.c \
- x509asn1.c
+ ws.c
LIB_HFILES = \
altsvc.h \
@@ -947,20 +923,23 @@ LIB_HFILES = \
curlx.h \
dict.h \
doh.h \
- dotdot.h \
dynbuf.h \
+ easy_lock.h \
easyif.h \
easyoptions.h \
escape.h \
file.h \
fileinfo.h \
+ fopen.h \
formdata.h \
+ functypes.h \
ftp.h \
ftplistparser.h \
getinfo.h \
gopher.h \
+ h2h3.h \
hash.h \
- hostcheck.h \
+ headers.h \
hostip.h \
hsts.h \
http.h \
@@ -982,8 +961,8 @@ LIB_HFILES = \
multihandle.h \
multiif.h \
netrc.h \
- non-ascii.h \
nonblock.h \
+ noproxy.h \
parsedate.h \
pingpong.h \
pop3.h \
@@ -1015,6 +994,7 @@ LIB_HFILES = \
system_win32.h \
telnet.h \
tftp.h \
+ timediff.h \
timeval.h \
transfer.h \
url.h \
@@ -1023,7 +1003,7 @@ LIB_HFILES = \
version_win32.h \
warnless.h \
wildcard.h \
- x509asn1.h
+ ws.h
LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
@@ -1037,9 +1017,9 @@ HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
# the official API, but we re-use the code here to avoid duplication.
CURLX_CFILES = \
../lib/strtoofft.c \
+ ../lib/timediff.c \
../lib/nonblock.c \
../lib/warnless.c \
- ../lib/curl_ctype.c \
../lib/curl_multibyte.c \
../lib/version_win32.c \
../lib/dynbuf.c
@@ -1047,6 +1027,7 @@ CURLX_CFILES = \
CURLX_HFILES = \
../lib/curl_setup.h \
../lib/strtoofft.h \
+ ../lib/timediff.h \
../lib/nonblock.h \
../lib/warnless.h \
../lib/curl_ctype.h \
@@ -1065,7 +1046,6 @@ CURL_CFILES = \
tool_cb_see.c \
tool_cb_wrt.c \
tool_cfgable.c \
- tool_convert.c \
tool_dirhie.c \
tool_doswin.c \
tool_easysrc.c \
@@ -1108,7 +1088,6 @@ CURL_HFILES = \
tool_cb_see.h \
tool_cb_wrt.h \
tool_cfgable.h \
- tool_convert.h \
tool_dirhie.h \
tool_doswin.h \
tool_easysrc.h \
@@ -1801,13 +1780,13 @@ uninstall-hook:
(cd docs && $(MAKE) uninstall)
(cd docs/libcurl && $(MAKE) uninstall)
-ca-bundle: lib/mk-ca-bundle.pl
+ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl
@echo "generating a fresh ca-bundle.crt"
- @perl $< -b -l -u lib/ca-bundle.crt
+ @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt
-ca-firefox: lib/firefox-db2pem.sh
+ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh
@echo "generating a fresh ca-bundle.crt"
- ./lib/firefox-db2pem.sh lib/ca-bundle.crt
+ $(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt
checksrc:
(cd lib && $(MAKE) checksrc)
@@ -1819,13 +1798,11 @@ checksrc:
.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) \
+vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
$(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
- $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
+ $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \
+ $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS)
@(win32_lib_srcs='$(LIB_CFILES)'; \
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
win32_lib_rc='$(LIB_RCFILES)'; \
@@ -1986,104 +1963,8 @@ function gen_element(type, dir, file)\
printf("%s\r\n", $$0);\
}';\
\
- 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_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
- -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
- -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
- -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
- -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; }; \
- \
- 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; }; \
- \
- 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_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
- -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
- -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
- -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
- -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; }; \
- \
- 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; }; \
- \
- 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_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
- -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
- -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
- -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
- -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 "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_vauth_srcs="$$sorted_lib_vauth_srcs" \
- -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
- -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
- -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
- -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
- -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
- -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 \
+ 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" \
@@ -2095,18 +1976,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-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; }; \
+ "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC9_SRCVCPROJ)'"; \
- awk -v proj_type=vcproj2 \
+ 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)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC10_LIBVCXPROJ)'"; \
+ echo "generating '$(VC11_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2119,18 +2000,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-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; }; \
+ "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC10_SRCVCXPROJ)'"; \
+ 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)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC11_LIBVCXPROJ)'"; \
+ echo "generating '$(VC12_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2143,18 +2024,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-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; }; \
+ "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC11_SRCVCXPROJ)'"; \
+ 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)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC12_LIBVCXPROJ)'"; \
+ echo "generating '$(VC14_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2167,18 +2048,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-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; }; \
+ "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC12_SRCVCXPROJ)'"; \
+ echo "generating '$(VC14_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; }; \
+ "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC14_LIBVCXPROJ)'"; \
+ echo "generating '$(VC14_10_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2191,18 +2072,18 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC14_SRCVCXPROJ)'"; \
+ echo "generating '$(VC14_10_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)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC15_LIBVCXPROJ)'"; \
+ echo "generating '$(VC14_30_LIBVCXPROJ)'"; \
awk -v proj_type=vcxproj \
-v lib_srcs="$$sorted_lib_srcs" \
-v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2215,16 +2096,16 @@ function gen_element(type, dir, file)\
-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
- "$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
+ "$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \
\
- echo "generating '$(VC15_SRCVCXPROJ)'"; \
+ echo "generating '$(VC14_30_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)/$(VC15_SRCTMPL) > $(VC15_SRCVCXPROJ) || { exit 1; };)
+ "$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };)
tidy:
(cd src && $(MAKE) tidy)
diff --git a/README b/README
index 9705f4198..f5efbd70a 100644
--- a/README
+++ b/README
@@ -13,7 +13,7 @@ README
libcurl is the library curl is using to do its job. It is readily
available to be used by your software. Read the libcurl.3 man page to
- learn how!
+ learn how.
You find answers to the most frequent questions we get in the FAQ document.
@@ -36,7 +36,7 @@ WEBSITE
GIT
- To download the very latest source off the GIT server do this:
+ To download the latest source code off the GIT server, do this:
git clone https://github.com/curl/curl.git
@@ -44,7 +44,7 @@ GIT
SECURITY PROBLEMS
- Report suspected security problems via our HackerOne page and not in public!
+ Report suspected security problems via our HackerOne page and not in public.
https://hackerone.com/curl
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 6c9553bc6..9b70c8c86 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,264 +1,423 @@
-curl and libcurl 7.81.0
+curl and libcurl 7.86.0
- Public curl releases: 205
- Command line options: 244
- curl_easy_setopt() options: 295
- Public functions in libcurl: 86
- Contributors: 2558
+ Public curl releases: 211
+ Command line options: 248
+ curl_easy_setopt() options: 300
+ Public functions in libcurl: 91
+ Contributors: 2733
This release includes the following changes:
- o mime: use percent-escaping for multipart form field and file names [1]
+ o NPN: remove support for and use of [16]
+ o Websockets: initial support [23]
This release includes the following bugfixes:
- o asyn-ares: ares_getaddrinfo needs no happy eyeballs timer [73]
- o azure: make the "w/o HTTP/SMTP/IMAP" build disable SSL proper [12]
- o BINDINGS: add cURL client for PostgreSQL [68]
- o BINDINGS: add one from Everything curl and update a link
- o checksrc: detect more kinds of NULL comparisons we avoid [105]
- o CI: build examples for additional code verification [75]
- o CI: bump job to use mbedtls 3.1.0 [90]
- o cmake: don't set _USRDLL on a static Windows build [22]
- o cmake: prevent dev warning due to mismatched arg [94]
- o cmake: private identifiers use CURL_ instead of CMAKE_ prefix [40]
- o config.d: update documentation to match the path search
- o configure: add -lm to configure for rustls build. [13]
- o configure: better diagnostics if hyper is built wrong [6]
- o configure: don't enable TLS when --without-* flags are used [17]
- o configure: fix runtime-lib detection on macOS [21]
- o curl.1: require "see also" for every documented option [27]
- o curl: improve error message for --head with -J [42]
- o curl_easy_cleanup.3: remove from multi handle first [3]
- o curl_easy_escape.3: call curl_easy_cleanup in example [58]
- o curl_easy_unescape.3: call curl_easy_cleanup in example [57]
- o curl_multi_init.3: fix EXAMPLE formatting
- o curl_multi_perform/socket_action.3: clarify what errors mean [70]
- o curl_share_setopt.3: split out options into their own manpages [14]
- o CURLOPT_STDERR.3: does not work with libcurl as a win32 DLL [51]
- o digest: compute user:realm:pass digest w/o userhash [45]
- o docs/checksrc: Add documentation for STRERROR [18]
- o docs/cmdline-opts: do not say "protocols: all" [26]
- o docs/examples: workaround broken -Wno-pedantic-ms-format
- o docs/HTTP3: describe how to setup a h3 reverse-proxy for testing [88]
- o docs/INSTALL.md: typo fix : added missing "get" verb [31]
- o docs/URL-SYNTAX.md: space is not fine in a given URL
- o docs: add known bugs list to HTTP3.md [83]
- o docs: address proselint nits [16]
- o docs: consistent manpage SYNOPSIS [47]
- o docs: fix dead links, remove ECH.md
- o docs: fix typo in OpenSSL 3 build instructions [80]
- o docs: Update the Reducing Size section
- o example/progressfunc: remove code for old libcurls [78]
- o examples/multi-single.c: remove WAITMS() [98]
- o FAQ: typo fix : "yout" ➤ "your" [30]
- o ftp: disable warning 4706 in MSVC [85]
- o gen.pl: improve example output format [29]
- o github workflow: add wolfssl (removed from zuul) [103]
- o github/workflows: add mbedtls and mbedtls-clang (removed from zuul) [92]
- o gtls: check return code for gnutls_alpn_set_protocols [86]
- o hash: lazy-alloc the table in Curl_hash_add() [54]
- o http2:set_transfer_url() return early on OOM [53]
- o HTTP3: update quiche build instructions [37]
- o http: enable haproxy support for hyper backend [20]
- o http: Fix CURLOPT_HTTP200ALIASES [89]
- o http_proxy: don't close the socket (too early) [100]
- o insecure.d: detail its use for SFTP and SCP as well [32]
- o insecure.d: expand and clarify [28]
- o libcurl-multi.3: "SOCKS proxy handshakes" are not blocking
- o libcurl-security.3: mention address and URL mitigations
- o libssh2: fix error message for sha256 mismatch
- o libtest: avoid "assignment within conditional expression" [84]
- o lift: ignore is a deprecated config option, use ignoreRules [35]
- o linkcheck.yml: add CI job that checks markdown links [82]
- o m4/curl-compilers: tell clang -Wno-pointer-bool-conversion [99]
- o Makefile.m32: rename -winssl option to -schannel and tidy up [33]
- o mbedTLS: add support for CURLOPT_CAINFO_BLOB [44]
- o mbedtls: fix CURLOPT_SSLCERT_BLOB [72]
- o mbedtls: fix private member designations for v3.1.0 [93]
- o misc: remove unused doh flags when CURL_DISABLE_DOH is defined [71]
- o misc: s/e-mail/email [74]
- o multi: cleanup the socket hash when destroying it [55]
- o multi: handle errors returned from socket/timer callbacks [52]
- o multi: shut down CONNECT in Curl_detach_connnection [2]
- o netrc.d: edit the .netrc example to look nicer [24]
- o ngtcp2: verify the server cert on connect (quictls) [102]
- o ngtcp2: verify the server certificate for the gnutls case [101]
- o nss:set_cipher don't clobber the cipher list [38]
- o openldap: implement STARTTLS [56]
- o openldap: process search query response messages one by one [50]
- o openldap: several minor improvements [69]
- o openldap: simplify ldif generation code [77]
- o openssl: check the return value of BIO_new() [43]
- o openssl: define HAVE_OPENSSL_VERSION for OpenSSL 1.1.0+
- o openssl: remove `RSA_METHOD_FLAG_NO_CHECK` handling if unavailable
- o openssl: remove usage of deprecated `SSL_get_peer_certificate`
- o openssl: use non-deprecated API to read key parameters
- o page-footer: add a mention of how to report bugs to the man page
- o page-footer: document more environment variables [23]
- o request.d: refer to 'method' rather than 'command' [59]
- o retry-all-errors.d: make the example complete
- o runtests: make the SSH library a testable feature
- o rustls: read of zero bytes might be okay [9]
- o rustls: remove comment about checking handshaking [15]
- o rustls: remove incorrect EOF check [10]
- o sha256/md5: return errors when init fails [79]
- o socks5: use appropriate ATYP for numerical IP address host names [91]
- o test1156: enable for hyper [65]
- o test1156: fixup the stdout check for Windows [60]
- o test1525: tweaked for hyper [64]
- o test1526: enable for hyper [63]
- o test1527: enable for hyper [62]
- o test1528: enable for hyper [61]
- o test1554: adjust for hyper [49]
- o test1556: adjust for hyper [48]
- o test302[12]: run only with the libssh2 backend [8]
- o test661: enable for hyper [66]
- o tests/CI.md: add more information on CI environments [39]
- o tests/data/test302[12]: fix MSYS2 path conversion of hostpubsha256 [76]
- o tftp: mark protocol as not possible to do over CONNECT [25]
- o tool_findfile: updated search for a file in the homedir [46]
- o tool_operate: only set SSH related libcurl options for SSH URLs [11]
- o tool_operate: warn if too many output arguments were found [87]
- o url.c: fix the SIGPIPE comment for Curl_close [4]
- o url: check ssl_config when re-use proxy connection [81]
- o url: reduce ssl backend count for CURL_DISABLE_PROXY builds [96]
- o urlapi: accept port number zero [34]
- o urlapi: if possible, shorten given numerical IPv6 addresses [95]
- o urlapi: provide more detailed return codes [36]
- o urlapi: reject short file URLs [41]
- o version_win32: Check build number and platform id
- o vtls/rustls: adapt to the updated rustls_version proto [19]
- o writeout: fix %{http_version} for HTTP/3 [7]
- o x509asn1: return early on errors [67]
- o zuul.d: update rustls-ffi to version 0.8.2 [5]
- o zuul: fix quiche build pointing to wrong Cargo [104]
+ o altsvc: reject bad port numbers [86]
+ o altsvc: use 'h3' for h3 [46]
+ o amiga: do not hardcode openssl/zlib into the os config [158]
+ o amiga: set SIZEOF_CURL_OFF_T=8 by default [150]
+ o amigaos: add missing curl header [159]
+ o asyn-ares: set hint flags when calling ares_getaddrinfo [93]
+ o autotools: allow --enable-symbol-hiding with windows [65]
+ o autotools: allow unix sockets on Windows [144]
+ o autotools: reduce brute-force when detecting recv/send arg list [66]
+ o aws_sigv4: fix header computation [139]
+ o bearssl: make it proper C89 compliant
+ o CI/GHA: cancel outdated CI runs on new PR changes [20]
+ o CI/GHA: merge msh3 and openssl3 builds into linux workflow [110]
+ o cirrus-ci: add macOS build with m1 [81]
+ o cirrus: use make LDFLAGS=-all-static instead of curl_LDFLAGS [129]
+ o cli tool: do not use disabled protocols
+ o cmake: add missing inet_ntop check [145]
+ o cmake: add the check of HAVE_SOCKETPAIR [98]
+ o cmake: define BUILDING_LIBCURL in lib/CMakeLists, not config.h [5]
+ o cmake: delete duplicate HAVE_GETADDRINFO test [149]
+ o cmake: enable more detection on Windows [143]
+ o cmake: fix original MinGW builds [177]
+ o cmake: improve usability of CMake build as a sub-project [186]
+ o cmake: set HAVE_GETADDRINFO_THREADSAFE on Windows [147]
+ o cmake: set HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID on Windows [146]
+ o cmake: sync HAVE_SIGNAL detection with autotools [148]
+ o cmdline/docs: add a required 'multi' keyword for each option [160]
+ o configure: correct the wording when checking grep -E [13]
+ o configure: deprecate builds with small curl_off_t [89]
+ o configure: fail if '--without-ssl' + explicit parameter for an ssl lib [164]
+ o configure: the ngtcp2 option should default to 'no' [125]
+ o connect: change verbose IPv6 address:port to [address]:port [83]
+ o connect: fix builds without AF_INET6 [152]
+ o connect: fix Curl_updateconninfo for TRNSPRT_UNIX [108]
+ o connect: fix the wrong error message on connect failures [55]
+ o content_encoding: use writer struct subclasses for different encodings [8]
+ o cookie: reject cookie names or content with TAB characters [94]
+ o ctype: remove all use of <ctype.h>, use our own versions [12]
+ o curl-compilers.m4: for gcc + want warnings, set gnu89 standard [72]
+ o curl-compilers.m4: use -O2 as default optimize for clang [6]
+ o curl-wolfssl.m4: error out if wolfSSL is not usable [102]
+ o curl.h: fix mention of wrong error code in comment
+ o curl/add_file_name_to_url: use the libcurl URL parser [99]
+ o curl/add_parallel_transfers: better error handling [101]
+ o curl/get_url_file_name: use libcurl URL parser [97]
+ o curl: warn for --ssl use, considered insecure [49]
+ o curl_ctype: convert to macros-only [10]
+ o curl_easy_pause.3: unpausing is as fast as possible [14]
+ o curl_escape.3: fix typo [50]
+ o curl_setup: disable use of FLOSS for 64-bit NonStop builds [69]
+ o curl_setup: include curl.h after platform setup headers [37]
+ o curl_setup: include only system.h instead of curl.h [34]
+ o curl_strequal.3: fix argument typo [60]
+ o curl_url_set.3: document CURLU_APPENDQUERY proper [96]
+ o CURLMOPT_PIPELINING.3: dedup manpage xref [111]
+ o CURLOPT_ACCEPT_ENCODING.3: remove "four" as they are five [85]
+ o CURLOPT_AUTOREFERER.3: highlight the privacy leak risk [161]
+ o CURLOPT_COOKIEFILE: insist on "" for enable-without-file [119]
+ o CURLOPT_COOKIELIST.3: fix formatting mistake [80]
+ o CURLOPT_DNS_INTERFACE.3: mention it works for almost all protocols [15]
+ o CURLOPT_MIMEPOST.3: add an (inline) example [126]
+ o CURLOPT_POSTFIELDS.3: refer to CURLOPT_MIMEPOST [167]
+ o CURLOPT_PROXY_SSLCERT_BLOB.3: this is for HTTPS proxies [9]
+ o CURLOPT_WILDCARDMATCH.3: Fix backslash escaping under single quotes [172]
+ o CURLSHOPT_UNLOCKFUNC.3: the callback has no 'access' argument [84]
+ o DEPRECATE.md: Support for systems without 64 bit data types [19]
+ o docs/examples: avoid deprecated options in examples where possible [115]
+ o docs/INSTALL: update Android Instructions for newer NDKs [151]
+ o docs/libcurl/symbols-in-versions: add several missing symbols
+ o docs: 100+ spellfixes
+ o docs: correct missing uppercase in Markdown files [38]
+ o docs: document more server names for test files
+ o docs: fix deprecation versions inconsistencies [123]
+ o docs: make sure libcurl opts examples pass in long arguments [182]
+ o docs: remove mentions of deprecated '--without-openssl' parameter [170]
+ o docs: tag curl options better in man pages
+ o docs: tell about disabled protocols in CURLOPT_*PROTOCOLS_STR.
+ o docs: update sourceforge project links [95]
+ o easy: fix the #include order [53]
+ o easy: fix the altsvc init for curl_easy_duphandle [77]
+ o easy_lock: check for HAVE_STDATOMIC_H as well [187]
+ o examples/chkspeed: improve portability [48]
+ o formdata: fix warning: 'CURLformoption' is promoted to 'int' [24]
+ o ftp: ignore a 550 response to MDTM [1]
+ o ftp: remove redundant if [163]
+ o functypes: provide the recv and send arg and return types [87]
+ o getparameter: return PARAM_MANUAL_REQUESTED for -M even when disabled [17]
+ o GHA: build tests in a separate step from the running of them [78]
+ o GHA: run proselint on markdown files [22]
+ o github: initial CODEOWNERS setup for CI configuration [52]
+ o header: define public API functions as extern c [26]
+ o headers: reset the requests counter at transfer start [25]
+ o hostip: guard PF_INET6 use [157]
+ o hostip: lazily wait to figure out if IPv6 works until needed [36]
+ o http, vauth: always provide Curl_allow_auth_to_host() functionality [90]
+ o http2: make nghttp2 less picky about field whitespace [27]
+ o HTTP3.md: update Caddy example [76]
+ o http: try parsing Retry-After: as a number first [122]
+ o http_proxy: restore the protocol pointer on error [104]
+ o httpput-postfields.c: shorten string for C89 compliance [57]
+ o ldap: delete stray CURL_HAS_MOZILLA_LDAP reference [79]
+ o lib1560: extended to verify detect/reject of unknown schemes
+ o lib517: fix C89 constant signedness [73]
+ o lib: add missing limits.h includes [35]
+ o lib: add required Win32 setup definitions in setup-win32.h [4]
+ o lib: prepare the incoming of additional protocols [71]
+ o lib: sanitize conditional exclusion around MIME [82]
+ o lib: set more flags in config-win32.h [109]
+ o lib: the number four in a sequence is the "fourth" [28]
+ o libssh: if sftp_init fails, don't get the sftp error code [132]
+ o Makefile.m32: deduplicate build rules [131]
+ o Makefile.m32: drop CROSSPREFIX and our CC/AR defaults [137]
+ o Makefile.m32: exclude libs & libpaths for shared mode exes [127]
+ o Makefile.m32: fix regression with tool_hugehelp [130]
+ o Makefile.m32: major rework [92]
+ o Makefile.m32: reintroduce CROSSPREFIX and -W -Wall [179]
+ o Makefile.m32: support more options [142]
+ o manpage-syntax.pl: all libcurl option symbols should be \fI-tagged [75]
+ o manpages: Fix spelling of "allows to" -> "allows one to" [171]
+ o misc: ISSPACE() => ISBLANK() [11]
+ o misc: use the term "null-terminate" consistently [41]
+ o mprintf: reject two kinds of precision for the same argument [162]
+ o mprintf: use snprintf if available [74]
+ o mqtt: return error for too long topic [133]
+ o mqtt: spell out CONNECT in comments [166]
+ o msh3: change the static_assert to make the code C89
+ o netrc: compare user name case sensitively [118]
+ o netrc: replace fgets with Curl_get_line [174]
+ o netrc: use the URL-decoded user [103]
+ o ngtcp2: fix build errors due to changes in ngtcp2 library [107]
+ o ngtcp2: fix C89 compliance nit
+ o noproxy: support proxies specified using cidr notation [184]
+ o openssl: make certinfo available for QUIC [91]
+ o README.md: add GHA status badges for Linux and macOS builds [40]
+ o RELEASE-PROCEDURE.md: mention patch releases [21]
+ o resolve: make forced IPv4 resolve only use A queries [61]
+ o runtests: fix uninitialized value on ignored tests [128]
+ o schannel: ban server ALPN change during recv renegotiation [63]
+ o schannel: don't reset recv/send function pointers on renegotiation [156]
+ o schannel: when importing PFX, disable key persistence [141]
+ o scripts: use `grep -E` instead of `egrep` [30]
+ o setopt: use the handler table for protocol name to number conversions [45]
+ o setopt: when POST is set, reset the 'upload' field [51]
+ o setup-win32: no longer define UNICODE/_UNICODE implicitly [3]
+ o single_transfer: use the libcurl URL parser when appending query parts [100]
+ o smb: replace CURL_WIN32 with WIN32 [138]
+ o strcase: add and use Curl_timestrcmp [106]
+ o strerror: improve two URL API error messages
+ o symbol-scan.pl: also check for LIBCURL* symbols [43]
+ o symbol-scan.pl: scan and verify .3 man pages [42]
+ o symbols-in-versions: add missing LIBCURL* symbols
+ o symbols-in-versions: CURLOPT_ENCODING is deprecated since 7.21.6
+ o test1119: scan all public headers [44]
+ o test1275: verify uppercase after period in markdown [135]
+ o test972: verify the output without using external tool [32]
+ o tests/certs/scripts: insert standard curl source headers [169]
+ o tests/Makefile: remove run time stats from ci-test [120]
+ o tests: avoid CreateThread if _beginthreadex is available [155]
+ o tests: fix tag syntax errors in test files
+ o tests: skip mime/form tests when mime is not built-in [54]
+ o tidy-up: delete parallel/unused feature flags [117]
+ o tidy-up: delete unused HAVE_STRUCT_POLLFD [134]
+ o TODO: provide the error body from a CONNECT response [67]
+ o tool: avoid generating ambiguous escaped characters in --libcurl [124]
+ o tool: remove dead code [70]
+ o tool: reorganize function c_escape around a dynbuf [121]
+ o tool_hugehelp: make hugehelp a blank macro when disabled [7]
+ o tool_main: exit at once if out of file descriptors [113]
+ o tool_operate: avoid a few #ifdefs for disabled-libcurl builds [29]
+ o tool_operate: more transfer cleanup after parallel transfer fail [165]
+ o tool_operate: prevent over-queuing in parallel mode [176]
+ o tool_operate: reduce errorbuffer allocs [173]
+ o tool_paramhelp: asserts verify maximum sizes for string loading [112]
+ o tool_paramhelp: make the max argument a 'double' [136]
+ o tool_progress: remove 'Qd' from the parallel progress bar [175]
+ o tool_setopt: use better English in --libcurl source comments [39]
+ o tool_xattr: save the original URL, not the final redirected one [181]
+ o unit test 1655: make it C89-compliant [59]
+ o url: a zero-length userinfo part in the URL is still a (blank) user [64]
+ o url: allow non-HTTPS HSTS-matching for debug builds [105]
+ o url: rename function due to name-clash in Watt-32 [62]
+ o url: use IDN decoded names for HSTS checks [140]
+ o urlapi: detect scheme better when not guessing [56]
+ o urlapi: fix parsing URL without slash with CURLU_URLENCODE [154]
+ o urlapi: leaner with fewer allocs [2]
+ o urlapi: reject more bad characters from the host name field [88]
+ o winbuild/MakefileBuild.vc: handle spaces in libssh(2) include paths [18]
+ o winbuild: use NMake batch-rules for compilation [47]
+ o windows: add .rc support to autotools builds [33]
+ o windows: adjust name of two internal public functions [58]
+ o windows: autotools .rc warnings fixup [68]
+ o wolfSSL: fix session management bug. [31]
This release includes the following known bugs:
o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
+Planned upcoming removals include:
+
+ o NSS
+ o Support for systems without 64 bit data types
+
+ See https://curl.se/dev/deprecate.html for details
+
This release would not have looked like this without help, code, reports and
advice from friends like these:
- Alessandro Ghedini, Bernat Mut, Bernhard Walle, Boris Rasin,
- Brad Fitzpatrick, Bruno Baguette, Damien Walsh, Dan Fandrich,
- Daniel Stenberg, David Bohman, Don J Olmstead, Eric Musser, Even Rouault,
- Florian Van Heghe, gclinch on github, Glenn Strauss, Jacob Hoffman-Andrews,
- James Fuller, Jeff Luszcz, jeffrson on github, Jun Tseng, Kevin Burke,
- Leszek Kubik, lllaffer on github, Marcelo Juchem, Marcel Raad, Marc Hörsken,
- Mark Dodgson, Matt Holt, Melroy van den Berg, Michał Antoniak,
- Nicolas Sterchele, nimaje on github, Patrick Monnerat, Paul Howarth,
- Peter Piekarski, Ray Satiro, RekGRpth on github, Rikard Falkeborn,
- Ryan Sleevi, Stan Hu, Stefan Eissing, Stefan Huber, Stephane Pellegrino,
- Stephen M. Coakley, Tobias Nießen, Valentin Richter, Viktor Szakats,
- Vincent Grande, Vladimir Panteleev, Wyatt O'Day, x2018 on github,
- Yongkang Huang,
- (53 contributors)
+ 12932 on github, a1346054 on github, Aftab Alam, ajak in #curl,
+ Andrew Lambert, Benjamin Loison, Brad Harder, bsergean on github,
+ Christopher Sauer, Dan Fandrich, Daniel Gustafsson, Daniel Hallberg,
+ Daniel Stenberg, David Hu, David McLaughlin, Dmitry Karpov, Dominik Klemba,
+ Don J Olmstead, Dustin Howett, Edoardo Lolletti, Eloy Degen, Emanuele Torre,
+ Emilio López, Gisle Vanem, Hayden Roche, Hiroki Kurosawa, James Fuller,
+ Jeremy Maitin-Shepard, Joel Depooter, John Bampton, Jonas Haag,
+ jurisuk on github, justchen1369 on github, Keitagit-kun on github,
+ Kelly Kaoudis, Marcel Raad, Marc Hörsken, Mark Itzcovitz, Martin Ågren,
+ Martin Strunz, Mathieu Carbonneaux, Matthias Gatto, Matt Holt, Max Dymond,
+ Michael Drake, Michael Heimpold, n0name321 on github, Orgad Shaneh,
+ Patrick Monnerat, Paul Seligman, Peter Goodman, Petr Štetiar, Philip H,
+ Philip H., Philip Heiduck, ProceduralMan on github, Randall S. Becker,
+ Ray Satiro, Rickard Hallerbäck, RobBotic1 on github, Robby Simpson,
+ Samuel Henrique, Sergey Bronnikov, ShadowZzj on github, Shaun Mirani,
+ ssdbest on github, Thiago Suchorski, Tobias Schaefer, Trail of Bits,
+ Vasiliy Ulyanov, Viktor Szakats, Xiang Xiao, Yuriy Chernyshov,
+ zhanghu on xiaomi
+ (74 contributors)
References to bug reports and discussions on issues:
- [1] = https://curl.se/bug/?i=7789
- [2] = https://curl.se/bug/?i=7982
- [3] = https://curl.se/bug/?i=7983
- [4] = https://curl.se/bug/?i=7984
- [5] = https://curl.se/bug/?i=8013
- [6] = https://curl.se/bug/?i=8001
- [7] = https://curl.se/bug/?i=8072
- [8] = https://curl.se/bug/?i=8009
- [9] = https://curl.se/bug/?i=8003
- [10] = https://curl.se/bug/?i=8003
- [11] = https://curl.se/bug/?i=8040
- [12] = https://curl.se/bug/?i=8006
- [13] = https://curl.se/bug/?i=8002
- [14] = https://curl.se/bug/?i=7998
- [15] = https://curl.se/bug/?i=8038
- [16] = https://curl.se/bug/?i=8060
- [17] = https://curl.se/bug/?i=7994
- [18] = https://curl.se/bug/?i=7991
- [19] = https://curl.se/bug/?i=7956
- [20] = https://curl.se/bug/?i=8034
- [21] = https://curl.se/bug/?i=8028
- [22] = https://curl.se/bug/?i=8030
- [23] = https://curl.se/bug/?i=8027
- [24] = https://curl.se/bug/?i=8025
- [25] = https://curl.se/bug/?i=8018
- [26] = https://curl.se/bug/?i=8021
- [27] = https://curl.se/bug/?i=8019
- [28] = https://curl.se/bug/?i=8017
- [29] = https://curl.se/bug/?i=8016
- [30] = https://curl.se/bug/?i=8059
- [31] = https://curl.se/bug/?i=8058
- [32] = https://curl.se/bug/?i=8056
- [33] = https://curl.se/bug/?i=8053
- [34] = https://curl.se/bug/?i=8090
- [35] = https://curl.se/bug/?i=8082
- [36] = https://curl.se/bug/?i=8049
- [37] = https://curl.se/bug/?i=8076
- [38] = https://curl.se/bug/?i=8160
- [39] = https://curl.se/bug/?i=8012
- [40] = https://curl.se/bug/?i=7988
- [41] = https://curl.se/bug/?i=8042
- [42] = https://curl.se/bug/?i=7987
- [43] = https://curl.se/bug/?i=8078
- [44] = https://curl.se/bug/?i=8071
- [45] = https://curl.se/bug/?i=8066
- [46] = https://curl.se/bug/?i=8033
- [47] = https://curl.se/bug/?i=8062
- [48] = https://curl.se/bug/?i=8105
- [49] = https://curl.se/bug/?i=8104
- [50] = https://curl.se/bug/?i=8101
- [51] = https://curl.se/bug/?i=8103
- [52] = https://curl.se/bug/?i=8083
- [53] = https://curl.se/bug/?i=8100
- [54] = https://curl.se/bug/?i=8132
- [55] = https://curl.se/bug/?i=8129
- [56] = https://curl.se/bug/?i=8065
- [57] = https://curl.se/bug/?i=8097
- [58] = https://curl.se/bug/?i=8097
- [59] = https://curl.se/bug/?i=8094
- [60] = https://curl.se/bug/?i=8134
- [61] = https://curl.se/bug/?i=8128
- [62] = https://curl.se/bug/?i=8128
- [63] = https://curl.se/bug/?i=8128
- [64] = https://curl.se/bug/?i=8128
- [65] = https://curl.se/bug/?i=8127
- [66] = https://curl.se/bug/?i=8126
- [67] = https://curl.se/bug/?i=8147
- [68] = https://curl.se/bug/?i=8125
- [69] = https://curl.se/bug/?i=8140
- [70] = https://curl.se/bug/?i=8120
- [71] = https://curl.se/bug/?i=8148
- [72] = https://curl.se/bug/?i=8146
- [73] = https://curl.se/bug/?i=8142
- [74] = https://curl.se/bug/?i=8159
- [75] = https://curl.se/bug/?i=7922
- [76] = https://curl.se/bug/?i=8084
- [77] = https://curl.se/bug/?i=8136
- [78] = https://curl.se/bug/?i=8137
- [79] = https://curl.se/bug/?i=8133
- [80] = https://curl.se/bug/?i=8162
- [81] = https://curl.se/bug/?i=8141
- [82] = https://curl.se/bug/?i=8158
- [83] = https://curl.se/bug/?i=8156
- [84] = https://curl.se/bug/?i=8218
- [85] = https://curl.se/bug/?i=8218
- [86] = https://curl.se/bug/?i=8181
- [87] = https://curl.se/bug/?i=8210
- [88] = https://curl.se/bug/?i=8177
- [89] = https://curl.se/bug/?i=8171
- [90] = https://curl.se/bug/?i=8215
- [91] = https://curl.se/bug/?i=8216
- [92] = https://curl.se/bug/?i=8215
- [93] = https://curl.se/bug/?i=8214
- [94] = https://curl.se/bug/?i=8207
- [95] = https://curl.se/bug/?i=8206
- [96] = https://curl.se/bug/?i=8212
- [98] = https://curl.se/bug/?i=8200
- [99] = https://curl.se/bug/?i=8197
- [100] = https://curl.se/bug/?i=8193
- [101] = https://curl.se/bug/?i=8178
- [102] = https://curl.se/bug/?i=8178
- [103] = https://curl.se/bug/?i=8196
- [104] = https://curl.se/bug/?i=8184
- [105] = https://curl.se/bug/?i=8180
+ [1] = https://curl.se/bug/?i=9357
+ [2] = https://curl.se/bug/?i=9408
+ [3] = https://curl.se/bug/?i=9375
+ [4] = https://curl.se/bug/?i=9375
+ [5] = https://curl.se/bug/?i=9498
+ [6] = https://curl.se/bug/?i=9444
+ [7] = https://curl.se/bug/?i=9485
+ [8] = https://curl.se/bug/?i=9455
+ [9] = https://curl.se/bug/?i=9434
+ [10] = https://curl.se/bug/?i=9429
+ [11] = https://curl.se/bug/?i=9432
+ [12] = https://curl.se/bug/?i=9433
+ [13] = https://curl.se/bug/?i=9471
+ [14] = https://curl.se/bug/?i=9410
+ [15] = https://curl.se/bug/?i=9427
+ [16] = https://curl.se/bug/?i=9307
+ [17] = https://curl.se/bug/?i=9485
+ [18] = https://curl.se/mail/lib-2022-09/0038.html
+ [19] = https://curl.se/bug/?i=9604
+ [20] = https://curl.se/bug/?i=9533
+ [21] = https://curl.se/bug/?i=9495
+ [22] = https://curl.se/bug/?i=9520
+ [23] = https://curl.se/bug/?i=8995
+ [24] = https://curl.se/bug/?i=9484
+ [25] = https://curl.se/bug/?i=9424
+ [26] = https://curl.se/bug/?i=9424
+ [27] = https://curl.se/bug/?i=9448
+ [28] = https://curl.se/bug/?i=9535
+ [29] = https://curl.se/bug/?i=9486
+ [30] = https://curl.se/bug/?i=9491
+ [31] = https://curl.se/bug/?i=9492
+ [32] = https://curl.se/bug/?i=9563
+ [33] = https://curl.se/bug/?i=9521
+ [34] = https://curl.se/bug/?i=9453
+ [35] = https://curl.se/bug/?i=9453
+ [36] = https://curl.se/bug/?i=9553
+ [37] = https://curl.se/bug/?i=9453
+ [38] = https://curl.se/bug/?i=9474
+ [39] = https://curl.se/bug/?i=9475
+ [40] = https://curl.se/bug/?i=9530
+ [41] = https://curl.se/bug/?i=9527
+ [42] = https://curl.se/bug/?i=9544
+ [43] = https://curl.se/bug/?i=9544
+ [44] = https://curl.se/bug/?i=9544
+ [45] = https://curl.se/bug/?i=9472
+ [46] = https://curl.se/bug/?i=9515
+ [47] = https://curl.se/bug/?i=9512
+ [48] = https://curl.se/bug/?i=9562
+ [49] = https://curl.se/bug/?i=9519
+ [50] = https://curl.se/bug/?i=9517
+ [51] = https://curl.se/bug/?i=9507
+ [52] = https://curl.se/bug/?i=9505
+ [53] = https://curl.se/bug/?i=9560
+ [54] = https://curl.se/bug/?i=9596
+ [55] = https://curl.se/bug/?i=9549
+ [56] = https://curl.se/bug/?i=9503
+ [57] = https://curl.se/bug/?i=9555
+ [58] = https://curl.se/bug/?i=9598
+ [59] = https://curl.se/bug/?i=9551
+ [60] = https://curl.se/bug/?i=9548
+ [61] = https://curl.se/bug/?i=9540
+ [62] = https://curl.se/bug/?i=9585
+ [63] = https://curl.se/bug/?i=9463
+ [64] = https://curl.se/bug/?i=9088
+ [65] = https://curl.se/bug/?i=9586
+ [66] = https://curl.se/bug/?i=9591
+ [67] = https://curl.se/bug/?i=9513
+ [68] = https://curl.se/bug/?i=9582
+ [69] = https://curl.se/bug/?i=9575
+ [70] = https://curl.se/bug/?i=9576
+ [71] = https://curl.se/bug/?i=9534
+ [72] = https://curl.se/bug/?i=9542
+ [73] = https://curl.se/bug/?i=9572
+ [74] = https://curl.se/bug/?i=9569
+ [75] = https://curl.se/bug/?i=9574
+ [76] = https://curl.se/bug/?i=9623
+ [77] = https://curl.se/bug/?i=9624
+ [78] = https://curl.se/bug/?i=9619
+ [79] = https://curl.se/bug/?i=9625
+ [80] = https://curl.se/bug/?i=9639
+ [81] = https://curl.se/bug/?i=9565
+ [82] = https://curl.se/bug/?i=9610
+ [83] = https://curl.se/mail/archive-2022-02/0041.html
+ [84] = https://curl.se/bug/?i=9612
+ [85] = https://curl.se/bug/?i=9614
+ [86] = https://curl.se/bug/?i=9607
+ [87] = https://curl.se/bug/?i=9592
+ [88] = https://curl.se/bug/?i=9608
+ [89] = https://curl.se/bug/?i=9605
+ [90] = https://curl.se/bug/?i=9600
+ [91] = https://curl.se/bug/?i=9584
+ [92] = https://curl.se/bug/?i=9632
+ [93] = https://curl.se/bug/?i=9694
+ [94] = https://curl.se/bug/?i=9659
+ [95] = https://curl.se/bug/?i=9630
+ [96] = https://curl.se/bug/?i=9628
+ [97] = https://curl.se/bug/?i=9684
+ [98] = https://curl.se/bug/?i=9686
+ [99] = https://curl.se/bug/?i=9683
+ [100] = https://curl.se/bug/?i=9681
+ [101] = https://curl.se/bug/?i=9729
+ [102] = https://curl.se/bug/?i=9682
+ [103] = https://curl.se/bug/?i=9709
+ [104] = https://curl.se/bug/?i=9790
+ [105] = https://curl.se/bug/?i=9728
+ [106] = https://curl.se/bug/?i=9658
+ [107] = https://curl.se/bug/?i=9747
+ [108] = https://curl.se/bug/?i=9664
+ [109] = https://curl.se/bug/?i=9712
+ [110] = https://curl.se/bug/?i=9646
+ [111] = https://curl.se/bug/?i=9776
+ [112] = https://curl.se/bug/?i=9719
+ [113] = https://curl.se/bug/?i=9663
+ [115] = https://curl.se/bug/?i=9661
+ [117] = https://curl.se/bug/?i=9652
+ [118] = https://curl.se/bug/?i=9657
+ [119] = https://curl.se/bug/?i=9654
+ [120] = https://curl.se/bug/?i=9656
+ [121] = https://curl.se/bug/?i=9653
+ [122] = https://curl.se/bug/?i=9718
+ [123] = https://curl.se/bug/?i=9711
+ [124] = https://curl.se/bug/?i=9643
+ [125] = https://curl.se/mail/lib-2022-10/0007.html
+ [126] = https://curl.se/bug/?i=9637
+ [127] = https://curl.se/bug/?i=9651
+ [128] = https://curl.se/bug/?i=9648
+ [129] = https://curl.se/bug/?i=9633
+ [130] = https://curl.se/bug/?i=9645
+ [131] = https://curl.se/bug/?i=9642
+ [132] = https://curl.se/bug/?i=9737
+ [133] = https://curl.se/bug/?i=9744
+ [134] = https://curl.se/bug/?i=9707
+ [135] = https://curl.se/bug/?i=9697
+ [136] = https://curl.se/bug/?i=9700
+ [137] = https://curl.se/bug/?i=9698
+ [138] = https://curl.se/bug/?i=9701
+ [139] = https://curl.se/bug/?i=7966
+ [140] = https://curl.se/bug/?i=9791
+ [141] = https://curl.se/bug/?i=9300
+ [142] = https://curl.se/bug/?i=9680
+ [143] = https://curl.se/bug/?i=9687
+ [144] = https://github.com/curl/curl-for-win/blob/73a070d96fd906fdee929e2f1f00a9149fb39239/curl-autotools.sh#L44-L47
+ [145] = https://curl.se/bug/?i=9689
+ [146] = https://curl.se/bug/?i=9726
+ [147] = https://curl.se/bug/?i=9727
+ [148] = https://curl.se/bug/?i=9725
+ [149] = https://curl.se/bug/?i=9731
+ [150] = https://curl.se/bug/?i=9771
+ [151] = https://curl.se/bug/?i=9732
+ [152] = https://curl.se/bug/?i=9770
+ [154] = https://curl.se/bug/?i=9763
+ [155] = https://curl.se/bug/?i=9705
+ [156] = https://curl.se/bug/?i=9451
+ [157] = https://curl.se/bug/?i=9760
+ [158] = https://curl.se/bug/?i=9762
+ [159] = https://curl.se/bug/?i=9761
+ [160] = https://curl.se/bug/?i=9759
+ [161] = https://curl.se/bug/?i=9757
+ [162] = https://curl.se/bug/?i=9754
+ [163] = https://curl.se/bug/?i=9753
+ [164] = https://curl.se/bug/?i=9414
+ [165] = https://curl.se/bug/?i=9749
+ [166] = https://curl.se/bug/?i=9751
+ [167] = https://curl.se/bug/?i=9752
+ [169] = https://curl.se/bug/?i=9417
+ [170] = https://curl.se/bug/?i=9415
+ [171] = https://curl.se/bug/?i=9419
+ [172] = https://curl.se/bug/?i=9418
+ [173] = https://curl.se/bug/?i=9394
+ [174] = https://curl.se/bug/?i=9789
+ [175] = https://curl.se/bug/?i=9389
+ [176] = https://curl.se/bug/?i=8933
+ [177] = https://curl.se/bug/?i=9214
+ [179] = https://curl.se/bug/?i=9784
+ [181] = https://curl.se/bug/?i=9766
+ [182] = https://curl.se/bug/?i=9779
+ [184] = https://curl.se/bug/?i=9773
+ [186] = https://curl.se/bug/?i=9638
+ [187] = https://curl.se/bug/?i=9755
diff --git a/acinclude.m4 b/acinclude.m4
index feb9e818f..1a0bd14d0 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
@@ -383,48 +385,6 @@ AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [
])
-dnl CURL_CHECK_HEADER_WINBER
-dnl -------------------------------------------------
-dnl Check for compilable and valid winber.h header
-
-AC_DEFUN([CURL_CHECK_HEADER_WINBER], [
- AC_REQUIRE([CURL_CHECK_HEADER_WINLDAP])dnl
- AC_CACHE_CHECK([for winber.h], [curl_cv_header_winber_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#endif
-#include <winldap.h>
-#include <winber.h>
- ]],[[
-#if defined(__CYGWIN__) || defined(__CEGCC__)
- HAVE_WINBER_H shall not be defined.
-#else
- BERVAL *bvp = NULL;
- BerElement *bep = ber_init(bvp);
- ber_free(bep, 1);
-#endif
- ]])
- ],[
- curl_cv_header_winber_h="yes"
- ],[
- curl_cv_header_winber_h="no"
- ])
- ])
- case "$curl_cv_header_winber_h" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_WINBER_H, 1,
- [Define to 1 if you have the winber.h header file.])
- ;;
- esac
-])
-
-
dnl CURL_CHECK_HEADER_LBER
dnl -------------------------------------------------
dnl Check for compilable and valid lber.h header,
@@ -600,58 +560,6 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [
])
-dnl CURL_CHECK_HEADER_LDAPSSL
-dnl -------------------------------------------------
-dnl Check for compilable and valid ldapssl.h header
-
-AC_DEFUN([CURL_CHECK_HEADER_LDAPSSL], [
- AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
- AC_CACHE_CHECK([for ldapssl.h], [curl_cv_header_ldapssl_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#endif
-#ifndef NULL
-#define NULL (void *)0
-#endif
-#ifndef LDAP_DEPRECATED
-#define LDAP_DEPRECATED 1
-#endif
-#ifdef NEED_LBER_H
-#include <lber.h>
-#endif
-#ifdef HAVE_LDAP_H
-#include <ldap.h>
-#endif
-#include <ldapssl.h>
- ]],[[
- char *cert_label = NULL;
- LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);
- ]])
- ],[
- curl_cv_header_ldapssl_h="yes"
- ],[
- curl_cv_header_ldapssl_h="no"
- ])
- ])
- case "$curl_cv_header_ldapssl_h" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_LDAPSSL_H, 1,
- [Define to 1 if you have the ldapssl.h header file.])
- ;;
- esac
-])
-
-
dnl CURL_CHECK_LIBS_WINLDAP
dnl -------------------------------------------------
dnl Check for libraries needed for WINLDAP support,
@@ -856,108 +764,6 @@ AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
])
-dnl CURL_CHECK_HEADER_MALLOC
-dnl -------------------------------------------------
-dnl Check for compilable and valid malloc.h header,
-dnl and check if it is needed even with stdlib.h
-
-AC_DEFUN([CURL_CHECK_HEADER_MALLOC], [
- AC_CACHE_CHECK([for malloc.h], [curl_cv_header_malloc_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <malloc.h>
- ]],[[
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
- ]])
- ],[
- curl_cv_header_malloc_h="yes"
- ],[
- curl_cv_header_malloc_h="no"
- ])
- ])
- if test "$curl_cv_header_malloc_h" = "yes"; then
- AC_DEFINE_UNQUOTED(HAVE_MALLOC_H, 1,
- [Define to 1 if you have the malloc.h header file.])
- #
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <stdlib.h>
- ]],[[
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
- ]])
- ],[
- curl_cv_need_header_malloc_h="no"
- ],[
- curl_cv_need_header_malloc_h="yes"
- ])
- #
- case "$curl_cv_need_header_malloc_h" in
- yes)
- AC_DEFINE_UNQUOTED(NEED_MALLOC_H, 1,
- [Define to 1 if you need the malloc.h header file even with stdlib.h])
- ;;
- esac
- fi
-])
-
-
-dnl CURL_CHECK_HEADER_MEMORY
-dnl -------------------------------------------------
-dnl Check for compilable and valid memory.h header,
-dnl and check if it is needed even with stdlib.h for
-dnl memory related functions.
-
-AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
- AC_CACHE_CHECK([for memory.h], [curl_cv_header_memory_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <memory.h>
- ]],[[
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
- ]])
- ],[
- curl_cv_header_memory_h="yes"
- ],[
- curl_cv_header_memory_h="no"
- ])
- ])
- if test "$curl_cv_header_memory_h" = "yes"; then
- AC_DEFINE_UNQUOTED(HAVE_MEMORY_H, 1,
- [Define to 1 if you have the memory.h header file.])
- #
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <stdlib.h>
- ]],[[
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
- ]])
- ],[
- curl_cv_need_header_memory_h="no"
- ],[
- curl_cv_need_header_memory_h="yes"
- ])
- #
- case "$curl_cv_need_header_memory_h" in
- yes)
- AC_DEFINE_UNQUOTED(NEED_MEMORY_H, 1,
- [Define to 1 if you need the memory.h header file even with stdlib.h])
- ;;
- esac
- fi
-])
-
dnl TYPE_SOCKADDR_STORAGE
dnl -------------------------------------------------
dnl Check for struct sockaddr_storage. Most IPv6-enabled
@@ -998,15 +804,10 @@ AC_DEFUN([TYPE_SOCKADDR_STORAGE],
dnl CURL_CHECK_FUNC_RECV
dnl -------------------------------------------------
dnl Test if the socket recv() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_RECV
-dnl will be defined, defining the types of the arguments
-dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
-dnl and RECV_TYPE_ARG4, defining the type of the function
-dnl return value in RECV_TYPE_RETV.
AC_DEFUN([CURL_CHECK_FUNC_RECV], [
AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
AC_CHECK_HEADERS(sys/types.h sys/socket.h)
#
AC_MSG_CHECKING([for recv])
@@ -1022,10 +823,7 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
#include <winsock2.h>
#endif
#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
+$curl_includes_bsdsocket
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1045,84 +843,9 @@ struct Library *SocketBase = NULL;
])
#
if test "$curl_cv_recv" = "yes"; then
- AC_CACHE_CHECK([types of args and return type for recv],
- [curl_cv_func_recv_args], [
- curl_cv_func_recv_args="unknown"
- for recv_retv in 'int' 'ssize_t'; do
- for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do
- for recv_arg2 in 'char *' 'void *'; do
- for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
- for recv_arg4 in 'int' 'unsigned int'; do
- if test "$curl_cv_func_recv_args" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define RECVCALLCONV PASCAL
-#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define RECVCALLCONV
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
- extern $recv_retv RECVCALLCONV
- recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
-#endif
- ]],[[
- $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_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
- ])
- fi
- done
- done
- done
- done
- done
- ]) # AC-CACHE-CHECK
- if test "$curl_cv_func_recv_args" = "unknown"; then
- AC_MSG_ERROR([Cannot find proper types to use for recv args])
- else
- recv_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'`
- IFS=$recv_prev_IFS
- shift
- #
- AC_DEFINE_UNQUOTED(RECV_TYPE_ARG1, $[1],
- [Define to the type of arg 1 for recv.])
- AC_DEFINE_UNQUOTED(RECV_TYPE_ARG2, $[2],
- [Define to the type of arg 2 for recv.])
- AC_DEFINE_UNQUOTED(RECV_TYPE_ARG3, $[3],
- [Define to the type of arg 3 for recv.])
- AC_DEFINE_UNQUOTED(RECV_TYPE_ARG4, $[4],
- [Define to the type of arg 4 for recv.])
- AC_DEFINE_UNQUOTED(RECV_TYPE_RETV, $[5],
- [Define to the function return type for recv.])
- #
AC_DEFINE_UNQUOTED(HAVE_RECV, 1,
[Define to 1 if you have the recv function.])
curl_cv_func_recv="yes"
- fi
else
AC_MSG_ERROR([Unable to link function recv])
fi
@@ -1132,16 +855,10 @@ struct Library *SocketBase = NULL;
dnl CURL_CHECK_FUNC_SEND
dnl -------------------------------------------------
dnl Test if the socket send() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_SEND
-dnl will be defined, defining the types of the arguments
-dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
-dnl and SEND_TYPE_ARG4, defining the type of the function
-dnl return value in SEND_TYPE_RETV, and also defining the
-dnl type qualifier of second argument in SEND_QUAL_ARG2.
AC_DEFUN([CURL_CHECK_FUNC_SEND], [
AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
AC_CHECK_HEADERS(sys/types.h sys/socket.h)
#
AC_MSG_CHECKING([for send])
@@ -1157,10 +874,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
#include <winsock2.h>
#endif
#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
+$curl_includes_bsdsocket
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1180,117 +894,9 @@ struct Library *SocketBase = NULL;
])
#
if test "$curl_cv_send" = "yes"; then
- AC_CACHE_CHECK([types of args and return type for send],
- [curl_cv_func_send_args], [
- curl_cv_func_send_args="unknown"
- for send_retv in 'int' 'ssize_t'; do
- for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do
- for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
- for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
- for send_arg4 in 'int' 'unsigned int'; do
- if test "$curl_cv_func_send_args" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define SENDCALLCONV PASCAL
-#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define SENDCALLCONV
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
- extern $send_retv SENDCALLCONV
- send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
-#endif
- ]],[[
- $send_arg1 s=0;
- $send_arg3 len=0;
- $send_arg4 flags=0;
- $send_retv res = send(s, 0, len, flags);
- ]])
- ],[
- curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
- ])
- fi
- done
- done
- done
- done
- done
- ]) # AC-CACHE-CHECK
- if test "$curl_cv_func_send_args" = "unknown"; then
- AC_MSG_ERROR([Cannot find proper types to use for send args])
- else
- send_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'`
- IFS=$send_prev_IFS
- shift
- #
- send_qual_type_arg2=$[2]
- #
- AC_DEFINE_UNQUOTED(SEND_TYPE_ARG1, $[1],
- [Define to the type of arg 1 for send.])
- AC_DEFINE_UNQUOTED(SEND_TYPE_ARG3, $[3],
- [Define to the type of arg 3 for send.])
- AC_DEFINE_UNQUOTED(SEND_TYPE_ARG4, $[4],
- [Define to the type of arg 4 for send.])
- AC_DEFINE_UNQUOTED(SEND_TYPE_RETV, $[5],
- [Define to the function return type for send.])
- #
- prev_sh_opts=$-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set -f
- ;;
- esac
- #
- case "$send_qual_type_arg2" in
- const*)
- send_qual_arg2=const
- send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'`
- ;;
- *)
- send_qual_arg2=
- send_type_arg2=$send_qual_type_arg2
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(SEND_QUAL_ARG2, $send_qual_arg2,
- [Define to the type qualifier of arg 2 for send.])
- AC_DEFINE_UNQUOTED(SEND_TYPE_ARG2, $send_type_arg2,
- [Define to the type of arg 2 for send.])
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set +f
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
- [Define to 1 if you have the send function.])
- curl_cv_func_send="yes"
- fi
+ AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
+ [Define to 1 if you have the send function.])
+ curl_cv_func_send="yes"
else
AC_MSG_ERROR([Unable to link function send])
fi
@@ -1315,10 +921,6 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
#include <winsock2.h>
#endif
#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1726,18 +1328,11 @@ AC_DEFUN([CURL_CONFIGURE_PULL_SYS_POLL], [
dnl CURL_CHECK_FUNC_SELECT
dnl -------------------------------------------------
-dnl Test if the socket select() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_SELECT
-dnl will be defined, defining the types of the
-dnl arguments in SELECT_TYPE_ARG1, SELECT_TYPE_ARG234
-dnl and SELECT_TYPE_ARG5, defining the type of the
-dnl function return value in SELECT_TYPE_RETV, and
-dnl also defining the type qualifier of fifth argument
-dnl in SELECT_QUAL_ARG5.
+dnl Test if the socket select() function is available.
AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
AC_CHECK_HEADERS(sys/select.h sys/socket.h)
#
AC_MSG_CHECKING([for select])
@@ -1769,11 +1364,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
-#endif
+$curl_includes_bsdsocket
#endif
]],[[
select(0, 0, 0, 0, 0);
@@ -1787,136 +1378,9 @@ struct Library *SocketBase = NULL;
])
#
if test "$curl_cv_select" = "yes"; then
- AC_CACHE_CHECK([types of args and return type for select],
- [curl_cv_func_select_args], [
- curl_cv_func_select_args="unknown"
- for sel_retv in 'int' 'ssize_t'; do
- for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do
- for sel_arg234 in 'fd_set *' 'int *' 'void *'; do
- for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do
- if test "$curl_cv_func_select_args" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define SELECTCALLCONV PASCAL
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <time.h>
-#ifndef HAVE_WINDOWS_H
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#elif defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
-#endif
-#define SELECTCALLCONV
-#endif
-#ifndef HAVE_STRUCT_TIMEVAL
- struct timeval {
- long tv_sec;
- long tv_usec;
- };
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
- extern $sel_retv SELECTCALLCONV
- select($sel_arg1,
- $sel_arg234,
- $sel_arg234,
- $sel_arg234,
- $sel_arg5);
-#endif
- ]],[[
- $sel_arg1 nfds=0;
- $sel_arg234 rfds=0;
- $sel_arg234 wfds=0;
- $sel_arg234 efds=0;
- $sel_retv res = select(nfds, rfds, wfds, efds, 0);
- ]])
- ],[
- curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv"
- ])
- fi
- done
- done
- done
- done
- ]) # AC-CACHE-CHECK
- if test "$curl_cv_func_select_args" = "unknown"; then
- AC_MSG_WARN([Cannot find proper types to use for select args])
- AC_MSG_WARN([HAVE_SELECT will not be defined])
- else
- select_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'`
- IFS=$select_prev_IFS
- shift
- #
- sel_qual_type_arg5=$[3]
- #
- AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1, $[1],
- [Define to the type of arg 1 for select.])
- AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234, $[2],
- [Define to the type of args 2, 3 and 4 for select.])
- AC_DEFINE_UNQUOTED(SELECT_TYPE_RETV, $[4],
- [Define to the function return type for select.])
- #
- prev_sh_opts=$-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set -f
- ;;
- esac
- #
- case "$sel_qual_type_arg5" in
- const*)
- sel_qual_arg5=const
- sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'`
- ;;
- *)
- sel_qual_arg5=
- sel_type_arg5=$sel_qual_type_arg5
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(SELECT_QUAL_ARG5, $sel_qual_arg5,
- [Define to the type qualifier of arg 5 for select.])
- AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5, $sel_type_arg5,
- [Define to the type of arg 5 for select.])
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set +f
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
- [Define to 1 if you have the select function.])
- curl_cv_func_select="yes"
- fi
+ AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
+ [Define to 1 if you have the select function.])
+ curl_cv_func_select="yes"
fi
])
diff --git a/aclocal.m4 b/aclocal.m4
index 09539ed10..380bdb0b8 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1184,7 +1184,6 @@ AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
-m4_include([m4/ax_compile_check_sizeof.m4])
m4_include([m4/curl-amissl.m4])
m4_include([m4/curl-bearssl.m4])
m4_include([m4/curl-compilers.m4])
@@ -1192,7 +1191,6 @@ m4_include([m4/curl-confopts.m4])
m4_include([m4/curl-functions.m4])
m4_include([m4/curl-gnutls.m4])
m4_include([m4/curl-mbedtls.m4])
-m4_include([m4/curl-mesalink.m4])
m4_include([m4/curl-nss.m4])
m4_include([m4/curl-openssl.m4])
m4_include([m4/curl-override.m4])
diff --git a/buildconf b/buildconf
index 4e4c17e99..16fc8a75e 100755
--- a/buildconf
+++ b/buildconf
@@ -1,4 +1,8 @@
#!/bin/sh
+#
+# Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
echo "*** Do not use buildconf. Instead, just use: autoreconf -fi" >&2
exec ${AUTORECONF:-autoreconf} -fi "${@}"
diff --git a/buildconf.bat b/buildconf.bat
index 475736ee5..9af46275a 100644
--- a/buildconf.bat
+++ b/buildconf.bat
@@ -6,7 +6,7 @@ rem * / __| | | | |_) | |
rem * | (__| |_| | _ <| |___
rem * \___|\___/|_| \_\_____|
rem *
-rem * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+rem * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
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
@@ -19,6 +19,8 @@ rem *
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
rem * KIND, either express or implied.
rem *
+rem * SPDX-License-Identifier: curl
+rem *
rem ***************************************************************************
rem NOTES
diff --git a/config.guess b/config.guess
index f50dcdb6d..7f76b6228 100755
--- a/config.guess
+++ b/config.guess
@@ -1,12 +1,14 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2022 Free Software Foundation, Inc.
-timestamp='2018-02-24'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-09'
# 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
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -27,11 +29,19 @@ timestamp='2018-02-24'
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
#
# Please send patches to <config-patches@gnu.org>.
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
@@ -50,7 +60,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2022 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."
@@ -84,7 +94,8 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' 1 2 15
+# Just in case it came from the environment.
+GUESS=
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
@@ -96,73 +107,90 @@ trap 'exit 1' 1 2 15
# Portable tmp directory creation inspired by the Autoconf team.
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > "$dummy.c" ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039,SC3028
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD=$driver
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "$UNAME_SYSTEM" in
+case $UNAME_SYSTEM in
Linux|GNU|GNU/*)
- # If the system lacks a compiler, then just pick glibc.
- # We could probably try harder.
- LIBC=gnu
+ LIBC=unknown
- eval "$set_cc_for_build"
+ set_cc_for_build
cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
- #else
+ #elif defined(__GLIBC__)
LIBC=gnu
+ #else
+ #include <stdarg.h>
+ /* First heuristic to detect musl libc. */
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "$cc_set_libc"
- # If ldd exists, use it to detect musl libc.
- if command -v ldd >/dev/null && \
- ldd --version 2>&1 | grep -q ^musl
- then
- LIBC=musl
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -174,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
- "/sbin/$sysctl" 2>/dev/null || \
- "/usr/sbin/$sysctl" 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
echo unknown)`
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
+ aarch64eb) machine=aarch64_be-unknown ;;
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
@@ -188,18 +216,18 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
earmv*)
arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
- machine="${arch}${endian}"-unknown
+ machine=${arch}${endian}-unknown
;;
- *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+ *) machine=$UNAME_MACHINE_ARCH-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently (or will in the future) and ABI.
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
earm*)
os=netbsdelf
;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval "$set_cc_for_build"
+ set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -215,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
;;
esac
# Determine ABI tags.
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
@@ -226,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "$UNAME_VERSION" in
+ case $UNAME_VERSION in
Debian*)
release='-gnu'
;;
@@ -237,45 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "$machine-${os}${release}${abi}"
- exit ;;
+ GUESS=$machine-${os}${release}${abi-}
+ ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+ ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+ ;;
+ *:SecBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+ ;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+ ;;
*:MidnightBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+ ;;
*:ekkoBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+ ;;
*:SolidBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+ ;;
+ *:OS108:*:*)
+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+ ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:MirBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:Sortix:*:*)
- echo "$UNAME_MACHINE"-unknown-sortix
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sortix
+ ;;
+ *:Twizzler:*:*)
+ GUESS=$UNAME_MACHINE-unknown-twizzler
+ ;;
*:Redox:*:*)
- echo "$UNAME_MACHINE"-unknown-redox
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-redox
+ ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ GUESS=mips-dec-osf1
+ ;;
alpha:OSF1:*:*)
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ trap '' 0
case $UNAME_RELEASE in
*4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -289,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
+ case $ALPHA_CPU_TYPE in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
@@ -326,117 +366,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
- # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
- exitcode=$?
- trap '' 0
- exit $exitcode ;;
+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+ ;;
Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
+ GUESS=m68k-unknown-sysv4
+ ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-amigaos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-amigaos
+ ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-morphos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-morphos
+ ;;
*:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
+ GUESS=i370-ibm-openedition
+ ;;
*:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
+ GUESS=s390-ibm-zvmoe
+ ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
+ GUESS=powerpc-ibm-os400
+ ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix"$UNAME_RELEASE"
- exit ;;
+ GUESS=arm-acorn-riscix$UNAME_RELEASE
+ ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
+ GUESS=arm-unknown-riscos
+ ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
+ GUESS=hppa1.1-hitachi-hiuxmpp
+ ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
+ case `(/bin/universe) 2>/dev/null` in
+ att) GUESS=pyramid-pyramid-sysv3 ;;
+ *) GUESS=pyramid-pyramid-bsd ;;
+ esac
+ ;;
NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
+ GUESS=pyramid-pyramid-svr4
+ ;;
DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
+ GUESS=sparc-icl-nx6
+ ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
+ sparc) GUESS=sparc-icl-nx7 ;;
+ esac
+ ;;
s390x:SunOS:*:*)
- echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+ ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-hal-solaris2$SUN_REL
+ ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris2$SUN_REL
+ ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
+ ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
SUN_ARCH=x86_64
fi
fi
- echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+ ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris3$SUN_REL
+ ;;
sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
+ case `/usr/bin/arch -k` in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+ GUESS=sparc-sun-sunos$SUN_REL
+ ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
- case "`/bin/arch`" in
+ case `/bin/arch` in
sun3)
- echo m68k-sun-sunos"$UNAME_RELEASE"
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
;;
sun4)
- echo sparc-sun-sunos"$UNAME_RELEASE"
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
;;
esac
- exit ;;
+ ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
+ ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
@@ -446,43 +490,43 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-milan-mint$UNAME_RELEASE
+ ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-hades-mint$UNAME_RELEASE
+ ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
+ ;;
m68k:machten:*:*)
- echo m68k-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-machten$UNAME_RELEASE
+ ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
+ ;;
RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
+ GUESS=mips-dec-mach_bsd4.3
+ ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
+ ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
+ ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix"$UNAME_RELEASE"
- exit ;;
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
+ ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
@@ -508,78 +552,79 @@ EOF
dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-mips-riscos$UNAME_RELEASE
+ ;;
Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
+ GUESS=powerpc-motorola-powermax
+ ;;
Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
+ GUESS=powerpc-harris-powerunix
+ ;;
m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
+ GUESS=m88k-harris-cxux7
+ ;;
m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
+ GUESS=m88k-motorola-sysv4
+ ;;
m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
then
- if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
- [ "$TARGET_BINARY_INTERFACE"x = x ]
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
then
- echo m88k-dg-dgux"$UNAME_RELEASE"
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
else
- echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
fi
else
- echo i586-dg-dgux"$UNAME_RELEASE"
+ GUESS=i586-dg-dgux$UNAME_RELEASE
fi
- exit ;;
+ ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
+ GUESS=m88k-dolphin-sysv3
+ ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
+ GUESS=m88k-tektronix-sysv3
+ ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
+ GUESS=m68k-tektronix-bsd
+ ;;
*:IRIX*:*:*)
- echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
- exit ;;
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+ GUESS=mips-sgi-irix$IRIX_REL
+ ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
+ GUESS=i386-ibm-aix
+ ;;
ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
+ if test -x /usr/bin/oslevel ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
- echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+ ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
@@ -593,16 +638,16 @@ EOF
EOF
if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
- echo "$SYSTEM_NAME"
+ GUESS=$SYSTEM_NAME
else
- echo rs6000-ibm-aix3.2.5
+ GUESS=rs6000-ibm-aix3.2.5
fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
+ GUESS=rs6000-ibm-aix3.2.4
else
- echo rs6000-ibm-aix3.2
+ GUESS=rs6000-ibm-aix3.2
fi
- exit ;;
+ ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
@@ -610,57 +655,57 @@ EOF
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/lslpp ] ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ if test -x /usr/bin/lslpp ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
- echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
- exit ;;
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+ ;;
*:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
+ GUESS=rs6000-ibm-aix
+ ;;
ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
+ GUESS=romp-ibm-bsd4.4
+ ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
+ ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
+ GUESS=rs6000-bull-bosx
+ ;;
DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
+ GUESS=m68k-bull-sysv3
+ ;;
9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
+ GUESS=m68k-hp-bsd
+ ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
+ GUESS=m68k-hp-bsd4.4
+ ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
- case "$UNAME_MACHINE" in
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ case $UNAME_MACHINE in
9000/31?) HP_ARCH=m68000 ;;
9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
+ if test -x /usr/bin/getconf; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "$sc_cpu_version" in
+ case $sc_cpu_version in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "$sc_kernel_bits" in
+ case $sc_kernel_bits in
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
- if [ "$HP_ARCH" = "" ]; then
- eval "$set_cc_for_build"
+ if test "$HP_ARCH" = ""; then
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
@@ -698,9 +743,9 @@ EOF
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ "$HP_ARCH" = hppa2.0w ]
+ if test "$HP_ARCH" = hppa2.0w
then
- eval "$set_cc_for_build"
+ set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -719,14 +764,14 @@ EOF
HP_ARCH=hppa64
fi
fi
- echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
- exit ;;
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+ ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux"$HPUX_REV"
- exit ;;
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ GUESS=ia64-hp-hpux$HPUX_REV
+ ;;
3050*:HI-UX:*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
@@ -754,36 +799,36 @@ EOF
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
+ GUESS=unknown-hitachi-hiuxwe2
+ ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
- echo hppa1.1-hp-bsd
- exit ;;
+ GUESS=hppa1.1-hp-bsd
+ ;;
9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
+ GUESS=hppa1.0-hp-bsd
+ ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
+ GUESS=hppa1.0-hp-mpeix
+ ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
- echo hppa1.1-hp-osf
- exit ;;
+ GUESS=hppa1.1-hp-osf
+ ;;
hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
+ GUESS=hppa1.0-hp-osf
+ ;;
i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo "$UNAME_MACHINE"-unknown-osf1mk
+ if test -x /usr/sbin/sysversion ; then
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
else
- echo "$UNAME_MACHINE"-unknown-osf1
+ GUESS=$UNAME_MACHINE-unknown-osf1
fi
- exit ;;
+ ;;
parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
+ GUESS=hppa1.1-hp-lites
+ ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
+ GUESS=c1-convex-bsd
+ ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
@@ -791,17 +836,18 @@ EOF
fi
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
+ GUESS=c34-convex-bsd
+ ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
+ GUESS=c38-convex-bsd
+ ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
+ GUESS=c4-convex-bsd
+ ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=ymp-cray-unicos$CRAY_REL
+ ;;
CRAY*[A-Z]90:*:*:*)
echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
@@ -809,103 +855,129 @@ EOF
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=t90-cray-unicos$CRAY_REL
+ ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
+ ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=sv1-cray-unicos$CRAY_REL
+ ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=craynv-cray-unicosmp$CRAY_REL
+ ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+ ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+ ;;
*:BSD/OS:*:*)
- echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+ ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
+ else
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
+ fi
+ ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
- case "$UNAME_PROCESSOR" in
+ case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
- echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
- exit ;;
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+ ;;
i*:CYGWIN*:*)
- echo "$UNAME_MACHINE"-pc-cygwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-cygwin
+ ;;
*:MINGW64*:*)
- echo "$UNAME_MACHINE"-pc-mingw64
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw64
+ ;;
*:MINGW*:*)
- echo "$UNAME_MACHINE"-pc-mingw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw32
+ ;;
*:MSYS*:*)
- echo "$UNAME_MACHINE"-pc-msys
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msys
+ ;;
i*:PW*:*)
- echo "$UNAME_MACHINE"-pc-pw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-pw32
+ ;;
+ *:SerenityOS:*:*)
+ GUESS=$UNAME_MACHINE-pc-serenity
+ ;;
*:Interix*:*)
- case "$UNAME_MACHINE" in
+ case $UNAME_MACHINE in
x86)
- echo i586-pc-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=i586-pc-interix$UNAME_RELEASE
+ ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
+ ;;
IA64)
- echo ia64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
+ ;;
esac ;;
i*:UWIN*:*)
- echo "$UNAME_MACHINE"-pc-uwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-uwin
+ ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
+ GUESS=x86_64-pc-cygwin
+ ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
+ ;;
*:GNU:*:*)
# the GNU system
- echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
- exit ;;
+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+ ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
- exit ;;
- i*86:Minix:*:*)
- echo "$UNAME_MACHINE"-pc-minix
- exit ;;
+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+ ;;
+ *:Minix:*:*)
+ GUESS=$UNAME_MACHINE-unknown-minix
+ ;;
aarch64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -916,187 +988,225 @@ EOF
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
- arc:Linux:*:* | arceb:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
arm*:Linux:*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
else
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
fi
fi
- exit ;;
+ ;;
avr32*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
cris:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
crisv32:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
e2k:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
frv:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
hexagon:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:Linux:*:*)
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+ ;;
ia64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
k1om:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m32r*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m68*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
mips:Linux:*:* | mips64:Linux:*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ MIPS_ENDIAN=
#else
- CPU=
+ MIPS_ENDIAN=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
- test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+ eval "$cc_set_vars"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
openrisc*:Linux:*:*)
- echo or1k-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=or1k-unknown-linux-$LIBC
+ ;;
or32:Linux:*:* | or1k*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=sparc-unknown-linux-$LIBC
+ ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=hppa64-unknown-linux-$LIBC
+ ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
- PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
- *) echo hppa-unknown-linux-"$LIBC" ;;
+ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+ *) GUESS=hppa-unknown-linux-$LIBC ;;
esac
- exit ;;
+ ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64-unknown-linux-$LIBC
+ ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc-unknown-linux-$LIBC
+ ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64le-unknown-linux-$LIBC
+ ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-"$LIBC"
- exit ;;
- riscv32:Linux:*:* | riscv64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpcle-unknown-linux-$LIBC
+ ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+ ;;
sh64*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sh*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
tile*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
vax:Linux:*:*)
- echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+ ;;
x86_64:Linux:*:*)
- if objdump -f /bin/sh | grep -q elf32-x86-64; then
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32
- else
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI=${LIBC}x32
+ fi
fi
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+ ;;
xtensa*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
+ GUESS=i386-sequent-sysv4
+ ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+ ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo "$UNAME_MACHINE"-pc-os2-emx
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-os2-emx
+ ;;
i*86:XTS-300:*:STOP)
- echo "$UNAME_MACHINE"-unknown-stop
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-stop
+ ;;
i*86:atheos:*:*)
- echo "$UNAME_MACHINE"-unknown-atheos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-atheos
+ ;;
i*86:syllable:*:*)
- echo "$UNAME_MACHINE"-pc-syllable
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-syllable
+ ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
+ ;;
i*86:*DOS:*:*)
- echo "$UNAME_MACHINE"-pc-msdosdjgpp
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+ ;;
i*86:*:4.*:*)
UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
fi
- exit ;;
+ ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
@@ -1104,12 +1214,12 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1119,11 +1229,11 @@ EOF
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv32
+ GUESS=$UNAME_MACHINE-pc-sysv32
fi
- exit ;;
+ ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1131,31 +1241,31 @@ EOF
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
- echo i586-pc-msdosdjgpp
- exit ;;
+ GUESS=i586-pc-msdosdjgpp
+ ;;
Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
+ GUESS=i386-pc-mach3
+ ;;
paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
+ GUESS=i860-intel-osf1
+ ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
fi
- exit ;;
+ ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
- echo m68010-convergent-sysv
- exit ;;
+ GUESS=m68010-convergent-sysv
+ ;;
mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
+ GUESS=m68k-convergent-sysv
+ ;;
M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
+ GUESS=m68k-diab-dnix
+ ;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
@@ -1180,249 +1290,404 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+ ;;
mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
+ GUESS=m68k-atari-sysv4
+ ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+ ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+ ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+ ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dde-sysv$UNAME_RELEASE
+ ;;
RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo "$UNAME_MACHINE"-sni-sysv4
+ GUESS=$UNAME_MACHINE-sni-sysv4
else
- echo ns32k-sni-sysv
+ GUESS=ns32k-sni-sysv
fi
- exit ;;
+ ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ GUESS=i586-unisys-sysv4
+ ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
+ GUESS=hppa1.1-stratus-sysv4
+ ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
+ GUESS=i860-stratus-sysv4
+ ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo "$UNAME_MACHINE"-stratus-vos
- exit ;;
+ GUESS=$UNAME_MACHINE-stratus-vos
+ ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
+ GUESS=hppa1.1-stratus-vos
+ ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-aux$UNAME_RELEASE
+ ;;
news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
+ GUESS=mips-sony-newsos6
+ ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv"$UNAME_RELEASE"
+ if test -d /usr/nec; then
+ GUESS=mips-nec-sysv$UNAME_RELEASE
else
- echo mips-unknown-sysv"$UNAME_RELEASE"
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
fi
- exit ;;
+ ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
+ GUESS=powerpc-be-beos
+ ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
+ GUESS=powerpc-apple-beos
+ ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
+ GUESS=i586-pc-beos
+ ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
+ GUESS=i586-pc-haiku
+ ;;
x86_64:Haiku:*:*)
- echo x86_64-unknown-haiku
- exit ;;
+ GUESS=x86_64-unknown-haiku
+ ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx4-nec-superux$UNAME_RELEASE
+ ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx5-nec-superux$UNAME_RELEASE
+ ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx6-nec-superux$UNAME_RELEASE
+ ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx7-nec-superux$UNAME_RELEASE
+ ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8-nec-superux$UNAME_RELEASE
+ ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
+ ;;
SX-ACE:SUPER-UX:*:*)
- echo sxace-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sxace-nec-superux$UNAME_RELEASE
+ ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+ ;;
*:Rhapsody:*:*)
- echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+ ;;
+ arm64:Darwin:*:*)
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
+ ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval "$set_cc_for_build"
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
fi
- 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
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_PPC >/dev/null
- then
- UNAME_PROCESSOR=powerpc
- fi
+ if test "$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
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
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
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
- echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+ ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+ ;;
*:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
+ GUESS=i386-pc-qnx
+ ;;
NEO-*:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=neo-tandem-nsk$UNAME_RELEASE
+ ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nse-tandem-nsk$UNAME_RELEASE
+ ;;
NSR-*:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsr-tandem-nsk$UNAME_RELEASE
+ ;;
NSV-*:NONSTOP_KERNEL:*:*)
- echo nsv-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsv-tandem-nsk$UNAME_RELEASE
+ ;;
NSX-*:NONSTOP_KERNEL:*:*)
- echo nsx-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsx-tandem-nsk$UNAME_RELEASE
+ ;;
*:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
+ GUESS=mips-compaq-nonstopux
+ ;;
BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
+ GUESS=bs2000-siemens-sysv
+ ;;
DS/*:UNIX_System_V:*:*)
- echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+ ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- if test "$cputype" = 386; then
+ if test "${cputype-}" = 386; then
UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
+ elif test "x${cputype-}" != x; then
+ UNAME_MACHINE=$cputype
fi
- echo "$UNAME_MACHINE"-unknown-plan9
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-plan9
+ ;;
*:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
+ GUESS=pdp10-unknown-tops10
+ ;;
*:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
+ GUESS=pdp10-unknown-tenex
+ ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
+ GUESS=pdp10-dec-tops20
+ ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
+ GUESS=pdp10-xkl-tops20
+ ;;
*:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
+ GUESS=pdp10-unknown-tops20
+ ;;
*:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
+ GUESS=pdp10-unknown-its
+ ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-sei-seiux$UNAME_RELEASE
+ ;;
*:DragonFly:*:*)
- echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
- exit ;;
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+ ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "$UNAME_MACHINE" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
+ case $UNAME_MACHINE in
+ A*) GUESS=alpha-dec-vms ;;
+ I*) GUESS=ia64-dec-vms ;;
+ V*) GUESS=vax-dec-vms ;;
esac ;;
*:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
+ GUESS=i386-pc-xenix
+ ;;
i*86:skyos:*:*)
- echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
- exit ;;
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+ ;;
i*86:rdos:*:*)
- echo "$UNAME_MACHINE"-pc-rdos
- exit ;;
- i*86:AROS:*:*)
- echo "$UNAME_MACHINE"-pc-aros
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-rdos
+ ;;
+ i*86:Fiwix:*:*)
+ GUESS=$UNAME_MACHINE-pc-fiwix
+ ;;
+ *:AROS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-aros
+ ;;
x86_64:VMkernel:*:*)
- echo "$UNAME_MACHINE"-unknown-esx
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-esx
+ ;;
amd64:Isilon\ OneFS:*:*)
- echo x86_64-unknown-onefs
- exit ;;
+ GUESS=x86_64-unknown-onefs
+ ;;
+ *:Unleashed:*:*)
+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+ ;;
esac
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+ echo "$GUESS"
+ exit
+fi
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#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 (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
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#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; }
+
echo "$0: unable to guess system type" >&2
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+case $UNAME_MACHINE:$UNAME_SYSTEM in
mips:Linux | mips64:Linux)
# If we got here on MIPS GNU/Linux, output extra information.
cat >&2 <<EOF
@@ -1439,9 +1704,17 @@ This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite *all*
copies of config.guess and config.sub with the latest versions from:
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
and
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
+# shellcheck disable=SC2003
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
+ cat >&2 <<EOF
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
@@ -1469,11 +1742,12 @@ UNAME_RELEASE = "$UNAME_RELEASE"
UNAME_SYSTEM = "$UNAME_SYSTEM"
UNAME_VERSION = "$UNAME_VERSION"
EOF
+fi
exit 1
# Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/config.sub b/config.sub
index 1d8e98bce..dba16e84c 100755
--- a/config.sub
+++ b/config.sub
@@ -1,12 +1,14 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2022 Free Software Foundation, Inc.
-timestamp='2018-02-22'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-03'
# 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
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -33,7 +35,7 @@ timestamp='2018-02-22'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -50,6 +52,13 @@ timestamp='2018-02-22'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
@@ -67,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2022 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."
@@ -89,7 +98,7 @@ while test $# -gt 0 ; do
- ) # Use stdin as input.
break ;;
-* )
- echo "$me: invalid option $1$help"
+ echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
@@ -110,1223 +119,1186 @@ case $# in
exit 1;;
esac
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
- kopensolaris*-gnu* | cloudabi*-eabi* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- android-linux)
- os=-linux-android
- basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
- ;;
- *)
- basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
- if [ "$basic_machine" != "$1" ]
- then os=`echo "$1" | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
+# Split fields of configuration type
+# shellcheck disable=SC2162
+saved_IFS=$IFS
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
+IFS=$saved_IFS
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
- -bluegene*)
- os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*178)
- os=-lynxos178
- ;;
- -lynx*5)
- os=-lynxos5
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*-*)
+ echo Invalid configuration \`"$1"\': more than four components >&2
+ exit 1
;;
- -lynx*)
- os=-lynxos
+ *-*-*-*)
+ basic_machine=$field1-$field2
+ basic_os=$field3-$field4
;;
- -ptx*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+ # parts
+ maybe_os=$field2-$field3
+ case $maybe_os in
+ nto-qnx* | linux-* | uclinux-uclibc* \
+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+ | storm-chaos* | os2-emx* | rtmk-nova*)
+ basic_machine=$field1
+ basic_os=$maybe_os
+ ;;
+ android-linux)
+ basic_machine=$field1-unknown
+ basic_os=linux-android
+ ;;
+ *)
+ basic_machine=$field1-$field2
+ basic_os=$field3
+ ;;
+ esac
;;
- -psos*)
- os=-psos
+ *-*)
+ # A lone config we happen to match not fitting any pattern
+ case $field1-$field2 in
+ decstation-3100)
+ basic_machine=mips-dec
+ basic_os=
+ ;;
+ *-*)
+ # Second component is usually, but not always the OS
+ case $field2 in
+ # Prevent following clause from handling this valid os
+ sun*os*)
+ basic_machine=$field1
+ basic_os=$field2
+ ;;
+ zephyr*)
+ basic_machine=$field1-unknown
+ basic_os=$field2
+ ;;
+ # Manufacturers
+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+ | convergent* | ncr* | news | 32* | 3600* | 3100* \
+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+ | ultra | tti* | harris | dolphin | highlevel | gould \
+ | cbm | ns | masscomp | apple | axis | knuth | cray \
+ | microblaze* | sim | cisco \
+ | oki | wec | wrs | winbond)
+ basic_machine=$field1-$field2
+ basic_os=
+ ;;
+ *)
+ basic_machine=$field1
+ basic_os=$field2
+ ;;
+ esac
+ ;;
+ esac
;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
+ *)
+ # Convert single-component short-hands not valid as part of
+ # multi-component configurations.
+ case $field1 in
+ 386bsd)
+ basic_machine=i386-pc
+ basic_os=bsd
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ basic_os=scout
+ ;;
+ alliant)
+ basic_machine=fx80-alliant
+ basic_os=
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ basic_os=
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ basic_os=bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ basic_os=sysv
+ ;;
+ amiga)
+ basic_machine=m68k-unknown
+ basic_os=
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ basic_os=amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ basic_os=sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ basic_os=sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ basic_os=bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ basic_os=aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ basic_os=aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ basic_os=dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ basic_os=linux
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ basic_os=cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ basic_os=bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ basic_os=bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ basic_os=bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ basic_os=bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ basic_os=bsd
+ ;;
+ cray)
+ basic_machine=j90-cray
+ basic_os=unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ basic_os=
+ ;;
+ da30)
+ basic_machine=m68k-da30
+ basic_os=
+ ;;
+ decstation | pmax | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ basic_os=
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ basic_os=sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ basic_os=dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ basic_os=msdosdjgpp
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ basic_os=ebmon
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ basic_os=ose
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ basic_os=sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ basic_os=go32
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ basic_os=hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ basic_os=xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ basic_os=hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ basic_os=sysv3
+ ;;
+ hp300 | hp300hpux)
+ basic_machine=m68k-hp
+ basic_os=hpux
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ basic_os=bsd
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ basic_os=osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ basic_os=proelf
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ basic_os=mach
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ basic_os=sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ basic_os=linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ basic_os=sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ basic_os=sysv
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ basic_os=mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ basic_os=mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ basic_os=mingw32ce
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ basic_os=coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ basic_os=morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ basic_os=moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ basic_os=msdos
+ ;;
+ msys)
+ basic_machine=i686-pc
+ basic_os=msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ basic_os=mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ basic_os=nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ basic_os=sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-pc
+ basic_os=netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ basic_os=linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ basic_os=newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ basic_os=newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ basic_os=sysv
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ basic_os=cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ basic_os=cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ basic_os=nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ basic_os=mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ basic_os=nonstopux
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ basic_os=os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ basic_os=ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ basic_os=os68k
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ basic_os=osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ basic_os=linux
+ ;;
+ psp)
+ basic_machine=mipsallegrexel-sony
+ basic_os=psp
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ basic_os=pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ basic_os=rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ basic_os=rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ basic_os=coff
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ sei)
+ basic_machine=mips-sei
+ basic_os=seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ basic_os=
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ basic_os=sysv2
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ basic_os=
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ basic_os=sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ basic_os=
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ basic_os=sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ basic_os=sunos4
+ ;;
+ sun3)
+ basic_machine=m68k-sun
+ basic_os=
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ basic_os=sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ basic_os=sunos4
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ basic_os=
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ basic_os=sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ basic_os=sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ basic_os=solaris2
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ basic_os=
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ basic_os=unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ basic_os=dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ basic_os=unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ basic_os=unicos
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ basic_os=tops20
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ basic_os=tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ basic_os=sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ basic_os=none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ basic_os=sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ basic_os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ basic_os=vsta
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ basic_os=vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ basic_os=vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ basic_os=vxworks
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ basic_os=mingw32
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ basic_os=unicos
+ ;;
+ *)
+ basic_machine=$1
+ basic_os=
+ ;;
+ esac
;;
esac
-# Decode aliases for certain CPU-COMPANY combinations.
+# Decode 1-component or ad-hoc basic machines
case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arceb \
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
- | avr | avr32 \
- | ba \
- | be32 | be64 \
- | bfin \
- | c4x | c8051 | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | e2k | epiphany \
- | fido | fr30 | frv | ft32 \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | hexagon \
- | i370 | i860 | i960 | ia16 | ia64 \
- | ip2k | iq2000 \
- | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa32r6 | mipsisa32r6el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64r6 | mipsisa64r6el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
- | nios | nios2 | nios2eb | nios2el \
- | ns16k | ns32k \
- | open8 | or1k | or1knd | or32 \
- | pdp10 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pru \
- | pyramid \
- | riscv32 | riscv64 \
- | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu \
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
- | ubicom32 \
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | visium \
- | wasm32 \
- | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
- c54x)
- basic_machine=tic54x-unknown
- ;;
- c55x)
- basic_machine=tic55x-unknown
- ;;
- c6x)
- basic_machine=tic6x-unknown
- ;;
- leon|leon[3-9])
- basic_machine=sparc-$basic_machine
- ;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
+ # Here we handle the default manufacturer of certain CPU types. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ cpu=hppa1.1
+ vendor=winbond
;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
+ op50n)
+ cpu=hppa1.1
+ vendor=oki
;;
- ms1)
- basic_machine=mt-unknown
+ op60c)
+ cpu=hppa1.1
+ vendor=oki
;;
-
- strongarm | thumb | xscale)
- basic_machine=arm-unknown
+ ibm*)
+ cpu=i370
+ vendor=ibm
;;
- xgate)
- basic_machine=$basic_machine-unknown
- os=-none
+ orion105)
+ cpu=clipper
+ vendor=highlevel
;;
- xscaleeb)
- basic_machine=armeb-unknown
+ mac | mpw | mac-mpw)
+ cpu=m68k
+ vendor=apple
;;
-
- xscaleel)
- basic_machine=armel-unknown
+ pmac | pmac-mpw)
+ cpu=powerpc
+ vendor=apple
;;
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | ba-* \
- | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
- | c8051-* | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | e2k-* | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | hexagon-* \
- | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
- | ip2k-* | iq2000-* \
- | k1om-* \
- | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
- | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64octeon-* | mips64octeonel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64r5900-* | mips64r5900el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa32r6-* | mipsisa32r6el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64r6-* | mipsisa64r6el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipsr5900-* | mipsr5900el-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | open8-* \
- | or1k*-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pru-* \
- | pyramid-* \
- | riscv32-* | riscv64-* \
- | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
- | tahoe-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile*-* \
- | tron-* \
- | ubicom32-* \
- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
- | vax-* \
- | visium-* \
- | wasm32-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-* | z80-*)
- ;;
- # Recognize the basic CPU types without company name, with glob match.
- xtensa*)
- basic_machine=$basic_machine-unknown
- ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-pc
- os=-bsd
- ;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
+ cpu=m68000
+ vendor=att
;;
3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aros)
- basic_machine=i386-pc
- os=-aros
- ;;
- asmjs)
- basic_machine=asmjs-unknown
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=-linux
- ;;
- blackfin-*)
- basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=-linux
+ cpu=we32k
+ vendor=att
;;
bluegene*)
- basic_machine=powerpc-ibm
- os=-cnk
- ;;
- c54x-*)
- basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- c55x-*)
- basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- c6x-*)
- basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- cegcc)
- basic_machine=arm-unknown
- os=-cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16 | cr16-*)
- basic_machine=cr16-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
+ cpu=powerpc
+ vendor=ibm
+ basic_os=cnk
;;
decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
+ cpu=pdp10
+ vendor=dec
+ basic_os=tops10
;;
decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
+ cpu=pdp10
+ vendor=dec
+ basic_os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=-dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
+ cpu=m68k
+ vendor=motorola
;;
dpx2*)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- e500v[12])
- basic_machine=powerpc-unknown
- os=$os"spe"
- ;;
- e500v[12]-*)
- basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=$os"spe"
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
+ cpu=m68k
+ vendor=bull
+ basic_os=sysv3
;;
encore | umax | mmax)
- basic_machine=ns32k-encore
+ cpu=ns32k
+ vendor=encore
;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
+ elxsi)
+ cpu=elxsi
+ vendor=elxsi
+ basic_os=${basic_os:-bsd}
;;
fx2800)
- basic_machine=i860-alliant
+ cpu=i860
+ vendor=alliant
;;
genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
+ cpu=ns32k
+ vendor=ns
;;
h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
+ cpu=hppa1.1
+ vendor=hitachi
+ basic_os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
+ cpu=m68000
+ vendor=hp
;;
hp9k3[2-9][0-9])
- basic_machine=m68k-hp
+ cpu=m68k
+ vendor=hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
+ cpu=hppa1.0
+ vendor=hp
;;
i*86v32)
- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
- os=-sysv32
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ basic_os=sysv32
;;
i*86v4*)
- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
- os=-sysv4
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ basic_os=sysv4
;;
i*86v)
- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
- os=-sysv
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ basic_os=sysv
;;
i*86sol2)
- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ basic_os=solaris2
;;
- vsta)
- basic_machine=i386-unknown
- os=-vsta
+ j90 | j90-cray)
+ cpu=j90
+ vendor=cray
+ basic_os=${basic_os:-unicos}
;;
iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
+ cpu=mips
+ vendor=sgi
+ case $basic_os in
+ irix*)
;;
*)
- os=-irix4
+ basic_os=irix4
;;
esac
;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- leon-*|leon[3-9]-*)
- basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- microblaze*)
- basic_machine=microblaze-xilinx
- ;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- moxiebox)
- basic_machine=moxie-unknown
- os=-moxiebox
+ cpu=m68000
+ vendor=convergent
;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
- ;;
- msys)
- basic_machine=i686-pc
- os=-msys
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- os=-nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ cpu=m68k
+ vendor=atari
+ basic_os=mint
;;
news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
+ cpu=mips
+ vendor=sony
+ basic_os=newsos
;;
next | m*-next)
- basic_machine=m68k-next
- case $os in
- -nextstep* )
+ cpu=m68k
+ vendor=next
+ case $basic_os in
+ openstep*)
+ ;;
+ nextstep*)
;;
- -ns2*)
- os=-nextstep2
+ ns2*)
+ basic_os=nextstep2
;;
*)
- os=-nextstep3
+ basic_os=nextstep3
;;
esac
;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
np1)
- basic_machine=np1-gould
- ;;
- neo-tandem)
- basic_machine=neo-tandem
- ;;
- nse-tandem)
- basic_machine=nse-tandem
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- nsv-tandem)
- basic_machine=nsv-tandem
- ;;
- nsx-tandem)
- basic_machine=nsx-tandem
+ cpu=np1
+ vendor=gould
;;
op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
+ cpu=hppa1.1
+ vendor=oki
+ basic_os=proelf
;;
pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=-linux
- ;;
- parisc-*)
- basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=-linux
+ cpu=hppa1.1
+ vendor=hitachi
+ basic_os=hiuxwe2
;;
pbd)
- basic_machine=sparc-tti
+ cpu=sparc
+ vendor=tti
;;
pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
+ cpu=m68k
+ vendor=tti
;;
- pc98-*)
- basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ pc532)
+ cpu=ns32k
+ vendor=pc532
;;
pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc | ppcbe) basic_machine=powerpc-unknown
+ cpu=pn
+ vendor=gould
;;
- ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle)
- basic_machine=powerpcle-unknown
+ power)
+ cpu=power
+ vendor=ibm
;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ps2)
+ cpu=i386
+ vendor=ibm
;;
- ppc64) basic_machine=powerpc64-unknown
+ rm[46]00)
+ cpu=mips
+ vendor=siemens
;;
- ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ rtpc | rtpc-*)
+ cpu=romp
+ vendor=ibm
;;
- ppc64le | powerpc64little)
- basic_machine=powerpc64le-unknown
+ sde)
+ cpu=mipsisa32
+ vendor=sde
+ basic_os=${basic_os:-elf}
;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ simso-wrs)
+ cpu=sparclite
+ vendor=wrs
+ basic_os=vxworks
;;
- ps2)
- basic_machine=i386-ibm
+ tower | tower-32)
+ cpu=m68k
+ vendor=ncr
;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
+ vpp*|vx|vx-*)
+ cpu=f301
+ vendor=fujitsu
;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
+ w65)
+ cpu=w65
+ vendor=wdc
;;
- rdos32)
- basic_machine=i386-pc
- os=-rdos
+ w89k-*)
+ cpu=hppa1.1
+ vendor=winbond
+ basic_os=proelf
;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
+ none)
+ cpu=none
+ vendor=none
;;
- rm[46]00)
- basic_machine=mips-siemens
+ leon|leon[3-9])
+ cpu=sparc
+ vendor=$basic_machine
;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
+ leon-*|leon[3-9]-*)
+ cpu=sparc
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
- s390 | s390-*)
- basic_machine=s390-ibm
+
+ *-*)
+ # shellcheck disable=SC2162
+ saved_IFS=$IFS
+ IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
+ IFS=$saved_IFS
;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ cpu=$basic_machine
+ vendor=pc
;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
+ # These rules are duplicated from below for sake of the special case above;
+ # i.e. things that normalized to x86 arches should also default to "pc"
+ pc98)
+ cpu=i386
+ vendor=pc
;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
+ x64 | amd64)
+ cpu=x86_64
+ vendor=pc
;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
+ # Recognize the basic CPU types without company name.
+ *)
+ cpu=$basic_machine
+ vendor=unknown
;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ craynv-unknown)
+ vendor=cray
+ basic_os=${basic_os:-unicosmp}
;;
- sei)
- basic_machine=mips-sei
- os=-seiux
+ c90-unknown | c90-cray)
+ vendor=cray
+ basic_os=${Basic_os:-unicos}
;;
- sequent)
- basic_machine=i386-sequent
+ fx80-unknown)
+ vendor=alliant
;;
- sh5el)
- basic_machine=sh5le-unknown
+ romp-unknown)
+ vendor=ibm
;;
- simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
+ mmix-unknown)
+ vendor=knuth
;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
+ microblaze-unknown | microblazeel-unknown)
+ vendor=xilinx
;;
- spur)
- basic_machine=spur-unknown
+ rs6000-unknown)
+ vendor=ibm
;;
- st2000)
- basic_machine=m68k-tandem
+ vax-unknown)
+ vendor=dec
;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
+ pdp11-unknown)
+ vendor=dec
;;
- strongarm-* | thumb-*)
- basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ we32k-unknown)
+ vendor=att
;;
- sun2)
- basic_machine=m68000-sun
+ cydra-unknown)
+ vendor=cydrome
;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
+ i370-ibm*)
+ vendor=ibm
;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
+ orion-unknown)
+ vendor=highlevel
;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
+ xps-unknown | xps100-unknown)
+ cpu=xps100
+ vendor=honeywell
;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
+
+ # Here we normalize CPU types with a missing or matching vendor
+ armh-unknown | armh-alt)
+ cpu=armv7l
+ vendor=alt
+ basic_os=${basic_os:-linux-gnueabihf}
;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
+ dpx20-unknown | dpx20-bull)
+ cpu=rs6000
+ vendor=bull
+ basic_os=${basic_os:-bosx}
;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
+
+ # Here we normalize CPU types irrespective of the vendor
+ amd64-*)
+ cpu=x86_64
;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
+ blackfin-*)
+ cpu=bfin
+ basic_os=linux
;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
+ c54x-*)
+ cpu=tic54x
;;
- sun4)
- basic_machine=sparc-sun
+ c55x-*)
+ cpu=tic55x
;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
+ c6x-*)
+ cpu=tic6x
;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
+ e500v[12]-*)
+ cpu=powerpc
+ basic_os=${basic_os}"spe"
;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
+ mips3*-*)
+ cpu=mips64
;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
+ ms1-*)
+ cpu=mt
;;
- t90)
- basic_machine=t90-cray
- os=-unicos
+ m68knommu-*)
+ cpu=m68k
+ basic_os=linux
;;
- tile*)
- basic_machine=$basic_machine-unknown
- os=-linux-gnu
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+ cpu=s12z
;;
- tx39)
- basic_machine=mipstx39-unknown
+ openrisc-*)
+ cpu=or32
;;
- tx39el)
- basic_machine=mipstx39el-unknown
+ parisc-*)
+ cpu=hppa
+ basic_os=linux
;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ cpu=i586
;;
- tower | tower-32)
- basic_machine=m68k-ncr
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ cpu=i686
;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ cpu=i686
;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
+ pentium4-*)
+ cpu=i786
;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
+ pc98-*)
+ cpu=i386
;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
+ ppc-* | ppcbe-*)
+ cpu=powerpc
;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
+ ppcle-* | powerpclittle-*)
+ cpu=powerpcle
;;
- vms)
- basic_machine=vax-dec
- os=-vms
+ ppc64-*)
+ cpu=powerpc64
;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
+ ppc64le-* | powerpc64little-*)
+ cpu=powerpc64le
;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
+ sb1-*)
+ cpu=mipsisa64sb1
;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
+ sb1el-*)
+ cpu=mipsisa64sb1el
;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
+ sh5e[lb]-*)
+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
;;
- w65*)
- basic_machine=w65-wdc
- os=-none
+ spur-*)
+ cpu=spur
;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
+ strongarm-* | thumb-*)
+ cpu=arm
;;
- x64)
- basic_machine=x86_64-pc
+ tx39-*)
+ cpu=mipstx39
;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
+ tx39el-*)
+ cpu=mipstx39el
;;
- xps | xps100)
- basic_machine=xps100-honeywell
+ x64-*)
+ cpu=x86_64
;;
xscale-* | xscalee[bl]-*)
- basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;;
- none)
- basic_machine=none-none
- os=-none
+ arm64-* | aarch64le-*)
+ cpu=aarch64
;;
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
+ # Recognize the canonical CPU Types that limit and/or modify the
+ # company names they are paired with.
+ cr16-*)
+ basic_os=${basic_os:-elf}
;;
- rs6000)
- basic_machine=rs6000-ibm
+ crisv32-* | etraxfs*-*)
+ cpu=crisv32
+ vendor=axis
;;
- vax)
- basic_machine=vax-dec
+ cris-* | etrax*-*)
+ cpu=cris
+ vendor=axis
;;
- pdp11)
- basic_machine=pdp11-dec
+ crx-*)
+ basic_os=${basic_os:-elf}
;;
- we32k)
- basic_machine=we32k-att
+ neo-tandem)
+ cpu=neo
+ vendor=tandem
;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
+ nse-tandem)
+ cpu=nse
+ vendor=tandem
;;
- cydra)
- basic_machine=cydra-cydrome
+ nsr-tandem)
+ cpu=nsr
+ vendor=tandem
;;
- orion)
- basic_machine=orion-highlevel
+ nsv-tandem)
+ cpu=nsv
+ vendor=tandem
;;
- orion105)
- basic_machine=clipper-highlevel
+ nsx-tandem)
+ cpu=nsx
+ vendor=tandem
;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
+ mipsallegrexel-sony)
+ cpu=mipsallegrexel
+ vendor=sony
;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
+ tile*-*)
+ basic_os=${basic_os:-linux-gnu}
;;
+
*)
- echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
- exit 1
+ # Recognize the canonical CPU types that are allowed with any
+ # company name.
+ case $cpu in
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | abacus \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+ | alphapca5[67] | alpha64pca5[67] \
+ | am33_2.0 \
+ | amdgcn \
+ | arc | arceb | arc32 | arc64 \
+ | arm | arm[lb]e | arme[lb] | armv* \
+ | avr | avr32 \
+ | asmjs \
+ | ba \
+ | be32 | be64 \
+ | bfin | bpf | bs2000 \
+ | c[123]* | c30 | [cjt]90 | c4x \
+ | c8051 | clipper | craynv | csky | cydra \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | elxsi | epiphany \
+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | h8300 | h8500 \
+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64eb | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r3 | mipsisa32r3el \
+ | mipsisa32r5 | mipsisa32r5el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r3 | mipsisa64r3el \
+ | mipsisa64r5 | mipsisa64r5el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mmix \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nfp \
+ | nios | nios2 | nios2eb | nios2el \
+ | none | np1 | ns16k | ns32k | nvptx \
+ | open8 \
+ | or1k* \
+ | or32 \
+ | orion \
+ | picochip \
+ | pdp10 | pdp11 | pj | pjl | pn | power \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+ | pru \
+ | pyramid \
+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
+ | rl78 | romp | rs6000 | rx \
+ | s390 | s390x \
+ | score \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+ | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+ | spu \
+ | tahoe \
+ | thumbv7* \
+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+ | tron \
+ | ubicom32 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | vax \
+ | visium \
+ | w65 \
+ | wasm32 | wasm64 \
+ | we32k \
+ | x86 | x86_64 | xc16x | xgate | xps100 \
+ | xstormy16 | xtensa* \
+ | ymp \
+ | z8k | z80)
+ ;;
+
+ *)
+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ exit 1
+ ;;
+ esac
;;
esac
# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
+case $vendor in
+ digital*)
+ vendor=dec
;;
- *-commodore*)
- basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
+ commodore*)
+ vendor=cbm
;;
*)
;;
@@ -1334,203 +1306,215 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x"$os" != x"" ]
+if test x$basic_os != x
then
+
+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+ gnu/linux*)
+ kernel=linux
+ os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
+ ;;
+ os2-emx)
+ kernel=os2
+ os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
+ ;;
+ nto-qnx*)
+ kernel=nto
+ os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
+ ;;
+ *-*)
+ # shellcheck disable=SC2162
+ saved_IFS=$IFS
+ IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+ IFS=$saved_IFS
+ ;;
+ # Default OS when just kernel was specified
+ nto*)
+ kernel=nto
+ os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
+ ;;
+ linux*)
+ kernel=linux
+ os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
+ ;;
+ *)
+ kernel=
+ os=$basic_os
+ ;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
case $os in
# First match some system type aliases that might get confused
# with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ # solaris* is a basic system type, with this one exception.
+ auroraux)
+ os=auroraux
;;
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ bluegene*)
+ os=cnk
;;
- -solaris)
- os=-solaris2
+ solaris1 | solaris1.*)
+ os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
;;
- -unixware*)
- os=-sysv4.2uw
+ solaris)
+ os=solaris2
;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ unixware*)
+ os=sysv4.2uw
;;
# es1800 is here to avoid being matched by es* (a different OS)
- -es1800*)
- os=-ose
+ es1800*)
+ os=ose
;;
- # Now accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST end in a * to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* | -cloudabi* | -sortix* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
- | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
- | -midnightbsd*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
+ # Some version numbers need modification
+ chorusos*)
+ os=chorusos
;;
- -nto-qnx*)
+ isc)
+ os=isc2.2
;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ sco6)
+ os=sco5v6
;;
- -sim | -xray | -os68k* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ sco5)
+ os=sco3.2v5
;;
- -mac*)
- os=`echo "$os" | sed -e 's|mac|macos|'`
+ sco4)
+ os=sco3.2v4
;;
- -linux-dietlibc)
- os=-linux-dietlibc
+ sco3.2.[4-9]*)
+ os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ sco*v* | scout)
+ # Don't match below
;;
- -sunos5*)
- os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ sco*)
+ os=sco3.2v2
;;
- -sunos6*)
- os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ psos*)
+ os=psos
;;
- -opened*)
- os=-openedition
+ qnx*)
+ os=qnx
;;
- -os400*)
- os=-os400
+ hiux*)
+ os=hiuxwe2
;;
- -wince*)
- os=-wince
+ lynx*178)
+ os=lynxos178
;;
- -utek*)
- os=-bsd
+ lynx*5)
+ os=lynxos5
;;
- -dynix*)
- os=-bsd
+ lynxos*)
+ # don't get caught up in next wildcard
;;
- -acis*)
- os=-aos
+ lynx*)
+ os=lynxos
;;
- -atheos*)
- os=-atheos
+ mac[0-9]*)
+ os=`echo "$os" | sed -e 's|mac|macos|'`
;;
- -syllable*)
- os=-syllable
+ opened*)
+ os=openedition
;;
- -386bsd)
- os=-bsd
+ os400*)
+ os=os400
;;
- -ctix* | -uts*)
- os=-sysv
+ sunos5*)
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
- -nova*)
- os=-rtmk-nova
+ sunos6*)
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
- -ns2)
- os=-nextstep2
+ wince*)
+ os=wince
;;
- -nsk*)
- os=-nsk
+ utek*)
+ os=bsd
;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
+ dynix*)
+ os=bsd
;;
- -sinix*)
- os=-sysv4
+ acis*)
+ os=aos
;;
- -tpf*)
- os=-tpf
+ atheos*)
+ os=atheos
;;
- -triton*)
- os=-sysv3
+ syllable*)
+ os=syllable
+ ;;
+ 386bsd)
+ os=bsd
+ ;;
+ ctix* | uts*)
+ os=sysv
+ ;;
+ nova*)
+ os=rtmk-nova
+ ;;
+ ns2)
+ os=nextstep2
+ ;;
+ # Preserve the version number of sinix5.
+ sinix5.*)
+ os=`echo "$os" | sed -e 's|sinix|sysv|'`
;;
- -oss*)
- os=-sysv3
+ sinix*)
+ os=sysv4
;;
- -svr4*)
- os=-sysv4
+ tpf*)
+ os=tpf
;;
- -svr3)
- os=-sysv3
+ triton*)
+ os=sysv3
;;
- -sysvr4)
- os=-sysv4
+ oss*)
+ os=sysv3
;;
- # This must come after -sysvr4.
- -sysv*)
+ svr4*)
+ os=sysv4
;;
- -ose*)
- os=-ose
+ svr3)
+ os=sysv3
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ sysvr4)
+ os=sysv4
;;
- -zvmoe)
- os=-zvmoe
+ ose*)
+ os=ose
;;
- -dicos*)
- os=-dicos
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ os=mint
;;
- -pikeos*)
+ dicos*)
+ os=dicos
+ ;;
+ pikeos*)
# Until real need of OS specific support for
# particular features comes up, bare metal
# configurations are quite functional.
- case $basic_machine in
+ case $cpu in
arm*)
- os=-eabi
+ os=eabi
;;
*)
- os=-elf
+ os=elf
;;
esac
;;
- -nacl*)
- ;;
- -ios)
- ;;
- -none)
- ;;
*)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
- exit 1
+ # No normalization, but not necessarily accepted, that comes below.
;;
esac
+
else
# Here we handle the default operating systems that come with various machines.
@@ -1543,258 +1527,363 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
-case $basic_machine in
+kernel=
+case $cpu-$vendor in
score-*)
- os=-elf
+ os=elf
;;
spu-*)
- os=-elf
+ os=elf
;;
*-acorn)
- os=-riscix1.2
+ os=riscix1.2
;;
arm*-rebel)
- os=-linux
+ kernel=linux
+ os=gnu
;;
arm*-semi)
- os=-aout
+ os=aout
;;
c4x-* | tic4x-*)
- os=-coff
+ os=coff
;;
c8051-*)
- os=-elf
+ os=elf
+ ;;
+ clipper-intergraph)
+ os=clix
;;
hexagon-*)
- os=-elf
+ os=elf
;;
tic54x-*)
- os=-coff
+ os=coff
;;
tic55x-*)
- os=-coff
+ os=coff
;;
tic6x-*)
- os=-coff
+ os=coff
;;
# This must come before the *-dec entry.
pdp10-*)
- os=-tops20
+ os=tops20
;;
pdp11-*)
- os=-none
+ os=none
;;
*-dec | vax-*)
- os=-ultrix4.2
+ os=ultrix4.2
;;
m68*-apollo)
- os=-domain
+ os=domain
;;
i386-sun)
- os=-sunos4.0.2
+ os=sunos4.0.2
;;
m68000-sun)
- os=-sunos3
+ os=sunos3
;;
m68*-cisco)
- os=-aout
+ os=aout
;;
mep-*)
- os=-elf
+ os=elf
;;
mips*-cisco)
- os=-elf
+ os=elf
;;
mips*-*)
- os=-elf
+ os=elf
;;
or32-*)
- os=-coff
+ os=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
+ os=sysv3
;;
sparc-* | *-sun)
- os=-sunos4.1.1
+ os=sunos4.1.1
;;
pru-*)
- os=-elf
+ os=elf
;;
*-be)
- os=-beos
+ os=beos
;;
*-ibm)
- os=-aix
+ os=aix
;;
*-knuth)
- os=-mmixware
+ os=mmixware
;;
*-wec)
- os=-proelf
+ os=proelf
;;
*-winbond)
- os=-proelf
+ os=proelf
;;
*-oki)
- os=-proelf
+ os=proelf
;;
*-hp)
- os=-hpux
+ os=hpux
;;
*-hitachi)
- os=-hiux
+ os=hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
+ os=sysv
;;
*-cbm)
- os=-amigaos
+ os=amigaos
;;
*-dg)
- os=-dgux
+ os=dgux
;;
*-dolphin)
- os=-sysv3
+ os=sysv3
;;
m68k-ccur)
- os=-rtu
+ os=rtu
;;
m88k-omron*)
- os=-luna
+ os=luna
;;
*-next)
- os=-nextstep
+ os=nextstep
;;
*-sequent)
- os=-ptx
+ os=ptx
;;
*-crds)
- os=-unos
+ os=unos
;;
*-ns)
- os=-genix
+ os=genix
;;
i370-*)
- os=-mvs
+ os=mvs
;;
*-gould)
- os=-sysv
+ os=sysv
;;
*-highlevel)
- os=-bsd
+ os=bsd
;;
*-encore)
- os=-bsd
+ os=bsd
;;
*-sgi)
- os=-irix
+ os=irix
;;
*-siemens)
- os=-sysv4
+ os=sysv4
;;
*-masscomp)
- os=-rtu
+ os=rtu
;;
f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
+ os=uxpv
;;
*-rom68k)
- os=-coff
+ os=coff
;;
*-*bug)
- os=-coff
+ os=coff
;;
*-apple)
- os=-macos
+ os=macos
;;
*-atari*)
- os=-mint
+ os=mint
+ ;;
+ *-wrs)
+ os=vxworks
;;
*)
- os=-none
+ os=none
;;
esac
+
fi
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+ # Sometimes we do "kernel-libc", so those need to count as OSes.
+ musl* | newlib* | relibc* | uclibc*)
+ ;;
+ # Likewise for "kernel-abi"
+ eabi* | gnueabi*)
+ ;;
+ # VxWorks passes extra cpu info in the 4th filed.
+ simlinux | simwindows | spe)
+ ;;
+ # Now accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST end in a * to match a version number.
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
+ | hiux* | abug | nacl* | netware* | windows* \
+ | os9* | macos* | osx* | ios* \
+ | mpw* | magic* | mmixware* | mon960* | lnews* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+ | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* | serenity* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | mint* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
+ | fiwix* )
+ ;;
+ # This one is extra strict with allowed versions
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ none)
+ ;;
+ *)
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
+ | linux-musl* | linux-relibc* | linux-uclibc* )
+ ;;
+ uclinux-uclibc* )
+ ;;
+ -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+ # These are just libc implementations, not actual OSes, and thus
+ # require a kernel.
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ exit 1
+ ;;
+ kfreebsd*-gnu* | kopensolaris*-gnu*)
+ ;;
+ vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ ;;
+ nto-qnx*)
+ ;;
+ os2-emx)
+ ;;
+ *-eabi* | *-gnueabi*)
+ ;;
+ -*)
+ # Blank kernel with real OS is always fine.
+ ;;
+ *-*)
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ exit 1
+ ;;
+esac
+
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
+case $vendor in
+ unknown)
+ case $cpu-$os in
+ *-riscix*)
vendor=acorn
;;
- -sunos*)
+ *-sunos*)
vendor=sun
;;
- -cnk*|-aix*)
+ *-cnk* | *-aix*)
vendor=ibm
;;
- -beos*)
+ *-beos*)
vendor=be
;;
- -hpux*)
+ *-hpux*)
vendor=hp
;;
- -mpeix*)
+ *-mpeix*)
vendor=hp
;;
- -hiux*)
+ *-hiux*)
vendor=hitachi
;;
- -unos*)
+ *-unos*)
vendor=crds
;;
- -dgux*)
+ *-dgux*)
vendor=dg
;;
- -luna*)
+ *-luna*)
vendor=omron
;;
- -genix*)
+ *-genix*)
vendor=ns
;;
- -mvs* | -opened*)
+ *-clix*)
+ vendor=intergraph
+ ;;
+ *-mvs* | *-opened*)
+ vendor=ibm
+ ;;
+ *-os400*)
vendor=ibm
;;
- -os400*)
+ s390-* | s390x-*)
vendor=ibm
;;
- -ptx*)
+ *-ptx*)
vendor=sequent
;;
- -tpf*)
+ *-tpf*)
vendor=ibm
;;
- -vxsim* | -vxworks* | -windiss*)
+ *-vxsim* | *-vxworks* | *-windiss*)
vendor=wrs
;;
- -aux*)
+ *-aux*)
vendor=apple
;;
- -hms*)
+ *-hms*)
vendor=hitachi
;;
- -mpw* | -macos*)
+ *-mpw* | *-macos*)
vendor=apple
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
vendor=atari
;;
- -vos*)
+ *-vos*)
vendor=stratus
;;
esac
- basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
;;
esac
-echo "$basic_machine$os"
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
exit
# Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/configure b/configure
index ec37ba3b0..fdad6a87f 100755
--- a/configure
+++ b/configure
@@ -12,7 +12,7 @@
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
#
-# Copyright (c) 1998 - 2021 Daniel Stenberg, <daniel@haxx.se>
+# Copyright (c) 1998 - 2022 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
@@ -898,7 +898,6 @@ ac_includes_default="\
#endif"
ac_header_c_list=
-enable_option_checking=no
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
@@ -921,10 +920,7 @@ DOING_CURL_SYMBOL_HIDING_TRUE
USE_UNIX_SOCKETS
BUILD_LIBHOSTNAME_FALSE
BUILD_LIBHOSTNAME_TRUE
-USE_EMBEDDED_ARES_FALSE
-USE_EMBEDDED_ARES_TRUE
USE_ARES
-subdirs
USE_MANUAL_FALSE
USE_MANUAL_TRUE
MANOPT
@@ -932,13 +928,16 @@ NROFF
PERL
FISH_FUNCTIONS_DIR
ZSH_FUNCTIONS_DIR
+USE_MSH3
USE_QUICHE
USE_NGHTTP3
+USE_NGTCP2_CRYPTO_WOLFSSL
USE_NGTCP2_CRYPTO_GNUTLS
USE_NGTCP2_CRYPTO_OPENSSL
USE_NGTCP2
USE_NGHTTP2
IDN_ENABLED
+CURL_PLIST_VERSION
CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE
CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE
CURL_LT_SHLIB_VERSIONED_FLAVOUR
@@ -957,7 +956,6 @@ NSS_LIBS
USE_NSS
USE_RUSTLS
USE_BEARSSL
-USE_MESALINK
USE_WOLFSSL
USE_MBEDTLS
HAVE_GNUTLS_SRP
@@ -999,6 +997,8 @@ CURL_DISABLE_FILE
CURL_DISABLE_FTP
CURL_DISABLE_RTSP
CURL_DISABLE_HTTP
+OS_WINDOWS_FALSE
+OS_WINDOWS_TRUE
USE_WIN32_CRYPTO
USE_WIN32_SMALL_FILES
USE_WIN32_LARGE_FILES
@@ -1021,6 +1021,7 @@ CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE
CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE
CURL_LT_SHLIB_USE_VERSION_INFO_FALSE
CURL_LT_SHLIB_USE_VERSION_INFO_TRUE
+RC
LT_SYS_LIBRARY_PATH
OTOOL64
OTOOL
@@ -1030,6 +1031,7 @@ DSYMUTIL
MANIFEST_TOOL
RANLIB
ac_ct_AR
+FILECMD
LN_S
NM
ac_ct_DUMPBIN
@@ -1176,9 +1178,9 @@ with_openssl
with_gnutls
with_mbedtls
with_wolfssl
-with_mesalink
with_bearssl
with_rustls
+with_nss_deprecated
with_nss
with_darwinssl
enable_largefile
@@ -1240,8 +1242,10 @@ with_nghttp2
with_ngtcp2
with_nghttp3
with_quiche
+with_msh3
with_zsh_functions_dir
with_fish_functions_dir
+with_n64_deprecated
enable_threaded_resolver
enable_pthreads
enable_verbose
@@ -1262,7 +1266,9 @@ enable_progress_meter
enable_dnsshuffle
enable_get_easy_options
enable_alt_svc
+enable_headers_api
enable_hsts
+enable_websockets
'
ac_precious_vars='build_alias
host_alias
@@ -1274,7 +1280,7 @@ LIBS
CPPFLAGS
CPP
LT_SYS_LIBRARY_PATH'
-ac_subdirs_all='ares'
+
# Initialize some variables set by options.
ac_init_help=
@@ -2030,8 +2036,12 @@ Optional Features:
Disable curl_easy_options
--enable-alt-svc Enable alt-svc support
--disable-alt-svc Disable alt-svc support
+ --enable-headers-api Enable headers-api support
+ --disable-headers-api Disable headers-api support
--enable-hsts Enable HSTS support
--disable-hsts Disable HSTS support
+ --enable-websockets Enable WebSockets support
+ --disable-websockets Disable WebSockets support
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -2051,12 +2061,11 @@ Optional Packages:
installation root
--with-wolfssl=PATH where to look for WolfSSL, PATH points to the
installation root (default: system lib default)
- --with-mesalink=PATH where to look for MesaLink, PATH points to the
- installation root
--with-bearssl=PATH where to look for BearSSL, PATH points to the
installation root
--with-rustls=PATH where to look for rustls, PATH points to the
installation root
+ --with-nss-deprecated confirm you realize NSS is going away
--with-nss=PATH where to look for NSS, PATH points to the
installation root
@@ -2138,6 +2147,8 @@ Optional Packages:
--without-nghttp3 Disable nghttp3 usage
--with-quiche=PATH Enable quiche usage
--without-quiche Disable quiche usage
+ --with-msh3=PATH Enable msh3 usage
+ --without-msh3 Disable msh3 usage
--with-zsh-functions-dir=PATH
Install zsh completions to PATH
--without-zsh-functions-dir
@@ -2146,6 +2157,8 @@ Optional Packages:
Install fish completions to PATH
--without-fish-functions-dir
Do not install fish completions
+ --with-n64-deprecated confirm you realize support for systems without 64
+ bit data types is going away
Some influential environment variables:
CC C compiler command
@@ -2233,7 +2246,7 @@ Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
-Copyright (c) 1998 - 2021 Daniel Stenberg, <daniel@haxx.se>
+Copyright (c) 1998 - 2022 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
@@ -2321,6 +2334,39 @@ fi
} # ac_fn_c_try_cpp
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ eval "$3=yes"
+else $as_nop
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
# ac_fn_c_try_link LINENO
# -----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded.
@@ -2368,39 +2414,6 @@ fi
} # ac_fn_c_try_link
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-printf %s "checking for $2... " >&6; }
-if eval test \${$3+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- eval "$3=yes"
-else $as_nop
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2497,8 +2510,8 @@ fi
} # ac_fn_c_try_run
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
+# ac_fn_c_check_type LINENO SIZEOF_LONG_LONG VAR INCLUDES
+# -------------------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
# variable VAR accordingly.
ac_fn_c_check_type ()
@@ -3930,13 +3943,15 @@ fi
if test -z "$EGREP"; then
- if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that grep -E works" >&5
+printf %s "checking that grep -E works... " >&6; }
+ if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
EGREP="$GREP -E"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EGREP" >&5
-printf "%s\n" "$EGREP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
# Extract the first word of "egrep", so it can be a program name with args.
set dummy egrep; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -3987,7 +4002,7 @@ fi
fi
fi
if test -z "$EGREP" || test "$EGREP" = "not_found"; then
- as_fn_error $? "egrep not found in PATH. Cannot continue without egrep." "$LINENO" 5
+ as_fn_error $? "grep -E is not working and egrep is not found in PATH. Cannot continue." "$LINENO" 5
fi
@@ -5582,6 +5597,87 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
+do
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
+ fi
+done
+
+
+
+
+
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+ for ac_header in stdatomic.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "stdatomic.h" "ac_cv_header_stdatomic_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdatomic_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDATOMIC_H 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _Atomic is available" >&5
+printf %s "checking if _Atomic is available... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ $curl_includes_unistd
+
+int main (void)
+{
+
+ _Atomic int i = 0;
+ i = 4; // Force an atomic-write operation.
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+printf "%s\n" "#define HAVE_ATOMIC 1" >>confdefs.h
+
+ tst_atomic="yes"
+
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ tst_atomic="no"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+done
+
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
printf %s "checking for a sed that does not truncate output... " >&6; }
if test ${ac_cv_path_SED+y}
@@ -5834,7 +5930,7 @@ fi
fi
CPPFLAGS="$CPPFLAGS -DNDEBUG"
- CFLAGS="$CLAGS -O0 -g -fprofile-arcs -ftest-coverage"
+ CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage"
LIBS="$LIBS -lgcov"
fi
@@ -6530,7 +6626,7 @@ PKGADD_VENDOR="curl.se"
- curl_ssl_msg="no (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl,rustls} )"
+ curl_ssl_msg="no (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,amissl,bearssl,rustls} )"
curl_ssh_msg="no (--with-{libssh,libssh2})"
curl_zlib_msg="no (--with-zlib)"
curl_brotli_msg="no (--with-brotli)"
@@ -6552,11 +6648,13 @@ curl_verbose_msg="enabled (--disable-verbose)"
curl_rtmp_msg="no (--with-librtmp)"
curl_psl_msg="no (--with-libpsl)"
curl_altsvc_msg="enabled (--disable-alt-svc)"
+curl_headers_msg="enabled (--disable-headers-api)"
curl_hsts_msg="enabled (--disable-hsts)"
+ curl_ws_msg="no (--enable-websockets)"
ssl_backends=
curl_h1_msg="enabled (internal)"
curl_h2_msg="no (--with-nghttp2, --with-hyper)"
- curl_h3_msg="no (--with-ngtcp2, --with-quiche)"
+ curl_h3_msg="no (--with-ngtcp2, --with-quiche --with-msh3)"
enable_altsvc="yes"
hsts="yes"
@@ -6579,10 +6677,9 @@ OPT_SECURETRANSPORT=no
# Check whether --with-secure-transport was given.
if test ${with_secure_transport+y}
then :
- withval=$with_secure_transport; OPT_SECURETRANSPORT=$withval
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }Secure-Transport"
+ withval=$with_secure_transport;
+ OPT_SECURETRANSPORT=$withval
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"
fi
@@ -6592,10 +6689,10 @@ OPT_AMISSL=no
# Check whether --with-amissl was given.
if test ${with_amissl+y}
then :
- withval=$with_amissl; OPT_AMISSL=$withval
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }AmiSSL"
+ withval=$with_amissl;
+ OPT_AMISSL=$withval
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL"
+
fi
@@ -6605,113 +6702,114 @@ ca="no"
# Check whether --with-ssl was given.
if test ${with_ssl+y}
then :
- withval=$with_ssl; OPT_SSL=$withval
+ withval=$with_ssl;
+ OPT_SSL=$withval
OPT_OPENSSL=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }OpenSSL"
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
+ else
+ SSL_DISABLED="D"
+ fi
+
fi
- fi
# Check whether --with-openssl was given.
if test ${with_openssl+y}
then :
- withval=$with_openssl; OPT_OPENSSL=$withval
+ withval=$with_openssl;
+ OPT_OPENSSL=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }OpenSSL"
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
+ fi
+
fi
- fi
OPT_GNUTLS=no
# Check whether --with-gnutls was given.
if test ${with_gnutls+y}
then :
- withval=$with_gnutls; OPT_GNUTLS=$withval
+ withval=$with_gnutls;
+ OPT_GNUTLS=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }GnuTLS"
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS"
+ fi
+
fi
- fi
OPT_MBEDTLS=no
# Check whether --with-mbedtls was given.
if test ${with_mbedtls+y}
then :
- withval=$with_mbedtls; OPT_MBEDTLS=$withval
+ withval=$with_mbedtls;
+ OPT_MBEDTLS=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }mbedTLS"
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS"
+ fi
+
fi
- fi
OPT_WOLFSSL=no
# Check whether --with-wolfssl was given.
if test ${with_wolfssl+y}
then :
- withval=$with_wolfssl; OPT_WOLFSSL=$withval
+ withval=$with_wolfssl;
+ OPT_WOLFSSL=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }wolfSSL"
-fi
-
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL"
fi
-OPT_MESALINK=no
-
-# Check whether --with-mesalink was given.
-if test ${with_mesalink+y}
-then :
- withval=$with_mesalink; OPT_MESALINK=$withval
- if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }MesaLink"
fi
- fi
OPT_BEARSSL=no
# Check whether --with-bearssl was given.
if test ${with_bearssl+y}
then :
- withval=$with_bearssl; OPT_BEARSSL=$withval
+ withval=$with_bearssl;
+ OPT_BEARSSL=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }BearSSL"
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL"
+ fi
+
fi
- fi
OPT_RUSTLS=no
# Check whether --with-rustls was given.
if test ${with_rustls+y}
then :
- withval=$with_rustls; OPT_RUSTLS=$withval
+ withval=$with_rustls;
+ OPT_RUSTLS=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }rustls"
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls"
+ experimental="$experimental rustls"
+ fi
+
fi
+
+OPT_NSS_AWARE=no
+
+# Check whether --with-nss-deprecated was given.
+if test ${with_nss_deprecated+y}
+then :
+ withval=$with_nss_deprecated; if test X"$withval" != Xno; then
+ OPT_NSS_AWARE=$withval
fi
+fi
+
+
OPT_NSS=no
# Check whether --with-nss was given.
@@ -6719,13 +6817,17 @@ if test ${with_nss+y}
then :
withval=$with_nss; OPT_NSS=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
- }NSS"
-fi
+ if test X"$OPT_NSS_AWARE" = "Xno" ; then
+ as_fn_error $? "NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md" "$LINENO" 5
+ fi
+
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS"
fi
+fi
+
+
if test -z "$TLSCHOICE"; then
if test "x$OPT_SSL" != "xno"; then
as_fn_error $? "select TLS backend(s) or disable TLS with --without-ssl.
@@ -6736,7 +6838,6 @@ Select from these:
--with-bearssl
--with-gnutls
--with-mbedtls
- --with-mesalink
--with-nss
--with-openssl (also works for BoringSSL and libressl)
--with-rustls
@@ -6840,7 +6941,6 @@ AR_FLAGS=cr
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
printf %s "checking for grep that handles long lines and -e... " >&6; }
if test ${ac_cv_path_GREP+y}
@@ -7981,8 +8081,8 @@ esac
-macro_version='2.4.6'
-macro_revision='2.4.6'
+macro_version='2.4.7'
+macro_revision='2.4.7'
@@ -8393,13 +8493,13 @@ else
mingw*) lt_bad_file=conftest.nm/nofile ;;
*) lt_bad_file=/dev/null ;;
esac
- case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+ case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in
*$lt_bad_file* | *'Invalid file or object type'*)
lt_cv_path_NM="$tmp_nm -B"
break 2
;;
*)
- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in
*/dev/null*)
lt_cv_path_NM="$tmp_nm -p"
break 2
@@ -8537,7 +8637,7 @@ esac
fi
fi
- case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in
*COFF*)
DUMPBIN="$DUMPBIN -symbols -headers"
;;
@@ -8641,7 +8741,7 @@ else $as_nop
lt_cv_sys_max_cmd_len=8192;
;;
- bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+ bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
# This has been around since 386BSD, at least. Likely further.
if test -x /sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -8684,7 +8784,7 @@ else $as_nop
sysv5* | sco5v6* | sysv4.2uw2*)
kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
if test -n "$kargmax"; then
- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'`
else
lt_cv_sys_max_cmd_len=32768
fi
@@ -8890,6 +8990,114 @@ esac
if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args.
+set dummy ${ac_tool_prefix}file; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_FILECMD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$FILECMD"; then
+ ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_FILECMD="${ac_tool_prefix}file"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+FILECMD=$ac_cv_prog_FILECMD
+if test -n "$FILECMD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5
+printf "%s\n" "$FILECMD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_FILECMD"; then
+ ac_ct_FILECMD=$FILECMD
+ # Extract the first word of "file", so it can be a program name with args.
+set dummy file; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_FILECMD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_FILECMD"; then
+ ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_FILECMD="file"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD
+if test -n "$ac_ct_FILECMD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5
+printf "%s\n" "$ac_ct_FILECMD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_FILECMD" = x; then
+ FILECMD=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ FILECMD=$ac_ct_FILECMD
+ fi
+else
+ FILECMD="$ac_cv_prog_FILECMD"
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
set dummy ${ac_tool_prefix}objdump; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -9029,7 +9237,7 @@ beos*)
bsdi[45]*)
lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_cmd='$FILECMD -L'
lt_cv_file_magic_test_file=/shlib/libc.so
;;
@@ -9063,14 +9271,14 @@ darwin* | rhapsody*)
lt_cv_deplibs_check_method=pass_all
;;
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
case $host_cpu in
i*86 )
# Not sure whether the presence of OpenBSD here was a mistake.
# Let's accept both of them until this is cleared up.
lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_cmd=$FILECMD
lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
;;
esac
@@ -9084,7 +9292,7 @@ haiku*)
;;
hpux10.20* | hpux11*)
- lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_cmd=$FILECMD
case $host_cpu in
ia64*)
lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
@@ -9131,7 +9339,7 @@ netbsd* | netbsdelf*-gnu)
newos6*)
lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
- lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_cmd=$FILECMD
lt_cv_file_magic_test_file=/usr/lib/libnls.so
;;
@@ -9501,13 +9709,29 @@ esac
fi
: ${AR=ar}
-: ${AR_FLAGS=cr}
+# Use ARFLAGS variable as AR's operation code to sync the variable naming with
+# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
+# higher priority because thats what people were doing historically (setting
+# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS
+# variable obsoleted/removed.
+
+test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
+lt_ar_flags=$AR_FLAGS
+
+
+
+
+
+
+# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override
+# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
+
@@ -9923,7 +10147,7 @@ esac
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
# Gets list of data symbols to import.
- lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+ lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'"
# Adjust the below global symbol transforms to fixup imported variables.
lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
@@ -9941,20 +10165,20 @@ fi
# Transform an extracted symbol line into a proper C declaration.
# Some systems (esp. on ia64) link data and code symbols differently,
# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+lt_cv_sys_global_symbol_to_cdecl="$SED -n"\
$lt_cdecl_hook\
" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\
$lt_c_name_hook\
" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
# Transform an extracted symbol line into symbol name with lib prefix and
# symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\
$lt_c_name_lib_hook\
" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
@@ -9978,7 +10202,7 @@ for ac_symprfx in "" "_"; do
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
# Fake it for dumpbin and say T for any non-static function,
# D for any global variable and I for any imported variable.
- # Also find C++ and __fastcall symbols from MSVC++,
+ # Also find C++ and __fastcall symbols from MSVC++ or ICC,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK '"\
" {last_section=section; section=\$ 3};"\
@@ -9996,9 +10220,9 @@ for ac_symprfx in "" "_"; do
" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
" ' prfx=^$ac_symprfx"
else
- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'"
# Check to see that the pipe works correctly.
pipe_works=no
@@ -10198,7 +10422,7 @@ case $with_sysroot in #(
fi
;; #(
/*)
- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"`
;; #(
no|'')
;; #(
@@ -10323,7 +10547,7 @@ ia64-*-hpux*)
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*ELF-32*)
HPUX_IA64_MODE=32
;;
@@ -10344,7 +10568,7 @@ ia64-*-hpux*)
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
if test yes = "$lt_cv_prog_gnu_ld"; then
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -melf32bsmip"
;;
@@ -10356,7 +10580,7 @@ ia64-*-hpux*)
;;
esac
else
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -32"
;;
@@ -10382,7 +10606,7 @@ mips64*-*linux*)
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
emul=elf
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*32-bit*)
emul="${emul}32"
;;
@@ -10390,7 +10614,7 @@ mips64*-*linux*)
emul="${emul}64"
;;
esac
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*MSB*)
emul="${emul}btsmip"
;;
@@ -10398,7 +10622,7 @@ mips64*-*linux*)
emul="${emul}ltsmip"
;;
esac
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*N32*)
emul="${emul}n32"
;;
@@ -10422,14 +10646,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- case `/usr/bin/file conftest.o` in
+ case `$FILECMD conftest.o` in
*32-bit*)
case $host in
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_i386_fbsd"
;;
x86_64-*linux*)
- case `/usr/bin/file conftest.o` in
+ case `$FILECMD conftest.o` in
*x86-64*)
LD="${LD-ld} -m elf32_x86_64"
;;
@@ -10536,7 +10760,7 @@ printf "%s\n" "$lt_cv_cc_needs_belf" >&6; }
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- case `/usr/bin/file conftest.o` in
+ case `$FILECMD conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
yes*)
@@ -11318,8 +11542,8 @@ int forced_loaded() { return 2;}
_LT_EOF
echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
- echo "$AR cr libconftest.a conftest.o" >&5
- $AR cr libconftest.a conftest.o 2>&5
+ echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5
+ $AR $AR_FLAGS libconftest.a conftest.o 2>&5
echo "$RANLIB libconftest.a" >&5
$RANLIB libconftest.a 2>&5
cat > conftest.c << _LT_EOF
@@ -11346,17 +11570,12 @@ printf "%s\n" "$lt_cv_ld_force_load" >&6; }
_lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
darwin1.*)
_lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
- darwin*) # darwin 5.x on
- # if running on 10.5 or later, the deployment target defaults
- # to the OS version, if on x86, and 10.4, the deployment
- # target defaults to 10.4. Don't you love it?
- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
- 10.0,*86*-darwin8*|10.0,*-darwin[912]*)
- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
- 10.[012][,.]*)
- _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
- 10.*|11.*)
- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+ darwin*)
+ case $MACOSX_DEPLOYMENT_TARGET,$host in
+ 10.[012],*|,*powerpc*-darwin[5-8]*)
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+ *)
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
esac
;;
esac
@@ -11411,35 +11630,6 @@ func_munge_path_list ()
esac
}
-ac_header= ac_cache=
-for ac_item in $ac_header_c_list
-do
- if test $ac_cache; then
- ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
- if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
- printf "%s\n" "#define $ac_item 1" >> confdefs.h
- fi
- ac_header= ac_cache=
- elif test $ac_header; then
- ac_cache=$ac_item
- else
- ac_header=$ac_item
- fi
-done
-
-
-
-
-
-
-
-
-if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
-then :
-
-printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
"
if test "x$ac_cv_header_dlfcn_h" = xyes
@@ -12179,8 +12369,8 @@ esac
ofile=libtool
can_build_shared=yes
-# All known linkers require a '.a' archive for static linking (except MSVC,
-# which needs '.lib').
+# All known linkers require a '.a' archive for static linking (except MSVC and
+# ICC, which need '.lib').
libext=a
with_gnu_ld=$lt_cv_prog_gnu_ld
@@ -12698,7 +12888,7 @@ lt_prog_compiler_static=
lt_prog_compiler_static='-qstaticlink'
;;
*)
- case `$CC -V 2>&1 | sed 5q` in
+ case `$CC -V 2>&1 | $SED 5q` in
*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
# Sun Fortran 8.3 passes all unrecognized flags to the linker
lt_prog_compiler_pic='-KPIC'
@@ -13121,15 +13311,15 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
+ # Microsoft Visual C++ or Intel C++ Compiler.
if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
interix*)
- # we just hope/assume this is gcc and not c89 (= MSVC++)
+ # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
with_gnu_ld=yes
;;
openbsd* | bitrig*)
@@ -13184,7 +13374,7 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
whole_archive_flag_spec=
fi
supports_anon_versioning=no
- case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
+ case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
*GNU\ gold*) supports_anon_versioning=yes ;;
*\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -13296,6 +13486,7 @@ _LT_EOF
emximp -o $lib $output_objdir/$libname.def'
old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
enable_shared_with_static_runtimes=yes
+ file_list_spec='@'
;;
interix[3-9]*)
@@ -13310,7 +13501,7 @@ _LT_EOF
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
@@ -13353,7 +13544,7 @@ _LT_EOF
compiler_needs_object=yes
;;
esac
- case `$CC -V 2>&1 | sed 5q` in
+ case `$CC -V 2>&1 | $SED 5q` in
*Sun\ C*) # Sun C 5.9
whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
compiler_needs_object=yes
@@ -13365,13 +13556,14 @@ _LT_EOF
if test yes = "$supports_anon_versioning"; then
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
echo "local: *; };" >> $output_objdir/$libname.ver~
$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
case $cc_basename in
tcc*)
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
export_dynamic_flag_spec='-rdynamic'
;;
xlf* | bgf* | bgxlf* | mpixlf*)
@@ -13381,7 +13573,7 @@ _LT_EOF
archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
if test yes = "$supports_anon_versioning"; then
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
echo "local: *; };" >> $output_objdir/$libname.ver~
$LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
fi
@@ -13513,7 +13705,7 @@ _LT_EOF
if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
else
- export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+ export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
fi
aix_use_runtimelinking=no
@@ -13782,12 +13974,12 @@ fi
cygwin* | mingw* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
+ # Microsoft Visual C++ or Intel C++ Compiler.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
case $cc_basename in
- cl*)
- # Native MSVC
+ cl* | icl*)
+ # Native MSVC or ICC
hardcode_libdir_flag_spec=' '
allow_undefined_flag=unsupported
always_export_symbols=yes
@@ -13828,7 +14020,7 @@ fi
fi'
;;
*)
- # Assume MSVC wrapper
+ # Assume MSVC and ICC wrapper
hardcode_libdir_flag_spec=' '
allow_undefined_flag=unsupported
# Tell ltmain to make .lib files, not .a files.
@@ -13869,8 +14061,8 @@ fi
output_verbose_link_cmd=func_echo_all
archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
- archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
- module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+ archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
else
ld_shlibs=no
@@ -13904,7 +14096,7 @@ fi
;;
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd* | dragonfly*)
+ freebsd* | dragonfly* | midnightbsd*)
archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
@@ -14085,6 +14277,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
# Fabrice Bellard et al's Tiny C Compiler
ld_shlibs=yes
archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
;;
esac
;;
@@ -14156,6 +14349,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
emximp -o $lib $output_objdir/$libname.def'
old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
enable_shared_with_static_runtimes=yes
+ file_list_spec='@'
;;
osf3*)
@@ -14848,7 +15042,7 @@ cygwin* | mingw* | pw32* | cegcc*)
case $host_os in
cygwin*)
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+ soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
;;
@@ -14858,14 +15052,14 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
pw32*)
# pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+ library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
esac
dynamic_linker='Win32 ld.exe'
;;
- *,cl*)
- # Native MSVC
+ *,cl* | *,icl*)
+ # Native MSVC or ICC
libname_spec='$name'
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
library_names_spec='$libname.dll.lib'
@@ -14884,7 +15078,7 @@ cygwin* | mingw* | pw32* | cegcc*)
done
IFS=$lt_save_ifs
# Convert to MSYS style.
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
;;
cygwin*)
# Convert to unix form, then to dos form, then back to unix form
@@ -14921,7 +15115,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
- # Assume MSVC wrapper
+ # Assume MSVC and ICC wrapper
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
@@ -14954,7 +15148,7 @@ dgux*)
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
if test -x /usr/bin/objformat; then
@@ -16118,30 +16312,41 @@ striplib=
old_striplib=
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
printf %s "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+if test -z "$STRIP"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP"; then
+ if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ old_striplib="$STRIP --strip-debug"
+ striplib="$STRIP --strip-unneeded"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ case $host_os in
+ darwin*)
+ # FIXME - insert some real tests, host_os isn't really good enough
striplib="$STRIP -x"
old_striplib="$STRIP -S"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ ;;
+ freebsd*)
+ if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
+ old_striplib="$STRIP --strip-debug"
+ striplib="$STRIP --strip-unneeded"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- fi
- ;;
- *)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ fi
+ ;;
+ *)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- ;;
- esac
+ ;;
+ esac
+ fi
fi
@@ -16316,7 +16521,7 @@ esac
printf "%s\n" "$xc_lt_shlib_use_mimpure_text" >&6; }
#
-# Find out whether libtool libraries would be built wit PIC
+# Find out whether libtool libraries would be built with PIC
#
case "x$pic_mode" in # ((((
@@ -16381,6 +16586,187 @@ printf "%s\n" "$xc_lt_build_static_only" >&6; }
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
+set dummy ${ac_tool_prefix}windres; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$RC"; then
+ ac_cv_prog_RC="$RC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RC="${ac_tool_prefix}windres"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RC=$ac_cv_prog_RC
+if test -n "$RC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5
+printf "%s\n" "$RC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RC"; then
+ ac_ct_RC=$RC
+ # Extract the first word of "windres", so it can be a program name with args.
+set dummy windres; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_RC"; then
+ ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RC="windres"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RC=$ac_cv_prog_ac_ct_RC
+if test -n "$ac_ct_RC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5
+printf "%s\n" "$ac_ct_RC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_RC" = x; then
+ RC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RC=$ac_ct_RC
+ fi
+else
+ RC="$ac_cv_prog_RC"
+fi
+
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=$lt_simple_compile_test_code
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+compiler_RC=$CC
+func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+if test -n "$compiler"; then
+ :
+
+
+
+fi
+
+GCC=$lt_save_GCC
+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
+
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+
+
#
# Automake conditionals based on libtool related checks
#
@@ -17057,7 +17443,7 @@ printf "%s\n" "no" >&6; }
compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`
flags_dbg_yes="-g"
flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4"
- flags_opt_yes="-Os"
+ flags_opt_yes="-O2"
flags_opt_off="-O0"
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -17619,120 +18005,6 @@ printf "%s\n" "yes" >&6; }
printf "%s\n" "no" >&6; }
fi
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is Watcom C" >&5
-printf %s "checking if compiler is Watcom C... " >&6; }
-
- OLDCPPFLAGS=$CPPFLAGS
- # CPPPFLAG comes from CURL_CPP_P
- CPPFLAGS="$CPPFLAGS $CPPPFLAG"
- if test -z "$SED"; then
- as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5
- fi
- if test -z "$GREP"; then
- as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5
- fi
-
- tmp_exp=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#ifdef __WATCOMC__
-CURL_DEF_TOKEN __WATCOMC__
-#endif
-
-
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-
- tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
- "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
- "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \
- "$SED" 's/["][ ]*["]//g' 2>/dev/null`
- if test -z "$tmp_exp" || test "$tmp_exp" = "__WATCOMC__"; then
- tmp_exp=""
- fi
-
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- if test -z "$tmp_exp"; then
- curl_cv_have_def___WATCOMC__=no
-
- else
- curl_cv_have_def___WATCOMC__=yes
- curl_cv_def___WATCOMC__=$tmp_exp
-
- fi
- CPPFLAGS=$OLDCPPFLAGS
-
- if test "$curl_cv_have_def___WATCOMC__" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
- OLDCPPFLAGS=$CPPFLAGS
- # CPPPFLAG comes from CURL_CPP_P
- CPPFLAGS="$CPPFLAGS $CPPPFLAG"
- if test -z "$SED"; then
- as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5
- fi
- if test -z "$GREP"; then
- as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5
- fi
-
- tmp_exp=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#ifdef __UNIX__
-CURL_DEF_TOKEN __UNIX__
-#endif
-
-
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-
- tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
- "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
- "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \
- "$SED" 's/["][ ]*["]//g' 2>/dev/null`
- if test -z "$tmp_exp" || test "$tmp_exp" = "__UNIX__"; then
- tmp_exp=""
- fi
-
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- if test -z "$tmp_exp"; then
- curl_cv_have_def___UNIX__=no
-
- else
- curl_cv_have_def___UNIX__=yes
- curl_cv_def___UNIX__=$tmp_exp
-
- fi
- CPPFLAGS=$OLDCPPFLAGS
-
- if test "$curl_cv_have_def___UNIX__" = "yes"; then
- compiler_id="WATCOM_UNIX_C"
- flags_dbg_yes="-g2"
- flags_opt_all="-O0 -O1 -O2 -O3"
- flags_opt_yes="-O2"
- flags_opt_off="-O0"
- else
- compiler_id="WATCOM_WINDOWS_C"
- flags_dbg_yes=""
- flags_opt_all=""
- flags_opt_yes=""
- flags_opt_off=""
- fi
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- fi
-
#
if test "$compiler_id" = "unknown"; then
cat <<_EOF 1>&2
@@ -17813,8 +18085,8 @@ squeeze() {
INTEL_UNIX_C)
#
tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
- tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266"
- tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-error 140,147,165,266"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-disable 279,981,1025,1469,2259"
;;
#
INTEL_WINDOWS_C)
@@ -17847,16 +18119,6 @@ squeeze() {
tmp_CFLAGS="$tmp_CFLAGS"
;;
#
- WATCOM_UNIX_C)
- #
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- WATCOM_WINDOWS_C)
- #
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
esac
#
squeeze tmp_CPPFLAGS
@@ -17938,15 +18200,54 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
test "$tmp_compiler_works" = "yes"; then
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+# ifdef __STDC__
+# include <stdlib.h>
+# endif
+
+int main (void)
+{
+
+ int i = 0;
+ exit(i);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ tmp_compiler_works="yes"
+
+else $as_nop
+ tmp_compiler_works="no"
+ echo " " >&6
+ echo "run-fail: test program exited with status $ac_status" >&6
+ echo " " >&6
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -17987,7 +18288,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
if test "$tmp_compiler_works" = "yes"; then
@@ -18226,15 +18529,54 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
test "$tmp_compiler_works" = "yes"; then
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+# ifdef __STDC__
+# include <stdlib.h>
+# endif
+
+int main (void)
+{
+
+ int i = 0;
+ exit(i);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ tmp_compiler_works="yes"
+
+else $as_nop
+ tmp_compiler_works="no"
+ echo " " >&6
+ echo "run-fail: test program exited with status $ac_status" >&6
+ echo " " >&6
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -18275,7 +18617,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
if test "$tmp_compiler_works" = "yes"; then
@@ -18782,6 +19126,7 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;}
GNU_C)
#
if test "$want_warnings" = "yes"; then
+ tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
#
if test "x$cross_compiling" != "xyes" ||
test "$compiler_num" -ge "300"; then
@@ -19406,22 +19751,27 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;}
fi
fi
#
- fi
- #
- if test "$compiler_num" -ge "300"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
- else
- if test "x$cross_compiling" = "xyes"; then
- if test "$compiler_num" -ge "104"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow"
- fi
- if test "$compiler_num" -ge "207"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations"
- tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes"
- fi
- fi
- fi
- if test "$compiler_num" -ge "1000"; then
+ if test "$compiler_num" -ge "1000"; then
+
+ ac_var_added_warnings=""
+ for warning in arith-conversion; do
+
+ ac_var_match_word="no"
+ for word1 in $CFLAGS; do
+ for word2 in -Wno-$warning -W$warning; do
+ if test "$word1" = "$word2"; then
+ ac_var_match_word="yes"
+ fi
+ done
+ done
+
+ if test "$ac_var_match_word" = "no"; then
+ ac_var_added_warnings="$ac_var_added_warnings -W$warning"
+ fi
+ done
+ tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings"
+ squeeze tmp_CFLAGS
+
ac_var_added_warnings=""
for warning in enum-conversion; do
@@ -19442,6 +19792,22 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;}
tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings"
squeeze tmp_CFLAGS
+ fi
+ #
+ fi
+ #
+ if test "$compiler_num" -ge "300"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
+ else
+ if test "x$cross_compiling" = "xyes"; then
+ if test "$compiler_num" -ge "104"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow"
+ fi
+ if test "$compiler_num" -ge "207"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations"
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes"
+ fi
+ fi
fi
;;
#
@@ -19579,18 +19945,6 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;}
fi
;;
#
- WATCOM_UNIX_C)
- #
- if test "$want_warnings" = "yes"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
- fi
- ;;
- #
- WATCOM_WINDOWS_C)
- #
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
esac
#
squeeze tmp_CPPFLAGS
@@ -19672,15 +20026,54 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
test "$tmp_compiler_works" = "yes"; then
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+# ifdef __STDC__
+# include <stdlib.h>
+# endif
+
+int main (void)
+{
+
+ int i = 0;
+ exit(i);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ tmp_compiler_works="yes"
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+else $as_nop
+ tmp_compiler_works="no"
+ echo " " >&6
+ echo "run-fail: test program exited with status $ac_status" >&6
+ echo " " >&6
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -19721,7 +20114,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
if test "$tmp_compiler_works" = "yes"; then
@@ -20146,6 +20541,47 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
esac
+# Detect original MinGW (not MinGW-w64)
+curl_mingw_original=no
+case $host in
+ *-*-mingw32*)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking using original MinGW (not MinGW-w64)" >&5
+printf %s "checking using original MinGW (not MinGW-w64)... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#include <_mingw.h>
+
+int main (void)
+{
+
+#if defined(__MINGW64_VERSION_MAJOR)
+#error
+#endif
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+ curl_mingw_original=yes
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ ;;
+esac
+
@@ -20485,74 +20921,12 @@ printf "%s\n" "#define HAVE_WINLDAP_H 1" >>confdefs.h
;;
esac
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for winber.h" >&5
-printf %s "checking for winber.h... " >&6; }
-if test ${curl_cv_header_winber_h+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#endif
-#include <winldap.h>
-#include <winber.h>
-
-int main (void)
-{
-
-#if defined(__CYGWIN__) || defined(__CEGCC__)
- HAVE_WINBER_H shall not be defined.
-#else
- BERVAL *bvp = NULL;
- BerElement *bep = ber_init(bvp);
- ber_free(bep, 1);
-#endif
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_header_winber_h="yes"
-
-else $as_nop
-
- curl_cv_header_winber_h="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_winber_h" >&5
-printf "%s\n" "$curl_cv_header_winber_h" >&6; }
- case "$curl_cv_header_winber_h" in
- yes)
-
-printf "%s\n" "#define HAVE_WINBER_H 1" >>confdefs.h
-
- ;;
- esac
-
;;
*)
curl_cv_header_winsock2_h="no"
curl_cv_header_ws2tcpip_h="no"
curl_cv_header_wincrypt_h="no"
curl_cv_header_winldap_h="no"
- curl_cv_header_winber_h="no"
;;
esac
@@ -20828,6 +21202,14 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ if test "$curl_cv_native_windows" = "yes"; then
+ OS_WINDOWS_TRUE=
+ OS_WINDOWS_FALSE='#'
+else
+ OS_WINDOWS_TRUE='#'
+ OS_WINDOWS_FALSE=
+fi
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support http" >&5
printf %s "checking whether to support http... " >&6; }
@@ -21290,7 +21672,7 @@ fi
done
else $as_nop
- for d in `echo $DIR_HYPER | sed -e 's/:/ /'`; do
+ for d in `echo $DIR_HYPER | $SED -e 's/:/ /'`; do
if test -f "$d/libhyper.a"; then
as_fn_error $? "hyper was found in $d but was probably built with wrong flags. See docs/HYPER.md." "$LINENO" 5
fi
@@ -22043,8 +22425,13 @@ printf %s "checking for gethostbyname for AmigaOS bsdsocket.library... " >&6; }
/* end confdefs.h. */
+ #define __USE_INLINE__
#include <proto/bsdsocket.h>
+ #ifdef __amigaos4__
+ struct SocketIFace *ISocket = NULL;
+ #else
struct Library *SocketBase = NULL;
+ #endif
int main (void)
{
@@ -22125,53 +22512,6 @@ fi
fi
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnet" >&5
-printf %s "checking for gethostbyname in -lnet... " >&6; }
-if test ${ac_cv_lib_net_gethostbyname+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnet $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int main (void)
-{
-return gethostbyname ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- ac_cv_lib_net_gethostbyname=yes
-else $as_nop
- ac_cv_lib_net_gethostbyname=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_net_gethostbyname" >&5
-printf "%s\n" "$ac_cv_lib_net_gethostbyname" >&6; }
-if test "x$ac_cv_lib_net_gethostbyname" = xyes
-then :
- HAVE_GETHOSTBYNAME="1"
- LIBS="-lnet $LIBS"
-
-fi
-
-fi
-
-
if test "$HAVE_GETHOSTBYNAME" != "1"; then
as_fn_error $? "couldn't find libraries for gethostbyname()" "$LINENO" 5
fi
@@ -22304,12 +22644,22 @@ printf "%s\n" "#define HAVE_WINSOCK2_H 1" >>confdefs.h
curl_includes_bsdsocket="\
/* includes start */
-#ifdef HAVE_PROTO_BSDSOCKET_H
+#if defined(HAVE_PROTO_BSDSOCKET_H)
+# define __NO_NET_API
+# define __USE_INLINE__
# include <proto/bsdsocket.h>
- struct Library *SocketBase = NULL;
+# ifdef HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+# endif
+# ifdef __amigaos4__
+struct SocketIFace *ISocket = NULL;
+# else
+struct Library *SocketBase = NULL;
+# endif
+# define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#endif
/* includes end */"
- ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" " $curl_includes_bsdsocket
+ ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" "$curl_includes_bsdsocket
"
if test "x$ac_cv_header_proto_bsdsocket_h" = xyes
then :
@@ -22521,15 +22871,67 @@ printf "%s\n" "$curl_cv_gclk_LIBS" >&6; }
printf %s "checking if monotonic clock_gettime works... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#include <time.h>
+
+int main (void)
+{
+
+ struct timespec ts;
+ if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(0);
+ else
+ exit(1);
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+ ;
+ return 0;
+}
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5
+printf "%s\n" "$as_me: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;}
+ curl_func_clock_gettime="no"
+ LIBS="$curl_cv_save_LIBS"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -22583,7 +22985,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
#
@@ -22904,9 +23308,6 @@ printf "%s\n" "$as_me: WARNING: configure found only the libz header file, not t
then
-printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
-
-
printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h
@@ -23664,77 +24065,6 @@ printf "%s\n" "#define HAVE_LDAP_H 1" >>confdefs.h
esac
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldapssl.h" >&5
-printf %s "checking for ldapssl.h... " >&6; }
-if test ${curl_cv_header_ldapssl_h+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#endif
-#ifndef NULL
-#define NULL (void *)0
-#endif
-#ifndef LDAP_DEPRECATED
-#define LDAP_DEPRECATED 1
-#endif
-#ifdef NEED_LBER_H
-#include <lber.h>
-#endif
-#ifdef HAVE_LDAP_H
-#include <ldap.h>
-#endif
-#include <ldapssl.h>
-
-int main (void)
-{
-
- char *cert_label = NULL;
- LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_header_ldapssl_h="yes"
-
-else $as_nop
-
- curl_cv_header_ldapssl_h="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_ldapssl_h" >&5
-printf "%s\n" "$curl_cv_header_ldapssl_h" >&6; }
- case "$curl_cv_header_ldapssl_h" in
- yes)
-
-printf "%s\n" "#define HAVE_LDAPSSL_H 1" >>confdefs.h
-
- ;;
- esac
-
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_ssl.h" >&5
printf %s "checking for ldap_ssl.h... " >&6; }
if test ${curl_cv_header_ldap_ssl_h+y}
@@ -24075,12 +24405,6 @@ then :
printf "%s\n" "#define HAVE_LDAP_URL_PARSE 1" >>confdefs.h
fi
-ac_fn_c_check_func "$LINENO" "ldap_init_fd" "ac_cv_func_ldap_init_fd"
-if test "x$ac_cv_func_ldap_init_fd" = xyes
-then :
- printf "%s\n" "#define HAVE_LDAP_INIT_FD 1" >>confdefs.h
-
-fi
if test "$LDAPLIBNAME" = "wldap32"; then
@@ -24231,15 +24555,41 @@ fi
printf %s "checking if argv can be written to... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ curl_cv_writable_argv=cross
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int main(int argc, char **argv)
+{
+ (void)argc;
+ argv[0][0] = ' ';
+ return (argv[0][0] == ' ')?0:1;
+}
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ curl_cv_writable_argv=yes
+
+else $as_nop
+ curl_cv_writable_argv=no
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
curl_cv_writable_argv=cross
@@ -24267,7 +24617,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
case $curl_cv_writable_argv in
yes)
@@ -24328,6 +24680,8 @@ then :
fi
+: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
+
save_CPPFLAGS="$CPPFLAGS"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if GSS-API support is requested" >&5
printf %s "checking if GSS-API support is requested... " >&6; }
@@ -24335,6 +24689,144 @@ if test x"$want_gss" = xyes; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
+ if test $GSSAPI_ROOT != "/usr"; then
+
+ if test -n "$PKG_CONFIG"; then
+ PKGCONFIG="$PKG_CONFIG"
+ else
+ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKGCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ 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
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ 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"
+ printf "%s\n" "$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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+printf "%s\n" "$PKGCONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKGCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ 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
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ 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"
+ printf "%s\n" "$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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+printf "%s\n" "$ac_pt_PKGCONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$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
+
+ fi
+
+ if test "x$PKGCONFIG" != "xno"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5
+printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; }
+ itexists=`
+ if test -n "$GSSAPI_ROOT/lib/pkgconfig"; then
+ PKG_CONFIG_LIBDIR="$GSSAPI_ROOT/lib/pkgconfig"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ PKGCONFIG="no"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
+printf "%s\n" "found" >&6; }
+ fi
+ fi
+
+ else
if test -n "$PKG_CONFIG"; then
PKGCONFIG="$PKG_CONFIG"
@@ -24471,11 +24963,14 @@ printf "%s\n" "found" >&6; }
fi
fi
+ fi
if test -z "$GSSAPI_INCS"; 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 "$PKGCONFIG" != "no" ; then
GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi`
+ elif test -f "$KRB5CONFIG"; then
+ GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
elif test "$GSSAPI_ROOT" != "yes"; then
GSSAPI_INCS="-I$GSSAPI_ROOT/include"
fi
@@ -24615,6 +25110,144 @@ printf "%s\n" "#define HAVE_GSSAPI 1" >>confdefs.h
LIBS="-lgssapi_krb5 -lresolv $LIBS"
;;
*)
+ if test $GSSAPI_ROOT != "/usr"; then
+
+ if test -n "$PKG_CONFIG"; then
+ PKGCONFIG="$PKG_CONFIG"
+ else
+ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKGCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ 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
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ 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"
+ printf "%s\n" "$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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+printf "%s\n" "$PKGCONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKGCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ 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
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ 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"
+ printf "%s\n" "$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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+printf "%s\n" "$ac_pt_PKGCONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$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
+
+ fi
+
+ if test "x$PKGCONFIG" != "xno"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5
+printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; }
+ itexists=`
+ if test -n "$GSSAPI_ROOT/lib/pkgconfig"; then
+ PKG_CONFIG_LIBDIR="$GSSAPI_ROOT/lib/pkgconfig"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ PKGCONFIG="no"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
+printf "%s\n" "found" >&6; }
+ fi
+ fi
+
+ else
if test -n "$PKG_CONFIG"; then
PKGCONFIG="$PKG_CONFIG"
@@ -24751,12 +25384,16 @@ printf "%s\n" "found" >&6; }
fi
fi
+ fi
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 "$PKGCONFIG" != "no" ; then
gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi`
LIBS="$gss_libs $LIBS"
+ elif test -f "$KRB5CONFIG"; then
+ gss_libs=`$KRB5CONFIG --libs gssapi`
+ LIBS="$gss_libs $LIBS"
else
case $host in
*-hp-hpux*)
@@ -24791,6 +25428,53 @@ else
CPPFLAGS="$save_CPPFLAGS"
fi
+if test x"$want_gss" = xyes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can link against GSS-API library" >&5
+printf %s "checking if we can link against GSS-API library... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#define gss_init_sec_context innocuous_gss_init_sec_context
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+#undef gss_init_sec_context
+#ifdef __cplusplus
+extern "C"
+#endif
+char gss_init_sec_context ();
+#if defined __stub_gss_init_sec_context || defined __stub___gss_init_sec_context
+choke me
+#endif
+
+int main (void)
+{
+return gss_init_sec_context ();
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "--with-gssapi was specified, but a GSS-API library was not found." "$LINENO" 5
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
build_libstubgss=no
if test x"$want_gss" = "xyes"; then
build_libstubgss=yes
@@ -24890,28 +25574,102 @@ fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL)" >&5
-printf %s "checking whether to enable Amiga native SSL/TLS (AmiSSL)... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL v5)" >&5
+printf %s "checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... " >&6; }
if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
if test "x$OPT_AMISSL" != xno; then
ssl_msg=
- if test "x$OPT_AMISSL" != "xno"; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ #include <libraries/amisslmaster.h>
+ #include <openssl/opensslv.h>
+
+int main (void)
+{
+
+ #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \
+ defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
+ defined(PROTO_AMISSL_H)
+ return 0;
+ #else
+ #error not AmiSSL v5 / OpenSSL 3
+ #endif
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
ssl_msg="AmiSSL"
test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
AMISSL_ENABLED=1
- LIBS="-lamisslauto $LIBS"
+ OPENSSL_ENABLED=1
+ # Use AmiSSL's built-in ca bundle
+ check_for_ca_bundle=1
+ with_ca_fallback=yes
+ LIBS="-lamisslstubs -lamisslauto $LIBS"
printf "%s\n" "#define USE_AMISSL 1" >>confdefs.h
printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h
- else
+
+printf "%s\n" "#define HAVE_OPENSSL3 1" >>confdefs.h
+
+ ac_fn_c_check_header_compile "$LINENO" "openssl/x509.h" "ac_cv_header_openssl_x509_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_x509_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_X509_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/rsa.h" "ac_cv_header_openssl_rsa_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_rsa_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_RSA_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/crypto.h" "ac_cv_header_openssl_crypto_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_crypto_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_CRYPTO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/pem.h" "ac_cv_header_openssl_pem_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_pem_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_PEM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_ssl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_SSL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/err.h" "ac_cv_header_openssl_err_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_err_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_ERR_H 1" >>confdefs.h
+
+fi
+
+ CPPFLAGS="$CPPFLAGS -DOPENSSL_SUPPRESS_DEPRECATED"
+
+else $as_nop
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- fi
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -25678,778 +26436,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
printf "%s\n" "$as_me: Added $LIB_OPENSSL to CURL_LIBRARY_PATH" >&6;}
fi
fi
-
- #
-
- #
- tst_api="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL headers version" >&5
-printf %s "checking for OpenSSL headers version... " >&6; }
-
- OLDCPPFLAGS=$CPPFLAGS
- # CPPPFLAG comes from CURL_CPP_P
- CPPFLAGS="$CPPFLAGS $CPPPFLAG"
- if test -z "$SED"; then
- as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5
- fi
- if test -z "$GREP"; then
- as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5
- fi
-
- tmp_exp=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-# ifdef USE_OPENSSL
-# include <openssl/crypto.h>
-# else
-# include <crypto.h>
-# endif
-
-#ifdef OPENSSL_VERSION_NUMBER
-CURL_DEF_TOKEN OPENSSL_VERSION_NUMBER
-#endif
-
-
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-
- tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
- "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
- "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \
- "$SED" 's/["][ ]*["]//g' 2>/dev/null`
- if test -z "$tmp_exp" || test "$tmp_exp" = "OPENSSL_VERSION_NUMBER"; then
- tmp_exp=""
- fi
-
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- if test -z "$tmp_exp"; then
- curl_cv_have_def_OPENSSL_VERSION_NUMBER=no
-
- else
- curl_cv_have_def_OPENSSL_VERSION_NUMBER=yes
- curl_cv_def_OPENSSL_VERSION_NUMBER=$tmp_exp
-
- fi
- CPPFLAGS=$OLDCPPFLAGS
-
-
- OLDCPPFLAGS=$CPPFLAGS
- # CPPPFLAG comes from CURL_CPP_P
- CPPFLAGS="$CPPFLAGS $CPPPFLAG"
- if test -z "$SED"; then
- as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5
- fi
- if test -z "$GREP"; then
- as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5
- fi
-
- tmp_exp=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-# include <openssl/crypto.h>
-
-#ifdef OPENSSL_VERSION_STR
-CURL_DEF_TOKEN OPENSSL_VERSION_STR
-#endif
-
-
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-
- tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
- "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
- "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \
- "$SED" 's/["][ ]*["]//g' 2>/dev/null`
- if test -z "$tmp_exp" || test "$tmp_exp" = "OPENSSL_VERSION_STR"; then
- tmp_exp=""
- fi
-
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- if test -z "$tmp_exp"; then
- curl_cv_have_def_OPENSSL_VERSION_STR=no
-
- else
- curl_cv_have_def_OPENSSL_VERSION_STR=yes
- curl_cv_def_OPENSSL_VERSION_STR=$tmp_exp
-
- fi
- CPPFLAGS=$OLDCPPFLAGS
-
- if test "$curl_cv_have_def_OPENSSL_VERSION_NUMBER" = "yes"; then
- tst_verlen=`expr "$curl_cv_def_OPENSSL_VERSION_NUMBER" : '.*'`
- case "x$tst_verlen" in
- x6)
- tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
- tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 4`
- tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
- tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
- ;;
- x11|x10)
- tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
- tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
- tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 7`
- tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
- ;;
- *)
- if test "$curl_cv_have_def_OPENSSL_VERSION_STR" = "yes"; then
- ver=`echo $curl_cv_def_OPENSSL_VERSION_STR | sed 's/"//g'`;
- tst_vermaj=`echo $ver | cut -d. -f1`
- tst_vermin=`echo $ver | cut -d. -f2`
- tst_verfix=`echo $ver | cut -d. -f3`
- tst_show="$ver"
- tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
- else
- tst_api="unknown"
- fi
- ;;
- esac
- case $tst_api in
- 0x111) tst_show="1.1.1" ;;
- 0x110) tst_show="1.1.0" ;;
- 0x102) tst_show="1.0.2" ;;
- 0x101) tst_show="1.0.1" ;;
- 0x100) tst_show="1.0.0" ;;
- 0x099) tst_show="0.9.9" ;;
- 0x098) tst_show="0.9.8" ;;
- 0x097) tst_show="0.9.7" ;;
- 0x096) tst_show="0.9.6" ;;
- 0x095) tst_show="0.9.5" ;;
- 0x094) tst_show="0.9.4" ;;
- 0x093) tst_show="0.9.3" ;;
- 0x092) tst_show="0.9.2" ;;
- 0x091) tst_show="0.9.1" ;;
- *)
- if test -z "$tst_show"; then
- tst_show="unknown"
- fi
- ;;
- esac
- tst_show="$tst_show - $tst_api"
- else
- tst_show="unknown"
- fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_show" >&5
-printf "%s\n" "$tst_show" >&6; }
- #
- curl_openssl_api_headers=$tst_api
-
-
- #
- tst_api="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL library version" >&5
-printf %s "checking for OpenSSL library version... " >&6; }
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_CTX_load_verify_dir innocuous_SSL_CTX_load_verify_dir
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_load_verify_dir
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_load_verify_dir ();
-#if defined __stub_SSL_CTX_load_verify_dir || defined __stub___SSL_CTX_load_verify_dir
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CTX_load_verify_dir ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x300"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define ERR_clear_last_mark innocuous_ERR_clear_last_mark
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef ERR_clear_last_mark
-#ifdef __cplusplus
-extern "C"
-#endif
-char ERR_clear_last_mark ();
-#if defined __stub_ERR_clear_last_mark || defined __stub___ERR_clear_last_mark
-choke me
-#endif
-
-int main (void)
-{
-return ERR_clear_last_mark ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x111"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- case $host in
- *-*-vms*)
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_CTX_set_not_resumbl_sess_cb innocuous_SSL_CTX_set_not_resumbl_sess_cb
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_set_not_resumbl_sess_cb
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_set_not_resumbl_sess_cb ();
-#if defined __stub_SSL_CTX_set_not_resumbl_sess_cb || defined __stub___SSL_CTX_set_not_resumbl_sess_cb
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CTX_set_not_resumbl_sess_cb ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x110"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- ;;
- *)
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_CTX_set_not_resumable_session_callback innocuous_SSL_CTX_set_not_resumable_session_callback
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_set_not_resumable_session_callback
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_set_not_resumable_session_callback ();
-#if defined __stub_SSL_CTX_set_not_resumable_session_callback || defined __stub___SSL_CTX_set_not_resumable_session_callback
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CTX_set_not_resumable_session_callback ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x110"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- ;;
- esac
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_CONF_CTX_new innocuous_SSL_CONF_CTX_new
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CONF_CTX_new
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CONF_CTX_new ();
-#if defined __stub_SSL_CONF_CTX_new || defined __stub___SSL_CONF_CTX_new
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CONF_CTX_new ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x102"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_renegotiate_abbreviated innocuous_SSL_renegotiate_abbreviated
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_renegotiate_abbreviated
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_renegotiate_abbreviated ();
-#if defined __stub_SSL_renegotiate_abbreviated || defined __stub___SSL_renegotiate_abbreviated
-choke me
-#endif
-
-int main (void)
-{
-return SSL_renegotiate_abbreviated ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x101"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define OBJ_add_sigid innocuous_OBJ_add_sigid
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef OBJ_add_sigid
-#ifdef __cplusplus
-extern "C"
-#endif
-char OBJ_add_sigid ();
-#if defined __stub_OBJ_add_sigid || defined __stub___OBJ_add_sigid
-choke me
-#endif
-
-int main (void)
-{
-return OBJ_add_sigid ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x100"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define ERR_set_mark innocuous_ERR_set_mark
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef ERR_set_mark
-#ifdef __cplusplus
-extern "C"
-#endif
-char ERR_set_mark ();
-#if defined __stub_ERR_set_mark || defined __stub___ERR_set_mark
-choke me
-#endif
-
-int main (void)
-{
-return ERR_set_mark ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x098"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define ERR_peek_last_error innocuous_ERR_peek_last_error
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef ERR_peek_last_error
-#ifdef __cplusplus
-extern "C"
-#endif
-char ERR_peek_last_error ();
-#if defined __stub_ERR_peek_last_error || defined __stub___ERR_peek_last_error
-choke me
-#endif
-
-int main (void)
-{
-return ERR_peek_last_error ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x097"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define c2i_ASN1_OBJECT innocuous_c2i_ASN1_OBJECT
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef c2i_ASN1_OBJECT
-#ifdef __cplusplus
-extern "C"
-#endif
-char c2i_ASN1_OBJECT ();
-#if defined __stub_c2i_ASN1_OBJECT || defined __stub___c2i_ASN1_OBJECT
-choke me
-#endif
-
-int main (void)
-{
-return c2i_ASN1_OBJECT ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x096"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_CTX_set_purpose innocuous_SSL_CTX_set_purpose
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_set_purpose
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_set_purpose ();
-#if defined __stub_SSL_CTX_set_purpose || defined __stub___SSL_CTX_set_purpose
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CTX_set_purpose ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x095"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define OBJ_obj2txt innocuous_OBJ_obj2txt
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef OBJ_obj2txt
-#ifdef __cplusplus
-extern "C"
-#endif
-char OBJ_obj2txt ();
-#if defined __stub_OBJ_obj2txt || defined __stub___OBJ_obj2txt
-choke me
-#endif
-
-int main (void)
-{
-return OBJ_obj2txt ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x094"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_get_verify_depth innocuous_SSL_get_verify_depth
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_get_verify_depth
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_get_verify_depth ();
-#if defined __stub_SSL_get_verify_depth || defined __stub___SSL_get_verify_depth
-choke me
-#endif
-
-int main (void)
-{
-return SSL_get_verify_depth ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x093"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_library_init innocuous_SSL_library_init
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_library_init
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_library_init ();
-#if defined __stub_SSL_library_init || defined __stub___SSL_library_init
-choke me
-#endif
-
-int main (void)
-{
-return SSL_library_init ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x092"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- if test "$tst_api" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define SSL_CTX_set_cipher_list innocuous_SSL_CTX_set_cipher_list
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_set_cipher_list
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_set_cipher_list ();
-#if defined __stub_SSL_CTX_set_cipher_list || defined __stub___SSL_CTX_set_cipher_list
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CTX_set_cipher_list ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- tst_api="0x091"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- fi
- case $tst_api in
- 0x300) tst_show="3.0.0" ;;
- 0x111) tst_show="1.1.1" ;;
- 0x110) tst_show="1.1.0" ;;
- 0x102) tst_show="1.0.2" ;;
- 0x101) tst_show="1.0.1" ;;
- 0x100) tst_show="1.0.0" ;;
- 0x099) tst_show="0.9.9" ;;
- 0x098) tst_show="0.9.8" ;;
- 0x097) tst_show="0.9.7" ;;
- 0x096) tst_show="0.9.6" ;;
- 0x095) tst_show="0.9.5" ;;
- 0x094) tst_show="0.9.4" ;;
- 0x093) tst_show="0.9.3" ;;
- 0x092) tst_show="0.9.2" ;;
- 0x091) tst_show="0.9.1" ;;
- *) tst_show="unknown" ;;
- esac
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_show" >&5
-printf "%s\n" "$tst_show" >&6; }
- #
- curl_openssl_api_library=$tst_api
-
- #
- tst_match="yes"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL headers and library versions matching" >&5
-printf %s "checking for OpenSSL headers and library versions matching... " >&6; }
- if test "$curl_openssl_api_headers" = "unknown" ||
- test "$curl_openssl_api_library" = "unknown"; then
- tst_match="fail"
- tst_warns="Can not compare OpenSSL headers and library versions."
- elif test "$curl_openssl_api_headers" != "$curl_openssl_api_library"; then
- tst_match="no"
- tst_warns="OpenSSL headers and library versions do not match."
- fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_match" >&5
-printf "%s\n" "$tst_match" >&6; }
- if test "$tst_match" != "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $tst_warns" >&5
-printf "%s\n" "$as_me: WARNING: $tst_warns" >&2;}
- fi
-
check_for_ca_bundle=1
fi
@@ -26529,53 +26515,45 @@ printf "%s\n" "#define RANDOM_FILE \"$RANDOM_FILE\"" >>confdefs.h
fi
if test "$OPENSSL_ENABLED" = "1"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SRP_Calc_client_key in -lcrypto" >&5
-printf %s "checking for SRP_Calc_client_key in -lcrypto... " >&6; }
-if test ${ac_cv_lib_crypto_SRP_Calc_client_key+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SRP support in OpenSSL" >&5
+printf %s "checking for SRP support in OpenSSL... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char SRP_Calc_client_key ();
+#include <openssl/ssl.h>
+
int main (void)
{
-return SRP_Calc_client_key ();
+
+ SSL_CTX_set_srp_username(NULL, "");
+ SSL_CTX_set_srp_password(NULL, "");
+
;
return 0;
}
+
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
- ac_cv_lib_crypto_SRP_Calc_client_key=yes
-else $as_nop
- ac_cv_lib_crypto_SRP_Calc_client_key=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_SRP_Calc_client_key" >&5
-printf "%s\n" "$ac_cv_lib_crypto_SRP_Calc_client_key" >&6; }
-if test "x$ac_cv_lib_crypto_SRP_Calc_client_key" = xyes
-then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
printf "%s\n" "#define HAVE_OPENSSL_SRP 1" >>confdefs.h
- HAVE_OPENSSL_SRP=1
+ HAVE_OPENSSL_SRP=1
-fi
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+fi
if test X"$OPENSSL_ENABLED" = X"1"; then
# Check whether --enable-openssl-auto-load-config was given.
@@ -27403,6 +27381,7 @@ printf %s "checking for wolfSSL_Init in -lwolfssl... " >&6; }
They are set up properly later if it is detected. */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
+#include <wolfssl/options.h>
#include <wolfssl/ssl.h>
int main (void)
@@ -27449,14 +27428,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
printf "%s\n" "$as_me: detected wolfSSL" >&6;}
check_for_ca_bundle=1
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
printf %s "checking size of long long... " >&6; }
-if test ${ac_cv_sizeof_long_long+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ r=0
+ for typesize in 8 4 2 16 1; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -27464,28 +27442,39 @@ else $as_nop
int main (void)
{
-switch (0) case 0: case (sizeof (long long) == $ac_size):;
+switch(0) {
+ case 0:
+ case (sizeof(long long) == $typesize):;
+ }
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sizeof_long_long=$ac_size
+
+ r=$typesize
+else $as_nop
+
+ r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- if test x$ac_cv_sizeof_long_long != x ; then break; fi
-done
+ if test $r -gt 0; then
+ break;
+ fi
+ done
+ if test $r -eq 0; then
+ as_fn_error $? "Failed to find size of long long" "$LINENO" 5
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+ tname=$(echo "ac_cv_sizeof_long long" | tr A-Z a-z | tr " " "_")
+ eval "$tname=$r"
-fi
-if test x$ac_cv_sizeof_long_long = x ; then
- as_fn_error $? "cannot determine a size for long long" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
-printf "%s\n" "$ac_cv_sizeof_long_long" >&6; }
+printf "%s\n" "#define SIZEOF_LONG_LONG $r" >>confdefs.h
-printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h
@@ -27512,18 +27501,6 @@ then :
printf "%s\n" "#define HAVE_WOLFSSL_DES_ECB_ENCRYPT 1" >>confdefs.h
- if test -n "$addcflags"; then
- for f in $addcflags; do
- CPPFLAGS="$f/wolfssl $CPPFLAGS"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add $f/wolfssl to CPPFLAGS" >&5
-printf "%s\n" "$as_me: Add $f/wolfssl to CPPFLAGS" >&6;}
- break
- done
- else
- CPPFLAGS="-I/usr/include/wolfssl $CPPFLAGS"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add /usr/include/wolfssl to CPPFLAGS" >&5
-printf "%s\n" "$as_me: Add /usr/include/wolfssl to CPPFLAGS" >&6;}
- fi
WOLFSSL_NTLM=1
@@ -27538,7 +27515,8 @@ fi
printf "%s\n" "$as_me: Added $wolfssllibpath to CURL_LIBRARY_PATH" >&6;}
fi
fi
-
+ else
+ as_fn_error $? "--with-wolfssl but wolfSSL was not found or doesn't work" "$LINENO" 5
fi
fi
@@ -27548,165 +27526,6 @@ fi
-if test "x$OPT_MESALINK" != xno; then
- _cppflags=$CPPFLAGS
- _ldflags=$LDFLAGS
- ssl_msg=
-
- if test X"$OPT_MESALINK" != Xno; then
-
- if test "$OPT_MESALINK" = "yes"; then
- OPT_MESALINK=""
- fi
-
- if test -z "$OPT_MESALINK" ; then
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mesalink_library_init in -lmesalink" >&5
-printf %s "checking for mesalink_library_init in -lmesalink... " >&6; }
-if test ${ac_cv_lib_mesalink_mesalink_library_init+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmesalink $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char mesalink_library_init ();
-int main (void)
-{
-return mesalink_library_init ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- ac_cv_lib_mesalink_mesalink_library_init=yes
-else $as_nop
- ac_cv_lib_mesalink_mesalink_library_init=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mesalink_mesalink_library_init" >&5
-printf "%s\n" "$ac_cv_lib_mesalink_mesalink_library_init" >&6; }
-if test "x$ac_cv_lib_mesalink_mesalink_library_init" = xyes
-then :
-
-
-printf "%s\n" "#define USE_MESALINK 1" >>confdefs.h
-
- USE_MESALINK=1
-
- MESALINK_ENABLED=1
- USE_MESALINK="yes"
- ssl_msg="MesaLink"
- test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
-
-fi
-
- fi
-
- addld=""
- addlib=""
- addcflags=""
- mesalinklib=""
-
- if test "x$USE_MESALINK" != "xyes"; then
- addld=-L$OPT_MESALINK/lib$libsuff
- addcflags=-I$OPT_MESALINK/include
- mesalinklib=$OPT_MESALINK/lib$libsuff
-
- LDFLAGS="$LDFLAGS $addld"
- if test "$addcflags" != "-I/usr/include"; then
- CPPFLAGS="$CPPFLAGS $addcflags"
- fi
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mesalink_library_init in -lmesalink" >&5
-printf %s "checking for mesalink_library_init in -lmesalink... " >&6; }
-if test ${ac_cv_lib_mesalink_mesalink_library_init+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmesalink $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char mesalink_library_init ();
-int main (void)
-{
-return mesalink_library_init ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- ac_cv_lib_mesalink_mesalink_library_init=yes
-else $as_nop
- ac_cv_lib_mesalink_mesalink_library_init=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mesalink_mesalink_library_init" >&5
-printf "%s\n" "$ac_cv_lib_mesalink_mesalink_library_init" >&6; }
-if test "x$ac_cv_lib_mesalink_mesalink_library_init" = xyes
-then :
-
-
-printf "%s\n" "#define USE_MESALINK 1" >>confdefs.h
-
- USE_MESALINK=1
-
- MESALINK_ENABLED=1
- USE_MESALINK="yes"
- ssl_msg="MesaLink"
- test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
-
-else $as_nop
-
- CPPFLAGS=$_cppflags
- LDFLAGS=$_ldflags
-
-fi
-
- fi
-
- if test "x$USE_MESALINK" = "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected MesaLink" >&5
-printf "%s\n" "$as_me: detected MesaLink" >&6;}
-
- LIBS="-lmesalink $LIBS"
-
- if test -n "$mesalinklib"; then
- if test "x$cross_compiling" != "xyes"; then
- LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mesalinklib"
- export LD_LIBRARY_PATH
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $mesalinklib to LD_LIBRARY_PATH" >&5
-printf "%s\n" "$as_me: Added $mesalinklib to LD_LIBRARY_PATH" >&6;}
- fi
- fi
- fi
-
- fi
- test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
-fi
-
-
-
if test "x$OPT_BEARSSL" != xno; then
_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
@@ -28475,13 +28294,16 @@ if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then
LIBS="-ladvapi32 -lcrypt32 $LIBS"
fi
-case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED$RUSTLS_ENABLED"
+if test "x$curl_cv_native_windows" = "xyes" &&
+ test "x$curl_mingw_original" = "xno"; then
+ LIBS="-lbcrypt $LIBS"
+fi
+
+case "x$SSL_DISABLED$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED"
in
x)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&5
-printf "%s\n" "$as_me: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&2;}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl, --with-bearssl or --with-rustls to address this." >&5
-printf "%s\n" "$as_me: WARNING: Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl, --with-bearssl or --with-rustls to address this." >&2;}
+ as_fn_error $? "TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more.
+Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this." "$LINENO" 5
;;
x1)
# one SSL backend is enabled
@@ -28490,6 +28312,14 @@ x1)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: built with one SSL backend" >&5
printf "%s\n" "$as_me: built with one SSL backend" >&6;}
;;
+xD)
+ # explicitly built without TLS
+ ;;
+xD*)
+ as_fn_error $? "--without-ssl has been set together with an explicit option to use an ssl library
+(e.g. --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl, --with-rustls).
+Since these are conflicting parameters, verify which is the desired one and drop the other." "$LINENO" 5
+ ;;
*)
# more than one SSL backend is enabled
@@ -29122,13 +28952,10 @@ then :
fi
- for ac_header in libssh2.h
-do :
ac_fn_c_check_header_compile "$LINENO" "libssh2.h" "ac_cv_header_libssh2_h" "$ac_includes_default"
if test "x$ac_cv_header_libssh2_h" = xyes
then :
- printf "%s\n" "#define HAVE_LIBSSH2_H 1" >>confdefs.h
- curl_ssh_msg="enabled (libSSH2)"
+ curl_ssh_msg="enabled (libSSH2)"
LIBSSH2_ENABLED=1
printf "%s\n" "#define USE_LIBSSH2 1" >>confdefs.h
@@ -29138,7 +28965,6 @@ printf "%s\n" "#define USE_LIBSSH2 1" >>confdefs.h
fi
-done
if test X"$OPT_LIBSSH2" != Xoff &&
test "$LIBSSH2_ENABLED" != "1"; then
@@ -29375,13 +29201,10 @@ then :
fi
- for ac_header in libssh/libssh.h
-do :
ac_fn_c_check_header_compile "$LINENO" "libssh/libssh.h" "ac_cv_header_libssh_libssh_h" "$ac_includes_default"
if test "x$ac_cv_header_libssh_libssh_h" = xyes
then :
- printf "%s\n" "#define HAVE_LIBSSH_LIBSSH_H 1" >>confdefs.h
- curl_ssh_msg="enabled (libSSH)"
+ curl_ssh_msg="enabled (libSSH)"
LIBSSH_ENABLED=1
printf "%s\n" "#define USE_LIBSSH 1" >>confdefs.h
@@ -29391,7 +29214,6 @@ printf "%s\n" "#define USE_LIBSSH 1" >>confdefs.h
fi
-done
if test X"$OPT_LIBSSH" != Xoff &&
test "$LIBSSH_ENABLED" != "1"; then
@@ -29811,6 +29633,9 @@ else
fi
+CURL_PLIST_VERSION="$CURLVERSION"
+
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Windows native IDN (Windows native builds only)" >&5
printf %s "checking whether to enable Windows native IDN (Windows native builds only)... " >&6; }
@@ -29959,31 +29784,37 @@ then :
withval=$with_libidn2; OPT_IDN=$withval
fi
-case "$OPT_IDN" in
- no)
- want_idn="no"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+if test "x$tst_links_winidn" = "xyes"; then
+ want_idn="no"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (using winidn instead)" >&5
+printf "%s\n" "no (using winidn instead)" >&6; }
+else
+ case "$OPT_IDN" in
+ no)
+ want_idn="no"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- ;;
- default)
- want_idn="yes"
- want_idn_path="default"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5
+ ;;
+ default)
+ want_idn="yes"
+ want_idn_path="default"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5
printf "%s\n" "(assumed) yes" >&6; }
- ;;
- yes)
- want_idn="yes"
- want_idn_path="default"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ ;;
+ yes)
+ want_idn="yes"
+ want_idn_path="default"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
- ;;
- *)
- want_idn="yes"
- want_idn_path="$withval"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($withval)" >&5
+ ;;
+ *)
+ want_idn="yes"
+ want_idn_path="$withval"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($withval)" >&5
printf "%s\n" "yes ($withval)" >&6; }
- ;;
-esac
+ ;;
+ esac
+fi
if test "$want_idn" = "yes"; then
clean_CPPFLAGS="$CPPFLAGS"
@@ -30425,10 +30256,12 @@ case "$OPT_H2" in
yes)
want_nghttp2="default"
want_nghttp2_path=""
+ want_nghttp2_pkg_config_path=""
;;
*)
want_nghttp2="yes"
- want_nghttp2_path="$withval/lib/pkgconfig"
+ want_nghttp2_path="$withval"
+ want_nghttp2_pkg_config_path="$withval/lib/pkgconfig"
;;
esac
@@ -30557,8 +30390,8 @@ fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp2 options with pkg-config" >&5
printf %s "checking for libnghttp2 options with pkg-config... " >&6; }
itexists=`
- if test -n "$want_nghttp2_path"; then
- PKG_CONFIG_LIBDIR="$want_nghttp2_path"
+ if test -n "$want_nghttp2_pkg_config_path"; then
+ PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path"
export PKG_CONFIG_LIBDIR
fi
$PKGCONFIG --exists libnghttp2 >/dev/null 2>&1 && echo 1`
@@ -30576,8 +30409,8 @@ printf "%s\n" "found" >&6; }
if test "$PKGCONFIG" != "no" ; then
LIB_H2=`
- if test -n "$want_nghttp2_path"; then
- PKG_CONFIG_LIBDIR="$want_nghttp2_path"
+ if test -n "$want_nghttp2_pkg_config_path"; then
+ PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path"
export PKG_CONFIG_LIBDIR
fi
@@ -30586,8 +30419,8 @@ printf "%s\n" "found" >&6; }
printf "%s\n" "$as_me: -l is $LIB_H2" >&6;}
CPP_H2=`
- if test -n "$want_nghttp2_path"; then
- PKG_CONFIG_LIBDIR="$want_nghttp2_path"
+ if test -n "$want_nghttp2_pkg_config_path"; then
+ PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path"
export PKG_CONFIG_LIBDIR
fi
$PKGCONFIG --cflags-only-I libnghttp2`
@@ -30595,8 +30428,8 @@ printf "%s\n" "$as_me: -l is $LIB_H2" >&6;}
printf "%s\n" "$as_me: -I is $CPP_H2" >&6;}
LD_H2=`
- if test -n "$want_nghttp2_path"; then
- PKG_CONFIG_LIBDIR="$want_nghttp2_path"
+ if test -n "$want_nghttp2_pkg_config_path"; then
+ PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path"
export PKG_CONFIG_LIBDIR
fi
@@ -30604,13 +30437,23 @@ printf "%s\n" "$as_me: -I is $CPP_H2" >&6;}
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_H2" >&5
printf "%s\n" "$as_me: -L is $LD_H2" >&6;}
- LDFLAGS="$LDFLAGS $LD_H2"
- CPPFLAGS="$CPPFLAGS $CPP_H2"
- LIBS="$LIB_H2 $LIBS"
+ DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'`
+ elif test x"$want_nghttp2_path" != x; then
+ LIB_H2="-lnghttp2"
+ LD_H2=-L${want_nghttp2_path}/lib$libsuff
+ CPP_H2=-I${want_nghttp2_path}/include
+ DIR_H2=${want_nghttp2_path}/lib$libsuff
+ elif test X"$want_nghttp2" != Xdefault; then
+ as_fn_error $? "--with-nghttp2 was specified but could not find libnghttp2 pkg-config file." "$LINENO" 5
+ fi
+
+ LDFLAGS="$LDFLAGS $LD_H2"
+ CPPFLAGS="$CPPFLAGS $CPP_H2"
+ LIBS="$LIB_H2 $LIBS"
- # use nghttp2_session_set_local_window_size to require nghttp2
- # >= 1.12.0
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_set_local_window_size in -lnghttp2" >&5
+ # use nghttp2_session_set_local_window_size to require nghttp2
+ # >= 1.12.0
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_set_local_window_size in -lnghttp2" >&5
printf %s "checking for nghttp2_session_set_local_window_size in -lnghttp2... " >&6; }
if test ${ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size+y}
then :
@@ -30648,42 +30491,40 @@ printf "%s\n" "$ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size" >&6; }
if test "x$ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size" = xyes
then :
- for ac_header in nghttp2/nghttp2.h
+ for ac_header in nghttp2/nghttp2.h
do :
ac_fn_c_check_header_compile "$LINENO" "nghttp2/nghttp2.h" "ac_cv_header_nghttp2_nghttp2_h" "$ac_includes_default"
if test "x$ac_cv_header_nghttp2_nghttp2_h" = xyes
then :
printf "%s\n" "#define HAVE_NGHTTP2_NGHTTP2_H 1" >>confdefs.h
curl_h2_msg="enabled (nghttp2)"
- NGHTTP2_ENABLED=1
+ NGHTTP2_ENABLED=1
printf "%s\n" "#define USE_NGHTTP2 1" >>confdefs.h
- USE_NGHTTP2=1
+ USE_NGHTTP2=1
fi
done
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2"
+ export CURL_LIBRARY_PATH
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_H2 to CURL_LIBRARY_PATH" >&5
+printf "%s\n" "$as_me: Added $DIR_H2 to CURL_LIBRARY_PATH" >&6;}
+
else $as_nop
- LDFLAGS=$CLEANLDFLAGS
- CPPFLAGS=$CLEANCPPFLAGS
- LIBS=$CLEANLIBS
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
fi
-
- else
- if test X"$want_nghttp2" != Xdefault; then
- as_fn_error $? "--with-nghttp2 was specified but could not find libnghttp2 pkg-config file." "$LINENO" 5
- fi
- fi
-
fi
-OPT_TCP2="yes"
+OPT_TCP2="no"
if test "x$disable_http" = "xyes"; then
# without HTTP, ngtcp2 is no use
@@ -31145,9 +30986,9 @@ printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_OPENSSL" >&6;}
if test "x$cross_compiling" != "xyes"; then
DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/^-L//'`
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_openssl" >&5
-printf %s "checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_openssl... " >&6; }
-if test ${ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial+y}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_openssl" >&5
+printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_openssl... " >&6; }
+if test ${ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb+y}
then :
printf %s "(cached) " >&6
else $as_nop
@@ -31160,27 +31001,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char ngtcp2_crypto_ctx_initial ();
+char ngtcp2_crypto_recv_client_initial_cb ();
int main (void)
{
-return ngtcp2_crypto_ctx_initial ();
+return ngtcp2_crypto_recv_client_initial_cb ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
- ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial=yes
+ ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb=yes
else $as_nop
- ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial=no
+ ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial" >&5
-printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial" >&6; }
-if test "x$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial" = xyes
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" >&5
+printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" >&6; }
+if test "x$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" = xyes
then :
for ac_header in ngtcp2/ngtcp2_crypto.h
@@ -31398,9 +31239,9 @@ printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_GNUTLS" >&6;}
if test "x$cross_compiling" != "xyes"; then
DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'`
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_gnutls" >&5
-printf %s "checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_gnutls... " >&6; }
-if test ${ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial+y}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls" >&5
+printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls... " >&6; }
+if test ${ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb+y}
then :
printf %s "(cached) " >&6
else $as_nop
@@ -31413,27 +31254,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char ngtcp2_crypto_ctx_initial ();
+char ngtcp2_crypto_recv_client_initial_cb ();
int main (void)
{
-return ngtcp2_crypto_ctx_initial ();
+return ngtcp2_crypto_recv_client_initial_cb ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
- ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial=yes
+ ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb=yes
else $as_nop
- ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial=no
+ ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial" >&5
-printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial" >&6; }
-if test "x$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial" = xyes
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" >&5
+printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" >&6; }
+if test "x$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" = xyes
then :
for ac_header in ngtcp2/ngtcp2_crypto.h
@@ -31472,6 +31313,259 @@ fi
fi
fi
+if test "x$NGTCP2_ENABLED" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+
+ if test -n "$PKG_CONFIG"; then
+ PKGCONFIG="$PKG_CONFIG"
+ else
+ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKGCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ 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
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ 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"
+ printf "%s\n" "$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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+printf "%s\n" "$PKGCONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKGCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ 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
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ 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"
+ printf "%s\n" "$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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+printf "%s\n" "$ac_pt_PKGCONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$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
+
+ fi
+
+ if test "x$PKGCONFIG" != "xno"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_wolfssl options with pkg-config" >&5
+printf %s "checking for libngtcp2_crypto_wolfssl options with pkg-config... " >&6; }
+ itexists=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --exists libngtcp2_crypto_wolfssl >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ PKGCONFIG="no"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
+printf "%s\n" "found" >&6; }
+ fi
+ fi
+
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_NGTCP2_CRYPTO_WOLFSSL=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&5
+printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&6;}
+
+ CPP_NGTCP2_CRYPTO_WOLFSSL=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&5
+printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&6;}
+
+ LD_NGTCP2_CRYPTO_WOLFSSL=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&5
+printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&6;}
+
+ LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL"
+ CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL"
+ LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl" >&5
+printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl... " >&6; }
+if test ${ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lngtcp2_crypto_wolfssl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngtcp2_crypto_recv_client_initial_cb ();
+int main (void)
+{
+return ngtcp2_crypto_recv_client_initial_cb ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb=yes
+else $as_nop
+ ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" >&5
+printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" >&6; }
+if test "x$ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" = xyes
+then :
+
+ for ac_header in ngtcp2/ngtcp2_crypto.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default"
+if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h
+ NGTCP2_ENABLED=1
+
+printf "%s\n" "#define USE_NGTCP2_CRYPTO_WOLFSSL 1" >>confdefs.h
+
+ USE_NGTCP2_CRYPTO_WOLFSSL=1
+
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL"
+ export CURL_LIBRARY_PATH
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&5
+printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&6;}
+
+fi
+
+done
+
+else $as_nop
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+
+fi
+
+
+ else
+ if test X"$want_tcp2" != Xdefault; then
+ as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file." "$LINENO" 5
+ fi
+ fi
+fi
+
OPT_NGHTTP3="yes"
@@ -32058,6 +32152,125 @@ fi
fi
+OPT_MSH3="no"
+
+if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
+ # without HTTP or with ngtcp2, msh3 is no use
+ OPT_MSH3="no"
+fi
+
+
+# Check whether --with-msh3 was given.
+if test ${with_msh3+y}
+then :
+ withval=$with_msh3; OPT_MSH3=$withval
+fi
+
+case "$OPT_MSH3" in
+ no)
+ want_msh3="no"
+ ;;
+ yes)
+ want_msh3="default"
+ want_msh3_path=""
+ ;;
+ *)
+ want_msh3="yes"
+ want_msh3_path="$withval"
+ ;;
+esac
+
+if test X"$want_msh3" != Xno; then
+
+ if test "$NGHTTP3_ENABLED" = 1; then
+ as_fn_error $? "--with-msh3 and --with-ngtcp2 are mutually exclusive" "$LINENO" 5
+ fi
+
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+ if test -n "$want_msh3_path"; then
+ LD_MSH3="-L$want_msh3_path/lib"
+ CPP_MSH3="-I$want_msh3_path/include"
+ DIR_MSH3="$want_msh3_path/lib"
+ LDFLAGS="$LDFLAGS $LD_MSH3"
+ CPPFLAGS="$CPPFLAGS $CPP_MSH3"
+ fi
+ LIBS="-lmsh3 $LIBS"
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MsH3ApiOpen in -lmsh3" >&5
+printf %s "checking for MsH3ApiOpen in -lmsh3... " >&6; }
+if test ${ac_cv_lib_msh3_MsH3ApiOpen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmsh3 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char MsH3ApiOpen ();
+int main (void)
+{
+return MsH3ApiOpen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_msh3_MsH3ApiOpen=yes
+else $as_nop
+ ac_cv_lib_msh3_MsH3ApiOpen=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_msh3_MsH3ApiOpen" >&5
+printf "%s\n" "$ac_cv_lib_msh3_MsH3ApiOpen" >&6; }
+if test "x$ac_cv_lib_msh3_MsH3ApiOpen" = xyes
+then :
+
+ for ac_header in msh3.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "msh3.h" "ac_cv_header_msh3_h" "$ac_includes_default"
+if test "x$ac_cv_header_msh3_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MSH3_H 1" >>confdefs.h
+ curl_h3_msg="enabled (msh3)"
+ MSH3_ENABLED=1
+
+printf "%s\n" "#define USE_MSH3 1" >>confdefs.h
+
+ USE_MSH3=1
+
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_MSH3"
+ export CURL_LIBRARY_PATH
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_MSH3 to CURL_LIBRARY_PATH" >&5
+printf "%s\n" "$as_me: Added $DIR_MSH3 to CURL_LIBRARY_PATH" >&6;}
+else $as_nop
+ experimental="$experimental HTTP3"
+
+fi
+
+done
+
+else $as_nop
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+
+fi
+
+fi
+
+
OPT_ZSH_FPATH=default
# Check whether --with-zsh-functions-dir was given.
@@ -32241,181 +32454,6 @@ printf "%s\n" "found" >&6; }
;;
esac
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for malloc.h" >&5
-printf %s "checking for malloc.h... " >&6; }
-if test ${curl_cv_header_malloc_h+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#include <malloc.h>
-
-int main (void)
-{
-
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_header_malloc_h="yes"
-
-else $as_nop
-
- curl_cv_header_malloc_h="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_malloc_h" >&5
-printf "%s\n" "$curl_cv_header_malloc_h" >&6; }
- if test "$curl_cv_header_malloc_h" = "yes"; then
-
-printf "%s\n" "#define HAVE_MALLOC_H 1" >>confdefs.h
-
- #
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#include <stdlib.h>
-
-int main (void)
-{
-
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_need_header_malloc_h="no"
-
-else $as_nop
-
- curl_cv_need_header_malloc_h="yes"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- #
- case "$curl_cv_need_header_malloc_h" in
- yes)
-
-printf "%s\n" "#define NEED_MALLOC_H 1" >>confdefs.h
-
- ;;
- esac
- fi
-
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for memory.h" >&5
-printf %s "checking for memory.h... " >&6; }
-if test ${curl_cv_header_memory_h+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#include <memory.h>
-
-int main (void)
-{
-
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_header_memory_h="yes"
-
-else $as_nop
-
- curl_cv_header_memory_h="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_memory_h" >&5
-printf "%s\n" "$curl_cv_header_memory_h" >&6; }
- if test "$curl_cv_header_memory_h" = "yes"; then
-
-printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h
-
- #
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#include <stdlib.h>
-
-int main (void)
-{
-
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_need_header_memory_h="no"
-
-else $as_nop
-
- curl_cv_need_header_memory_h="yes"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- #
- case "$curl_cv_need_header_memory_h" in
- yes)
-
-printf "%s\n" "#define NEED_MEMORY_H 1" >>confdefs.h
-
- ;;
- esac
- fi
-
-
ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -32928,7 +32966,7 @@ then :
printf "%s\n" "#define HAVE_NETINET_TCP_H 1" >>confdefs.h
fi
-ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "
+ac_fn_c_check_header_compile "$LINENO" "netinet/udp.h" "ac_cv_header_netinet_udp_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -32955,12 +32993,12 @@ ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "
"
-if test "x$ac_cv_header_netdb_h" = xyes
+if test "x$ac_cv_header_netinet_udp_h" = xyes
then :
- printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_NETINET_UDP_H 1" >>confdefs.h
fi
-ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h" "
+ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -32987,12 +33025,12 @@ ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h
"
-if test "x$ac_cv_header_sys_sockio_h" = xyes
+if test "x$ac_cv_header_netdb_h" = xyes
then :
- printf "%s\n" "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h
fi
-ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -33019,12 +33057,12 @@ ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "
"
-if test "x$ac_cv_header_sys_stat_h" = xyes
+if test "x$ac_cv_header_sys_sockio_h" = xyes
then :
- printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h
fi
-ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -33051,12 +33089,12 @@ ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h"
"
-if test "x$ac_cv_header_sys_param_h" = xyes
+if test "x$ac_cv_header_sys_stat_h" = xyes
then :
- printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h
fi
-ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -33083,12 +33121,12 @@ ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "
"
-if test "x$ac_cv_header_termios_h" = xyes
+if test "x$ac_cv_header_sys_param_h" = xyes
then :
- printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
fi
-ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "
+ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -33115,12 +33153,12 @@ ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "
"
-if test "x$ac_cv_header_termio_h" = xyes
+if test "x$ac_cv_header_termios_h" = xyes
then :
- printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h
fi
-ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "
+ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -33147,12 +33185,12 @@ ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "
"
-if test "x$ac_cv_header_fcntl_h" = xyes
+if test "x$ac_cv_header_termio_h" = xyes
then :
- printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h
fi
-ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "
+ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -33179,9 +33217,9 @@ ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "
"
-if test "x$ac_cv_header_alloca_h" = xyes
+if test "x$ac_cv_header_fcntl_h" = xyes
then :
- printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "
@@ -33995,15 +34033,8 @@ printf "%s\n" "#define HAVE_STRUCT_TIMEVAL 1" >>confdefs.h
printf %s "checking run-time libs availability... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
-
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+ darwin*)
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -34033,59 +34064,56 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
-
-
- fi
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
-printf %s "checking size of size_t... " >&6; }
-if test ${ac_cv_sizeof_size_t+y}
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
- printf %s "(cached) " >&6
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
else $as_nop
- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
-
-
-int main (void)
+int main()
{
-switch (0) case 0: case (sizeof (size_t) == $ac_size):;
- ;
- return 0;
+ return 0;
}
+
_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_run "$LINENO"
then :
- ac_cv_sizeof_size_t=$ac_size
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- if test x$ac_cv_sizeof_size_t != x ; then break; fi
-done
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: fine" >&5
+printf "%s\n" "fine" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
+ as_fn_error $? "one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS" "$LINENO" 5
fi
-
-if test x$ac_cv_sizeof_size_t = x ; then
- as_fn_error $? "cannot determine a size for size_t" "$LINENO" 5
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
-printf "%s\n" "$ac_cv_sizeof_size_t" >&6; }
-printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-printf %s "checking size of long... " >&6; }
-if test ${ac_cv_sizeof_long+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ fi
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
+printf %s "checking size of size_t... " >&6; }
+ r=0
+ for typesize in 8 4 2 16 1; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -34093,38 +34121,48 @@ else $as_nop
int main (void)
{
-switch (0) case 0: case (sizeof (long) == $ac_size):;
+switch(0) {
+ case 0:
+ case (sizeof(size_t) == $typesize):;
+ }
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sizeof_long=$ac_size
+
+ r=$typesize
+else $as_nop
+
+ r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- if test x$ac_cv_sizeof_long != x ; then break; fi
-done
+ if test $r -gt 0; then
+ break;
+ fi
+ done
+ if test $r -eq 0; then
+ as_fn_error $? "Failed to find size of size_t" "$LINENO" 5
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+ tname=$(echo "ac_cv_sizeof_size_t" | tr A-Z a-z | tr " " "_")
+ eval "$tname=$r"
-fi
-if test x$ac_cv_sizeof_long = x ; then
- as_fn_error $? "cannot determine a size for long" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-printf "%s\n" "$ac_cv_sizeof_long" >&6; }
+printf "%s\n" "#define SIZEOF_SIZE_T $r" >>confdefs.h
-printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-printf %s "checking size of int... " >&6; }
-if test ${ac_cv_sizeof_int+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+printf %s "checking size of long... " >&6; }
+ r=0
+ for typesize in 8 4 2 16 1; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -34132,38 +34170,48 @@ else $as_nop
int main (void)
{
-switch (0) case 0: case (sizeof (int) == $ac_size):;
+switch(0) {
+ case 0:
+ case (sizeof(long) == $typesize):;
+ }
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sizeof_int=$ac_size
+
+ r=$typesize
+else $as_nop
+
+ r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- if test x$ac_cv_sizeof_int != x ; then break; fi
-done
+ if test $r -gt 0; then
+ break;
+ fi
+ done
+ if test $r -eq 0; then
+ as_fn_error $? "Failed to find size of long" "$LINENO" 5
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+ tname=$(echo "ac_cv_sizeof_long" | tr A-Z a-z | tr " " "_")
+ eval "$tname=$r"
-fi
-if test x$ac_cv_sizeof_int = x ; then
- as_fn_error $? "cannot determine a size for int" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-printf "%s\n" "$ac_cv_sizeof_int" >&6; }
+printf "%s\n" "#define SIZEOF_LONG $r" >>confdefs.h
-printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
-printf %s "checking size of short... " >&6; }
-if test ${ac_cv_sizeof_short+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+printf %s "checking size of int... " >&6; }
+ r=0
+ for typesize in 8 4 2 16 1; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -34171,38 +34219,48 @@ else $as_nop
int main (void)
{
-switch (0) case 0: case (sizeof (short) == $ac_size):;
+switch(0) {
+ case 0:
+ case (sizeof(int) == $typesize):;
+ }
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sizeof_short=$ac_size
+
+ r=$typesize
+else $as_nop
+
+ r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- if test x$ac_cv_sizeof_short != x ; then break; fi
-done
+ if test $r -gt 0; then
+ break;
+ fi
+ done
+ if test $r -eq 0; then
+ as_fn_error $? "Failed to find size of int" "$LINENO" 5
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+ tname=$(echo "ac_cv_sizeof_int" | tr A-Z a-z | tr " " "_")
+ eval "$tname=$r"
+
+
+printf "%s\n" "#define SIZEOF_INT $r" >>confdefs.h
-fi
-if test x$ac_cv_sizeof_short = x ; then
- as_fn_error $? "cannot determine a size for short" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-printf "%s\n" "$ac_cv_sizeof_short" >&6; }
-printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
printf %s "checking size of time_t... " >&6; }
-if test ${ac_cv_sizeof_time_t+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ r=0
+ for typesize in 8 4 2 16 1; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -34210,38 +34268,48 @@ else $as_nop
int main (void)
{
-switch (0) case 0: case (sizeof (time_t) == $ac_size):;
+switch(0) {
+ case 0:
+ case (sizeof(time_t) == $typesize):;
+ }
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sizeof_time_t=$ac_size
+
+ r=$typesize
+else $as_nop
+
+ r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- if test x$ac_cv_sizeof_time_t != x ; then break; fi
-done
+ if test $r -gt 0; then
+ break;
+ fi
+ done
+ if test $r -eq 0; then
+ as_fn_error $? "Failed to find size of time_t" "$LINENO" 5
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+ tname=$(echo "ac_cv_sizeof_time_t" | tr A-Z a-z | tr " " "_")
+ eval "$tname=$r"
+
+
+printf "%s\n" "#define SIZEOF_TIME_T $r" >>confdefs.h
-fi
-if test x$ac_cv_sizeof_time_t = x ; then
- as_fn_error $? "cannot determine a size for time_t" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
-printf "%s\n" "$ac_cv_sizeof_time_t" >&6; }
-printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
printf %s "checking size of off_t... " >&6; }
-if test ${ac_cv_sizeof_off_t+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ r=0
+ for typesize in 8 4 2 16 1; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -34249,41 +34317,51 @@ else $as_nop
int main (void)
{
-switch (0) case 0: case (sizeof (off_t) == $ac_size):;
+switch(0) {
+ case 0:
+ case (sizeof(off_t) == $typesize):;
+ }
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sizeof_off_t=$ac_size
+
+ r=$typesize
+else $as_nop
+
+ r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- if test x$ac_cv_sizeof_off_t != x ; then break; fi
-done
+ if test $r -gt 0; then
+ break;
+ fi
+ done
+ if test $r -eq 0; then
+ as_fn_error $? "Failed to find size of off_t" "$LINENO" 5
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+ tname=$(echo "ac_cv_sizeof_off_t" | tr A-Z a-z | tr " " "_")
+ eval "$tname=$r"
-fi
-if test x$ac_cv_sizeof_off_t = x ; then
- as_fn_error $? "cannot determine a size for off_t" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
-printf "%s\n" "$ac_cv_sizeof_off_t" >&6; }
+printf "%s\n" "#define SIZEOF_OFF_T $r" >>confdefs.h
-printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h
o=$CPPFLAGS
CPPFLAGS="-I$srcdir/include $CPPFLAGS"
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_off_t" >&5
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_off_t" >&5
printf %s "checking size of curl_off_t... " >&6; }
-if test ${ac_cv_sizeof_curl_off_t+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ r=0
+ for typesize in 8 4 2 16 1; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -34293,28 +34371,39 @@ else $as_nop
int main (void)
{
-switch (0) case 0: case (sizeof (curl_off_t) == $ac_size):;
+switch(0) {
+ case 0:
+ case (sizeof(curl_off_t) == $typesize):;
+ }
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sizeof_curl_off_t=$ac_size
+
+ r=$typesize
+else $as_nop
+
+ r=0
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- if test x$ac_cv_sizeof_curl_off_t != x ; then break; fi
-done
+ if test $r -gt 0; then
+ break;
+ fi
+ done
+ if test $r -eq 0; then
+ as_fn_error $? "Failed to find size of curl_off_t" "$LINENO" 5
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+ tname=$(echo "ac_cv_sizeof_curl_off_t" | tr A-Z a-z | tr " " "_")
+ eval "$tname=$r"
-fi
-if test x$ac_cv_sizeof_curl_off_t = x ; then
- as_fn_error $? "cannot determine a size for curl_off_t" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_curl_off_t" >&5
-printf "%s\n" "$ac_cv_sizeof_curl_off_t" >&6; }
+printf "%s\n" "#define SIZEOF_CURL_OFF_T $r" >>confdefs.h
-printf "%s\n" "#define SIZEOF_CURL_OFF_T $ac_cv_sizeof_curl_off_t" >>confdefs.h
CPPFLAGS=$o
@@ -34330,42 +34419,22 @@ printf "%s\n" "#define HAVE_LONGLONG 1" >>confdefs.h
fi
-if test "xyes" = "x$longlong"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if numberLL works" >&5
-printf %s "checking if numberLL works... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-
-int main (void)
-{
-
- long long val = 1000LL;
- ;
- return 0;
-}
+if test ${ac_cv_sizeof_curl_off_t} -lt 8; then
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+# Check whether --with-n64-deprecated was given.
+if test ${with_n64_deprecated+y}
then :
+ withval=$with_n64_deprecated; if test X"$withval" != Xno; then
+ OPT_N64_AWARE=$withval
+ fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_LL 1" >>confdefs.h
-
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ if test -z "$OPT_N64_AWARE"; then
+ as_fn_error $? "support for systems without 64 bit curl_off_t is deprecated, use --with-n64-deprecated until then" "$LINENO" 5
+ fi
+fi
# check for ssize_t
ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
@@ -34459,15 +34528,45 @@ fi
printf %s "checking if time_t is unsigned... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <time.h>
+ #include <limits.h>
+ time_t t = -1;
+ return (t > 0);
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+printf "%s\n" "#define HAVE_TIME_T_UNSIGNED 1" >>confdefs.h
+
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
@@ -34499,7 +34598,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
@@ -34732,7 +34833,7 @@ fi
- ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+ ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_select_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
@@ -34778,11 +34879,7 @@ printf %s "checking for select... " >&6; }
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
-#endif
+$curl_includes_bsdsocket
#endif
int main (void)
@@ -34813,171 +34910,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
#
if test "$curl_cv_select" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for select" >&5
-printf %s "checking types of args and return type for select... " >&6; }
-if test ${curl_cv_func_select_args+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
-
- curl_cv_func_select_args="unknown"
- for sel_retv in 'int' 'ssize_t'; do
- for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do
- for sel_arg234 in 'fd_set *' 'int *' 'void *'; do
- for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do
- if test "$curl_cv_func_select_args" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define SELECTCALLCONV PASCAL
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <time.h>
-#ifndef HAVE_WINDOWS_H
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#elif defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
-#endif
-#define SELECTCALLCONV
-#endif
-#ifndef HAVE_STRUCT_TIMEVAL
- struct timeval {
- long tv_sec;
- long tv_usec;
- };
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
- extern $sel_retv SELECTCALLCONV
- select($sel_arg1,
- $sel_arg234,
- $sel_arg234,
- $sel_arg234,
- $sel_arg5);
-#endif
-
-int main (void)
-{
-
- $sel_arg1 nfds=0;
- $sel_arg234 rfds=0;
- $sel_arg234 wfds=0;
- $sel_arg234 efds=0;
- $sel_retv res = select(nfds, rfds, wfds, efds, 0);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- done
- done
- done
- done
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_select_args" >&5
-printf "%s\n" "$curl_cv_func_select_args" >&6; } # AC-CACHE-CHECK
- if test "$curl_cv_func_select_args" = "unknown"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find proper types to use for select args" >&5
-printf "%s\n" "$as_me: WARNING: Cannot find proper types to use for select args" >&2;}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_SELECT will not be defined" >&5
-printf "%s\n" "$as_me: WARNING: HAVE_SELECT will not be defined" >&2;}
- else
- select_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'`
- IFS=$select_prev_IFS
- shift
- #
- sel_qual_type_arg5=$3
- #
-
-printf "%s\n" "#define SELECT_TYPE_ARG1 $1" >>confdefs.h
-
-
-printf "%s\n" "#define SELECT_TYPE_ARG234 $2" >>confdefs.h
-
-
-printf "%s\n" "#define SELECT_TYPE_RETV $4" >>confdefs.h
-
- #
- prev_sh_opts=$-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set -f
- ;;
- esac
- #
- case "$sel_qual_type_arg5" in
- const*)
- sel_qual_arg5=const
- sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'`
- ;;
- *)
- sel_qual_arg5=
- sel_type_arg5=$sel_qual_type_arg5
- ;;
- esac
- #
-
-printf "%s\n" "#define SELECT_QUAL_ARG5 $sel_qual_arg5" >>confdefs.h
-
-
-printf "%s\n" "#define SELECT_TYPE_ARG5 $sel_type_arg5" >>confdefs.h
-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set +f
- ;;
- esac
- #
printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h
- curl_cv_func_select="yes"
- fi
+ curl_cv_func_select="yes"
fi
- ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
+ ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
@@ -35007,10 +34948,7 @@ printf %s "checking for recv... " >&6; }
#include <winsock2.h>
#endif
#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
+$curl_includes_bsdsocket
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -35047,118 +34985,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
#
if test "$curl_cv_recv" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for recv" >&5
-printf %s "checking types of args and return type for recv... " >&6; }
-if test ${curl_cv_func_recv_args+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
-
- curl_cv_func_recv_args="unknown"
- for recv_retv in 'int' 'ssize_t'; do
- for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do
- for recv_arg2 in 'char *' 'void *'; do
- for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
- for recv_arg4 in 'int' 'unsigned int'; do
- if test "$curl_cv_func_recv_args" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define RECVCALLCONV PASCAL
-#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define RECVCALLCONV
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
- extern $recv_retv RECVCALLCONV
- recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
-#endif
-
-int main (void)
-{
-
- $recv_arg1 s=0;
- $recv_arg2 buf=0;
- $recv_arg3 len=0;
- $recv_arg4 flags=0;
- $recv_retv res = recv(s, buf, len, flags);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- done
- done
- done
- done
- done
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_recv_args" >&5
-printf "%s\n" "$curl_cv_func_recv_args" >&6; } # AC-CACHE-CHECK
- if test "$curl_cv_func_recv_args" = "unknown"; then
- as_fn_error $? "Cannot find proper types to use for recv args" "$LINENO" 5
- else
- recv_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'`
- IFS=$recv_prev_IFS
- shift
- #
-
-printf "%s\n" "#define RECV_TYPE_ARG1 $1" >>confdefs.h
-
-
-printf "%s\n" "#define RECV_TYPE_ARG2 $2" >>confdefs.h
-
-
-printf "%s\n" "#define RECV_TYPE_ARG3 $3" >>confdefs.h
-
-
-printf "%s\n" "#define RECV_TYPE_ARG4 $4" >>confdefs.h
-
-
-printf "%s\n" "#define RECV_TYPE_RETV $5" >>confdefs.h
-
- #
printf "%s\n" "#define HAVE_RECV 1" >>confdefs.h
curl_cv_func_recv="yes"
- fi
else
as_fn_error $? "Unable to link function recv" "$LINENO" 5
fi
- ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
+ ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_types_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
@@ -35188,10 +35024,7 @@ printf %s "checking for send... " >&6; }
#include <winsock2.h>
#endif
#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
+$curl_includes_bsdsocket
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -35228,146 +35061,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
#
if test "$curl_cv_send" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for send" >&5
-printf %s "checking types of args and return type for send... " >&6; }
-if test ${curl_cv_func_send_args+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
-
- curl_cv_func_send_args="unknown"
- for send_retv in 'int' 'ssize_t'; do
- for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do
- for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
- for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
- for send_arg4 in 'int' 'unsigned int'; do
- if test "$curl_cv_func_send_args" = "unknown"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define SENDCALLCONV PASCAL
-#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define SENDCALLCONV
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
- extern $send_retv SENDCALLCONV
- send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
-#endif
-
-int main (void)
-{
-
- $send_arg1 s=0;
- $send_arg3 len=0;
- $send_arg4 flags=0;
- $send_retv res = send(s, 0, len, flags);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- done
- done
- done
- done
- done
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_send_args" >&5
-printf "%s\n" "$curl_cv_func_send_args" >&6; } # AC-CACHE-CHECK
- if test "$curl_cv_func_send_args" = "unknown"; then
- as_fn_error $? "Cannot find proper types to use for send args" "$LINENO" 5
- else
- send_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'`
- IFS=$send_prev_IFS
- shift
- #
- send_qual_type_arg2=$2
- #
-
-printf "%s\n" "#define SEND_TYPE_ARG1 $1" >>confdefs.h
-
-
-printf "%s\n" "#define SEND_TYPE_ARG3 $3" >>confdefs.h
-
-
-printf "%s\n" "#define SEND_TYPE_ARG4 $4" >>confdefs.h
-
-
-printf "%s\n" "#define SEND_TYPE_RETV $5" >>confdefs.h
-
- #
- prev_sh_opts=$-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set -f
- ;;
- esac
- #
- case "$send_qual_type_arg2" in
- const*)
- send_qual_arg2=const
- send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'`
- ;;
- *)
- send_qual_arg2=
- send_type_arg2=$send_qual_type_arg2
- ;;
- esac
- #
-
-printf "%s\n" "#define SEND_QUAL_ARG2 $send_qual_arg2" >>confdefs.h
-
-
-printf "%s\n" "#define SEND_TYPE_ARG2 $send_type_arg2" >>confdefs.h
-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set +f
- ;;
- esac
- #
printf "%s\n" "#define HAVE_SEND 1" >>confdefs.h
- curl_cv_func_send="yes"
- fi
+ curl_cv_func_send="yes"
else
as_fn_error $? "Unable to link function send" "$LINENO" 5
fi
@@ -35407,10 +35104,6 @@ else $as_nop
#include <winsock2.h>
#endif
#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -35885,7 +35578,6 @@ printf %s "checking if closesocket can be linked... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_socket
int main (void)
@@ -35923,7 +35615,6 @@ printf %s "checking if closesocket is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_socket
_ACEOF
@@ -35954,7 +35645,6 @@ printf %s "checking if closesocket is compilable... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_socket
int main (void)
@@ -36044,7 +35734,7 @@ fi
- #
+ #
tst_links_closesocket_camel="unknown"
tst_proto_closesocket_camel="unknown"
tst_compi_closesocket_camel="unknown"
@@ -36056,6 +35746,7 @@ printf %s "checking if CloseSocket can be linked... " >&6; }
/* end confdefs.h. */
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
int main (void)
@@ -36092,6 +35783,7 @@ printf %s "checking if CloseSocket is prototyped... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
_ACEOF
@@ -36121,6 +35813,7 @@ printf %s "checking if CloseSocket is compilable... " >&6; }
/* end confdefs.h. */
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
int main (void)
@@ -36184,7 +35877,7 @@ printf "%s\n" "no" >&6; }
fi
- #
+ #
tst_links_connect="unknown"
tst_proto_connect="unknown"
tst_compi_connect="unknown"
@@ -36268,7 +35961,7 @@ printf %s "checking if connect is compilable... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
@@ -36518,7 +36211,7 @@ printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h
tst_allow_fcntl_o_nonblock="unknown"
#
case $host_os in
- sunos4* | aix3* | beos*)
+ sunos4* | aix3*)
curl_disallow_fcntl_o_nonblock="yes"
;;
esac
@@ -37487,15 +37180,74 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
printf %s "checking if getaddrinfo seems to work... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ $curl_includes_ws2tcpip
+ $curl_includes_stdlib
+ $curl_includes_string
+ $curl_includes_sys_socket
+ $curl_includes_netdb
+
+int main (void)
+{
+
+ struct addrinfo hints;
+ struct addrinfo *ai = 0;
+ int error;
+
+ #ifdef HAVE_WINSOCK2_H
+ WSADATA wsa;
+ if (WSAStartup(MAKEWORD(2,2), &wsa))
+ exit(2);
+ #endif
+
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_flags = AI_NUMERICHOST;
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ error = getaddrinfo("127.0.0.1", 0, &hints, &ai);
+ if(error || !ai)
+ exit(1); /* fail */
+ else
+ exit(0);
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+ ;
+ return 0;
+}
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ tst_works_getaddrinfo="yes"
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ tst_works_getaddrinfo="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -37556,7 +37308,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
#
@@ -37853,7 +37607,7 @@ printf %s "checking if gethostbyname is compilable... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
+ $curl_includes_bsdsocket
$curl_includes_netdb
int main (void)
@@ -38007,6 +37761,7 @@ printf %s "checking if gethostbyname_r takes 3 args.... " >&6; }
$curl_includes_netdb
+ $curl_includes_bsdsocket
int main (void)
{
@@ -38044,6 +37799,7 @@ printf %s "checking if gethostbyname_r takes 5 args.... " >&6; }
$curl_includes_netdb
+ $curl_includes_bsdsocket
int main (void)
{
@@ -38081,6 +37837,7 @@ printf %s "checking if gethostbyname_r takes 6 args.... " >&6; }
$curl_includes_netdb
+ $curl_includes_bsdsocket
int main (void)
{
@@ -38192,8 +37949,8 @@ printf %s "checking if gethostname can be linked... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_unistd
+ $curl_includes_bsdsocket
int main (void)
{
@@ -38230,8 +37987,8 @@ printf %s "checking if gethostname is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_unistd
+ $curl_includes_bsdsocket
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -38261,8 +38018,8 @@ printf %s "checking if gethostname is compilable... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_unistd
+ $curl_includes_bsdsocket
int main (void)
{
@@ -38304,8 +38061,8 @@ printf %s "checking for gethostname arg 2 data type... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_unistd
+ $curl_includes_bsdsocket
$curl_preprocess_callconv
extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
@@ -38994,15 +38751,60 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
printf %s "checking if getifaddrs seems to work... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+ $curl_includes_stdlib
+ $curl_includes_ifaddrs
+
+int main (void)
+{
+
+ struct ifaddrs *ifa = 0;
+ int error;
+
+ error = getifaddrs(&ifa);
+ if(error || !ifa)
+ exit(1); /* fail */
+ else
+ exit(0);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ tst_works_getifaddrs="yes"
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ tst_works_getifaddrs="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -39049,7 +38851,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
#
@@ -39239,15 +39043,60 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
printf %s "checking if gmtime_r seems to work... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ $curl_includes_stdlib
+ $curl_includes_time
+
+int main (void)
+{
+
+ time_t local = 1170352587;
+ struct tm *gmt = 0;
+ struct tm result;
+ gmt = gmtime_r(&local, &result);
+ if(gmt)
+ exit(0);
+ else
+ exit(1);
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+ ;
+ return 0;
+}
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ tst_works_gmtime_r="yes"
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ tst_works_gmtime_r="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -39294,7 +39143,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
#
@@ -39507,15 +39358,102 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
printf %s "checking if inet_ntop seems to work... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ $curl_includes_stdlib
+ $curl_includes_arpa_inet
+ $curl_includes_string
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+int main (void)
+{
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+ char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
+ char ipv4res[sizeof "255.255.255.255"];
+ unsigned char ipv6a[26];
+ unsigned char ipv4a[5];
+ char *ipv6ptr = 0;
+ char *ipv4ptr = 0;
+ /* - */
+ ipv4res[0] = '\0';
+ ipv4a[0] = 0xc0;
+ ipv4a[1] = 0xa8;
+ ipv4a[2] = 0x64;
+ ipv4a[3] = 0x01;
+ ipv4a[4] = 0x01;
+ /* - */
+ ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res));
+ if(!ipv4ptr)
+ exit(1); /* fail */
+ if(ipv4ptr != ipv4res)
+ exit(1); /* fail */
+ if(!ipv4ptr[0])
+ exit(1); /* fail */
+ if(memcmp(ipv4res, "192.168.100.1", 13) != 0)
+ exit(1); /* fail */
+ /* - */
+ ipv6res[0] = '\0';
+ memset(ipv6a, 0, sizeof(ipv6a));
+ ipv6a[0] = 0xfe;
+ ipv6a[1] = 0x80;
+ ipv6a[8] = 0x02;
+ ipv6a[9] = 0x14;
+ ipv6a[10] = 0x4f;
+ ipv6a[11] = 0xff;
+ ipv6a[12] = 0xfe;
+ ipv6a[13] = 0x0b;
+ ipv6a[14] = 0x76;
+ ipv6a[15] = 0xc8;
+ ipv6a[25] = 0x01;
+ /* - */
+ ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res));
+ if(!ipv6ptr)
+ exit(1); /* fail */
+ if(ipv6ptr != ipv6res)
+ exit(1); /* fail */
+ if(!ipv6ptr[0])
+ exit(1); /* fail */
+ if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0)
+ exit(1); /* fail */
+ /* - */
+ exit(0);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ tst_works_inet_ntop="yes"
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ tst_works_inet_ntop="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -39604,7 +39542,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
#
@@ -39767,15 +39707,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
printf %s "checking if inet_pton seems to work... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
-
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+ darwin*)
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -39857,395 +39790,131 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
-
- fi
- #
- if test "$tst_compi_inet_pton" = "yes" &&
- test "$tst_works_inet_pton" != "no"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton usage allowed" >&5
-printf %s "checking if inet_pton usage allowed... " >&6; }
- if test "x$curl_disallow_inet_pton" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_inet_pton="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_inet_pton="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton might be used" >&5
-printf %s "checking if inet_pton might be used... " >&6; }
- if test "$tst_links_inet_pton" = "yes" &&
- test "$tst_proto_inet_pton" = "yes" &&
- test "$tst_compi_inet_pton" = "yes" &&
- test "$tst_allow_inet_pton" = "yes" &&
- test "$tst_works_inet_pton" != "no"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h
-
- curl_cv_func_inet_pton="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_inet_pton="no"
- fi
-
-
-curl_includes_stropts="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-#endif
-#ifdef HAVE_STROPTS_H
-# include <stropts.h>
-#endif
-/* includes end */"
- ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_sys_types_h" = xyes
-then :
- printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_unistd_h" = xyes
-then :
- printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_sys_socket_h" = xyes
-then :
- printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_sys_ioctl_h" = xyes
-then :
- printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_stropts_h" = xyes
-then :
- printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h
-
-fi
-
-
-
- #
- tst_links_ioctl="unknown"
- tst_proto_ioctl="unknown"
- tst_compi_ioctl="unknown"
- tst_allow_ioctl="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl can be linked" >&5
-printf %s "checking if ioctl can be linked... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define ioctl innocuous_ioctl
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef ioctl
-#ifdef __cplusplus
-extern "C"
-#endif
-char ioctl ();
-#if defined __stub_ioctl || defined __stub___ioctl
-choke me
-#endif
-
-int main (void)
-{
-return ioctl ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_links_ioctl="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_links_ioctl="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- #
- if test "$tst_links_ioctl" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl is prototyped" >&5
-printf %s "checking if ioctl is prototyped... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- $curl_includes_stropts
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ioctl" >/dev/null 2>&1
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_proto_ioctl="yes"
-
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_proto_ioctl="no"
-
-fi
-rm -rf conftest*
-
- fi
- #
- if test "$tst_proto_ioctl" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl is compilable" >&5
-printf %s "checking if ioctl is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- $curl_includes_stropts
+ $curl_includes_stdlib
+ $curl_includes_arpa_inet
+ $curl_includes_string
int main (void)
{
- if(0 != ioctl(0, 0, 0))
- return 1;
+ unsigned char ipv6a[16+1];
+ unsigned char ipv4a[4+1];
+ const char *ipv6src = "fe80::214:4fff:fe0b:76c8";
+ const char *ipv4src = "192.168.100.1";
+ /* - */
+ memset(ipv4a, 1, sizeof(ipv4a));
+ if(1 != inet_pton(AF_INET, ipv4src, ipv4a))
+ exit(1); /* fail */
+ /* - */
+ if( (ipv4a[0] != 0xc0) ||
+ (ipv4a[1] != 0xa8) ||
+ (ipv4a[2] != 0x64) ||
+ (ipv4a[3] != 0x01) ||
+ (ipv4a[4] != 0x01) )
+ exit(1); /* fail */
+ /* - */
+ memset(ipv6a, 1, sizeof(ipv6a));
+ if(1 != inet_pton(AF_INET6, ipv6src, ipv6a))
+ exit(1); /* fail */
+ /* - */
+ if( (ipv6a[0] != 0xfe) ||
+ (ipv6a[1] != 0x80) ||
+ (ipv6a[8] != 0x02) ||
+ (ipv6a[9] != 0x14) ||
+ (ipv6a[10] != 0x4f) ||
+ (ipv6a[11] != 0xff) ||
+ (ipv6a[12] != 0xfe) ||
+ (ipv6a[13] != 0x0b) ||
+ (ipv6a[14] != 0x76) ||
+ (ipv6a[15] != 0xc8) ||
+ (ipv6a[16] != 0x01) )
+ exit(1); /* fail */
+ /* - */
+ if( (ipv6a[2] != 0x0) ||
+ (ipv6a[3] != 0x0) ||
+ (ipv6a[4] != 0x0) ||
+ (ipv6a[5] != 0x0) ||
+ (ipv6a[6] != 0x0) ||
+ (ipv6a[7] != 0x0) )
+ exit(1); /* fail */
+ /* - */
+ exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_run "$LINENO"
then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
- tst_compi_ioctl="yes"
+ tst_works_inet_pton="yes"
else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- tst_compi_ioctl="no"
+ tst_works_inet_pton="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- #
- if test "$tst_compi_ioctl" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl usage allowed" >&5
-printf %s "checking if ioctl usage allowed... " >&6; }
- if test "x$curl_disallow_ioctl" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_ioctl="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_ioctl="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl might be used" >&5
-printf %s "checking if ioctl might be used... " >&6; }
- if test "$tst_links_ioctl" = "yes" &&
- test "$tst_proto_ioctl" = "yes" &&
- test "$tst_compi_ioctl" = "yes" &&
- test "$tst_allow_ioctl" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_IOCTL 1" >>confdefs.h
-
- curl_cv_func_ioctl="yes"
-
- #
- tst_compi_ioctl_fionbio="unknown"
- tst_allow_ioctl_fionbio="unknown"
- #
- if test "$curl_cv_func_ioctl" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO is compilable" >&5
-printf %s "checking if ioctl FIONBIO is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_stropts
-
-int main (void)
-{
-
- int flags = 0;
- if(0 != ioctl(0, FIONBIO, &flags))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_compi_ioctl_fionbio="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_compi_ioctl_fionbio="no"
-
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- #
- if test "$tst_compi_ioctl_fionbio" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO usage allowed" >&5
-printf %s "checking if ioctl FIONBIO usage allowed... " >&6; }
- if test "x$curl_disallow_ioctl_fionbio" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_ioctl_fionbio="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_ioctl_fionbio="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO might be used" >&5
-printf %s "checking if ioctl FIONBIO might be used... " >&6; }
- if test "$tst_compi_ioctl_fionbio" = "yes" &&
- test "$tst_allow_ioctl_fionbio" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_IOCTL_FIONBIO 1" >>confdefs.h
-
- curl_cv_func_ioctl_fionbio="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_ioctl_fionbio="no"
- fi
-
-
- #
- tst_compi_ioctl_siocgifaddr="unknown"
- tst_allow_ioctl_siocgifaddr="unknown"
- #
- if test "$curl_cv_func_ioctl" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR is compilable" >&5
-printf %s "checking if ioctl SIOCGIFADDR is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_stropts
- #include <net/if.h>
-
-int main (void)
-{
-
- struct ifreq ifr;
- if(0 != ioctl(0, SIOCGIFADDR, &ifr))
- return 1;
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_compi_ioctl_siocgifaddr="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_compi_ioctl_siocgifaddr="no"
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
#
- if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR usage allowed" >&5
-printf %s "checking if ioctl SIOCGIFADDR usage allowed... " >&6; }
- if test "x$curl_disallow_ioctl_siocgifaddr" != "xyes"; then
+ if test "$tst_compi_inet_pton" = "yes" &&
+ test "$tst_works_inet_pton" != "no"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton usage allowed" >&5
+printf %s "checking if inet_pton usage allowed... " >&6; }
+ if test "x$curl_disallow_inet_pton" != "xyes"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
- tst_allow_ioctl_siocgifaddr="yes"
+ tst_allow_inet_pton="yes"
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- tst_allow_ioctl_siocgifaddr="no"
+ tst_allow_inet_pton="no"
fi
fi
#
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR might be used" >&5
-printf %s "checking if ioctl SIOCGIFADDR might be used... " >&6; }
- if test "$tst_compi_ioctl_siocgifaddr" = "yes" &&
- test "$tst_allow_ioctl_siocgifaddr" = "yes"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton might be used" >&5
+printf %s "checking if inet_pton might be used... " >&6; }
+ if test "$tst_links_inet_pton" = "yes" &&
+ test "$tst_proto_inet_pton" = "yes" &&
+ test "$tst_compi_inet_pton" = "yes" &&
+ test "$tst_allow_inet_pton" = "yes" &&
+ test "$tst_works_inet_pton" != "no"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-printf "%s\n" "#define HAVE_IOCTL_SIOCGIFADDR 1" >>confdefs.h
-
- curl_cv_func_ioctl_siocgifaddr="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_ioctl_siocgifaddr="no"
- fi
+printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h
+ curl_cv_func_inet_pton="yes"
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- curl_cv_func_ioctl="no"
+ curl_cv_func_inet_pton="no"
fi
@@ -40262,7 +39931,6 @@ printf %s "checking if ioctlsocket can be linked... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
int main (void)
{
@@ -40299,7 +39967,6 @@ printf %s "checking if ioctlsocket is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
- $curl_includes_bsdsocket
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -40329,7 +39996,6 @@ printf %s "checking if ioctlsocket is compilable... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
int main (void)
{
@@ -40398,7 +40064,6 @@ printf %s "checking if ioctlsocket FIONBIO is compilable... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
int main (void)
{
@@ -40478,24 +40143,13 @@ printf %s "checking if IoctlSocket can be linked... " >&6; }
/* end confdefs.h. */
-#define IoctlSocket innocuous_IoctlSocket
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef IoctlSocket
-#ifdef __cplusplus
-extern "C"
-#endif
-char IoctlSocket ();
-#if defined __stub_IoctlSocket || defined __stub___IoctlSocket
-choke me
-#endif
+ $curl_includes_bsdsocket
int main (void)
{
-return IoctlSocket ();
+
+ IoctlSocket(0, 0, 0);
+
;
return 0;
}
@@ -40524,7 +40178,7 @@ printf %s "checking if IoctlSocket is prototyped... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- $curl_includes_stropts
+ $curl_includes_bsdsocket
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -40553,7 +40207,7 @@ printf %s "checking if IoctlSocket is compilable... " >&6; }
/* end confdefs.h. */
- $curl_includes_stropts
+ $curl_includes_bsdsocket
int main (void)
{
@@ -40610,7 +40264,7 @@ printf "%s\n" "#define HAVE_IOCTLSOCKET_CAMEL 1" >>confdefs.h
curl_cv_func_ioctlsocket_camel="yes"
- #
+ #
tst_compi_ioctlsocket_camel_fionbio="unknown"
tst_allow_ioctlsocket_camel_fionbio="unknown"
#
@@ -40621,7 +40275,7 @@ printf %s "checking if IoctlSocket FIONBIO is compilable... " >&6; }
/* end confdefs.h. */
- $curl_includes_stropts
+ $curl_includes_bsdsocket
int main (void)
{
@@ -40689,224 +40343,6 @@ printf "%s\n" "no" >&6; }
fi
- #
- tst_links_localtime_r="unknown"
- tst_proto_localtime_r="unknown"
- tst_compi_localtime_r="unknown"
- tst_works_localtime_r="unknown"
- tst_allow_localtime_r="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r can be linked" >&5
-printf %s "checking if localtime_r can be linked... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define localtime_r innocuous_localtime_r
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef localtime_r
-#ifdef __cplusplus
-extern "C"
-#endif
-char localtime_r ();
-#if defined __stub_localtime_r || defined __stub___localtime_r
-choke me
-#endif
-
-int main (void)
-{
-return localtime_r ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_links_localtime_r="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_links_localtime_r="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- #
- if test "$tst_links_localtime_r" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r is prototyped" >&5
-printf %s "checking if localtime_r is prototyped... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- $curl_includes_time
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "localtime_r" >/dev/null 2>&1
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_proto_localtime_r="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_proto_localtime_r="no"
-
-fi
-rm -rf conftest*
-
- fi
- #
- if test "$tst_proto_localtime_r" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r is compilable" >&5
-printf %s "checking if localtime_r is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_time
-
-int main (void)
-{
-
- if(0 != localtime_r(0, 0))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_compi_localtime_r="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_compi_localtime_r="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- #
- if test "x$cross_compiling" != "xyes" &&
- test "$tst_compi_localtime_r" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r seems to work" >&5
-printf %s "checking if localtime_r seems to work... " >&6; }
-
- case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
-
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
-then :
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_stdlib
- $curl_includes_time
-
-int main (void)
-{
-
- time_t clock = 1170352587;
- struct tm *tmp = 0;
- struct tm result;
- tmp = localtime_r(&clock, &result);
- if(tmp)
- exit(0);
- else
- exit(1);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"
-then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_works_localtime_r="yes"
-
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_works_localtime_r="no"
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- eval "$library_path_var=\$old" # restore
-
- fi
- #
- if test "$tst_compi_localtime_r" = "yes" &&
- test "$tst_works_localtime_r" != "no"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r usage allowed" >&5
-printf %s "checking if localtime_r usage allowed... " >&6; }
- if test "x$curl_disallow_localtime_r" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_localtime_r="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_localtime_r="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r might be used" >&5
-printf %s "checking if localtime_r might be used... " >&6; }
- if test "$tst_links_localtime_r" = "yes" &&
- test "$tst_proto_localtime_r" = "yes" &&
- test "$tst_compi_localtime_r" = "yes" &&
- test "$tst_allow_localtime_r" = "yes" &&
- test "$tst_works_localtime_r" != "no"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h
-
- curl_cv_func_localtime_r="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_localtime_r="no"
- fi
-
-
#
tst_links_memrchr="unknown"
tst_macro_memrchr="unknown"
@@ -41218,15 +40654,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
printf %s "checking if poll seems to work... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
-
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+ darwin*)
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -41285,265 +40714,108 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
-
- fi
- #
- if test "$tst_compi_poll" = "yes" &&
- test "$tst_works_poll" != "no"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll usage allowed" >&5
-printf %s "checking if poll usage allowed... " >&6; }
- if test "x$curl_disallow_poll" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_poll="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_poll="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll might be used" >&5
-printf %s "checking if poll might be used... " >&6; }
- if test "$tst_links_poll" = "yes" &&
- test "$tst_proto_poll" = "yes" &&
- test "$tst_compi_poll" = "yes" &&
- test "$tst_allow_poll" = "yes" &&
- test "$tst_works_poll" != "no"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h
-
-
-printf "%s\n" "#define HAVE_POLL_FINE 1" >>confdefs.h
-
- curl_cv_func_poll="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_poll="no"
- fi
-
-
- #
- tst_links_setsockopt="unknown"
- tst_proto_setsockopt="unknown"
- tst_compi_setsockopt="unknown"
- tst_allow_setsockopt="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt can be linked" >&5
-printf %s "checking if setsockopt can be linked... " >&6; }
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- $curl_includes_winsock2
- $curl_includes_bsdsocket
- $curl_includes_sys_socket
+ $curl_includes_stdlib
+ $curl_includes_poll
+ $curl_includes_time
int main (void)
{
- if(0 != setsockopt(0, 0, 0, 0, 0))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_links_setsockopt="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_links_setsockopt="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- #
- if test "$tst_links_setsockopt" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt is prototyped" >&5
-printf %s "checking if setsockopt is prototyped... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- $curl_includes_winsock2
- $curl_includes_bsdsocket
- $curl_includes_sys_socket
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "setsockopt" >/dev/null 2>&1
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_proto_setsockopt="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_proto_setsockopt="no"
-
-fi
-rm -rf conftest*
-
- fi
- #
- if test "$tst_proto_setsockopt" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt is compilable" >&5
-printf %s "checking if setsockopt is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
+ /* detect the original poll() breakage */
+ if(0 != poll(0, 0, 10))
+ exit(1); /* fail */
+ else {
+ /* detect the 10.12 poll() breakage */
+ struct timeval before, after;
+ int rc;
+ size_t us;
- $curl_includes_winsock2
- $curl_includes_bsdsocket
- $curl_includes_sys_socket
+ gettimeofday(&before, NULL);
+ rc = poll(NULL, 0, 500);
+ gettimeofday(&after, NULL);
-int main (void)
-{
+ us = (after.tv_sec - before.tv_sec) * 1000000 +
+ (after.tv_usec - before.tv_usec);
- if(0 != setsockopt(0, 0, 0, 0, 0))
- return 1;
+ if(us < 400000)
+ exit(1);
+ }
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_run "$LINENO"
then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
- tst_compi_setsockopt="yes"
+ tst_works_poll="yes"
else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- tst_compi_setsockopt="no"
+ tst_works_poll="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- #
- if test "$tst_compi_setsockopt" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt usage allowed" >&5
-printf %s "checking if setsockopt usage allowed... " >&6; }
- if test "x$curl_disallow_setsockopt" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_setsockopt="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_setsockopt="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt might be used" >&5
-printf %s "checking if setsockopt might be used... " >&6; }
- if test "$tst_links_setsockopt" = "yes" &&
- test "$tst_proto_setsockopt" = "yes" &&
- test "$tst_compi_setsockopt" = "yes" &&
- test "$tst_allow_setsockopt" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_SETSOCKOPT 1" >>confdefs.h
-
- curl_cv_func_setsockopt="yes"
-
- #
- tst_compi_setsockopt_so_nonblock="unknown"
- tst_allow_setsockopt_so_nonblock="unknown"
- #
- if test "$curl_cv_func_setsockopt" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK is compilable" >&5
-printf %s "checking if setsockopt SO_NONBLOCK is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_winsock2
- $curl_includes_bsdsocket
- $curl_includes_sys_socket
-
-int main (void)
-{
-
- if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_compi_setsockopt_so_nonblock="yes"
-
-else $as_nop
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_compi_setsockopt_so_nonblock="no"
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
#
- if test "$tst_compi_setsockopt_so_nonblock" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK usage allowed" >&5
-printf %s "checking if setsockopt SO_NONBLOCK usage allowed... " >&6; }
- if test "x$curl_disallow_setsockopt_so_nonblock" != "xyes"; then
+ if test "$tst_compi_poll" = "yes" &&
+ test "$tst_works_poll" != "no"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll usage allowed" >&5
+printf %s "checking if poll usage allowed... " >&6; }
+ if test "x$curl_disallow_poll" != "xyes"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
- tst_allow_setsockopt_so_nonblock="yes"
+ tst_allow_poll="yes"
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- tst_allow_setsockopt_so_nonblock="no"
+ tst_allow_poll="no"
fi
fi
#
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK might be used" >&5
-printf %s "checking if setsockopt SO_NONBLOCK might be used... " >&6; }
- if test "$tst_compi_setsockopt_so_nonblock" = "yes" &&
- test "$tst_allow_setsockopt_so_nonblock" = "yes"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll might be used" >&5
+printf %s "checking if poll might be used... " >&6; }
+ if test "$tst_links_poll" = "yes" &&
+ test "$tst_proto_poll" = "yes" &&
+ test "$tst_compi_poll" = "yes" &&
+ test "$tst_allow_poll" = "yes" &&
+ test "$tst_works_poll" != "no"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-printf "%s\n" "#define HAVE_SETSOCKOPT_SO_NONBLOCK 1" >>confdefs.h
-
- curl_cv_func_setsockopt_so_nonblock="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_setsockopt_so_nonblock="no"
- fi
+printf "%s\n" "#define HAVE_POLL_FINE 1" >>confdefs.h
+ curl_cv_func_poll="yes"
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- curl_cv_func_setsockopt="no"
+ curl_cv_func_poll="no"
fi
@@ -42325,7 +41597,7 @@ printf %s "checking if socket is compilable... " >&6; }
$curl_includes_winsock2
- $curl_includes_bsdsocket
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
@@ -43169,15 +42441,63 @@ printf "%s\n" "yes" >&6; }
printf %s "checking if strerror_r seems to work... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ $curl_includes_stdlib
+ $curl_includes_string
+# include <errno.h>
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+int main (void)
+{
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+ char buffer[1024];
+ char *string = 0;
+ buffer[0] = '\0';
+ string = strerror_r(EACCES, buffer, sizeof(buffer));
+ if(!string)
+ exit(1); /* fail */
+ if(!string[0])
+ exit(1); /* fail */
+ else
+ exit(0);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ tst_works_glibc_strerror_r="yes"
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ tst_works_glibc_strerror_r="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -43227,7 +42547,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
#
@@ -43285,15 +42607,63 @@ printf "%s\n" "yes" >&6; }
printf %s "checking if strerror_r seems to work... " >&6; }
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
- esac
+ darwin*)
+ if test "$cross_compiling" = yes
+then :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ $curl_includes_stdlib
+ $curl_includes_string
+# include <errno.h>
+
+int main (void)
+{
+
+ char buffer[1024];
+ int error = 1;
+ buffer[0] = '\0';
+ error = strerror_r(EACCES, buffer, sizeof(buffer));
+ if(error)
+ exit(1); /* fail */
+ if(buffer[0] == '\0')
+ exit(1); /* fail */
+ else
+ exit(0);
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+ ;
+ return 0;
+}
- eval "export $library_path_var"
- if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ tst_works_posix_strerror_r="yes"
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ tst_works_posix_strerror_r="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ if test "$cross_compiling" = yes
then :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -43343,7 +42713,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- eval "$library_path_var=\$old" # restore
+ LD_LIBRARY_PATH=$old # restore
+ ;;
+ esac
fi
#
@@ -43392,9 +42764,6 @@ printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h
printf "%s\n" "#define HAVE_GLIBC_STRERROR_R 1" >>confdefs.h
-
-printf "%s\n" "#define STRERROR_R_TYPE_ARG3 $tst_glibc_strerror_r_type_arg3" >>confdefs.h
-
fi
if test "$tst_posix_strerror_r" = "yes"; then
@@ -43403,9 +42772,6 @@ printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h
printf "%s\n" "#define HAVE_POSIX_STRERROR_R 1" >>confdefs.h
-
-printf "%s\n" "#define STRERROR_R_TYPE_ARG3 $tst_posix_strerror_r_type_arg3" >>confdefs.h
-
fi
curl_cv_func_strerror_r="yes"
else
@@ -43573,456 +42939,6 @@ printf "%s\n" "no" >&6; }
#
- tst_links_strncmpi="unknown"
- tst_proto_strncmpi="unknown"
- tst_compi_strncmpi="unknown"
- tst_allow_strncmpi="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi can be linked" >&5
-printf %s "checking if strncmpi can be linked... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define strncmpi innocuous_strncmpi
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef strncmpi
-#ifdef __cplusplus
-extern "C"
-#endif
-char strncmpi ();
-#if defined __stub_strncmpi || defined __stub___strncmpi
-choke me
-#endif
-
-int main (void)
-{
-return strncmpi ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_links_strncmpi="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_links_strncmpi="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- #
- if test "$tst_links_strncmpi" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi is prototyped" >&5
-printf %s "checking if strncmpi is prototyped... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- $curl_includes_string
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "strncmpi" >/dev/null 2>&1
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_proto_strncmpi="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_proto_strncmpi="no"
-
-fi
-rm -rf conftest*
-
- fi
- #
- if test "$tst_proto_strncmpi" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi is compilable" >&5
-printf %s "checking if strncmpi is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_string
-
-int main (void)
-{
-
- if(0 != strncmpi(0, 0))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_compi_strncmpi="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_compi_strncmpi="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- #
- if test "$tst_compi_strncmpi" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi usage allowed" >&5
-printf %s "checking if strncmpi usage allowed... " >&6; }
- if test "x$curl_disallow_strncmpi" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_strncmpi="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_strncmpi="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi might be used" >&5
-printf %s "checking if strncmpi might be used... " >&6; }
- if test "$tst_links_strncmpi" = "yes" &&
- test "$tst_proto_strncmpi" = "yes" &&
- test "$tst_compi_strncmpi" = "yes" &&
- test "$tst_allow_strncmpi" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_STRNCMPI 1" >>confdefs.h
-
- curl_cv_func_strncmpi="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_strncmpi="no"
- fi
-
-
- #
- tst_links_strnicmp="unknown"
- tst_proto_strnicmp="unknown"
- tst_compi_strnicmp="unknown"
- tst_allow_strnicmp="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp can be linked" >&5
-printf %s "checking if strnicmp can be linked... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define strnicmp innocuous_strnicmp
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef strnicmp
-#ifdef __cplusplus
-extern "C"
-#endif
-char strnicmp ();
-#if defined __stub_strnicmp || defined __stub___strnicmp
-choke me
-#endif
-
-int main (void)
-{
-return strnicmp ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_links_strnicmp="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_links_strnicmp="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- #
- if test "$tst_links_strnicmp" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp is prototyped" >&5
-printf %s "checking if strnicmp is prototyped... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- $curl_includes_string
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "strnicmp" >/dev/null 2>&1
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_proto_strnicmp="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_proto_strnicmp="no"
-
-fi
-rm -rf conftest*
-
- fi
- #
- if test "$tst_proto_strnicmp" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp is compilable" >&5
-printf %s "checking if strnicmp is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_string
-
-int main (void)
-{
-
- if(0 != strnicmp(0, 0))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_compi_strnicmp="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_compi_strnicmp="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- #
- if test "$tst_compi_strnicmp" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp usage allowed" >&5
-printf %s "checking if strnicmp usage allowed... " >&6; }
- if test "x$curl_disallow_strnicmp" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_strnicmp="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_strnicmp="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp might be used" >&5
-printf %s "checking if strnicmp might be used... " >&6; }
- if test "$tst_links_strnicmp" = "yes" &&
- test "$tst_proto_strnicmp" = "yes" &&
- test "$tst_compi_strnicmp" = "yes" &&
- test "$tst_allow_strnicmp" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_STRNICMP 1" >>confdefs.h
-
- curl_cv_func_strnicmp="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_strnicmp="no"
- fi
-
-
- #
- tst_links_strstr="unknown"
- tst_proto_strstr="unknown"
- tst_compi_strstr="unknown"
- tst_allow_strstr="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr can be linked" >&5
-printf %s "checking if strstr can be linked... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define strstr innocuous_strstr
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef strstr
-#ifdef __cplusplus
-extern "C"
-#endif
-char strstr ();
-#if defined __stub_strstr || defined __stub___strstr
-choke me
-#endif
-
-int main (void)
-{
-return strstr ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_links_strstr="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_links_strstr="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- #
- if test "$tst_links_strstr" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr is prototyped" >&5
-printf %s "checking if strstr is prototyped... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- $curl_includes_string
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "strstr" >/dev/null 2>&1
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_proto_strstr="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_proto_strstr="no"
-
-fi
-rm -rf conftest*
-
- fi
- #
- if test "$tst_proto_strstr" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr is compilable" >&5
-printf %s "checking if strstr is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_string
-
-int main (void)
-{
-
- if(0 != strstr(0, 0))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_compi_strstr="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_compi_strstr="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- #
- if test "$tst_compi_strstr" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr usage allowed" >&5
-printf %s "checking if strstr usage allowed... " >&6; }
- if test "x$curl_disallow_strstr" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_strstr="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_strstr="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr might be used" >&5
-printf %s "checking if strstr might be used... " >&6; }
- if test "$tst_links_strstr" = "yes" &&
- test "$tst_proto_strstr" = "yes" &&
- test "$tst_compi_strstr" = "yes" &&
- test "$tst_allow_strstr" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h
-
- curl_cv_func_strstr="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_strstr="no"
- fi
-
-
- #
tst_links_strtok_r="unknown"
tst_proto_strtok_r="unknown"
tst_compi_strtok_r="unknown"
@@ -44322,182 +43238,6 @@ printf "%s\n" "no" >&6; }
fi
-curl_includes_sys_uio="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif
-/* includes end */"
- ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_sys_uio
-"
-if test "x$ac_cv_header_sys_types_h" = xyes
-then :
- printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$curl_includes_sys_uio
-"
-if test "x$ac_cv_header_sys_uio_h" = xyes
-then :
- printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h
-
-fi
-
-
-
- #
- tst_links_writev="unknown"
- tst_proto_writev="unknown"
- tst_compi_writev="unknown"
- tst_allow_writev="unknown"
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev can be linked" >&5
-printf %s "checking if writev can be linked... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define writev innocuous_writev
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef writev
-#ifdef __cplusplus
-extern "C"
-#endif
-char writev ();
-#if defined __stub_writev || defined __stub___writev
-choke me
-#endif
-
-int main (void)
-{
-return writev ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_links_writev="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_links_writev="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- #
- if test "$tst_links_writev" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev is prototyped" >&5
-printf %s "checking if writev is prototyped... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- $curl_includes_sys_uio
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "writev" >/dev/null 2>&1
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_proto_writev="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_proto_writev="no"
-
-fi
-rm -rf conftest*
-
- fi
- #
- if test "$tst_proto_writev" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev is compilable" >&5
-printf %s "checking if writev is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_sys_uio
-
-int main (void)
-{
-
- if(0 != writev(0, 0, 0))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_compi_writev="yes"
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_compi_writev="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
- #
- if test "$tst_compi_writev" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev usage allowed" >&5
-printf %s "checking if writev usage allowed... " >&6; }
- if test "x$curl_disallow_writev" != "xyes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
- tst_allow_writev="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- tst_allow_writev="no"
- fi
- fi
- #
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev might be used" >&5
-printf %s "checking if writev might be used... " >&6; }
- if test "$tst_links_writev" = "yes" &&
- test "$tst_proto_writev" = "yes" &&
- test "$tst_compi_writev" = "yes" &&
- test "$tst_allow_writev" = "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_WRITEV 1" >>confdefs.h
-
- curl_cv_func_writev="yes"
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- curl_cv_func_writev="no"
- fi
-
-
case $host in
*msdosdjgpp)
ac_cv_func_pipe=no
@@ -44607,7 +43347,7 @@ fi
- for ac_func in fnmatch geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe setlocale setmode setrlimit usleep utime utimes
+ for ac_func in fnmatch fchmod geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe sched_yield sendmsg setlocale setmode setrlimit snprintf utime utimes
do :
as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -44667,7 +43407,7 @@ fi
done
- #
+ #
tst_method="unknown"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to set a socket into non-blocking mode" >&5
@@ -44844,16 +43584,12 @@ fi
-
-
#
if test "$want_ares" = "yes"; then
clean_CPPFLAGS="$CPPFLAGS"
clean_LDFLAGS="$LDFLAGS"
clean_LIBS="$LIBS"
- embedded_ares="unknown"
configure_runpath=`pwd`
- embedded_ares_builddir="$configure_runpath/ares"
if test -n "$want_ares_path"; then
ARES_PCDIR="$want_ares_path/lib/pkgconfig"
@@ -45026,14 +43762,6 @@ printf "%s\n" "$as_me: pkg-config: ares CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;}
ares_LIBS="-lcares"
fi
else
- if test -d "$srcdir/ares"; then
- embedded_ares="yes"
- subdirs="$subdirs ares"
-
- ares_CPPFLAGS=""
- ares_LDFLAGS="-L$embedded_ares_builddir"
- ares_LIBS="-lcares"
- else
if test -n "$PKG_CONFIG"; then
PKGCONFIG="$PKG_CONFIG"
@@ -45170,21 +43898,20 @@ printf "%s\n" "found" >&6; }
fi
fi
- if test "$PKGCONFIG" != "no" ; then
- ares_LIBS=`$PKGCONFIG --libs-only-l libcares`
- ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares`
- ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares`
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&5
+ if test "$PKGCONFIG" != "no" ; then
+ ares_LIBS=`$PKGCONFIG --libs-only-l libcares`
+ ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares`
+ ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&5
printf "%s\n" "$as_me: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&6;}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&5
printf "%s\n" "$as_me: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&6;}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&5
printf "%s\n" "$as_me: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;}
- else
- ares_CPPFLAGS=""
- ares_LDFLAGS=""
- ares_LIBS="-lcares"
- fi
+ else
+ ares_CPPFLAGS=""
+ ares_LDFLAGS=""
+ ares_LIBS="-lcares"
fi
fi
#
@@ -45192,28 +43919,28 @@ printf "%s\n" "$as_me: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;}
LDFLAGS="$clean_LDFLAGS $ares_LDFLAGS"
LIBS="$ares_LIBS $clean_LIBS"
#
- if test "$embedded_ares" != "yes"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that c-ares is good and recent enough" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that c-ares is good and recent enough" >&5
printf %s "checking that c-ares is good and recent enough... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ares.h>
- /* set of dummy functions in case c-ares was built with debug */
- void curl_dofree() { }
- void curl_sclose() { }
- void curl_domalloc() { }
- void curl_docalloc() { }
- void curl_socket() { }
+ /* set of dummy functions in case c-ares was built with debug */
+ void curl_dofree() { }
+ void curl_sclose() { }
+ void curl_domalloc() { }
+ void curl_docalloc() { }
+ void curl_socket() { }
int main (void)
{
- ares_channel channel;
- ares_cancel(channel); /* added in 1.2.0 */
- ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
- ares_dup(&channel, channel); /* added in 1.6.0 */
+ ares_channel channel;
+ ares_cancel(channel); /* added in 1.2.0 */
+ ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
+ ares_dup(&channel, channel); /* added in 1.6.0 */
;
return 0;
@@ -45223,24 +43950,24 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- as_fn_error $? "c-ares library defective or too old" "$LINENO" 5
- CPPFLAGS="$clean_CPPFLAGS"
- LDFLAGS="$clean_LDFLAGS"
- LIBS="$clean_LIBS"
- # prevent usage
- want_ares="no"
+ as_fn_error $? "c-ares library defective or too old" "$LINENO" 5
+ CPPFLAGS="$clean_CPPFLAGS"
+ LDFLAGS="$clean_LDFLAGS"
+ LIBS="$clean_LIBS"
+ # prevent usage
+ want_ares="no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- fi
+
if test "$want_ares" = "yes"; then
printf "%s\n" "#define USE_ARES 1" >>confdefs.h
@@ -45251,14 +43978,6 @@ printf "%s\n" "#define USE_ARES 1" >>confdefs.h
fi
fi
- if test x$embedded_ares = xyes; then
- USE_EMBEDDED_ARES_TRUE=
- USE_EMBEDDED_ARES_FALSE='#'
-else
- USE_EMBEDDED_ARES_TRUE='#'
- USE_EMBEDDED_ARES_FALSE=
-fi
-
if test "x$curl_cv_native_windows" != "xyes" &&
test "x$enable_shared" = "xyes"; then
@@ -45370,9 +44089,25 @@ fi
if test "$USE_THREADS_POSIX" != "1"
then
- CFLAGS="$CFLAGS -pthread"
# assign PTHREAD for pkg-config use
PTHREAD=" -pthread"
+
+ case $host in
+ *-ibm-aix*)
+ COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
+ if test x"$COMPILER_VERSION" = "x"; then
+ CFLAGS="$CFLAGS -pthread"
+ else
+ CFLAGS="$CFLAGS -qthreaded"
+ fi
+ ;;
+ powerpc-*amigaos*)
+ PTHREAD=" -lpthread"
+ ;;
+ *)
+ CFLAGS="$CFLAGS -pthread"
+ ;;
+ esac
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
printf %s "checking for pthread_create in -lpthread... " >&6; }
if test ${ac_cv_lib_pthread_pthread_create+y}
@@ -45712,8 +44447,15 @@ printf "%s\n" "auto" >&6; }
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$curl_cv_native_windows" = "xyes"; then
+ USE_UNIX_SOCKETS=1
+
+printf "%s\n" "#define USE_UNIX_SOCKETS 1" >>confdefs.h
+
+ curl_unix_sockets_msg="enabled"
+ else
+ 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
@@ -45722,18 +44464,19 @@ then :
printf "%s\n" "#define USE_UNIX_SOCKETS 1" >>confdefs.h
- USE_UNIX_SOCKETS=1
+ USE_UNIX_SOCKETS=1
- curl_unix_sockets_msg="enabled"
+ curl_unix_sockets_msg="enabled"
else $as_nop
- if test "x$want_unix_sockets" = "xyes"; then
- as_fn_error $? "--enable-unix-sockets is not available on this platform!" "$LINENO" 5
- fi
+ 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
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support cookies" >&5
@@ -45996,8 +44739,33 @@ printf "%s\n" "yes" >&6; }
;;
esac
else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support headers-api" >&5
+printf %s "checking whether to support headers-api... " >&6; }
+# Check whether --enable-headers-api was given.
+if test ${enable_headers_api+y}
+then :
+ enableval=$enable_headers_api; case "$enableval" in
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
+ curl_headers_msg="no (--enable-headers-api)"
+
+printf "%s\n" "#define CURL_DISABLE_HEADERS_API 1" >>confdefs.h
+
+ ;;
+ *)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ ;;
+ esac
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
@@ -46073,13 +44841,51 @@ printf "%s\n" "$ECH_SUPPORT" >&6; }
fi
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support WebSockets" >&5
+printf %s "checking whether to support WebSockets... " >&6; }
+# Check whether --enable-websockets was given.
+if test ${enable_websockets+y}
+then :
+ enableval=$enable_websockets; case "$enableval" in
+ no)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ ;;
+ *)
+ if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ curl_ws_msg="enabled"
+
+printf "%s\n" "#define USE_WEBSOCKETS 1" >>confdefs.h
+
+ SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WS"
+ if test "x$SSL_ENABLED" = "x1"; then
+ SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WSS"
+ fi
+ experimental="$experimental Websockets"
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Websockets disabled due to lack of >32 bit curl_off_t" >&5
+printf "%s\n" "$as_me: WARNING: Websockets disabled due to lack of >32 bit curl_off_t" >&2;}
+ fi
+ ;;
+ esac
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+fi
+
+
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether hiding of library internal symbols will actually happen" >&5
printf %s "checking whether hiding of library internal symbols will actually happen... " >&6; }
CFLAG_CURL_SYMBOL_HIDING=""
doing_symbol_hiding="no"
- if test x"$curl_cv_native_windows" != "xyes" &&
- test "$want_symbol_hiding" = "yes" &&
+ if test "$want_symbol_hiding" = "yes" &&
test "$supports_symbol_hiding" = "yes"; then
doing_symbol_hiding="yes"
CFLAG_CURL_SYMBOL_HIDING="$symbol_hiding_CFLAGS"
@@ -46226,7 +45032,8 @@ if test "x$USE_NGHTTP2" = "x1" -o "x$USE_HYPER" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
fi
-if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1"; then
+if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1" \
+ -o "x$USE_MSH3" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3"
fi
@@ -46252,6 +45059,36 @@ if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
fi
fi
+if test "$tst_atomic" = "yes"; then
+ SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ #include <windows.h>
+
+int main (void)
+{
+
+ #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600)
+ #error
+ #endif
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+ SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '`
@@ -46534,7 +45371,7 @@ if test "x$want_curldebug_assumed" = "xyes" &&
ac_configure_args="$ac_configure_args --enable-curldebug"
fi
-ac_config_files="$ac_config_files Makefile docs/Makefile docs/examples/Makefile docs/libcurl/Makefile docs/libcurl/opts/Makefile docs/cmdline-opts/Makefile include/Makefile include/curl/Makefile src/Makefile lib/Makefile scripts/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/vms/Makefile curl-config libcurl.pc"
+ac_config_files="$ac_config_files Makefile docs/Makefile docs/examples/Makefile docs/libcurl/Makefile docs/libcurl/opts/Makefile docs/cmdline-opts/Makefile include/Makefile include/curl/Makefile src/Makefile lib/Makefile scripts/Makefile lib/libcurl.vers lib/libcurl.plist tests/Makefile tests/certs/Makefile tests/certs/scripts/Makefile tests/data/Makefile tests/server/Makefile tests/libtest/Makefile tests/unit/Makefile packages/Makefile packages/vms/Makefile curl-config libcurl.pc"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -46705,6 +45542,10 @@ if test -z "${DOING_NATIVE_WINDOWS_TRUE}" && test -z "${DOING_NATIVE_WINDOWS_FAL
as_fn_error $? "conditional \"DOING_NATIVE_WINDOWS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${OS_WINDOWS_TRUE}" && test -z "${OS_WINDOWS_FALSE}"; then
+ as_fn_error $? "conditional \"OS_WINDOWS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then
as_fn_error $? "conditional \"HAVE_LIBZ\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -46729,10 +45570,6 @@ if test -z "${USE_MANUAL_TRUE}" && test -z "${USE_MANUAL_FALSE}"; then
as_fn_error $? "conditional \"USE_MANUAL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${USE_EMBEDDED_ARES_TRUE}" && test -z "${USE_EMBEDDED_ARES_FALSE}"; then
- as_fn_error $? "conditional \"USE_EMBEDDED_ARES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${BUILD_LIBHOSTNAME_TRUE}" && test -z "${BUILD_LIBHOSTNAME_FALSE}"; then
as_fn_error $? "conditional \"BUILD_LIBHOSTNAME\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -47361,12 +46198,14 @@ lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_q
lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`'
deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`'
AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
@@ -47460,6 +46299,48 @@ enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_sub
enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+LD_RC='`$ECHO "$LD_RC" | $SED "$delay_single_quote_subst"`'
+reload_flag_RC='`$ECHO "$reload_flag_RC" | $SED "$delay_single_quote_subst"`'
+reload_cmds_RC='`$ECHO "$reload_cmds_RC" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_RC='`$ECHO "$old_archive_cmds_RC" | $SED "$delay_single_quote_subst"`'
+compiler_RC='`$ECHO "$compiler_RC" | $SED "$delay_single_quote_subst"`'
+GCC_RC='`$ECHO "$GCC_RC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_RC='`$ECHO "$lt_prog_compiler_no_builtin_flag_RC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_RC='`$ECHO "$lt_prog_compiler_pic_RC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_RC='`$ECHO "$lt_prog_compiler_wl_RC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_RC='`$ECHO "$lt_prog_compiler_static_RC" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_RC='`$ECHO "$lt_cv_prog_compiler_c_o_RC" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_RC='`$ECHO "$archive_cmds_need_lc_RC" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_RC='`$ECHO "$enable_shared_with_static_runtimes_RC" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_RC='`$ECHO "$export_dynamic_flag_spec_RC" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_RC='`$ECHO "$whole_archive_flag_spec_RC" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_RC='`$ECHO "$compiler_needs_object_RC" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_RC='`$ECHO "$old_archive_from_new_cmds_RC" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_RC='`$ECHO "$old_archive_from_expsyms_cmds_RC" | $SED "$delay_single_quote_subst"`'
+archive_cmds_RC='`$ECHO "$archive_cmds_RC" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_RC='`$ECHO "$archive_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`'
+module_cmds_RC='`$ECHO "$module_cmds_RC" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_RC='`$ECHO "$module_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_RC='`$ECHO "$with_gnu_ld_RC" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_RC='`$ECHO "$allow_undefined_flag_RC" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_RC='`$ECHO "$no_undefined_flag_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_RC='`$ECHO "$hardcode_libdir_flag_spec_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_RC='`$ECHO "$hardcode_libdir_separator_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_RC='`$ECHO "$hardcode_direct_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_RC='`$ECHO "$hardcode_direct_absolute_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_RC='`$ECHO "$hardcode_minus_L_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_RC='`$ECHO "$hardcode_shlibpath_var_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_RC='`$ECHO "$hardcode_automatic_RC" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_RC='`$ECHO "$inherit_rpath_RC" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_RC='`$ECHO "$link_all_deplibs_RC" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_RC='`$ECHO "$always_export_symbols_RC" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_RC='`$ECHO "$export_symbols_cmds_RC" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_RC='`$ECHO "$exclude_expsyms_RC" | $SED "$delay_single_quote_subst"`'
+include_expsyms_RC='`$ECHO "$include_expsyms_RC" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_RC='`$ECHO "$prelink_cmds_RC" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_RC='`$ECHO "$postlink_cmds_RC" | $SED "$delay_single_quote_subst"`'
+file_list_spec_RC='`$ECHO "$file_list_spec_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_action_RC='`$ECHO "$hardcode_action_RC" | $SED "$delay_single_quote_subst"`'
LTCC='$LTCC'
LTCFLAGS='$LTCFLAGS'
@@ -47490,13 +46371,13 @@ LN_S \
lt_SP2NL \
lt_NL2SP \
reload_flag \
+FILECMD \
deplibs_check_method \
file_magic_cmd \
file_magic_glob \
want_nocaseglob \
sharedlib_from_linklib_cmd \
AR \
-AR_FLAGS \
archiver_list_spec \
STRIP \
RANLIB \
@@ -47542,7 +46423,26 @@ soname_spec \
install_override_mode \
finish_eval \
old_striplib \
-striplib; do
+striplib \
+LD_RC \
+reload_flag_RC \
+compiler_RC \
+lt_prog_compiler_no_builtin_flag_RC \
+lt_prog_compiler_pic_RC \
+lt_prog_compiler_wl_RC \
+lt_prog_compiler_static_RC \
+lt_cv_prog_compiler_c_o_RC \
+export_dynamic_flag_spec_RC \
+whole_archive_flag_spec_RC \
+compiler_needs_object_RC \
+with_gnu_ld_RC \
+allow_undefined_flag_RC \
+no_undefined_flag_RC \
+hardcode_libdir_flag_spec_RC \
+hardcode_libdir_separator_RC \
+exclude_expsyms_RC \
+include_expsyms_RC \
+file_list_spec_RC; do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[\\\\\\\`\\"\\\$]*)
eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
@@ -47573,7 +46473,18 @@ postuninstall_cmds \
finish_cmds \
sys_lib_search_path_spec \
configure_time_dlsearch_path \
-configure_time_lt_sys_library_path; do
+configure_time_lt_sys_library_path \
+reload_cmds_RC \
+old_archive_cmds_RC \
+old_archive_from_new_cmds_RC \
+old_archive_from_expsyms_cmds_RC \
+archive_cmds_RC \
+archive_expsym_cmds_RC \
+module_cmds_RC \
+module_expsym_cmds_RC \
+export_symbols_cmds_RC \
+prelink_cmds_RC \
+postlink_cmds_RC; do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[\\\\\\\`\\"\\\$]*)
eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
@@ -47601,6 +46512,8 @@ fi
+
+
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -47624,6 +46537,7 @@ do
"lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
"scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
"lib/libcurl.vers") CONFIG_FILES="$CONFIG_FILES lib/libcurl.vers" ;;
+ "lib/libcurl.plist") CONFIG_FILES="$CONFIG_FILES lib/libcurl.plist" ;;
"tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
"tests/certs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/certs/Makefile" ;;
"tests/certs/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES tests/certs/scripts/Makefile" ;;
@@ -48370,7 +47284,7 @@ See \`config.log' for more details" "$LINENO" 5; }
# The names of the tagged configurations supported by this script.
-available_tags=''
+available_tags='RC '
# Configured defaults for sys_lib_dlsearch_path munging.
: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
@@ -48469,6 +47383,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
# convert \$build files to toolchain format.
to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+# A file(cmd) program that detects file types.
+FILECMD=$lt_FILECMD
+
# Method to check whether dependent libraries are shared objects.
deplibs_check_method=$lt_deplibs_check_method
@@ -48487,8 +47404,11 @@ sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
# The archiver.
AR=$lt_AR
+# Flags to create an archive (by configure).
+lt_ar_flags=$lt_ar_flags
+
# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
+AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"}
# How to feed a file listing to the archiver.
archiver_list_spec=$lt_archiver_list_spec
@@ -48864,13 +47784,152 @@ ltmain=$ac_aux_dir/ltmain.sh
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
- sed '$q' "$ltmain" >> "$cfgfile" \
+ $SED '$q' "$ltmain" >> "$cfgfile" \
|| (rm -f "$cfgfile"; exit 1)
mv -f "$cfgfile" "$ofile" ||
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
+
+ cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: RC
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_RC
+reload_cmds=$lt_reload_cmds_RC
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_RC
+
+# A language specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_RC
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_RC
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_RC
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_RC
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_RC
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_RC
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_RC
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# ### END LIBTOOL TAG CONFIG: RC
+_LT_EOF
+
;;
esac
@@ -48905,149 +47964,6 @@ if test "$no_create" != yes; then
# would make configure fail if this is the last instruction.
$ac_cs_success || as_fn_exit 1
fi
-
-#
-# CONFIG_SUBDIRS section.
-#
-if test "$no_recursion" != yes; then
-
- # Remove --cache-file, --srcdir, and --disable-option-checking arguments
- # so they do not pile up.
- ac_sub_configure_args=
- ac_prev=
- eval "set x $ac_configure_args"
- shift
- for ac_arg
- do
- if test -n "$ac_prev"; then
- ac_prev=
- continue
- fi
- case $ac_arg in
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
- | --c=*)
- ;;
- --config-cache | -C)
- ;;
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- ;;
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- ;;
- --disable-option-checking)
- ;;
- *)
- case $ac_arg in
- *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
- esac
- done
-
- # Always prepend --prefix to ensure using the same prefix
- # in subdir configurations.
- ac_arg="--prefix=$prefix"
- case $ac_arg in
- *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
-
- # Pass --silent
- if test "$silent" = yes; then
- ac_sub_configure_args="--silent $ac_sub_configure_args"
- fi
-
- # Always prepend --disable-option-checking to silence warnings, since
- # different subdirs can have different --enable and --with options.
- ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
-
- ac_popdir=`pwd`
- for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
-
- # Do not complain, so a configure script can configure whichever
- # parts of a large source tree are present.
- test -d "$srcdir/$ac_dir" || continue
-
- ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
- printf "%s\n" "$ac_msg" >&6
- as_dir="$ac_dir"; as_fn_mkdir_p
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- cd "$ac_dir"
-
- # Check for configure.gnu first; this name is used for a wrapper for
- # Metaconfig's "Configure" on case-insensitive file systems.
- if test -f "$ac_srcdir/configure.gnu"; then
- ac_sub_configure=$ac_srcdir/configure.gnu
- elif test -f "$ac_srcdir/configure"; then
- ac_sub_configure=$ac_srcdir/configure
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
-printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
- ac_sub_configure=
- fi
-
- # The recursion is here.
- if test -n "$ac_sub_configure"; then
- # Make the cache file name correct relative to the subdirectory.
- case $cache_file in
- [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
- *) # Relative name.
- ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
- esac
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-printf "%s\n" "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
- # The eval makes quoting arguments work.
- eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
- --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
- as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
- fi
-
- cd "$ac_popdir"
- done
-fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
@@ -49229,11 +48145,13 @@ done
RTMP: ${curl_rtmp_msg}
PSL: ${curl_psl_msg}
Alt-svc: ${curl_altsvc_msg}
+ Headers API: ${curl_headers_msg}
HSTS: ${curl_hsts_msg}
HTTP1: ${curl_h1_msg}
HTTP2: ${curl_h2_msg}
HTTP3: ${curl_h3_msg}
ECH: ${curl_ech_msg}
+ WebSockets: ${curl_ws_msg}
Protocols: ${SUPPORT_PROTOCOLS}
Features: ${SUPPORT_FEATURES}
" >&5
@@ -49275,11 +48193,13 @@ printf "%s\n" "$as_me: Configured to build curl/libcurl:
RTMP: ${curl_rtmp_msg}
PSL: ${curl_psl_msg}
Alt-svc: ${curl_altsvc_msg}
+ Headers API: ${curl_headers_msg}
HSTS: ${curl_hsts_msg}
HTTP1: ${curl_h1_msg}
HTTP2: ${curl_h2_msg}
HTTP3: ${curl_h3_msg}
ECH: ${curl_ech_msg}
+ WebSockets: ${curl_ws_msg}
Protocols: ${SUPPORT_PROTOCOLS}
Features: ${SUPPORT_FEATURES}
" >&6;}
diff --git a/configure.ac b/configure.ac
index 63e320236..445b3f904 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
dnl Process this file with autoconf to produce a configure script.
@@ -31,7 +33,7 @@ XC_OVR_ZZ60
CURL_OVERRIDE_AUTOCONF
dnl configure script copyright
-AC_COPYRIGHT([Copyright (c) 1998 - 2021 Daniel Stenberg, <daniel@haxx.se>
+AC_COPYRIGHT([Copyright (c) 1998 - 2022 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])
@@ -83,21 +85,22 @@ if test -z "$GREP"; then
fi
AC_SUBST([GREP])
-dnl EGREP is mandatory for configure process and libtool.
+dnl 'grep -E' is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later.
if test -z "$EGREP"; then
dnl allow it to be overridden
+ AC_MSG_CHECKING([that grep -E works])
if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
- AC_MSG_CHECKING([for egrep])
EGREP="$GREP -E"
- AC_MSG_RESULT([$EGREP])
+ AC_MSG_RESULT([yes])
else
+ AC_MSG_RESULT([no])
AC_PATH_PROG([EGREP], [egrep], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
fi
fi
if test -z "$EGREP" || test "$EGREP" = "not_found"; then
- AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
+ AC_MSG_ERROR([grep -E is not working and egrep is not found in PATH. Cannot continue.])
fi
AC_SUBST([EGREP])
@@ -118,6 +121,7 @@ AC_SUBST(libext)
dnl figure out the libcurl version
CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h`
XC_CHECK_PROG_CC
+CURL_ATOMIC
dnl for --enable-code-coverage
CURL_COVERAGE
@@ -143,7 +147,7 @@ AC_SUBST(PKGADD_VENDOR)
dnl
dnl initialize all the info variables
- curl_ssl_msg="no (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl,rustls} )"
+ curl_ssl_msg="no (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,amissl,bearssl,rustls} )"
curl_ssh_msg="no (--with-{libssh,libssh2})"
curl_zlib_msg="no (--with-zlib)"
curl_brotli_msg="no (--with-brotli)"
@@ -165,11 +169,13 @@ curl_verbose_msg="enabled (--disable-verbose)"
curl_rtmp_msg="no (--with-librtmp)"
curl_psl_msg="no (--with-libpsl)"
curl_altsvc_msg="enabled (--disable-alt-svc)"
+curl_headers_msg="enabled (--disable-headers-api)"
curl_hsts_msg="enabled (--disable-hsts)"
+ curl_ws_msg="no (--enable-websockets)"
ssl_backends=
curl_h1_msg="enabled (internal)"
curl_h2_msg="no (--with-nghttp2, --with-hyper)"
- curl_h3_msg="no (--with-ngtcp2, --with-quiche)"
+ curl_h3_msg="no (--with-ngtcp2, --with-quiche --with-msh3)"
enable_altsvc="yes"
hsts="yes"
@@ -192,91 +198,108 @@ AS_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS]),
OPT_SECURETRANSPORT=no
AC_ARG_WITH(secure-transport,dnl
-AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]),
+AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]),[
OPT_SECURETRANSPORT=$withval
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"
-)
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"
+])
OPT_AMISSL=no
AC_ARG_WITH(amissl,dnl
-AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),
+AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),[
OPT_AMISSL=$withval
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL")
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL"
+])
OPT_OPENSSL=no
dnl Default to no CA bundle
ca="no"
AC_ARG_WITH(ssl,dnl
AS_HELP_STRING([--with-ssl=PATH],[old version of --with-openssl])
-AS_HELP_STRING([--without-ssl], [build without any TLS library]),
+AS_HELP_STRING([--without-ssl], [build without any TLS library]),[
OPT_SSL=$withval
OPT_OPENSSL=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL")
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
+ else
+ SSL_DISABLED="D"
fi
+])
AC_ARG_WITH(openssl,dnl
-AS_HELP_STRING([--with-openssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]),
+AS_HELP_STRING([--with-openssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]),[
OPT_OPENSSL=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL")
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
fi
+])
OPT_GNUTLS=no
AC_ARG_WITH(gnutls,dnl
-AS_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]),
+AS_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]),[
OPT_GNUTLS=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS")
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS"
fi
+])
OPT_MBEDTLS=no
AC_ARG_WITH(mbedtls,dnl
-AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),
+AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),[
OPT_MBEDTLS=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS")
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS"
fi
+])
OPT_WOLFSSL=no
AC_ARG_WITH(wolfssl,dnl
-AS_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)]),
+AS_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)]),[
OPT_WOLFSSL=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL")
- fi
-
-OPT_MESALINK=no
-AC_ARG_WITH(mesalink,dnl
-AS_HELP_STRING([--with-mesalink=PATH],[where to look for MesaLink, PATH points to the installation root]),
- OPT_MESALINK=$withval
- if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }MesaLink")
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL"
fi
+])
OPT_BEARSSL=no
AC_ARG_WITH(bearssl,dnl
-AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root]),
+AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root]),[
OPT_BEARSSL=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL")
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL"
fi
+])
OPT_RUSTLS=no
AC_ARG_WITH(rustls,dnl
-AS_HELP_STRING([--with-rustls=PATH],[where to look for rustls, PATH points to the installation root]),
+AS_HELP_STRING([--with-rustls=PATH],[where to look for rustls, PATH points to the installation root]),[
OPT_RUSTLS=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls")
+ TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls"
+ experimental="$experimental rustls"
fi
+])
+
+OPT_NSS_AWARE=no
+AC_ARG_WITH(nss-deprecated,dnl
+AS_HELP_STRING([--with-nss-deprecated],[confirm you realize NSS is going away]),
+ if test X"$withval" != Xno; then
+ OPT_NSS_AWARE=$withval
+ fi
+)
OPT_NSS=no
AC_ARG_WITH(nss,dnl
AS_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root]),
OPT_NSS=$withval
if test X"$withval" != Xno; then
- test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS")
+
+ if test X"$OPT_NSS_AWARE" = "Xno" ; then
+ AC_MSG_ERROR([NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md])
+ fi
+
+ [TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS"]
fi
+)
dnl If no TLS choice has been made, check if it was explicitly disabled or
dnl error out to force the user to decide.
@@ -290,7 +313,6 @@ Select from these:
--with-bearssl
--with-gnutls
--with-mbedtls
- --with-mesalink
--with-nss
--with-openssl (also works for BoringSSL and libressl)
--with-rustls
@@ -327,6 +349,8 @@ AC_SYS_LARGEFILE
XC_LIBTOOL
+LT_LANG([Windows Resource])
+
#
# Automake conditionals based on libtool related checks
#
@@ -490,6 +514,28 @@ case $host in
;;
esac
+# Detect original MinGW (not MinGW-w64)
+curl_mingw_original=no
+case $host in
+ *-*-mingw32*)
+ AC_MSG_CHECKING([using original MinGW (not MinGW-w64)])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#include <_mingw.h>
+ ]],[[
+#if defined(__MINGW64_VERSION_MAJOR)
+#error
+#endif
+ ]])
+ ],[
+ curl_mingw_original=yes
+ AC_MSG_RESULT([yes])
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+ ;;
+esac
+
dnl **********************************************************************
dnl Compilation based checks should not be done before this point.
dnl **********************************************************************
@@ -509,14 +555,12 @@ case X-"$curl_cv_native_windows" in
CURL_CHECK_HEADER_WS2TCPIP
CURL_CHECK_HEADER_WINCRYPT
CURL_CHECK_HEADER_WINLDAP
- CURL_CHECK_HEADER_WINBER
;;
*)
curl_cv_header_winsock2_h="no"
curl_cv_header_ws2tcpip_h="no"
curl_cv_header_wincrypt_h="no"
curl_cv_header_winldap_h="no"
- curl_cv_header_winber_h="no"
;;
esac
CURL_CHECK_WIN32_LARGEFILE
@@ -526,6 +570,7 @@ CURL_DARWIN_CFLAGS
CURL_DARWIN_SYSTEMCONFIGURATION
CURL_SUPPORTS_BUILTIN_AVAILABLE
+AM_CONDITIONAL([OS_WINDOWS], [test "$curl_cv_native_windows" = "yes"])
dnl ************************************************************
dnl switch off particular protocols
@@ -722,7 +767,7 @@ if test X"$want_hyper" != Xno; then
AC_MSG_NOTICE([Added $DIR_HYPER to CURL_LIBRARY_PATH]),
)
],
- for d in `echo $DIR_HYPER | sed -e 's/:/ /'`; do
+ for d in `echo $DIR_HYPER | $SED -e 's/:/ /'`; do
if test -f "$d/libhyper.a"; then
AC_MSG_ERROR([hyper was found in $d but was probably built with wrong flags. See docs/HYPER.md.])
fi
@@ -1121,8 +1166,13 @@ then
AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
+ #define __USE_INLINE__
#include <proto/bsdsocket.h>
+ #ifdef __amigaos4__
+ struct SocketIFace *ISocket = NULL;
+ #else
struct Library *SocketBase = NULL;
+ #endif
]],[[
gethostbyname("www.dummysite.com");
]])
@@ -1146,16 +1196,6 @@ then
])
fi
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
- dnl gethostbyname in the net lib - for BeOS
- AC_CHECK_LIB(net, gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- LIBS="-lnet $LIBS"
- ])
-fi
-
-
if test "$HAVE_GETHOSTBYNAME" != "1"; then
AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
fi
@@ -1270,7 +1310,6 @@ else
then
dnl both header and lib were found!
AC_SUBST(HAVE_LIBZ)
- AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
ZLIB_LIBS="-lz"
@@ -1480,7 +1519,6 @@ if test x$CURL_DISABLE_LDAP != x1 ; then
CURL_CHECK_HEADER_LBER
CURL_CHECK_HEADER_LDAP
- CURL_CHECK_HEADER_LDAPSSL
CURL_CHECK_HEADER_LDAP_SSL
if test -z "$LDAPLIBNAME" ; then
@@ -1536,7 +1574,7 @@ if test x$CURL_DISABLE_LDAP != x1 ; then
fi
if test x$CURL_DISABLE_LDAP != x1 ; then
- AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
+ AC_CHECK_FUNCS([ldap_url_parse])
if test "$LDAPLIBNAME" = "wldap32"; then
curl_ldap_msg="enabled (winldap)"
@@ -1701,17 +1739,25 @@ AC_ARG_WITH(gssapi,
fi
])
+: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
+
save_CPPFLAGS="$CPPFLAGS"
AC_MSG_CHECKING([if GSS-API support is requested])
if test x"$want_gss" = xyes; then
AC_MSG_RESULT(yes)
- CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
+ if test $GSSAPI_ROOT != "/usr"; then
+ CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
+ else
+ CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
+ fi
if test -z "$GSSAPI_INCS"; 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 "$PKGCONFIG" != "no" ; then
GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi`
+ elif test -f "$KRB5CONFIG"; then
+ GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
elif test "$GSSAPI_ROOT" != "yes"; then
GSSAPI_INCS="-I$GSSAPI_ROOT/include"
fi
@@ -1796,7 +1842,11 @@ if test x"$want_gss" = xyes; then
LIBS="-lgssapi_krb5 -lresolv $LIBS"
;;
*)
- CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
+ if test $GSSAPI_ROOT != "/usr"; then
+ CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
+ else
+ CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
+ fi
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
@@ -1805,6 +1855,11 @@ if test x"$want_gss" = xyes; then
elif test "$PKGCONFIG" != "no" ; then
gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi`
LIBS="$gss_libs $LIBS"
+ elif test -f "$KRB5CONFIG"; then
+ dnl krb5-config doesn't have --libs-only-L or similar, put everything
+ dnl into LIBS
+ gss_libs=`$KRB5CONFIG --libs gssapi`
+ LIBS="$gss_libs $LIBS"
else
case $host in
*-hp-hpux*)
@@ -1839,6 +1894,18 @@ else
CPPFLAGS="$save_CPPFLAGS"
fi
+if test x"$want_gss" = xyes; then
+ AC_MSG_CHECKING([if we can link against GSS-API library])
+ AC_LINK_IFELSE([
+ AC_LANG_FUNC_LINK_TRY([gss_init_sec_context])
+ ],[
+ AC_MSG_RESULT([yes])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([--with-gssapi was specified, but a GSS-API library was not found.])
+ ])
+fi
+
build_libstubgss=no
if test x"$want_gss" = "xyes"; then
build_libstubgss=yes
@@ -1879,7 +1946,6 @@ CURL_WITH_OPENSSL
CURL_WITH_GNUTLS
CURL_WITH_MBEDTLS
CURL_WITH_WOLFSSL
-CURL_WITH_MESALINK
CURL_WITH_BEARSSL
CURL_WITH_RUSTLS
CURL_WITH_NSS
@@ -1889,11 +1955,17 @@ if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then
LIBS="-ladvapi32 -lcrypt32 $LIBS"
fi
-case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED$RUSTLS_ENABLED"
+dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer)
+if test "x$curl_cv_native_windows" = "xyes" &&
+ test "x$curl_mingw_original" = "xno"; then
+ LIBS="-lbcrypt $LIBS"
+fi
+
+case "x$SSL_DISABLED$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED"
in
x)
- AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
- AC_MSG_WARN([Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl, --with-bearssl or --with-rustls to address this.])
+ AC_MSG_ERROR([TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more.
+Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this.])
;;
x1)
# one SSL backend is enabled
@@ -1901,6 +1973,14 @@ x1)
SSL_ENABLED="1"
AC_MSG_NOTICE([built with one SSL backend])
;;
+xD)
+ # explicitly built without TLS
+ ;;
+xD*)
+ AC_MSG_ERROR([--without-ssl has been set together with an explicit option to use an ssl library
+(e.g. --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl, --with-rustls).
+Since these are conflicting parameters, verify which is the desired one and drop the other.])
+ ;;
*)
# more than one SSL backend is enabled
AC_SUBST(SSL_ENABLED)
@@ -2051,7 +2131,7 @@ if test X"$OPT_LIBSSH2" != Xno; then
dnl check for function added in libssh2 version 1.0
AC_CHECK_LIB(ssh2, libssh2_session_block_directions)
- AC_CHECK_HEADERS(libssh2.h,
+ AC_CHECK_HEADER(libssh2.h,
curl_ssh_msg="enabled (libSSH2)"
LIBSSH2_ENABLED=1
AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
@@ -2124,7 +2204,7 @@ elif test X"$OPT_LIBSSH" != Xno; then
AC_CHECK_LIB(ssh, ssh_new)
- AC_CHECK_HEADERS(libssh/libssh.h,
+ AC_CHECK_HEADER(libssh/libssh.h,
curl_ssh_msg="enabled (libSSH)"
LIBSSH_ENABLED=1
AC_DEFINE(USE_LIBSSH, 1, [if libSSH is in use])
@@ -2309,6 +2389,10 @@ AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR],
AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
[test "x$versioned_symbols" = 'xyes'])
+dnl Update .plist file with current version
+AC_SUBST([CURL_PLIST_VERSION],
+ ["$CURLVERSION"])
+
dnl -------------------------------------------------
dnl check winidn option before other IDN libraries
dnl -------------------------------------------------
@@ -2417,31 +2501,36 @@ AC_ARG_WITH(libidn2,
AS_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage])
AS_HELP_STRING([--without-libidn2],[Disable libidn2 usage]),
[OPT_IDN=$withval])
-case "$OPT_IDN" in
- no)
- dnl --without-libidn2 option used
- want_idn="no"
- AC_MSG_RESULT([no])
- ;;
- default)
- dnl configure option not specified
- want_idn="yes"
- want_idn_path="default"
- AC_MSG_RESULT([(assumed) yes])
- ;;
- yes)
- dnl --with-libidn2 option used without path
- want_idn="yes"
- want_idn_path="default"
- AC_MSG_RESULT([yes])
- ;;
- *)
- dnl --with-libidn2 option used with path
- want_idn="yes"
- want_idn_path="$withval"
- AC_MSG_RESULT([yes ($withval)])
- ;;
-esac
+if test "x$tst_links_winidn" = "xyes"; then
+ want_idn="no"
+ AC_MSG_RESULT([no (using winidn instead)])
+else
+ case "$OPT_IDN" in
+ no)
+ dnl --without-libidn2 option used
+ want_idn="no"
+ AC_MSG_RESULT([no])
+ ;;
+ default)
+ dnl configure option not specified
+ want_idn="yes"
+ want_idn_path="default"
+ AC_MSG_RESULT([(assumed) yes])
+ ;;
+ yes)
+ dnl --with-libidn2 option used without path
+ want_idn="yes"
+ want_idn_path="default"
+ AC_MSG_RESULT([yes])
+ ;;
+ *)
+ dnl --with-libidn2 option used with path
+ want_idn="yes"
+ want_idn_path="$withval"
+ AC_MSG_RESULT([yes ($withval)])
+ ;;
+ esac
+fi
if test "$want_idn" = "yes"; then
dnl idn library support has been requested
@@ -2555,11 +2644,13 @@ case "$OPT_H2" in
dnl --with-nghttp2 option used without path
want_nghttp2="default"
want_nghttp2_path=""
+ want_nghttp2_pkg_config_path=""
;;
*)
dnl --with-nghttp2 option used with path
want_nghttp2="yes"
- want_nghttp2_path="$withval/lib/pkgconfig"
+ want_nghttp2_path="$withval"
+ want_nghttp2_pkg_config_path="$withval/lib/pkgconfig"
;;
esac
@@ -2569,58 +2660,64 @@ if test X"$want_nghttp2" != Xno; then
CLEANCPPFLAGS="$CPPFLAGS"
CLEANLIBS="$LIBS"
- CURL_CHECK_PKGCONFIG(libnghttp2, $want_nghttp2_path)
+ CURL_CHECK_PKGCONFIG(libnghttp2, $want_nghttp2_pkg_config_path)
if test "$PKGCONFIG" != "no" ; then
- LIB_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_path])
+ LIB_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path])
$PKGCONFIG --libs-only-l libnghttp2`
AC_MSG_NOTICE([-l is $LIB_H2])
- CPP_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_path]) dnl
+ CPP_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path]) dnl
$PKGCONFIG --cflags-only-I libnghttp2`
AC_MSG_NOTICE([-I is $CPP_H2])
- LD_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_path])
+ LD_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_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"
+ DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'`
+ elif test x"$want_nghttp2_path" != x; then
+ LIB_H2="-lnghttp2"
+ LD_H2=-L${want_nghttp2_path}/lib$libsuff
+ CPP_H2=-I${want_nghttp2_path}/include
+ DIR_H2=${want_nghttp2_path}/lib$libsuff
+ elif test X"$want_nghttp2" != Xdefault; then
+ dnl no nghttp2 pkg-config found and no custom directory specified,
+ dnl deal with it
+ AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
+ fi
- # use nghttp2_session_set_local_window_size to require nghttp2
- # >= 1.12.0
- AC_CHECK_LIB(nghttp2, nghttp2_session_set_local_window_size,
- [
- 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
- )
+ LDFLAGS="$LDFLAGS $LD_H2"
+ CPPFLAGS="$CPPFLAGS $CPP_H2"
+ LIBS="$LIB_H2 $LIBS"
- else
- dnl no nghttp2 pkg-config found, deal with it
- if test X"$want_nghttp2" != 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
+ # use nghttp2_session_set_local_window_size to require nghttp2
+ # >= 1.12.0
+ AC_CHECK_LIB(nghttp2, nghttp2_session_set_local_window_size,
+ [
+ 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])
+ )
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2"
+ export CURL_LIBRARY_PATH
+ AC_MSG_NOTICE([Added $DIR_H2 to CURL_LIBRARY_PATH])
+ ],
+ dnl not found, revert back to clean variables
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+ )
fi
dnl **********************************************************************
dnl Check for ngtcp2 (QUIC)
dnl **********************************************************************
-OPT_TCP2="yes"
+OPT_TCP2="no"
if test "x$disable_http" = "xyes"; then
# without HTTP, ngtcp2 is no use
@@ -2733,7 +2830,7 @@ if test "x$NGTCP2_ENABLED" = "x1" -a "x$OPENSSL_ENABLED" = "x1"; then
if test "x$cross_compiling" != "xyes"; then
DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/^-L//'`
fi
- AC_CHECK_LIB(ngtcp2_crypto_openssl, ngtcp2_crypto_ctx_initial,
+ AC_CHECK_LIB(ngtcp2_crypto_openssl, ngtcp2_crypto_recv_client_initial_cb,
[
AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
NGTCP2_ENABLED=1
@@ -2788,7 +2885,7 @@ if test "x$NGTCP2_ENABLED" = "x1" -a "x$GNUTLS_ENABLED" = "x1"; then
if test "x$cross_compiling" != "xyes"; then
DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'`
fi
- AC_CHECK_LIB(ngtcp2_crypto_gnutls, ngtcp2_crypto_ctx_initial,
+ AC_CHECK_LIB(ngtcp2_crypto_gnutls, ngtcp2_crypto_recv_client_initial_cb,
[
AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
NGTCP2_ENABLED=1
@@ -2815,6 +2912,61 @@ if test "x$NGTCP2_ENABLED" = "x1" -a "x$GNUTLS_ENABLED" = "x1"; then
fi
fi
+if test "x$NGTCP2_ENABLED" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then
+ dnl backup the pre-ngtcp2_crypto_wolfssl variables
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+ CURL_CHECK_PKGCONFIG(libngtcp2_crypto_wolfssl, $want_tcp2_path)
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+ $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl`
+ AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_WOLFSSL])
+
+ CPP_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl
+ $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl`
+ AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_WOLFSSL])
+
+ LD_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+ $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl`
+ AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_WOLFSSL])
+
+ LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL"
+ CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL"
+ LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'`
+ fi
+ AC_CHECK_LIB(ngtcp2_crypto_wolfssl, ngtcp2_crypto_recv_client_initial_cb,
+ [
+ AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
+ NGTCP2_ENABLED=1
+ AC_DEFINE(USE_NGTCP2_CRYPTO_WOLFSSL, 1, [if ngtcp2_crypto_wolfssl is in use])
+ AC_SUBST(USE_NGTCP2_CRYPTO_WOLFSSL, [1])
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL"
+ export CURL_LIBRARY_PATH
+ AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH])
+ )
+ ],
+ dnl not found, revert back to clean variables
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+ )
+
+ else
+ dnl no ngtcp2_crypto_wolfssl pkg-config found, deal with it
+ if test X"$want_tcp2" != Xdefault; then
+ dnl To avoid link errors, we do not allow --with-ngtcp2 without
+ dnl a pkgconfig file
+ AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file.])
+ fi
+ fi
+fi
+
dnl **********************************************************************
dnl Check for nghttp3 (HTTP/3 with ngtcp2)
dnl **********************************************************************
@@ -3005,6 +3157,78 @@ AC_INCLUDES_DEFAULT
fi
dnl **********************************************************************
+dnl Check for msh3 (QUIC)
+dnl **********************************************************************
+
+OPT_MSH3="no"
+
+if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
+ # without HTTP or with ngtcp2, msh3 is no use
+ OPT_MSH3="no"
+fi
+
+AC_ARG_WITH(msh3,
+AS_HELP_STRING([--with-msh3=PATH],[Enable msh3 usage])
+AS_HELP_STRING([--without-msh3],[Disable msh3 usage]),
+ [OPT_MSH3=$withval])
+case "$OPT_MSH3" in
+ no)
+ dnl --without-msh3 option used
+ want_msh3="no"
+ ;;
+ yes)
+ dnl --with-msh3 option used without path
+ want_msh3="default"
+ want_msh3_path=""
+ ;;
+ *)
+ dnl --with-msh3 option used with path
+ want_msh3="yes"
+ want_msh3_path="$withval"
+ ;;
+esac
+
+if test X"$want_msh3" != Xno; then
+
+ if test "$NGHTTP3_ENABLED" = 1; then
+ AC_MSG_ERROR([--with-msh3 and --with-ngtcp2 are mutually exclusive])
+ fi
+
+ dnl backup the pre-msh3 variables
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+ if test -n "$want_msh3_path"; then
+ LD_MSH3="-L$want_msh3_path/lib"
+ CPP_MSH3="-I$want_msh3_path/include"
+ DIR_MSH3="$want_msh3_path/lib"
+ LDFLAGS="$LDFLAGS $LD_MSH3"
+ CPPFLAGS="$CPPFLAGS $CPP_MSH3"
+ fi
+ LIBS="-lmsh3 $LIBS"
+
+ AC_CHECK_LIB(msh3, MsH3ApiOpen,
+ [
+ AC_CHECK_HEADERS(msh3.h,
+ curl_h3_msg="enabled (msh3)"
+ MSH3_ENABLED=1
+ AC_DEFINE(USE_MSH3, 1, [if msh3 is in use])
+ AC_SUBST(USE_MSH3, [1])
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_MSH3"
+ export CURL_LIBRARY_PATH
+ AC_MSG_NOTICE([Added $DIR_MSH3 to CURL_LIBRARY_PATH]),
+ experimental="$experimental HTTP3"
+ )
+ ],
+ dnl not found, revert back to clean variables
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+ )
+fi
+
+dnl **********************************************************************
dnl Check for zsh completion path
dnl **********************************************************************
@@ -3059,9 +3283,6 @@ case "$OPT_FISH_FPATH" in
;;
esac
-CURL_CHECK_HEADER_MALLOC
-CURL_CHECK_HEADER_MEMORY
-
dnl Now check for the very most basic headers. Then we can use these
dnl ones as default-headers when checking for the rest!
AC_CHECK_HEADERS(
@@ -3081,6 +3302,7 @@ AC_CHECK_HEADERS(
sys/un.h \
linux/tcp.h \
netinet/tcp.h \
+ netinet/udp.h \
netdb.h \
sys/sockio.h \
sys/stat.h \
@@ -3088,7 +3310,6 @@ AC_CHECK_HEADERS(
termios.h \
termio.h \
fcntl.h \
- alloca.h \
io.h \
pwd.h \
utime.h \
@@ -3146,16 +3367,15 @@ AC_TYPE_SIZE_T
CURL_CHECK_STRUCT_TIMEVAL
CURL_VERIFY_RUNTIMELIBS
-AX_COMPILE_CHECK_SIZEOF(size_t)
-AX_COMPILE_CHECK_SIZEOF(long)
-AX_COMPILE_CHECK_SIZEOF(int)
-AX_COMPILE_CHECK_SIZEOF(short)
-AX_COMPILE_CHECK_SIZEOF(time_t)
-AX_COMPILE_CHECK_SIZEOF(off_t)
+CURL_SIZEOF(size_t)
+CURL_SIZEOF(long)
+CURL_SIZEOF(int)
+CURL_SIZEOF(time_t)
+CURL_SIZEOF(off_t)
o=$CPPFLAGS
CPPFLAGS="-I$srcdir/include $CPPFLAGS"
-AX_COMPILE_CHECK_SIZEOF(curl_off_t, [
+CURL_SIZEOF(curl_off_t, [
#include <curl/system.h>
])
CPPFLAGS=$o
@@ -3166,21 +3386,18 @@ AC_CHECK_TYPE(long long,
longlong="yes"
)
-if test "xyes" = "x$longlong"; then
- AC_MSG_CHECKING([if numberLL works])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- long long val = 1000LL;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
- ],[
- AC_MSG_RESULT([no])
- ])
-fi
+if test ${ac_cv_sizeof_curl_off_t} -lt 8; then
+ AC_ARG_WITH(n64-deprecated,dnl
+AS_HELP_STRING([--with-n64-deprecated],[confirm you realize support for systems without 64 bit data types is going away]),
+ if test X"$withval" != Xno; then
+ OPT_N64_AWARE=$withval
+ fi
+)
+ if test -z "$OPT_N64_AWARE"; then
+ AC_MSG_ERROR([support for systems without 64 bit curl_off_t is deprecated, use --with-n64-deprecated until then])
+ fi
+fi
# check for ssize_t
AC_CHECK_TYPE(ssize_t, ,
@@ -3281,13 +3498,10 @@ CURL_CHECK_FUNC_GETIFADDRS
CURL_CHECK_FUNC_GMTIME_R
CURL_CHECK_FUNC_INET_NTOP
CURL_CHECK_FUNC_INET_PTON
-CURL_CHECK_FUNC_IOCTL
CURL_CHECK_FUNC_IOCTLSOCKET
CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
-CURL_CHECK_FUNC_LOCALTIME_R
CURL_CHECK_FUNC_MEMRCHR
CURL_CHECK_FUNC_POLL
-CURL_CHECK_FUNC_SETSOCKOPT
CURL_CHECK_FUNC_SIGACTION
CURL_CHECK_FUNC_SIGINTERRUPT
CURL_CHECK_FUNC_SIGNAL
@@ -3299,12 +3513,8 @@ CURL_CHECK_FUNC_STRCMPI
CURL_CHECK_FUNC_STRDUP
CURL_CHECK_FUNC_STRERROR_R
CURL_CHECK_FUNC_STRICMP
-CURL_CHECK_FUNC_STRNCMPI
-CURL_CHECK_FUNC_STRNICMP
-CURL_CHECK_FUNC_STRSTR
CURL_CHECK_FUNC_STRTOK_R
CURL_CHECK_FUNC_STRTOLL
-CURL_CHECK_FUNC_WRITEV
case $host in
*msdosdjgpp)
@@ -3320,6 +3530,7 @@ AC_CHECK_DECLS([getpwuid_r], [], [AC_DEFINE(HAVE_DECL_GETPWUID_R_MISSING, 1, "Se
AC_CHECK_FUNCS([fnmatch \
+ fchmod \
geteuid \
getpass_r \
getppid \
@@ -3330,10 +3541,12 @@ AC_CHECK_FUNCS([fnmatch \
if_nametoindex \
mach_absolute_time \
pipe \
+ sched_yield \
+ sendmsg \
setlocale \
setmode \
setrlimit \
- usleep \
+ snprintf \
utime \
utimes
],[
@@ -3415,7 +3628,6 @@ dnl set variable for use in automakefile(s)
AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
CURL_CHECK_LIB_ARES
-AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
if test "x$curl_cv_native_windows" != "xyes" &&
test "x$enable_shared" = "xyes"; then
@@ -3499,9 +3711,27 @@ if test "$want_pthreads" != "no"; then
dnl if it wasn't found without lib, search for it in pthread lib
if test "$USE_THREADS_POSIX" != "1"
then
- CFLAGS="$CFLAGS -pthread"
# assign PTHREAD for pkg-config use
PTHREAD=" -pthread"
+
+ case $host in
+ *-ibm-aix*)
+ dnl Check if compiler is xlC
+ COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
+ if test x"$COMPILER_VERSION" = "x"; then
+ CFLAGS="$CFLAGS -pthread"
+ else
+ CFLAGS="$CFLAGS -qthreaded"
+ fi
+ ;;
+ powerpc-*amigaos*)
+ dnl No -pthread option, but link with -lpthread
+ PTHREAD=" -lpthread"
+ ;;
+ *)
+ CFLAGS="$CFLAGS -pthread"
+ ;;
+ esac
AC_CHECK_LIB(pthread, pthread_create,
[USE_THREADS_POSIX=1],
[ CFLAGS="$save_CFLAGS"])
@@ -3675,17 +3905,23 @@ AS_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
]
)
if test "x$want_unix_sockets" != "xno"; then
- AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [
+ if test "x$curl_cv_native_windows" = "xyes"; then
+ USE_UNIX_SOCKETS=1
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>
- ])
+ else
+ 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
fi
dnl ************************************************************
@@ -3885,7 +4121,26 @@ AS_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]),
*) AC_MSG_RESULT(yes)
;;
esac ],
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT(yes)
+)
+
+dnl ************************************************************
+dnl switch on/off headers-api
+dnl
+AC_MSG_CHECKING([whether to support headers-api])
+AC_ARG_ENABLE(headers-api,
+AS_HELP_STRING([--enable-headers-api],[Enable headers-api support])
+AS_HELP_STRING([--disable-headers-api],[Disable headers-api support]),
+[ case "$enableval" in
+ no) AC_MSG_RESULT(no)
+ curl_headers_msg="no (--enable-headers-api)"
+ AC_DEFINE(CURL_DISABLE_HEADERS_API, 1, [disable headers-api])
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ ;;
+ esac ],
+ AC_MSG_RESULT(yes)
)
dnl only check for HSTS if there's SSL present
@@ -3948,6 +4203,38 @@ if test "x$want_ech" != "xno"; then
fi
fi
+dnl *************************************************************
+dnl WebSockets
+dnl
+AC_MSG_CHECKING([whether to support WebSockets])
+AC_ARG_ENABLE(websockets,
+AS_HELP_STRING([--enable-websockets],[Enable WebSockets support])
+AS_HELP_STRING([--disable-websockets],[Disable WebSockets support]),
+[ case "$enableval" in
+ no)
+ AC_MSG_RESULT(no)
+ ;;
+ *)
+ if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
+ AC_MSG_RESULT(yes)
+ curl_ws_msg="enabled"
+ AC_DEFINE_UNQUOTED(USE_WEBSOCKETS, [1], [enable websockets support])
+ SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WS"
+ if test "x$SSL_ENABLED" = "x1"; then
+ SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WSS"
+ fi
+ experimental="$experimental Websockets"
+ else
+ dnl websockets requires >32 bit curl_off_t
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN([Websockets disabled due to lack of >32 bit curl_off_t])
+ fi
+ ;;
+ esac ],
+ AC_MSG_RESULT(no)
+)
+
+
dnl ************************************************************
dnl hiding of library internal symbols
dnl
@@ -4083,7 +4370,8 @@ if test "x$USE_NGHTTP2" = "x1" -o "x$USE_HYPER" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
fi
-if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1"; then
+if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1" \
+ -o "x$USE_MSH3" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3"
fi
@@ -4110,6 +4398,23 @@ if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
fi
fi
+if test "$tst_atomic" = "yes"; then
+ SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
+else
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <windows.h>
+ ]],[[
+ #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600)
+ #error
+ #endif
+ ]])
+ ],[
+ SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
+ ],[
+ ])
+fi
+
dnl replace spaces with newlines
dnl sort the lines
dnl replace the newlines back to spaces
@@ -4246,6 +4551,7 @@ AC_CONFIG_FILES([Makefile \
lib/Makefile \
scripts/Makefile \
lib/libcurl.vers \
+ lib/libcurl.plist \
tests/Makefile \
tests/certs/Makefile \
tests/certs/scripts/Makefile \
@@ -4302,11 +4608,13 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
RTMP: ${curl_rtmp_msg}
PSL: ${curl_psl_msg}
Alt-svc: ${curl_altsvc_msg}
+ Headers API: ${curl_headers_msg}
HSTS: ${curl_hsts_msg}
HTTP1: ${curl_h1_msg}
HTTP2: ${curl_h2_msg}
HTTP3: ${curl_h3_msg}
ECH: ${curl_ech_msg}
+ WebSockets: ${curl_ws_msg}
Protocols: ${SUPPORT_PROTOCOLS}
Features: ${SUPPORT_FEATURES}
])
diff --git a/curl-config.in b/curl-config.in
index 8b4a29a9a..f3e51617f 100644
--- a/curl-config.in
+++ b/curl-config.in
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2001 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2001 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,9 +19,11 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
-prefix=@prefix@
+prefix="@prefix@"
exec_prefix=@exec_prefix@
includedir=@includedir@
cppflag_curl_staticlib=@CPPFLAG_CURL_STATICLIB@
@@ -172,7 +174,7 @@ while test $# -gt 0; do
--static-libs)
if test "X@ENABLE_STATIC@" != "Xno" ; then
- echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@
+ echo "@libdir@/libcurl.@libext@" @LDFLAGS@ @LIBCURL_LIBS@
else
echo "curl was built with static libraries disabled" >&2
exit 1
diff --git a/docs/ALTSVC.md b/docs/ALTSVC.md
index 25437d6f9..560b43748 100644
--- a/docs/ALTSVC.md
+++ b/docs/ALTSVC.md
@@ -10,11 +10,11 @@ curl features support for the Alt-Svc: HTTP header.
## Standard
-[RFC 7838](https://tools.ietf.org/html/rfc7838)
+[RFC 7838](https://datatracker.ietf.org/doc/html/rfc7838)
# Alt-Svc cache file format
-This a text based file with one line per entry and each line consists of nine
+This is a text based file with one line per entry and each line consists of nine
space separated fields.
## Example
diff --git a/docs/BINDINGS.md b/docs/BINDINGS.md
index 01e4de8a1..c397c53c2 100644
--- a/docs/BINDINGS.md
+++ b/docs/BINDINGS.md
@@ -20,7 +20,7 @@ C++: [curlpp](https://github.com/jpbarrette/curlpp/) Written by Jean-Philippe Ba
[curlcpp](https://github.com/JosephP91/curlcpp) by Giuseppe Persico and [C++
Requests](https://github.com/libcpr/cpr) by Huu Nguyen
-[Ch](https://chcurl.sourceforge.io/) Written by Stephen Nestinger and Jonathan Rogado
+[Ch](https://chcurl.sourceforge.net/) Written by Stephen Nestinger and Jonathan Rogado
Cocoa: [BBHTTP](https://github.com/biasedbit/BBHTTP) written by Bruno de Carvalho
[curlhandle](https://github.com/karelia/curlhandle) Written by Dan Wood
@@ -31,7 +31,7 @@ Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo
[Delphi](https://github.com/Mercury13/curl4delphi) Written by Mikhail Merkuryev
-[Dylan](https://dylanlibs.sourceforge.io/) Written by Chris Double
+[Dylan](https://dylanlibs.sourceforge.net/) Written by Chris Double
[Eiffel](https://iron.eiffel.com/repository/20.11/package/ABEF6975-37AC-45FD-9C67-52D10BA0669B) Written by Eiffel Software
@@ -41,7 +41,7 @@ Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo
[Ferite](https://web.archive.org/web/20150102192018/ferite.org/) Written by Paul Querna
-[Gambas](https://gambas.sourceforge.io/)
+[Gambas](https://gambas.sourceforge.net/)
[glib/GTK+](https://web.archive.org/web/20100526203452/atterer.net/glibcurl) Written by Richard Atterer
@@ -53,6 +53,8 @@ Go: [go-curl](https://github.com/andelf/go-curl) by ShuYu Wang
[Haskell](https://hackage.haskell.org/package/curl) Written by Galois, Inc
+[Hollywood](https://www.hollywood-mal.com/download.html) hURL by Andreas Falkenhahn
+
[Java](https://github.com/pjlegato/curl-java)
[Julia](https://github.com/JuliaWeb/LibCURL.jl) Written by Amit Murthy
@@ -92,11 +94,11 @@ Bailiff and Bálint Szilakszi,
[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen
-[Q](https://q-lang.sourceforge.io/) The libcurl module is part of the default install
+[Q](https://q-lang.sourceforge.net/) The libcurl module is part of the default install
[R](https://cran.r-project.org/package=curl)
-[Rexx](https://rexxcurl.sourceforge.io/) Written Mark Hessling
+[Rexx](https://rexxcurl.sourceforge.net/) Written Mark Hessling
[Ring](https://ring-lang.sourceforge.io/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed
@@ -117,7 +119,7 @@ Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford,
[SP-Forth](https://sourceforge.net/p/spf/spf/ci/master/tree/devel/~ac/lib/lin/curl/) Written by Andrey Cherezov
-[SPL](https://web.archive.org/web/20210203022158/http://www.clifford.at/spl/spldoc/curl.html) Written by Clifford Wolf
+[SPL](https://web.archive.org/web/20210203022158/www.clifford.at/spl/spldoc/curl.html) Written by Clifford Wolf
[Tcl](https://web.archive.org/web/20160826011806/mirror.yellow5.com/tclcurl/) Tclcurl by Andrés García
@@ -125,7 +127,7 @@ Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford,
[Visual Foxpro](https://web.archive.org/web/20130730181523/www.ctl32.com.ar/libcurl.asp) by Carlos Alloatti
-[wxWidgets](https://wxcode.sourceforge.io/components/wxcurl/) Written by Casey O'Donnell
+[wxWidgets](https://wxcode.sourceforge.net/components/wxcurl/) Written by Casey O'Donnell
[XBLite](https://web.archive.org/web/20060426150418/perso.wanadoo.fr/xblite/libraries.html) Written by David Szafranski
diff --git a/docs/BUFREF.md b/docs/BUFREF.md
index 2697919a1..14f41b38b 100644
--- a/docs/BUFREF.md
+++ b/docs/BUFREF.md
@@ -6,19 +6,19 @@ when the reference is invalidated. Once referenced, a buffer cannot be
reallocated.
A data length is stored within the reference for binary data handling
-purpose; it is not used by the bufref API.
+purposes; it is not used by the bufref API.
The `struct bufref` is used to hold data referencing a buffer. The members of
that structure **MUST NOT** be accessed or modified without using the dedicated
bufref API.
-## init
+## `init`
```c
void Curl_bufref_init(struct bufref *br);
```
-Initialises a `bufref` structure. This function **MUST** be called before any
+Initializes a `bufref` structure. This function **MUST** be called before any
other operation is performed on the structure.
Upon completion, the referenced buffer is `NULL` and length is zero.
@@ -26,16 +26,16 @@ Upon completion, the referenced buffer is `NULL` and length is zero.
This function may also be called to bypass referenced buffer destruction while
invalidating the current reference.
-## free
+## `free`
```c
void Curl_bufref_free(struct bufref *br);
```
Destroys the previously referenced buffer using its destructor and
-reinitialises the structure for a possible subsequent reuse.
+reinitializes the structure for a possible subsequent reuse.
-## set
+## `set`
```c
void Curl_bufref_set(struct bufref *br, const void *buffer, size_t length,
@@ -43,13 +43,13 @@ void Curl_bufref_set(struct bufref *br, const void *buffer, size_t length,
```
Releases the previously referenced buffer, then assigns the new `buffer` to
-the structure, associated with its `destructor` function. The later can be
+the structure, associated with its `destructor` function. The latter can be
specified as `NULL`: this will be the case when the referenced buffer is
static.
-if `buffer` is NULL, `length`must be zero.
+if `buffer` is NULL, `length` must be zero.
-## memdup
+## `memdup`
```c
CURLcode Curl_bufref_memdup(struct bufref *br, const void *data, size_t length);
@@ -59,12 +59,12 @@ Releases the previously referenced buffer, then duplicates the `length`-byte
`data` into a buffer allocated via `malloc()` and references the latter
associated with destructor `curl_free()`.
-An additional trailing byte is allocated and set to zero as a possible
-string zero-terminator; it is not counted in the stored length.
+An additional trailing byte is allocated and set to zero as a possible string
+null-terminator; it is not counted in the stored length.
Returns `CURLE_OK` if successful, else `CURLE_OUT_OF_MEMORY`.
-## ptr
+## `ptr`
```c
const unsigned char *Curl_bufref_ptr(const struct bufref *br);
@@ -72,7 +72,7 @@ const unsigned char *Curl_bufref_ptr(const struct bufref *br);
Returns a `const unsigned char *` to the referenced buffer.
-## len
+## `len`
```c
size_t Curl_bufref_len(const struct bufref *br);
diff --git a/docs/BUG-BOUNTY.md b/docs/BUG-BOUNTY.md
index 25159fb3d..aa8ee8957 100644
--- a/docs/BUG-BOUNTY.md
+++ b/docs/BUG-BOUNTY.md
@@ -4,80 +4,75 @@ The curl project runs a bug bounty program in association with
[HackerOne](https://www.hackerone.com) and the [Internet Bug
Bounty](https://internetbugbounty.org).
-# How does it work?
+## How does it work?
Start out by posting your suspected security vulnerability directly to [curl's
HackerOne program](https://hackerone.com/curl).
After you have reported a security issue, it has been deemed credible, and a
patch and advisory has been made public, you may be eligible for a bounty from
-this program.
+this program. See the [SECURITY-PROCESS](SECURITY-PROCESS.md) document for how
+we work with security issues.
-See all details at [https://hackerone.com/curl](https://hackerone.com/curl)
-
-This bounty is relying on funds from sponsors. If you use curl professionally,
-consider help funding this! See
-[https://opencollective.com/curl](https://opencollective.com/curl) for
-details.
-
-# What are the reward amounts?
+## What are the reward amounts?
The curl project offers monetary compensation for reported and published
security vulnerabilities. The amount of money that is rewarded depends on how
serious the flaw is determined to be.
-We offer reward money *up to* a certain amount per severity. The curl security
-team determines the severity of each reported flaw on a case by case basis and
-the exact amount rewarded to the reporter is then decided.
+Since 2021, the Bug Bounty is managed in association with the Internet Bug
+Bounty and they will set the reward amounts. If it would turn out that they
+set amounts that are way lower than we can accept, the curl project intends to
+"top up" rewards.
-Check out the current award amounts at [https://hackerone.com/curl](https://hackerone.com/curl)
+In 2022, typical "Medium" rated vulnerabilities have been rewarded 2,400 USD
+each.
-# Who is eligible for a reward?
+## Who is eligible for a reward?
Everyone and anyone who reports a security problem in a released curl version
that has not already been reported can ask for a bounty.
+Dedicated - paid for - security audits that are performed in collaboration
+with curl developers are not eligible for bounties.
+
Vulnerabilities in features that are off by default and documented as
experimental are not eligible for a reward.
The vulnerability has to be fixed and publicly announced (by the curl project)
before a bug bounty will be considered.
+Once the vulnerability has been published by curl, the researcher can request
+their bounty from the [Internet Bug Bounty](https://hackerone.com/ibb).
+
Bounties need to be requested within twelve months from the publication of the
vulnerability.
-# Product vulnerabilities only
+## Product vulnerabilities only
This bug bounty only concerns the curl and libcurl products and thus their
respective source codes - when running on existing hardware. It does not
-include documentation, websites, or other infrastructure.
+include curl documentation, curl websites, or other curl related
+infrastructure.
The curl security team is the sole arbiter if a reported flaw is subject to a
bounty or not.
-# How are vulnerabilities graded?
+## How are vulnerabilities graded?
The grading of each reported vulnerability that makes a reward claim will be
performed by the curl security team. The grading will be based on the CVSS
(Common Vulnerability Scoring System) 3.0.
-# How are reward amounts determined?
-
-The curl security team first gives the vulnerability a score, as mentioned
-above, and based on that level we set an amount depending on the specifics of
-the individual case. Other sponsors of the program might also get involved and
-can raise the amounts depending on the particular issue.
-
-# What happens if the bounty fund is drained?
+## How are reward amounts determined?
-The bounty fund depends on sponsors. If we pay out more bounties than we add,
-the fund will eventually drain. If that end up happening, we will simply not
-be able to pay out as high bounties as we would like and hope that we can
-convince new sponsors to help us top up the fund again.
+The curl security team gives the vulnerability a score or severity level, as
+mentioned above. The actual monetary reward amount is decided and paid by the
+Internet Bug Bounty..
-# Regarding taxes, etc. on the bounties
+## Regarding taxes, etc. on the bounties
-In the event that the individual receiving a curl bug bounty needs to pay
-taxes on the reward money, the responsibility lies with the receiver. The
-curl project or its security team never actually receive any of this money,
-hold the money, or pay out the money.
+In the event that the individual receiving a bug bounty needs to pay taxes on
+the reward money, the responsibility lies with the receiver. The curl project
+or its security team never actually receive any of this money, hold the money,
+or pay out the money.
diff --git a/docs/BUGS.md b/docs/BUGS.md
index 1be093427..9d18ffe9f 100644
--- a/docs/BUGS.md
+++ b/docs/BUGS.md
@@ -3,7 +3,7 @@
## There are still bugs
Curl and libcurl keep being developed. Adding features and changing code
- means that bugs will sneak in, no matter how hard we try not to.
+ means that bugs will sneak in, no matter how hard we try to keep them out.
Of course there are lots of bugs left. And lots of misfeatures.
@@ -44,7 +44,7 @@
## What to report
When reporting a bug, you should include all information that will help us
- understand what's wrong, what you expected to happen and how to repeat the
+ understand what is wrong, what you expected to happen and how to repeat the
bad behavior. You therefore need to tell us:
- your operating system's name and version number
@@ -65,7 +65,7 @@
debug dump with your bug report. The output you get by using the `-v` or
`--trace` options.
- If curl crashed, causing a core dump (in unix), there is hardly any use to
+ If curl crashed, causing a core dump (in Unix), there is hardly any use to
send that huge file to anyone of us. Unless we have the same system setup as
you, we cannot do much with it. Instead, we ask you to get a stack trace and
send that (much smaller) output to us instead.
@@ -128,7 +128,7 @@
The list that is presented is the stack trace. If everything worked, it is
supposed to contain the chain of functions that were called when curl
- crashed. Include the stack trace with your detailed bug report. it will help a
+ crashed. Include the stack trace with your detailed bug report, it will help a
lot.
## Bugs in libcurl bindings
@@ -162,7 +162,7 @@
experimental build or similar, to get this confirmed or not.
At times people insist that they cannot upgrade to a modern curl version, but
- instead they "just want the bug fixed". That is fine, just do not count on us
+ instead, they "just want the bug fixed". That is fine, just do not count on us
spending many cycles on trying to identify which single commit, if that is
even possible, that at some point in the past fixed the problem you are now
experiencing.
@@ -177,11 +177,11 @@
## What happens on first filing
When a new issue is posted in the issue tracker or on the mailing list, the
- team of developers first need to see the report. Maybe they took the day off,
+ team of developers first needs to see the report. Maybe they took the day off,
maybe they are off in the woods hunting. Have patience. Allow at least a few
days before expecting someone to have responded.
- In the issue tracker you can expect that some labels will be set on the issue
+ In the issue tracker, you can expect that some labels will be set on the issue
to help categorize it.
## First response
@@ -199,14 +199,13 @@
## Not reproducible
- For problems that we cannot reproduce and cannot understand even after having
- gotten all the info we need and having studied the source code over again,
- are really hard to solve so then we may require further work from you who
- actually see or experience the problem.
+ We may require further work from you who actually see or experience the
+ problem if we cannot reproduce it and cannot understand it even after having
+ gotten all the info we need and having studied the source code over again.
## Unresponsive
- If the problem have not been understood or reproduced, and there's nobody
+ If the problem have not been understood or reproduced, and there is nobody
responding to follow-up questions or questions asking for clarifications or
for discussing possible ways to move forward with the task, we take that as a
strong suggestion that the bug is unimportant.
@@ -246,7 +245,7 @@
tracker.
The `TODO` document is full of ideas and suggestions of what we can add or
- fix one day. you are always encouraged and free to grab one of those items and
+ fix one day. You are always encouraged and free to grab one of those items and
take up a discussion with the curl development team on how that could be
implemented or provided in the project so that you can work on ticking it odd
that document.
@@ -257,7 +256,7 @@
## Closing off stalled bugs
The [issue and pull request trackers](https://github.com/curl/curl) only
- holds "active" entries open (using a non-precise definition of what active
+ hold "active" entries open (using a non-precise definition of what active
actually is, but they are at least not completely dead). Those that are
abandoned or in other ways dormant will be closed and sometimes added to
`TODO` and `KNOWN_BUGS` instead.
diff --git a/docs/CHECKSRC.md b/docs/CHECKSRC.md
index a9b69f9bf..0406a7f6b 100644
--- a/docs/CHECKSRC.md
+++ b/docs/CHECKSRC.md
@@ -9,16 +9,16 @@ check that it adheres to our [Source Code Style guide](CODE_STYLE.md).
## Command line options
-`-W[file]` skip that file and excludes it from being checked. Helpful
+`-W[file]` skip that file and exclude it from being checked. Helpful
when, for example, one of the files is generated.
`-D[dir]` directory name to prepend to file names when accessing them.
`-h` shows the help output, that also lists all recognized warnings
-## What does checksrc warn for?
+## What does `checksrc` warn for?
-checksrc does not check and verify the code against the entire style guide.
+`checksrc` does not check and verify the code against the entire style guide.
The script is an effort to detect the most common mistakes and syntax mistakes
that contributors make before they get accustomed to our code style. Heck,
many of us regulars do the mistakes too and this script helps us keep the code
@@ -27,7 +27,7 @@ in shape.
checksrc.pl -h
Lists how to use the script and it lists all existing warnings it has and
-problems it detects. At the time of this writing, the existing checksrc
+problems it detects. At the time of this writing, the existing `checksrc`
warnings are:
- `ASSIGNWITHINCONDITION`: Assignment within a conditional expression. The
@@ -41,7 +41,7 @@ warnings are:
more appropriate `char *name` style. The asterisk should sit right next to
the name without a space in between.
-- `BADCOMMAND`: There's a bad `!checksrc!` instruction in the code. See the
+- `BADCOMMAND`: There's a bad `checksrc` instruction in the code. See the
**Ignore certain warnings** section below for details.
- `BANNEDFUNC`: A banned function was used. The functions sprintf, vsprintf,
@@ -56,7 +56,7 @@ warnings are:
- `COMMANOSPACE`: a comma without following space
-- `COPYRIGHT`: the file is missing a copyright statement!
+- `COPYRIGHT`: the file is missing a copyright statement
- `CPPCOMMENTS`: `//` comment detected, that is not C89 compliant
@@ -113,14 +113,14 @@ warnings are:
- `SPACESEMICOLON`: there was a space before semicolon, ` ;`.
-- `TABS`: TAB characters are not allowed!
+- `TABS`: TAB characters are not allowed
- `TRAILINGSPACE`: Trailing whitespace on the line
- `TYPEDEFSTRUCT`: we frown upon (most) typedefed structs
-- `UNUSEDIGNORE`: a checksrc inlined warning ignore was asked for but not used,
- that is an ignore that should be removed or changed to get used.
+- `UNUSEDIGNORE`: a `checksrc` inlined warning ignore was asked for but not
+ used, that is an ignore that should be removed or changed to get used.
### Extended warnings
@@ -139,17 +139,16 @@ Currently these are the extended warnings which can be enabled:
## Ignore certain warnings
-Due to the nature of the source code and the flaws of the checksrc tool, there
-is sometimes a need to ignore specific warnings. checksrc allows a few
+Due to the nature of the source code and the flaws of the `checksrc` tool,
+there is sometimes a need to ignore specific warnings. `checksrc` allows a few
different ways to do this.
### Inline ignore
You can control what to ignore within a specific source file by providing
-instructions to checksrc in the source code itself. You need a magic marker
-that is `!checksrc!` followed by the instruction. The instruction can ask to
-ignore a specific warning N number of times or you ignore all of them until
-you mark the end of the ignored section.
+instructions to `checksrc` in the source code itself. See examples below. The
+instruction can ask to ignore a specific warning a specific number of times or
+you ignore all of them until you mark the end of the ignored section.
Inline ignores are only done for that single specific source code file.
diff --git a/docs/CIPHERS.md b/docs/CIPHERS.md
index 64a821fd1..e5e5def19 100644
--- a/docs/CIPHERS.md
+++ b/docs/CIPHERS.md
@@ -6,7 +6,8 @@ and
[`--ciphers`](https://curl.se/docs/manpage.html#--ciphers)
users can control which ciphers to consider when negotiating TLS connections.
-TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+ with options
+TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+, and since
+curl 7.85 for Schannel with options
[`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
and
[`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers)
@@ -50,7 +51,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
`ADH-RC4-MD5`
`ADH-DES-CBC3-SHA`
-### AES ciphersuites from RFC3268, extending TLS v1.0
+### AES cipher suites from RFC3268, extending TLS v1.0
`AES128-SHA`
`AES256-SHA`
@@ -65,7 +66,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
`ADH-AES128-SHA`
`ADH-AES256-SHA`
-### SEED ciphersuites from RFC4162, extending TLS v1.0
+### SEED cipher suites from RFC4162, extending TLS v1.0
`SEED-SHA`
`DH-DSS-SEED-SHA`
@@ -74,7 +75,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
`DHE-RSA-SEED-SHA`
`ADH-SEED-SHA`
-### GOST ciphersuites, extending TLS v1.0
+### GOST cipher suites, extending TLS v1.0
`GOST94-GOST89-GOST89`
`GOST2001-GOST89-GOST89`
@@ -147,7 +148,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
`ECDHE-ECDSA-AES128-CCM8`
`ECDHE-ECDSA-AES256-CCM8`
-### Camellia HMAC-Based ciphersuites from RFC6367, extending TLS v1.2
+### Camellia HMAC-Based cipher suites from RFC6367, extending TLS v1.2
`ECDHE-ECDSA-CAMELLIA128-SHA256`
`ECDHE-ECDSA-CAMELLIA256-SHA384`
@@ -176,7 +177,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
`des`
`desede3`
-### SSL3/TLS cipher suites
+### SSL3/TLS cipher suites
`rsa_rc4_128_md5`
`rsa_rc4_128_sha`
@@ -457,7 +458,7 @@ maps them to the following case-insensitive names.
## Schannel
Schannel allows the enabling and disabling of encryption algorithms, but not
-specific ciphersuites. They are
+specific cipher suites. They are
[defined](https://docs.microsoft.com/windows/desktop/SecCrypto/alg-id) by
Microsoft.
@@ -516,7 +517,75 @@ and the request will fail.
`CALG_ECDH_EPHEM`,
As of curl 7.77.0, you can also pass `SCH_USE_STRONG_CRYPTO` as a cipher name
-to [constrain the set of available ciphers as specified in the schannel
+to [constrain the set of available ciphers as specified in the Schannel
documentation](https://docs.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-server-2022).
-Note that the supported ciphers in this case follows the OS version, so if you
+Note that the supported ciphers in this case follow the OS version, so if you
are running an outdated OS you might still be supporting weak ciphers.
+
+### TLS 1.3 cipher suites
+
+(Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`)
+
+`TLS_AES_256_GCM_SHA384`
+`TLS_AES_128_GCM_SHA256`
+`TLS_CHACHA20_POLY1305_SHA256`
+`TLS_AES_128_CCM_8_SHA256`
+`TLS_AES_128_CCM_SHA256`
+
+## BearSSL
+
+BearSSL ciphers can be specified by either the OpenSSL name (`ECDHE-RSA-AES128-GCM-SHA256`) or the IANA name (`TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`).
+
+Since BearSSL 0.1:
+
+`DES-CBC3-SHA`
+`AES128-SHA`
+`AES256-SHA`
+`AES128-SHA256`
+`AES256-SHA256`
+`AES128-GCM-SHA256`
+`AES256-GCM-SHA384`
+`ECDH-ECDSA-DES-CBC3-SHA`
+`ECDH-ECDSA-AES128-SHA`
+`ECDH-ECDSA-AES256-SHA`
+`ECDHE-ECDSA-DES-CBC3-SHA`
+`ECDHE-ECDSA-AES128-SHA`
+`ECDHE-ECDSA-AES256-SHA`
+`ECDH-RSA-DES-CBC3-SHA`
+`ECDH-RSA-AES128-SHA`
+`ECDH-RSA-AES256-SHA`
+`ECDHE-RSA-DES-CBC3-SHA`
+`ECDHE-RSA-AES128-SHA`
+`ECDHE-RSA-AES256-SHA`
+`ECDHE-ECDSA-AES128-SHA256`
+`ECDHE-ECDSA-AES256-SHA384`
+`ECDH-ECDSA-AES128-SHA256`
+`ECDH-ECDSA-AES256-SHA384`
+`ECDHE-RSA-AES128-SHA256`
+`ECDHE-RSA-AES256-SHA384`
+`ECDH-RSA-AES128-SHA256`
+`ECDH-RSA-AES256-SHA384`
+`ECDHE-ECDSA-AES128-GCM-SHA256`
+`ECDHE-ECDSA-AES256-GCM-SHA384`
+`ECDH-ECDSA-AES128-GCM-SHA256`
+`ECDH-ECDSA-AES256-GCM-SHA384`
+`ECDHE-RSA-AES128-GCM-SHA256`
+`ECDHE-RSA-AES256-GCM-SHA384`
+`ECDH-RSA-AES128-GCM-SHA256`
+`ECDH-RSA-AES256-GCM-SHA384`
+
+Since BearSSL 0.2:
+
+`ECDHE-RSA-CHACHA20-POLY1305`
+`ECDHE-ECDSA-CHACHA20-POLY1305`
+
+Since BearSSL 0.6:
+
+`AES128-CCM`
+`AES256-CCM`
+`AES128-CCM8`
+`AES256-CCM8`
+`ECDHE-ECDSA-AES128-CCM`
+`ECDHE-ECDSA-AES256-CCM`
+`ECDHE-ECDSA-AES128-CCM8`
+`ECDHE-ECDSA-AES256-CCM8`
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
index b3230ec52..97101a482 100644
--- a/docs/CMakeLists.txt
+++ b/docs/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#add_subdirectory(examples)
add_subdirectory(libcurl)
diff --git a/docs/CODE_REVIEW.md b/docs/CODE_REVIEW.md
index 20d1be849..0776d30a0 100644
--- a/docs/CODE_REVIEW.md
+++ b/docs/CODE_REVIEW.md
@@ -70,7 +70,7 @@ on final or release builds.
Can the mallocs be avoided? Do not introduce mallocs in any hot paths. If
there are (new) mallocs, can they be combined into fewer calls?
-Are all allocations handled in errorpaths to avoid leaks and crashes?
+Are all allocations handled in error paths to avoid leaks and crashes?
## Thread-safety
@@ -151,12 +151,12 @@ Maybe use of `realloc()` should rather use the dynbuf functions?
Do not allow new code that grows buffers without using dynbuf.
Use of C functions that rely on a terminating zero must only be used on data
-that really do have a zero terminating zero.
+that really do have a null-terminating zero.
## Dangerous "data styles"
Make extra precautions and verify that memory buffers that need a terminating
-zero always have exactly that. Buffers *without* a zero terminator must not be
+zero always have exactly that. Buffers *without* a null-terminator must not be
used as input to string functions.
# Commit messages
@@ -164,5 +164,5 @@ used as input to string functions.
Tightly coupled with a code review is making sure that the commit message is
good. It is the responsibility of the person who merges the code to make sure
that the commit message follows our standard (detailed in the
-[CONTRIBUTE.md](CONTRIBUTE.md) document). This includes making sure the PR
+[CONTRIBUTE](CONTRIBUTE.md) document). This includes making sure the PR
identifies related issues and giving credit to reporters and helpers.
diff --git a/docs/CODE_STYLE.md b/docs/CODE_STYLE.md
index 530d4004d..5481aa506 100644
--- a/docs/CODE_STYLE.md
+++ b/docs/CODE_STYLE.md
@@ -9,8 +9,9 @@ style is more important than individual contributors having their own personal
tastes satisfied.
Our C code has a few style rules. Most of them are verified and upheld by the
-`lib/checksrc.pl` script. Invoked with `make checksrc` or even by default by
-the build system when built after `./configure --enable-debug` has been used.
+`scripts/checksrc.pl` script. Invoked with `make checksrc` or even by default
+by the build system when built after `./configure --enable-debug` has been
+used.
It is normally not a problem for anyone to follow the guidelines, as you just
need to copy the style already used in the source code and there are no
diff --git a/docs/CONTRIBUTE.md b/docs/CONTRIBUTE.md
index 16ea8fed1..43a747df5 100644
--- a/docs/CONTRIBUTE.md
+++ b/docs/CONTRIBUTE.md
@@ -4,9 +4,7 @@ This document is intended to offer guidelines on how to best contribute to the
curl project. This concerns new features as well as corrections to existing
flaws or bugs.
-## Learning curl
-
-### Join the Community
+## Join the Community
Skip over to [https://curl.se/mail/](https://curl.se/mail/) and join
the appropriate mailing list(s). Read up on details before you post
@@ -23,7 +21,7 @@ If you are at all interested in the code side of things, consider clicking
'watch' on the [curl repo on GitHub](https://github.com/curl/curl) to be
notified of pull requests and new issues posted there.
-### License and copyright
+## License and copyright
When contributing with code, you agree to put your changes and new code under
the same license curl and libcurl is already using unless stated and agreed
@@ -46,7 +44,7 @@ patch/code to us. We will credit you for your changes as far as possible, to
give credit but also to keep a trace back to who made what changes. Please
always provide us with your full real name when contributing,
-### What To Read
+## What To Read
Source code, the man pages, the [INTERNALS
document](https://curl.se/dev/internals.html),
@@ -124,7 +122,7 @@ If you do not have test cases or perhaps you have done something that is hard
to write tests for, do explain exactly how you have otherwise tested and
verified your changes.
-## Sharing Your Changes
+## Submit Your Changes
### How to get your changes into the main sources
@@ -133,12 +131,17 @@ GitHub](https://github.com/curl/curl/pulls), but you can also send your plain
patch to [the curl-library mailing
list](https://curl.se/mail/list.cgi?list=curl-library).
-Either way, your change will be reviewed and discussed there and you will be
-expected to correct flaws pointed out and update accordingly, or the change
-risks stalling and eventually just getting deleted without action. As a
-submitter of a change, you are the owner of that change until it has been merged.
+If you opt to post a patch on the mailing list, chances are someone will
+convert it into a pull request for you, to have the CI jobs verify it proper
+before it can be merged. Be prepared that some feedback on the proposed change
+might then come on GitHub.
+
+Your change will be reviewed and discussed and you will be expected to correct
+flaws pointed out and update accordingly, or the change risks stalling and
+eventually just getting deleted without action. As a submitter of a change,
+you are the owner of that change until it has been merged.
-Respond on the list or on github about the change and answer questions and/or
+Respond on the list or on GitHub about the change and answer questions and/or
fix nits/flaws. This is important. We will take lack of replies as a sign that
you are not anxious to get your patch accepted and we tend to simply drop such
changes.
@@ -154,12 +157,12 @@ git commit that is easy to merge and they are easy to track and not that easy
to lose in the flood of many emails, like they sometimes do on the mailing
lists.
-Every pull request submitted will automatically be
-tested in several different ways. [See CI.md for more
+Every pull request submitted will automatically be tested in several different
+ways. [See the CI document for more
information](https://github.com/curl/curl/blob/master/tests/CI.md).
Sometimes the tests fail due to a dependency service temporarily being offline
-or otherwise unavailable, eg. package downloads. In this case you can just
+or otherwise unavailable, e.g. package downloads. In this case you can just
try to update your pull requests to rerun the tests later as described below.
You can update your pull requests by pushing new commits or force-pushing
@@ -169,15 +172,21 @@ actual content changed also allows you to retrigger the tests for that commit.
When you adjust your pull requests after review, consider squashing the
commits so that we can review the full updated version more easily.
-### Making quality patches
+A pull request sent to the project might get labeled `needs-votes` by a
+project maintainer. This label means that in addition to meeting all other
+checks and qualifications this pull request must also receive more "votes" of
+user support. More signs that people want this to happen. It could be in the
+form of messages saying so, or thumbs-up reactions on GitHub.
+
+### Making quality changes
Make the patch against as recent source versions as possible.
-If you have followed the tips in this document and your patch still has not been
-incorporated or responded to after some weeks, consider resubmitting it to the
-list or better yet: change it to a pull request.
+If you have followed the tips in this document and your patch still has not
+been incorporated or responded to after some weeks, consider resubmitting it
+to the list or better yet: change it to a pull request.
-### Write good commit messages
+### Commit messages
A short guide to how to write commit messages in the curl project.
@@ -236,7 +245,7 @@ can make patches out of your changes that are suitable for mailing:
git format-patch remotes/origin/master
-This creates files in your local directory named NNNN-[name].patch for each
+This creates files in your local directory named `NNNN-[name].patch` for each
commit.
Now send those patches off to the curl-library list. You can of course opt to
@@ -258,17 +267,25 @@ can use diff recursively:
diff -ur curl-original-dir curl-modified-sources-dir > my-fixes.diff
The GNU diff and GNU patch tools exist for virtually all platforms, including
-all kinds of Unixes and Windows:
+all kinds of Unixes and Windows.
+
+### Useful resources
+ - [Webinar on getting code into cURL](https://www.youtube.com/watch?v=QmZ3W1d6LQI)
-For unix-like operating systems:
+## Update copyright and license information
- - [https://savannah.gnu.org/projects/patch/](https://savannah.gnu.org/projects/patch/)
- - [https://www.gnu.org/software/diffutils/](https://www.gnu.org/software/diffutils/)
+There is a CI job called **REUSE compliance / check** that will run on every
+pull request and commit to verify that the *REUSE state* of all files are
+still fine.
-For Windows:
+This means that all files need to have their license and copyright information
+clearly stated. Ideally by having the standard curl source code header, with
+an accurate copyright year range and the SPDX-License-Identifier included. If
+the header does not work, you can use a smaller header or add the information
+for a specific file to the `.reuse/dep5` file.
- - [https://gnuwin32.sourceforge.io/packages/patch.htm](https://gnuwin32.sourceforge.io/packages/patch.htm)
- - [https://gnuwin32.sourceforge.io/packages/diffutils.htm](https://gnuwin32.sourceforge.io/packages/diffutils.htm)
+We update copyright year ranges to end on the year of the most recent change
+of the individual file.
-### Useful resources
- - [Webinar on getting code into cURL](https://www.youtube.com/watch?v=QmZ3W1d6LQI)
+You can manually verify the copyright and compliance status by running the
+`./scripts/copyright.pl` script in the root of the git repository.
diff --git a/docs/CURL-DISABLE.md b/docs/CURL-DISABLE.md
index a2e75f198..1548df6bc 100644
--- a/docs/CURL-DISABLE.md
+++ b/docs/CURL-DISABLE.md
@@ -1,136 +1,140 @@
# Code defines to disable features and protocols
-## CURL_DISABLE_ALTSVC
+## `CURL_DISABLE_ALTSVC`
Disable support for Alt-Svc: HTTP headers.
-## CURL_DISABLE_COOKIES
+## `CURL_DISABLE_COOKIES`
Disable support for HTTP cookies.
-## CURL_DISABLE_CRYPTO_AUTH
+## `CURL_DISABLE_CRYPTO_AUTH`
Disable support for authentication methods using crypto.
-## CURL_DISABLE_DICT
+## `CURL_DISABLE_DICT`
Disable the DICT protocol
-## CURL_DISABLE_DOH
+## `CURL_DISABLE_DOH`
Disable DNS-over-HTTPS
-## CURL_DISABLE_FILE
+## `CURL_DISABLE_FILE`
Disable the FILE protocol
-## CURL_DISABLE_FTP
+## `CURL_DISABLE_FTP`
Disable the FTP (and FTPS) protocol
-## CURL_DISABLE_GETOPTIONS
+## `CURL_DISABLE_GETOPTIONS`
Disable the `curl_easy_options` API calls that lets users get information
about existing options to `curl_easy_setopt`.
-## CURL_DISABLE_GOPHER
+## `CURL_DISABLE_GOPHER`
Disable the GOPHER protocol.
-## CURL_DISABLE_HSTS
+## `CURL_DISABLE_HEADERS_API`
+
+Disable the HTTP header API.
+
+## `CURL_DISABLE_HSTS`
Disable the HTTP Strict Transport Security support.
-## CURL_DISABLE_HTTP
+## `CURL_DISABLE_HTTP`
Disable the HTTP(S) protocols. Note that this then also disable HTTP proxy
support.
-## CURL_DISABLE_HTTP_AUTH
+## `CURL_DISABLE_HTTP_AUTH`
Disable support for all HTTP authentication methods.
-## CURL_DISABLE_IMAP
+## `CURL_DISABLE_IMAP`
Disable the IMAP(S) protocols.
-## CURL_DISABLE_LDAP
+## `CURL_DISABLE_LDAP`
Disable the LDAP(S) protocols.
-## CURL_DISABLE_LDAPS
+## `CURL_DISABLE_LDAPS`
Disable the LDAPS protocol.
-## CURL_DISABLE_LIBCURL_OPTION
+## `CURL_DISABLE_LIBCURL_OPTION`
Disable the --libcurl option from the curl tool.
-## CURL_DISABLE_MIME
+## `CURL_DISABLE_MIME`
Disable MIME support.
-## CURL_DISABLE_MQTT
+## `CURL_DISABLE_MQTT`
Disable MQTT support.
-## CURL_DISABLE_NETRC
+## `CURL_DISABLE_NETRC`
Disable the netrc parser.
-## CURL_DISABLE_NTLM
+## `CURL_DISABLE_NTLM`
Disable support for NTLM.
-## CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG
+## `CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG`
Disable the auto load config support in the OpenSSL backend.
-## CURL_DISABLE_PARSEDATE
+## `CURL_DISABLE_PARSEDATE`
Disable date parsing
-## CURL_DISABLE_POP3
+## `CURL_DISABLE_POP3`
Disable the POP3 protocol
-## CURL_DISABLE_PROGRESS_METER
+## `CURL_DISABLE_PROGRESS_METER`
Disable the built-in progress meter
-## CURL_DISABLE_PROXY
+## `CURL_DISABLE_PROXY`
Disable support for proxies
-## CURL_DISABLE_RTSP
+## `CURL_DISABLE_RTSP`
Disable the RTSP protocol.
-## CURL_DISABLE_SHUFFLE_DNS
+## `CURL_DISABLE_SHUFFLE_DNS`
Disable the shuffle DNS feature
-## CURL_DISABLE_SMB
+## `CURL_DISABLE_SMB`
Disable the SMB(S) protocols
-## CURL_DISABLE_SMTP
+## `CURL_DISABLE_SMTP`
Disable the SMTP(S) protocols
-## CURL_DISABLE_SOCKETPAIR
+## `CURL_DISABLE_SOCKETPAIR`
-Disable the use of socketpair internally to allow waking up and canceling
-curl_multi_poll().
+Disable the use of `socketpair()` internally to allow waking up and canceling
+`curl_multi_poll()`.
-## CURL_DISABLE_TELNET
+## `CURL_DISABLE_TELNET`
Disable the TELNET protocol
-## CURL_DISABLE_TFTP
+## `CURL_DISABLE_TFTP`
Disable the TFTP protocol
-## CURL_DISABLE_VERBOSE_STRINGS
+## `CURL_DISABLE_VERBOSE_STRINGS`
Disable verbose strings and error messages.
diff --git a/docs/DEPRECATE.md b/docs/DEPRECATE.md
index d0d94d1ac..80be68f7d 100644
--- a/docs/DEPRECATE.md
+++ b/docs/DEPRECATE.md
@@ -6,8 +6,43 @@ email the
as soon as possible and explain to us why this is a problem for you and
how your use case cannot be satisfied properly using a workaround.
-## Past removals
+## Support for systems without 64 bit data types
+
+curl will *require* support for a 64 bit data type (like `long long` or an
+alternative) to build. These days, few systems are used where no such type is
+around so the cost of maintaining this support is increasingly unnecessary to
+spent effort and time on, while supporting 32 bit values for some of those
+fields is complicated and hard to test.
+
+Adding this requirement will make the code simpler, easier to maintain and the
+test coverage better. It is a low price too, since virtually no users are
+still building curl on such systems.
+
+`long long` was not a standard type until C99, but has been supported by C89
+compilers since the 1990s.
+
+Starting in 8.0.0 (March 2023), the plan is to drop support.
+
+Starting in 7.86.0, building curl with configure requires the additional flag
+`--with-n64-deprecated` if the `curl_off_t` type on your system is smaller
+than 8 bytes, in an attempt to highlight these plans to affected users.
+
+## NSS
+
+We remove support for building curl with the NSS TLS library in August 2023.
+
+- There are few users left who use curl+NSS
+- NSS has few users outside of curl as well (primarily Firefox)
+- NSS is harder than ever to find documentation for
+- NSS was always "best" used with Red Hat Linux when they provided additional
+ features on top of the regular NSS that is not shipped by the vanilla library
+
+Starting in 7.82.0, building curl to use NSS configure requires the additional
+flag `--with-nss-deprecated` in an attempt to highlight these plans.
+
+## past removals
- Pipelining
- axTLS
- PolarSSL
+ - NPN
diff --git a/docs/DYNBUF.md b/docs/DYNBUF.md
index 16aca8a61..41b022c42 100644
--- a/docs/DYNBUF.md
+++ b/docs/DYNBUF.md
@@ -9,17 +9,18 @@ The `struct dynbuf` is used to hold data for each instance of a dynamic
buffer. The members of that struct **MUST NOT** be accessed or modified
without using the dedicated dynbuf API.
-## init
+## `Curl_dyn_init`
```c
void Curl_dyn_init(struct dynbuf *s, size_t toobig);
```
-This inits a struct to use for dynbuf and it cannot fail. The `toobig` value
-**must** be set to the maximum size we allow this buffer instance to grow to.
-The functions below will return `CURLE_OUT_OF_MEMORY` when hitting this limit.
+This initializes a struct to use for dynbuf and it cannot fail. The `toobig`
+value **must** be set to the maximum size we allow this buffer instance to
+grow to. The functions below will return `CURLE_OUT_OF_MEMORY` when hitting
+this limit.
-## free
+## `Curl_dyn_free`
```c
void Curl_dyn_free(struct dynbuf *s);
@@ -28,7 +29,7 @@ void Curl_dyn_free(struct dynbuf *s);
Free the associated memory and clean up. After a free, the `dynbuf` struct can
be re-used to start appending new data to.
-## addn
+## `Curl_dyn_addn`
```c
CURLcode Curl_dyn_addn(struct dynbuf *s, const void *mem, size_t len);
@@ -36,7 +37,7 @@ CURLcode Curl_dyn_addn(struct dynbuf *s, const void *mem, size_t len);
Append arbitrary data of a given length to the end of the buffer.
-## add
+## `Curl_dyn_add`
```c
CURLcode Curl_dyn_add(struct dynbuf *s, const char *str);
@@ -44,7 +45,7 @@ CURLcode Curl_dyn_add(struct dynbuf *s, const char *str);
Append a C string to the end of the buffer.
-## addf
+## `Curl_dyn_addf`
```c
CURLcode Curl_dyn_addf(struct dynbuf *s, const char *fmt, ...);
@@ -52,7 +53,7 @@ CURLcode Curl_dyn_addf(struct dynbuf *s, const char *fmt, ...);
Append a `printf()`-style string to the end of the buffer.
-## vaddf
+## `Curl_dyn_vaddf`
```c
CURLcode Curl_dyn_vaddf(struct dynbuf *s, const char *fmt, va_list ap);
@@ -60,7 +61,7 @@ CURLcode Curl_dyn_vaddf(struct dynbuf *s, const char *fmt, va_list ap);
Append a `vprintf()`-style string to the end of the buffer.
-## reset
+## `Curl_dyn_reset`
```c
void Curl_dyn_reset(struct dynbuf *s);
@@ -68,7 +69,7 @@ void Curl_dyn_reset(struct dynbuf *s);
Reset the buffer length, but leave the allocation.
-## tail
+## `Curl_dyn_tail`
```c
CURLcode Curl_dyn_tail(struct dynbuf *s, size_t length);
@@ -76,29 +77,30 @@ CURLcode Curl_dyn_tail(struct dynbuf *s, size_t length);
Keep `length` bytes of the buffer tail (the last `length` bytes of the
buffer). The rest of the buffer is dropped. The specified `length` must not be
-larger than the buffer length.
+larger than the buffer length. To instead keep the leading part, see
+`Curl_dyn_setlen()`.
-## ptr
+## `Curl_dyn_ptr`
```c
char *Curl_dyn_ptr(const struct dynbuf *s);
```
-Returns a `char *` to the buffer if it has a length, otherwise a NULL. Since
-the buffer may be reallocated, this pointer should not be trusted or used
-anymore after the next buffer manipulation call.
+Returns a `char *` to the buffer if it has a length, otherwise may return
+NULL. Since the buffer may be reallocated, this pointer should not be trusted
+or used anymore after the next buffer manipulation call.
-## uptr
+## `Curl_dyn_uptr`
```c
unsigned char *Curl_dyn_uptr(const struct dynbuf *s);
```
-Returns an `unsigned char *` to the buffer if it has a length, otherwise a
-NULL. Since the buffer may be reallocated, this pointer should not be trusted
-or used anymore after the next buffer manipulation call.
+Returns an `unsigned char *` to the buffer if it has a length, otherwise may
+return NULL. Since the buffer may be reallocated, this pointer should not be
+trusted or used anymore after the next buffer manipulation call.
-## len
+## `Curl_dyn_len`
```c
size_t Curl_dyn_len(const struct dynbuf *s);
@@ -106,3 +108,13 @@ size_t Curl_dyn_len(const struct dynbuf *s);
Returns the length of the buffer in bytes. Does not include the terminating
zero byte.
+
+## `Curl_dyn_setlen`
+
+```c
+CURLcode Curl_dyn_setlen(struct dynbuf *s, size_t len);
+```
+
+Sets the new shorter length of the buffer in number of bytes. Keeps the
+leftmost set number of bytes, discards the rest. To instead keep the tail part
+of the buffer, see `Curl_dyn_tail()`.
diff --git a/docs/EXPERIMENTAL.md b/docs/EXPERIMENTAL.md
index ce9a1b8e8..9aaa7ada1 100644
--- a/docs/EXPERIMENTAL.md
+++ b/docs/EXPERIMENTAL.md
@@ -20,4 +20,6 @@ Experimental support in curl means:
- The Hyper HTTP backend
- HTTP/3 support and options
- - CURLSSLOPT_NATIVE_CA (No configure option, feature built in when supported)
+ - `CURLSSLOPT_NATIVE_CA` (No configure option, feature built in when supported)
+ - The rustls backend
+ - WebSocket
diff --git a/docs/FAQ b/docs/FAQ
index 30c889e4e..c8ba7feb3 100644
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -14,11 +14,11 @@ FAQ
1.5 Who makes curl?
1.6 What do you get for making curl?
1.7 What about CURL from curl.com?
- 1.8 I have a problem who do I mail?
+ 1.8 I have a problem, who do I mail?
1.9 Where do I buy commercial support for curl?
1.10 How many are using curl?
1.11 Why do you not update ca-bundle.crt
- 1.12 I have a problem who can I chat with?
+ 1.12 I have a problem, who can I chat with?
1.13 curl's ECCN number?
1.14 How do I submit my patch?
1.15 How do I port libcurl to my OS?
@@ -42,10 +42,10 @@ FAQ
3.11 How do I POST with a different Content-Type?
3.12 Why do FTP-specific features over HTTP proxy fail?
3.13 Why do my single/double quotes fail?
- 3.14 Does curl support Javascript or PAC (automated proxy config)?
+ 3.14 Does curl support JavaScript or PAC (automated proxy config)?
3.15 Can I do recursive fetches with curl?
3.16 What certificates do I need when I use SSL?
- 3.17 How do I list the root dir of an FTP server?
+ 3.17 How do I list the root directory of an FTP server?
3.18 Can I use curl to send a POST/PUT and not wait for a response?
3.19 How do I get HTTP from a host using a specific IP address?
3.20 How to SFTP from my user's home directory?
@@ -56,7 +56,7 @@ FAQ
4.2 Why do I get problems when I use & or % in the URL?
4.3 How can I use {, }, [ or ] to specify multiple URLs?
4.4 Why do I get downloaded data even though the web page does not exist?
- 4.5 Why do I get return code XXX from a HTTP server?
+ 4.5 Why do I get return code XXX from an HTTP server?
4.5.1 "400 Bad Request"
4.5.2 "401 Unauthorized"
4.5.3 "403 Forbidden"
@@ -66,7 +66,7 @@ FAQ
4.6 Can you tell me what error code 142 means?
4.7 How do I keep user names and passwords secret in curl command lines?
4.8 I found a bug
- 4.9 curl cannot authenticate to the server that requires NTLM?
+ 4.9 curl cannot authenticate to a server that requires NTLM?
4.10 My HTTP request using HEAD, PUT or DELETE does not work
4.11 Why do my HTTP range requests return the full document?
4.12 Why do I get "certificate verify failed" ?
@@ -136,7 +136,8 @@ FAQ
A client-side URL transfer library, supporting DICT, FILE, FTP, FTPS,
GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S,
- RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP.
+ RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS
+ and WSS.
libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading,
Kerberos, SPNEGO, HTTP form based upload, proxies, cookies, user+password
@@ -144,9 +145,9 @@ FAQ
libcurl is highly portable, it builds and works identically on numerous
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, macOS,
+ Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF, Android,
+ Minix, IBM TPF and more...
libcurl is free, thread-safe, IPv6 compatible, feature rich, well
supported and fast.
@@ -200,8 +201,8 @@ FAQ
curl is not a program for a single operating system. curl exists, compiles,
builds and runs under a wide range of operating systems, including all
- modern Unixes (and a bunch of older ones too), Windows, Amiga, BeOS, OS/2,
- OS X, QNX etc.
+ modern Unixes (and a bunch of older ones too), Windows, Amiga, OS/2, macOS,
+ QNX etc.
1.4 When will you make curl do XXXX ?
@@ -225,7 +226,7 @@ FAQ
implement it for you, that is not a 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
- effort in return. Simply go to the GitHub repo which resides at
+ effort in return. Simply go to the GitHub repository which resides at
https://github.com/curl/curl, fork the project, and create pull requests
with your proposed changes.
@@ -275,7 +276,7 @@ FAQ
We recognize that we will be living in parallel with curl.com and wish them
every success.
- 1.8 I have a problem whom do I mail?
+ 1.8 I have a problem, who do I mail?
Please do not mail any single individual unless you really need to. Keep
curl-related questions on a suitable mailing list. All available mailing
@@ -294,7 +295,7 @@ FAQ
issue private while we investigate, confirm it, work and validate a fix and
agree on a time schedule for publication etc. That way we produce a fix in a
timely manner before the flaw is announced to the world, reducing the impact
- the problem risk having on existing users.
+ the problem risks having on existing users.
Security issues can also be taking to the curl security team by emailing
security at curl.se (closed list of receivers, mails are not disclosed).
@@ -327,7 +328,7 @@ FAQ
In the cURL project we have decided not to attempt to keep this file updated
(or even present) since deciding what to add to a ca cert bundle is an
undertaking we have not been ready to accept, and the one we can get from
- Mozilla is perfectly fine so there's no need to duplicate that work.
+ Mozilla is perfectly fine so there is no need to duplicate that work.
Today, with many services performed over HTTPS, every operating system
should come with a default ca cert bundle that can be deemed somewhat
@@ -339,9 +340,9 @@ FAQ
Firefox (by running 'make ca-bundle), or by using our online service setup
for this purpose: https://curl.se/docs/caextract.html
- 1.12 I have a problem who can I chat with?
+ 1.12 I have a problem who, can I chat with?
- There's a bunch of friendly people hanging out in the #curl channel on the
+ There is a bunch of friendly people hanging out in the #curl channel on the
IRC network libera.chat. If you are polite and nice, chances are good that
you can get -- or provide -- help instantly.
@@ -421,7 +422,7 @@ FAQ
backends.
curl can be built to use one of the following SSL alternatives: OpenSSL,
- libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, MesaLink, Secure
+ libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, Secure
Transport (native iOS/OS X), Schannel (native Windows), GSKit (native IBM
i), BearSSL, or Rustls. They all have their pros and cons, and we try to
maintain a comparison of them here: https://curl.se/docs/ssl-compared.html
@@ -434,7 +435,7 @@ FAQ
3.1 curl: (1) SSL is disabled, https: not supported
- If you get this output when trying to get anything from a https:// server,
+ If you get this output when trying to get anything from an https:// server,
it means that the instance of curl/libcurl that you are using was built
without support for this protocol.
@@ -493,10 +494,10 @@ FAQ
To curl, all contents are alike. It does not matter how the page was
generated. It may be ASP, PHP, Perl, shell-script, SSI or plain HTML
- files. There's no difference to curl and it does not even know what kind of
+ files. There is no difference to curl and it does not even know what kind of
language that generated the page.
- See also item 3.14 regarding javascript.
+ See also item 3.14 regarding JavaScript.
3.7 Can I use curl to delete/rename a file through FTP?
@@ -564,8 +565,8 @@ FAQ
3.12 Why do FTP-specific features over HTTP proxy fail?
- Because when you use a HTTP proxy, the protocol spoken on the network will
- be HTTP, even if you specify a FTP URL. This effectively means that you
+ Because when you use an HTTP proxy, the protocol spoken on the network will
+ be HTTP, even if you specify an FTP URL. This effectively means that you
normally cannot use FTP-specific features such as FTP upload and FTP quote
etc.
@@ -588,7 +589,14 @@ FAQ
Exactly what kind of quotes and how to do this is entirely up to the shell
or command line interpreter that you are using. For most unix shells, you
can more or less pick either single (') or double (") quotes. For
- Windows/DOS prompts I believe you are forced to use double (") quotes.
+ Windows/DOS command prompts you must use double (") quotes, and if the
+ option string contains inner double quotes you can escape them with a
+ backslash.
+
+ For Windows powershell the arguments are not always passed on as expected
+ because curl is not a powershell script. You may or may not be able to use
+ single quotes. To escape inner double quotes seems to require a
+ backslash-backtick escape sequence and the outer quotes as double quotes.
Please study the documentation for your particular environment. Examples in
the curl docs will use a mix of both of these as shown above. You must
@@ -597,27 +605,27 @@ FAQ
Remember that curl works and runs on more operating systems than most single
individuals have ever tried.
- 3.14 Does curl support Javascript or PAC (automated proxy config)?
+ 3.14 Does curl support JavaScript or PAC (automated proxy config)?
- Many web pages do magic stuff using embedded Javascript. curl and libcurl
+ Many web pages do magic stuff using embedded JavaScript. curl and libcurl
have no built-in support for that, so it will be treated just like any other
contents.
- .pac files are a netscape invention and are sometimes used by organizations
+ .pac files are a Netscape invention and are sometimes used by organizations
to allow them to differentiate which proxies to use. The .pac contents is
- just a Javascript program that gets invoked by the browser and that returns
- the name of the proxy to connect to. Since curl does not support Javascript,
+ just a JavaScript program that gets invoked by the browser and that returns
+ the name of the proxy to connect to. Since curl does not support JavaScript,
it cannot support .pac proxy configuration either.
- 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
+ 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.
@@ -668,10 +676,10 @@ FAQ
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 directory of an FTP server?
There are two ways. The way defined in the RFC is to use an encoded slash
- in the first path part. List the "/tmp" dir like this:
+ in the first path part. List the "/tmp" directory like this:
curl ftp://ftp.sunet.se/%2ftmp/
@@ -737,7 +745,7 @@ FAQ
In normal circumstances, -X should hardly ever be used.
By default you use curl without explicitly saying which request method to
- use when the URL identifies a HTTP transfer. If you just pass in a URL like
+ use when the URL identifies an HTTP transfer. If you just pass in a URL like
"curl http://example.com" it will use GET. If you use -d or -F curl will use
POST, -I will cause a HEAD and -T will make it a PUT.
@@ -765,7 +773,7 @@ FAQ
4.2 Why do I get problems when I use & or % in the URL?
- In general unix shells, the & symbol is treated specially and when used, it
+ In general Unix shells, the & symbol is treated specially and when used, it
runs the specified command in the background. To safely send the & as a part
of a URL, you should quote the entire URL by using single (') or double (")
quotes around it. Similar problems can also occur on some shells with other
@@ -807,7 +815,7 @@ FAQ
By using the --fail option you can tell curl explicitly to not get any data
if the HTTP return code does not say success.
- 4.5 Why do I get return code XXX from a HTTP server?
+ 4.5 Why do I get return code XXX from an HTTP server?
RFC2616 clearly explains the return codes. This is a short transcript. Go
read the RFC for exact details:
@@ -829,7 +837,7 @@ FAQ
4.5.4 "404 Not Found"
The server has not found anything matching the Request-URI. No indication
- is given of whether the condition is temporary or permanent.
+ is given as to whether the condition is temporary or permanent.
4.5.5 "405 Method Not Allowed"
@@ -892,14 +900,11 @@ FAQ
If there is a bug, read the BUGS document first. Then report it as described
in there.
- 4.9 curl cannot authenticate to the server that requires NTLM?
+ 4.9 curl cannot authenticate to a server that requires NTLM?
NTLM support requires OpenSSL, GnuTLS, mbedTLS, NSS, Secure Transport, or
Microsoft Windows libraries at build-time to provide this functionality.
- NTLM is a Microsoft proprietary protocol. Proprietary formats are evil. You
- should not use such ones.
-
4.10 My HTTP request using HEAD, PUT or DELETE does not work
Many web servers allow or demand that the administrator configures the
@@ -925,7 +930,7 @@ FAQ
To completely disable the certificate verification, use -k. This does
however enable man-in-the-middle attacks and makes the transfer INSECURE.
- We strongly advice against doing this for more than experiments.
+ We strongly advise against doing this for more than experiments.
If you get this failure with a CA cert bundle installed and used, the
server's certificate might not be signed by one of the CA's in your CA
@@ -959,10 +964,10 @@ FAQ
curl supports HTTP redirects well (see item 3.8). Browsers generally support
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
+ Meta tags. You can write an 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
+ JavaScript. You can write a JavaScript program embedded in an HTML page that
redirects the browser to another given URL.
There is no way to make curl follow these redirects. You must either
@@ -978,7 +983,7 @@ FAQ
the control connection and will therefore immediately connect and try to
speak SSL. FTPS:// connections default to port 990.
- To use explicit FTPS, you use a FTP:// URL and the --ftp-ssl option (or one
+ To use explicit FTPS, you use an FTP:// URL and the --ftp-ssl option (or one
of its related flavors). This is the most common method, and the one
mandated by RFC4217. This kind of connection will then of course use the
standard FTP port 21 by default.
@@ -1196,7 +1201,7 @@ FAQ
dynamic import symbols. If you are using Visual Studio, you need to instead
add CURL_STATICLIB in the "Preprocessor Definitions" section.
- If you get linker error like "unknown symbol __imp__curl_easy_init ..." you
+ If you get a linker error like "unknown symbol __imp__curl_easy_init ..." you
have linked against the wrong (static) library. If you want to use the
libcurl.dll and import lib, you do not need any extra CFLAGS, but use one of
the import libraries below. These are the libraries produced by the various
@@ -1204,7 +1209,7 @@ FAQ
Target: static lib. import lib for libcurl*.dll.
-----------------------------------------------------------
- MingW: libcurl.a libcurldll.a
+ MinGW: libcurl.a libcurldll.a
MSVC (release): libcurl.lib libcurl_imp.lib
MSVC (debug): libcurld.lib libcurld_imp.lib
Borland: libcurl.lib libcurl_imp.lib
@@ -1212,7 +1217,7 @@ FAQ
5.8 libcurl.so.X: open failed: No such file or directory
This is an error message you might get when you try to run a program linked
- with a shared version of libcurl and your run-time linker (ld.so) could not
+ with a shared version of libcurl and your runtime linker (ld.so) could not
find the shared library named libcurl.so.X. (Where X is the number of the
current libcurl ABI, typically 3 or 4).
@@ -1221,13 +1226,13 @@ FAQ
They are usually:
* Add an option to the linker command line that specify the hard-coded path
- the run-time linker should check for the lib (usually -R)
+ the runtime linker should check for the lib (usually -R)
* Set an environment variable (LD_LIBRARY_PATH for example) where ld.so
should check for libs
* Adjust the system's config to check for libs in the directory where you have
- put the dir (like Linux's /etc/ld.so.conf)
+ put the library (like Linux's /etc/ld.so.conf)
'man ld.so' and 'man ld' will tell you more details
@@ -1325,15 +1330,16 @@ FAQ
to list the files.
The follow-up question tends to be how is a program supposed to parse the
- directory listing. How does it know what's a file and what's a dir and what's
- a symlink etc. If the FTP server supports the MLSD command then it will
- return data in a machine-readable format that can be parsed for type. The
- types are specified by RFC3659 section 7.5.1. If MLSD is not supported then
- you have to work with what you are given. The LIST output format is entirely
- at the server's own liking and the NLST output does not reveal any types and
- in many cases does not even include all the directory entries. Also, both LIST
- and NLST tend to hide unix-style hidden files (those that start with a dot)
- by default so you need to do "LIST -a" or similar to see them.
+ directory listing. How does it know what's a file and what's a directory and
+ what's a symlink etc. If the FTP server supports the MLSD command then it
+ will return data in a machine-readable format that can be parsed for type.
+ The types are specified by RFC3659 section 7.5.1. If MLSD is not supported
+ then you have to work with what you are given. The LIST output format is
+ entirely at the server's own liking and the NLST output does not reveal any
+ types and in many cases does not even include all the directory entries.
+ Also, both LIST and NLST tend to hide unix-style hidden files (those that
+ start with a dot) by default so you need to do "LIST -a" or similar to see
+ them.
Example - List only directories.
ftp.funet.fi supports MLSD and ftp.kernel.org does not:
@@ -1368,11 +1374,11 @@ FAQ
5.17 Can I write a server with libcurl?
No. libcurl offers no functions or building blocks to build any kind of
- internet protocol server. libcurl is only a client-side library. For server
+ Internet protocol server. libcurl is only a client-side library. For server
libraries, you need to continue your search elsewhere but there exist many
good open source ones out there for most protocols you could want a server
for. There are also really good stand-alone servers that have been tested
- and proven for many years. There's no need for you to reinvent them.
+ and proven for many years. There is no need for you to reinvent them.
5.18 Does libcurl use threads?
@@ -1505,7 +1511,7 @@ FAQ
8.1 Why does curl use C89?
- As with everything in curl, there's a history and we keep using what we have
+ As with everything in curl, there is a history and we keep using what we have
used before until someone brings up the subject and argues for and works on
changing it.
@@ -1535,5 +1541,5 @@ FAQ
stable, we will never risk anything by rewriting a lot of things in one go.
That said, we can certainly offer more and more optional backends written in
other languages, as long as those backends can be plugged in at build-time.
- Back-ends can be written in any language, but should probably provide APIs
+ Backends can be written in any language, but should probably provide APIs
usable from C to ease integration and transition.
diff --git a/docs/FEATURES.md b/docs/FEATURES.md
index a52d5da3a..52608c08e 100644
--- a/docs/FEATURES.md
+++ b/docs/FEATURES.md
@@ -7,7 +7,7 @@
- range "globbing" support: [0-13], {one,two,three}
- multiple file upload on a single command line
- custom maximum transfer rate
- - redirectable stderr
+ - redirect stderr
- parallel transfers
## libcurl
@@ -22,7 +22,7 @@
- "standard" proxy environment variables support
- compiles on win32 (reported builds on 70+ operating systems)
- selectable network interface for outgoing traffic
- - IPv6 support on unix and Windows
+ - IPv6 support on Unix and Windows
- happy eyeballs dual-stack connects
- persistent connections
- SOCKS 4 + 5 support, with or without local name resolving
@@ -31,7 +31,7 @@
- replaceable memory functions (malloc, free, realloc, etc)
- asynchronous name resolving (6)
- both a push and a pull style interface
- - international domain names (11)
+ - international domain names (10)
## HTTP
@@ -51,7 +51,7 @@
- maximum amount of redirects to follow
- custom HTTP request
- cookie get/send fully parsed
- - reads/writes the netscape cookie file format
+ - reads/writes the Netscape cookie file format
- custom headers (replace/remove internally generated headers)
- custom user-agent string
- custom referrer string
@@ -62,7 +62,7 @@
- retrieve file modification date
- Content-Encoding support for deflate and gzip
- "Transfer-Encoding: chunked" support in uploads
- - automatic data compression (12)
+ - automatic data compression (11)
## HTTPS (1)
@@ -78,7 +78,7 @@
- download
- authentication
- - Kerberos 5 (13)
+ - Kerberos 5 (12)
- active/passive using PORT, EPRT, PASV or EPSV
- single file size information (compare to HTTP HEAD)
- 'type=' URL support
@@ -174,7 +174,7 @@
## POP3S (1)
- implicit `pop3s://` support
- - explicit "STLS" usage to "upgrade" plain `pop3://` connections to use SSL
+ - explicit `STLS` usage to "upgrade" plain `pop3://` connections to use SSL
- via http-proxy
## IMAP
@@ -183,7 +183,7 @@
- SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9),
Kerberos 5 (4) and External.
- list the folders of a mailbox
- - select a mailbox with support for verifying the UIDVALIDITY
+ - select a mailbox with support for verifying the `UIDVALIDITY`
- fetch emails with support for specifying the UID and SECTION
- upload emails via the append command
- enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS,
@@ -198,7 +198,7 @@
## MQTT
- - Subscribe to and publish topics using url scheme `mqtt://broker/topic`
+ - Subscribe to and publish topics using URL scheme `mqtt://broker/topic`
## Footnotes
@@ -212,9 +212,8 @@
6. requires c-ares
7. requires libssh2, libssh or wolfSSH
8. requires libssh2 or libssh
- 9. requires OpenSSL, GnuTLS, mbedTLS, NSS, yassl, Secure Transport or SSPI
+ 9. requires OpenSSL, GnuTLS, mbedTLS, NSS, Secure Transport or SSPI
(native Windows)
- 10. -
- 11. requires libidn2 or Windows
- 12. requires libz, brotli and/or zstd
- 13. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)
+ 10. requires libidn2 or Windows
+ 11. requires libz, brotli and/or zstd
+ 12. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)
diff --git a/docs/GOVERNANCE.md b/docs/GOVERNANCE.md
index 08fe2a481..f45aaa24c 100644
--- a/docs/GOVERNANCE.md
+++ b/docs/GOVERNANCE.md
@@ -8,7 +8,7 @@ This project was started by and has to some extent been pushed forward over
the years with Daniel Stenberg as the driving force. It matches a standard
BDFL (Benevolent Dictator For Life) style project.
-This setup has been used due to convenience and the fact that is has worked
+This setup has been used due to convenience and the fact that it has worked
fine this far. It is not because someone thinks of it as a superior project
leadership model. It will also only continue working as long as Daniel manages
to listen in to what the project and the general user population wants and
@@ -45,7 +45,7 @@ non-profit organization that holds on to funds for us. This fund is then used
for paying the curl security bug bounties, to reimburse project related
expenses etc.
-Donations to the project can also come in form of server hosting, providing
+Donations to the project can also come in the form of server hosting, providing
services and paying for people to work on curl related code etc. Usually, such
donations are services paid for directly by the sponsors.
@@ -116,7 +116,7 @@ admin of all things curl related server stuff, but Björn Stenberg and Linus
Feltzing serve as backup admins for when Daniel is gone or unable.
The primary server is paid for by Haxx. The machine is physically located in a
-server bunker in Stockholm Sweden, operated by the company Portlane.
+server bunker in Stockholm Sweden, operated by the company Glesys.
The website contents are served to the web via Fastly and Daniel is the
primary curl contact with Fastly.
@@ -152,7 +152,7 @@ within the area of personal expertise and experience.
### Merge advice
-When you are merging patches/PRs...
+When you are merging patches/pull requests...
- make sure the commit messages follow our template
- squash patch sets into a few logical commits even if the PR did not, if
diff --git a/docs/HELP-US.md b/docs/HELP-US.md
index 439f72765..eabf80810 100644
--- a/docs/HELP-US.md
+++ b/docs/HELP-US.md
@@ -84,4 +84,4 @@ the specific implementation. Either way is fine.
We offer [guidelines](https://curl.se/dev/contribute.html) that are
suitable to be familiar with before you decide to contribute to curl. If
you are used to open source development, you will probably not find many
-surprises in there.
+surprises there.
diff --git a/docs/HISTORY.md b/docs/HISTORY.md
index 2beaa2579..5a142b4b2 100644
--- a/docs/HISTORY.md
+++ b/docs/HISTORY.md
@@ -24,7 +24,7 @@ new maintainer of the project.
HttpGet 0.3 was released in January 1997 and now it accepted HTTP URLs on the
command line.
-HttpGet 1.0 was released on April 8th 1997 with brand new HTTP proxy support.
+HttpGet 1.0 was released on April 8 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
@@ -130,7 +130,7 @@ August: The curl website gets 8000 visits weekly. Curl Corporation contacted
Daniel to discuss "the name issue". After Daniel's reply, they have never
since got back in touch again.
-September: libcurl 7.9 introduces cookie jar and curl_formadd(). During the
+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 many whistles.
@@ -145,7 +145,7 @@ June: the curl website 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.
-To estimate number of users of the curl tool or libcurl library is next to
+To estimate the number of users of the curl tool or libcurl library is next to
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.
@@ -179,16 +179,16 @@ January: curl 7.11.0 introduced large file support.
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
+`curl_formparse()` function
August: Curl and libcurl 7.12.1
Public curl release number: 82
- Releases counted from the very beginning: 109
+ Releases counted from the beginning: 109
Available command line options: 96
Available curl_easy_setopt() options: 120
Number of public functions in libcurl: 36
- Amount of public website mirrors: 12
+ Amount of public website mirrors: 12
Number of known libcurl bindings: 26
2005
@@ -288,7 +288,7 @@ April: added the cyassl backend (later renamed to WolfSSL)
July: Added support for Schannel (native Windows TLS backend) and Darwin SSL
(Native Mac OS X and iOS TLS backend).
- Supports metalink
+ Supports Metalink
October: SSH-agent support.
@@ -406,9 +406,27 @@ April: added the cyassl backend (later renamed to WolfSSL)
November: the website moves to curl.se. The website serves 10TB data monthly.
+ December: alt-svc support
+
2021
----
- February 3: curl 7.75.0 ships with support for Hyper is a HTTP backend
+ February 3: curl 7.75.0 ships with support for Hyper as an HTTP backend
March 31: curl 7.76.0 ships with support for rustls
+
+ July: HSTS is supported
+
+2022
+----
+
+ March: added --json, removed mesalink support
+
+ Public curl releases: 206
+ Command line options: 245
+ curl_easy_setopt() options: 295
+ Public functions in libcurl: 86
+ Contributors: 2601
+
+ The curl.se website serves 16,500 GB/month over 462M requests, the
+ official docker image has been pulled 4,098,015,431 times.
diff --git a/docs/HSTS.md b/docs/HSTS.md
index f63cfe323..e54102493 100644
--- a/docs/HSTS.md
+++ b/docs/HSTS.md
@@ -5,7 +5,7 @@ HTTP Strict-Transport-Security. Added as experimental in curl
## Standard
-[HTTP Strict Transport Security](https://tools.ietf.org/html/rfc6797)
+[HTTP Strict Transport Security](https://datatracker.ietf.org/doc/html/rfc6797)
## Behavior
@@ -19,7 +19,7 @@ HTTP-only requests to a host name present in the cache will get internally
- `CURLOPT_HSTS` - specify file name where to store the HSTS cache on close
(and possibly read from at startup)
-## curl cmdline options
+## curl command line options
- `--hsts [filename]` - enable HSTS, use the file as HSTS cache. If filename
is `""` (no length) then no file will be used, only in-memory cache.
@@ -32,13 +32,11 @@ For each hsts entry:
[host name] "YYYYMMDD HH:MM:SS"
-The `[host name]` is dot-prefixed if it is a includeSubDomain.
+The `[host name]` is dot-prefixed if it includes subdomains.
The time stamp is when the entry expires.
-I considered using wget's file format for the HSTS cache. However, they store the time stamp as the epoch (number of seconds since 1970) and I strongly disagree with using that format. Instead I opted to use a format similar to the curl alt-svc cache file format.
-
## Possible future additions
- - `CURLOPT_HSTS_PRELOAD` - provide a set of preloaded HSTS host names
+ - `CURLOPT_HSTS_PRELOAD` - provide a set of HSTS host names to load first
- ability to save to something else than a file
diff --git a/docs/HTTP-COOKIES.md b/docs/HTTP-COOKIES.md
index c7c116b10..939e9fab2 100644
--- a/docs/HTTP-COOKIES.md
+++ b/docs/HTTP-COOKIES.md
@@ -2,7 +2,7 @@
## Cookie overview
- Cookies are `name=contents` pairs that a HTTP server tells the client to
+ Cookies are `name=contents` pairs that an HTTP server tells the client to
hold and then the client sends back those to the server on subsequent
requests to the same domains and paths for which the cookies were set.
@@ -20,12 +20,12 @@
In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
published and details how cookies work within HTTP. In 2016, an update which
added support for prefixes was
- [proposed](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00),
+ [proposed](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00),
and in 2017, another update was
- [drafted](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01)
+ [drafted](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-alone-01)
to deprecate modification of 'secure' cookies from non-secure origins. Both
of these drafts have been incorporated into a proposal to
- [replace](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02)
+ [replace](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-02)
RFC6265. Cookie prefixes and secure cookie modification protection has been
implemented by curl.
@@ -36,12 +36,13 @@
sharing the cookies with browsers, only to see browsers move away from that
format. Modern browsers no longer use it, while curl still does.
- The netscape cookie file format stores one cookie per physical line in the
+ The Netscape cookie file format stores one cookie per physical line in the
file with a bunch of associated meta data, each field separated with
- TAB. That file is called the cookiejar in curl terminology.
+ TAB. That file is called the cookie jar in curl terminology.
- When libcurl saves a cookiejar, it creates a file header of its own in which
- there is a URL mention that will link to the web version of this document.
+ When libcurl saves a cookie jar, it creates a file header of its own in
+ which there is a URL mention that will link to the web version of this
+ document.
## Cookie file format
@@ -74,8 +75,8 @@
`-b, --cookie`
tell curl a file to read cookies from and start the cookie engine, or if it
- is not a file it will pass on the given string. -b name=var works and so does
- -b cookiefile.
+ is not a file it will pass on the given string. `-b name=var` works and so
+ does `-b cookiefile`.
`-j, --junk-session-cookies`
@@ -106,28 +107,33 @@
`CURLOPT_COOKIEJAR`
Tell libcurl to activate the cookie engine, and when the easy handle is
- closed save all known cookies to the given cookiejar file. Write-only.
+ closed save all known cookies to the given cookie jar file. Write-only.
`CURLOPT_COOKIELIST`
Provide detailed information about a single cookie to add to the internal
- storage of cookies. Pass in the cookie as a HTTP header with all the details
- set, or pass in a line from a netscape cookie file. This option can also be
- used to flush the cookies etc.
+ storage of cookies. Pass in the cookie as an HTTP header with all the
+ details set, or pass in a line from a Netscape cookie file. This option can
+ also be used to flush the cookies etc.
+
+ `CURLOPT_COOKIESESSION`
+
+ Tell libcurl to ignore all cookies it is about to load that are session
+ cookies.
`CURLINFO_COOKIELIST`
Extract cookie information from the internal cookie storage as a linked
list.
-## Cookies with javascript
+## Cookies with JavaScript
- These days a lot of the web is built up by javascript. The webbrowser loads
- complete programs that render the page you see. These javascript programs
+ These days a lot of the web is built up by JavaScript. The web browser loads
+ complete programs that render the page you see. These JavaScript programs
can also set and access cookies.
Since curl and libcurl are plain HTTP clients without any knowledge of or
- capability to handle javascript, such cookies will not be detected or used.
+ capability to handle JavaScript, such cookies will not be detected or used.
Often, if you want to mimic what a browser does on such websites, you can
record web browser HTTP traffic when using such a site and then repeat the
diff --git a/docs/HTTP2.md b/docs/HTTP2.md
index 27af3129c..a15bb3108 100644
--- a/docs/HTTP2.md
+++ b/docs/HTTP2.md
@@ -35,35 +35,16 @@ Over an https:// URL
--------------------
If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will use
-ALPN (or NPN) to negotiate which protocol to continue with. Possibly introduce
-an option that will cause libcurl to fail if not possible to use HTTP/2.
+ALPN to negotiate which protocol to continue with. Possibly introduce an
+option that will cause libcurl to fail if not possible to use HTTP/2.
`CURL_HTTP_VERSION_2TLS` was added in 7.47.0 as a way to ask libcurl to prefer
HTTP/2 for HTTPS but stick to 1.1 by default for plain old HTTP connections.
-ALPN is the TLS extension that HTTP/2 is expected to use. The NPN extension is
-for a similar purpose, was made prior to ALPN and is used for SPDY so early
-HTTP/2 servers are implemented using NPN before ALPN support is widespread.
+ALPN is the TLS extension that HTTP/2 is expected to use.
-`CURLOPT_SSL_ENABLE_ALPN` and `CURLOPT_SSL_ENABLE_NPN` are offered to allow
-applications to explicitly disable ALPN or NPN.
-
-SSL libs
---------
-
-The challenge is the ALPN and NPN support and all our different SSL
-backends. You may need a fairly updated SSL library version for it to provide
-the necessary TLS features. Right now we support:
-
- - OpenSSL: ALPN and NPN
- - libressl: ALPN and NPN
- - BoringSSL: ALPN and NPN
- - NSS: ALPN and NPN
- - GnuTLS: ALPN
- - mbedTLS: ALPN
- - Schannel: ALPN
- - wolfSSL: ALPN
- - Secure Transport: ALPN
+`CURLOPT_SSL_ENABLE_ALPN` is offered to allow applications to explicitly
+disable ALPN.
Multiplexing
------------
@@ -77,13 +58,13 @@ To take advantage of multiplexing, you need to use the multi interface and set
attempt to re-use existing HTTP/2 connections and just add a new stream over
that when doing subsequent parallel requests.
-While libcurl sets up a connection to a HTTP server there is a period during
-which it does not know if it can pipeline or do multiplexing and if you add new
-transfers in that period, libcurl will default to start new connections for
-those transfers. With the new option `CURLOPT_PIPEWAIT` (added in 7.43.0), you
-can ask that a transfer should rather wait and see in case there's a
+While libcurl sets up a connection to an HTTP server there is a period during
+which it does not know if it can pipeline or do multiplexing and if you add
+new transfers in that period, libcurl will default to start new connections
+for those transfers. With the new option `CURLOPT_PIPEWAIT` (added in 7.43.0),
+you can ask that a transfer should rather wait and see in case there's a
connection for the same host in progress that might end up being possible to
-multiplex on. It favours keeping the number of connections low to the cost of
+multiplex on. It favors keeping the number of connections low to the cost of
slightly longer time to first byte transferred.
Applications
@@ -118,4 +99,4 @@ can use that hint to create a new connection asynchronously. For libcurl, we
may introduce a way to bring such clues to the application and/or let a
subsequent request use the alternate route automatically.
-[Detailed in RFC 7838](https://tools.ietf.org/html/rfc7838)
+[Detailed in RFC 7838](https://datatracker.ietf.org/doc/html/rfc7838)
diff --git a/docs/HTTP3.md b/docs/HTTP3.md
index 3c713b045..26141bb75 100644
--- a/docs/HTTP3.md
+++ b/docs/HTTP3.md
@@ -5,10 +5,6 @@
[HTTP/3 Explained](https://http3-explained.haxx.se/en/) - the online free
book describing the protocols involved.
-[QUIC implementation](https://github.com/curl/curl/wiki/QUIC-implementation) -
-the wiki page describing the plan for how to support QUIC and HTTP/3 in curl
-and libcurl.
-
[quicwg.org](https://quicwg.org/) - home of the official protocol drafts
## QUIC libraries
@@ -19,13 +15,15 @@ QUIC libraries we are experimenting with:
[quiche](https://github.com/cloudflare/quiche)
+[msquic](https://github.com/microsoft/msquic) & [msh3](https://github.com/nibanks/msh3)
+
## Experimental
HTTP/3 and QUIC support in curl is considered **EXPERIMENTAL** until further
notice. It needs to be enabled at build-time.
Further development and tweaking of the HTTP/3 support in curl will happen in
-in the master branch using pull-requests, just like ordinary changes.
+the master branch using pull-requests, just like ordinary changes.
# ngtcp2 version
@@ -108,7 +106,48 @@ Build curl
% git clone https://github.com/curl/curl
% cd curl
% autoreconf -fi
- % ./configure --without-openssl --with-gnutls=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
+ % ./configure --with-gnutls=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
+ % make
+ % make install
+
+## Build with wolfSSL
+
+Build wolfSSL
+
+ % git clone https://github.com/wolfSSL/wolfssl.git
+ % cd wolfssl
+ % autoreconf -fi
+ % ./configure --prefix=<somewhere1> --enable-quic --enable-session-ticket --enable-earlydata --enable-psk --enable-harden --enable-altcertchains
+ % make
+ % make install
+
+Build nghttp3
+
+ % cd ..
+ % git clone https://github.com/ngtcp2/nghttp3
+ % cd nghttp3
+ % autoreconf -fi
+ % ./configure --prefix=<somewhere2> --enable-lib-only
+ % make
+ % make install
+
+Build ngtcp2 (once https://github.com/ngtcp2/ngtcp2/pull/505 is merged)
+
+ % cd ..
+ % git clone https://github.com/ngtcp2/ngtcp2
+ % cd ngtcp2
+ % autoreconf -fi
+ % ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-wolfssl
+ % make
+ % make install
+
+Build curl
+
+ % cd ..
+ % git clone https://github.com/curl/curl
+ % cd curl
+ % autoreconf -fi
+ % ./configure --with-wolfssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
% make
% make install
@@ -136,6 +175,60 @@ Build curl:
If `make install` results in `Permission denied` error, you will need to prepend it with `sudo`.
+# msh3 (msquic) version
+
+## Build Linux (with quictls fork of OpenSSL)
+
+Build msh3:
+
+ % git clone -b v0.4.0 --depth 1 --recursive https://github.com/nibanks/msh3
+ % cd msh3 && mkdir build && cd build
+ % cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
+ % cmake --build .
+ % cmake --install .
+
+Build curl:
+
+ % git clone https://github.com/curl/curl
+ % cd curl
+ % autoreconf -fi
+ % ./configure LDFLAGS="-Wl,-rpath,/usr/local/lib" --with-msh3=/usr/local --with-openssl
+ % make
+ % make install
+
+Run from `/usr/local/bin/curl`.
+
+## Build Windows
+
+Build msh3:
+
+ % git clone -b v0.4.0 --depth 1 --recursive https://github.com/nibanks/msh3
+ % cd msh3 && mkdir build && cd build
+ % cmake -G 'Visual Studio 17 2022' -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
+ % cmake --build . --config Release
+ % cmake --install . --config Release
+
+**Note** - On Windows, Schannel will be used for TLS support by default. If
+you with to use (the quictls fork of) OpenSSL, specify the `-DQUIC_TLS=openssl`
+option to the generate command above. Also note that OpenSSL brings with it an
+additional set of build dependencies not specified here.
+
+Build curl (in [Visual Studio Command prompt](../winbuild/README.md#open-a-command-prompt)):
+
+ % git clone https://github.com/curl/curl
+ % cd curl/winbuild
+ % nmake /f Makefile.vc mode=dll WITH_MSH3=dll MSH3_PATH="C:/Program Files/msh3" MACHINE=x64
+
+**Note** - If you encounter a build error with `tool_hugehelp.c` being missing,
+rename `tool_hugehelp.c.cvs` in the same directory to `tool_hugehelp.c` and
+then run `nmake` again.
+
+Run in the `C:/Program Files/msh3/lib` directory, copy `curl.exe` to that
+directory, or copy `msquic.dll` and `msh3.dll` from that directory to the
+`curl.exe` directory. For example:
+
+ % C:\Program Files\msh3\lib> F:\curl\builds\libcurl-vc-x64-release-dll-ipv6-sspi-schannel-msh3\bin\curl.exe --http3 https://www.google.com
+
# `--http3`
Use HTTP/3 directly:
@@ -157,18 +250,18 @@ Check out the [list of known HTTP3 bugs](https://curl.se/docs/knownbugs.html#HTT
This is not advice on how to run anything in production. This is for
development and experimenting.
-## Preqreqs
+## Prerequisite(s)
An existing local HTTP/1.1 server that hosts files. Preferably also a few huge
-ones. You can easily create huge local files like `truncate -s=8G 8GB` - they
-are huge but do not occupy that much space on disk since they're just a big
-hole.
+ones. You can easily create huge local files like `truncate -s=8G 8GB` - they
+are huge but do not occupy that much space on disk since they are just big
+holes.
In my Debian setup I just installed **apache2**. It runs on port 80 and has a
document root in `/var/www/html`. I can get the 8GB file from it with `curl
localhost/8GB -o dev/null`
-In this description we setup and run a HTTP/3 reverse-proxy in front of the
+In this description we setup and run an HTTP/3 reverse-proxy in front of the
HTTP/1 server.
## Setup
@@ -198,26 +291,21 @@ that exists in curl's test dir.
### Caddy
-[Install caddy](https://caddyserver.com/docs/install), you can even put the
-single binary in a separate directory if you prefer.
+[Install Caddy](https://caddyserver.com/docs/install). For easiest use, the binary
+should be either in your PATH or your current directory.
-In the same directory you put caddy, create a `Caddyfile` with the following
-content to run a HTTP/3 reverse-proxy on port 7443:
+Create a `Caddyfile` with the following content:
~~~
-{
- auto_https disable_redirects
- servers :7443 {
- protocol {
- experimental_http3
- }
- }
-}
-
localhost:7443 {
- reverse_proxy localhost:80
+ respond "Hello, world! You're using {http.request.proto}"
}
~~~
-Then run caddy:
+Then run Caddy:
./caddy start
+
+Making requests to `https://localhost:7443` should tell you which protocol is being used.
+
+You can change the hard-coded response to something more useful by replacing `respond`
+with `reverse_proxy` or `file_server`, for example: `reverse_proxy localhost:80`
diff --git a/docs/HYPER.md b/docs/HYPER.md
index 0ca1ce1d4..ad23a9039 100644
--- a/docs/HYPER.md
+++ b/docs/HYPER.md
@@ -18,17 +18,22 @@ The C API for Hyper is brand new and is still under development.
## build curl with hyper
-Build hyper and enable the C API:
+Since March 3 2022, hyper needs the nightly rustc to build, which you may need
+to install first with:
+
+ % rustup toolchain install nightly
+
+Then build hyper and enable its C API like this:
% git clone https://github.com/hyperium/hyper
% cd hyper
- % RUSTFLAGS="--cfg hyper_unstable_ffi" cargo build --features client,http1,http2,ffi
+ % RUSTFLAGS="--cfg hyper_unstable_ffi" cargo +nightly rustc --features client,http1,http2,ffi -Z unstable-options --crate-type cdylib
Build curl to use hyper's C API:
% git clone https://github.com/curl/curl
% cd curl
- % ./buildconf
+ % autoreconf -fi
% ./configure --with-hyper=<hyper dir>
% make
@@ -51,8 +56,9 @@ The hyper backend does not support
- `CURLOPT_IGNORE_CONTENT_LENGTH`
- `--raw` and disabling `CURLOPT_HTTP_TRANSFER_DECODING`
- RTSP
-- hyper is much stricter about what HTTP header contents it allow in requests
+- hyper is much stricter about what HTTP header contents it allows
- HTTP/0.9
+- HTTP/2 upgrade using HTTP:// URLs. Aka 'h2c'
## Remaining issues
diff --git a/docs/INSTALL.md b/docs/INSTALL.md
index 6079123ba..801ec44e8 100644
--- a/docs/INSTALL.md
+++ b/docs/INSTALL.md
@@ -17,7 +17,9 @@ You can download and install curl and libcurl using the [vcpkg](https://github.c
./vcpkg integrate install
vcpkg install curl[tool]
-The curl port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
+The curl port in vcpkg is kept up to date by Microsoft team members and
+community contributors. If the version is out of date, please [create an issue
+or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
## Building from git
@@ -84,9 +86,9 @@ work:
CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" ./configure
-If you have shared SSL libs installed in a directory where your run-time
+If you have shared SSL libs installed in a directory where your runtime
linker does not find them (which usually causes configure failures), you can
-provide this option to gcc to set a hard-coded path to the run-time linker:
+provide this option to gcc to set a hard-coded path to the runtime linker:
LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure --with-openssl
@@ -111,23 +113,22 @@ want to alter it, you can select how to deal with each individual library.
## Select TLS backend
-These options are provided to select TLS backend to use.
+These options are provided to select the TLS backend to use.
- AmiSSL: `--with-amissl`
- BearSSL: `--with-bearssl`
- GnuTLS: `--with-gnutls`.
- mbedTLS: `--with-mbedtls`
- - MesaLink: `--with-mesalink`
- NSS: `--with-nss`
- OpenSSL: `--with-openssl` (also for BoringSSL and libressl)
- rustls: `--with-rustls`
- - schannel: `--with-schannel`
- - secure transport: `--with-secure-transport`
+ - Schannel: `--with-schannel`
+ - Secure Transport: `--with-secure-transport`
- wolfSSL: `--with-wolfssl`
# Windows
-## Building Windows DLLs and C run-time (CRT) linkage issues
+## Building Windows DLLs and C runtime (CRT) linkage issues
As a general rule, building a DLL with static CRT linkage is highly
discouraged, and intermixing CRTs in the same app is something to avoid at
@@ -141,16 +142,16 @@ These options are provided to select TLS backend to use.
- [Run-Time Library Compiler Options](https://docs.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library)
- [Potential Errors Passing CRT Objects Across DLL Boundaries](https://docs.microsoft.com/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries)
-If your app is misbehaving in some strange way, or it is suffering from
-memory corruption, before asking for further help, please try first to
-rebuild every single library your app uses as well as your app using the
-debug multithreaded dynamic C runtime.
+If your app is misbehaving in some strange way, or it is suffering from memory
+corruption, before asking for further help, please try first to rebuild every
+single library your app uses as well as your app using the debug
+multi-threaded dynamic C runtime.
If you get linkage errors read section 5.7 of the FAQ document.
-## MingW32
+## MinGW32
-Make sure that MinGW32's bin dir is in the search path, for example:
+Make sure that MinGW32's bin directory is in the search path, for example:
```cmd
set PATH=c:\mingw32\bin;%PATH%
@@ -171,31 +172,34 @@ adjust as necessary. It is also possible to override these paths with
environment variables, for example:
```cmd
-set ZLIB_PATH=c:\zlib-1.2.8
-set OPENSSL_PATH=c:\openssl-1.0.2c
-set LIBSSH2_PATH=c:\libssh2-1.6.0
+set ZLIB_PATH=c:\zlib-1.2.12
+set OPENSSL_PATH=c:\openssl-3.0.5
+set LIBSSH2_PATH=c:\libssh2-1.10.0
```
-It is also possible to build with other LDAP SDKs than MS LDAP; currently
-it is possible to build with native Win32 OpenLDAP, or with the Novell CLDAP
-SDK. If you want to use these you need to set these vars:
+It is also possible to build with other LDAP installations than MS LDAP;
+currently it is possible to build with native Win32 OpenLDAP, or with the
+*Novell CLDAP* SDK. If you want to use these you need to set these vars:
```cmd
-set LDAP_SDK=c:\openldap
-set USE_LDAP_OPENLDAP=1
+set CPPFLAGS=-Ic:/openldap/include -DCURL_HAS_OPENLDAP_LDAPSDK
+set LDFLAGS=-Lc:/openldap/lib
+set LIBS=-lldap -llber
```
or for using the Novell SDK:
```cmd
-set USE_LDAP_NOVELL=1
+set CPPFLAGS=-Ic:/openldapsdk/inc -DCURL_HAS_NOVELL_LDAPSDK
+set LDFLAGS=-Lc:/openldapsdk/lib/mscvc
+set LIBS=-lldapsdk -lldapssl -lldapx
```
If you want to enable LDAPS support then set LDAPS=1.
## Cygwin
-Almost identical to the unix installation. Run the configure script in the
+Almost identical to the Unix installation. Run the configure script in the
curl source tree root with `sh configure`. Make sure you have the `sh`
executable in `/bin/` or you will see the configure fail toward the end.
@@ -208,7 +212,7 @@ environment, therefore, you cannot use the various disable-protocol options of
the configure utility on this platform.
You can use specific defines to disable specific protocols and features. See
-[CURL-DISABLE.md](CURL-DISABLE.md) for the full list.
+[CURL-DISABLE](CURL-DISABLE.md) for the full list.
If you want to set any of these defines you have the following options:
@@ -218,25 +222,23 @@ If you want to set any of these defines you have the following options:
- 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.
+under "Project -> Properties -> Configuration Properties -> C/C++ ->
+Preprocessor".
## Using BSD-style lwIP instead of Winsock TCP/IP stack in Win32 builds
In order to compile libcurl and curl using BSD-style lwIP TCP/IP stack it is
-necessary to make definition of preprocessor symbol `USE_LWIPSOCK` visible to
-libcurl and curl compilation processes. To set this definition you have the
-following alternatives:
+necessary to make the definition of the preprocessor symbol `USE_LWIPSOCK`
+visible to libcurl and curl compilation processes. To set this definition you
+have the following alternatives:
- Modify `lib/config-win32.h` and `src/config-win32.h`
- Modify `winbuild/Makefile.vc`
- 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.
+under "Project -> Properties -> Configuration Properties -> C/C++ ->
+Preprocessor".
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 includes
@@ -244,13 +246,11 @@ lwIP header file `<lwip/opt.h>` (or another lwIP header that includes this)
before including any libcurl header. Your program does not need the
`USE_LWIPSOCK` preprocessor definition which is for libcurl internals only.
-Compilation has been verified with [lwIP
-1.4.0](https://download.savannah.gnu.org/releases/lwip/lwip-1.4.0.zip) and
-[contrib-1.4.0](https://download.savannah.gnu.org/releases/lwip/contrib-1.4.0.zip).
+Compilation has been verified with lwIP 1.4.0.
This BSD-style lwIP TCP/IP stack support must be considered experimental given
that it has been verified that lwIP 1.4.0 still needs some polish, and libcurl
-might yet need some additional adjustment, caveat emptor.
+might yet need some additional adjustment.
## Important static libcurl usage note
@@ -270,8 +270,7 @@ Windows you should choose another SSL backend such as OpenSSL.
On modern 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-secure-transport`. (It
-is not necessary to use the option `--without-openssl`.)
+Transport for SSL/TLS, use the configure option `--with-secure-transport`.
When Secure Transport is in use, the curl options `--cacert` and `--capath`
and their libcurl equivalents, will be ignored, because Secure Transport uses
@@ -324,11 +323,12 @@ make -j8
make install
```
-In all above, the built libraries and executables can be found in `artifacts` folder.
+In all above, the built libraries and executables can be found in the
+`artifacts` folder.
# Android
-When building curl for Android it's recommended to use a Linux environment
+When building curl for Android it's recommended to use a Linux/macOS environment
since using curl's `configure` script is the easiest way to build curl
for Android. Before you can build curl for Android, you need to install the
Android NDK first. This can be done using the SDK Manager that is part of
@@ -338,16 +338,16 @@ launching `configure`. On macOS, those variables could look like this to compile
for `aarch64` and API level 29:
```bash
-export NDK=~/Library/Android/sdk/ndk/20.1.5948944
-export HOST_TAG=darwin-x86_64
-export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG
-export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
-export AS=$TOOLCHAIN/bin/aarch64-linux-android-as
-export CC=$TOOLCHAIN/bin/aarch64-linux-android29-clang
-export CXX=$TOOLCHAIN/bin/aarch64-linux-android29-clang++
-export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld
-export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
-export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip
+export ANDROID_NDK_HOME=~/Library/Android/sdk/ndk/25.1.8937393 # Point into your NDK.
+export HOST_TAG=darwin-x86_64 # Same tag for Apple Silicon. Other OS values here: https://developer.android.com/ndk/guides/other_build_systems#overview
+export TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$HOST_TAG
+export AR=$TOOLCHAIN/bin/llvm-ar
+export AS=$TOOLCHAIN/bin/llvm-as
+export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
+export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+export LD=$TOOLCHAIN/bin/ld
+export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
+export STRIP=$TOOLCHAIN/bin/llvm-strip
```
When building on Linux or targeting other API levels or architectures, you need
@@ -363,11 +363,10 @@ OpenSSL, follow the OpenSSL build instructions and then install `libssl.a` and
`$TOOLCHAIN/sysroot/usr/include`. Now you can build curl for Android using
OpenSSL like this:
- ./configure --host aarch64-linux-android --with-pic --disable-shared --with-openssl="$TOOLCHAIN/sysroot/usr"
-
-Note, however, that you must target at least Android M (API level 23) or `configure`
-will not be able to detect OpenSSL since `stderr` (and the like) were not defined
-before Android M.
+```bash
+LIBS="-lssl -lcrypto -lc++" # For OpenSSL/BoringSSL. In general, you'll need to the SSL/TLS layer's transtive dependencies if you're linking statically.
+./configure --host aarch64-linux-android --with-pic --disable-shared --with-openssl="$TOOLCHAIN/sysroot/usr"
+```
# IBM i
@@ -385,12 +384,12 @@ For IBM i (formerly OS/400), you can use curl in two different ways:
There are some additional limitations and quirks with curl on this platform;
they affect both environments.
-## Multithreading notes
+## Multi-threading notes
By default, jobs in IBM i will not start with threading enabled. (Exceptions
include interactive PASE sessions started by `QP2TERM` or SSH.) If you use
-curl in an environment without threading when options like async DNS were
-enabled, you will get messages like:
+curl in an environment without threading when options like asynchronous DNS
+were enabled, you will get messages like:
```
getaddrinfo() thread failed to start
@@ -410,9 +409,9 @@ Download and unpack the curl package.
Set environment variables to point to the cross-compile toolchain and call
configure with any options you need. Be sure and specify the `--host` and
-`--build` parameters at configuration time. The following script is an
-example of cross-compiling for the IBM 405GP PowerPC processor using the
-toolchain from MonteVista for Hardhat Linux.
+`--build` parameters at configuration time. The following script is an example
+of cross-compiling for the IBM 405GP PowerPC processor using the toolchain on
+Linux.
```bash
#! /bin/sh
@@ -464,7 +463,7 @@ know your application is not going to need. Besides specifying the
use, here are some other flags that can reduce the size of the library by
disabling support for some feature:
- - `--disable-alt-svc` (HTTP Alt-Srv)
+ - `--disable-alt-svc` (HTTP Alt-Svc)
- `--disable-ares` (the C-ARES DNS library)
- `--disable-cookies` (HTTP cookies)
- `--disable-crypto-auth` (cryptographic authentication)
@@ -481,8 +480,8 @@ disabling support for some feature:
- `--disable-ntlm-wb` (NTLM WinBind)
- `--disable-progress-meter` (graphical progress meter in library)
- `--disable-proxy` (HTTP and SOCKS proxies)
- - `--disable-pthreads` (multithreading)
- - `--disable-socketpair` (socketpair for async name resolving)
+ - `--disable-pthreads` (multi-threading)
+ - `--disable-socketpair` (socketpair for asynchronous name resolving)
- `--disable-threaded-resolver` (threaded name resolver)
- `--disable-tls-srp` (Secure Remote Password authentication for TLS)
- `--disable-unix-sockets` (UNIX sockets)
@@ -525,11 +524,11 @@ the `--disable` statements suggested above. Use will cause tests relying on
those features to fail. The test harness can be manually forced to skip the
relevant tests by specifying certain key words on the `runtests.pl` command
line. Following is a list of appropriate key words for those configure options
-that aren't automatically detected:
+that are not automatically detected:
- `--disable-cookies` !cookies
- - `--disable-dateparse` !RETRY-AFTER !CURLOPT_TIMECONDITION !CURLINFO_FILETIME !If-Modified-Since !getdate !-z
- - `--disable-libcurl-option` !--libcurl
+ - `--disable-dateparse` !RETRY-AFTER !`CURLOPT_TIMECONDITION` !`CURLINFO_FILETIME` !`If-Modified-Since` !`curl_getdate` !`-z`
+ - `--disable-libcurl-option` !`--libcurl`
- `--disable-verbose` !verbose\ logs
# PORTS
diff --git a/docs/INTERNALS.md b/docs/INTERNALS.md
index dbae5a223..30cce8c98 100644
--- a/docs/INTERNALS.md
+++ b/docs/INTERNALS.md
@@ -1,77 +1,10 @@
-curl internals
-==============
+# curl internals
- - [Intro](#intro)
- - [git](#git)
- - [Portability](#Portability)
- - [Windows vs Unix](#winvsunix)
- - [Library](#Library)
- - [`Curl_connect`](#Curl_connect)
- - [`multi_do`](#multi_do)
- - [`Curl_readwrite`](#Curl_readwrite)
- - [`multi_done`](#multi_done)
- - [`Curl_disconnect`](#Curl_disconnect)
- - [HTTP(S)](#http)
- - [FTP](#ftp)
- - [Kerberos](#kerberos)
- - [TELNET](#telnet)
- - [FILE](#file)
- - [SMB](#smb)
- - [LDAP](#ldap)
- - [Email](#email)
- - [General](#general)
- - [Persistent Connections](#persistent)
- - [multi interface/non-blocking](#multi)
- - [SSL libraries](#ssl)
- - [Library Symbols](#symbols)
- - [Return Codes and Informationals](#returncodes)
- - [AP/ABI](#abi)
- - [Client](#client)
- - [Memory Debugging](#memorydebug)
- - [Test Suite](#test)
- - [Asynchronous name resolves](#asyncdns)
- - [c-ares](#cares)
- - [`curl_off_t`](#curl_off_t)
- - [curlx](#curlx)
- - [Content Encoding](#contentencoding)
- - [`hostip.c` explained](#hostip)
- - [Track Down Memory Leaks](#memoryleak)
- - [`multi_socket`](#multi_socket)
- - [Structs in libcurl](#structs)
- - [Curl_easy](#Curl_easy)
- - [connectdata](#connectdata)
- - [Curl_multi](#Curl_multi)
- - [Curl_handler](#Curl_handler)
- - [conncache](#conncache)
- - [Curl_share](#Curl_share)
- - [CookieInfo](#CookieInfo)
+The canonical libcurl internals documentation is now in the [everything
+curl](https://everything.curl.dev/internals) book. This file lists supported
+versions of libs, tools and operating systems.
-<a name="intro"></a>
-Intro
-=====
-
- This project is split in two. The library and the client. The client part
- uses the library, but the library is designed to allow other applications to
- use it.
-
- The largest amount of code and complexity is in the library part.
-
-
-<a name="git"></a>
-git
-===
-
- All changes to the sources are committed to the git repository as soon as
- they are somewhat verified to work. Changes shall be committed as independently
- as possible so that individual changes can be easily spotted and tracked
- afterwards.
-
- Tagging shall be used extensively, and by the time we release new archives we
- should tag the sources with a name similar to the released version number.
-
-<a name="Portability"></a>
-Portability
-===========
+## Portability
We write curl and libcurl to compile with C89 compilers. On 32-bit and up
machines. Most of libcurl assumes more or less POSIX compliance but that is
@@ -81,8 +14,9 @@ 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):
-Dependencies
-------------
+## Dependencies
+
+ We aim to support these or later versions.
- OpenSSL 0.9.7
- GnuTLS 3.1.10
@@ -91,7 +25,7 @@ Dependencies
- c-ares 1.16.0
- libidn2 2.0.0
- wolfSSL 2.0.0
- - openldap 2.0
+ - OpenLDAP 2.0
- MIT Kerberos 1.2.4
- GSKit V5R3M0
- NSS 3.14.x
@@ -99,12 +33,11 @@ Dependencies
- nghttp2 1.12.0
- WinSock 2.2 (on Windows 95+ and Windows CE .NET 4.1+)
-Operating Systems
------------------
+## Operating Systems
On systems where configure runs, we aim at working on them all - if they have
- a suitable C compiler. On systems that do not run configure, we strive to keep
- curl running correctly on:
+ a suitable C compiler. On systems that do not run configure, we strive to
+ keep curl running correctly on:
- Windows 98
- AS/400 V5R3M0
@@ -112,8 +45,7 @@ Operating Systems
- Windows CE ?
- TPF ?
-Build tools
------------
+## Build tools
When writing code (mostly for generating stuff included in release tarballs)
we use a few "build tools" and we make sure that we remain functional with
@@ -126,981 +58,12 @@ Build tools
- perl 5.004
- roffit 0.5
- groff ? (any version that supports `groff -Tps -man [in] [out]`)
- - ps2pdf (gs) ?
-
-<a name="winvsunix"></a>
-Windows vs Unix
-===============
-
- There are a few differences in how to program curl the Unix way compared to
- the Windows way. Perhaps the four most notable details are:
-
- 1. Different function names for socket operations.
-
- In curl, this is solved with defines and macros, so that the source looks
- the same in all places except for the header file that defines them. The
- macros in use are `sclose()`, `sread()` and `swrite()`.
-
- 2. Windows requires a couple of init calls for the socket stuff.
-
- That is taken care of by the `curl_global_init()` call, but if other libs
- also do it etc there might be reasons for applications to alter that
- behavior.
-
- We require WinSock version 2.2 and load this version during global init.
-
- 3. The file descriptors for network communication and file operations are
- not as easily interchangeable as in Unix.
-
- We avoid this by not trying any funny tricks on file descriptors.
-
- 4. When writing data to stdout, Windows makes end-of-lines the DOS way, thus
- destroying binary data, although you do want that conversion if it is
- text coming through... (sigh)
-
- We set stdout to binary under windows
-
- Inside the source code, We make an effort to avoid `#ifdef [Your OS]`. All
- conditionals that deal with features *should* instead be in the format
- `#ifdef HAVE_THAT_WEIRD_FUNCTION`. Since Windows cannot run configure scripts,
- we maintain a `curl_config-win32.h` file in lib directory that is supposed to
- look exactly like a `curl_config.h` file would have looked like on a Windows
- machine.
-
- Generally speaking: always remember that this will be compiled on dozens of
- operating systems. Do not walk on the edge.
-
-<a name="Library"></a>
-Library
-=======
-
- (See [Structs in libcurl](#structs) for the separate section describing all
- major internal structs and their purposes.)
-
- There are plenty of entry points to the library, namely each publicly defined
- function that libcurl offers to applications. All of those functions are
- rather small and easy-to-follow. All the ones prefixed with `curl_easy` are
- put in the `lib/easy.c` file.
-
- `curl_global_init()` and `curl_global_cleanup()` should be called by the
- application to initialize and clean up global stuff in the library. As of
- today, it can handle the global SSL initialization if SSL is enabled and it
- can initialize the socket layer on Windows machines. libcurl itself has no
- "global" scope.
-
- All printf()-style functions use the supplied clones in `lib/mprintf.c`. This
- makes sure we stay absolutely platform independent.
-
- [ `curl_easy_init()`][2] allocates an internal struct and makes some
- initializations. The returned handle does not reveal internals. This is the
- `Curl_easy` struct which works as an "anchor" struct for all `curl_easy`
- functions. All connections performed will get connect-specific data allocated
- that should be used for things related to particular connections/requests.
-
- [`curl_easy_setopt()`][1] takes three arguments, where the option stuff must
- be passed in pairs: the parameter-ID and the parameter-value. The list of
- options is documented in the man page. This function mainly sets things in
- the `Curl_easy` struct.
-
- `curl_easy_perform()` is just a wrapper function that makes use of the multi
- API. It basically calls `curl_multi_init()`, `curl_multi_add_handle()`,
- `curl_multi_wait()`, and `curl_multi_perform()` until the transfer is done
- and then returns.
-
- Some of the most important key functions in `url.c` are called from
- `multi.c` when certain key steps are to be made in the transfer operation.
-
-<a name="Curl_connect"></a>
-Curl_connect()
---------------
-
- Analyzes the URL, it separates the different components and connects to the
- remote host. This may involve using a proxy and/or using SSL. The
- `Curl_resolv()` function in `lib/hostip.c` is used for looking up host
- names (it does then use the proper underlying method, which may vary
- between platforms and builds).
-
- When `Curl_connect` is done, we are connected to the remote site. Then it
- is time to tell the server to get a document/file. `Curl_do()` arranges
- this.
-
- This function makes sure there's an allocated and initiated `connectdata`
- struct that is used for this particular connection only (although there may
- be several requests performed on the same connect). A bunch of things are
- initialized/inherited from the `Curl_easy` struct.
-
-<a name="multi_do"></a>
-multi_do()
----------
-
- `multi_do()` makes sure the proper protocol-specific function is called.
- The functions are named after the protocols they handle.
-
- The protocol-specific functions of course deal with protocol-specific
- negotiations and setup. When they are ready to start the actual file
- transfer they call the `Curl_setup_transfer()` function (in
- `lib/transfer.c`) to setup the transfer and returns.
-
- If this DO function fails and the connection is being re-used, libcurl will
- then close this connection, setup a new connection and re-issue the DO
- request on that. This is because there is no way to be perfectly sure that
- we have discovered a dead connection before the DO function and thus we
- might wrongly be re-using a connection that was closed by the remote peer.
-
-<a name="Curl_readwrite"></a>
-Curl_readwrite()
-----------------
-
- Called during the transfer of the actual protocol payload.
-
- During transfer, the progress functions in `lib/progress.c` are called at
- frequent intervals (or at the user's choice, a specified callback might get
- called). The speedcheck functions in `lib/speedcheck.c` are also used to
- verify that the transfer is as fast as required.
-
-<a name="multi_done"></a>
-multi_done()
------------
-
- Called after a transfer is done. This function takes care of everything
- that has to be done after a transfer. This function attempts to leave
- matters in a state so that `multi_do()` should be possible to call again on
- the same connection (in a persistent connection case). It might also soon
- be closed with `Curl_disconnect()`.
-
-<a name="Curl_disconnect"></a>
-Curl_disconnect()
------------------
-
- When doing normal connections and transfers, no one ever tries to close any
- connections so this is not normally called when `curl_easy_perform()` is
- used. This function is only used when we are certain that no more transfers
- are going to be made on the connection. It can be also closed by force, or
- it can be called to make sure that libcurl does not keep too many
- connections alive at the same time.
-
- This function cleans up all resources that are associated with a single
- connection.
-
-<a name="http"></a>
-HTTP(S)
-=======
-
- HTTP offers a lot and is the protocol in curl that uses the most lines of
- code. There is a special file `lib/formdata.c` that offers all the
- multipart post functions.
-
- base64-functions for user+password stuff (and more) is in `lib/base64.c`
- and all functions for parsing and sending cookies are found in
- `lib/cookie.c`.
-
- HTTPS uses in almost every case the same procedure as HTTP, with only two
- exceptions: the connect procedure is different and the function used to read
- or write from the socket is different, although the latter fact is hidden in
- the source by the use of `Curl_read()` for reading and `Curl_write()` for
- writing data to the remote server.
-
- `http_chunks.c` contains functions that understands HTTP 1.1 chunked transfer
- encoding.
-
- An interesting detail with the HTTP(S) request, is the `Curl_add_buffer()`
- series of functions we use. They append data to one single buffer, and when
- the building is finished the entire request is sent off in one single write.
- This is done this way to overcome problems with flawed firewalls and lame
- servers.
-
-<a name="ftp"></a>
-FTP
-===
-
- The `Curl_if2ip()` function can be used for getting the IP number of a
- specified network interface, and it resides in `lib/if2ip.c`.
-
- `Curl_ftpsendf()` is used for sending FTP commands to the remote server. It
- was made a separate function to prevent us programmers from forgetting that
- they must be CRLF terminated. They must also be sent in one single `write()`
- to make firewalls and similar happy.
-
-<a name="kerberos"></a>
-Kerberos
-========
-
- Kerberos support is mainly in `lib/krb5.c` but also `curl_sasl_sspi.c` and
- `curl_sasl_gssapi.c` for the email protocols and `socks_gssapi.c` and
- `socks_sspi.c` for SOCKS5 proxy specifics.
-
-<a name="telnet"></a>
-TELNET
-======
-
- Telnet is implemented in `lib/telnet.c`.
-
-<a name="file"></a>
-FILE
-====
-
- The `file://` protocol is dealt with in `lib/file.c`.
-
-<a name="smb"></a>
-SMB
-===
- The `smb://` protocol is dealt with in `lib/smb.c`.
-
-<a name="ldap"></a>
-LDAP
-====
-
- Everything LDAP is in `lib/ldap.c` and `lib/openldap.c`.
-
-<a name="email"></a>
-Email
-======
-
- The email related source code is in `lib/imap.c`, `lib/pop3.c` and
- `lib/smtp.c`.
-
-<a name="general"></a>
-General
-=======
-
- URL encoding and decoding, called escaping and unescaping in the source code,
- is found in `lib/escape.c`.
-
- While transferring data in `Transfer()` a few functions might get used.
- `curl_getdate()` in `lib/parsedate.c` is for HTTP date comparisons (and
- more).
-
- `lib/getenv.c` offers `curl_getenv()` which is for reading environment
- variables in a neat platform independent way. That is used in the client, but
- also in `lib/url.c` when checking the proxy environment variables. Note that
- contrary to the normal unix `getenv()`, this returns an allocated buffer that
- must be `free()`ed after use.
-
- `lib/netrc.c` holds the `.netrc` parser.
-
- `lib/timeval.c` features replacement functions for systems that do not have
- `gettimeofday()` and a few support functions for timeval conversions.
-
- A function named `curl_version()` that returns the full curl version string
- is found in `lib/version.c`.
-
-<a name="persistent"></a>
-Persistent Connections
-======================
-
- The persistent connection support in libcurl requires some considerations on
- how to do things inside of the library.
-
- - The `Curl_easy` struct returned in the [`curl_easy_init()`][2] call
- must never hold connection-oriented data. It is meant to hold the root data
- as well as all the options etc that the library-user may choose.
-
- - The `Curl_easy` struct holds the "connection cache" (an array of
- pointers to `connectdata` structs).
-
- - This enables the 'curl handle' to be reused on subsequent transfers.
-
- - 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 to the cache. If the cache is full already when a new
- connection is added, it will first close the oldest unused one.
-
- - 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 will not be kept open, of course.
-
- - When `curl_easy_cleanup()` is called, we close all still opened connections,
- unless of course the multi interface "owns" the connections.
-
- The curl handle must be re-used in order for the persistent connections to
- work.
-
-<a name="multi"></a>
-multi interface/non-blocking
-============================
-
- The multi interface is a non-blocking interface to the library. To make that
- interface work as well as possible, no low-level functions within libcurl
- must be written to work in a blocking manner. (There are still a few spots
- violating this rule.)
-
- One of the primary reasons we introduced c-ares support was to allow the name
- resolve phase to be perfectly non-blocking as well.
-
- The FTP and the SFTP/SCP protocols are examples of how we adapt and adjust
- the code to allow non-blocking operations even on multi-stage command-
- response protocols. They are built around state machines that return when
- they would otherwise block waiting for data. The DICT, LDAP and TELNET
- protocols are crappy examples and they are subject for rewrite in the future
- to better fit the libcurl protocol family.
-
-<a name="ssl"></a>
-SSL libraries
-=============
-
- Originally libcurl supported SSLeay for SSL/TLS transports, but that was then
- extended to its successor OpenSSL but has since also been extended to several
- other SSL/TLS libraries and we expect and hope to further extend the support
- 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 `vtls/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
- use. For example `vtls/openssl.[ch]` for the OpenSSL library.
-
-<a name="symbols"></a>
Library Symbols
===============
All symbols used internally in libcurl must use a `Curl_` prefix if they are
used in more than a single file. Single-file symbols must be made static.
- Public ("exported") symbols must use a `curl_` prefix. (There are exceptions,
- but they are to be changed to follow this pattern in future versions.) Public
- API functions are marked with `CURL_EXTERN` in the public header files so
- that all others can be hidden on platforms where this is possible.
-
-<a name="returncodes"></a>
-Return Codes and Informationals
-===============================
-
- I have made things simple. Almost every function in libcurl returns a CURLcode,
- that must be `CURLE_OK` if everything is OK or otherwise a suitable error
- code as the `curl/curl.h` include file defines. The place that detects an
- error must use the `Curl_failf()` function to set the human-readable error
- description.
-
- In aiding the user to understand what's happening and to debug curl usage, we
- must supply a fair number of informational messages by using the
- `Curl_infof()` function. Those messages are only displayed when the user
- explicitly asks for them. They are best used when revealing information that
- is not otherwise obvious.
-
-<a name="abi"></a>
-API/ABI
-=======
-
- We make an effort to not export or show internals or how internals work, as
- that makes it easier to keep a solid API/ABI over time. See docs/libcurl/ABI
- for our promise to users.
-
-<a name="client"></a>
-Client
-======
-
- `main()` resides in `src/tool_main.c`.
-
- `src/tool_hugehelp.c` is automatically generated by the `mkhelp.pl` perl
- script to display the complete "manual" and the `src/tool_urlglob.c` file
- holds the functions used for the URL-"globbing" support. Globbing in the
- sense that the `{}` and `[]` expansion stuff is there.
-
- The client mostly sets up its `config` struct properly, then
- it calls the `curl_easy_*()` functions of the library and when it gets back
- control after the `curl_easy_perform()` it cleans up the library, checks
- status and exits.
-
- When the operation is done, the `ourWriteOut()` function in `src/writeout.c`
- may be called to report about the operation. That function is mostly using the
- `curl_easy_getinfo()` function to extract useful information from the curl
- session.
-
- It may loop and do all this several times if many URLs were specified on the
- command line or config file.
-
-<a name="memorydebug"></a>
-Memory Debugging
-================
-
- The file `lib/memdebug.c` contains debug-versions of a few functions.
- Functions such as `malloc()`, `free()`, `fopen()`, `fclose()`, etc that
- somehow deal with resources that might give us problems if we "leak" them.
- The functions in the memdebug system do nothing fancy, they do their normal
- function and then log information about what they just did. The logged data
- can then be analyzed after a complete session,
-
- `memanalyze.pl` is the perl script present in `tests/` that analyzes a log
- file generated by the memory tracking system. It detects if resources are
- allocated but never freed and other kinds of errors related to resource
- management.
-
- Internally, definition of preprocessor symbol `DEBUGBUILD` restricts code
- which is only compiled for debug enabled builds. And symbol `CURLDEBUG` is
- used to differentiate code which is _only_ used for memory
- tracking/debugging.
-
- Use `-DCURLDEBUG` when compiling to enable memory debugging, this is also
- switched on by running configure with `--enable-curldebug`. Use
- `-DDEBUGBUILD` when compiling to enable a debug build or run configure with
- `--enable-debug`.
-
- `curl --version` will list 'Debug' feature for debug enabled builds, and
- will list 'TrackMemory' feature for curl debug memory tracking capable
- builds. These features are independent and can be controlled when running
- the configure script. When `--enable-debug` is given both features will be
- enabled, unless some restriction prevents memory tracking from being used.
-
-<a name="test"></a>
-Test Suite
-==========
-
- The test suite is placed in its own subdirectory directly off the root in the
- curl archive tree, and it contains a bunch of scripts and a lot of test case
- data.
-
- The main test script is `runtests.pl` that will invoke test servers like
- `httpserver.pl` and `ftpserver.pl` before all the test cases are performed.
- The test suite currently only runs on Unix-like platforms.
-
- you will find a description of the test suite in the `tests/README` file, and
- the test case data files in the `tests/FILEFORMAT` file.
-
- The test suite automatically detects if curl was built with the memory
- debugging enabled, and if it was, it will detect memory leaks, too.
-
-<a name="asyncdns"></a>
-Asynchronous name resolves
-==========================
-
- libcurl can be built to do name resolves asynchronously, using either the
- normal resolver in a threaded manner or by using c-ares.
-
-<a name="cares"></a>
-[c-ares][3]
-------
-
-### Build libcurl to use a c-ares
-
-1. ./configure --enable-ares=/path/to/ares/install
-2. make
-
-### c-ares on win32
-
- First I compiled c-ares. I changed the default C runtime library to be the
- single-threaded rather than the multi-threaded (this seems to be required to
- prevent linking errors later on). Then I simply build the areslib project
- (the other projects adig/ahost seem to fail under MSVC).
-
- Next was libcurl. I opened `lib/config-win32.h` and I added a:
- `#define USE_ARES 1`
-
- Next thing I did was I added the path for the ares includes to the include
- path, and the libares.lib to the libraries.
-
- Lastly, I also changed libcurl to be single-threaded rather than
- multi-threaded, again this was to prevent some duplicate symbol errors. I'm
- not sure why I needed to change everything to single-threaded, but when I
- did not I got redefinition errors for several CRT functions (`malloc()`,
- `stricmp()`, etc.)
-
-<a name="curl_off_t"></a>
-`curl_off_t`
-==========
-
- `curl_off_t` is a data type provided by the external libcurl include
- headers. It is the type meant to be used for the [`curl_easy_setopt()`][1]
- options that end with LARGE. The type is 64-bit large on most modern
- platforms.
-
-<a name="curlx"></a>
-curlx
-=====
-
- The libcurl source code offers a few functions by source only. They are not
- part of the official libcurl API, but the source files might be useful for
- others so apps can optionally compile/build with these sources to gain
- additional functions.
-
- We provide them through a single header file for easy access for apps:
- `curlx.h`
-
-`curlx_strtoofft()`
--------------------
- A macro that converts a string containing a number to a `curl_off_t` number.
- This might use the `curlx_strtoll()` function which is provided as source
- code in strtoofft.c. Note that the function is only provided if no
- `strtoll()` (or equivalent) function exist on your platform. If `curl_off_t`
- is only a 32-bit number on your platform, this macro uses `strtol()`.
-
-Future
-------
-
- Several functions will be removed from the public `curl_` name space in a
- future libcurl release. They will then only become available as `curlx_`
- functions instead. To make the transition easier, we already today provide
- these functions with the `curlx_` prefix to allow sources to be built
- properly with the new function names. The concerned functions are:
-
- - `curlx_getenv`
- - `curlx_strequal`
- - `curlx_strnequal`
- - `curlx_mvsnprintf`
- - `curlx_msnprintf`
- - `curlx_maprintf`
- - `curlx_mvaprintf`
- - `curlx_msprintf`
- - `curlx_mprintf`
- - `curlx_mfprintf`
- - `curlx_mvsprintf`
- - `curlx_mvprintf`
- - `curlx_mvfprintf`
-
-<a name="contentencoding"></a>
-Content Encoding
-================
-
-## About content encodings
-
- [HTTP/1.1][4] specifies that a client may request that a server encode its
- response. This is usually used to compress a response using one (or more)
- encodings from a set of commonly available compression techniques. These
- schemes include `deflate` (the zlib algorithm), `gzip`, `br` (brotli) and
- `compress`. A client requests that the server perform an encoding by including
- an `Accept-Encoding` header in the request document. The value of the header
- should be one of the recognized tokens `deflate`, ... (there's a way to
- register new schemes/tokens, see sec 3.5 of the spec). A server MAY honor
- the client's encoding request. When a response is encoded, the server
- includes a `Content-Encoding` header in the response. The value of the
- `Content-Encoding` header indicates which encodings were used to encode the
- data, in the order in which they were applied.
-
- It's also possible for a client to attach priorities to different schemes so
- that the server knows which it prefers. See sec 14.3 of RFC 2616 for more
- information on the `Accept-Encoding` header. See sec
- [3.1.2.2 of RFC 7231][15] for more information on the `Content-Encoding`
- header.
-
-## Supported content encodings
-
- The `deflate`, `gzip` and `br` content encodings are supported by libcurl.
- Both regular and chunked transfers work fine. The zlib library is required
- for the `deflate` and `gzip` encodings, while the brotli decoding library is
- for the `br` encoding.
-
-## The libcurl interface
-
- To cause libcurl to request a content encoding use:
-
- [`curl_easy_setopt`][1](curl, [`CURLOPT_ACCEPT_ENCODING`][5], string)
-
- where string is the intended value of the `Accept-Encoding` header.
-
- Currently, libcurl does support multiple encodings but only
- understands how to process responses that use the `deflate`, `gzip` and/or
- `br` content encodings, so the only values for [`CURLOPT_ACCEPT_ENCODING`][5]
- that will work (besides `identity`, which does nothing) are `deflate`,
- `gzip` and `br`. If a response is encoded using the `compress` or methods,
- libcurl will return an error indicating that the response could
- not be decoded. If `<string>` is NULL no `Accept-Encoding` header is
- generated. If `<string>` is a zero-length string, then an `Accept-Encoding`
- header containing all supported encodings will be generated.
-
- The [`CURLOPT_ACCEPT_ENCODING`][5] must be set to any non-NULL value for
- content to be automatically decoded. If it is not set and the server still
- sends encoded content (despite not having been asked), the data is returned
- in its raw form and the `Content-Encoding` type is not checked.
-
-## The curl interface
-
- Use the [`--compressed`][6] option with curl to cause it to ask servers to
- compress responses using any format supported by curl.
-
-<a name="hostip"></a>
-`hostip.c` explained
-====================
-
- The main compile-time defines to keep in mind when reading the `host*.c`
- source file are these:
-
-## `CURLRES_IPV6`
-
- this host has `getaddrinfo()` and family, and thus we use that. The host may
- not be able to resolve IPv6, but we do not really have to take that into
- account. Hosts that are not IPv6-enabled have `CURLRES_IPV4` defined.
-
-## `CURLRES_ARES`
-
- is defined if libcurl is built to use c-ares for asynchronous name
- resolves. This can be Windows or \*nix.
-
-## `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
- defined.
-
-## `host*.c` sources
-
- 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
- - `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.
-
-<a name="memoryleak"></a>
-Track Down Memory Leaks
-=======================
-
-## Single-threaded
-
- Please note that this memory leak system is not adjusted to work in more
- than one thread. If you want/need to use it in a multi-threaded app. Please
- adjust accordingly.
-
-## Build
-
- Rebuild libcurl with `-DCURLDEBUG` (usually, rerunning configure with
- `--enable-debug` fixes this). `make clean` first, then `make` so that all
- files are actually rebuilt properly. It will also make sense to build
- libcurl with the debug option (usually `-g` to the compiler) so that
- debugging it will be easier if you actually do find a leak in the library.
-
- This will create a library that has memory debugging enabled.
-
-## Modify Your Application
-
- Add a line in your application code:
-
-```c
- curl_dbg_memdebug("dump");
-```
-
- This will make the malloc debug system output a full trace of all resource
- using functions to the given file name. Make sure you rebuild your program
- and that you link with the same libcurl you built for this purpose as
- described above.
-
-## Run Your Application
-
- Run your program as usual. Watch the specified memory trace file grow.
-
- Make your program exit and use the proper libcurl cleanup functions etc. So
- that all non-leaks are returned/freed properly.
-
-## Analyze the Flow
-
- Use the `tests/memanalyze.pl` perl script to analyze the dump file:
-
- tests/memanalyze.pl dump
-
- This now outputs a report on what resources that were allocated but never
- freed etc. This report is fine for posting to the list.
-
- If this does not produce any output, no leak was detected in libcurl. Then
- the leak is mostly likely to be in your code.
-
-<a name="multi_socket"></a>
-`multi_socket`
-==============
-
- Implementation of the `curl_multi_socket` API
-
- The main ideas of this API are simply:
-
- 1. The application can use whatever event system it likes as it gets info
- from libcurl about what file descriptors libcurl waits for what action
- on. (The previous API returns `fd_sets` which is `select()`-centric).
-
- 2. When the application discovers action on a single socket, it calls
- libcurl and informs that there was action on this particular socket and
- libcurl can then act on that socket/transfer only and not care about
- any other transfers. (The previous API always had to scan through all
- the existing transfers.)
-
- The idea is that [`curl_multi_socket_action()`][7] calls a given callback
- with information about what socket to wait for what action on, and the
- callback only gets called if the status of that socket has changed.
-
- We also added a timer callback that makes libcurl call the application when
- the timeout value changes, and you set that with [`curl_multi_setopt()`][9]
- and the [`CURLMOPT_TIMERFUNCTION`][10] option. To get this to work,
- Internally, there's an added struct to each easy handle in which we store
- an "expire time" (if any). The structs are then "splay sorted" so that we
- can add and remove times from the linked list and yet somewhat swiftly
- figure out both how long there is until the next nearest timer expires
- and which timer (handle) we should take care of now. Of course, the upside
- of all this is that we get a [`curl_multi_timeout()`][8] that should also
- work with old-style applications that use [`curl_multi_perform()`][11].
-
- We created an internal "socket to easy handles" hash table that given
- a socket (file descriptor) returns the easy handle that waits for action on
- that socket. This hash is made using the already existing hash code
- (previously only used for the DNS cache).
-
- To make libcurl able to report plain sockets in the socket callback, we had
- to re-organize the internals of the [`curl_multi_fdset()`][12] etc so that
- the conversion from sockets to `fd_sets` for that function is only done in
- the last step before the data is returned. I also had to extend c-ares to
- get a function that can return plain sockets, as that library too returned
- only `fd_sets` and that is no longer good enough. The changes done to c-ares
- are available in c-ares 1.3.1 and later.
-
-<a name="structs"></a>
-Structs in libcurl
-==================
-
-This section should cover 7.32.0 pretty accurately, but will make sense even
-for older and later versions as things do not change drastically that often.
-
-<a name="Curl_easy"></a>
-## Curl_easy
-
- The `Curl_easy` struct is the one returned to the outside in the external API
- as a `CURL *`. This is usually known as an easy handle in API documentations
- and examples.
-
- Information and state that is related to the actual connection is in the
- `connectdata` struct. When a transfer is about to be made, libcurl will
- either create a new connection or re-use an existing one. The particular
- connectdata that is used by this handle is pointed out by
- `Curl_easy->easy_conn`.
-
- Data and information that regard this particular single transfer is put in
- the `SingleRequest` sub-struct.
-
- When the `Curl_easy` struct is added to a multi handle, as it must be in
- order to do any transfer, the `->multi` member will point to the `Curl_multi`
- struct it belongs to. The `->prev` and `->next` members will then be used by
- the multi code to keep a linked list of `Curl_easy` structs that are added to
- that same multi handle. libcurl always uses multi so `->multi` *will* point
- to a `Curl_multi` when a transfer is in progress.
-
- `->mstate` is the multi state of this particular `Curl_easy`. 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
- specific `Curl_easy` when [`curl_multi_fdset()`][12] is called etc.
-
- The libcurl source code generally use the name `data` for the variable that
- points to the `Curl_easy`.
-
- When doing multiplexed HTTP/2 transfers, each `Curl_easy` is associated with
- an individual stream, sharing the same connectdata struct. Multiplexing
- makes it even more important to keep things associated with the right thing!
-
-<a name="connectdata"></a>
-## connectdata
-
- A general idea in libcurl is to keep connections around in a connection
- "cache" after they have been used in case they will be used again and then
- re-use an existing one instead of creating a new as it creates a significant
- performance boost.
-
- Each `connectdata` identifies a single physical connection to a server. If
- the connection cannot be kept alive, the connection will be closed after use
- and then this struct can be removed from the cache and freed.
-
- Thus, the same `Curl_easy` can be used multiple times and each time select
- another `connectdata` struct to use for the connection. Keep this in mind,
- as it is then important to consider if options or choices are based on the
- connection or the `Curl_easy`.
-
- Functions in libcurl will assume that `connectdata->data` points to the
- `Curl_easy` that uses this connection (for the moment).
-
- As a special complexity, some protocols supported by libcurl require a
- special disconnect procedure that is more than just shutting down the
- socket. It can involve sending one or more commands to the server before
- doing so. Since connections are kept in the connection cache after use, the
- original `Curl_easy` may no longer be around when the time comes to shut down
- a particular connection. For this purpose, libcurl holds a special dummy
- `closure_handle` `Curl_easy` in the `Curl_multi` struct to use when needed.
-
- FTP uses two TCP connections for a typical transfer but it keeps both in
- this single struct and thus can be considered a single connection for most
- internal concerns.
-
- The libcurl source code generally use the name `conn` for the variable that
- points to the connectdata.
-
-<a name="Curl_multi"></a>
-## Curl_multi
-
- Internally, the easy interface is implemented as a wrapper around multi
- interface functions. This makes everything multi interface.
-
- `Curl_multi` is the multi handle struct exposed as `CURLM *` in external
- APIs.
-
- This struct holds a list of `Curl_easy` structs that have been added to this
- handle with [`curl_multi_add_handle()`][13]. The start of the list is
- `->easyp` and `->num_easy` is a counter of added `Curl_easy`s.
-
- `->msglist` is a linked list of messages to send back when
- [`curl_multi_info_read()`][14] is called. Basically a node is added to that
- list when an individual `Curl_easy`'s transfer has completed.
-
- `->hostcache` points to the name cache. It is a hash table for looking up
- name to IP. The nodes have a limited life time in there and this cache is
- meant to reduce the time for when the same name is wanted within a short
- period of time.
-
- `->timetree` points to a tree of `Curl_easy`s, sorted by the remaining time
- until it should be checked - normally some sort of timeout. Each `Curl_easy`
- has one node in the tree.
-
- `->sockhash` is a hash table to allow fast lookups of socket descriptor for
- which `Curl_easy` uses that descriptor. This is necessary for the
- `multi_socket` API.
-
- `->conn_cache` points to the connection cache. It keeps track of all
- connections that are kept after use. The cache has a maximum size.
-
- `->closure_handle` is described in the `connectdata` section.
-
- The libcurl source code generally use the name `multi` for the variable that
- points to the `Curl_multi` struct.
-
-<a name="Curl_handler"></a>
-## Curl_handler
-
- Each unique protocol that is supported by libcurl needs to provide at least
- one `Curl_handler` struct. It defines what the protocol is called and what
- functions the main code should call to deal with protocol specific issues.
- In general, there's a source file named `[protocol].c` in which there's a
- `struct Curl_handler Curl_handler_[protocol]` declared. In `url.c` there's
- then the main array with all individual `Curl_handler` structs pointed to
- from a single array which is scanned through when a URL is given to libcurl
- to work with.
-
- The concrete function pointer prototypes can be found in `lib/urldata.h`.
-
- `->scheme` is the URL scheme name, usually spelled out in uppercase. That is
- "HTTP" or "FTP" etc. SSL versions of the protocol need their own
- `Curl_handler` setup so HTTPS separate from HTTP.
-
- `->setup_connection` is called to allow the protocol code to allocate
- protocol specific data that then gets associated with that `Curl_easy` for
- the rest of this transfer. It gets freed again at the end of the transfer.
- It will be called before the `connectdata` for the transfer has been
- selected/created. Most protocols will allocate its private `struct
- [PROTOCOL]` here and assign `Curl_easy->req.p.[protocol]` to it.
-
- `->connect_it` allows a protocol to do some specific actions after the TCP
- connect is done, that can still be considered part of the connection phase.
-
- Some protocols will alter the `connectdata->recv[]` and
- `connectdata->send[]` function pointers in this function.
-
- `->connecting` is similarly a function that keeps getting called as long as
- the protocol considers itself still in the connecting phase.
-
- `->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 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`.
-
- `->doing` keeps getting called while issuing the transfer request command(s)
-
- `->done` gets called when the transfer is complete and DONE. That is after the
- main data has been transferred.
-
- `->do_more` gets called during the `DO_MORE` state. The FTP protocol uses
- this state when setting up the second connection.
-
- `->proto_getsock`
- `->doing_getsock`
- `->domore_getsock`
- `->perform_getsock`
- Functions that return socket information. Which socket(s) to wait for which
- I/O action(s) during the particular multi state.
-
- `->disconnect` is called immediately before the TCP connection is shutdown.
-
- `->readwrite` gets called during transfer to allow the protocol to do extra
- reads/writes
-
- `->attach` attaches a transfer to the connection.
-
- `->defport` is the default report TCP or UDP port this protocol uses
-
- `->protocol` is one or more bits in the `CURLPROTO_*` set. The SSL versions
- have their "base" protocol set and then the SSL variation. Like
- "HTTP|HTTPS".
-
- `->flags` is a bitmask with additional information about the protocol that will
- make it get treated differently by the generic engine:
-
- - `PROTOPT_SSL` - will make it connect and negotiate SSL
-
- - `PROTOPT_DUAL` - this protocol uses two connections
-
- - `PROTOPT_CLOSEACTION` - this protocol has actions to do before closing the
- connection. This flag is no longer used by code, yet still set for a bunch
- of protocol handlers.
-
- - `PROTOPT_DIRLOCK` - "direction lock". The SSH protocols set this bit to
- limit which "direction" of socket actions that the main engine will
- concern itself with.
-
- - `PROTOPT_NONETWORK` - a protocol that does not use network (read `file:`)
-
- - `PROTOPT_NEEDSPWD` - this protocol needs a password and will use a default
- one unless one is provided
-
- - `PROTOPT_NOURLQUERY` - this protocol cannot handle a query part on the URL
- (?foo=bar)
-
-<a name="conncache"></a>
-## conncache
-
- Is a hash table with connections for later re-use. Each `Curl_easy` has a
- pointer to its connection cache. Each multi handle sets up a connection
- cache that all added `Curl_easy`s share by default.
-
-<a name="Curl_share"></a>
-## Curl_share
-
- The libcurl share API allocates a `Curl_share` struct, exposed to the
- external API as `CURLSH *`.
-
- The idea is that the struct can have a set of its own versions of caches and
- pools and then by providing this struct in the `CURLOPT_SHARE` option, those
- specific `Curl_easy`s will use the caches/pools that this share handle
- holds.
-
- Then individual `Curl_easy` structs can be made to share specific things
- that they otherwise would not, such as cookies.
-
- The `Curl_share` struct can currently hold cookies, DNS cache and the SSL
- session cache.
-
-<a name="CookieInfo"></a>
-## CookieInfo
-
- This is the main cookie struct. It holds all known cookies and related
- information. Each `Curl_easy` has its own private `CookieInfo` even when
- they are added to a multi handle. They can be made to share cookies by using
- the share API.
-
-
-[1]: https://curl.se/libcurl/c/curl_easy_setopt.html
-[2]: https://curl.se/libcurl/c/curl_easy_init.html
-[3]: https://c-ares.org/
-[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
-[5]: https://curl.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
-[6]: https://curl.se/docs/manpage.html#--compressed
-[7]: https://curl.se/libcurl/c/curl_multi_socket_action.html
-[8]: https://curl.se/libcurl/c/curl_multi_timeout.html
-[9]: https://curl.se/libcurl/c/curl_multi_setopt.html
-[10]: https://curl.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
-[11]: https://curl.se/libcurl/c/curl_multi_perform.html
-[12]: https://curl.se/libcurl/c/curl_multi_fdset.html
-[13]: https://curl.se/libcurl/c/curl_multi_add_handle.html
-[14]: https://curl.se/libcurl/c/curl_multi_info_read.html
-[15]: https://tools.ietf.org/html/rfc7231#section-3.1.2.2
+ Public ("exported") symbols must use a `curl_` prefix. Public API functions
+ are marked with `CURL_EXTERN` in the public header files so that all others
+ can be hidden on platforms where this is possible.
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS
index 20f60a912..6cbcd51de 100644
--- a/docs/KNOWN_BUGS
+++ b/docs/KNOWN_BUGS
@@ -34,6 +34,7 @@ problems may have been fixed or changed somewhat since this was written.
2.10 Store TLS context per transfer instead of per connection
2.11 Schannel TLS 1.2 handshake bug in old Windows versions
2.12 FTPS with Schannel times out file list operation
+ 2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
2.14 Secure Transport disabling hostname validation also disables SNI
2.15 Renegotiate from server may cause hang for OpenSSL backend
@@ -61,6 +62,8 @@ problems may have been fixed or changed somewhat since this was written.
5.10 curl hangs on SMB upload over stdin
5.11 configure --with-gssapi with Heimdal is ignored on macOS
5.12 flaky Windows CI builds
+ 5.13 long paths are not fully supported on Windows
+ 5.14 Windows Unicode builds use homedir in current locale
6. Authentication
6.1 NTLM authentication and unicode
@@ -75,6 +78,7 @@ problems may have been fixed or changed somewhat since this was written.
6.10 curl never completes Negotiate over HTTP
6.11 Negotiate on Windows fails
6.12 cannot use Secure Transport with Crypto Token Kit
+ 6.13 Negotiate against Hadoop HDFS
7. FTP
7.1 FTP without or slow 220 response
@@ -88,6 +92,7 @@ problems may have been fixed or changed somewhat since this was written.
7.9 Passive transfer tries only one IP address
7.10 FTPS needs session reuse
7.11 FTPS upload data loss with TLS 1.3
+ 7.12 FTPS directory listing hangs on Windows with Schannel
8. TELNET
8.1 TELNET and time limitations do not work
@@ -97,6 +102,7 @@ problems may have been fixed or changed somewhat since this was written.
9.1 SFTP does not do CURLOPT_POSTQUOTE correct
9.2 wolfssh: publickey auth does not work
9.3 Remote recursive folder creation with SFTP
+ 9.4 libssh blocking and infinite loop problem
10. SOCKS
10.3 FTPS over SOCKS
@@ -108,14 +114,11 @@ problems may have been fixed or changed somewhat since this was written.
11.3 Disconnects do not do verbose
11.4 HTTP test server 'connection-monitor' problems
11.5 Connection information when using TCP Fast Open
- 11.6 slow connect to localhost on Windows
11.7 signal-based resolver timeouts
11.8 DoH leaks memory after followlocation
11.9 DoH does not inherit all transfer options
11.10 Blocking socket operations in non-blocking API
11.11 A shared connection cache is not thread-safe
- 11.12 'no_proxy' string-matches IPv6 numerical addresses
- 11.13 wakeup socket disconnect causes havoc
11.14 Multi perform hangs waiting for threaded resolver
11.15 CURLOPT_OPENSOCKETPAIRFUNCTION is missing
11.16 libcurl uses renames instead of locking for atomic operations
@@ -143,13 +146,13 @@ problems may have been fixed or changed somewhat since this was written.
15.7 generated .pc file contains strange entries
15.8 libcurl.pc uses absolute library paths
15.9 cert paths autodetected when cross-compiling
- 15.10 libspsl is not supported
+ 15.10 libpsl is not supported
15.11 ExternalProject_Add does not set CURL_CA_PATH
15.12 cannot enable LDAPS on Windows
15.13 CMake build with MIT Kerberos does not work
+ 15.14 cmake build is not thread-safe
16. Applications
- 16.1 pulseUI VPN client
17. HTTP/2
17.1 Excessive HTTP/2 packets with TCP_NODELAY
@@ -160,13 +163,8 @@ problems may have been fixed or changed somewhat since this was written.
18. HTTP/3
18.1 If the HTTP/3 server closes connection during upload curl hangs
- 18.2 Uploading HTTP/3 files gets interrupted at certain file sizes
- 18.3 HTTP/3 download is 5x times slower than HTTP/2
- 18.4 Downloading with HTTP/3 produces broken files
- 18.5 HTTP/3 download with quiche halts after a while
- 18.6 HTTP/3 multipart POST with quiche fails
- 18.7 HTTP/3 quiche upload large file fails
- 18.8 HTTP/3 does not support client certs
+ 18.2 Transfer closed with n bytes remaining to read
+ 18.4 timeout when reusing a http3 connection
18.9 connection migration does not work
==============================================================================
@@ -196,7 +194,7 @@ problems may have been fixed or changed somewhat since this was written.
something beyond ascii but currently libcurl will only pass in the verbatim
string the app provides. There are several browsers that already do this
encoding. The key seems to be the updated draft to RFC2231:
- https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
+ https://datatracker.ietf.org/doc/html/draft-reschke-rfc2231-in-http-02
1.5 Expect-100 meets 417
@@ -213,7 +211,7 @@ problems may have been fixed or changed somewhat since this was written.
1.7 Deflate error after all content was received
- There's a situation where we can get an error in a HTTP response that is
+ There's a situation where we can get an error in an HTTP response that is
compressed, when that error is detected after all the actual body contents
have been received and delivered to the application. This is tricky, but is
ultimately a broken server.
@@ -232,14 +230,13 @@ problems may have been fixed or changed somewhat since this was written.
1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
- I'm using libcurl to POST form data using a FILE* with the CURLFORM_STREAM
- option of curl_formadd(). I have noticed that if the connection drops at just
- the right time, the POST is reattempted without the data from the file. It
- seems like the file stream position is not getting reset to the beginning of
- the file. I found the CURLOPT_SEEKFUNCTION option and set that with a
- function that performs an fseek() on the FILE*. However, setting that did not
- seem to fix the issue or even get called. See
- https://github.com/curl/curl/issues/768
+ When using libcurl to POST form data using a FILE* with the CURLFORM_STREAM
+ option of curl_formadd(). I notice that if the connection drops at just the
+ right time, the POST is reattempted without the data from the file. It seems
+ like the file stream position is not getting reset to the beginning of the
+ file. I found the CURLOPT_SEEKFUNCTION option and set that with a function
+ that performs an fseek() on the FILE*. However, setting that did not seem to
+ fix the issue or even get called. See https://github.com/curl/curl/issues/768
2. TLS
@@ -338,6 +335,10 @@ problems may have been fixed or changed somewhat since this was written.
expires." - the same command line seems to work with other TLS backends and
other operating systems. See https://github.com/curl/curl/issues/5284.
+2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
+
+ https://github.com/curl/curl/issues/8741
+
2.14 Secure Transport disabling hostname validation also disables SNI
SNI is the hostname that is sent by the TLS library to the server as part of
@@ -543,6 +544,25 @@ problems may have been fixed or changed somewhat since this was written.
See https://github.com/curl/curl/issues/6972
+5.13 long paths are not fully supported on Windows
+
+ curl on Windows cannot access long paths (paths longer than 260 characters).
+ However, as a workaround, the Windows path prefix \\?\ which disables all path
+ interpretation may work to allow curl to access the path. For example:
+ \\?\c:\longpath.
+
+ See https://github.com/curl/curl/issues/8361
+
+5.14 Windows Unicode builds use homedir in current locale
+
+ The Windows Unicode builds of curl use the current locale, but expect Unicode
+ UTF-8 encoded paths for internal use such as open, access and stat. The user's
+ home directory is retrieved via curl_getenv in the current locale and not as
+ UTF-8 encoded Unicode.
+
+ See https://github.com/curl/curl/pull/7252 and
+ https://github.com/curl/curl/pull/7281
+
6. Authentication
6.1 NTLM authentication and unicode
@@ -627,7 +647,7 @@ problems may have been fixed or changed somewhat since this was written.
6.11 Negotiate on Windows fails
- When using --negotiate (or NTLM) with curl on Windows, SSL/TSL handshake
+ When using --negotiate (or NTLM) with curl on Windows, SSL/TLS handshake
fails despite having a valid kerberos ticket cached. Works without any issue
in Unix/Linux.
@@ -637,11 +657,15 @@ problems may have been fixed or changed somewhat since this was written.
https://github.com/curl/curl/issues/7048
+6.13 Negotiate authentication against Hadoop HDFS
+
+ https://github.com/curl/curl/issues/8264
+
7. FTP
7.1 FTP without or slow 220 response
- If a connection is made to a FTP server but the server then just never sends
+ If a connection is made to an FTP server but the server then just never sends
the 220 response or otherwise is dead slow, libcurl will not 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
@@ -751,6 +775,10 @@ problems may have been fixed or changed somewhat since this was written.
https://github.com/curl/curl/issues/6149
+7.12 FTPS directory listing hangs on Windows with Schannel
+
+ https://github.com/curl/curl/issues/9161
+
8. TELNET
8.1 TELNET and time limitations do not work
@@ -786,10 +814,18 @@ problems may have been fixed or changed somewhat since this was written.
9.3 Remote recursive folder creation with SFTP
On this servers, the curl fails to create directories on the remote server
- even when CURLOPT_FTP_CREATE_MISSING_DIRS option is set.
+ even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set.
See https://github.com/curl/curl/issues/5204
+9.4 libssh blocking and infinite loop problem
+
+ In the SSH_SFTP_INIT state for libssh, the ssh session working mode is set to
+ blocking mode. If the network is suddenly disconnected during sftp
+ transmission, curl will be stuck, even if curl is configured with a timeout.
+
+ https://github.com/curl/curl/issues/8632
+
10. SOCKS
@@ -808,7 +844,7 @@ problems may have been fixed or changed somewhat since this was written.
Curl sends DNS requests for hostnames with a .onion TLD. This leaks
information about what the user is attempting to access, and violates this
- requirement of RFC7686: https://tools.ietf.org/html/rfc7686
+ requirement of RFC7686: https://datatracker.ietf.org/doc/html/rfc7686
Issue: https://github.com/curl/curl/issues/543
@@ -852,20 +888,6 @@ problems may have been fixed or changed somewhat since this was written.
See https://github.com/curl/curl/issues/1332 and
https://github.com/curl/curl/issues/4296
-11.6 slow connect to localhost on Windows
-
- When connecting to "localhost" on Windows, curl will resolve the name for
- both ipv4 and ipv6 and try to connect to both happy eyeballs-style. Something
- in there does however make it take 200 milliseconds to succeed - which is the
- HAPPY_EYEBALLS_TIMEOUT define exactly. Lowering that define speeds up the
- connection, suggesting a problem in the HE handling.
-
- If we can *know* that we are talking to a local host, we should lower the
- happy eyeballs delay timeout for IPv6 (related: hardcode the "localhost"
- addresses, mentioned in TODO). Possibly we should reduce that delay for all.
-
- https://github.com/curl/curl/issues/2281
-
11.7 signal-based resolver timeouts
libcurl built without an asynchronous resolver library uses alarm() to time
@@ -908,25 +930,6 @@ problems may have been fixed or changed somewhat since this was written.
See https://github.com/curl/curl/issues/4915 and lib1541.c
-11.12 'no_proxy' string-matches IPv6 numerical addresses
-
- This has the downside that "::1" for example does not match "::0:1" even
- though they are in fact the same address.
-
- See https://github.com/curl/curl/issues/5745
-
-11.13 wakeup socket disconnect causes havoc
-
- waking an iPad breaks the wakeup socket pair, triggering a POLLIN event and
- resulting in SOCKERRNO being set to ENOTCONN.
-
- This condition, and other possible error conditions on the wakeup socket, are
- not handled, so the condition remains on the FD and curl_multi_poll will
- never block again.
-
- See https://github.com/curl/curl/issues/6132 and
- https://github.com/curl/curl/pull/6133
-
11.14 Multi perform hangs waiting for threaded resolver
If a threaded resolver takes a long time to complete, libcurl can be blocked
@@ -940,7 +943,7 @@ problems may have been fixed or changed somewhat since this was written.
When libcurl creates sockets with socketpair(), those are not "exposed" in
CURLOPT_OPENSOCKETFUNCTION and therefore might surprise and be unknown to
- applications that expects and wants all sockets known beforehand. One way to
+ applications that expect and want all sockets known beforehand. One way to
address this issue is to introduce a CURLOPT_OPENSOCKETPAIRFUNCTION callback.
https://github.com/curl/curl/issues/5747
@@ -958,10 +961,10 @@ problems may have been fixed or changed somewhat since this was written.
12.1 OpenLDAP hangs after returning results
- By configuration defaults, openldap automatically chase referrals on
+ By configuration defaults, OpenLDAP automatically chase referrals on
secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
should monitor all socket descriptors involved. Currently, these secondary
- descriptors are not monitored, causing openldap library to never receive
+ descriptors are not monitored, causing OpenLDAP library to never receive
data from them.
As a temporary workaround, disable referrals chasing by configuration.
@@ -1070,7 +1073,7 @@ problems may have been fixed or changed somewhat since this was written.
See https://github.com/curl/curl/issues/6178
-15.10 libspsl is not supported
+15.10 libpsl is not supported
See https://github.com/curl/curl/issues/6214
@@ -1096,20 +1099,16 @@ problems may have been fixed or changed somewhat since this was written.
https://github.com/curl/curl/issues/6904
-16. Applications
+15.14 cmake build is not thread-safe
-16.1 pulseUI VPN client
+ The cmake build does not check for and verify presence of a working Atomic
+ type, which then makes curl_global_init() to not build thread-safe on
+ non-Windows platforms.
- This application crashes at startup with libcurl 7.74.0 (and presumably later
- versions too) after we cleaned up OpenSSL initialization. Since this is the
- only known application to do this, we suspect it is related to something they
- are doing in their setup that is not kosher. We have not been able to get in
- contact with them nor got any technical details to help us debug this
- further.
+ Bug: https://github.com/curl/curl/issues/8973
+ Partial fix: https://github.com/curl/curl/pull/8982
- See
- https://community.pulsesecure.net/t5/Pulse-Desktop-Clients/Linux-Pulse-Client-does-not-work-with-curl-7-74/m-p/44378
- and https://github.com/curl/curl/issues/6306
+16. Applications
17. HTTP/2
@@ -1154,35 +1153,18 @@ problems may have been fixed or changed somewhat since this was written.
See https://github.com/curl/curl/issues/6606
-18.2 Uploading HTTP/3 files gets interrupted at certain file sizes
-
- See https://github.com/curl/curl/issues/6510
-
-18.3 HTTP/3 download is 5x times slower than HTTP/2
-
- See https://github.com/curl/curl/issues/6494
-
-18.4 Downloading with HTTP/3 produces broken files
-
- See https://github.com/curl/curl/issues/7351
-
-18.5 HTTP/3 download with quiche halts after a while
-
- See https://github.com/curl/curl/issues/7339
-
-18.6 HTTP/3 multipart POST with quiche fails
-
- https://github.com/curl/curl/issues/7125
+18.2 Transfer closed with n bytes remaining to read
-18.7 HTTP/3 quiche upload large file fails
+ HTTP/3 transfers with the Jetty HTTP/3 server seem to not work.
- https://github.com/curl/curl/issues/7532
+ https://github.com/curl/curl/issues/8523
-18.8 HTTP/3 does not support client certs
+18.4 timeout when reusing a http3 connection
- aka "mutual authentication".
+ HTTP/3 with quiche seems to not work and always timeout a subsequent transfer
+ that reuses an already established connection
- https://github.com/curl/curl/issues/7625
+ https://github.com/curl/curl/issues/8764
18.9 connection migration does not work
diff --git a/docs/MAIL-ETIQUETTE b/docs/MAIL-ETIQUETTE
index eef37d339..ccd3e01f9 100644
--- a/docs/MAIL-ETIQUETTE
+++ b/docs/MAIL-ETIQUETTE
@@ -45,7 +45,7 @@ MAIL ETIQUETTE
1.2 Netiquette
- Netiquette is a common term for how to behave on the internet. Of course, in
+ Netiquette is a common term for how to behave on the Internet. Of course, in
each particular group and subculture there will be differences in what is
acceptable and what is considered good manners.
@@ -105,7 +105,7 @@ MAIL ETIQUETTE
messages"
No matter what, we NEVER EVER respond to trolls or spammers on the list. If
- you believe the list admin should do something in particular, contact him/her
+ you believe the list admin should do something in particular, contact them
off-list. The subject will be taken care of as much as possible to prevent
repeated offenses, but responding on the list to such messages never leads to
anything good and only puts the light even more on the offender: which was
@@ -195,7 +195,7 @@ MAIL ETIQUETTE
Many mail programs and web archivers use information within mails to keep
them together as "threads", as collections of posts that discuss a certain
subject. If you do not intend to reply on the same or similar subject, do not
- just hit reply on an existing mail and change subject, create a new mail.
+ just hit reply on an existing mail and change the subject, create a new mail.
2.2 Reply to the List
@@ -277,9 +277,9 @@ MAIL ETIQUETTE
one of the hints was what solved your problems. The guys who write answers
feel good to know that they provided a good answer and that you fixed the
problem. Far too often, the person who asked the question is never heard from
- again, and we never get to know if he/she is gone because the problem was
+ again, and we never get to know if they are gone because the problem was
solved or perhaps because the problem was unsolvable.
Getting the solution posted also helps other users that experience the same
problem(s). They get to see (possibly in the web archives) that the
- suggested fixes actually has helped at least one person.
+ suggested fixes actually have helped at least one person.
diff --git a/docs/Makefile.am b/docs/Makefile.am
index e47256519..0d565796f 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign no-dependencies
@@ -89,7 +91,8 @@ EXTRA_DIST = \
TODO \
TheArtOfHttpScripting.md \
URL-SYNTAX.md \
- VERSIONS.md
+ VERSIONS.md \
+ WEBSOCKET.md
MAN2HTML= roffit $< >$@
diff --git a/docs/Makefile.in b/docs/Makefile.in
index b49cef9e7..2c3fb230c 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
VPATH = @srcdir@
am__is_gnu_make = { \
@@ -111,15 +113,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = docs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -301,6 +301,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -318,6 +319,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -375,6 +377,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -393,12 +396,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -465,7 +469,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -537,7 +540,8 @@ EXTRA_DIST = \
TODO \
TheArtOfHttpScripting.md \
URL-SYNTAX.md \
- VERSIONS.md
+ VERSIONS.md \
+ WEBSOCKET.md
MAN2HTML = roffit $< >$@
SUFFIXES = .1 .html .pdf
diff --git a/docs/NEW-PROTOCOL.md b/docs/NEW-PROTOCOL.md
index 334215d30..a8b227d3c 100644
--- a/docs/NEW-PROTOCOL.md
+++ b/docs/NEW-PROTOCOL.md
@@ -1,11 +1,11 @@
# Adding a new protocol?
-Every once in a while someone comes up with the idea of adding support for yet
+Every once in a while, someone comes up with the idea of adding support for yet
another protocol to curl. After all, curl already supports 25 something
protocols and it is the Internet transfer machine for the world.
In the curl project we love protocols and we love supporting many protocols
-and do it well.
+and doing it well.
So how do you proceed to add a new protocol and what are the requirements?
@@ -98,7 +98,7 @@ will try to debug something five years from now can figure out functionality a
little easier!
The protocol specification itself should be freely available without requiring
-any NDA or similar.
+a non-disclosure agreement or similar.
## Do not compare
diff --git a/docs/PARALLEL-TRANSFERS.md b/docs/PARALLEL-TRANSFERS.md
index 325e64f9b..8ab477862 100644
--- a/docs/PARALLEL-TRANSFERS.md
+++ b/docs/PARALLEL-TRANSFERS.md
@@ -27,8 +27,8 @@ completely different than the regular one used for each single transfer.
o total time all transfers are expected to take (if sizes are known)
o current time the transfers have spent so far
o estimated time left (if sizes are known)
- o current transfer speed (the faster of UL/DL speeds measured over the last
- few seconds)
+ o current transfer speed (the faster of upload/download speeds measured over
+ the last few seconds)
Example:
diff --git a/docs/RELEASE-PROCEDURE.md b/docs/RELEASE-PROCEDURE.md
index 9aa29dc0e..776bebe83 100644
--- a/docs/RELEASE-PROCEDURE.md
+++ b/docs/RELEASE-PROCEDURE.md
@@ -16,14 +16,14 @@ in the source code repo
tag and we use underscores instead of dots in the version number. Make sure
the tag is GPG signed (using -s).
-- run "./maketgz 7.34.0" to build the release tarballs. It is important that
+- 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
+- GPG sign the 4 tarballs as `maketgz` suggests
- upload the 8 resulting files to the primary download directory
@@ -89,18 +89,30 @@ of common public holidays or when the lead release manager is away traveling,
the release date can be moved forwards or backwards a full week. This is then
advertised well in advance.
+Critical problems
+-----------------
+
+We can break the release cycle and do a patch release at any point if a
+critical enough problem is reported. There is no exact definition of how to
+assess such criticality, but if an issue is highly disturbing or has a
+security impact on a large enough share of the user population it might
+qualify.
+
+If you think an issue qualifies, bring it to the curl-library mailing list and
+push for it.
+
Coming dates
------------
Based on the description above, here are some planned release dates (at the
time of this writing):
-- January 5, 2022 (7.81.0)
-- March 2, 2022
-- April 27, 2022
-- June 22, 2022
-- August 17, 2022
-- October 12, 2022
-- December 7, 2022
-- February 1, 2023
-- March 20, 2023 (8.0.0)
+- October 26, 2022 (7.86.0)
+- December 21, 2022
+- February 15, 2023 (last version 7 release, no feature window after)
+- March 20, 2023 (8.0.0 - curl 25 years)
+- April 17, 2023
+- July 12, 2023
+- September 6, 2023
+- November 1, 2023
+- December 27, 2023
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
index 79e8b03a2..e48c21b58 100644
--- a/docs/ROADMAP.md
+++ b/docs/ROADMAP.md
@@ -14,7 +14,7 @@ eventually remove the "experimental" label from this functionality.
As a DNS version of alt-svc and also a pre-requisite for ECH (see below).
-See: https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-02
+See: https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-02
## ECH (Encrypted Client Hello - formerly known as ESNI)
diff --git a/docs/RUSTLS.md b/docs/RUSTLS.md
index 17faa20e7..4b49b5cf7 100644
--- a/docs/RUSTLS.md
+++ b/docs/RUSTLS.md
@@ -21,6 +21,6 @@ Now configure and build curl with rustls:
% git clone https://github.com/curl/curl
% cd curl
- % ./buildconf
+ % autoreconf -fi
% ./configure --with-rustls=${HOME}/rustls-ffi-built
% make
diff --git a/docs/SECURITY-PROCESS.md b/docs/SECURITY-PROCESS.md
index f13d6d3aa..96d6bec42 100644
--- a/docs/SECURITY-PROCESS.md
+++ b/docs/SECURITY-PROCESS.md
@@ -1,11 +1,9 @@
-curl security process
-=====================
+# curl security process
This document describes how security vulnerabilities should be handled in the
curl project.
-Publishing Information
-----------------------
+## Publishing Information
All known and public curl or libcurl related vulnerabilities are listed on
[the curl website security page](https://curl.se/docs/security.html).
@@ -13,22 +11,21 @@ All known and public curl or libcurl related vulnerabilities are listed on
Security vulnerabilities **should not** be entered in the project's public bug
tracker.
-Vulnerability Handling
-----------------------
+## 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
+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
+mailing lists. 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 on
- [https://hackerone.com/curl](https://hackerone.com/curl). Issues filed there
- reach a handful of selected and trusted people.
+ [HackerOne](https://hackerone.com/curl). Issues filed there reach 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
@@ -38,11 +35,12 @@ announcement.
that a human has seen the report.
- The security team investigates the report and either rejects it or accepts
- it.
+ it. See below for examples of problems that are not considered
+ vulnerabilities.
- 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
+- If the report is accepted, the team writes to the reporter to let them
know it is accepted and that they are working on a fix.
- The security team discusses the problem, works out a fix, considers the
@@ -68,7 +66,7 @@ announcement.
should ideally contain the CVE number.
- The security team also decides on and delivers a monetary reward to the
- reporter as per the bug-bounty polices.
+ reporter as per the bug-bounty policies.
- No more than 10 days before release, inform
[distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros)
@@ -92,8 +90,7 @@ announcement.
- The security web page on the website should get the new vulnerability
mentioned.
-security (at curl dot se)
-------------------------------
+## security (at curl dot se)
This is a private mailing list for discussions on and about curl security
issues.
@@ -103,39 +100,115 @@ might ask you to join the list or you can ask to join it. It really is not a
formal process. 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 have been around for a good while and you should
-have no plans in vanishing in the near future.
+have no plans of vanishing in the near future.
We do not make the list of participants public mostly because it tends to vary
somewhat over time and a list somewhere will only risk getting outdated.
-Publishing Security Advisories
-------------------------------
+## Publishing Security Advisories
1. Write up the security advisory, using markdown syntax. Use the same
subtitles as last time to maintain consistency.
2. Name the advisory file after the allocated CVE id.
-3. Add a line on the top of the array in `curl-www/docs/vuln.pm'.
+3. Add a line on the top of the array in `curl-www/docs/vuln.pm`.
-4. Put the new advisory markdown file in the curl-www/docs/ directory. Add it
- to the git repo.
+4. Put the new advisory markdown file in the `curl-www/docs/` directory. Add it
+ to the git repository.
5. Run `make` in your local web checkout and verify that things look fine.
6. On security advisory release day, push the changes on the curl-www
repository's remote master branch.
-Hackerone
----------
+## HackerOne
Request the issue to be disclosed. If there are sensitive details present in
the report and discussion, those should be redacted from the disclosure. The
default policy is to disclose as much as possible as soon as the vulnerability
has been published.
-Bug Bounty
-----------
+## Bug Bounty
See [BUG-BOUNTY](https://curl.se/docs/bugbounty.html) for details on the
bug bounty program.
+
+# Not security issues
+
+This is an incomplete list of issues that are not considered vulnerabilities.
+
+## Small memory leaks
+
+We do not consider a small memory leak a security problem; even if the amount
+of allocated memory grows by a small amount every now and then. Long-living
+applications and services already need to have counter-measures and deal with
+growing memory usage, be it leaks or just increased use. A small memory or
+resource leak is then expected to *not* cause a security problem.
+
+Of course there can be a discussion if a leak is small or not. A large leak
+can be considered a security problem due to the DOS risk. If leaked memory
+contains sensitive data it might also qualify as a security problem.
+
+## Never-ending transfers
+
+We do not consider flaws that cause a transfer to never end to be a security
+problem. There are already several benign and likely reasons for transfers to
+stall and never end, so applications that cannot deal with never-ending
+transfers already need to have counter-measures established.
+
+If the problem avoids the regular counter-measures when it causes a never-
+ending transfer, it might be a security problem.
+
+## Not practically possible
+
+If the flaw or vulnerability cannot practically get executed on existing
+hardware it is not a security problem.
+
+## API misuse
+
+If a reported issue only triggers by an application using the API in a way
+that is not documented to work or even documented to not work, it is probably
+not going to be considered a security problem. We only guarantee secure and
+proper functionality when the APIs are used as expected and documented.
+
+There can be a discussion about what the documentation actually means and how
+to interpret the text, which might end up with us still agreeing that it is a
+security problem.
+
+## Local attackers already present
+
+When an issue can only be attacked or misused by an attacker present on the
+local system or network, the bar is raised. If a local user wrongfully has
+elevated rights on your system enough to attack curl, they can probably
+already do much worse harm and the problem is not really in curl.
+
+## Experiments
+
+Vulnerabilities in features which are off by default (in the build) and
+documented as experimental, are not eligible for a reward and we do not
+consider them security problems.
+
+## URL inconsistencies
+
+URL parser inconsistencies between browsers and curl are expected and are not
+considered security vulnerabilities. The WHATWG URL Specification and RFC
+3986+ (the plus meaning that it is an extended version) [are not completely
+interoperable](https://github.com/bagder/docs/blob/master/URL-interop.md).
+
+Obvious parser bugs can still be vulnerabilities of course.
+
+## Visible command line arguments
+
+The curl command blanks the contents of a number of command line arguments to
+prevent them from appearing in process listings. It does not blank all
+arguments even if some of them that are not blanked might contain sensitive
+data. We consider this functionality a best-effort and omissions are not
+security vulnerabilities.
+
+ - not all systems allow the arguments to be blanked in the first place
+ - since curl blanks the argument itself they will be readable for a short
+ moment no matter what
+ - virtually every argument can contain sensitive data, depending on use
+ - blanking all arguments would make it impractical for users to differentiate
+ curl command lines in process listings
diff --git a/docs/SSL-PROBLEMS.md b/docs/SSL-PROBLEMS.md
index 3ba601aaa..29f400a59 100644
--- a/docs/SSL-PROBLEMS.md
+++ b/docs/SSL-PROBLEMS.md
@@ -11,13 +11,13 @@
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
+ fail. This is a document that attempts to detail 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
+ "ca bundle" for this. See lots of more details on this in the `SSLCERTS`
document.
## CA bundle missing intermediate certificates
@@ -59,7 +59,7 @@
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.
+ 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.
@@ -68,9 +68,8 @@
support the legacy handshakes and algorithms used by those versions, so we
advice against building curl to use Schannel on really old Windows versions.
- References:
-
- https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
+ Reference: [Prohibiting RC4 Cipher
+ Suites](https://datatracker.ietf.org/doc/html/draft-popov-tls-prohibiting-rc4-01)
## Allow BEAST
diff --git a/docs/SSLCERTS.md b/docs/SSLCERTS.md
index ad0a98132..7f2f73557 100644
--- a/docs/SSLCERTS.md
+++ b/docs/SSLCERTS.md
@@ -6,7 +6,6 @@ SSL is TLS
SSL is the old name. It is called TLS these days.
-
Native SSL
----------
@@ -21,15 +20,16 @@ It is about trust
-----------------
This system is about trust. In your local CA certificate store you have certs
-from *trusted* Certificate Authorities that you then can use to verify that the
-server certificates you see are valid. they are signed by one of the CAs you
-trust.
+from *trusted* Certificate Authorities that you then can use to verify that
+the server certificates you see are valid. They are signed by one of the
+certificate authorities 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 is
-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.
+Which certificate authorities 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 is 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 in recent years several certificate authorities
+have been found untrustworthy.
Certificate Verification
------------------------
@@ -39,8 +39,8 @@ by using a CA certificate store that the SSL library can use to make sure the
peer's server certificate is valid.
If you communicate with HTTPS, FTPS or other TLS-using servers using
-certificates that are signed by CAs present in the store, you can be sure
-that the remote server really is the one it claims to be.
+certificates in the CA store, 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 do not install a CA
cert store, if the server uses a certificate signed by a CA that is not
@@ -51,30 +51,31 @@ 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);`
- With the curl command line tool, you disable this with -k/--insecure.
+ 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_CAINFO, cacert);`
- With the curl command line tool: --cacert [file]
+ With the curl command line tool: `--cacert [file]`
3. Add the CA cert for your server to the existing default CA certificate
store. The default CA certificate store can be changed at compile time with
the following configure options:
- --with-ca-bundle=FILE: use the specified file as CA certificate store. CA
- certificates need to be concatenated in PEM format into this file.
+ `--with-ca-bundle=FILE`: use the specified file as the CA certificate
+ store. CA certificates need to be concatenated in PEM format into this
+ file.
- --with-ca-path=PATH: use the specified path as CA certificate store. CA
+ `--with-ca-path=PATH`: use the specified path as CA certificate store. CA
certificates need to be stored as individual PEM files in this directory.
You may need to run c_rehash after adding files there.
- If neither of the two options is specified, configure will try to auto-detect
- a setting. It's also possible to explicitly not hardcode any default store
- but rely on the built in default the crypto library may provide instead.
- You can achieve that by passing both --without-ca-bundle and
- --without-ca-path to the configure script.
+ If neither of the two options is specified, configure will try to
+ auto-detect a setting. It's also possible to explicitly not set any
+ default store but rely on the built in default the crypto library may
+ provide instead. You can achieve that by passing both
+ `--without-ca-bundle` and `--without-ca-path` to the configure script.
If you use Internet Explorer, this is one way to get extract the CA cert
for a particular server:
@@ -83,22 +84,21 @@ server, do one of the following:
- Find out where the CA certificate is kept (Certificate>
Authority Information Access>URL)
- 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
- - Add the 'outcert.pem' to the CA certificate store or use it stand-alone
+ - Convert it from crt to PEM using the OpenSSL tool:
+ `openssl x509 -inform DES -in yourdownloaded.crt -out outcert.pem -text`
+ - Add the `outcert.pem` to the CA certificate store or use it stand-alone
as described below.
- If you use the 'openssl' tool, this is one way to get extract the CA cert
+ If you use the `openssl` tool, this is one way to get extract the CA cert
for a particular server:
- `openssl s_client -showcerts -servername server -connect server:443 > cacert.pem`
- type "quit", followed by the "ENTER" key
- The certificate will have "BEGIN CERTIFICATE" and "END CERTIFICATE"
markers.
- - 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.
+ - 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`.
- If you want to trust the certificate, you can add it to your CA
certificate store or use it stand-alone as described. Just remember that
the security is no better than the way you obtained the certificate.
@@ -132,18 +132,20 @@ Certificate Verification with NSS
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
+CA cert db. Red Hat ships with an additional module, libnsspem.so, which
enables NSS to read the OpenSSL PEM CA bundle. On openSUSE you can install
-p11-kit-nss-trust which makes NSS use the system wide CA certificate store. 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.
+p11-kit-nss-trust which makes NSS use the system wide CA certificate
+store. 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 certificate database directory (either the set default `/etc/pki/nssdb` or
+the directory configured with the `SSL_DIR` environment variable). To check
+which certificate database format your distribution provides, examine the
+default certificate database location: `/etc/pki/nssdb`; the new certificate
+database 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
-----------------------------------------------------------
diff --git a/docs/THANKS b/docs/THANKS
index e29cbeedf..b898341c9 100644
--- a/docs/THANKS
+++ b/docs/THANKS
@@ -6,6 +6,8 @@
0xee on github
0xflotus on github
+12932 on github
+1337vt on github
1ocalhost on github
3dyd on github
3eka on github
@@ -28,6 +30,7 @@ Adam Langley
Adam Light
Adam Marcionek
Adam Piggott
+Adam Rosenfield
Adam Sampson
Adam Tkac
Adnan Khan
@@ -37,7 +40,9 @@ Adrian Peniak
Adrian Schuur
Adriano Meirelles
afrind on github
+Aftab Alam
ahodesuka on github
+ajak in #curl
Ajit Dhumale
Akhil Kedia
Aki Koskinen
@@ -98,6 +103,7 @@ Alexander Sinditskiy
Alexander Traud
Alexander V. Tikhonov
Alexander Zhuravlev
+Alexandre Bury
Alexandre Pion
Alexey Borzov
Alexey Eremikhin
@@ -142,6 +148,7 @@ Andreas Rieke
Andreas Roth
Andreas Schneider
Andreas Schuldei
+Andreas Sommer
Andreas Streichardt
Andreas Wurf
Andrei Benea
@@ -171,6 +178,7 @@ Andrew Moise
Andrew Potter
Andrew Robbins
Andrew Wansink
+Andrey Alifanov
Andrey Gursky
Andrey Labunets
Andrii Moiseiev
@@ -182,6 +190,7 @@ Andy Serpa
Andy Tsouladze
Angus Mackay
anio on github
+anon00000000 on github
anshnd on github
Antarpreet Singh
Anthon Pang
@@ -193,6 +202,7 @@ Anthony Ramine
Anthony Shaw
Antoine Aubert
Antoine Calando
+Antoine Pietri
Anton Bychkov
Anton Gerasimov
Anton Kalmykov
@@ -228,6 +238,7 @@ Augustus Saunders
Austin Green
Avery Fay
awesomenode on github
+Axel Chong
Axel Morawietz
Axel Tillequin
Ayoub Boudhar
@@ -237,6 +248,7 @@ Bachue Zhou
Balaji Parasuram
Balaji S Rao
Balaji Salunke
+Balakrishnan Balasubramanian
Balazs Kovacsics
Balint Szilakszi
Barry Abrahamson
@@ -266,6 +278,7 @@ Benjamin Gerard
Benjamin Gilbert
Benjamin Johnson
Benjamin Kircher
+Benjamin Loison
Benjamin Riefenstahl
Benjamin Ritcey
Benjamin Sergeant
@@ -311,8 +324,10 @@ bobmitchell1956 on github
Bodo Bergmann
Bogdan Nicula
Boris Rasin
+Boris Verkhovskiy
Brad Burdick
Brad Fitzpatrick
+Brad Forschinger
Brad Harder
Brad Hards
Brad King
@@ -349,6 +364,7 @@ Bruno Thomsen
Bryan Henderson
Bryan Kemp
bsammon on github
+bsergean on github
Bubu on github
buzo-ffm on github
bxac on github
@@ -359,12 +375,14 @@ Calvin Buckley
Cameron Cawley
Cameron Kaiser
Cameron MacMinn
+Cameron Will
Camille Moncelier
Cao ZhenXiang
Caolan McNamara
Captain Basil
Carie Pointer
Carl Zogheib
+Carlo Alberto
Carlo Cannas
Carlo Marcelo Arenas Belón
Carlo Teubner
@@ -376,9 +394,11 @@ Catalin Patulea
causal-agent on github
cbartl on github
cclauss on github
+Cering on github
Cesar Eduardo Barros
Chad Monroe
Chandrakant Bagul
+Charles Cazabon
Charles Kerr
Charles Romestant
Chen Prog
@@ -418,10 +438,12 @@ Christophe Demory
Christophe Dervieux
Christophe Legry
Christopher Conroy
+Christopher Degawa
Christopher Head
Christopher Palow
Christopher R. Palmer
Christopher Reid
+Christopher Sauer
Christopher Stone
Chungtsun Li
Ciprian Badescu
@@ -444,10 +466,12 @@ coinhubs on github
Colby Ranger
Colin Blair
Colin Hogben
+Colin Leroy
Colin O'Dell
Colin Watson
Colm Buckley
Constantine Sapuntzakis
+coralw on github
Cory Benfield
Cory Nelson
Costya Shulyupin
@@ -501,10 +525,12 @@ Daniel Carpenter
Daniel Cater
Daniel Egger
Daniel Gustafsson
+Daniel Hallberg
Daniel Hwang
Daniel Jeliński
Daniel Johnson
Daniel Kahn Gillmor
+Daniel Katz
Daniel Krügler
Daniel Kurečka
Daniel Lee Hwang
@@ -520,6 +546,7 @@ Daniel Silverstone
Daniel Steinberg
Daniel Stenberg
Daniel Theron
+Daniel Valenzuela
Daniel Woelfel
Daphne Luong
Dario Nieuwenhuis
@@ -542,6 +569,7 @@ David Binderman
David Blaikie
David Bohman
David Byron
+David Carlier
David Cohen
David Cook
David Demelier
@@ -564,6 +592,7 @@ David LeBlanc
David Lopes
David Lord
David McCreedy
+David McLaughlin
David Odin
David Phillips
David Rosenstrauch
@@ -578,6 +607,7 @@ David Walser
David Woodhouse
David Wright
David Yan
+Davide Cassioli
davidedec on github
dbrowndan on github
dEajL3kA on github
@@ -635,9 +665,12 @@ Dmitry S. Baikov
Dmitry Wagin
dnivras on github
Dolbneff A.V
+Domen Kožar
Domenico Andreoli
Dominick Meglio
Dominik Hölzl
+Dominik Klemba
+Dominik Thalhammer
Dominique Leuenberger
Don J Olmstead
Dongliang Mu
@@ -659,6 +692,7 @@ Duane Cathey
Duncan Mac-Vicar Prett
Duncan Wilcox
Dustin Boswell
+Dustin Howett
Dusty Mabe
Duy Phan Thanh
Dwarakanath Yadavalli
@@ -676,6 +710,7 @@ Eddie Lumpkin
Edgaras Janušauskas
Edin Kadribasic
Edmond Yu
+Edoardo Lolletti
Eduard Bloch
Edward Kimmel
Edward Rudd
@@ -684,6 +719,7 @@ Edward Thomson
Eelco Dolstra
Eetu Ojanen
Egon Eckert
+Egor Pugin
Ehren Bendler
Eldar Zaitov
elelel on github
@@ -693,13 +729,17 @@ Elia Tufarolo
Elliot Saba
Ellis Pritchard
Elmira A Semenova
+Elms
+Eloy Degen
elsamuko on github
emanruse on github
Emanuele Bovisio
+Emanuele Torre
Emil Engler
Emil Lerner
Emil Romanus
Emiliano Ida
+Emilio López
Emmanuel Tychon
Enrico Scholz
Enrik Berkhan
@@ -744,19 +784,22 @@ Evan Jordan
Evangelos Foutras
Even Rouault
Evert Pot
-Evgeny Grin
+Evgeny Grin (Karlson2k)
Evgeny Turnaev
eXeC64 on github
Eygene Ryabinkin
Eylem Ugurel
+Fabian Fischer
Fabian Frank
Fabian Hiernaux
Fabian Keil
Fabian Ruff
+Fabian Yamaguchi
Fabrice Fontaine
Fabrizio Ammollo
Fahim Chandurwala
Faizur Rahman
+Farzin on github
Fawad Mirza
fds242 on github
Federico Bianchi
@@ -770,10 +813,12 @@ Felix von Leitner
Felix Yan
Feng Tu
Fernando Muñoz
+Filip Lundgren
Filip Salomonsson
Firefox OS
Flameborn on github
Flavio Medeiros
+Florian Kohnhäuser
Florian Pritz
Florian Schoppmann
Florian Van Heghe
@@ -782,6 +827,7 @@ Florin Petriuc
Forrest Cahoon
Francisco Moraes
Francisco Munoz
+Francisco Olarte
Francisco Sedano
Francois Petitjean
Francois Rivard
@@ -796,6 +842,7 @@ Frank Van Uffelen
František Kučera
François Charlier
François Rigault
+Frazer Smith
Fred Machado
Fred New
Fred Noz
@@ -811,7 +858,9 @@ Gabriel Simmer
Gabriel Sjoberg
Gambit Communications
Ganesh Kamath
+gaoxingwang on github
Garrett Holmstrom
+Garrett Squire
Gary Maxwell
Gaurav Malhotra
Gautam Kachroo
@@ -886,6 +935,7 @@ Gustaf Hui
Gustavo Grieco
Guy Poizat
GwanYeong Kim
+Gwen Shapira
Gwenole Beauchesne
Gökhan Şengün
Götz Babin-Ebell
@@ -909,6 +959,7 @@ Hao Wu
Hardeep Singh
Haris Okanovic
Harold Stuart
+Harry Sarson
Harry Sintonen
Harshal Pradhan
Hauke Duden
@@ -923,12 +974,16 @@ Helwing Lutz
Hendrik Visage
Henri Gomez
Henrik Gaßmann
+Henrik Holst
Henrik Storner
Henry Ludemann
Henry Roeland
Herve Amblard
+HexTheDragon
Hidemoto Nakada
+highmtworks on github
Himanshu Gupta
+Hiroki Kurosawa
Ho-chi Chen
Hoi-Ho Chan
Hongli Lai
@@ -945,6 +1000,7 @@ huzunhao on github
hydra3333 on github
Hzhijun
iammrtau on github
+Ian Blanes
Ian D Allen
Ian Fette
Ian Ford
@@ -966,9 +1022,11 @@ Ikko Ashimine
Ilguiz Latypov
Ilja van Sprundel
Illarion Taev
+illusory-dream on github
Ilya Kosarev
imilli on github
Immanuel Gregoire
+ImpatientHippo on GitHub
Inca R
infinnovation-dev on github
Ingmar Runge
@@ -984,6 +1042,7 @@ Isaiah Norton
Ishan SinghLevett
Ithubg on github
Ivan Avdeev
+Ivan Tsybulin
IvanoG on github
Ivo Bellin Salarin
iz8mbw on github
@@ -996,10 +1055,12 @@ Jacob Barthelmeh
Jacob Hoffman-Andrews
Jacob Meuser
Jacob Moshenko
+Jacob Tolar
Jactry Zeng
Jad Chamcham
Jaime Fullaondo
jakirkham on github
+Jakub Bochenski
Jakub Wilk
Jakub Zakrzewski
James Atwill
@@ -1029,7 +1090,9 @@ Jan Mazur
Jan Schaumann
Jan Schmidt
Jan Van Boghout
+Jan Venekamp
Jan Verbeek
+Jan-Piet Mens
JanB on github
Janne Johansson
Jared Jennings
@@ -1050,6 +1113,7 @@ Javier G. Sogo
Javier Navarro
Javier Sixto
Jay Austin
+Jay Dommaschk
Jayesh A Shah
Jaz Fresh
Jean Fabrice
@@ -1076,6 +1140,7 @@ Jeff Weber
Jeffrey Tolar
Jeffrey Walton
jeffrson on github
+Jenny Heino
Jens Finkhaeuser
Jens Rantil
Jens Schleusener
@@ -1103,7 +1168,10 @@ Jesse Chisholm
Jesse Noller
Jesse Tan
jethrogb on github
+jhoyla on github
Jie He
+Jilayne Lovejoy
+Jim Beveridge
Jim Drash
Jim Freeman
Jim Fuller
@@ -1139,6 +1207,7 @@ Johannes G. Kristinsson
Johannes Lesr
Johannes Schindelin
John A. Bristor
+John Bampton
John Bradshaw
John Butterfield
John Coffey
@@ -1149,6 +1218,7 @@ John Dennis
John Dunn
John E. Malmberg
John Gardiner Myers
+John H. Ayad
John Hascall
John Janssen
John Joseph Bachir
@@ -1185,6 +1255,7 @@ Jon Travis
Jon Turner
Jon Wilkes
Jonas Forsman
+Jonas Haag
Jonas Minnberg
Jonas Schnelli
Jonas Vautherin
@@ -1197,6 +1268,7 @@ Jonathan Nieder
Jonathan Watt
Jonathan Wernberg
Jongki Suwandi
+jonny112 on github
Joombalaya on github
Joonas Kuorilehto
Jordan Brown
@@ -1209,13 +1281,13 @@ Josh Kapell
Josh Soref
joshhe on github
Joshua Kwan
+Joshua Root
Joshua Swink
Josie Huddleston
Josip Medved
Josue Andrade Gomes
José Joaquín Atria
Jozef Kralik
-JP Mens
Juan Barreto
Juan F. Codagnone
Juan Ignacio Hervás
@@ -1239,13 +1311,16 @@ Jun-ya Kato
jungle-boogie on github
Junho Choi
Jurij Smakov
+jurisuk on github
Juro Bystricky
+justchen1369 on github
Justin Clift
Justin Ehlert
Justin Fletcher
Justin Karneges
Justin Maggard
jveazey on github
+jvvprasad78 on github
jzinn on github
János Fekete
Jérémy Rocher
@@ -1257,6 +1332,7 @@ ka7 on github
Kael1117 on github
Kai Engert
Kai Noda
+Kai Pastor
Kai Sommerfeld
Kai-Uwe Rommel
Kalle Vahlman
@@ -1264,6 +1340,7 @@ Kamil Dudka
Kane York
Kang Lin
Kang-Jin Lee
+Kantanat Wannapaka
Kari Pahula
Karl Chen
Karl Moerder
@@ -1275,9 +1352,11 @@ Katsuhiko YOSHIDA
Kazuho Oku
Kees Cook
Kees Dekker
+Keitagit-kun on github
Keith MacDonald
Keith McGuigan
Keith Mok
+Kelly Kaoudis
Ken Brown
Ken Hirsch
Ken Rastatter
@@ -1286,6 +1365,7 @@ Kenny To
Kent Boortz
Kerem Kat
Keshav Krity
+Kevin Adler
Kevin Baughman
Kevin Burke
Kevin Fisk
@@ -1313,6 +1393,7 @@ Koichi Shiraishi
kokke on github
Konstantin Isakov
Konstantin Kushnir
+KotlinIsland on github
kotoriのねこ
kouzhudong on github
Kovalkov Dmitrii
@@ -1328,6 +1409,7 @@ Kristoffer Gleditsch
Kunal Chandarana
Kunal Ekawde
Kurt Fankhauser
+Kushal Das
Kwon-Young Choi
Kyle Abramowitz
Kyle Edwards
@@ -1360,6 +1442,8 @@ Laurie Clark-Michalek
Lawrence Gripper
Lawrence Matthews
Lawrence Wagerfield
+Leah Neukirchen
+Leandro Coutinho
Legoff Vincent
Lehel Bernadt
Leif W
@@ -1377,6 +1461,8 @@ Leonardo Taccari
Leszek Kubik
Li Xinwei
Liam Healy
+Liam Warfield
+LigH-de on github
lijian996 on github
Lijo Antony
lilongyan-huawei on github
@@ -1389,6 +1475,7 @@ Linus Nielsen Feltzing
Linus Nordberg
Lior Kaplan
Lisa Xu
+Litter White
Liviu Chircu
Liza Alenchery
lllaffer on github
@@ -1418,10 +1505,12 @@ Luke Amery
Luke Call
Luke Dashjr
Luke Granger-Brown
+luminixinc on github
Luo Jinghua
Luong Dinh Dung
Luz Paz
Luật Nguyễn
+lwthiker on github
Lyman Epp
Lyndon Hill
M.R.T on github
@@ -1461,11 +1550,13 @@ Marcin Gryszkalis
Marcin Konicki
Marco Deckel
Marco G. Salvagno
+Marco Kamner
Marco Maggi
Marcos Diazr
Marcus Hoffmann
Marcus Klein
Marcus Sundberg
+Marcus T
Marcus Webster
Marian Klymov
Mario Schroeder
@@ -1475,6 +1566,7 @@ Mark Davies
Mark Dodgson
Mark Hamilton
Mark Incley
+Mark Itzcovitz
Mark Karpeles
Mark Lentczner
Mark Nottingham
@@ -1514,8 +1606,10 @@ Martin Lemke
Martin Skinner
Martin Staael
Martin Storsjö
+Martin Strunz
Martin V
Martin Vejnár
+Martin Ågren
Marty Kuhrt
Maruko
Masaya Suzuki
@@ -1523,9 +1617,11 @@ masbug on github
Massimiliano Fantuzzi
Massimiliano Ziccardi
Massimo Callegari
+MasterInQuestion on github
Mateusz Loskot
Mathias Axelsson
Mathias Gumz
+Mathieu Carbonneaux
Mathieu Legare
Matias N. Goldberg
Mats Lidell
@@ -1538,6 +1634,7 @@ Matt McClure
Matt Veenstra
Matt Witherspoon
Matt Wixson
+Matteo Baccan
Matteo Bignotti
Matteo Bignottignotti
Matteo Rocco
@@ -1545,6 +1642,7 @@ Matthew Blain
Matthew Clarke
Matthew Hall
Matthew Kerwin
+Matthew Thompson
Matthew Whitehead
Matthias Bolte
Matthias Gatto
@@ -1558,6 +1656,7 @@ Max Dymond
Max Katsev
Max Kellermann
Max Khon
+Max Mehl
Max Peal
Max Savenkov
Max Zettlmeißl
@@ -1568,6 +1667,8 @@ Maxime Larocque
Maxime Legros
mbeifuss on github
mccormickt12 on github
+Median Median Stride
+mehatzri on github
Mehmet Bozkurt
Mekonikum
Melissa Mears
@@ -1584,10 +1685,12 @@ Michael Calmer
Michael Cronenworth
Michael Curtis
Michael Day
+Michael Drake
Michael Felt
Michael Forney
Michael Gmelin
Michael Goffioul
+Michael Heimpold
Michael Hordijk
Michael Jahn
Michael Jerris
@@ -1610,6 +1713,7 @@ Michael Smith
Michael Stapelberg
Michael Steuer
Michael Stillwell
+Michael Trebilcock
Michael Vittiglio
Michael Wallner
Michal Bonino
@@ -1677,8 +1781,10 @@ Muhammed Yavuz Nuzumlalı
Murugan Balraj
Muz Dima
Myk Taylor
+n0name321 on github
Nach M. S.
Nagai H
+Nao Yonashiro
naost3rn on github
Nate Prewitt
Nathan Coulter
@@ -1689,6 +1795,7 @@ Nathaniel R. Lewis
Nathaniel Waisbrot
Naveen Chandran
Naveen Noel
+Neal McBurnett
Neal Poole
nedres on github
neex on github
@@ -1698,6 +1805,7 @@ Neil Bowers
Neil Dunbar
Neil Kolban
Neil Spring
+neutric on github
nevv on HackerOne/curl
Niall O'Reilly
niallor on github
@@ -1705,6 +1813,8 @@ nian6324 on github
nianxuejie on github
Nic Roets
Nicholas Maniscalco
+Nick Banks
+Nick Coghlan
Nick Draffen
Nick Gimbrone
Nick Humfrey
@@ -1720,6 +1830,7 @@ Nicolas Grekas
Nicolas Guillier
Nicolas Morey-Chaisemartin
Nicolas Sterchele
+Niels Martignène
Niels van Tongeren
Nikita Schmidt
Nikitinskit Dmitriy
@@ -1745,6 +1856,7 @@ Norbert Kett
Norbert Novotny
nosajsnikta on github
NTMan on Github
+Nuru on github
Octavio Schroeder
Ofer
Okhin Vasilij
@@ -1760,12 +1872,14 @@ Oli Kingshott
Oliver Gondža
Oliver Graute
Oliver Kuckertz
+Oliver Roberts
Oliver Schindler
Oliver Urbann
Olivier Berger
Olivier Brunel
Omar Ramadan
omau on github
+opensignature on github
Orange Tsai
Oren Souroujon
Oren Tirosh
@@ -1821,6 +1935,7 @@ Paul Nolan
Paul Oliver
Paul Querna
Paul Saab
+Paul Seligman
Paul Vixie
Paulo Roberto Tomasi
Pavel Cenek
@@ -1834,6 +1949,7 @@ Pavel Volgarev
Pavol Markovic
Pawel A. Gajda
Pawel Kierski
+Paweł Kowalski
Paweł Wegner
Pedro Larroy
Pedro Monreal
@@ -1850,6 +1966,7 @@ Peter Bray
Peter Forret
Peter Frühberger
Peter Gal
+Peter Goodman
Peter Heuchert
Peter Hjalmarsson
Peter Korsgaard
@@ -1876,6 +1993,7 @@ Petr Bahula
Petr Novak
Petr Pisar
Petr Voytsik
+Petr Štetiar
Phil Blundell
Phil Crump
Phil E. Taylor
@@ -1884,6 +2002,7 @@ Phil Lisiecki
Phil Pellouchoud
Philip Craig
Philip Gladstone
+Philip Heiduck
Philip Langdale
Philip Prindeville
Philipp Klaus Krause
@@ -1899,6 +2018,7 @@ Pierre Joye
Pierre Yager
Pierre Ynard
Pierre-Yves Bigourdan
+Pierrick Charron
Piotr Dobrogost
Piotr Komborski
Po-Chuan Hsieh
@@ -1908,7 +2028,10 @@ Poul T Lomholt
Pramod Sharma
Prash Dush
Praveen Pvs
+Prithvi MK
+privetryan on github
Priyanka Shah
+ProceduralMan on github
Przemysław Tomaszewski
pszemus on github
puckipedia on github
@@ -1918,6 +2041,7 @@ Quagmire
Quanah Gibson-Mount
Quentin Balland
Quinn Slack
+r-a-sattarov on github
R. Dennis Steed
Radek Zajic
Radoslav Georgiev
@@ -1972,8 +2096,10 @@ Rene Bernhardt
Rene Rebe
Reuven Wachtfogel
Reza Arbab
+Rianov Viacheslav
Ricardo Cadime
Ricardo Gomes
+Ricardo M. Correia
Ricardo Martins
Rich Burridge
Rich FitzJohn
@@ -2016,6 +2142,7 @@ Rider Linden
RiderALT on github
Rikard Falkeborn
rl1987 on github
+Rob Boeckermann
Rob Cotrone
Rob Crittenden
Rob Davies
@@ -2023,8 +2150,12 @@ Rob Jones
Rob Sanders
Rob Stanzel
Rob Ward
+RobBotic1 on github
+Robby Simpson
Robert A. Monat
Robert B. Harris
+Robert Brose
+Robert Charles Muir
Robert D. Young
Robert Dunaj
Robert Foreman
@@ -2037,6 +2168,7 @@ Robert Ronto
Robert Schumann
Robert Weaver
Robert Wruck
+Robin A. Meade
Robin Cornelius
Robin Douine
Robin Johnson
@@ -2067,6 +2199,7 @@ Ron Eldor
Ron Parker
Ron Zapp
Ronnie Mose
+Rosen Penev
Rosimildo da Silva
Ross Burton
Roy Bellingan
@@ -2091,6 +2224,7 @@ Ryan Sleevi
Ryan Winograd
ryancaicse on github
Ryuichi KAWAMATA
+rzrymiak on github
Rémy Léone
S. Moonesamy
Sai Ram Kunala
@@ -2113,12 +2247,15 @@ Samuel Thibault
Samuel Tranchet
Sander Gates
Sandor Feldi
+Sandro Jaeckel
Santhana Todatry
Santino Keupp
Saqib Ali
Sara Golemon
Saran Neti
Sascha Swiercy
+Sascha Zengler
+Satadru Pramanik
Saul good
Saurav Babu
sayrer on github
@@ -2139,9 +2276,11 @@ Sebastian Haglund
Sebastian Mundry
Sebastian Pohlschmidt
Sebastian Rasmussen
+Sebastian Sterk
Senthil Raja Velu
Sergei Kuzmin
Sergei Nikulov
+Sergey Bronnikov
Sergey Markelov
Sergey Ogryzkov
Sergey Tatarincev
@@ -2156,8 +2295,10 @@ Serj Kalichev
Seshubabu Pasam
Seth Mos
Sevan Janiyan
+Sgharat on github
Sh Diao
Shachaf Ben-Kiki
+ShadowZzj on github
Shailesh Kapse
Shankar Jadhavar
Shao Shuchao
@@ -2165,6 +2306,7 @@ Sharad Gupta
Shard
Sharon Brizinov
Shaun Jackman
+Shaun Mirani
Shawn Landden
Shawn Poulson
Shikha Sharma
@@ -2174,9 +2316,11 @@ shithappens2016 on github
Shlomi Fish
Shmulik Regev
Siddhartha Prakash Jain
+siddharthchhabrap on github
Sidney San Martín
Siegfried Gyuricsko
silveja1 on github
+Simon Berger
Simon Chalifoux
Simon Dick
Simon H.
@@ -2197,6 +2341,7 @@ Spezifant on github
Spiridonoff A.V
Spoon Man
Spork Schivago
+ssdbest on github
sspiri on github
sstruchtrup on github
Stadler Stephan
@@ -2205,6 +2350,7 @@ Stan van de Burgt
Stanislav Ivochkin
Stanislav Zidek
Stathis Kapnidis
+Stav Nir
steelman on github
Stefan Agner
Stefan Bühler
@@ -2231,6 +2377,7 @@ Stephan Lagerholm
Stephan Mühlstrasser
Stephan Szabo
Stephane Pellegrino
+Stephen Boost
Stephen Brokenshire
Stephen Collyer
Stephen Kick
@@ -2254,10 +2401,12 @@ Steven Gu
Steven M. Schweda
Steven Parkes
Steven Penny
+Stewart Gebbie
Stian Soiland-Reyes
Stoned Elipot
stootill on github
Stuart Henderson
+Sukanya Hanumanthu
SumatraPeter on github
Sune Ahlgren
Sunny Bean
@@ -2280,10 +2429,12 @@ Tae Hyoung Ahn
Taiyu Len
Taneli Vähäkangas
Tanguy Fautre
+Taras Kushnir
tarek112 on github
Tatsuhiro Tsujikawa
tawmoto on github
tbugfinder on github
+Ted Lyngmo
Teemu Yli-Elsila
Temprimus
Terri Oda
@@ -2291,14 +2442,17 @@ Terry Wu
thanhchungbtc on github
The Infinnovation team
TheAssassin on github
+TheKnarf on github
Theodore Dubois
therealhirudo on github
+Thiago Suchorski
tholin on github
Thomas Bouzerar
Thomas Braun
Thomas Danielsson
Thomas Gamper
Thomas Glanzmann
+Thomas Guillem
Thomas J. Moore
Thomas Klausner
Thomas L. Shinnick
@@ -2310,6 +2464,7 @@ Thomas Schwinge
Thomas Tonino
Thomas van Hesteren
Thomas Vegas
+Thomas Weißschuh
Thorsten Schöning
Tiit Pikma
Till Maas
@@ -2348,8 +2503,10 @@ Tobias Hintze
Tobias Lindgren
Tobias Markus
Tobias Nießen
+Tobias Nygren
Tobias Nyholm
Tobias Rundström
+Tobias Schaefer
Tobias Stoeckmann
Toby Peterson
Todd A Ouska
@@ -2359,6 +2516,7 @@ Todd Short
Todd Vierling
Tom Benoist
Tom Donovan
+Tom Eccles
Tom G. Christensen
Tom Grace
Tom Greenslade
@@ -2400,6 +2558,7 @@ Toshio Kuratomi
Toshiyuki Maezawa
tpaukrt on github
Traian Nicolescu
+Trail of Bits
Travis Burtrum
Travis Obenhaus
Trivikram Kamat
@@ -2416,6 +2575,7 @@ Ulf Samuelsson
Ulrich Doehner
Ulrich Telle
Ulrich Zadow
+updatede on github
UrsusArctos on github
User Sg
ustcqidi on github
@@ -2428,6 +2588,7 @@ Valerii Zapodovnikov
vanillajonathan on github
Varnavas Papaioannou
Vasiliy Faronov
+Vasiliy Ulyanov
Vasily Lobaskin
Vasy Okhin
Venkat Akella
@@ -2451,6 +2612,7 @@ Vincent Sanders
Vincent Torri
vitaha85 on github
Vitaly Varyvdin
+vl409 on github
Vlad Grachov
Vlad Ureche
Vladimir Grishchenko
@@ -2459,12 +2621,14 @@ Vladimir Lazarenko
Vladimir Panteleev
Vladimir Varlamov
Vlastimil Ovčáčík
+vlubart on github
Vojtech Janota
Vojtech Minarik
Vojtěch Král
Volker Schmid
Vsevolod Novikov
vshmuk on hackerone
+vvb2060 on github
Vyron Tsingaras
W. Mark Kubacki
Waldek Kozba
@@ -2485,6 +2649,7 @@ Wham Bang
Wilfredo Sanchez
Will Dietz
Will Roberts
+Willem Hoek
Willem Sparreboom
William A. Rowe Jr
William Ahern
@@ -2492,8 +2657,10 @@ William Desportes
wmsch on github
wncboy on github
Wojciech Zwiefka
+Wolf Vollprecht
Wouter Van Rooy
Wu Yongzheng
+Wu Zheng
Wyatt O'Day
Wyatt OʼDay
x2018 on github
@@ -2502,6 +2669,7 @@ XhmikosR on github
XhstormR on github
Xiang Xiao
Xiangbin Li
+Xiaoke Wang
Xiaoyin Liu
XmiliaH on github
xnynx on github
@@ -2519,6 +2687,7 @@ ygthien on github
Yi Huang
Yiming Jing
Yingwei Liu
+yiyuaner on github
Ymir1711 on github
Yonggang Luo
Yongkang Huang
@@ -2529,6 +2698,7 @@ Yu Xin
Yukihiro Kawada
Yun SangHo
Yuri Slobodyanyuk
+Yuriy Chernyshov
Yuriy Sosov
Yusuke Nakamura
Yves Arrouye
@@ -2542,6 +2712,7 @@ zelinchen on github
Zenju on github
Zero King
Zhang Xiuhua
+zhanghu on xiaomi
Zhao Yisha
Zhaoyang Wu
Zhibiao Wu
@@ -2553,6 +2724,7 @@ Zvi Har'El
zzq1015 on github
Ádler Jonas Gross
Érico Nogueira
+Érico Nogueira Rolim
İsmail Dönmez
Łukasz Domeradzki
Štefan Kremeň
@@ -2562,3 +2734,4 @@ zzq1015 on github
ウさん
不确定
加藤郁之
+梦终无痕
diff --git a/docs/TODO b/docs/TODO
index f9052c7be..329104435 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -30,7 +30,6 @@
1.11 minimize dependencies with dynamically loaded modules
1.12 updated DNS server while running
1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION
- 1.14 Typesafe curl_easy_setopt()
1.15 Monitor connections in the connection pool
1.16 Try to URL encode given URL
1.17 Add support for IRIs
@@ -40,9 +39,7 @@
1.21 netrc caching and sharing
1.22 CURLINFO_PAUSE_STATE
1.23 Offer API to flush the connection pool
- 1.24 TCP Fast Open for windows
1.25 Expose tried IP addresses that failed
- 1.27 hardcode the "localhost" addresses
1.28 FD_CLOEXEC
1.29 Upgrade to websockets
1.30 config file parsing
@@ -67,13 +64,13 @@
4.1 HOST
4.2 Alter passive/active on failure and retry
4.3 Earlier bad letter detection
+ 4.4 Support CURLOPT_PREQUOTE for dir listings too
4.5 ASCII support
4.6 GSSAPI via Windows SSPI
4.7 STAT for LIST without data connection
- 4.8 Option to ignore private IP addresses in PASV response
5. HTTP
- 5.1 Better persistency for HTTP 1.0
+ 5.1 Provide the error body from a CONNNECT response
5.2 Set custom client ip when using haproxy protocol
5.3 Rearrange request header order
5.4 Allow SAN names in HTTP/2 server push
@@ -85,8 +82,10 @@
6.1 ditch stdin
6.2 ditch telnet-specific select
6.3 feature negotiation debug data
+ 6.4 exit immediately upon connection if stdin is /dev/null
7. SMTP
+ 7.1 Passing NOTIFY option to CURLOPT_MAIL_RCPT
7.2 Enhanced capability support
7.3 Add CURLOPT_MAIL_CLIENT option
@@ -117,10 +116,12 @@
13.4 Cache/share OpenSSL contexts
13.5 Export session ids
13.6 Provide callback for cert verification
+ 13.7 Less memory massaging with Schannel
13.8 Support DANE
13.9 TLS record padding
13.10 Support Authority Information Access certificate extension (AIA)
13.11 Support intermediate & root pinning for PINNEDPUBLICKEY
+ 13.12 Reduce CA certificate bundle reparsing
13.13 Make sure we forbid TLS 1.3 post-handshake authentication
13.14 Support the clienthello extension
@@ -139,17 +140,17 @@
17. SSH protocols
17.1 Multiplexing
17.2 Handle growing SFTP files
+ 17.3 Read keys from ~/.ssh/id_ecdsa, id_ed25519
17.4 Support CURLOPT_PREQUOTE
17.5 SSH over HTTPS proxy with more backends
+ 17.6 SFTP with SCP://
18. Command line tool
18.1 sync
18.2 glob posts
- 18.3 prevent file overwriting
18.4 --proxycommand
18.5 UTF-8 filenames in Content-Disposition
18.6 Option to make -Z merge lined based outputs on stdout
- 18.7 at least N milliseconds between requests
18.8 Consider convenience options for JSON and XML?
18.9 Choose the name of file in braces for complex URLs
18.10 improve how curl works in a windows console window
@@ -184,8 +185,7 @@
20.5 Add support for concurrent connections
20.6 Use the RFC6265 test suite
20.7 Support LD_PRELOAD on macOS
- 20.8 Run web-platform-tests url tests
- 20.9 Bring back libssh tests on Travis
+ 20.8 Run web-platform-tests URL tests
21. MQTT
21.1 Support rate-limiting
@@ -196,6 +196,10 @@
1.1 TFO support on Windows
+ libcurl supports the CURLOPT_TCP_FASTOPEN option since 7.49.0 for Linux and
+ Mac OS. Windows supports TCP Fast Open starting with Windows 10, version 1607
+ and we should add support for it.
+
TCP Fast Open is supported on several platforms but not on Windows. Work on
this was once started but never finished.
@@ -298,23 +302,6 @@
See https://github.com/curl/curl/issues/2734
-1.14 Typesafe curl_easy_setopt()
-
- One of the most common problems in libcurl using applications is the lack of
- type checks for curl_easy_setopt() which happens because it accepts varargs
- and thus can take any type.
-
- One possible solution to this is to introduce a few different versions of the
- setopt version for the different kinds of data you can set.
-
- curl_easy_set_num() - sets a long value
-
- curl_easy_set_large() - sets a curl_off_t value
-
- curl_easy_set_ptr() - sets a pointer
-
- curl_easy_set_cb() - sets a callback PLUS its callback data
-
1.15 Monitor connections in the connection pool
libcurl's connection cache or pool holds a number of open connections for the
@@ -324,10 +311,11 @@
reuse purpose it is verified that it is still alive.
Those connections may get closed by the server side for idleness or they may
- get a HTTP/2 ping from the peer to verify that they are still alive. By adding
- monitoring of the connections while in the pool, libcurl can detect dead
- connections (and close them) better and earlier, and it can handle HTTP/2
- pings to keep such ones alive even when not actively doing transfers on them.
+ get an HTTP/2 ping from the peer to verify that they are still alive. By
+ adding monitoring of the connections while in the pool, libcurl can detect
+ dead connections (and close them) better and earlier, and it can handle
+ HTTP/2 pings to keep such ones alive even when not actively doing transfers
+ on them.
1.16 Try to URL encode given URL
@@ -388,31 +376,15 @@
An API could allow a forced flush or just a forced loop that would properly
close all connections that have been closed by the server already.
-1.24 TCP Fast Open for windows
-
- libcurl supports the CURLOPT_TCP_FASTOPEN option since 7.49.0 for Linux and
- Mac OS. Windows supports TCP Fast Open starting with Windows 10, version 1607
- and we should add support for it.
-
1.25 Expose tried IP addresses that failed
- When libcurl fails to connect to a host, it should be able to offer the
- application the list of IP addresses that were used in the attempt.
+ When libcurl fails to connect to a host, it could offer the application the
+ addresses that were used in the attempt. Source + dest IP, source + dest port
+ and protocol (UDP or TCP) for each failure. Possibly as a callback. Perhaps
+ also provide "reason".
https://github.com/curl/curl/issues/2126
-1.27 hardcode the "localhost" addresses
-
- There's this new spec getting adopted that says "localhost" should always and
- unconditionally be a local address and not get resolved by a DNS server. A
- fine way for curl to fix this would be to simply hard-code the response to
- 127.0.0.1 and/or ::1 (depending on what IP versions that are requested). This
- is what the browsers probably will do with this hostname.
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=1220810
-
- https://tools.ietf.org/html/draft-ietf-dnsop-let-localhost-be-localhost-02
-
1.28 FD_CLOEXEC
It sets the close-on-exec flag for the file descriptor, which causes the file
@@ -552,7 +524,7 @@
HOST is a command for a client to tell which host name to use, to offer FTP
servers named-based virtual hosting:
- https://tools.ietf.org/html/rfc7151
+ https://datatracker.ietf.org/doc/html/rfc7151
4.2 Alter passive/active on failure and retry
@@ -566,6 +538,13 @@
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 Support CURLOPT_PREQUOTE for dir listings too
+
+ The lack of support is mostly an oversight and requires the FTP state machine
+ to get updated to get fixed.
+
+ https://github.com/curl/curl/issues/8602
+
4.5 ASCII support
FTP ASCII transfers do not follow RFC959. They do not convert the data
@@ -585,18 +564,16 @@
This is not detailed in any FTP specification.
-4.8 Option to ignore private IP addresses in PASV response
-
- Some servers respond with and some other FTP client implementations can
- ignore private (RFC 1918 style) IP addresses when received in PASV responses.
- To consider for libcurl as well. See https://github.com/curl/curl/issues/1455
-
5. HTTP
-5.1 Better persistency for HTTP 1.0
+5.1 Provide the error body from a CONNNECT response
- "Better" support for persistent connections over HTTP 1.0
- https://curl.se/bug/feature.cgi?id=1089001
+ When curl receives a body response from a CONNECT request to a proxy, it will
+ always just read and ignore it. It would make some users happy if curl
+ instead optionally would be able to make that responsible available. Via a new
+ callback? Through some other means?
+
+ See https://github.com/curl/curl/issues/9513
5.2 Set custom client ip when using haproxy protocol
@@ -672,9 +649,24 @@
Add telnet feature negotiation data to the debug callback as header data.
+6.4 exit immediately upon connection if stdin is /dev/null
+
+ If it did, curl could be used to probe if there's an server there listening
+ on a specific port. That is, the following command would exit immediately
+ after the connection is established with exit code 0:
+
+ curl -s --connect-timeout 2 telnet://example.com:80 </dev/null
7. SMTP
+7.1 Passing NOTIFY option to CURLOPT_MAIL_RCPT
+
+ Is there a way to pass the NOTIFY option to the CURLOPT_MAIL_RCPT option ? I
+ set a string that already contains a bracket. For instance something like
+ that: curl_slist_append( recipients, "<foo@bar> NOTIFY=SUCCESS,FAILURE" );
+
+ https://github.com/curl/curl/issues/8232
+
7.2 Enhanced capability support
Add the ability, for an application that uses libcurl, to obtain the list of
@@ -811,6 +803,13 @@
certificate, but this does not seem to be exposed in the libcurl APIs. Could
it be? There's so much that could be done if it were.
+13.7 Less memory massaging with Schannel
+
+ The Schannel backend does a lot of custom memory management we would rather
+ avoid: the repeated alloc + free in sends and the custom memory + realloc
+ system for encrypted and decrypted data. That should be avoided and reduced
+ for 1) efficiency and 2) safety.
+
13.8 Support DANE
DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL
@@ -856,6 +855,15 @@
Adding this feature would make curls pinning 100% compatible to HPKP and
allow more flexible pinning.
+13.12 Reduce CA certificate bundle reparsing
+
+ When using the OpenSSL backend, curl will load and reparse the CA bundle at
+ the creation of the "SSL context" when it sets up a connection to do a TLS
+ handshake. A more effective way would be to somehow cache the CA bundle to
+ avoid it having to be repeatedly reloaded and reparsed.
+
+ See https://github.com/curl/curl/issues/9379
+
13.13 Make sure we forbid TLS 1.3 post-handshake authentication
RFC 8740 explains how using HTTP/2 must forbid the use of TLS 1.3
@@ -870,7 +878,7 @@
that previously (in older TLS version) were not set. The clienthello
extension adds padding to avoid that size range.
- https://tools.ietf.org/html/rfc7685
+ https://datatracker.ietf.org/doc/html/rfc7685
https://github.com/curl/curl/issues/2299
14. GnuTLS
@@ -943,6 +951,14 @@
https://github.com/curl/curl/issues/4344
+17.3 Read keys from ~/.ssh/id_ecdsa, id_ed25519
+
+ The libssh2 backend in curl is limited to only reading keys from id_rsa and
+ id_dsa, which makes it fail connecting to servers that use more modern key
+ types.
+
+ https://github.com/curl/curl/issues/8586
+
17.4 Support CURLOPT_PREQUOTE
The two other QUOTE options are supported for SFTP, but this was left out for
@@ -955,6 +971,12 @@
functionality with the libssh2 backend. Presumably, this support
can/could be added for the other backends as well.
+17.6 SFTP with SCP://
+
+ OpenSSH 9 switched their 'scp' tool to speak SFTP under the hood. Going
+ forward it might be worth having curl or libcurl attempt SFTP if SCP fails to
+ follow suite.
+
18. Command line tool
18.1 sync
@@ -971,14 +993,6 @@
Globbing support for -d and -F, as in 'curl -d "name=foo[0-9]" URL'.
This is easily scripted though.
-18.3 prevent file overwriting
-
- Add an option that prevents curl from overwriting existing local files. When
- used, and there already is an existing file with the target file name
- (either -O or -o), a number should be appended (and increased if already
- existing). So that index.html becomes first index.html.1 and then
- index.html.2 etc.
-
18.4 --proxycommand
Allow the user to make curl run a command and use its stdio to make requests
@@ -1004,17 +1018,6 @@
https://github.com/curl/curl/issues/5175
-18.7 at least N milliseconds between requests
-
- Allow curl command lines issue a lot of request against services that limit
- users to no more than N requests/second or similar. Could be implemented with
- an option asking that at least a certain time has elapsed since the previous
- request before the next one will be performed. Example:
-
- $ curl "https://example.com/api?input=[1-1000]" -d yadayada --after 500
-
- See https://github.com/curl/curl/issues/3920
-
18.8 Consider convenience options for JSON and XML?
Could we add `--xml` or `--json` to add headers needed to call rest API:
@@ -1148,9 +1151,9 @@
18.21 retry on the redirected-to URL
When curl is told to --retry a failed transfer and follows redirects, it
- might get a HTTP 429 response from the redirected-to URL and not the original
- one, which then could make curl decide to rather retry the transfer on that
- URL only instead of the original operation to the original URL.
+ might get an HTTP 429 response from the redirected-to URL and not the
+ original one, which then could make curl decide to rather retry the transfer
+ on that URL only instead of the original operation to the original URL.
Perhaps extra emphasized if the original transfer is a large POST that
redirects to a separate GET, and that GET is what gets the 529
@@ -1292,22 +1295,15 @@
properly. Look into making the preload support in runtests.pl portable such
that it uses DYLD_INSERT_LIBRARIES on macOS.
-20.8 Run web-platform-tests url tests
+20.8 Run web-platform-tests URL tests
- Run web-platform-tests url tests and compare results with browsers on wpt.fyi
+ Run web-platform-tests URL tests and compare results with browsers on wpt.fyi
It would help us find issues to fix and help us document where our parser
differs from the WHATWG URL spec parsers.
See https://github.com/curl/curl/issues/4477
-20.9 Bring back libssh tests on Travis
-
- In https://github.com/curl/curl/pull/7012 we remove the libssh builds and
- tests from Travis CI due to them not working. This should be remedied and
- libssh builds be brought back.
-
-
21. MQTT
21.1 Support rate-limiting
diff --git a/docs/TheArtOfHttpScripting.md b/docs/TheArtOfHttpScripting.md
index 83b0905dc..7d0d77e66 100644
--- a/docs/TheArtOfHttpScripting.md
+++ b/docs/TheArtOfHttpScripting.md
@@ -30,7 +30,7 @@
request a particular action, and then the server replies a few text lines
before the actual requested content is sent to the client.
- The client, curl, sends a HTTP request. The request contains a method (like
+ The client, curl, sends an HTTP request. The request contains a method (like
GET, POST, HEAD etc), a number of request headers and sometimes a request
body. The HTTP server responds with a status line (indicating if things went
well), response headers and most often also a response body. The "body" part
@@ -59,14 +59,14 @@
want to know the amount of milliseconds between two points in a transfer. For
those, and other similar situations, the
[`--trace-time`](https://curl.se/docs/manpage.html#--trace-time) option
- is what you need. it will prepend the time to each trace output line:
+ is what you need. It will prepend the time to each trace output line:
curl --trace-ascii d.txt --trace-time http://example.com/
## 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`.
+ somewhere to avoid that, most often that is done with `-o` or `-O`.
# URL
@@ -74,7 +74,7 @@
The Uniform Resource Locator format is how you specify the address of a
particular resource on the Internet. You know these, you have seen URLs like
- https://curl.se or https://yourbank.com a million times. RFC 3986 is the
+ https://curl.se or https://example.com a million times. RFC 3986 is the
canonical spec. And yeah, the formal name is not URL, it is URI.
## Host
@@ -103,7 +103,7 @@
The port number you specify in the URL is the number that the server uses to
offer its services. Sometimes you may use a proxy, and then you may
need to specify that proxy's port number separately from what curl needs to
- connect to the server. Like when using a HTTP proxy on port 4321:
+ connect to the server. Like when using an HTTP proxy on port 4321:
curl --proxy http://proxy.example.org:4321 http://remote.example.org/
@@ -166,10 +166,10 @@
A single curl command line may involve one or many URLs. The most common case
is probably to just use one, but you can specify any amount of URLs. Yes
- any. No limits. you will then get requests repeated over and over for all the
+ any. No limits. You will then get requests repeated over and over for all the
given URLs.
- Example, send two GETs:
+ Example, send two GET requests:
curl http://url1.example.com http://url2.example.com
@@ -207,7 +207,7 @@
## Forms explained
- Forms are the general way a website can present a HTML page with fields for
+ Forms are the general way a website can present an HTML page with fields for
the user to enter data in, and then press some kind of 'OK' or 'Submit'
button to get that data sent to the server. The server then typically uses
the posted data to decide how to act. Like using the entered words to search
@@ -270,7 +270,7 @@
And to use curl to post this form with the same data filled in as before, we
could do it like:
- curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when.cgi
+ curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when/junk.cgi
This kind of POST will use the Content-Type
`application/x-www-form-urlencoded` and is the most widely used POST kind.
@@ -336,9 +336,9 @@
## Figure Out What A POST Looks Like
- When you are about fill in a form and send to a server by using curl instead
- of a browser, you are of course interested in sending a POST exactly the way
- your browser does.
+ When you are about to fill in a form and send it to a server by using curl
+ instead of a browser, you are of course interested in sending a POST exactly
+ the way your browser does.
An easy way to get to see this, is to save the HTML page with the form on
your local disk, modify the 'method' to a GET, and press the submit button
@@ -351,11 +351,11 @@
## PUT
- Perhaps the best way to upload data to a HTTP server is to use PUT. Then
+ Perhaps the best way to upload data to an HTTP server is to use PUT. Then
again, this of course requires that someone put a program or script on the
- server end that knows how to receive a HTTP PUT stream.
+ server end that knows how to receive an HTTP PUT stream.
- Put a file to a HTTP server with curl:
+ Put a file to an HTTP server with curl:
curl --upload-file uploadfile http://www.example.com/receive.cgi
@@ -386,8 +386,8 @@
## 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
+ Sometimes your HTTP access is only available through the use of an HTTP
+ proxy. This seems to be especially common at various companies. An HTTP proxy
may require its own user and password to allow the client to get through to
the Internet. To specify those with curl, run something like:
@@ -416,7 +416,7 @@
## Referer
- A HTTP request may include a 'referer' field (yes it is misspelled), which
+ An 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
resource. Some programs/scripts check the referer field of requests to verify
that this was not arriving from an external site or an unknown page. While
@@ -435,7 +435,7 @@
applications use this information to decide how to display pages. Silly web
programmers try to make different pages for users of different browsers to
make them look the best possible for their particular browsers. They usually
- also do different kinds of javascript, vbscript etc.
+ also do different kinds of JavaScript etc.
At times, you will see that getting a page with curl will not return the same
page that you see when getting the page with your browser. Then you know it
@@ -471,15 +471,15 @@
If you use curl to POST to a site that immediately redirects you to another
page, you can safely use
[`--location`](https://curl.se/docs/manpage.html#-L) (`-L`) and
- `--data`/`--form` together. curl will only use POST in the first request, and
+ `--data`/`--form` together. Curl will only use POST in the first request, and
then revert to GET in the following operations.
## Other redirects
- Browser typically support at least two other ways of redirects that curl
+ Browsers typically support at least two other ways of redirects that curl
does not: 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.
+ JavaScript to do it.
# Cookies
@@ -554,13 +554,12 @@
SSL. SSL encrypts all the data that is sent and received over the network and
thus makes it harder for attackers to spy on sensitive information.
- SSL (or TLS as the latest version of the standard is called) offers a
- truckload of advanced features to allow all those encryptions and key
- infrastructure mechanisms encrypted HTTP requires.
+ SSL (or TLS as the current version of the standard is called) offers a set of
+ advanced features to do secure transfers over HTTP.
Curl supports encrypted fetches when built to use a TLS library and it can be
built to use one out of a fairly large set of libraries - `curl -V` will show
- which one your curl was built to use (if any!). To get a page from a HTTPS
+ which one your curl was built to use (if any!). To get a page from an HTTPS
server, simply run curl like:
curl https://secure.example.com
@@ -572,7 +571,7 @@
side certificates. All certificates are locked with a pass phrase, which you
need to enter before the certificate can be used by curl. The pass phrase
can be specified on the command line or if not, entered interactively when
- curl queries for it. Use a certificate with curl on a HTTPS server like:
+ curl queries for it. Use a certificate with curl on an HTTPS server like:
curl --cert mycert.pem https://secure.example.com
@@ -584,7 +583,7 @@
verified.
More about server certificate verification and ca cert bundles can be read in
- the [SSLCERTS document](https://curl.se/docs/sslcerts.html).
+ the [`SSLCERTS` document](https://curl.se/docs/sslcerts.html).
At times you may end up with your own CA cert store and then you can tell
curl to use that to verify the server's certificate:
@@ -598,14 +597,15 @@
Doing fancy stuff, you may need to add or change elements of a single curl
request.
- For example, you can change the POST request to a PROPFIND and send the data
- as `Content-Type: text/xml` (instead of the default Content-Type) like this:
+ For example, you can change the POST method to `PROPFIND` and send the data
+ as `Content-Type: text/xml` (instead of the default `Content-Type`) like
+ this:
curl --data "<xml>" --header "Content-Type: text/xml" \
--request PROPFIND example.com
You can delete a default header by providing one without content. Like you
- can ruin the request by chopping off the Host: header:
+ can ruin the request by chopping off the `Host:` header:
curl --header "Host:" http://www.example.com
@@ -648,13 +648,13 @@
make sure you got there through their login page) so you should make a habit
of first getting the login-form page to capture the cookies set there.
- Some web-based login systems feature various amounts of javascript, and
+ Some web-based login systems feature various amounts of JavaScript, and
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 is not enough to let you repeat the behavior
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.
+ JavaScript need.
In the actual `<form>` tag for the login, lots of sites fill-in
random/session or otherwise secretly generated hidden tags and you may need
diff --git a/docs/URL-SYNTAX.md b/docs/URL-SYNTAX.md
index 6ebf86bd4..691fcceac 100644
--- a/docs/URL-SYNTAX.md
+++ b/docs/URL-SYNTAX.md
@@ -5,7 +5,7 @@
The official "URL syntax" is primarily defined in these two different
specifications:
- - [RFC 3986](https://tools.ietf.org/html/rfc3986) (although URL is called
+ - [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) (although URL is called
"URI" in there)
- [The WHATWG URL Specification](https://url.spec.whatwg.org/)
@@ -153,7 +153,7 @@ since it often means passing around the password in plain text and is thus a
security risk.
URLs for IMAP, POP3 and SMTP also support *login options* as part of the
-userinfo field. they are provided as a semicolon after the password and then
+userinfo field. They are provided as a semicolon after the password and then
the options.
## Hostname
@@ -220,7 +220,7 @@ directory listing for the root / home directory will be returned.
FTP servers typically put the user in its "home directory" after login, which
then differs between users. To explicitly specify the root directory of an FTP
-server start the path with double slash `//` or `/%2f` (2F is the hexadecimal
+server, start the path with double slash `//` or `/%2f` (2F is the hexadecimal
value of the ascii code for the slash).
## FILE
@@ -259,7 +259,7 @@ A folder list on the user's inbox:
imap://user:password@mail.example.com/INBOX
-Select the user's inbox and fetch message with uid = 1:
+Select the user's inbox and fetch message with `uid = 1`:
imap://user:password@mail.example.com/INBOX/;UID=1
@@ -289,26 +289,26 @@ subject line:
imap://user:password@mail.example.com/INBOX?SUBJECT%20shadows
-Searching via the query part of the URL `?` is a search request for the results
-to be returned as message sequence numbers (MAILINDEX). It is possible to make
-a search request for results to be returned as unique ID numbers (UID) by using
-a custom curl request via `-X`. UID numbers are unique per session (and
-multiple sessions when UIDVALIDITY is the same). For example, if you are
-searching for `"foo bar"` in header+body (TEXT) and you want the matching
-MAILINDEX numbers returned then you could search via URL:
+Searching via the query part of the URL `?` is a search request for the
+results to be returned as message sequence numbers (`MAILINDEX`). It is
+possible to make a search request for results to be returned as unique ID
+numbers (`UID`) by using a custom curl request via `-X`. `UID` numbers are
+unique per session (and multiple sessions when `UIDVALIDITY` is the same). For
+example, if you are searching for `"foo bar"` in header+body (`TEXT`) and you
+want the matching `MAILINDEX` numbers returned then you could search via URL:
imap://user:password@mail.example.com/INBOX?TEXT%20%22foo%20bar%22
-.. but if you wanted matching UID numbers you would have to use a custom request:
+If you want matching `UID` numbers you have to use a custom request:
imap://user:password@mail.example.com/INBOX -X "UID SEARCH TEXT \"foo bar\""
For more information about IMAP commands please see RFC 9051. For more
information about the individual components of an IMAP URL please see RFC 5092.
-* Note old curl versions would FETCH by message sequence number when UID was
-specified in the URL. That was a bug fixed in 7.62.0, which added MAILINDEX to
-FETCH by mail sequence number.
+* Note old curl versions would `FETCH` by message sequence number when `UID`
+was specified in the URL. That was a bug fixed in 7.62.0, which added
+`MAILINDEX` to `FETCH` by mail sequence number.
## LDAP
@@ -317,21 +317,21 @@ 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.
-Search for the DN as `My Organisation`:
+Search for the `DN` as `My Organization`:
- ldap://ldap.example.com/o=My%20Organisation
+ ldap://ldap.example.com/o=My%20Organization
-the same search but will only return postalAddress attributes:
+the same search but will only return `postalAddress` attributes:
- ldap://ldap.example.com/o=My%20Organisation?postalAddress
+ ldap://ldap.example.com/o=My%20Organization?postalAddress
-Search for an empty DN and request information about the
+Search for an empty `DN` and request information about the
`rootDomainNamingContext` attribute for an Active Directory server:
ldap://ldap.example.com/?rootDomainNamingContext
For more information about the individual components of a LDAP URL please
-see [RFC 4516](https://tools.ietf.org/html/rfc4516).
+see [RFC 4516](https://datatracker.ietf.org/doc/html/rfc4516).
## POP3
diff --git a/docs/VERSIONS.md b/docs/VERSIONS.md
index de0b0d4f8..0ec9cd518 100644
--- a/docs/VERSIONS.md
+++ b/docs/VERSIONS.md
@@ -1,7 +1,7 @@
Version Numbers and Releases
============================
- Curl is not only curl. Curl is also libcurl. they are actually individually
+ Curl is not only curl. Curl is also libcurl. They are actually individually
versioned, but they usually follow each other closely.
The version numbering is always built up using the same system:
@@ -37,7 +37,7 @@ Version Numbers and Releases
As a service to any application that might want to support new libcurl
features while still being able to build with older versions, all releases
- have the libcurl version stored in the curl/curlver.h file using a static
+ have the libcurl version stored in the `curl/curlver.h` file using a static
numbering scheme that can be used for comparison. The version number is
defined as:
@@ -45,10 +45,10 @@ Version Numbers and Releases
#define LIBCURL_VERSION_NUM 0xXXYYZZ
```
- Where XX, YY and ZZ are the main version, release and patch numbers in
+ Where `XX`, `YY` and `ZZ` are the main version, release and patch numbers in
hexadecimal. All three number fields are always represented using two digits
(eight bits each). 1.2 would appear as "0x010200" while version 9.11.7
- appears as "0x090b07".
+ appears as `0x090b07`.
This 6-digit hexadecimal number is always a greater number in a more recent
release. It makes comparisons with greater than and less than work.
diff --git a/docs/WEBSOCKET.md b/docs/WEBSOCKET.md
new file mode 100644
index 000000000..25b1e5244
--- /dev/null
+++ b/docs/WEBSOCKET.md
@@ -0,0 +1,121 @@
+<!--
+Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
+# WebSocket in curl
+
+## API
+
+The WebSocket API is described in the individual man pages for the new API.
+
+WebSocket with libcurl can be done two ways.
+
+1. Get the WebSocket frames from the server sent to the write callback. You
+ can then respond with `curl_ws_send()` from within the callback (or outside
+ of it).
+
+2. Set `CURLOPT_CONNECT_ONLY` to 2L (new for WebSocket), which makes libcurl
+ do a HTTP GET + `Upgrade:` request plus response in the
+ `curl_easy_perform()` call before it returns and then you can use
+ `curl_ws_recv()` and `curl_ws_send()` to receive and send WebSocket frames
+ from and to the server.
+
+The new options to `curl_easy_setopt()`:
+
+ `CURLOPT_WS_OPTIONS` - to control specific behavior. `CURLWS_RAW_MODE` makes
+ libcurl provide all WebSocket traffic raw in the callback.
+
+The new function calls:
+
+ `curl_ws_recv()` - receive a WebSocket frame
+
+ `curl_ws_send()` - send a WebSocket frame
+
+ `curl_ws_meta()` - return WebSocket metadata within a write callback
+
+## Max frame size
+
+The current implementation only supports frame sizes up to a max (64K right
+now). This is because the API delivers full frames and it then cannot manage
+the full 2^63 bytes size.
+
+If we decide we need to support (much) larger frames than 64K, we need to
+adjust the API accordingly to be able to deliver partial frames in both
+directions.
+
+## Errors
+
+If the given WebSocket URL (using `ws://` or `wss://`) fails to get upgraded
+via a 101 response code and instead gets another response code back from the
+HTTP server - the transfer will return `CURLE_HTTP_RETURNED_ERROR` for that
+transfer. Note then that even 2xx response codes are then considered error
+since it failed to provide a WebSocket transfer.
+
+## Test suite
+
+I looked for an existing small WebSocket server implementation with maximum
+flexibility to dissect and cram into the test suite but I ended up deciding
+that extending the existing test suite server sws to deal with WebSocket
+might be the better way.
+
+- This server is already integrated and working in the test suite
+
+- We want maximum control and ability to generate broken protocol and negative
+ tests as well. A dumber and simpler TCP server could then be easier to
+ massage into this than a "proper" WebSocket server.
+
+## Command line tool WebSocket
+
+The plan is to make curl do WebSocket similar to telnet/nc. That part of the
+work has not been started.
+
+Ideas:
+
+ - Read stdin and send off as messages. Consider newline as end of fragment.
+ (default to text? offer option to set binary)
+ - Respond to PINGs automatically
+ - Issue PINGs at some default interval (option to switch off/change interval?)
+ - Allow `-d` to specify (initial) data to send (should the format allow for
+ multiple separate frames?)
+ - Exit after N messages received, where N can be zero.
+
+## Future work
+
+- Verify the Sec-WebSocket-Accept response. It requires a sha-1 function.
+- Verify Sec-WebSocket-Extensions and Sec-WebSocket-Protocol in the response
+- Make WebSocket work with hyper
+- Consider a `curl_ws_poll()`
+- Make sure WebSocket code paths are fuzzed
+- Add client-side PING interval
+- Provide option to disable PING-PONG automation
+- Support compression (`CURLWS_COMPRESS`)
+
+## Why not libWebSocket
+
+[libWebSocket](https://libWebSocket.org/) is said to be a solid, fast and
+efficient WebSocket library with a vast amount of users. My plan was
+originally to build upon it to skip having to implement the low level parts of
+WebSocket myself.
+
+Here are the reasons why I have decided to move forward with WebSocket in
+curl **without using libWebSocket**:
+
+- doxygen generated docs only makes them hard to navigate. No tutorial, no
+ clearly written explanatory pages for specific functions.
+
+- seems (too) tightly integrated with a specific TLS library, while we want to
+ support WebSocket with whatever TLS library libcurl was already made to
+ work with.
+
+- seems (too) tightly integrated with event libraries
+
+- the references to threads and thread-pools in code and APIs indicate too
+ much logic for our purposes
+
+- "bloated" - it is a *huge* library that is actually more lines of code than
+ libcurl itself
+
+- WebSocket is a fairly simple protocol on the network/framing layer so
+ making a homegrown handling of it should be fine
diff --git a/docs/cmdline-opts/CMakeLists.txt b/docs/cmdline-opts/CMakeLists.txt
index ae25c5c4a..fe7870f5d 100644
--- a/docs/cmdline-opts/CMakeLists.txt
+++ b/docs/cmdline-opts/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
set(MANPAGE "${CURL_BINARY_DIR}/docs/curl.1")
diff --git a/docs/cmdline-opts/MANPAGE.md b/docs/cmdline-opts/MANPAGE.md
index e3f5681a2..b760a9ad8 100644
--- a/docs/cmdline-opts/MANPAGE.md
+++ b/docs/cmdline-opts/MANPAGE.md
@@ -1,3 +1,9 @@
+<!--
+ Copyright (C) 2000 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+
+ SPDX-License-Identifier: curl
+-->
+
# curl man page generator
This is the curl man page generator. It generates a single nroff man page
@@ -17,18 +23,22 @@ Each file has a set of meta-data and a body of text.
### Meta-data
- Short: (single letter, without dash)
- Long: (long form name, without dashes)
+ Added: (version number in which this was added)
Arg: (the argument the option takes)
+ c: (copyright line)
+ Example: (example command line, without "curl" and can use `$URL`)
+ Experimental: yes (if so)
+ Help: (short text for the --help output for this option)
+ Long: (long form name, without dashes)
Magic: (description of "magic" options)
- Tags: (space separated list)
- Protocols: (space separated list for which protocols this option works)
- Added: (version number in which this was added)
+ Multi: single/append/boolean/mutex (if used more than once)
Mutexed: (space separated list of options this overrides, no dashes)
+ Protocols: (space separated list for which protocols this option works)
Requires: (space separated list of features this requires, no dashes)
See-also: (space separated list of related options, no dashes)
- Help: (short text for the --help output for this option)
- Example: (example command line, without "curl" and can use `$URL`)
+ Short: (single letter, without dash)
+ SPDX-License-Identifier: curl
+ Tags: (space separated list)
--- (end of meta-data)
### Body
diff --git a/docs/cmdline-opts/Makefile.am b/docs/cmdline-opts/Makefile.am
index f416d553e..df38e192a 100644
--- a/docs/cmdline-opts/Makefile.am
+++ b/docs/cmdline-opts/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign no-dependencies
diff --git a/docs/cmdline-opts/Makefile.in b/docs/cmdline-opts/Makefile.in
index 045ee5e6d..4450fa73a 100644
--- a/docs/cmdline-opts/Makefile.in
+++ b/docs/cmdline-opts/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#***************************************************************************
@@ -43,7 +45,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -56,6 +58,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Shared between Makefile.am and CMakeLists.txt
VPATH = @srcdir@
@@ -134,15 +138,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = docs/cmdline-opts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -236,6 +238,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -253,6 +256,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -310,6 +314,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -328,12 +333,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -400,7 +406,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -498,6 +503,7 @@ DPAGES = \
interface.d \
ipv4.d \
ipv6.d \
+ json.d \
junk-session-cookies.d \
keepalive-time.d \
key-type.d \
@@ -526,6 +532,7 @@ DPAGES = \
next.d \
no-alpn.d \
no-buffer.d \
+ no-clobber.d \
no-keepalive.d \
no-npn.d \
no-progress-meter.d \
@@ -583,12 +590,14 @@ DPAGES = \
quote.d \
random-file.d \
range.d \
+ rate.d \
raw.d \
referer.d \
remote-header-name.d \
remote-name-all.d \
remote-name.d \
remote-time.d \
+ remove-on-error.d \
request-target.d \
request.d \
resolve.d \
diff --git a/docs/cmdline-opts/Makefile.inc b/docs/cmdline-opts/Makefile.inc
index f8b571127..350fa9fa7 100644
--- a/docs/cmdline-opts/Makefile.inc
+++ b/docs/cmdline-opts/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Shared between Makefile.am and CMakeLists.txt
@@ -111,6 +113,7 @@ DPAGES = \
interface.d \
ipv4.d \
ipv6.d \
+ json.d \
junk-session-cookies.d \
keepalive-time.d \
key-type.d \
@@ -139,6 +142,7 @@ DPAGES = \
next.d \
no-alpn.d \
no-buffer.d \
+ no-clobber.d \
no-keepalive.d \
no-npn.d \
no-progress-meter.d \
@@ -196,12 +200,14 @@ DPAGES = \
quote.d \
random-file.d \
range.d \
+ rate.d \
raw.d \
referer.d \
remote-header-name.d \
remote-name-all.d \
remote-name.d \
remote-time.d \
+ remove-on-error.d \
request-target.d \
request.d \
resolve.d \
diff --git a/docs/cmdline-opts/abstract-unix-socket.d b/docs/cmdline-opts/abstract-unix-socket.d
index fcd2d94c9..32cd5e209 100644
--- a/docs/cmdline-opts/abstract-unix-socket.d
+++ b/docs/cmdline-opts/abstract-unix-socket.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: abstract-unix-socket
Arg: <path>
Help: Connect via abstract Unix domain socket
@@ -6,6 +8,7 @@ Protocols: HTTP
Category: connection
See-also: unix-socket
Example: --abstract-unix-socket socketpath $URL
+Multi: single
---
Connect through an abstract Unix domain socket, instead of using the network.
Note: netstat shows the path of an abstract socket prefixed with '@', however
diff --git a/docs/cmdline-opts/alt-svc.d b/docs/cmdline-opts/alt-svc.d
index 3ad223049..6689d605c 100644
--- a/docs/cmdline-opts/alt-svc.d
+++ b/docs/cmdline-opts/alt-svc.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: alt-svc
Arg: <file name>
Protocols: HTTPS
@@ -6,6 +8,7 @@ Added: 7.64.1
Category: http
See-also: resolve connect-to
Example: --alt-svc svc.txt $URL
+Multi: append
---
This option enables the alt-svc parser in curl. If the file name points to an
existing alt-svc cache file, that will be used. After a completed transfer,
diff --git a/docs/cmdline-opts/anyauth.d b/docs/cmdline-opts/anyauth.d
index 109234172..cc871b6e2 100644
--- a/docs/cmdline-opts/anyauth.d
+++ b/docs/cmdline-opts/anyauth.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: anyauth
Help: Pick any authentication method
Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: proxy-anyauth basic digest
Category: http proxy auth
Example: --anyauth --user me:pwd $URL
Added: 7.10.6
+Multi: mutex
---
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
diff --git a/docs/cmdline-opts/append.d b/docs/cmdline-opts/append.d
index 7ea02d708..b1eab78cf 100644
--- a/docs/cmdline-opts/append.d
+++ b/docs/cmdline-opts/append.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: a
Long: append
Help: Append to target file when uploading
@@ -6,6 +8,7 @@ Category: ftp sftp
See-also: range continue-at
Example: --upload-file local --append ftp://example.com/
Added: 4.8
+Multi: boolean
---
When used in an upload, this makes curl append to the target file instead of
overwriting it. If the remote file does not exist, it will be created. Note
diff --git a/docs/cmdline-opts/aws-sigv4.d b/docs/cmdline-opts/aws-sigv4.d
index c13b8da76..7f69c03ab 100644
--- a/docs/cmdline-opts/aws-sigv4.d
+++ b/docs/cmdline-opts/aws-sigv4.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: aws-sigv4
Arg: <provider1[:provider2[:region[:service]]]>
Help: Use AWS V4 signature authentication
@@ -5,6 +7,7 @@ Category: auth http
Added: 7.75.0
See-also: basic user
Example: --aws-sigv4 "aws:amz:east-2:es" --user "key:secret" $URL
+Multi: single
---
Use AWS V4 signature authentication in the transfer.
diff --git a/docs/cmdline-opts/basic.d b/docs/cmdline-opts/basic.d
index abab7d068..ca873b8bb 100644
--- a/docs/cmdline-opts/basic.d
+++ b/docs/cmdline-opts/basic.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: basic
Help: Use HTTP Basic Authentication
See-also: proxy-basic
@@ -5,6 +7,7 @@ Protocols: HTTP
Category: auth
Example: -u name:password --basic $URL
Added: 7.10.6
+Multi: mutex
---
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
diff --git a/docs/cmdline-opts/cacert.d b/docs/cmdline-opts/cacert.d
index e066471c6..1f86b0e96 100644
--- a/docs/cmdline-opts/cacert.d
+++ b/docs/cmdline-opts/cacert.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: cacert
Arg: <file>
Help: CA certificate to verify peer against
@@ -6,6 +8,7 @@ Category: tls
See-also: capath insecure
Example: --cacert CA-file.txt $URL
Added: 7.5
+Multi: single
---
Tells curl to use the specified certificate file to verify the peer. The file
may contain multiple CA certificates. The certificate(s) must be in PEM
@@ -33,5 +36,3 @@ preferred method of verifying the peer's certificate chain.
with libcurl 7.60 or later. This option is supported for backward
compatibility with other SSL engines; instead it is recommended to use
Windows' store of root certificates (the default for Schannel).
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/capath.d b/docs/cmdline-opts/capath.d
index 7f879a2a4..552c05a3c 100644
--- a/docs/cmdline-opts/capath.d
+++ b/docs/cmdline-opts/capath.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: capath
Arg: <dir>
Help: CA directory to verify peer against
@@ -6,14 +8,14 @@ Category: tls
See-also: cacert insecure
Example: --capath /local/directory $URL
Added: 7.9.8
+Multi: single
---
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
+"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 --capath can allow
OpenSSL-powered curl to make SSL-connections much more efficiently than using
--cacert if the --cacert file contains many CA certificates.
-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.
diff --git a/docs/cmdline-opts/cert-status.d b/docs/cmdline-opts/cert-status.d
index c3b9bdb36..83241dba2 100644
--- a/docs/cmdline-opts/cert-status.d
+++ b/docs/cmdline-opts/cert-status.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: cert-status
Protocols: TLS
Added: 7.41.0
@@ -5,12 +7,13 @@ Help: Verify the status of the server cert via OCSP-staple
Category: tls
See-also: pinnedpubkey
Example: --cert-status $URL
+Multi: boolean
---
Tells curl to verify the status of the server certificate by using the
Certificate Status Request (aka. OCSP stapling) TLS extension.
If this option is enabled and the server sends an invalid (e.g. expired)
-response, if the response suggests that the server certificate has been revoked,
-or no response at all is received, the verification fails.
+response, if the response suggests that the server certificate has been
+revoked, or no response at all is received, the verification fails.
This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
diff --git a/docs/cmdline-opts/cert-type.d b/docs/cmdline-opts/cert-type.d
index a31f40ef5..13643fb53 100644
--- a/docs/cmdline-opts/cert-type.d
+++ b/docs/cmdline-opts/cert-type.d
@@ -1,13 +1,18 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: cert-type
Protocols: TLS
Arg: <type>
-Help: Certificate type (DER/PEM/ENG)
+Help: Certificate type (DER/PEM/ENG/P12)
See-also: cert key key-type
Category: tls
Example: --cert-type PEM --cert file $URL
Added: 7.9.3
+Multi: single
---
Tells curl what type the provided client certificate is using. PEM, DER, ENG
-and P12 are recognized types. If not specified, PEM is assumed.
+and P12 are recognized types.
-If this option is used several times, the last one will be used.
+The default type depends on the TLS backend and is usually PEM, however for
+Secure Transport and Schannel it is P12. If --cert is a pkcs11: URI then ENG is
+the default type.
diff --git a/docs/cmdline-opts/cert.d b/docs/cmdline-opts/cert.d
index 0e8776e2e..54c5cb0a0 100644
--- a/docs/cmdline-opts/cert.d
+++ b/docs/cmdline-opts/cert.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: E
Long: cert
Arg: <certificate[:password]>
@@ -7,24 +9,29 @@ See-also: cert-type key key-type
Category: tls
Example: --cert certfile --key keyfile $URL
Added: 5.0
+Multi: single
---
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 is not specified, it will be queried for on
-the terminal. Note that this option assumes a \&"certificate" file that is the
-private key and the client certificate concatenated! See --cert and --key to
+the terminal. Note that this option assumes a certificate file that is the
+private key and the client certificate concatenated. See --cert and --key to
specify them independently.
+In the <certificate> portion of the argument, you must escape the character ":"
+as "\\:" so that it is not recognized as the password delimiter. Similarly, you
+must escape the character "\\" as "\\\\" so that it is not recognized as an
+escape character.
+
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.
+loaded.
+
+If you provide a path relative to the current directory, you must prefix the
+path with "./" in order to avoid confusion with an NSS database nickname.
If curl is built against OpenSSL library, and the engine pkcs11 is available,
then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in
@@ -49,5 +56,3 @@ usually a SHA-1 hex string which you can see in certificate details. Following
store locations are supported: CurrentUser, LocalMachine, CurrentService,
Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
LocalMachineEnterprise.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/ciphers.d b/docs/cmdline-opts/ciphers.d
index 24d3d5863..e64a3f6a0 100644
--- a/docs/cmdline-opts/ciphers.d
+++ b/docs/cmdline-opts/ciphers.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ciphers
Arg: <list of ciphers>
Help: SSL ciphers to use
@@ -6,10 +8,9 @@ Category: tls
See-also: tlsv1.3
Example: --ciphers ECDHE-ECDSA-AES256-CCM8 $URL
Added: 7.9
+Multi: single
---
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:
https://curl.se/docs/ssl-ciphers.html
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/compressed-ssh.d b/docs/cmdline-opts/compressed-ssh.d
index 0d198578b..0521a2ba4 100644
--- a/docs/cmdline-opts/compressed-ssh.d
+++ b/docs/cmdline-opts/compressed-ssh.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: compressed-ssh
Help: Enable SSH compression
Protocols: SCP SFTP
@@ -5,6 +7,7 @@ Added: 7.56.0
Category: scp ssh
See-also: compressed
Example: --compressed-ssh sftp://example.com/
+Multi: boolean
---
Enables built-in SSH compression.
This is a request, not an order; the server may or may not do it.
diff --git a/docs/cmdline-opts/compressed.d b/docs/cmdline-opts/compressed.d
index 8e8db97cc..f3b03c672 100644
--- a/docs/cmdline-opts/compressed.d
+++ b/docs/cmdline-opts/compressed.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: compressed
Help: Request compressed response
Protocols: HTTP
@@ -5,6 +7,7 @@ Category: http
Example: --compressed $URL
See-also: compressed-ssh
Added: 7.10
+Multi: boolean
---
Request a compressed response using one of the algorithms curl supports, and
automatically decompress the content. Headers are not modified.
diff --git a/docs/cmdline-opts/config.d b/docs/cmdline-opts/config.d
index b24a87e1c..84456f627 100644
--- a/docs/cmdline-opts/config.d
+++ b/docs/cmdline-opts/config.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: config
Arg: <file>
Help: Read config from a file
@@ -6,6 +8,7 @@ Category: curl
Example: --config file.txt $URL
Added: 4.10
See-also: disable
+Multi: append
---
Specify a text file to read curl arguments from. The command line arguments
found in the text file will be used as if they were provided on the command
@@ -64,9 +67,10 @@ config file is checked for in the following places in this order:
6) Windows: "%USERPROFILE%\\Application Data\\.curlrc"
-7) Non-windows: use getpwuid to find the home directory
+7) Non-Windows: use getpwuid to find the home directory
-8) On windows, if it finds no .curlrc file in the sequence described above, it
+8) On Windows, if it finds no .curlrc file in the sequence described above, it
checks for one in the same dir the curl executable is placed.
-This option can be used multiple times to load multiple config files.
+On Windows two filenames are checked per location: .curlrc and _curlrc,
+preferring the former. Older versions on Windows checked for _curlrc only.
diff --git a/docs/cmdline-opts/connect-timeout.d b/docs/cmdline-opts/connect-timeout.d
index 89152baa3..6a2889d21 100644
--- a/docs/cmdline-opts/connect-timeout.d
+++ b/docs/cmdline-opts/connect-timeout.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: connect-timeout
Arg: <fractional seconds>
Help: Maximum time allowed for connection
@@ -6,10 +8,9 @@ Category: connection
Example: --connect-timeout 20 $URL
Example: --connect-timeout 3.14 $URL
Added: 7.7
+Multi: single
---
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.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/connect-to.d b/docs/cmdline-opts/connect-to.d
index ebea9b9da..040ea19dd 100644
--- a/docs/cmdline-opts/connect-to.d
+++ b/docs/cmdline-opts/connect-to.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: connect-to
Arg: <HOST1:PORT1:HOST2:PORT2>
Help: Connect to host
@@ -5,6 +7,7 @@ Added: 7.49.0
See-also: resolve header
Category: connection
Example: --connect-to example.com:443:example.net:8443 $URL
+Multi: append
---
For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead.
@@ -19,5 +22,3 @@ request's original host/port".
A "host" specified to this option is compared as a string, so it needs to
match the name used in request URL. It can be either numerical such as
"127.0.0.1" or the full host name such as "example.org".
-
-This option can be used many times to add many connect rules.
diff --git a/docs/cmdline-opts/continue-at.d b/docs/cmdline-opts/continue-at.d
index b66116c8e..726171a41 100644
--- a/docs/cmdline-opts/continue-at.d
+++ b/docs/cmdline-opts/continue-at.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: C
Long: continue-at
Arg: <offset>
@@ -7,6 +9,7 @@ Category: connection
Example: -C - $URL
Example: -C 400 $URL
Added: 4.8
+Multi: single
---
Continue/Resume a previous file transfer at the given offset. The given offset
is the exact number of bytes that will be skipped, counting from the beginning
@@ -15,5 +18,3 @@ uploads, the FTP server command SIZE will not be used by curl.
Use "-C -" to tell curl to automatically find out where/how to resume the
transfer. It then uses the given output/input files to figure that out.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/cookie-jar.d b/docs/cmdline-opts/cookie-jar.d
index 0a02c05b5..2f3b8e9e6 100644
--- a/docs/cmdline-opts/cookie-jar.d
+++ b/docs/cmdline-opts/cookie-jar.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: c
Long: cookie-jar
Arg: <filename>
@@ -8,6 +10,7 @@ Example: -c store-here.txt $URL
Example: -c store-here.txt -b read-these $URL
Added: 7.9
See-also: cookie
+Multi: single
---
Specify to which file you want curl to write all cookies after a completed
operation. Curl writes all cookies from its in-memory cookie storage to the
@@ -24,6 +27,3 @@ If the cookie jar cannot be created or written to, the whole curl operation
will not fail or even report an error clearly. Using --verbose will get a
warning displayed, but that is the only visible feedback you get about this
possibly lethal situation.
-
-If this option is used several times, the last specified file name will be
-used.
diff --git a/docs/cmdline-opts/cookie.d b/docs/cmdline-opts/cookie.d
index ab4b2793b..2b736539e 100644
--- a/docs/cmdline-opts/cookie.d
+++ b/docs/cmdline-opts/cookie.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: b
Long: cookie
Arg: <data|filename>
@@ -8,10 +10,14 @@ Example: -b cookiefile $URL
Example: -b cookiefile -c cookiefile $URL
See-also: cookie-jar junk-session-cookies
Added: 4.9
+Multi: append
---
-Pass the data to the HTTP server in the Cookie header. 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".
+Pass the data to the HTTP server in the Cookie header. 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". This makes curl use the
+cookie header with this content explicitly in all outgoing request(s). If
+multiple requests are done due to authentication, followed redirects or
+similar, they will all get this cookie passed on.
If no '=' symbol is used in the argument, it is instead treated as a filename
to read previously stored cookie from. This option also activates the cookie
@@ -31,8 +37,6 @@ cookie is not sent since the domain will never match. To address this, set a
domain in Set-Cookie line (doing that will include sub-domains) or preferably:
use the Netscape format.
-This option can be used multiple times.
-
Users often want to both read cookies from a file and write updated cookies
back to a file, so using both --cookie and --cookie-jar in the same command
line is common.
diff --git a/docs/cmdline-opts/create-dirs.d b/docs/cmdline-opts/create-dirs.d
index 5d2065903..01b7ccf92 100644
--- a/docs/cmdline-opts/create-dirs.d
+++ b/docs/cmdline-opts/create-dirs.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: create-dirs
Help: Create necessary local directory hierarchy
Category: curl
Example: --create-dirs --output local/dir/file $URL
Added: 7.10.3
See-also: ftp-create-dirs output-dir
+Multi: boolean
---
When used in conjunction with the --output option, curl will create the
necessary local directory hierarchy as needed. This option creates the
diff --git a/docs/cmdline-opts/create-file-mode.d b/docs/cmdline-opts/create-file-mode.d
index 429b5ee33..32e6e84bf 100644
--- a/docs/cmdline-opts/create-file-mode.d
+++ b/docs/cmdline-opts/create-file-mode.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: create-file-mode
Arg: <mode>
Help: File mode for created files
@@ -6,11 +8,10 @@ Category: sftp scp file upload
See-also: ftp-create-dirs
Added: 7.75.0
Example: --create-file-mode 0777 -T localfile sftp://example.com/new
+Multi: single
---
When curl is used to create files remotely using one of the supported
protocols, this option allows the user to set which 'mode' to set on the file
at creation time, instead of the default 0644.
This option takes an octal number as argument.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/crlf.d b/docs/cmdline-opts/crlf.d
index 3772fcf2c..f19a5b25d 100644
--- a/docs/cmdline-opts/crlf.d
+++ b/docs/cmdline-opts/crlf.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: crlf
Help: Convert LF to CRLF in upload
Protocols: FTP SMTP
@@ -5,6 +7,7 @@ Category: ftp smtp
Example: --crlf -T file ftp://example.com/
Added: 5.7
See-also: use-ascii
+Multi: boolean
---
Convert LF to CRLF in upload. Useful for MVS (OS/390).
diff --git a/docs/cmdline-opts/crlfile.d b/docs/cmdline-opts/crlfile.d
index 1fdc12575..deb54e124 100644
--- a/docs/cmdline-opts/crlfile.d
+++ b/docs/cmdline-opts/crlfile.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: crlfile
Arg: <file>
Protocols: TLS
@@ -6,8 +8,7 @@ Added: 7.19.7
Category: tls
Example: --crlfile rejects.txt $URL
See-also: cacert capath
+Multi: single
---
Provide a file using PEM format with a Certificate Revocation List that may
specify peer certificates that are to be considered revoked.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/curves.d b/docs/cmdline-opts/curves.d
index b4cb43f04..84f1291d8 100644
--- a/docs/cmdline-opts/curves.d
+++ b/docs/cmdline-opts/curves.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: curves
Arg: <algorithm list>
Help: (EC) TLS key exchange algorithm(s) to request
@@ -6,6 +8,7 @@ Added: 7.73.0
Category: tls
Example: --curves X25519 $URL
See-also: ciphers
+Multi: single
---
Tells curl to request specific curves to use during SSL session establishment
according to RFC 8422, 5.1. Multiple algorithms can be provided by separating
diff --git a/docs/cmdline-opts/data-ascii.d b/docs/cmdline-opts/data-ascii.d
index 52366dc43..4f9bdb1d3 100644
--- a/docs/cmdline-opts/data-ascii.d
+++ b/docs/cmdline-opts/data-ascii.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: data-ascii
Arg: <data>
Help: HTTP POST ASCII data
@@ -6,5 +8,6 @@ Category: http post upload
Example: --data-ascii @file $URL
Added: 7.2
See-also: data-binary data-raw data-urlencode
+Multi: append
---
This is just an alias for --data.
diff --git a/docs/cmdline-opts/data-binary.d b/docs/cmdline-opts/data-binary.d
index 32152ee60..c1c9b20d1 100644
--- a/docs/cmdline-opts/data-binary.d
+++ b/docs/cmdline-opts/data-binary.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: data-binary
Arg: <data>
Help: HTTP POST binary data
@@ -6,6 +8,7 @@ Category: http post upload
Example: --data-binary @filename $URL
Added: 7.2
See-also: data-ascii
+Multi: append
---
This posts data exactly as specified with no extra processing whatsoever.
diff --git a/docs/cmdline-opts/data-raw.d b/docs/cmdline-opts/data-raw.d
index b8cd0f721..8ec29fad8 100644
--- a/docs/cmdline-opts/data-raw.d
+++ b/docs/cmdline-opts/data-raw.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: data-raw
Arg: <data>
Protocols: HTTP
@@ -7,6 +9,7 @@ See-also: data
Category: http post upload
Example: --data-raw "hello" $URL
Example: --data-raw "@at@at@" $URL
+Multi: append
---
This posts data similarly to --data but without the special
interpretation of the @ character.
diff --git a/docs/cmdline-opts/data-urlencode.d b/docs/cmdline-opts/data-urlencode.d
index c9cecec51..e9adc4563 100644
--- a/docs/cmdline-opts/data-urlencode.d
+++ b/docs/cmdline-opts/data-urlencode.d
@@ -1,6 +1,8 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: data-urlencode
Arg: <data>
-Help: HTTP POST data url encoded
+Help: HTTP POST data URL encoded
Protocols: HTTP
See-also: data data-raw
Added: 7.18.0
@@ -9,6 +11,7 @@ Example: --data-urlencode name=val $URL
Example: --data-urlencode =encodethis $URL
Example: --data-urlencode name@file $URL
Example: --data-urlencode @fileonly $URL
+Multi: append
---
This posts data, similar to the other --data options with the exception
that this performs URL-encoding.
diff --git a/docs/cmdline-opts/data.d b/docs/cmdline-opts/data.d
index 682314c02..628b15069 100644
--- a/docs/cmdline-opts/data.d
+++ b/docs/cmdline-opts/data.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: data
Short: d
Arg: <data>
@@ -10,6 +12,7 @@ Example: -d "name=curl" $URL
Example: -d "name=curl" -d "tool=cmdline" $URL
Example: -d @filename $URL
Added: 4.0
+Multi: append
---
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
@@ -23,12 +26,12 @@ the @ character. To post data purely binary, you should instead use the
If any of these options is used more than once on the same command line, the
data pieces specified will be merged with a separating &-symbol. Thus, using
-\&'-d name=daniel -d skill=lousy' would generate a post chunk that looks like
-\&'name=daniel&skill=lousy'.
+'-d name=daniel -d skill=lousy' would generate a post 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. Posting
-data from a file named \&'foobar' would thus be done with --data @foobar. When
+data from a file named 'foobar' would thus be done with --data @foobar. When
--data is told to read from a file like that, carriage returns and newlines
will be stripped out. If you do not want the @ character to have a special
interpretation use --data-raw instead.
diff --git a/docs/cmdline-opts/delegation.d b/docs/cmdline-opts/delegation.d
index 858ff0406..c4659d844 100644
--- a/docs/cmdline-opts/delegation.d
+++ b/docs/cmdline-opts/delegation.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: delegation
Arg: <LEVEL>
Help: GSS-API delegation permission
@@ -6,6 +8,7 @@ Category: auth
Example: --delegation "none" $URL
Added: 7.22.0
See-also: insecure ssl
+Multi: single
---
Set LEVEL to tell the server what it is allowed to delegate when it
comes to user credentials.
@@ -18,5 +21,3 @@ service ticket, which is a matter of realm policy.
.IP "always"
Unconditionally allow the server to delegate.
.RE
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/digest.d b/docs/cmdline-opts/digest.d
index 4feb8505d..c42486f04 100644
--- a/docs/cmdline-opts/digest.d
+++ b/docs/cmdline-opts/digest.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: digest
Help: Use HTTP Digest Authentication
Protocols: HTTP
@@ -6,9 +8,8 @@ See-also: user proxy-digest anyauth
Category: proxy auth http
Example: -u name:password --digest $URL
Added: 7.10.6
+Multi: boolean
---
Enables HTTP Digest authentication. This is an authentication scheme that
prevents the password from being sent over the wire in clear text. Use this in
combination with the normal --user option to set user name and password.
-
-If this option is used several times, only the first one is used.
diff --git a/docs/cmdline-opts/disable-eprt.d b/docs/cmdline-opts/disable-eprt.d
index 6b82f1376..8a21fed8d 100644
--- a/docs/cmdline-opts/disable-eprt.d
+++ b/docs/cmdline-opts/disable-eprt.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: disable-eprt
Help: Inhibit using EPRT or LPRT
Protocols: FTP
@@ -5,6 +7,7 @@ Category: ftp
Example: --disable-eprt ftp://example.com/
Added: 7.10.5
See-also: disable-epsv ftp-port
+Multi: boolean
---
Tell curl to disable the use of the EPRT and LPRT commands when doing active
FTP transfers. Curl will normally always first attempt to use EPRT, then LPRT
diff --git a/docs/cmdline-opts/disable-epsv.d b/docs/cmdline-opts/disable-epsv.d
index 468472626..3f58f508c 100644
--- a/docs/cmdline-opts/disable-epsv.d
+++ b/docs/cmdline-opts/disable-epsv.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: disable-epsv
Help: Inhibit using EPSV
Protocols: FTP
@@ -5,6 +7,7 @@ Category: ftp
Example: --disable-epsv ftp://example.com/
Added: 7.9.2
See-also: disable-eprt ftp-port
+Multi: boolean
---
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
diff --git a/docs/cmdline-opts/disable.d b/docs/cmdline-opts/disable.d
index e417571f1..4ce33cd61 100644
--- a/docs/cmdline-opts/disable.d
+++ b/docs/cmdline-opts/disable.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: disable
Short: q
Help: Disable .curlrc
@@ -5,6 +7,7 @@ Category: curl
Example: -q $URL
Added: 5.0
See-also: config
+Multi: boolean
---
If used as the first parameter on the command line, the *curlrc* config
file will not be read and used. See the --config for details on the default
diff --git a/docs/cmdline-opts/disallow-username-in-url.d b/docs/cmdline-opts/disallow-username-in-url.d
index f3122aea5..3e1de348a 100644
--- a/docs/cmdline-opts/disallow-username-in-url.d
+++ b/docs/cmdline-opts/disallow-username-in-url.d
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: disallow-username-in-url
-Help: Disallow username in url
+Help: Disallow username in URL
Protocols: HTTP
Added: 7.61.0
See-also: proto
Category: curl http
Example: --disallow-username-in-url $URL
+Multi: boolean
---
-This tells curl to exit if passed a url containing a username. This is probably
-most useful when the URL is being provided at run-time or similar.
+This tells curl to exit if passed a URL containing a username. This is probably
+most useful when the URL is being provided at runtime or similar.
diff --git a/docs/cmdline-opts/dns-interface.d b/docs/cmdline-opts/dns-interface.d
index fec7927eb..8cd4d1347 100644
--- a/docs/cmdline-opts/dns-interface.d
+++ b/docs/cmdline-opts/dns-interface.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: dns-interface
Arg: <interface>
Help: Interface to use for DNS requests
@@ -7,6 +9,7 @@ Added: 7.33.0
Requires: c-ares
Category: dns
Example: --dns-interface eth0 $URL
+Multi: single
---
Tell curl to send outgoing DNS requests through <interface>. This option is a
counterpart to --interface (which does not affect DNS). The supplied string
diff --git a/docs/cmdline-opts/dns-ipv4-addr.d b/docs/cmdline-opts/dns-ipv4-addr.d
index e09153ab4..358bec368 100644
--- a/docs/cmdline-opts/dns-ipv4-addr.d
+++ b/docs/cmdline-opts/dns-ipv4-addr.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: dns-ipv4-addr
Arg: <address>
Help: IPv4 address to use for DNS requests
@@ -7,9 +9,8 @@ Added: 7.33.0
Requires: c-ares
Category: dns
Example: --dns-ipv4-addr 10.1.2.3 $URL
+Multi: single
---
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.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/dns-ipv6-addr.d b/docs/cmdline-opts/dns-ipv6-addr.d
index 954cb98b3..945265686 100644
--- a/docs/cmdline-opts/dns-ipv6-addr.d
+++ b/docs/cmdline-opts/dns-ipv6-addr.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: dns-ipv6-addr
Arg: <address>
Help: IPv6 address to use for DNS requests
@@ -7,9 +9,8 @@ Added: 7.33.0
Requires: c-ares
Category: dns
Example: --dns-ipv6-addr 2a04:4e42::561 $URL
+Multi: single
---
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.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/dns-servers.d b/docs/cmdline-opts/dns-servers.d
index 8a2341528..ff0705122 100644
--- a/docs/cmdline-opts/dns-servers.d
+++ b/docs/cmdline-opts/dns-servers.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: dns-servers
Arg: <addresses>
Help: DNS server addrs to use
@@ -6,10 +8,9 @@ Added: 7.33.0
Category: dns
Example: --dns-servers 192.168.0.1,192.168.0.2 $URL
See-also: dns-interface dns-ipv4-addr
+Multi: single
---
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 *:<port-number>* after each IP
address.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/doh-cert-status.d b/docs/cmdline-opts/doh-cert-status.d
index 0846ccb77..534c79529 100644
--- a/docs/cmdline-opts/doh-cert-status.d
+++ b/docs/cmdline-opts/doh-cert-status.d
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: doh-cert-status
Help: Verify the status of the DoH server cert via OCSP-staple
Added: 7.76.0
Category: dns tls
Example: --doh-cert-status --doh-url https://doh.example $URL
See-also: doh-insecure
+Multi: boolean
---
Same as --cert-status but used for DoH (DNS-over-HTTPS).
diff --git a/docs/cmdline-opts/doh-insecure.d b/docs/cmdline-opts/doh-insecure.d
index 9430bd4d0..30c44bba3 100644
--- a/docs/cmdline-opts/doh-insecure.d
+++ b/docs/cmdline-opts/doh-insecure.d
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: doh-insecure
Help: Allow insecure DoH server connections
Added: 7.76.0
Category: dns tls
Example: --doh-insecure --doh-url https://doh.example $URL
See-also: doh-url
+Multi: boolean
---
Same as --insecure but used for DoH (DNS-over-HTTPS).
diff --git a/docs/cmdline-opts/doh-url.d b/docs/cmdline-opts/doh-url.d
index c64cca289..4717a6ac6 100644
--- a/docs/cmdline-opts/doh-url.d
+++ b/docs/cmdline-opts/doh-url.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: doh-url
Arg: <URL>
Help: Resolve host names over DoH
@@ -5,6 +7,7 @@ Added: 7.62.0
Category: dns
Example: --doh-url https://doh.example $URL
See-also: doh-insecure
+Multi: single
---
Specifies which DNS-over-HTTPS (DoH) server to use to resolve hostnames,
instead of using the default name resolver mechanism. The URL must be HTTPS.
@@ -14,4 +17,5 @@ name lookups take place over SSL. However, the certificate verification
settings are not inherited and can be controlled separately via
--doh-insecure and --doh-cert-status.
-If this option is used several times, the last one will be used.
+This option is unset if an empty string "" is used as the URL. (Added in
+7.85.0)
diff --git a/docs/cmdline-opts/dump-header.d b/docs/cmdline-opts/dump-header.d
index 8c617b92c..3dabac85e 100644
--- a/docs/cmdline-opts/dump-header.d
+++ b/docs/cmdline-opts/dump-header.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: dump-header
Short: D
Arg: <filename>
@@ -7,11 +9,10 @@ See-also: output
Category: http ftp
Example: --dump-header store.txt $URL
Added: 5.7
+Multi: single
---
Write the received protocol headers to the specified file. If no headers are
received, the use of this option will create an empty file.
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.
diff --git a/docs/cmdline-opts/egd-file.d b/docs/cmdline-opts/egd-file.d
index cd3450a21..b6661c773 100644
--- a/docs/cmdline-opts/egd-file.d
+++ b/docs/cmdline-opts/egd-file.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: egd-file
Arg: <file>
Help: EGD socket path for random data
@@ -6,6 +8,10 @@ See-also: random-file
Category: tls
Example: --egd-file /random/here $URL
Added: 7.7
+Multi: single
---
+Deprecated option. This option is ignored by curl since 7.84.0. Prior to that
+it only had an effect on curl if built to use old versions of OpenSSL.
+
Specify the path name to the Entropy Gathering Daemon socket. The socket is
used to seed the random engine for SSL connections.
diff --git a/docs/cmdline-opts/engine.d b/docs/cmdline-opts/engine.d
index 6382dfdab..58578ea8f 100644
--- a/docs/cmdline-opts/engine.d
+++ b/docs/cmdline-opts/engine.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: engine
Arg: <name>
Help: Crypto engine to use
@@ -6,7 +8,8 @@ Category: tls
Example: --engine flavor $URL
Added: 7.9.3
See-also: ciphers curves
+Multi: single
---
Select the OpenSSL crypto engine to use for cipher operations. Use --engine
list to print a list of build-time supported engines. Note that not all (and
-possibly none) of the engines may be available at run-time.
+possibly none) of the engines may be available at runtime.
diff --git a/docs/cmdline-opts/etag-compare.d b/docs/cmdline-opts/etag-compare.d
index 494633f5c..12c786790 100644
--- a/docs/cmdline-opts/etag-compare.d
+++ b/docs/cmdline-opts/etag-compare.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: etag-compare
Arg: <file>
Help: Pass an ETag from a file as a custom header
@@ -6,6 +8,7 @@ Added: 7.68.0
Category: http
Example: --etag-compare etag.txt $URL
See-also: etag-save time-cond
+Multi: single
---
This option makes a conditional HTTP request for the specific ETag read
from the given file by sending a custom If-None-Match header using the
diff --git a/docs/cmdline-opts/etag-save.d b/docs/cmdline-opts/etag-save.d
index 5cce0ee1c..2f44c0f7d 100644
--- a/docs/cmdline-opts/etag-save.d
+++ b/docs/cmdline-opts/etag-save.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: etag-save
Arg: <file>
Help: Parse ETag from a request and save it to a file
@@ -6,6 +8,7 @@ Added: 7.68.0
Category: http
Example: --etag-save storetag.txt $URL
See-also: etag-compare
+Multi: single
---
This option saves an HTTP ETag to the specified file. An ETag is a
caching related header, usually returned in a response.
diff --git a/docs/cmdline-opts/expect100-timeout.d b/docs/cmdline-opts/expect100-timeout.d
index 8855edd0b..93e3c633e 100644
--- a/docs/cmdline-opts/expect100-timeout.d
+++ b/docs/cmdline-opts/expect100-timeout.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: expect100-timeout
Arg: <seconds>
Help: How long to wait for 100-continue
@@ -6,6 +8,7 @@ Added: 7.47.0
See-also: connect-timeout
Category: http
Example: --expect100-timeout 2.5 -T file $URL
+Multi: single
---
Maximum time in seconds that you allow curl to wait for a 100-continue
response when curl emits an Expects: 100-continue header in its request. By
diff --git a/docs/cmdline-opts/fail-early.d b/docs/cmdline-opts/fail-early.d
index fc3e45aef..cedc884f8 100644
--- a/docs/cmdline-opts/fail-early.d
+++ b/docs/cmdline-opts/fail-early.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: fail-early
Help: Fail on first transfer error, do not continue
Added: 7.52.0
Category: curl
Example: --fail-early $URL https://two.example
See-also: fail fail-with-body
+Multi: boolean
---
Fail and exit on the first detected transfer error.
diff --git a/docs/cmdline-opts/fail-with-body.d b/docs/cmdline-opts/fail-with-body.d
index 9b8c7db4e..adf5294f4 100644
--- a/docs/cmdline-opts/fail-with-body.d
+++ b/docs/cmdline-opts/fail-with-body.d
@@ -1,10 +1,14 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: fail-with-body
Protocols: HTTP
Help: Fail on HTTP errors but save the body
Category: http output
Added: 7.76.0
See-also: fail
+Mutexed: fail
Example: --fail-with-body $URL
+Multi: boolean
---
Return an error on server errors where the HTTP response code is 400 or
greater). In normal cases when an HTTP server fails to deliver a document, it
diff --git a/docs/cmdline-opts/fail.d b/docs/cmdline-opts/fail.d
index 47adafbb9..66c08fa50 100644
--- a/docs/cmdline-opts/fail.d
+++ b/docs/cmdline-opts/fail.d
@@ -1,17 +1,21 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: fail
Short: f
Protocols: HTTP
-Help: Fail silently (no output at all) on HTTP errors
+Help: Fail fast with no output on HTTP errors
See-also: fail-with-body
Category: important http
Example: --fail $URL
+Mutexed: fail-with-body
Added: 4.0
+Multi: boolean
---
-Fail silently (no output at all) on server errors. This is mostly done to
-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.
+Fail fast with no output at all on server errors. This is useful to enable
+scripts and users 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
diff --git a/docs/cmdline-opts/false-start.d b/docs/cmdline-opts/false-start.d
index 4fe4eaa7b..b617a6b67 100644
--- a/docs/cmdline-opts/false-start.d
+++ b/docs/cmdline-opts/false-start.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: false-start
Help: Enable TLS False Start
Protocols: TLS
@@ -5,6 +7,7 @@ Added: 7.42.0
Category: tls
Example: --false-start $URL
See-also: tcp-fastopen
+Multi: boolean
---
Tells curl to use false start during the TLS handshake. False start is a mode
where a TLS client will start sending application data before verifying the
diff --git a/docs/cmdline-opts/form-escape.d b/docs/cmdline-opts/form-escape.d
index 5fcd9ac1d..b399741e2 100644
--- a/docs/cmdline-opts/form-escape.d
+++ b/docs/cmdline-opts/form-escape.d
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: form-escape
Help: Escape multipart form field/file names using backslash
Protocols: HTTP
See-also: form
Added: 7.81.0
-Category: http post
-Example: --form-escape --form 'field\\name=curl' 'file=@load"this' $URL
+Category: http upload
+Example: --form-escape -F 'field\\name=curl' -F 'file=@load"this' $URL
+Multi: single
---
Tells curl to pass on names of multipart form fields and files using
backslash-escaping instead of percent-encoding.
diff --git a/docs/cmdline-opts/form-string.d b/docs/cmdline-opts/form-string.d
index 4b5b0d64c..a2c450b17 100644
--- a/docs/cmdline-opts/form-string.d
+++ b/docs/cmdline-opts/form-string.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: form-string
Help: Specify multipart MIME data
Protocols: HTTP SMTP IMAP
@@ -6,9 +8,10 @@ See-also: form
Category: http upload
Example: --form-string "data" $URL
Added: 7.13.2
+Multi: append
---
Similar to --form except that the value string for the named parameter is used
-literally. Leading \&'@' and \&'<' characters, and the \&';type=' string in
+literally. Leading '@' and '<' characters, and the ';type=' string in
the value have no special meaning. Use this in preference to --form if
there's any possibility that the string value may accidentally trigger the
-\&'@' or \&'<' features of --form.
+'@' or '<' features of --form.
diff --git a/docs/cmdline-opts/form.d b/docs/cmdline-opts/form.d
index 12012daa6..3954fdaf6 100644
--- a/docs/cmdline-opts/form.d
+++ b/docs/cmdline-opts/form.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: form
Short: F
Arg: <name=content>
@@ -8,6 +10,7 @@ Category: http upload
Example: --form "name=curl" --form "file=@loadthis" $URL
Added: 5.0
See-also: data form-string form-escape
+Multi: append
---
For HTTP protocol family, 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
@@ -32,7 +35,7 @@ be effectively read at transmission time; since the full size is unknown
before the transfer starts, such data is sent as chunks by HTTP and rejected
by IMAP.
-Example: send an image to an HTTP server, where \&'profile' is the name of the
+Example: send an image to an HTTP server, where 'profile' is the name of the
form-field to which the file portrait.jpg will be the input:
curl -F profile=@portrait.jpg https://example.com/upload.cgi
@@ -130,5 +133,3 @@ base64 attached file:
-F '=@localfile;encoder=base64' ... smtp://example.com
See further examples and details in the MANUAL.
-
-This option can be used multiple times.
diff --git a/docs/cmdline-opts/ftp-account.d b/docs/cmdline-opts/ftp-account.d
index e47b44cb4..f71773f14 100644
--- a/docs/cmdline-opts/ftp-account.d
+++ b/docs/cmdline-opts/ftp-account.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-account
Arg: <data>
Help: Account data string
@@ -6,8 +8,7 @@ Added: 7.13.0
Category: ftp auth
Example: --ftp-account "mr.robot" ftp://example.com/
See-also: user
+Multi: single
---
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.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/ftp-alternative-to-user.d b/docs/cmdline-opts/ftp-alternative-to-user.d
index fdf3b417a..22e5b4f92 100644
--- a/docs/cmdline-opts/ftp-alternative-to-user.d
+++ b/docs/cmdline-opts/ftp-alternative-to-user.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-alternative-to-user
Arg: <command>
Help: String to replace USER [name]
@@ -6,6 +8,7 @@ Added: 7.15.5
Category: ftp
Example: --ftp-alternative-to-user "U53r" ftp://example.com
See-also: ftp-account user
+Multi: single
---
If authenticating with the USER and PASS commands fails, send this command.
When connecting to Tumbleweed's Secure Transport server over FTPS using a
diff --git a/docs/cmdline-opts/ftp-create-dirs.d b/docs/cmdline-opts/ftp-create-dirs.d
index 9b8595011..7cf3e1c79 100644
--- a/docs/cmdline-opts/ftp-create-dirs.d
+++ b/docs/cmdline-opts/ftp-create-dirs.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-create-dirs
Protocols: FTP SFTP
Help: Create the remote dirs if not present
@@ -5,6 +7,7 @@ See-also: create-dirs
Category: ftp sftp curl
Example: --ftp-create-dirs -T file ftp://example.com/remote/path/file
Added: 7.10.7
+Multi: boolean
---
When an FTP or SFTP URL/operation uses a path that does not currently exist on
the server, the standard behavior of curl is to fail. Using this option, curl
diff --git a/docs/cmdline-opts/ftp-method.d b/docs/cmdline-opts/ftp-method.d
index 0d69356c6..d745cca32 100644
--- a/docs/cmdline-opts/ftp-method.d
+++ b/docs/cmdline-opts/ftp-method.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-method
Arg: <method>
Help: Control CWD usage
@@ -8,6 +10,7 @@ Example: --ftp-method multicwd ftp://example.com/dir1/dir2/file
Example: --ftp-method nocwd ftp://example.com/dir1/dir2/file
Example: --ftp-method singlecwd ftp://example.com/dir1/dir2/file
See-also: list-only
+Multi: single
---
Control what method curl should use to reach a file on an FTP(S)
server. The method argument should be one of the following alternatives:
@@ -21,6 +24,6 @@ curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full
path to the server for all these commands. This is the fastest behavior.
.IP singlecwd
curl 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
+"normally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE
diff --git a/docs/cmdline-opts/ftp-pasv.d b/docs/cmdline-opts/ftp-pasv.d
index 8c6c9799f..d6b4bfd9f 100644
--- a/docs/cmdline-opts/ftp-pasv.d
+++ b/docs/cmdline-opts/ftp-pasv.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-pasv
Help: Use PASV/EPSV instead of PORT
Protocols: FTP
@@ -5,14 +7,14 @@ Added: 7.11.0
See-also: disable-epsv
Category: ftp
Example: --ftp-pasv ftp://example.com/
+Multi: boolean
---
Use passive mode for the data connection. Passive is the internal default
behavior, but using this option can be used to override a previous --ftp-port
option.
-If this option is used several times, only the first one is used. Undoing an
-enforced passive really is not doable but you must then instead enforce the
-correct --ftp-port again.
+Reversing an enforced passive really is not doable but you must then instead
+enforce the correct --ftp-port again.
Passive mode means that curl will try the EPSV command first and then PASV,
unless --disable-epsv is used.
diff --git a/docs/cmdline-opts/ftp-port.d b/docs/cmdline-opts/ftp-port.d
index cb6ab2a93..4f660bd9e 100644
--- a/docs/cmdline-opts/ftp-port.d
+++ b/docs/cmdline-opts/ftp-port.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-port
Arg: <address>
Help: Use PORT instead of PASV
@@ -9,6 +11,7 @@ Example: -P - ftp:/example.com
Example: -P eth0 ftp:/example.com
Example: -P 192.168.0.2 ftp:/example.com
Added: 4.0
+Multi: single
---
Reverses the default initiator/listener roles when connecting with FTP. This
option makes curl use active mode. curl then tells the server to connect back
@@ -27,11 +30,10 @@ make curl pick the same IP address that is already used for the control
connection
.RE
-If this option is used several times, the last one will be used. Disable the
-use of PORT with --ftp-pasv. Disable the attempt to use the EPRT command
-instead of PORT by using --disable-eprt. EPRT is really PORT++.
+Disable the use of PORT with --ftp-pasv. Disable the attempt to use the EPRT
+command instead of PORT by using --disable-eprt. EPRT is really PORT++.
-You can also append \&":[start]-[end]\&" to the right of the address, to tell
+You can also append ":[start]-[end]\&" to the right of the address, to tell
curl what TCP port range to use. That means you specify a port range, from a
lower to a higher number. A single number works as well, but do note that it
increases the risk of failure since the port may not be available.
diff --git a/docs/cmdline-opts/ftp-pret.d b/docs/cmdline-opts/ftp-pret.d
index 8d9d7749c..f31cc5625 100644
--- a/docs/cmdline-opts/ftp-pret.d
+++ b/docs/cmdline-opts/ftp-pret.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-pret
Help: Send PRET before PASV
Protocols: FTP
@@ -5,6 +7,7 @@ Added: 7.20.0
Category: ftp
Example: --ftp-pret ftp://example.com/
See-also: ftp-port ftp-pasv
+Multi: boolean
---
Tell curl to send a PRET command before PASV (and EPSV). Certain FTP servers,
mainly drftpd, require this non-standard command for directory listings as
diff --git a/docs/cmdline-opts/ftp-skip-pasv-ip.d b/docs/cmdline-opts/ftp-skip-pasv-ip.d
index 36f9e6da1..af9eb7d57 100644
--- a/docs/cmdline-opts/ftp-skip-pasv-ip.d
+++ b/docs/cmdline-opts/ftp-skip-pasv-ip.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-skip-pasv-ip
Help: Skip the IP address for PASV
Protocols: FTP
@@ -5,6 +7,7 @@ Added: 7.14.2
See-also: ftp-pasv
Category: ftp
Example: --ftp-skip-pasv-ip ftp://example.com/
+Multi: boolean
---
Tell curl to not use the IP address the server suggests in its response
to curl's PASV command when curl connects the data connection. Instead curl
diff --git a/docs/cmdline-opts/ftp-ssl-ccc-mode.d b/docs/cmdline-opts/ftp-ssl-ccc-mode.d
index 15ad1f54b..e738b55ba 100644
--- a/docs/cmdline-opts/ftp-ssl-ccc-mode.d
+++ b/docs/cmdline-opts/ftp-ssl-ccc-mode.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-ssl-ccc-mode
Arg: <active/passive>
Help: Set CCC mode
@@ -6,6 +8,7 @@ Added: 7.16.2
See-also: ftp-ssl-ccc
Category: ftp tls
Example: --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/
+Multi: boolean
---
Sets the CCC mode. The passive mode will not initiate the shutdown, but
instead wait for the server to do it, and will not reply to the shutdown from
diff --git a/docs/cmdline-opts/ftp-ssl-ccc.d b/docs/cmdline-opts/ftp-ssl-ccc.d
index bfaf431bb..c6c0bfa4c 100644
--- a/docs/cmdline-opts/ftp-ssl-ccc.d
+++ b/docs/cmdline-opts/ftp-ssl-ccc.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-ssl-ccc
Help: Send CCC after authenticating
Protocols: FTP
@@ -5,6 +7,7 @@ See-also: ssl ftp-ssl-ccc-mode
Added: 7.16.1
Category: ftp tls
Example: --ftp-ssl-ccc ftps://example.com/
+Multi: boolean
---
Use CCC (Clear Command Channel) Shuts down the SSL/TLS layer after
authenticating. The rest of the control channel communication will be
diff --git a/docs/cmdline-opts/ftp-ssl-control.d b/docs/cmdline-opts/ftp-ssl-control.d
index 7221b996b..6bdc5806d 100644
--- a/docs/cmdline-opts/ftp-ssl-control.d
+++ b/docs/cmdline-opts/ftp-ssl-control.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ftp-ssl-control
Help: Require SSL/TLS for FTP login, clear for transfer
Protocols: FTP
@@ -5,6 +7,7 @@ Added: 7.16.0
Category: ftp tls
Example: --ftp-ssl-control ftp://example.com
See-also: ssl
+Multi: boolean
---
Require SSL/TLS for the FTP login, clear for transfer. Allows secure
authentication, but non-encrypted data transfers for efficiency. Fails the
diff --git a/docs/cmdline-opts/gen.pl b/docs/cmdline-opts/gen.pl
index 3d15f1b54..fe3e43e06 100755
--- a/docs/cmdline-opts/gen.pl
+++ b/docs/cmdline-opts/gen.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
=begin comment
@@ -101,19 +103,24 @@ sub printdesc {
print ".fi\n"; # fill-in
}
# skip lines starting with space (examples)
- if($d =~ /^[^ ]/) {
+ if($d =~ /^[^ ]/ && $d =~ /--/) {
for my $k (keys %optlong) {
my $l = manpageify($k);
- $d =~ s/--$k([^a-z0-9_-])/$l$1/;
+ $d =~ s/--\Q$k\E([^a-z0-9_-])([^a-zA-Z0-9_])/$l$1$2/;
}
}
# quote "bare" minuses in the output
$d =~ s/( |\\fI|^)--/$1\\-\\-/g;
$d =~ s/([ -]|\\fI|^)-/$1\\-/g;
# handle single quotes first on the line
- $d =~ s/(\s*)\'/$1\\(aq/;
+ $d =~ s/^(\s*)\'/$1\\(aq/;
+ # handle double quotes first on the line
+ $d =~ s/^(\s*)\"/$1\\(dq/;
print $d;
}
+ if($exam) {
+ print ".fi\n"; # fill-in
+ }
}
sub seealso {
@@ -192,9 +199,13 @@ sub single {
my $requires;
my $category;
my $seealso;
+ my $copyright;
+ my $spdx;
my @examples; # there can be more than one
my $magic; # cmdline special option
my $line;
+ my $multi;
+ my $experimental;
while(<F>) {
$line++;
if(/^Short: *(.)/i) {
@@ -233,6 +244,18 @@ sub single {
elsif(/^Example: *(.*)/i) {
push @examples, $1;
}
+ elsif(/^Multi: *(.*)/i) {
+ $multi=$1;
+ }
+ elsif(/^Experimental: yes/i) {
+ $experimental=1;
+ }
+ elsif(/^C: (.*)/i) {
+ $copyright=$1;
+ }
+ elsif(/^SPDX-License-Identifier: (.*)/i) {
+ $spdx=$1;
+ }
elsif(/^Help: *(.*)/i) {
;
}
@@ -241,6 +264,10 @@ sub single {
print STDERR "ERROR: no 'Long:' in $f\n";
return 1;
}
+ if($multi !~ /(single|append|boolean|mutex)/) {
+ print STDERR "ERROR: bad 'Multi:' in $f\n";
+ return 1;
+ }
if(!$category) {
print STDERR "ERROR: no 'Category:' in $f\n";
return 2;
@@ -257,6 +284,14 @@ sub single {
print STDERR "$f:$line:1:ERROR: no 'See-also:' field present\n";
return 2;
}
+ if(!$copyright) {
+ print STDERR "$f:$line:1:ERROR: no 'C:' field present\n";
+ return 2;
+ }
+ if(!$spdx) {
+ print STDERR "$f:$line:1:ERROR: no 'SPDX-License-Identifier:' field present\n";
+ return 2;
+ }
last;
}
else {
@@ -303,9 +338,35 @@ sub single {
print ".SH DESCRIPTION\n";
}
+ if($experimental) {
+ print "**WARNING**: this option is experimental. Do not use in production.\n\n";
+ }
+
printdesc(@desc);
undef @desc;
+ if($multi eq "single") {
+ print "\nIf --$long is provided several times, the last set ".
+ "value will be used.\n";
+ }
+ elsif($multi eq "append") {
+ print "\n--$long can be used several times in a command line\n";
+ }
+ elsif($multi eq "boolean") {
+ my $rev = "no-$long";
+ # for options that start with "no-" the reverse is then without
+ # the no- prefix
+ if($long =~ /^no-/) {
+ $rev = $long;
+ $rev =~ s/^no-//;
+ }
+ print "\nProviding --$long multiple times has no extra effect.\n".
+ "Disable it again with --$rev.\n";
+ }
+ elsif($multi eq "mutex") {
+ print "\nProviding --$long multiple times has no extra effect.\n";
+ }
+
my @foot;
if($seealso) {
my @m=split(/ /, $seealso);
@@ -346,7 +407,8 @@ sub single {
my $l = manpageify($k);
$mstr .= sprintf "%s$l", $mstr?" and ":"";
}
- push @foot, overrides($standalone, "This option overrides $mstr. ");
+ push @foot, overrides($standalone,
+ "This option is mutually exclusive to $mstr. ");
}
if($examples[0]) {
my $s ="";
@@ -457,6 +519,8 @@ sub listhelp {
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#include "tool_help.h"
diff --git a/docs/cmdline-opts/get.d b/docs/cmdline-opts/get.d
index 3920d686c..fbfbe8672 100644
--- a/docs/cmdline-opts/get.d
+++ b/docs/cmdline-opts/get.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: get
Short: G
Help: Put the post data in the URL and use GET
@@ -7,6 +9,7 @@ Example: --get -d "tool=curl" -d "age=old" $URL
Example: --get -I -d "tool=curl" $URL
Added: 7.8.1
See-also: data request
+Multi: boolean
---
When used, this option will make all data specified with --data, --data-binary
or --data-urlencode to be used in an HTTP GET request instead of the POST
@@ -15,7 +18,3 @@ with a '?' separator.
If used in combination with --head, the POST data will instead be appended to
the URL with a HEAD request.
-
-If this option is used several times, only the first one is used. This is
-because undoing a GET does not make sense, but you should then instead enforce
-the alternative method you prefer.
diff --git a/docs/cmdline-opts/globoff.d b/docs/cmdline-opts/globoff.d
index 7660c8b71..ff84ad01d 100644
--- a/docs/cmdline-opts/globoff.d
+++ b/docs/cmdline-opts/globoff.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: globoff
Short: g
Help: Disable URL sequences and ranges using {} and []
@@ -5,6 +7,7 @@ Category: curl
Example: -g "https://example.com/{[]}}}}"
Added: 7.6
See-also: config disable
+Multi: boolean
---
This option switches off the "URL globbing parser". When you set this option,
you can specify URLs that contain the letters {}[] without having curl itself
diff --git a/docs/cmdline-opts/happy-eyeballs-timeout-ms.d b/docs/cmdline-opts/happy-eyeballs-timeout-ms.d
index 6897a69a5..c5f10f6db 100644
--- a/docs/cmdline-opts/happy-eyeballs-timeout-ms.d
+++ b/docs/cmdline-opts/happy-eyeballs-timeout-ms.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: happy-eyeballs-timeout-ms
Arg: <milliseconds>
Help: Time for IPv6 before trying IPv4
@@ -5,6 +7,7 @@ Added: 7.59.0
Category: connection
Example: --happy-eyeballs-timeout-ms 500 $URL
See-also: max-time connect-timeout
+Multi: single
---
Happy Eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
addresses for dual-stack hosts, giving IPv6 a head-start of the specified
@@ -16,5 +19,3 @@ The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
balance human factors against network load." libcurl currently defaults to
200 ms. Firefox and Chrome currently default to 300 ms.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/haproxy-protocol.d b/docs/cmdline-opts/haproxy-protocol.d
index 792db6766..b2129e6eb 100644
--- a/docs/cmdline-opts/haproxy-protocol.d
+++ b/docs/cmdline-opts/haproxy-protocol.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: haproxy-protocol
Help: Send HAProxy PROXY protocol v1 header
Protocols: HTTP
@@ -5,6 +7,7 @@ Added: 7.60.0
Category: http proxy
Example: --haproxy-protocol $URL
See-also: proxy
+Multi: boolean
---
Send a HAProxy PROXY protocol v1 header at the beginning of the
connection. This is used by some load balancers and reverse proxies to
diff --git a/docs/cmdline-opts/head.d b/docs/cmdline-opts/head.d
index c659337ff..31de19aca 100644
--- a/docs/cmdline-opts/head.d
+++ b/docs/cmdline-opts/head.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: head
Short: I
Help: Show document info only
@@ -6,6 +8,7 @@ Category: http ftp file
Example: -I $URL
Added: 4.0
See-also: get verbose trace-ascii
+Multi: boolean
---
Fetch the headers only! HTTP-servers feature the command HEAD which this uses
to get nothing but the header of a document. When used on an FTP or FILE file,
diff --git a/docs/cmdline-opts/header.d b/docs/cmdline-opts/header.d
index 143f426cf..a64873fcb 100644
--- a/docs/cmdline-opts/header.d
+++ b/docs/cmdline-opts/header.d
@@ -1,25 +1,34 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: header
Short: H
Arg: <header/@file>
Help: Pass custom header(s) to server
-Protocols: HTTP
-Category: http
+Protocols: HTTP IMAP SMTP
+Category: http imap smtp
See-also: user-agent referer
Example: -H "X-First-Name: Joe" $URL
Example: -H "User-Agent: yes-please/2000" $URL
Example: -H "Host:" $URL
Added: 5.0
+Multi: append
---
-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 are
-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:".
+Extra header to include in information sent. When used within an HTTP request,
+it is added to the regular request headers.
+
+For an IMAP or SMTP MIME uploaded mail built with --form options, it is
+prepended to the resulting MIME document, effectively including it at the mail
+global level. It does not affect raw uploaded mails (Added in 7.56.0).
+
+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 are 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 **not** add that as a part of the header
@@ -30,15 +39,18 @@ This option can take an argument in @filename style, which then adds a header
for each line in the input file. Using @- will make curl read the header file
from stdin. Added in 7.55.0.
-You need --proxy-header to send custom headers intended for a HTTP
+Please note that most anti-spam utilities check the presence and value of
+several MIME mail headers: these are "From:", "To:", "Date:" and "Subject:"
+among others and should be added with this option.
+
+You need --proxy-header to send custom headers intended for an HTTP
proxy. Added in 7.37.0.
-Passing on a "Transfer-Encoding: chunked" header when doing a HTTP request
+Passing on a "Transfer-Encoding: chunked" header when doing an HTTP request
with a request body, will make curl send the data using chunked encoding.
-**WARNING**: headers set with this option will be set in all requests - even
-after redirects are followed, like when told with --location. This can lead to
-the header being sent to other hosts than the original host, so sensitive
-headers should be used with caution combined with following redirects.
-
-This option can be used multiple times to add/replace/remove multiple headers.
+**WARNING**: headers set with this option will be set in all HTTP requests
+- even after redirects are followed, like when told with --location. This can
+lead to the header being sent to other hosts than the original host, so
+sensitive headers should be used with caution combined with following
+redirects.
diff --git a/docs/cmdline-opts/help.d b/docs/cmdline-opts/help.d
index 664c040a8..7d835a381 100644
--- a/docs/cmdline-opts/help.d
+++ b/docs/cmdline-opts/help.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: help
Arg: <category>
Short: h
@@ -6,6 +8,7 @@ Category: important curl
Example: --help all
Added: 4.0
See-also: verbose
+Multi: boolean
---
Usage help. This lists all commands of the <category>.
If no arg was provided, curl will display the most important
diff --git a/docs/cmdline-opts/hostpubmd5.d b/docs/cmdline-opts/hostpubmd5.d
index d3ea6b6f4..966bbca27 100644
--- a/docs/cmdline-opts/hostpubmd5.d
+++ b/docs/cmdline-opts/hostpubmd5.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: hostpubmd5
Arg: <md5>
Help: Acceptable MD5 hash of the host public key
@@ -6,6 +8,7 @@ Added: 7.17.1
Category: sftp scp
Example: --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/
See-also: hostpubsha256
+Multi: single
---
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
diff --git a/docs/cmdline-opts/hostpubsha256.d b/docs/cmdline-opts/hostpubsha256.d
index 2330d1a36..c95248504 100644
--- a/docs/cmdline-opts/hostpubsha256.d
+++ b/docs/cmdline-opts/hostpubsha256.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: hostpubsha256
Arg: <sha256>
Help: Acceptable SHA256 hash of the host public key
@@ -6,6 +8,7 @@ Added: 7.80.0
Category: sftp scp
Example: --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/
See-also: hostpubmd5
+Multi: single
---
Pass a string containing a Base64-encoded SHA256 hash of the remote
host's public key. Curl will refuse the connection with the host
diff --git a/docs/cmdline-opts/hsts.d b/docs/cmdline-opts/hsts.d
index 65526f050..ec251acbe 100644
--- a/docs/cmdline-opts/hsts.d
+++ b/docs/cmdline-opts/hsts.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: hsts
Arg: <file name>
Protocols: HTTPS
@@ -6,6 +8,7 @@ Added: 7.74.0
Category: http
Example: --hsts cache.txt $URL
See-also: proto
+Multi: append
---
This option enables HSTS for the transfer. If the file name points to an
existing HSTS cache file, that will be used. After a completed transfer, the
diff --git a/docs/cmdline-opts/http0.9.d b/docs/cmdline-opts/http0.9.d
index 5797b2d7d..58dec5577 100644
--- a/docs/cmdline-opts/http0.9.d
+++ b/docs/cmdline-opts/http0.9.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: http0.9
Tags: Versions
Protocols: HTTP
@@ -6,6 +8,7 @@ Category: http
Example: --http0.9 $URL
Added: 7.64.0
See-also: http1.1 http2 http3
+Multi: boolean
---
Tells curl to be fine with HTTP version 0.9 response.
diff --git a/docs/cmdline-opts/http1.0.d b/docs/cmdline-opts/http1.0.d
index 84e390055..3f8277edd 100644
--- a/docs/cmdline-opts/http1.0.d
+++ b/docs/cmdline-opts/http1.0.d
@@ -1,13 +1,16 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: 0
Long: http1.0
Tags: Versions
Protocols: HTTP
Added: 7.9.1
-Mutexed: http1.1 http2
+Mutexed: http1.1 http2 http2-prior-knowledge http3
Help: Use HTTP 1.0
Category: http
Example: --http1.0 $URL
See-also: http0.9 http1.1
+Multi: mutex
---
Tells curl to use HTTP version 1.0 instead of using its internally preferred
HTTP version.
diff --git a/docs/cmdline-opts/http1.1.d b/docs/cmdline-opts/http1.1.d
index 84b2c59d8..205755309 100644
--- a/docs/cmdline-opts/http1.1.d
+++ b/docs/cmdline-opts/http1.1.d
@@ -1,11 +1,14 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: http1.1
Tags: Versions
Protocols: HTTP
Added: 7.33.0
-Mutexed: http1.0 http2
+Mutexed: http1.0 http2 http2-prior-knowledge http3
Help: Use HTTP 1.1
Category: http
Example: --http1.1 $URL
-See-also: http1.1 http0.9
+See-also: http1.0 http0.9
+Multi: mutex
---
Tells curl to use HTTP version 1.1.
diff --git a/docs/cmdline-opts/http2-prior-knowledge.d b/docs/cmdline-opts/http2-prior-knowledge.d
index 4e9446729..eb79c9f36 100644
--- a/docs/cmdline-opts/http2-prior-knowledge.d
+++ b/docs/cmdline-opts/http2-prior-knowledge.d
@@ -1,13 +1,16 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: http2-prior-knowledge
Tags: Versions
Protocols: HTTP
Added: 7.49.0
-Mutexed: http1.1 http1.0 http2
+Mutexed: http1.1 http1.0 http2 http3
Requires: HTTP/2
Help: Use HTTP 2 without HTTP/1.1 Upgrade
Category: http
Example: --http2-prior-knowledge $URL
See-also: http2 http3
+Multi: boolean
---
Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1
Upgrade. It requires prior knowledge that the server supports HTTP/2 straight
diff --git a/docs/cmdline-opts/http2.d b/docs/cmdline-opts/http2.d
index 2a85db600..e247b649c 100644
--- a/docs/cmdline-opts/http2.d
+++ b/docs/cmdline-opts/http2.d
@@ -1,14 +1,17 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: http2
Tags: Versions
Protocols: HTTP
Added: 7.33.0
-Mutexed: http1.1 http1.0 http2-prior-knowledge
+Mutexed: http1.1 http1.0 http2-prior-knowledge http3
Requires: HTTP/2
See-also: no-alpn
Help: Use HTTP 2
See-also: http1.1 http3
Category: http
Example: --http2 $URL
+Multi: mutex
---
Tells curl to use HTTP version 2.
@@ -17,3 +20,7 @@ handshake. curl does this by default.
For HTTP, this means curl will attempt to upgrade the request to HTTP/2 using
the Upgrade: request header.
+
+When curl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or
+higher even though that is required by the specification. A user can add this
+version requirement with --tlsv1.2.
diff --git a/docs/cmdline-opts/http3.d b/docs/cmdline-opts/http3.d
index f6c92b39a..7f5b8eb5a 100644
--- a/docs/cmdline-opts/http3.d
+++ b/docs/cmdline-opts/http3.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: http3
Tags: Versions
Protocols: HTTP
@@ -8,9 +10,9 @@ Help: Use HTTP v3
See-also: http1.1 http2
Category: http
Example: --http3 $URL
+Multi: mutex
+Experimental: yes
---
-**WARNING**: this option is experimental. Do not use in production.
-
Tells curl to use HTTP version 3 directly to the host and port number used in
the URL. A normal HTTP/3 transaction will be done to a host and then get
redirected via Alt-Svc, but this option allows a user to circumvent that when
diff --git a/docs/cmdline-opts/ignore-content-length.d b/docs/cmdline-opts/ignore-content-length.d
index 4844ecafd..eda4bd016 100644
--- a/docs/cmdline-opts/ignore-content-length.d
+++ b/docs/cmdline-opts/ignore-content-length.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ignore-content-length
Help: Ignore the size of the remote resource
Protocols: FTP HTTP
@@ -5,6 +7,7 @@ Category: http ftp
Example: --ignore-content-length $URL
Added: 7.14.1
See-also: ftp-skip-pasv-ip
+Multi: boolean
---
For HTTP, Ignore the Content-Length header. This is particularly useful for
servers running Apache 1.x, which will report incorrect Content-Length for
diff --git a/docs/cmdline-opts/include.d b/docs/cmdline-opts/include.d
index 85831f845..9e9649b7e 100644
--- a/docs/cmdline-opts/include.d
+++ b/docs/cmdline-opts/include.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: include
Short: i
Help: Include protocol response headers in the output
@@ -5,6 +7,7 @@ See-also: verbose
Category: important verbose
Example: -i $URL
Added: 4.8
+Multi: boolean
---
Include the HTTP response headers in the output. The HTTP response headers can
include things like server name, cookies, date of the document, HTTP version
diff --git a/docs/cmdline-opts/insecure.d b/docs/cmdline-opts/insecure.d
index 90c1c0802..c75817efc 100644
--- a/docs/cmdline-opts/insecure.d
+++ b/docs/cmdline-opts/insecure.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: insecure
Short: k
Help: Allow insecure server connections
@@ -6,6 +8,7 @@ See-also: proxy-insecure cacert capath
Category: tls sftp scp
Example: --insecure $URL
Added: 7.10
+Multi: boolean
---
By default, every secure connection curl makes is verified to be secure before
the transfer takes place. This option makes curl skip the verification step
@@ -20,6 +23,6 @@ See this online resource for further details:
For SFTP and SCP, this option makes curl skip the *known_hosts* verification.
*known_hosts* is a file normally stored in the user's home directory in the
-\&.ssh subdirectory, which contains host names and their public keys.
+".ssh" subdirectory, which contains host names and their public keys.
**WARNING**: using this option makes the transfer insecure.
diff --git a/docs/cmdline-opts/interface.d b/docs/cmdline-opts/interface.d
index fb21ea2f1..275f6151c 100644
--- a/docs/cmdline-opts/interface.d
+++ b/docs/cmdline-opts/interface.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: interface
Arg: <name>
Help: Use network INTERFACE (or address)
@@ -5,14 +7,13 @@ See-also: dns-interface
Category: connection
Example: --interface eth0 $URL
Added: 7.3
+Multi: single
---
Perform an operation using a specified interface. You can enter interface
name, IP address or host name. An example could look like:
curl --interface eth0:1 https://www.example.com/
-If this option is used several times, the last one will be used.
-
On Linux it can be used to specify a VRF, but the binary needs to either
have CAP_NET_RAW or to be run as root. More information about Linux VRF:
https://www.kernel.org/doc/Documentation/networking/vrf.txt
diff --git a/docs/cmdline-opts/ipv4.d b/docs/cmdline-opts/ipv4.d
index a5cae4eb4..8a3e35e73 100644
--- a/docs/cmdline-opts/ipv4.d
+++ b/docs/cmdline-opts/ipv4.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: 4
Long: ipv4
Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
Help: Resolve names to IPv4 addresses
Category: connection dns
Example: --ipv4 $URL
+Multi: boolean
---
-This option tells curl to resolve names to IPv4 addresses only, and not for
-example try IPv6.
+This option tells curl to use IPv4 addresses only, and not for example try
+IPv6.
diff --git a/docs/cmdline-opts/ipv6.d b/docs/cmdline-opts/ipv6.d
index 869c66896..16c47f178 100644
--- a/docs/cmdline-opts/ipv6.d
+++ b/docs/cmdline-opts/ipv6.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: 6
Long: ipv6
Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
Help: Resolve names to IPv6 addresses
Category: connection dns
Example: --ipv6 $URL
+Multi: boolean
---
-This option tells curl to resolve names to IPv6 addresses only, and not for
-example try IPv4.
+This option tells curl to use IPv6 addresses only, and not for example try
+IPv4.
diff --git a/docs/cmdline-opts/json.d b/docs/cmdline-opts/json.d
new file mode 100644
index 000000000..d2ea553b0
--- /dev/null
+++ b/docs/cmdline-opts/json.d
@@ -0,0 +1,35 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
+Long: json
+Arg: <data>
+Help: HTTP POST JSON
+Protocols: HTTP
+See-also: data-binary data-raw
+Mutexed: form head upload-file
+Category: http post upload
+Example: --json '{ "drink": "coffe" }' $URL
+Example: --json '{ "drink":' --json ' "coffe" }' $URL
+Example: --json @prepared $URL
+Example: --json @- $URL < json.txt
+Added: 7.82.0
+Multi: append
+---
+Sends the specified JSON data in a POST request to the HTTP server. --json
+works as a shortcut for passing on these three options:
+
+ --data [arg]
+ --header "Content-Type: application/json"
+ --header "Accept: application/json"
+
+There is **no verification** that the passed in data is actual JSON or that
+the syntax is correct.
+
+If you start the data with the letter @, the rest should be a file name to
+read the data from, or a single dash (-) if you want curl to read the data
+from stdin. Posting data from a file named 'foobar' would thus be done with
+--json @foobar and to instead read the data from stdin, use --json @-.
+
+If this option is used more than once on the same command line, the additional
+data pieces will be concatenated to the previous before sending.
+
+The headers this option sets can be overridden with --header as usual.
diff --git a/docs/cmdline-opts/junk-session-cookies.d b/docs/cmdline-opts/junk-session-cookies.d
index cbc269240..7816125fa 100644
--- a/docs/cmdline-opts/junk-session-cookies.d
+++ b/docs/cmdline-opts/junk-session-cookies.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: junk-session-cookies
Short: j
Help: Ignore session cookies read from file
@@ -6,6 +8,7 @@ See-also: cookie cookie-jar
Category: http
Example: --junk-session-cookies -b cookies.txt $URL
Added: 7.9.7
+Multi: boolean
---
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
diff --git a/docs/cmdline-opts/keepalive-time.d b/docs/cmdline-opts/keepalive-time.d
index cdc150aa7..9667633b9 100644
--- a/docs/cmdline-opts/keepalive-time.d
+++ b/docs/cmdline-opts/keepalive-time.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: keepalive-time
Arg: <seconds>
Help: Interval time for keepalive probes
@@ -5,12 +7,15 @@ Added: 7.18.0
Category: connection
Example: --keepalive-time 20 $URL
See-also: no-keepalive max-time
+Multi: single
---
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 --no-keepalive is used.
+TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more).
+Keepalives are used by the TCP stack to detect broken networks on idle
+connections. The number of missed keepalive probes before declaring the
+connection down is OS dependent and is commonly 9 or 10. This option has no
+effect if --no-keepalive is used.
-If this option is used several times, the last one will be used. If
-unspecified, the option defaults to 60 seconds.
+If unspecified, the option defaults to 60 seconds.
diff --git a/docs/cmdline-opts/key-type.d b/docs/cmdline-opts/key-type.d
index 7a073a803..83ab99b94 100644
--- a/docs/cmdline-opts/key-type.d
+++ b/docs/cmdline-opts/key-type.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: key-type
Arg: <type>
Help: Private key file type (DER/PEM/ENG)
@@ -6,8 +8,7 @@ Category: tls
Example: --key-type DER --key here $URL
Added: 7.9.3
See-also: key
+Multi: single
---
Private key file type. Specify which type your --key provided private key
is. DER, PEM, and ENG are supported. If not specified, PEM is assumed.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/key.d b/docs/cmdline-opts/key.d
index 8d9c1136c..3e07c8ed1 100644
--- a/docs/cmdline-opts/key.d
+++ b/docs/cmdline-opts/key.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: key
Arg: <key>
Protocols: TLS SSH
@@ -6,10 +8,11 @@ Category: tls ssh
Example: --cert certificate --key here $URL
Added: 7.9.3
See-also: key-type cert
+Multi: single
---
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'.
+'~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
If curl is built against OpenSSL library, and the engine pkcs11 is available,
then a PKCS#11 URI (RFC 7512) can be used to specify a private key located in a
@@ -18,4 +21,7 @@ PKCS#11 URI. If a PKCS#11 URI is provided, then the --engine option will be set
as "pkcs11" if none was provided and the --key-type option will be set as
"ENG" if none was provided.
-If this option is used several times, the last one will be used.
+If curl is built against Secure Transport or Schannel then this option is
+ignored for TLS protocols (HTTPS, etc). Those backends expect the private key
+to be already present in the keychain or PKCS#12 file containing the
+certificate.
diff --git a/docs/cmdline-opts/krb.d b/docs/cmdline-opts/krb.d
index ad2d8f679..b2375ee79 100644
--- a/docs/cmdline-opts/krb.d
+++ b/docs/cmdline-opts/krb.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: krb
Arg: <level>
Help: Enable Kerberos with security <level>
@@ -7,9 +9,8 @@ Category: ftp
Example: --krb clear ftp://example.com/
Added: 7.3
See-also: delegation ssl
+Multi: single
---
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.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/libcurl.d b/docs/cmdline-opts/libcurl.d
index 752eda31a..da845d939 100644
--- a/docs/cmdline-opts/libcurl.d
+++ b/docs/cmdline-opts/libcurl.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: libcurl
Arg: <file>
Help: Dump libcurl equivalent code of this command line
@@ -5,6 +7,7 @@ Added: 7.16.1
Category: curl
Example: --libcurl client.c $URL
See-also: verbose
+Multi: single
---
Append this option to any ordinary curl command line, and you will get
libcurl-using C source code written to the file that does the equivalent
@@ -12,6 +15,3 @@ of what your command-line operation does!
This option is global and does not need to be specified for each use of
--next.
-
-If this option is used several times, the last given file name will be
-used.
diff --git a/docs/cmdline-opts/limit-rate.d b/docs/cmdline-opts/limit-rate.d
index 9594dfee2..0a1e4cf60 100644
--- a/docs/cmdline-opts/limit-rate.d
+++ b/docs/cmdline-opts/limit-rate.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: limit-rate
Arg: <speed>
Help: Limit transfer speed to RATE
@@ -7,6 +9,7 @@ Example: --limit-rate 1000 $URL
Example: --limit-rate 10M $URL
Added: 7.10
See-also: speed-limit speed-time
+Multi: single
---
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 would like
@@ -24,5 +27,3 @@ the set threshold over a period of multiple seconds.
If you also use the --speed-limit option, that option will take precedence and
might cripple the rate-limiting slightly, to help keeping the speed-limit
logic working.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/list-only.d b/docs/cmdline-opts/list-only.d
index 4fb2f6b9b..d84974f49 100644
--- a/docs/cmdline-opts/list-only.d
+++ b/docs/cmdline-opts/list-only.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: list-only
Short: l
Protocols: FTP POP3
@@ -6,6 +8,7 @@ Added: 4.0
Category: ftp pop3
Example: --list-only ftp://example.com/dir/
See-also: quote request
+Multi: boolean
---
(FTP)
When listing an FTP directory, this switch forces a name-only view. This is
diff --git a/docs/cmdline-opts/local-port.d b/docs/cmdline-opts/local-port.d
index fd157d93c..e889ee443 100644
--- a/docs/cmdline-opts/local-port.d
+++ b/docs/cmdline-opts/local-port.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: local-port
Arg: <num/range>
Help: Force use of RANGE for local port numbers
@@ -5,6 +7,7 @@ Added: 7.15.2
Category: connection
Example: --local-port 1000-3000 $URL
See-also: globoff
+Multi: single
---
Set a preferred single number or range (FROM-TO) of local port numbers to use
for the connection(s). Note that port numbers by nature are a scarce resource
diff --git a/docs/cmdline-opts/location-trusted.d b/docs/cmdline-opts/location-trusted.d
index 0277aa7b5..8d19416d7 100644
--- a/docs/cmdline-opts/location-trusted.d
+++ b/docs/cmdline-opts/location-trusted.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: location-trusted
Help: Like --location, and send auth to other hosts
Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: user
Category: http auth
Example: --location-trusted -u user:password $URL
Added: 7.10.4
+Multi: boolean
---
Like --location, but will allow sending the name + password to all hosts that
the site may redirect to. This may or may not introduce a security breach if
diff --git a/docs/cmdline-opts/location.d b/docs/cmdline-opts/location.d
index e694dfad1..c3b2b5d82 100644
--- a/docs/cmdline-opts/location.d
+++ b/docs/cmdline-opts/location.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: location
Short: L
Help: Follow redirects
@@ -6,6 +8,7 @@ Category: http
Example: -L $URL
Added: 4.9
See-also: resolve alt-svc
+Multi: boolean
---
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
diff --git a/docs/cmdline-opts/login-options.d b/docs/cmdline-opts/login-options.d
index 4c53db3fd..e9e07a3ef 100644
--- a/docs/cmdline-opts/login-options.d
+++ b/docs/cmdline-opts/login-options.d
@@ -1,11 +1,14 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: login-options
Arg: <options>
-Protocols: IMAP POP3 SMTP
+Protocols: IMAP LDAP POP3 SMTP
Help: Server login options
Added: 7.34.0
Category: imap pop3 smtp auth
Example: --login-options 'AUTH=*' imap://example.com
See-also: user
+Multi: single
---
Specify the login options to use during server authentication.
@@ -13,5 +16,3 @@ You can use 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 login options please see RFC
2384, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/mail-auth.d b/docs/cmdline-opts/mail-auth.d
index 49a02d5ba..e215575be 100644
--- a/docs/cmdline-opts/mail-auth.d
+++ b/docs/cmdline-opts/mail-auth.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: mail-auth
Arg: <address>
Protocols: SMTP
@@ -6,6 +8,7 @@ Added: 7.25.0
See-also: mail-rcpt mail-from
Category: smtp
Example: --mail-auth user@example.come -T mail smtp://example.com/
+Multi: single
---
Specify a single address. This will be used to specify the authentication
address (identity) of a submitted message that is being relayed to another
diff --git a/docs/cmdline-opts/mail-from.d b/docs/cmdline-opts/mail-from.d
index be0547c9f..c96193840 100644
--- a/docs/cmdline-opts/mail-from.d
+++ b/docs/cmdline-opts/mail-from.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: mail-from
Arg: <address>
Help: Mail from this address
@@ -6,5 +8,6 @@ Added: 7.20.0
See-also: mail-rcpt mail-auth
Category: smtp
Example: --mail-from user@example.com -T mail smtp://example.com/
+Multi: single
---
Specify a single address that the given mail should get sent from.
diff --git a/docs/cmdline-opts/mail-rcpt-allowfails.d b/docs/cmdline-opts/mail-rcpt-allowfails.d
index 12296afdc..d14b9e8f0 100644
--- a/docs/cmdline-opts/mail-rcpt-allowfails.d
+++ b/docs/cmdline-opts/mail-rcpt-allowfails.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: mail-rcpt-allowfails
Help: Allow RCPT TO command to fail for some recipients
Protocols: SMTP
@@ -5,6 +7,7 @@ Added: 7.69.0
Category: smtp
Example: --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com
See-also: mail-rcpt
+Multi: boolean
---
When sending data to multiple recipients, by default curl will abort SMTP
conversation if at least one of the recipients causes RCPT TO command to
diff --git a/docs/cmdline-opts/mail-rcpt.d b/docs/cmdline-opts/mail-rcpt.d
index 8a3b43c15..d1e6a1561 100644
--- a/docs/cmdline-opts/mail-rcpt.d
+++ b/docs/cmdline-opts/mail-rcpt.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: mail-rcpt
Arg: <address>
Help: Mail to this address
@@ -6,6 +8,7 @@ Added: 7.20.0
Category: smtp
Example: --mail-rcpt user@example.net smtp://example.com
See-also: mail-rcpt-allowfails
+Multi: append
---
Specify a single email address, user name or mailing list name. Repeat this
option several times to send to multiple recipients.
diff --git a/docs/cmdline-opts/manual.d b/docs/cmdline-opts/manual.d
index 9674a465d..e6d439713 100644
--- a/docs/cmdline-opts/manual.d
+++ b/docs/cmdline-opts/manual.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: manual
Short: M
Help: Display the full manual
@@ -5,5 +7,6 @@ Category: curl
Example: --manual
Added: 5.2
See-also: verbose libcurl trace
+Multi: boolean
---
Manual. Display the huge help text.
diff --git a/docs/cmdline-opts/max-filesize.d b/docs/cmdline-opts/max-filesize.d
index 9e3abca42..822252e82 100644
--- a/docs/cmdline-opts/max-filesize.d
+++ b/docs/cmdline-opts/max-filesize.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: max-filesize
Arg: <bytes>
Help: Maximum file size to download
@@ -6,6 +8,7 @@ See-also: limit-rate
Category: connection
Example: --max-filesize 100K $URL
Added: 7.10.8
+Multi: single
---
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
diff --git a/docs/cmdline-opts/max-redirs.d b/docs/cmdline-opts/max-redirs.d
index a0b549399..f8434748e 100644
--- a/docs/cmdline-opts/max-redirs.d
+++ b/docs/cmdline-opts/max-redirs.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: max-redirs
Arg: <num>
Help: Maximum number of redirects allowed
@@ -6,9 +8,8 @@ Category: http
Example: --max-redirs 3 --location $URL
Added: 7.5
See-also: location
+Multi: single
---
Set maximum number of redirections to follow. When --location is used, to
prevent curl from following too many redirects, by default, the limit is
set to 50 redirects. Set this option to -1 to make it unlimited.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/max-time.d b/docs/cmdline-opts/max-time.d
index 7246f6134..8efef1279 100644
--- a/docs/cmdline-opts/max-time.d
+++ b/docs/cmdline-opts/max-time.d
@@ -1,17 +1,22 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: max-time
Short: m
Arg: <fractional seconds>
Help: Maximum time allowed for transfer
-See-also: connect-timeout
+See-also: connect-timeout retry-max-time
Category: connection
Example: --max-time 10 $URL
Example: --max-time 2.92 $URL
Added: 4.0
+Multi: single
---
-Maximum time in seconds that you allow the whole operation to take. This is
+Maximum time in seconds that you allow each transfer 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.
-If this option is used several times, the last one will be used.
+If you enable retrying the transfer (--retry) then the maximum time counter is
+reset each time the transfer is retried. You can use --retry-max-time to limit
+the retry time.
diff --git a/docs/cmdline-opts/metalink.d b/docs/cmdline-opts/metalink.d
index f1c0aeefe..2a05228ae 100644
--- a/docs/cmdline-opts/metalink.d
+++ b/docs/cmdline-opts/metalink.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: metalink
Help: Process given URLs as metalink XML file
Added: 7.27.0
Category: misc
Example: --metalink file $URL
See-also: parallel
+Multi: single
---
This option was previously used to specify a metalink resource. Metalink
support has been disabled in curl since 7.78.0 for security reasons.
diff --git a/docs/cmdline-opts/negotiate.d b/docs/cmdline-opts/negotiate.d
index 69a0e6c66..727f89826 100644
--- a/docs/cmdline-opts/negotiate.d
+++ b/docs/cmdline-opts/negotiate.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: negotiate
Help: Use HTTP Negotiate (SPNEGO) authentication
Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: basic ntlm anyauth proxy-negotiate
Category: auth http
Example: --negotiate -u : $URL
Added: 7.10.6
+Multi: mutex
---
Enables Negotiate (SPNEGO) authentication.
diff --git a/docs/cmdline-opts/netrc-file.d b/docs/cmdline-opts/netrc-file.d
index 7af727fb1..f50c0ed34 100644
--- a/docs/cmdline-opts/netrc-file.d
+++ b/docs/cmdline-opts/netrc-file.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: netrc-file
Help: Specify FILE for netrc
Arg: <filename>
@@ -6,10 +8,10 @@ Mutexed: netrc
Category: curl
Example: --netrc-file netrc $URL
See-also: netrc user config
+Multi: single
---
This option is similar to --netrc, except that you provide the path (absolute
or relative) to the netrc file that curl should use. You can only specify one
-netrc file per invocation. If several --netrc-file options are provided,
-the last one will be used.
+netrc file per invocation.
It will abide by --netrc-optional if specified.
diff --git a/docs/cmdline-opts/netrc-optional.d b/docs/cmdline-opts/netrc-optional.d
index 5f6fea626..6d96acf6c 100644
--- a/docs/cmdline-opts/netrc-optional.d
+++ b/docs/cmdline-opts/netrc-optional.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: netrc-optional
Help: Use either .netrc or URL
Mutexed: netrc
@@ -5,6 +7,7 @@ See-also: netrc-file
Category: curl
Example: --netrc-optional $URL
Added: 7.9.8
+Multi: boolean
---
Similar to --netrc, but this option makes the .netrc usage **optional**
and not mandatory as the --netrc option does.
diff --git a/docs/cmdline-opts/netrc.d b/docs/cmdline-opts/netrc.d
index 02497f780..7f109f7ad 100644
--- a/docs/cmdline-opts/netrc.d
+++ b/docs/cmdline-opts/netrc.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: netrc
Short: n
Help: Must read .netrc for user name and password
@@ -5,6 +7,7 @@ Category: curl
Example: --netrc $URL
Added: 4.6
See-also: netrc-file config user
+Multi: boolean
---
Makes curl scan the *.netrc* (*_netrc* on Windows) file in the user's home
directory for login name and password. This is typically used for FTP on
@@ -15,9 +18,9 @@ neither world- nor group-readable). The environment variable "HOME" is used
to find the home directory.
A quick and simple example of how to setup a *.netrc* to allow curl to FTP to
-the machine host.domain.com with user name \&'myself' and password \&'secret'
+the machine host.domain.com with user name 'myself' and password 'secret'
could look similar to:
machine host.domain.com
login myself
- password secret"
+ password secret
diff --git a/docs/cmdline-opts/next.d b/docs/cmdline-opts/next.d
index d3da64f54..49a3d2e2e 100644
--- a/docs/cmdline-opts/next.d
+++ b/docs/cmdline-opts/next.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: :
Long: next
Tags:
@@ -9,6 +11,7 @@ Category: curl
Example: $URL --next -d postthis www2.example.com
Example: -I $URL --next https://example.net/
See-also: parallel config
+Multi: append
---
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
@@ -21,6 +24,4 @@ options include --verbose, --trace, --trace-ascii and --fail-early.
For example, you can do both a GET and a POST in a single command line:
-.nf
curl www1.example.com --next -d postthis www2.example.com
-.fi
diff --git a/docs/cmdline-opts/no-alpn.d b/docs/cmdline-opts/no-alpn.d
index bc6207632..8f01f4af4 100644
--- a/docs/cmdline-opts/no-alpn.d
+++ b/docs/cmdline-opts/no-alpn.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: no-alpn
Tags: HTTP/2
Protocols: HTTPS
@@ -7,6 +9,7 @@ Requires: TLS
Help: Disable the ALPN TLS extension
Category: tls http
Example: --no-alpn $URL
+Multi: boolean
---
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
diff --git a/docs/cmdline-opts/no-buffer.d b/docs/cmdline-opts/no-buffer.d
index c356eb34d..2de48c97c 100644
--- a/docs/cmdline-opts/no-buffer.d
+++ b/docs/cmdline-opts/no-buffer.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: no-buffer
Short: N
Help: Disable buffering of the output stream
@@ -5,11 +7,9 @@ Category: curl
Example: --no-buffer $URL
Added: 6.5
See-also: progress-bar
+Multi: boolean
---
Disables the buffering of the output stream. In normal work situations, curl
will use a standard buffered output stream that will have the effect that it
will output the data in chunks, not necessarily exactly when the data arrives.
Using this option will disable that buffering.
-
-Note that this is the negated option name documented. You can thus use
---buffer to enforce the buffering.
diff --git a/docs/cmdline-opts/no-clobber.d b/docs/cmdline-opts/no-clobber.d
new file mode 100644
index 000000000..d8fc3f141
--- /dev/null
+++ b/docs/cmdline-opts/no-clobber.d
@@ -0,0 +1,19 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
+Long: no-clobber
+Help: Do not overwrite files that already exist
+Category: curl output
+Added: 7.83.0
+See-also: output remote-name
+Example: --no-clobber --output local/dir/file $URL
+Multi: boolean
+---
+When used in conjunction with the --output, --remote-header-name,
+--remote-name, or --remote-name-all options, curl avoids overwriting files
+that already exist. Instead, a dot and a number gets appended to the name
+of the file that would be created, up to filename.100 after which it will not
+create any file.
+
+Note that this is the negated option name documented. You can thus use
+--clobber to enforce the clobbering, even if --remote-header-name or -J is
+specified.
diff --git a/docs/cmdline-opts/no-keepalive.d b/docs/cmdline-opts/no-keepalive.d
index d65a3bd21..0f4464647 100644
--- a/docs/cmdline-opts/no-keepalive.d
+++ b/docs/cmdline-opts/no-keepalive.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: no-keepalive
Help: Disable TCP keepalive on the connection
Category: connection
Example: --no-keepalive $URL
Added: 7.18.0
See-also: keepalive-time
+Multi: boolean
---
Disables the use of keepalive messages on the TCP connection. curl otherwise
enables them by default.
diff --git a/docs/cmdline-opts/no-npn.d b/docs/cmdline-opts/no-npn.d
index 7a9239d36..97314e8cc 100644
--- a/docs/cmdline-opts/no-npn.d
+++ b/docs/cmdline-opts/no-npn.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: no-npn
Tags: Versions HTTP/2
Protocols: HTTPS
@@ -8,7 +10,10 @@ Requires: TLS
Help: Disable the NPN TLS extension
Category: tls http
Example: --no-npn $URL
+Multi: boolean
---
+In curl 7.86.0 and later, curl never uses 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.
diff --git a/docs/cmdline-opts/no-progress-meter.d b/docs/cmdline-opts/no-progress-meter.d
index 9c7413eeb..9a298c44c 100644
--- a/docs/cmdline-opts/no-progress-meter.d
+++ b/docs/cmdline-opts/no-progress-meter.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: no-progress-meter
Help: Do not show the progress meter
See-also: verbose silent
Added: 7.67.0
Category: verbose
Example: --no-progress-meter -o store $URL
+Multi: boolean
---
Option to switch off the progress meter output without muting or otherwise
affecting warning and informational messages like --silent does.
diff --git a/docs/cmdline-opts/no-sessionid.d b/docs/cmdline-opts/no-sessionid.d
index 1b771857b..b3e51b216 100644
--- a/docs/cmdline-opts/no-sessionid.d
+++ b/docs/cmdline-opts/no-sessionid.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: no-sessionid
Help: Disable SSL session-ID reusing
Protocols: TLS
@@ -5,6 +7,7 @@ Added: 7.16.0
Category: tls
Example: --no-sessionid $URL
See-also: insecure
+Multi: boolean
---
Disable curl's use of SSL session-ID caching. By default all transfers are
done using the cache. Note that while nothing should ever get hurt by
diff --git a/docs/cmdline-opts/noproxy.d b/docs/cmdline-opts/noproxy.d
index 0ed390779..c28e897eb 100644
--- a/docs/cmdline-opts/noproxy.d
+++ b/docs/cmdline-opts/noproxy.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: noproxy
Arg: <no-proxy-list>
Help: List of hosts which do not use proxy
@@ -5,6 +7,7 @@ Added: 7.19.4
Category: proxy
Example: --noproxy "www.example" $URL
See-also: proxy
+Multi: single
---
Comma-separated list of hosts for which not to use a proxy, if one is
specified. The only wildcard is a single * character, which matches all hosts,
@@ -15,4 +18,4 @@ not www.notlocal.com.
Since 7.53.0, This option overrides the environment variables that disable the
proxy ('no_proxy' and 'NO_PROXY'). If there's an environment variable
-disabling a proxy, you can set the noproxy list to \&"" to override it.
+disabling a proxy, you can set the noproxy list to "" to override it.
diff --git a/docs/cmdline-opts/ntlm-wb.d b/docs/cmdline-opts/ntlm-wb.d
index c8e72c325..7317adc78 100644
--- a/docs/cmdline-opts/ntlm-wb.d
+++ b/docs/cmdline-opts/ntlm-wb.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ntlm-wb
Help: Use HTTP NTLM authentication with winbind
Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: ntlm proxy-ntlm
Category: auth http
Example: --ntlm-wb -u user:password $URL
Added: 7.22.0
+Multi: mutex
---
Enables NTLM much in the style --ntlm does, but hand over the authentication
to the separate binary ntlmauth application that is executed when needed.
diff --git a/docs/cmdline-opts/ntlm.d b/docs/cmdline-opts/ntlm.d
index 658218a10..9e1a99687 100644
--- a/docs/cmdline-opts/ntlm.d
+++ b/docs/cmdline-opts/ntlm.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ntlm
Help: Use HTTP NTLM authentication
Mutexed: basic negotiate digest anyauth
@@ -7,6 +9,7 @@ Requires: TLS
Category: auth http
Example: --ntlm -u user:password $URL
Added: 7.10.6
+Multi: mutex
---
Enables NTLM authentication. The NTLM authentication method was designed by
Microsoft and is used by IIS web servers. It is a proprietary protocol,
diff --git a/docs/cmdline-opts/oauth2-bearer.d b/docs/cmdline-opts/oauth2-bearer.d
index e5ed0e87f..6b639cba0 100644
--- a/docs/cmdline-opts/oauth2-bearer.d
+++ b/docs/cmdline-opts/oauth2-bearer.d
@@ -1,16 +1,17 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: oauth2-bearer
Help: OAuth 2 Bearer Token
Arg: <token>
-Protocols: IMAP POP3 SMTP HTTP
+Protocols: IMAP LDAP POP3 SMTP HTTP
Category: auth
Example: --oauth2-bearer "mF_9.B5f-4.1JqM" $URL
Added: 7.33.0
See-also: basic ntlm digest
+Multi: single
---
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 --url or --user 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.
diff --git a/docs/cmdline-opts/output-dir.d b/docs/cmdline-opts/output-dir.d
index 230ebeea5..5c53c7fdc 100644
--- a/docs/cmdline-opts/output-dir.d
+++ b/docs/cmdline-opts/output-dir.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: output-dir
Arg: <dir>
Help: Directory to save files in
@@ -5,8 +7,8 @@ Added: 7.73.0
See-also: remote-name remote-header-name
Category: curl
Example: --output-dir "tmp" -O $URL
+Multi: single
---
-
This option specifies the directory in which files should be stored, when
--remote-name or --output are used.
@@ -15,6 +17,3 @@ command line, up until the first --next.
If the specified target directory does not exist, the operation will fail
unless --create-dirs is also used.
-
-If this option is used multiple times, the last specified directory will be
-used.
diff --git a/docs/cmdline-opts/output.d b/docs/cmdline-opts/output.d
index 15ddd525a..e3005d587 100644
--- a/docs/cmdline-opts/output.d
+++ b/docs/cmdline-opts/output.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: output
Arg: <file>
Short: o
@@ -9,6 +11,7 @@ Example: "http://{one,two}.example.com" -o "file_#1.txt"
Example: "http://{site,host}.host[1-5].com" -o "#1_#2"
Example: -o file $URL -o file2 https://example.net
Added: 4.0
+Multi: append
---
Write output to <file> instead of stdout. If you are using {} or [] to fetch
multiple documents, you should quote the URL and you can use '#' followed by a
diff --git a/docs/cmdline-opts/page-footer b/docs/cmdline-opts/page-footer
index edd756f0f..c8a65be04 100644
--- a/docs/cmdline-opts/page-footer
+++ b/docs/cmdline-opts/page-footer
@@ -22,7 +22,7 @@ SMTP, LDAP, etc.
Sets the proxy server to use if no protocol-specific proxy is set.
.IP "NO_PROXY <comma-separated list of hosts/domains>"
list of host names that should not go through any proxy. If set to an asterisk
-\&'*' only, it matches all hosts. Each name in this list is matched as either
+'*' only, it matches all hosts. Each name in this list is matched as either
a domain name which contains the hostname, or the hostname itself.
This environment variable disables use of the proxy even when specified with
@@ -60,7 +60,7 @@ invoked. Setting a name that is not a built-in alternative will make curl
stay with the default.
SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
-mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
+nss, openssl, rustls, schannel, secure-transport, wolfssl
.IP "HOME <dir>"
If set, this is used to find the home directory when that is needed. Like when
looking for the default .curlrc. \fBCURL_HOME\fP and \fBXDG_CONFIG_HOME\fP
@@ -113,6 +113,8 @@ Makes it the equivalent of --socks5-hostname
There are a bunch of different error codes and their corresponding error
messages that may appear under error conditions. At the time of this writing,
the exit codes are:
+.IP 0
+Success. The operation completed successfully according to the instructions.
.IP 1
Unsupported protocol. This build of curl has no support for this protocol.
.IP 2
@@ -164,7 +166,7 @@ failed.
.IP 21
FTP quote error. A quote command returned error from the server.
.IP 22
-HTTP page not retrieved. The requested url was not found or returned another
+HTTP page not retrieved. The requested URL was not found or returned another
error with the HTTP error code being 400 or above. This return code only
appears if --fail is used.
.IP 23
@@ -215,8 +217,6 @@ option to curl that was passed on to libcurl and rejected. Read up in the
manual!
.IP 49
Malformed telnet option.
-.IP 51
-The peer's SSL certificate or SSH MD5 fingerprint was not OK.
.IP 52
The server did not reply anything, which here is considered an error.
.IP 53
@@ -235,8 +235,6 @@ Could not use specified SSL cipher.
Peer certificate cannot be authenticated with known CA certificates.
.IP 61
Unrecognized transfer encoding.
-.IP 62
-Invalid LDAP URL.
.IP 63
Maximum file size exceeded.
.IP 64
@@ -261,10 +259,6 @@ Unknown TFTP transfer ID.
File already exists (TFTP).
.IP 74
No such user (TFTP).
-.IP 75
-Character conversion failed.
-.IP 76
-Character conversion functions required.
.IP 77
Problem reading the SSL CA cert (path? access rights?).
.IP 78
diff --git a/docs/cmdline-opts/page-header b/docs/cmdline-opts/page-header
index 900d21d84..1737ab5bd 100644
--- a/docs/cmdline-opts/page-header
+++ b/docs/cmdline-opts/page-header
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
@@ -31,7 +33,7 @@ curl \- transfer a URL
**curl** is a tool for transferring data from or to a server. It supports these
protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS,
LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP,
-SMTPS, TELNET or TFTP. The command is designed to work without user
+SMTPS, TELNET, TFTP, WS and WSS. The command is designed to work without user
interaction.
curl offers a busload of useful tricks like proxy support, user
diff --git a/docs/cmdline-opts/parallel-immediate.d b/docs/cmdline-opts/parallel-immediate.d
index 4f7468de6..e202214c1 100644
--- a/docs/cmdline-opts/parallel-immediate.d
+++ b/docs/cmdline-opts/parallel-immediate.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: parallel-immediate
Help: Do not wait for multiplexing (with --parallel)
Added: 7.68.0
See-also: parallel parallel-max
Category: connection curl
Example: --parallel-immediate -Z $URL -o file1 $URL -o file2
+Multi: boolean
---
When doing parallel transfers, this option will instruct curl that it should
rather prefer opening up more connections in parallel at once rather than
diff --git a/docs/cmdline-opts/parallel-max.d b/docs/cmdline-opts/parallel-max.d
index 1f22fcb7d..7bdd1b8f4 100644
--- a/docs/cmdline-opts/parallel-max.d
+++ b/docs/cmdline-opts/parallel-max.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: parallel-max
Arg: <num>
Help: Maximum concurrency for parallel transfers
@@ -5,6 +7,7 @@ Added: 7.66.0
See-also: parallel
Category: connection curl
Example: --parallel-max 100 -Z $URL ftp://example.com/
+Multi: single
---
When asked to do parallel transfers, using --parallel, this option controls
the maximum amount of transfers to do simultaneously.
diff --git a/docs/cmdline-opts/parallel.d b/docs/cmdline-opts/parallel.d
index f2ccaa78e..83c5cc5bd 100644
--- a/docs/cmdline-opts/parallel.d
+++ b/docs/cmdline-opts/parallel.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: Z
Long: parallel
Help: Perform transfers in parallel
@@ -5,6 +7,7 @@ Added: 7.66.0
Category: connection curl
Example: --parallel $URL -o file1 $URL -o file2
See-also: next verbose
+Multi: boolean
---
Makes curl perform its transfers in parallel as compared to the regular serial
manner.
diff --git a/docs/cmdline-opts/pass.d b/docs/cmdline-opts/pass.d
index 621754d61..a81c34892 100644
--- a/docs/cmdline-opts/pass.d
+++ b/docs/cmdline-opts/pass.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: pass
Arg: <phrase>
Help: Pass phrase for the private key
@@ -6,7 +8,6 @@ Category: ssh tls auth
Example: --pass secret --key file $URL
Added: 7.9.3
See-also: key user
+Multi: single
---
Passphrase for the private key.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/path-as-is.d b/docs/cmdline-opts/path-as-is.d
index 3a82c4409..45c161b6d 100644
--- a/docs/cmdline-opts/path-as-is.d
+++ b/docs/cmdline-opts/path-as-is.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: path-as-is
Help: Do not squash .. sequences in URL path
Added: 7.42.0
Category: curl
Example: --path-as-is https://example.com/../../etc/passwd
See-also: request-target
+Multi: boolean
---
Tell curl to not handle sequences of /../ or /./ in the given URL
path. Normally curl will squash or merge them according to standards but with
diff --git a/docs/cmdline-opts/pinnedpubkey.d b/docs/cmdline-opts/pinnedpubkey.d
index b47c42a8f..3ac484690 100644
--- a/docs/cmdline-opts/pinnedpubkey.d
+++ b/docs/cmdline-opts/pinnedpubkey.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: pinnedpubkey
Arg: <hashes>
Help: FILE/HASHES Public key to verify peer against
@@ -7,6 +9,7 @@ Example: --pinnedpubkey keyfile $URL
Example: --pinnedpubkey 'sha256//ce118b51897f4452dc' $URL
Added: 7.39.0
See-also: hostpubsha256
+Multi: single
---
Tells curl to use the specified public key file (or hashes) to verify the
peer. This can be a path to a file which contains a single public key in PEM
@@ -33,5 +36,3 @@ sha256 support:
7.47.0: mbedtls
Other SSL backends not supported.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/post301.d b/docs/cmdline-opts/post301.d
index 744ef5813..0de2e519e 100644
--- a/docs/cmdline-opts/post301.d
+++ b/docs/cmdline-opts/post301.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: post301
Help: Do not switch to GET after following a 301
Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: post302 post303 location
Added: 7.17.1
Category: http post
Example: --post301 --location -d "data" $URL
+Multi: boolean
---
Tells curl to respect RFC 7231/6.4.2 and not convert POST requests into GET
requests when following a 301 redirection. The non-RFC behavior is ubiquitous
diff --git a/docs/cmdline-opts/post302.d b/docs/cmdline-opts/post302.d
index 2c6d4b615..4a42c79d0 100644
--- a/docs/cmdline-opts/post302.d
+++ b/docs/cmdline-opts/post302.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: post302
Help: Do not switch to GET after following a 302
Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: post301 post303 location
Added: 7.19.1
Category: http post
Example: --post302 --location -d "data" $URL
+Multi: boolean
---
Tells curl to respect RFC 7231/6.4.3 and not convert POST requests into GET
requests when following a 302 redirection. The non-RFC behavior is ubiquitous
diff --git a/docs/cmdline-opts/post303.d b/docs/cmdline-opts/post303.d
index a2fec18c4..79c891687 100644
--- a/docs/cmdline-opts/post303.d
+++ b/docs/cmdline-opts/post303.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: post303
Help: Do not switch to GET after following a 303
Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: post302 post301 location
Added: 7.26.0
Category: http post
Example: --post303 --location -d "data" $URL
+Multi: boolean
---
Tells curl to violate RFC 7231/6.4.4 and not convert POST requests into GET
requests when following 303 redirections. A server may require a POST to
diff --git a/docs/cmdline-opts/preproxy.d b/docs/cmdline-opts/preproxy.d
index e5dfb7f94..5be20712b 100644
--- a/docs/cmdline-opts/preproxy.d
+++ b/docs/cmdline-opts/preproxy.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: preproxy
Arg: [protocol://]host[:port]
Help: Use this proxy first
@@ -5,6 +7,7 @@ Added: 7.52.0
Category: proxy
Example: --preproxy socks5://proxy.example -x http://http.example $URL
See-also: proxy socks5
+Multi: single
---
Use the specified SOCKS proxy before connecting to an HTTP or HTTPS --proxy. In
such a case curl first connects to the SOCKS proxy and then connects (through
@@ -21,5 +24,3 @@ If the port number is not specified in the proxy string, it is assumed to be
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.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/progress-bar.d b/docs/cmdline-opts/progress-bar.d
index 549acb9b1..5c87023b8 100644
--- a/docs/cmdline-opts/progress-bar.d
+++ b/docs/cmdline-opts/progress-bar.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: #
Long: progress-bar
Help: Display transfer progress as a bar
@@ -5,6 +7,7 @@ Category: verbose
Example: -# -O $URL
Added: 5.10
See-also: styled-output
+Multi: boolean
---
Make curl display transfer progress as a simple progress bar instead of the
standard, more informational, meter.
diff --git a/docs/cmdline-opts/proto-default.d b/docs/cmdline-opts/proto-default.d
index 86c59f5c6..bb8940f7e 100644
--- a/docs/cmdline-opts/proto-default.d
+++ b/docs/cmdline-opts/proto-default.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proto-default
Help: Use PROTOCOL for any URL missing a scheme
Arg: <protocol>
@@ -5,6 +7,7 @@ Added: 7.45.0
Category: connection curl
Example: --proto-default https ftp.example.com
See-also: proto proto-redir
+Multi: single
---
Tells curl to use *protocol* for any URL missing a scheme name.
diff --git a/docs/cmdline-opts/proto-redir.d b/docs/cmdline-opts/proto-redir.d
index d8cd296ff..b6f0f0f36 100644
--- a/docs/cmdline-opts/proto-redir.d
+++ b/docs/cmdline-opts/proto-redir.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proto-redir
Arg: <protocols>
Help: Enable/disable PROTOCOLS on redirect
@@ -5,6 +7,7 @@ Added: 7.20.2
Category: connection curl
Example: --proto-redir =http,https $URL
See-also: proto
+Multi: single
---
Tells curl to limit what protocols it may use on redirect. Protocols denied by
--proto are not overridden by this option. See --proto for how protocols are
diff --git a/docs/cmdline-opts/proto.d b/docs/cmdline-opts/proto.d
index 6ff52c417..a24c0dbdc 100644
--- a/docs/cmdline-opts/proto.d
+++ b/docs/cmdline-opts/proto.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proto
Arg: <protocols>
Help: Enable/disable PROTOCOLS
@@ -5,10 +7,11 @@ See-also: proto-redir proto-default
Added: 7.20.2
Category: connection curl
Example: --proto =http,https,sftp $URL
+Multi: single
---
Tells curl to limit what protocols it may use for transfers. Protocols are
evaluated left to right, are comma separated, and are each a protocol name or
-\&'all', optionally prefixed by zero or more modifiers. Available modifiers are:
+'all', optionally prefixed by zero or more modifiers. Available modifiers are:
.RS
.TP 3
.B +
@@ -37,9 +40,9 @@ only enables http and https
also only enables http and https
.RE
.IP
-Unknown protocols produce a warning. This allows scripts to safely rely on
-being able to disable potentially dangerous protocols, without relying upon
-support for that protocol being built into curl to avoid an error.
+Unknown and disabled protocols produce a warning. This allows scripts to
+safely rely on being able to disable potentially dangerous protocols, without
+relying upon support for that protocol being built into curl to avoid an error.
This option can be used multiple times, in which case the effect is the same
as concatenating the protocols into one instance of the option.
diff --git a/docs/cmdline-opts/proxy-anyauth.d b/docs/cmdline-opts/proxy-anyauth.d
index 80f2b9701..c215ad746 100644
--- a/docs/cmdline-opts/proxy-anyauth.d
+++ b/docs/cmdline-opts/proxy-anyauth.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-anyauth
Help: Pick any proxy authentication method
Added: 7.13.2
See-also: proxy proxy-basic proxy-digest
Category: proxy auth
Example: --proxy-anyauth --proxy-user user:passwd -x proxy $URL
+Multi: mutex
---
Tells curl to pick a suitable authentication method when communicating with
the given HTTP proxy. This might cause an extra request/response round-trip.
diff --git a/docs/cmdline-opts/proxy-basic.d b/docs/cmdline-opts/proxy-basic.d
index c651badc1..3856c49f3 100644
--- a/docs/cmdline-opts/proxy-basic.d
+++ b/docs/cmdline-opts/proxy-basic.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-basic
Help: Use Basic authentication on the proxy
See-also: proxy proxy-anyauth proxy-digest
Category: proxy auth
Example: --proxy-basic --proxy-user user:passwd -x proxy $URL
Added: 7.12.0
+Multi: mutex
---
Tells curl to use HTTP Basic authentication when communicating with the given
proxy. Use --basic for enabling HTTP Basic with a remote host. Basic is the
diff --git a/docs/cmdline-opts/proxy-cacert.d b/docs/cmdline-opts/proxy-cacert.d
index 5c3294475..a7c8e743b 100644
--- a/docs/cmdline-opts/proxy-cacert.d
+++ b/docs/cmdline-opts/proxy-cacert.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-cacert
Help: CA certificate to verify peer against for proxy
Arg: <file>
@@ -5,5 +7,6 @@ Added: 7.52.0
See-also: proxy-capath cacert capath proxy
Category: proxy tls
Example: --proxy-cacert CA-file.txt -x https://proxy $URL
+Multi: single
---
Same as --cacert but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-capath.d b/docs/cmdline-opts/proxy-capath.d
index 0429984f2..e6113012b 100644
--- a/docs/cmdline-opts/proxy-capath.d
+++ b/docs/cmdline-opts/proxy-capath.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-capath
Help: CA directory to verify peer against for proxy
Arg: <dir>
@@ -5,5 +7,6 @@ Added: 7.52.0
See-also: proxy-cacert proxy capath
Category: proxy tls
Example: --proxy-capath /local/directory -x https://proxy $URL
+Multi: single
---
Same as --capath but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-cert-type.d b/docs/cmdline-opts/proxy-cert-type.d
index 9e09fdbbc..2376acab4 100644
--- a/docs/cmdline-opts/proxy-cert-type.d
+++ b/docs/cmdline-opts/proxy-cert-type.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-cert-type
Arg: <type>
Added: 7.52.0
@@ -5,5 +7,6 @@ Help: Client certificate type for HTTPS proxy
Category: proxy tls
Example: --proxy-cert-type PEM --proxy-cert file -x https://proxy $URL
See-also: proxy-cert
+Multi: single
---
Same as --cert-type but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-cert.d b/docs/cmdline-opts/proxy-cert.d
index 5eae2a549..cc2f8041b 100644
--- a/docs/cmdline-opts/proxy-cert.d
+++ b/docs/cmdline-opts/proxy-cert.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-cert
Arg: <cert[:passwd]>
Help: Set client certificate for proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
Category: proxy tls
Example: --proxy-cert file -x https://proxy $URL
See-also: proxy-cert-type
+Multi: single
---
Same as --cert but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-ciphers.d b/docs/cmdline-opts/proxy-ciphers.d
index aefcc92c0..1fdbb3443 100644
--- a/docs/cmdline-opts/proxy-ciphers.d
+++ b/docs/cmdline-opts/proxy-ciphers.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-ciphers
Arg: <list>
Help: SSL ciphers to use for proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
Category: proxy tls
Example: --proxy-ciphers ECDHE-ECDSA-AES256-CCM8 -x https://proxy $URL
See-also: ciphers curves proxy
+Multi: single
---
Same as --ciphers but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-crlfile.d b/docs/cmdline-opts/proxy-crlfile.d
index 3dd018075..7e4ef24a9 100644
--- a/docs/cmdline-opts/proxy-crlfile.d
+++ b/docs/cmdline-opts/proxy-crlfile.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-crlfile
Arg: <file>
Help: Set a CRL list for proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
Category: proxy tls
Example: --proxy-crlfile rejects.txt -x https://proxy $URL
See-also: crlfile proxy
+Multi: single
---
Same as --crlfile but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-digest.d b/docs/cmdline-opts/proxy-digest.d
index 9677e92c5..f8a56fac9 100644
--- a/docs/cmdline-opts/proxy-digest.d
+++ b/docs/cmdline-opts/proxy-digest.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-digest
Help: Use Digest authentication on the proxy
See-also: proxy proxy-anyauth proxy-basic
Category: proxy tls
Example: --proxy-digest --proxy-user user:passwd -x proxy $URL
Added: 7.12.0
+Multi: mutex
---
Tells curl to use HTTP Digest authentication when communicating with the given
proxy. Use --digest for enabling HTTP Digest with a remote host.
diff --git a/docs/cmdline-opts/proxy-header.d b/docs/cmdline-opts/proxy-header.d
index 8ea209387..c064b1ff8 100644
--- a/docs/cmdline-opts/proxy-header.d
+++ b/docs/cmdline-opts/proxy-header.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-header
Arg: <header/@file>
Help: Pass custom header(s) to proxy
@@ -8,6 +10,7 @@ Example: --proxy-header "X-First-Name: Joe" -x http://proxy $URL
Example: --proxy-header "User-Agent: surprise" -x http://proxy $URL
Example: --proxy-header "Host:" -x http://proxy $URL
See-also: proxy
+Multi: append
---
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 --header
diff --git a/docs/cmdline-opts/proxy-insecure.d b/docs/cmdline-opts/proxy-insecure.d
index 738d42286..7eb00244e 100644
--- a/docs/cmdline-opts/proxy-insecure.d
+++ b/docs/cmdline-opts/proxy-insecure.d
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-insecure
Help: Do HTTPS proxy connections without verifying the proxy
Added: 7.52.0
Category: proxy tls
Example: --proxy-insecure -x https://proxy $URL
See-also: proxy insecure
+Multi: boolean
---
Same as --insecure but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-key-type.d b/docs/cmdline-opts/proxy-key-type.d
index 0194ba67c..7f4e51ef0 100644
--- a/docs/cmdline-opts/proxy-key-type.d
+++ b/docs/cmdline-opts/proxy-key-type.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-key-type
Arg: <type>
Help: Private key file type for proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
Category: proxy tls
Example: --proxy-key-type DER --proxy-key here -x https://proxy $URL
See-also: proxy-key proxy
+Multi: single
---
Same as --key-type but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-key.d b/docs/cmdline-opts/proxy-key.d
index bf6868a43..01bd51aa6 100644
--- a/docs/cmdline-opts/proxy-key.d
+++ b/docs/cmdline-opts/proxy-key.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-key
Help: Private key for HTTPS proxy
Arg: <key>
@@ -5,5 +7,6 @@ Category: proxy tls
Example: --proxy-key here -x https://proxy $URL
Added: 7.52.0
See-also: proxy-key-type proxy
+Multi: single
---
Same as --key but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-negotiate.d b/docs/cmdline-opts/proxy-negotiate.d
index 5085a7cb3..f0ca0b08a 100644
--- a/docs/cmdline-opts/proxy-negotiate.d
+++ b/docs/cmdline-opts/proxy-negotiate.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-negotiate
Help: Use HTTP Negotiate (SPNEGO) authentication on the proxy
Added: 7.17.1
See-also: proxy-anyauth proxy-basic
Category: proxy auth
Example: --proxy-negotiate --proxy-user user:passwd -x proxy $URL
+Multi: mutex
---
Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating
with the given proxy. Use --negotiate for enabling HTTP Negotiate (SPNEGO)
diff --git a/docs/cmdline-opts/proxy-ntlm.d b/docs/cmdline-opts/proxy-ntlm.d
index 03d2d179c..57cb9945d 100644
--- a/docs/cmdline-opts/proxy-ntlm.d
+++ b/docs/cmdline-opts/proxy-ntlm.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-ntlm
Help: Use NTLM authentication on the proxy
See-also: proxy-negotiate proxy-anyauth
Category: proxy auth
Example: --proxy-ntlm --proxy-user user:passwd -x http://proxy $URL
Added: 7.10.7
+Multi: mutex
---
Tells curl to use HTTP NTLM authentication when communicating with the given
proxy. Use --ntlm for enabling NTLM with a remote host.
diff --git a/docs/cmdline-opts/proxy-pass.d b/docs/cmdline-opts/proxy-pass.d
index a513991d0..733e62615 100644
--- a/docs/cmdline-opts/proxy-pass.d
+++ b/docs/cmdline-opts/proxy-pass.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-pass
Arg: <phrase>
Help: Pass phrase for the private key for HTTPS proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
Category: proxy tls auth
Example: --proxy-pass secret --proxy-key here -x https://proxy $URL
See-also: proxy proxy-key
+Multi: single
---
Same as --pass but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-pinnedpubkey.d b/docs/cmdline-opts/proxy-pinnedpubkey.d
index 4e168ef6c..4f139af60 100644
--- a/docs/cmdline-opts/proxy-pinnedpubkey.d
+++ b/docs/cmdline-opts/proxy-pinnedpubkey.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-pinnedpubkey
Arg: <hashes>
Help: FILE/HASHES public key to verify proxy with
@@ -7,6 +9,7 @@ Example: --proxy-pinnedpubkey keyfile $URL
Example: --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' $URL
Added: 7.59.0
See-also: pinnedpubkey proxy
+Multi: single
---
Tells curl to use the specified public key file (or hashes) to verify the
proxy. This can be a path to a file which contains a single public key in PEM
@@ -17,5 +20,3 @@ 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.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/proxy-service-name.d b/docs/cmdline-opts/proxy-service-name.d
index 230b802d7..02191afb0 100644
--- a/docs/cmdline-opts/proxy-service-name.d
+++ b/docs/cmdline-opts/proxy-service-name.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-service-name
Arg: <name>
Help: SPNEGO proxy service name
@@ -5,5 +7,6 @@ Added: 7.43.0
Category: proxy tls
Example: --proxy-service-name "shrubbery" -x proxy $URL
See-also: service-name proxy
+Multi: single
---
This option allows you to change the service name for proxy negotiation.
diff --git a/docs/cmdline-opts/proxy-ssl-allow-beast.d b/docs/cmdline-opts/proxy-ssl-allow-beast.d
index d712429e3..c5149f597 100644
--- a/docs/cmdline-opts/proxy-ssl-allow-beast.d
+++ b/docs/cmdline-opts/proxy-ssl-allow-beast.d
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-ssl-allow-beast
Help: Allow security flaw for interop for HTTPS proxy
Added: 7.52.0
Category: proxy tls
Example: --proxy-ssl-allow-beast -x https://proxy $URL
See-also: ssl-allow-beast proxy
+Multi: boolean
---
Same as --ssl-allow-beast but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-ssl-auto-client-cert.d b/docs/cmdline-opts/proxy-ssl-auto-client-cert.d
index 77eb53520..21d09faa6 100644
--- a/docs/cmdline-opts/proxy-ssl-auto-client-cert.d
+++ b/docs/cmdline-opts/proxy-ssl-auto-client-cert.d
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-ssl-auto-client-cert
Help: Use auto client certificate for proxy (Schannel)
Added: 7.77.0
Category: proxy tls
Example: --proxy-ssl-auto-client-cert -x https://proxy $URL
See-also: ssl-auto-client-cert proxy
+Multi: boolean
---
Same as --ssl-auto-client-cert but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-tls13-ciphers.d b/docs/cmdline-opts/proxy-tls13-ciphers.d
index 5ec835c7f..90952ffad 100644
--- a/docs/cmdline-opts/proxy-tls13-ciphers.d
+++ b/docs/cmdline-opts/proxy-tls13-ciphers.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-tls13-ciphers
Arg: <ciphersuite list>
help: TLS 1.3 proxy cipher suites
@@ -6,6 +8,7 @@ Category: proxy tls
Example: --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy $URL
Added: 7.61.0
See-also: tls13-ciphers curves
+Multi: single
---
Specifies which cipher suites to use in the connection to your HTTPS proxy
when it negotiates TLS 1.3. The list of ciphers suites must specify valid
@@ -16,5 +19,3 @@ ciphers. Read up on TLS 1.3 cipher suite details on this URL:
This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
cipher suites by using the --proxy-ciphers option.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/proxy-tlsauthtype.d b/docs/cmdline-opts/proxy-tlsauthtype.d
index 4d58af5a2..8ba7428e2 100644
--- a/docs/cmdline-opts/proxy-tlsauthtype.d
+++ b/docs/cmdline-opts/proxy-tlsauthtype.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-tlsauthtype
Arg: <type>
Help: TLS authentication type for HTTPS proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
Category: proxy tls auth
Example: --proxy-tlsauthtype SRP -x https://proxy $URL
See-also: proxy proxy-tlsuser
+Multi: single
---
Same as --tlsauthtype but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-tlspassword.d b/docs/cmdline-opts/proxy-tlspassword.d
index 6b41ed3c9..ba232e68a 100644
--- a/docs/cmdline-opts/proxy-tlspassword.d
+++ b/docs/cmdline-opts/proxy-tlspassword.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-tlspassword
Arg: <string>
Help: TLS password for HTTPS proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
Category: proxy tls auth
Example: --proxy-tlspassword passwd -x https://proxy $URL
See-also: proxy proxy-tlsuser
+Multi: single
---
Same as --tlspassword but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-tlsuser.d b/docs/cmdline-opts/proxy-tlsuser.d
index 8291ab26a..944d87601 100644
--- a/docs/cmdline-opts/proxy-tlsuser.d
+++ b/docs/cmdline-opts/proxy-tlsuser.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-tlsuser
Arg: <name>
Help: TLS username for HTTPS proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
Category: proxy tls auth
Example: --proxy-tlsuser smith -x https://proxy $URL
See-also: proxy proxy-tlspassword
+Multi: single
---
Same as --tlsuser but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-tlsv1.d b/docs/cmdline-opts/proxy-tlsv1.d
index 7175e6174..b6d039b15 100644
--- a/docs/cmdline-opts/proxy-tlsv1.d
+++ b/docs/cmdline-opts/proxy-tlsv1.d
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-tlsv1
Help: Use TLSv1 for HTTPS proxy
Added: 7.52.0
Category: proxy tls auth
Example: --proxy-tlsv1 -x https://proxy $URL
See-also: proxy
+Multi: mutex
---
Same as --tlsv1 but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-user.d b/docs/cmdline-opts/proxy-user.d
index 81ed55be5..572cb06c0 100644
--- a/docs/cmdline-opts/proxy-user.d
+++ b/docs/cmdline-opts/proxy-user.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy-user
Short: U
Arg: <user:password>
@@ -6,6 +8,7 @@ Category: proxy auth
Example: --proxy-user name:pwd -x proxy $URL
Added: 4.0
See-also: proxy-pass
+Multi: single
---
Specify the user name and password to use for proxy authentication.
@@ -18,5 +21,3 @@ process listings. This is not enough to protect credentials from possibly
getting seen by other users on the same system as they will still be visible
for a moment before cleared. Such sensitive data should be retrieved from a
file instead or similar and never used in clear text in a command line.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/proxy.d b/docs/cmdline-opts/proxy.d
index 60674b5f8..a3be835bf 100644
--- a/docs/cmdline-opts/proxy.d
+++ b/docs/cmdline-opts/proxy.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy
Short: x
Arg: [protocol://]host[:port]
@@ -6,6 +8,7 @@ Category: proxy
Example: --proxy http://proxy.example $URL
Added: 4.0
See-also: socks5 proxy-basic
+Multi: single
---
Use the specified proxy.
@@ -14,6 +17,9 @@ specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://,
socks5:// or socks5h:// to request a specific SOCKS version to be used.
(Added in 7.21.7)
+Unix domain sockets are supported for socks proxy. Set localhost for the host
+part. e.g. socks5h://localhost/path/to/socket.sock
+
HTTPS proxy support via https:// protocol prefix was added in 7.52.0 for
OpenSSL, GnuTLS and NSS.
@@ -25,7 +31,7 @@ If the port number is not specified in the proxy string, it is assumed to be
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.
+"" to override it.
All operations that are performed over an HTTP proxy will transparently be
converted to HTTP. It means that certain protocol specific operations might
@@ -39,5 +45,3 @@ or pass in a colon with %3a.
The proxy host can be specified the same way as the proxy environment
variables, including the protocol prefix (http://) and the embedded user +
password.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/proxy1.0.d b/docs/cmdline-opts/proxy1.0.d
index 65faf4b35..3f7b61331 100644
--- a/docs/cmdline-opts/proxy1.0.d
+++ b/docs/cmdline-opts/proxy1.0.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxy1.0
Arg: <host[:port]>
Help: Use HTTP/1.0 proxy on given port
@@ -5,6 +7,7 @@ Category: proxy
Example: --proxy1.0 -x http://proxy $URL
Added: 7.19.4
See-also: proxy socks5 preproxy
+Multi: mutex
---
Use the specified HTTP 1.0 proxy. If the port number is not specified, it is
assumed at port 1080.
diff --git a/docs/cmdline-opts/proxytunnel.d b/docs/cmdline-opts/proxytunnel.d
index a62cbb694..ef2d56b2a 100644
--- a/docs/cmdline-opts/proxytunnel.d
+++ b/docs/cmdline-opts/proxytunnel.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: proxytunnel
Short: p
Help: Operate through an HTTP proxy tunnel (using CONNECT)
@@ -5,6 +7,7 @@ See-also: proxy
Category: proxy
Example: --proxytunnel -x http://proxy $URL
Added: 7.3
+Multi: boolean
---
When an HTTP proxy is used --proxy, this option will make curl tunnel through
the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and
diff --git a/docs/cmdline-opts/pubkey.d b/docs/cmdline-opts/pubkey.d
index 277904912..2078982e2 100644
--- a/docs/cmdline-opts/pubkey.d
+++ b/docs/cmdline-opts/pubkey.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: pubkey
Arg: <key>
Protocols: SFTP SCP
@@ -6,12 +8,11 @@ Category: sftp scp auth
Example: --pubkey file.pub sftp://example.com/
Added: 7.16.2
See-also: pass
+Multi: single
---
Public key file name. Allows you to provide your public key in this 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
diff --git a/docs/cmdline-opts/quote.d b/docs/cmdline-opts/quote.d
index 1f0f5ead0..96c4e1f17 100644
--- a/docs/cmdline-opts/quote.d
+++ b/docs/cmdline-opts/quote.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: quote
Arg: <command>
Short: Q
@@ -7,14 +9,18 @@ Category: ftp sftp
Example: --quote "DELE file" ftp://example.com/foo
Added: 5.3
See-also: request
+Multi: append
---
Send an arbitrary command to the remote FTP or SFTP server. Quote commands are
sent BEFORE the transfer takes place (just after the initial PWD command in an
FTP transfer, to be exact). To make commands take place after a successful
-transfer, prefix them with a dash '-'. To make commands be sent after curl
-has changed the working directory, just before the transfer command(s), prefix
-the command with a '+' (this is only supported for FTP). You may specify any
-number of commands.
+transfer, prefix them with a dash '-'.
+
+(FTP only) To make commands be sent after curl has changed the working
+directory, just before the file transfer command(s), prefix the command with a
+'+'. This is not performed when a directory listing is performed.
+
+You may specify any number of commands.
By default curl will stop at first failure. To make curl continue even if the
command fails, prefix the command with an asterisk (*). Otherwise, if the
diff --git a/docs/cmdline-opts/random-file.d b/docs/cmdline-opts/random-file.d
index fe56f574f..ad0a558cc 100644
--- a/docs/cmdline-opts/random-file.d
+++ b/docs/cmdline-opts/random-file.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: random-file
Arg: <file>
Help: File for reading random data from
@@ -5,7 +7,10 @@ Category: misc
Example: --random-file rubbish $URL
Added: 7.7
See-also: egd-file
+Multi: single
---
+Deprecated option. This option is ignored by curl since 7.84.0. Prior to that
+it only had an effect on curl if built to use old versions of OpenSSL.
+
Specify the path name to file containing what will be considered as random
-data. The data may be used to seed the random engine for SSL connections. See
-also the --egd-file option.
+data. The data may be used to seed the random engine for SSL connections.
diff --git a/docs/cmdline-opts/range.d b/docs/cmdline-opts/range.d
index 7ebf843aa..f49d40472 100644
--- a/docs/cmdline-opts/range.d
+++ b/docs/cmdline-opts/range.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: range
Short: r
Help: Retrieve only the bytes within RANGE
@@ -7,6 +9,7 @@ Category: http ftp sftp file
Example: --range 22-44 $URL
Added: 4.0
See-also: continue-at append
+Multi: single
---
Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP
server or a local FILE. Ranges can be specified in a number of ways.
@@ -36,7 +39,7 @@ response, which will be returned as-is by curl! Parsing or otherwise
transforming this response is the responsibility of the caller.
Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
-\&'start-stop' range syntax. If a non-digit character is given in the range,
+'start-stop' range syntax. If a non-digit character is given in the range,
the server's response will be unspecified, depending on the server's
configuration.
@@ -47,5 +50,3 @@ whole document.
FTP and SFTP range downloads only support the simple 'start-stop' syntax
(optionally with one of the numbers omitted). FTP use depends on the extended
FTP command SIZE.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/rate.d b/docs/cmdline-opts/rate.d
new file mode 100644
index 000000000..953f86596
--- /dev/null
+++ b/docs/cmdline-opts/rate.d
@@ -0,0 +1,34 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
+Long: rate
+Arg: <max request rate>
+Help: Request rate for serial transfers
+Category: connection
+Example: --rate 2/s $URL
+Example: --rate 3/h $URL
+Example: --rate 14/m $URL
+Added: 7.84.0
+See-also: limit-rate retry-delay
+Multi: single
+---
+Specify the maximum transfer frequency you allow curl to use - in number of
+transfer starts per time unit (sometimes called request rate). Without this
+option, curl will start the next transfer as fast as possible.
+
+If given several URLs and a transfer completes faster than the allowed rate,
+curl will wait until the next transfer is started to maintain the requested
+rate. This option has no effect when --parallel is used.
+
+The request rate is provided as "N/U" where N is an integer number and U is a
+time unit. Supported units are 's' (second), 'm' (minute), 'h' (hour) and 'd'
+/(day, as in a 24 hour unit). The default time unit, if no "/U" is provided,
+is number of transfers per hour.
+
+If curl is told to allow 10 requests per minute, it will not start the next
+request until 6 seconds have elapsed since the previous transfer was started.
+
+This function uses millisecond resolution. If the allowed frequency is set
+more than 1000 per second, it will instead run unrestricted.
+
+When retrying transfers, enabled with --retry, the separate retry delay logic
+is used and not this setting.
diff --git a/docs/cmdline-opts/raw.d b/docs/cmdline-opts/raw.d
index dcf77fc46..8e753c126 100644
--- a/docs/cmdline-opts/raw.d
+++ b/docs/cmdline-opts/raw.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: raw
Help: Do HTTP "raw"; no transfer decoding
Added: 7.16.2
@@ -5,6 +7,7 @@ Protocols: HTTP
Category: http
Example: --raw $URL
See-also: tr-encoding
+Multi: boolean
---
When used, it disables all internal HTTP decoding of content or transfer
encodings and instead makes them passed on unaltered, raw.
diff --git a/docs/cmdline-opts/referer.d b/docs/cmdline-opts/referer.d
index 10aa8297e..3740957eb 100644
--- a/docs/cmdline-opts/referer.d
+++ b/docs/cmdline-opts/referer.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: referer
Short: e
Arg: <URL>
@@ -9,11 +11,10 @@ Example: --referer "https://fake.example" $URL
Example: --referer "https://fake.example;auto" -L $URL
Example: --referer ";auto" -L $URL
Added: 4.0
+Multi: single
---
Sends the "Referrer Page" information to the HTTP server. This can also be set
with the --header flag of course. When used with --location 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,
+when it follows a Location: header. The ";auto" string can be used alone,
even if you do not set an initial --referer.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/remote-header-name.d b/docs/cmdline-opts/remote-header-name.d
index 00db0b455..f97cf49a3 100644
--- a/docs/cmdline-opts/remote-header-name.d
+++ b/docs/cmdline-opts/remote-header-name.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: remote-header-name
Short: J
Protocols: HTTP
@@ -6,12 +8,18 @@ Category: output
Example: -OJ https://example.com/file
Added: 7.20.0
See-also: remote-name
+Multi: boolean
---
This option tells the --remote-name option to use the server-specified
-Content-Disposition filename instead of extracting a filename from the URL.
+Content-Disposition filename instead of extracting a filename from the URL. If
+the server-provided file name contains a path, that will be stripped off
+before the file name is used.
+
+The file is saved in the current directory, or in the directory specified with
+--output-dir.
If the server specifies a file name and a file with that name already exists
-in the current working directory it will not be overwritten and an error will
+in the destination directory, it will not be overwritten and an error will
occur. If the server does not specify a file name then this option has no
effect.
diff --git a/docs/cmdline-opts/remote-name-all.d b/docs/cmdline-opts/remote-name-all.d
index 80e8a0a2e..fa6a233bb 100644
--- a/docs/cmdline-opts/remote-name-all.d
+++ b/docs/cmdline-opts/remote-name-all.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: remote-name-all
Help: Use the remote file name for all URLs
Added: 7.19.0
Category: output
Example: --remote-name-all ftp://example.com/file1 ftp://example.com/file2
See-also: remote-name
+Multi: boolean
---
This option changes the default action for all given URLs to be dealt with as
if --remote-name were used for each one. So if you want to disable that for a
diff --git a/docs/cmdline-opts/remote-name.d b/docs/cmdline-opts/remote-name.d
index c149c185c..4e51b1206 100644
--- a/docs/cmdline-opts/remote-name.d
+++ b/docs/cmdline-opts/remote-name.d
@@ -1,17 +1,20 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: remote-name
Short: O
Help: Write output to a file named as the remote file
Category: important output
Example: -O https://example.com/filename
Added: 4.0
-See-also: remote-name-all
+See-also: remote-name-all output-dir remote-header-name
+Multi: append
---
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.)
The file will be saved in the current working directory. If you want the file
saved in a different directory, make sure you change the current working
-directory before invoking curl with this option.
+directory before invoking curl with this option or use --output-dir.
The remote file name to use for saving is extracted from the given URL,
nothing else, and if it already exists it will be overwritten. If you want the
diff --git a/docs/cmdline-opts/remote-time.d b/docs/cmdline-opts/remote-time.d
index 572873723..12bd88306 100644
--- a/docs/cmdline-opts/remote-time.d
+++ b/docs/cmdline-opts/remote-time.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: remote-time
Short: R
Help: Set the remote file's time on the local output
@@ -5,6 +7,7 @@ Category: output
Example: --remote-time -o foo $URL
Added: 7.9
See-also: remote-name time-cond
+Multi: boolean
---
When used, this will make curl attempt to figure out the timestamp of the
remote file, and if that is available make the local file get that same
diff --git a/docs/cmdline-opts/remove-on-error.d b/docs/cmdline-opts/remove-on-error.d
new file mode 100644
index 000000000..4ac1595a9
--- /dev/null
+++ b/docs/cmdline-opts/remove-on-error.d
@@ -0,0 +1,15 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
+Long: remove-on-error
+Help: Remove output file on errors
+See-also: fail
+Category: curl
+Example: --remove-on-error -o output $URL
+Added: 7.83.0
+Multi: boolean
+---
+When curl returns an error when told to save output in a local file, this
+option removes that saved file before exiting. This prevents curl from
+leaving a partial file in the case of an error during transfer.
+
+If the output is not a file, this option has no effect.
diff --git a/docs/cmdline-opts/request-target.d b/docs/cmdline-opts/request-target.d
index d901fd887..0ddcbc0b2 100644
--- a/docs/cmdline-opts/request-target.d
+++ b/docs/cmdline-opts/request-target.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: request-target
Arg: <path>
Help: Specify the target for this request
@@ -6,6 +8,7 @@ Added: 7.55.0
Category: http
Example: --request-target "*" -X OPTIONS $URL
See-also: request
+Multi: single
---
Tells curl to use an alternative "target" (path) instead of using the path as
provided in the URL. Particularly useful when wanting to issue HTTP requests
diff --git a/docs/cmdline-opts/request.d b/docs/cmdline-opts/request.d
index 9a97149fb..c837f0987 100644
--- a/docs/cmdline-opts/request.d
+++ b/docs/cmdline-opts/request.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: request
Short: X
Arg: <method>
@@ -7,6 +9,7 @@ Example: -X "DELETE" $URL
Example: -X NLST ftp://example.com/
Added: 6.0
See-also: request-target
+Multi: single
---
(HTTP) Specifies a custom request method to use when communicating with the
HTTP server. The specified request method will be used instead of the method
@@ -40,5 +43,3 @@ 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.
diff --git a/docs/cmdline-opts/resolve.d b/docs/cmdline-opts/resolve.d
index cbe288738..f5592bc75 100644
--- a/docs/cmdline-opts/resolve.d
+++ b/docs/cmdline-opts/resolve.d
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: resolve
Arg: <[+]host:port:addr[,addr]...>
Help: Resolve the host+port to this address
Added: 7.21.3
-Category: connection
+Category: connection dns
Example: --resolve example.com:443:127.0.0.1 $URL
See-also: connect-to alt-svc
+Multi: append
---
Provide a custom address for a specific host and port pair. Using this, you
can make the curl requests(s) use a specified address and prevent the
diff --git a/docs/cmdline-opts/retry-all-errors.d b/docs/cmdline-opts/retry-all-errors.d
index 37fdfc731..a1fb89e9d 100644
--- a/docs/cmdline-opts/retry-all-errors.d
+++ b/docs/cmdline-opts/retry-all-errors.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: retry-all-errors
Help: Retry all errors (use with --retry)
Added: 7.71.0
Category: curl
Example: --retry 5 --retry-all-errors $URL
See-also: retry
+Multi: boolean
---
Retry on any error. This option is used together with --retry.
diff --git a/docs/cmdline-opts/retry-connrefused.d b/docs/cmdline-opts/retry-connrefused.d
index 13574e80c..6916603d6 100644
--- a/docs/cmdline-opts/retry-connrefused.d
+++ b/docs/cmdline-opts/retry-connrefused.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: retry-connrefused
Help: Retry on connection refused (use with --retry)
Added: 7.52.0
Category: curl
Example: --retry-connrefused --retry $URL
See-also: retry retry-all-errors
+Multi: boolean
---
In addition to the other conditions, consider ECONNREFUSED as a transient
error too for --retry. This option is used together with --retry.
diff --git a/docs/cmdline-opts/retry-delay.d b/docs/cmdline-opts/retry-delay.d
index c4970bc8c..78d0aac2a 100644
--- a/docs/cmdline-opts/retry-delay.d
+++ b/docs/cmdline-opts/retry-delay.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: retry-delay
Arg: <seconds>
Help: Wait time between retries
@@ -5,10 +7,9 @@ Added: 7.12.3
Category: curl
Example: --retry-delay 5 --retry $URL
See-also: retry
+Multi: single
---
Make curl sleep this amount of time before each retry when a transfer has
failed with a transient error (it changes the default backoff time algorithm
between retries). This option is only interesting if --retry is also
used. Setting this delay to zero will make curl use the default backoff time.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/retry-max-time.d b/docs/cmdline-opts/retry-max-time.d
index 88ce20f7d..2e132f946 100644
--- a/docs/cmdline-opts/retry-max-time.d
+++ b/docs/cmdline-opts/retry-max-time.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: retry-max-time
Arg: <seconds>
Help: Retry only within this period
@@ -5,6 +7,7 @@ Added: 7.12.3
Category: curl
Example: --retry-max-time 30 --retry 10 $URL
See-also: retry
+Multi: single
---
The retry timer is reset before the first transfer attempt. Retries will be
done as usual (see --retry) as long as the timer has not reached this given
@@ -12,5 +15,3 @@ limit. Notice that if the timer has not reached the limit, the request will be
made and while performing, it may take longer than this given time period. To
limit a single request's maximum time, use --max-time. Set this option to
zero to not timeout retries.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/retry.d b/docs/cmdline-opts/retry.d
index 428a092e6..080825bf8 100644
--- a/docs/cmdline-opts/retry.d
+++ b/docs/cmdline-opts/retry.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: retry
Arg: <num>
Added: 7.12.3
@@ -5,6 +7,7 @@ Help: Retry request if transient problems occur
Category: curl
Example: --retry 7 $URL
See-also: retry-max-time
+Multi: single
---
If a transient error is returned when curl tries to perform a transfer, it
will retry this number of times before giving up. Setting the number to 0
@@ -20,5 +23,3 @@ using --retry-delay you disable this exponential backoff algorithm. See also
Since curl 7.66.0, curl will comply with the Retry-After: response header if
one was present to know when to issue the next retry.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/sasl-authzid.d b/docs/cmdline-opts/sasl-authzid.d
index d80e30f52..ff56ce9c2 100644
--- a/docs/cmdline-opts/sasl-authzid.d
+++ b/docs/cmdline-opts/sasl-authzid.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: sasl-authzid
Arg: <identity>
Help: Identity for SASL PLAIN authentication
@@ -5,8 +7,9 @@ Added: 7.66.0
Category: auth
Example: --sasl-authzid zid imap://example.com/
See-also: login-options
+Multi: single
---
-Use this authorisation identity (authzid), during SASL PLAIN authentication,
+Use this authorization identity (authzid), during SASL PLAIN authentication,
in addition to the authentication identity (authcid) as specified by --user.
If the option is not specified, the server will derive the authzid from the
diff --git a/docs/cmdline-opts/sasl-ir.d b/docs/cmdline-opts/sasl-ir.d
index f1289fd76..8fe3a60e2 100644
--- a/docs/cmdline-opts/sasl-ir.d
+++ b/docs/cmdline-opts/sasl-ir.d
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: sasl-ir
Help: Enable initial response in SASL authentication
Added: 7.31.0
Category: auth
Example: --sasl-ir imap://example.com/
See-also: sasl-authzid
+Multi: boolean
---
Enable initial response in SASL authentication.
diff --git a/docs/cmdline-opts/service-name.d b/docs/cmdline-opts/service-name.d
index fd9cb436b..0cf9cef74 100644
--- a/docs/cmdline-opts/service-name.d
+++ b/docs/cmdline-opts/service-name.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: service-name
Help: SPNEGO service name
Arg: <name>
@@ -5,6 +7,7 @@ Added: 7.43.0
Category: misc
Example: --service-name sockd/server $URL
See-also: negotiate proxy-service-name
+Multi: single
---
This option allows you to change the service name for SPNEGO.
diff --git a/docs/cmdline-opts/show-error.d b/docs/cmdline-opts/show-error.d
index c1af391d0..a31e07d9e 100644
--- a/docs/cmdline-opts/show-error.d
+++ b/docs/cmdline-opts/show-error.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: show-error
Short: S
Help: Show error even when -s is used
@@ -5,6 +7,7 @@ See-also: no-progress-meter
Category: curl
Example: --show-error --silent $URL
Added: 5.9
+Multi: boolean
---
When used with --silent, it makes curl show an error message if it fails.
diff --git a/docs/cmdline-opts/silent.d b/docs/cmdline-opts/silent.d
index 3834ee62c..b31fe5cf1 100644
--- a/docs/cmdline-opts/silent.d
+++ b/docs/cmdline-opts/silent.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: silent
Short: s
Help: Silent mode
@@ -5,6 +7,7 @@ See-also: verbose stderr no-progress-meter
Category: important verbose
Example: -s $URL
Added: 4.0
+Multi: boolean
---
Silent or quiet mode. Do not show progress meter or error messages. Makes Curl
mute. It will still output the data you ask for, potentially even to the
diff --git a/docs/cmdline-opts/socks4.d b/docs/cmdline-opts/socks4.d
index a1fb1b344..c99a134e4 100644
--- a/docs/cmdline-opts/socks4.d
+++ b/docs/cmdline-opts/socks4.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: socks4
Arg: <host[:port]>
Help: SOCKS4 proxy on given host + port
@@ -5,11 +7,15 @@ Added: 7.15.2
Category: proxy
Example: --socks4 hostname:4096 $URL
See-also: socks4a socks5 socks5-hostname
+Multi: single
---
Use the specified SOCKS4 proxy. If the port number is not specified, it is
assumed at port 1080. Using this socket type make curl resolve the host name
and passing the address on to the proxy.
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks4://localhost/path/to/socket.sock
+
This option overrides any previous use of --proxy, as they are mutually
exclusive.
@@ -19,5 +25,3 @@ using a socks4:// protocol prefix. (Added in 7.21.7)
Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time
--proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/socks4a.d b/docs/cmdline-opts/socks4a.d
index e39b968aa..e3afbaf6b 100644
--- a/docs/cmdline-opts/socks4a.d
+++ b/docs/cmdline-opts/socks4a.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: socks4a
Arg: <host[:port]>
Help: SOCKS4a proxy on given host + port
@@ -5,10 +7,14 @@ Added: 7.18.0
Category: proxy
Example: --socks4a hostname:4096 $URL
See-also: socks4 socks5 socks5-hostname
+Multi: single
---
Use the specified SOCKS4a proxy. If the port number is not specified, it is
assumed at port 1080. This asks the proxy to resolve the host name.
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks4a://localhost/path/to/socket.sock
+
This option overrides any previous use of --proxy, as they are mutually
exclusive.
@@ -18,5 +24,3 @@ using a socks4a:// protocol prefix. (Added in 7.21.7)
Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time
--proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/socks5-basic.d b/docs/cmdline-opts/socks5-basic.d
index 2e62bec5a..1f4d5e33f 100644
--- a/docs/cmdline-opts/socks5-basic.d
+++ b/docs/cmdline-opts/socks5-basic.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: socks5-basic
Help: Enable username/password auth for SOCKS5 proxies
Added: 7.55.0
Category: proxy auth
Example: --socks5-basic --socks5 hostname:4096 $URL
See-also: socks5
+Multi: mutex
---
Tells curl to use username/password authentication when connecting to a SOCKS5
proxy. The username/password authentication is enabled by default. Use
diff --git a/docs/cmdline-opts/socks5-gssapi-nec.d b/docs/cmdline-opts/socks5-gssapi-nec.d
index 09166df22..bc5d31735 100644
--- a/docs/cmdline-opts/socks5-gssapi-nec.d
+++ b/docs/cmdline-opts/socks5-gssapi-nec.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: socks5-gssapi-nec
Help: Compatibility with NEC SOCKS5 server
Added: 7.19.4
Category: proxy auth
Example: --socks5-gssapi-nec --socks5 hostname:4096 $URL
See-also: socks5
+Multi: boolean
---
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
diff --git a/docs/cmdline-opts/socks5-gssapi-service.d b/docs/cmdline-opts/socks5-gssapi-service.d
index 5ce82ac3a..218c0bf38 100644
--- a/docs/cmdline-opts/socks5-gssapi-service.d
+++ b/docs/cmdline-opts/socks5-gssapi-service.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: socks5-gssapi-service
Arg: <name>
Help: SOCKS5 proxy service name for GSS-API
@@ -5,6 +7,7 @@ Added: 7.19.4
Category: proxy auth
Example: --socks5-gssapi-service sockd --socks5 hostname:4096 $URL
See-also: socks5
+Multi: single
---
The default service name for a socks server is rcmd/server-fqdn. This option
allows you to change it.
diff --git a/docs/cmdline-opts/socks5-gssapi.d b/docs/cmdline-opts/socks5-gssapi.d
index 662094020..3a4fda21c 100644
--- a/docs/cmdline-opts/socks5-gssapi.d
+++ b/docs/cmdline-opts/socks5-gssapi.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: socks5-gssapi
Help: Enable GSS-API auth for SOCKS5 proxies
Added: 7.55.0
Category: proxy auth
Example: --socks5-gssapi --socks5 hostname:4096 $URL
See-also: socks5
+Multi: boolean
---
Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy.
The GSS-API authentication is enabled by default (if curl is compiled with
diff --git a/docs/cmdline-opts/socks5-hostname.d b/docs/cmdline-opts/socks5-hostname.d
index 6530429a9..a5781370d 100644
--- a/docs/cmdline-opts/socks5-hostname.d
+++ b/docs/cmdline-opts/socks5-hostname.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: socks5-hostname
Arg: <host[:port]>
Help: SOCKS5 proxy, pass host name to proxy
@@ -5,10 +7,14 @@ Added: 7.18.0
Category: proxy
Example: --socks5-hostname proxy.example:7000 $URL
See-also: socks5 socks4a
+Multi: single
---
Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
the port number is not specified, it is assumed at port 1080.
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks5h://localhost/path/to/socket.sock
+
This option overrides any previous use of --proxy, as they are mutually
exclusive.
@@ -18,5 +24,3 @@ This option is superfluous since you can specify a socks5 hostname proxy with
Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time
--proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/socks5.d b/docs/cmdline-opts/socks5.d
index af1c05771..183b8c24d 100644
--- a/docs/cmdline-opts/socks5.d
+++ b/docs/cmdline-opts/socks5.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: socks5
Arg: <host[:port]>
Help: SOCKS5 proxy on given host + port
@@ -5,10 +7,14 @@ Added: 7.18.0
Category: proxy
Example: --socks5 proxy.example:7000 $URL
See-also: socks5-hostname socks4a
+Multi: single
---
Use the specified SOCKS5 proxy - but resolve the host name locally. If the
port number is not specified, it is assumed at port 1080.
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks5://localhost/path/to/socket.sock
+
This option overrides any previous use of --proxy, as they are mutually
exclusive.
@@ -19,6 +25,4 @@ Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time
--proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-If this option is used several times, the last one will be used.
-
This option (as well as --socks4) does not work with IPV6, FTPS or LDAP.
diff --git a/docs/cmdline-opts/speed-limit.d b/docs/cmdline-opts/speed-limit.d
index c07b1d760..878ca440d 100644
--- a/docs/cmdline-opts/speed-limit.d
+++ b/docs/cmdline-opts/speed-limit.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: speed-limit
Short: Y
Arg: <speed>
@@ -6,9 +8,8 @@ Category: connection
Example: --speed-limit 300 --speed-time 10 $URL
Added: 4.7
See-also: speed-time limit-rate max-time
+Multi: single
---
-If a download is slower than this given speed (in bytes per second) for
+If a transfer is slower than this given speed (in bytes per second) for
speed-time seconds it gets aborted. speed-time is set with --speed-time and is
30 if not set.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/speed-time.d b/docs/cmdline-opts/speed-time.d
index 89cba59b6..1426b5648 100644
--- a/docs/cmdline-opts/speed-time.d
+++ b/docs/cmdline-opts/speed-time.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: speed-time
Short: y
Arg: <seconds>
@@ -6,12 +8,11 @@ Category: connection
Example: --speed-limit 300 --speed-time 10 $URL
Added: 4.7
See-also: speed-limit limit-rate
+Multi: single
---
-If a download is slower than speed-limit bytes per second during a speed-time
-period, the download gets aborted. If speed-time is used, the default
+If a transfer runs slower than speed-limit bytes per second during a speed-time
+period, the transfer is aborted. If speed-time is used, the default
speed-limit will be 1 unless set with --speed-limit.
-This option controls transfers and thus will not affect slow connects etc. If
-this is a concern for you, try the --connect-timeout option.
-
-If this option is used several times, the last one will be used.
+This option controls transfers (in both directions) but will not affect slow
+connects etc. If this is a concern for you, try the --connect-timeout option.
diff --git a/docs/cmdline-opts/ssl-allow-beast.d b/docs/cmdline-opts/ssl-allow-beast.d
index 5a7fe995f..2545d07ba 100644
--- a/docs/cmdline-opts/ssl-allow-beast.d
+++ b/docs/cmdline-opts/ssl-allow-beast.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ssl-allow-beast
Help: Allow security flaw to improve interop
Added: 7.25.0
Category: tls
Example: --ssl-allow-beast $URL
See-also: proxy-ssl-allow-beast insecure
+Multi: boolean
---
This option tells curl to not work around a security flaw in the SSL3 and
TLS1.0 protocols known as BEAST. If this option is not used, the SSL layer
diff --git a/docs/cmdline-opts/ssl-auto-client-cert.d b/docs/cmdline-opts/ssl-auto-client-cert.d
index 7581bdff6..617d20a64 100644
--- a/docs/cmdline-opts/ssl-auto-client-cert.d
+++ b/docs/cmdline-opts/ssl-auto-client-cert.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ssl-auto-client-cert
Help: Use auto client certificate (Schannel)
Added: 7.77.0
See-also: proxy-ssl-auto-client-cert
Category: tls
Example: --ssl-auto-client-cert $URL
+Multi: boolean
---
Tell libcurl to automatically locate and use a client certificate for
authentication, when requested by the server. This option is only supported
diff --git a/docs/cmdline-opts/ssl-no-revoke.d b/docs/cmdline-opts/ssl-no-revoke.d
index ba4b661f1..ad036740f 100644
--- a/docs/cmdline-opts/ssl-no-revoke.d
+++ b/docs/cmdline-opts/ssl-no-revoke.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ssl-no-revoke
Help: Disable cert revocation checks (Schannel)
Added: 7.44.0
Category: tls
Example: --ssl-no-revoke $URL
See-also: crlfile
+Multi: boolean
---
(Schannel) This option tells curl to disable certificate revocation checks.
WARNING: this option loosens the SSL security, and by using this flag you ask
diff --git a/docs/cmdline-opts/ssl-reqd.d b/docs/cmdline-opts/ssl-reqd.d
index f8f23c9a0..cf81fb229 100644
--- a/docs/cmdline-opts/ssl-reqd.d
+++ b/docs/cmdline-opts/ssl-reqd.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ssl-reqd
Help: Require SSL/TLS
Protocols: FTP IMAP POP3 SMTP LDAP
@@ -5,12 +7,13 @@ Added: 7.20.0
Category: tls
Example: --ssl-reqd ftp://example.com
See-also: ssl insecure
+Multi: boolean
---
Require SSL/TLS for the connection. Terminates the connection if the server
does not support SSL/TLS.
This option is handled in LDAP since version 7.81.0. It is fully supported
-by the openldap backend and rejected by the generic ldap backend if explicit
+by the OpenLDAP backend and rejected by the generic ldap backend if explicit
TLS is required.
This option was formerly known as --ftp-ssl-reqd.
diff --git a/docs/cmdline-opts/ssl-revoke-best-effort.d b/docs/cmdline-opts/ssl-revoke-best-effort.d
index aad3ab0b4..edf04cc0e 100644
--- a/docs/cmdline-opts/ssl-revoke-best-effort.d
+++ b/docs/cmdline-opts/ssl-revoke-best-effort.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ssl-revoke-best-effort
Help: Ignore missing/offline cert CRL dist points
Added: 7.70.0
Category: tls
Example: --ssl-revoke-best-effort $URL
See-also: crlfile insecure
+Multi: boolean
---
(Schannel) This option tells curl to ignore certificate revocation checks when
they failed due to missing/offline distribution points for the revocation check
diff --git a/docs/cmdline-opts/ssl.d b/docs/cmdline-opts/ssl.d
index 83cac5c9d..31d46f883 100644
--- a/docs/cmdline-opts/ssl.d
+++ b/docs/cmdline-opts/ssl.d
@@ -1,17 +1,23 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: ssl
Help: Try SSL/TLS
Protocols: FTP IMAP POP3 SMTP LDAP
Added: 7.20.0
Category: tls
Example: --ssl pop3://example.com/
-See-also: insecure ciphers
+See-also: ssl-reqd insecure ciphers
+Multi: boolean
---
+Warning: this is considered an insecure option. Consider using --ssl-reqd
+instead to be sure curl upgrades to a secure connection.
+
Try to use SSL/TLS for the connection. Reverts to a non-secure connection if
the server does not support SSL/TLS. See also --ftp-ssl-control and --ssl-reqd
for different levels of encryption required.
This option is handled in LDAP since version 7.81.0. It is fully supported
-by the openldap backend and ignored by the generic ldap backend.
+by the OpenLDAP backend and ignored by the generic ldap backend.
Please note that a server may close the connection if the negotiation does
not succeed.
diff --git a/docs/cmdline-opts/sslv2.d b/docs/cmdline-opts/sslv2.d
index f90596449..fbda3fa12 100644
--- a/docs/cmdline-opts/sslv2.d
+++ b/docs/cmdline-opts/sslv2.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: 2
Long: sslv2
Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
Help: Use SSLv2
Category: tls
Example: --sslv2 $URL
+Multi: mutex
---
This option previously asked curl to use SSLv2, but starting in curl 7.77.0
this instruction is ignored. SSLv2 is widely considered insecure (see RFC
diff --git a/docs/cmdline-opts/sslv3.d b/docs/cmdline-opts/sslv3.d
index 6599531ce..26f8e44b0 100644
--- a/docs/cmdline-opts/sslv3.d
+++ b/docs/cmdline-opts/sslv3.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: 3
Long: sslv3
Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
Help: Use SSLv3
Category: tls
Example: --sslv3 $URL
+Multi: mutex
---
This option previously asked curl to use SSLv3, but starting in curl 7.77.0
this instruction is ignored. SSLv3 is widely considered insecure (see RFC
diff --git a/docs/cmdline-opts/stderr.d b/docs/cmdline-opts/stderr.d
index 95b660454..e23f3cd14 100644
--- a/docs/cmdline-opts/stderr.d
+++ b/docs/cmdline-opts/stderr.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: stderr
Arg: <file>
Help: Where to redirect stderr
@@ -5,11 +7,10 @@ See-also: verbose silent
Category: verbose
Example: --stderr output.txt $URL
Added: 6.2
+Multi: single
---
Redirect all writes to stderr to the specified file instead. If the file name
is a plain '-', it is instead written to stdout.
This option is global and does not need to be specified for each use of
--next.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/styled-output.d b/docs/cmdline-opts/styled-output.d
index 364a18244..20e011405 100644
--- a/docs/cmdline-opts/styled-output.d
+++ b/docs/cmdline-opts/styled-output.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: styled-output
Help: Enable styled output for HTTP headers
Added: 7.61.0
Category: verbose
Example: --styled-output -I $URL
See-also: head verbose
+Multi: boolean
---
Enables the automatic use of bold font styles when writing HTTP headers to the
terminal. Use --no-styled-output to switch them off.
diff --git a/docs/cmdline-opts/suppress-connect-headers.d b/docs/cmdline-opts/suppress-connect-headers.d
index de465623b..adde2499c 100644
--- a/docs/cmdline-opts/suppress-connect-headers.d
+++ b/docs/cmdline-opts/suppress-connect-headers.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: suppress-connect-headers
Help: Suppress proxy CONNECT response headers
See-also: dump-header include proxytunnel
Category: proxy
Example: --suppress-connect-headers --include -x proxy $URL
Added: 7.54.0
+Multi: boolean
---
When --proxytunnel is used and a CONNECT request is made do not output proxy
CONNECT response headers. This option is meant to be used with --dump-header or
diff --git a/docs/cmdline-opts/tcp-fastopen.d b/docs/cmdline-opts/tcp-fastopen.d
index 7b96b2d81..155dfed94 100644
--- a/docs/cmdline-opts/tcp-fastopen.d
+++ b/docs/cmdline-opts/tcp-fastopen.d
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tcp-fastopen
Added: 7.49.0
Help: Use TCP Fast Open
Category: connection
Example: --tcp-fastopen $URL
See-also: false-start
+Multi: boolean
---
Enable use of TCP Fast Open (RFC7413).
diff --git a/docs/cmdline-opts/tcp-nodelay.d b/docs/cmdline-opts/tcp-nodelay.d
index a819b27fb..cbb0a92ba 100644
--- a/docs/cmdline-opts/tcp-nodelay.d
+++ b/docs/cmdline-opts/tcp-nodelay.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tcp-nodelay
Help: Use the TCP_NODELAY option
Added: 7.11.2
Category: connection
Example: --tcp-nodelay $URL
See-also: no-buffer
+Multi: boolean
---
Turn on the TCP_NODELAY option. See the *curl_easy_setopt(3)* man page for
details about this option.
diff --git a/docs/cmdline-opts/telnet-option.d b/docs/cmdline-opts/telnet-option.d
index 50f0d4800..3e239e20f 100644
--- a/docs/cmdline-opts/telnet-option.d
+++ b/docs/cmdline-opts/telnet-option.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: telnet-option
Short: t
Arg: <opt=val>
@@ -6,6 +8,7 @@ Category: telnet
Example: -t TTYPE=vt100 telnet://example.com/
Added: 7.7
See-also: config
+Multi: append
---
Pass options to the telnet protocol. Supported options are:
diff --git a/docs/cmdline-opts/tftp-blksize.d b/docs/cmdline-opts/tftp-blksize.d
index c180569a4..9aaa9850d 100644
--- a/docs/cmdline-opts/tftp-blksize.d
+++ b/docs/cmdline-opts/tftp-blksize.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tftp-blksize
Arg: <value>
Help: Set TFTP BLKSIZE option
@@ -6,9 +8,8 @@ Added: 7.20.0
Category: tftp
Example: --tftp-blksize 1024 tftp://example.com/file
See-also: tftp-no-options
+Multi: single
---
Set TFTP BLKSIZE option (must be >512). This is the block size that curl will
try to use when transferring data to or from a TFTP server. By default 512
bytes will be used.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/tftp-no-options.d b/docs/cmdline-opts/tftp-no-options.d
index a90655a02..8b252bd28 100644
--- a/docs/cmdline-opts/tftp-no-options.d
+++ b/docs/cmdline-opts/tftp-no-options.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tftp-no-options
Help: Do not send any TFTP options
Protocols: TFTP
@@ -5,6 +7,7 @@ Added: 7.48.0
Category: tftp
Example: --tftp-no-options tftp://192.168.0.1/
See-also: tftp-blksize
+Multi: boolean
---
Tells curl not to send TFTP options requests.
diff --git a/docs/cmdline-opts/time-cond.d b/docs/cmdline-opts/time-cond.d
index 602d66849..416b16527 100644
--- a/docs/cmdline-opts/time-cond.d
+++ b/docs/cmdline-opts/time-cond.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: time-cond
Short: z
Arg: <time>
@@ -9,6 +11,7 @@ Example: -z "-Wed 01 Sep 2021 12:18:00" $URL
Example: -z file $URL
Added: 5.8
See-also: etag-compare remote-time
+Multi: single
---
Request a file that has been modified later than the given time and date, or
one that has been modified before that time. The <date expression> can be all
@@ -19,5 +22,3 @@ instead. See the *curl_getdate(3)* man pages for date expression details.
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.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/tls-max.d b/docs/cmdline-opts/tls-max.d
index 54431ac38..6a7375a70 100644
--- a/docs/cmdline-opts/tls-max.d
+++ b/docs/cmdline-opts/tls-max.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tls-max
Arg: <VERSION>
Tags: Versions
@@ -9,6 +11,7 @@ Help: Set maximum allowed TLS version
Category: tls
Example: --tls-max 1.2 $URL
Example: --tls-max 1.3 --tlsv1.2 $URL
+Multi: single
---
VERSION defines maximum supported TLS version. The minimum acceptable version
is set by tlsv1.0, tlsv1.1, tlsv1.2 or tlsv1.3.
diff --git a/docs/cmdline-opts/tls13-ciphers.d b/docs/cmdline-opts/tls13-ciphers.d
index ff3e5efdb..60cbfe59a 100644
--- a/docs/cmdline-opts/tls13-ciphers.d
+++ b/docs/cmdline-opts/tls13-ciphers.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tls13-ciphers
Arg: <ciphersuite list>
help: TLS 1.3 cipher suites to use
@@ -6,6 +8,7 @@ Category: tls
Example: --tls13-ciphers TLS_AES_128_GCM_SHA256 $URL
Added: 7.61.0
See-also: ciphers curves
+Multi: single
---
Specifies which cipher suites to use in the connection if it negotiates TLS
1.3. The list of ciphers suites must specify valid ciphers. Read up on TLS 1.3
@@ -16,5 +19,3 @@ cipher suite details on this URL:
This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
cipher suites by using the --ciphers option.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/tlsauthtype.d b/docs/cmdline-opts/tlsauthtype.d
index 1bee2a268..239753994 100644
--- a/docs/cmdline-opts/tlsauthtype.d
+++ b/docs/cmdline-opts/tlsauthtype.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tlsauthtype
Arg: <type>
Help: TLS authentication type
@@ -5,6 +7,7 @@ Added: 7.21.4
Category: tls auth
Example: --tlsauthtype SRP $URL
See-also: tlsuser
+Multi: single
---
Set TLS authentication type. Currently, the only supported option is "SRP",
for TLS-SRP (RFC 5054). If --tlsuser and --tlspassword are specified but
diff --git a/docs/cmdline-opts/tlspassword.d b/docs/cmdline-opts/tlspassword.d
index a52e0e34e..053751e7f 100644
--- a/docs/cmdline-opts/tlspassword.d
+++ b/docs/cmdline-opts/tlspassword.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tlspassword
Arg: <string>
Help: TLS password
@@ -5,6 +7,7 @@ Added: 7.21.4
Category: tls auth
Example: --tlspassword pwd --tlsuser user $URL
See-also: tlsuser
+Multi: single
---
Set password for use with the TLS authentication method specified with
--tlsauthtype. Requires that --tlsuser also be set.
diff --git a/docs/cmdline-opts/tlsuser.d b/docs/cmdline-opts/tlsuser.d
index df5dd301f..a3f0d54cd 100644
--- a/docs/cmdline-opts/tlsuser.d
+++ b/docs/cmdline-opts/tlsuser.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tlsuser
Arg: <name>
Help: TLS user name
@@ -5,6 +7,7 @@ Added: 7.21.4
Category: tls auth
Example: --tlspassword pwd --tlsuser user $URL
See-also: tlspassword
+Multi: single
---
Set username for use with the TLS authentication method specified with
--tlsauthtype. Requires that --tlspassword also is set.
diff --git a/docs/cmdline-opts/tlsv1.0.d b/docs/cmdline-opts/tlsv1.0.d
index 7c97c5093..f5fe3bfb0 100644
--- a/docs/cmdline-opts/tlsv1.0.d
+++ b/docs/cmdline-opts/tlsv1.0.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tlsv1.0
Help: Use TLSv1.0 or greater
Protocols: TLS
@@ -5,6 +7,7 @@ Added: 7.34.0
Category: tls
Example: --tlsv1.0 $URL
See-also: tlsv1.3
+Multi: mutex
---
Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.
diff --git a/docs/cmdline-opts/tlsv1.1.d b/docs/cmdline-opts/tlsv1.1.d
index 89bbb5ffb..567254d70 100644
--- a/docs/cmdline-opts/tlsv1.1.d
+++ b/docs/cmdline-opts/tlsv1.1.d
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tlsv1.1
Help: Use TLSv1.1 or greater
Protocols: TLS
Added: 7.34.0
Category: tls
Example: --tlsv1.1 $URL
-See-also: tlsv1.3
+See-also: tlsv1.3 tls-max
+Multi: mutex
---
Forces curl to use TLS version 1.1 or later when connecting to a remote TLS server.
diff --git a/docs/cmdline-opts/tlsv1.2.d b/docs/cmdline-opts/tlsv1.2.d
index 67376ee81..df1b90be9 100644
--- a/docs/cmdline-opts/tlsv1.2.d
+++ b/docs/cmdline-opts/tlsv1.2.d
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tlsv1.2
Help: Use TLSv1.2 or greater
Protocols: TLS
Added: 7.34.0
Category: tls
Example: --tlsv1.2 $URL
-See-also: tlsv1.3
+See-also: tlsv1.3 tls-max
+Multi: mutex
---
Forces curl to use TLS version 1.2 or later when connecting to a remote TLS server.
diff --git a/docs/cmdline-opts/tlsv1.3.d b/docs/cmdline-opts/tlsv1.3.d
index 858bf295c..d91b175d3 100644
--- a/docs/cmdline-opts/tlsv1.3.d
+++ b/docs/cmdline-opts/tlsv1.3.d
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tlsv1.3
Help: Use TLSv1.3 or greater
Protocols: TLS
Added: 7.52.0
Category: tls
Example: --tlsv1.3 $URL
-See-also: tlsv1.2
+See-also: tlsv1.2 tls-max
+Multi: mutex
---
Forces curl to use TLS version 1.3 or later when connecting to a remote TLS
server.
diff --git a/docs/cmdline-opts/tlsv1.d b/docs/cmdline-opts/tlsv1.d
index a92b239de..b958a809e 100644
--- a/docs/cmdline-opts/tlsv1.d
+++ b/docs/cmdline-opts/tlsv1.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: 1
Long: tlsv1
Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
Help: Use TLSv1.0 or greater
Category: tls
Example: --tlsv1 $URL
+Multi: mutex
---
Tells curl to use at least TLS version 1.x when negotiating with a remote TLS
server. That means TLS version 1.0 or higher
diff --git a/docs/cmdline-opts/tr-encoding.d b/docs/cmdline-opts/tr-encoding.d
index 4c25125a3..ca385ce53 100644
--- a/docs/cmdline-opts/tr-encoding.d
+++ b/docs/cmdline-opts/tr-encoding.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: tr-encoding
Added: 7.21.6
Help: Request compressed transfer encoding
@@ -5,6 +7,7 @@ Protocols: HTTP
Category: http
Example: --tr-encoding $URL
See-also: compressed
+Multi: boolean
---
Request a compressed Transfer-Encoding response using one of the algorithms
curl supports, and uncompress the data while receiving it.
diff --git a/docs/cmdline-opts/trace-ascii.d b/docs/cmdline-opts/trace-ascii.d
index 9ac86e17a..01484f9f6 100644
--- a/docs/cmdline-opts/trace-ascii.d
+++ b/docs/cmdline-opts/trace-ascii.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: trace-ascii
Arg: <file>
Help: Like --trace, but without hex output
@@ -6,6 +8,7 @@ Category: verbose
Example: --trace-ascii log.txt $URL
Added: 7.9.7
See-also: verbose trace
+Multi: single
---
Enables a full trace dump of all incoming and outgoing data, including
descriptive information, to the given output file. Use "-" as filename to have
@@ -17,5 +20,3 @@ for untrained humans.
This option is global and does not need to be specified for each use of
--next.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/trace-time.d b/docs/cmdline-opts/trace-time.d
index ea276c388..e76988544 100644
--- a/docs/cmdline-opts/trace-time.d
+++ b/docs/cmdline-opts/trace-time.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: trace-time
Help: Add time stamps to trace/verbose output
Added: 7.14.0
Category: verbose
Example: --trace-time --trace-ascii output $URL
See-also: trace verbose
+Multi: boolean
---
Prepends a time stamp to each trace or verbose line that curl displays.
diff --git a/docs/cmdline-opts/trace.d b/docs/cmdline-opts/trace.d
index 805afdd26..2f088ecb0 100644
--- a/docs/cmdline-opts/trace.d
+++ b/docs/cmdline-opts/trace.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: trace
Arg: <file>
Help: Write a debug trace to FILE
@@ -6,6 +8,7 @@ Category: verbose
Example: --trace log.txt $URL
Added: 7.9.7
See-also: trace-ascii trace-time
+Multi: single
---
Enables a full trace dump of all incoming and outgoing data, including
descriptive information, to the given output file. Use "-" as filename to have
@@ -14,5 +17,3 @@ stderr.
This option is global and does not need to be specified for each use of
--next.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/unix-socket.d b/docs/cmdline-opts/unix-socket.d
index fd001e32c..7d95a71df 100644
--- a/docs/cmdline-opts/unix-socket.d
+++ b/docs/cmdline-opts/unix-socket.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: unix-socket
Arg: <path>
Help: Connect through this Unix domain socket
@@ -6,5 +8,6 @@ Protocols: HTTP
Category: connection
See-also: abstract-unix-socket
Example: --unix-socket socket-path $URL
+Multi: single
---
Connect through this Unix domain socket, instead of using the network.
diff --git a/docs/cmdline-opts/upload-file.d b/docs/cmdline-opts/upload-file.d
index 62fe6502c..3709896f6 100644
--- a/docs/cmdline-opts/upload-file.d
+++ b/docs/cmdline-opts/upload-file.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: upload-file
Short: T
Arg: <file>
@@ -8,6 +10,7 @@ Example: -T "img[1-1000].png" ftp://ftp.example.com/
Example: --upload-file "{file1,file2}" $URL
Added: 4.0
See-also: get head
+Multi: append
---
This transfers the specified local file to the remote URL. If there is no file
part in the specified URL, curl will append the local file name. NOTE that you
diff --git a/docs/cmdline-opts/url.d b/docs/cmdline-opts/url.d
index f91ee009b..5ec61b1df 100644
--- a/docs/cmdline-opts/url.d
+++ b/docs/cmdline-opts/url.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: url
Arg: <url>
Help: URL to work with
@@ -5,6 +7,7 @@ Category: curl
Example: --url $URL
Added: 7.5
See-also: next config
+Multi: append
---
Specify a URL to fetch. This option is mostly handy when you want to specify
URL(s) in a config file.
@@ -15,8 +18,8 @@ name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be
used, otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by
setting a default protocol, see --proto-default for details.
-This option may be used any number of times. To control where this URL is
-written, use the --output or the --remote-name options.
+To control where this URL is written, use the --output or the --remote-name
+options.
**WARNING**: On Windows, particular file:// accesses can be converted to
network accesses by the operating system. Beware!
diff --git a/docs/cmdline-opts/use-ascii.d b/docs/cmdline-opts/use-ascii.d
index d9d522421..569c7c6da 100644
--- a/docs/cmdline-opts/use-ascii.d
+++ b/docs/cmdline-opts/use-ascii.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: B
Long: use-ascii
Help: Use ASCII/text transfer
@@ -6,6 +8,7 @@ Category: misc
Example: -B ftp://example.com/README
Added: 5.0
See-also: crlf data-ascii
+Multi: boolean
---
Enable ASCII transfer. For FTP, this can also be enforced by using a URL that
ends with ";type=A". This option causes data sent to stdout to be in text mode
diff --git a/docs/cmdline-opts/user-agent.d b/docs/cmdline-opts/user-agent.d
index 2412b9b2a..3f2b65d1a 100644
--- a/docs/cmdline-opts/user-agent.d
+++ b/docs/cmdline-opts/user-agent.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: A
Long: user-agent
Arg: <name>
@@ -7,6 +9,7 @@ Category: important http
Example: -A "Agent 007" $URL
Added: 4.5.1
See-also: header proxy-header
+Multi: single
---
Specify the User-Agent string to send to the HTTP server. To encode blanks in
the string, surround the string with single quote marks. This header can also
@@ -15,5 +18,3 @@ be set with the --header or the --proxy-header options.
If you give an empty argument to --user-agent (""), it will remove the header
completely from the request. If you prefer a blank header, you can set it to a
single space (" ").
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/user.d b/docs/cmdline-opts/user.d
index 144704edd..930df83cc 100644
--- a/docs/cmdline-opts/user.d
+++ b/docs/cmdline-opts/user.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: user
Short: u
Arg: <user:password>
@@ -6,6 +8,7 @@ Category: important auth
Example: -u user:secret $URL
Added: 4.0
See-also: netrc config
+Multi: single
---
Specify the user name and password to use for server authentication. Overrides
--netrc and --netrc-optional.
@@ -39,5 +42,3 @@ 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.
diff --git a/docs/cmdline-opts/verbose.d b/docs/cmdline-opts/verbose.d
index 26e00e716..7122f7d24 100644
--- a/docs/cmdline-opts/verbose.d
+++ b/docs/cmdline-opts/verbose.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Short: v
Long: verbose
Mutexed: trace trace-ascii
@@ -6,6 +8,7 @@ See-also: include
Category: important verbose
Example: --verbose $URL
Added: 4.0
+Multi: boolean
---
Makes curl verbose during the operation. Useful for debugging and seeing
what's going on "under the hood". A line starting with '>' means "header data"
diff --git a/docs/cmdline-opts/version.d b/docs/cmdline-opts/version.d
index 7d3807774..032e2e2db 100644
--- a/docs/cmdline-opts/version.d
+++ b/docs/cmdline-opts/version.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: version
Short: V
Help: Show version number and quit
@@ -5,6 +7,7 @@ Category: important curl
Example: --version
Added: 4.0
See-also: help manual
+Multi: boolean
---
Displays information about curl and the libcurl version it uses.
diff --git a/docs/cmdline-opts/write-out.d b/docs/cmdline-opts/write-out.d
index 9a57c3dbc..8ca1746d0 100644
--- a/docs/cmdline-opts/write-out.d
+++ b/docs/cmdline-opts/write-out.d
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: write-out
Short: w
Arg: <format>
@@ -6,6 +8,7 @@ Category: verbose
Example: -w '%{http_code}\\n' $URL
Added: 6.5
See-also: verbose head
+Multi: single
---
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
@@ -22,6 +25,11 @@ output a newline by using \\n, a carriage return with \\r and a tab space with
The output will be written to standard output, but this can be switched to
standard error by using %{stderr}.
+Output HTTP headers from the most recent request by using \fB%header{name}\fP
+where \fBname\fP is the case insensitive name of the header (without the
+trailing colon). The header contents are exactly as sent over the network,
+with leading and trailing whitespace trimmed. Added in curl 7.84.0.
+
.B NOTE:
The %-symbol is a special symbol in the win32-environment, where all
occurrences of % must be doubled when using this option.
@@ -48,6 +56,15 @@ option. (Added in 7.26.0)
The initial path curl ended up in when logging on to the remote FTP
server. (Added in 7.15.4)
.TP
+.B header_json
+A JSON object with all HTTP response headers from the recent transfer. Values
+are provided as arrays, since in the case of multiple headers there can be
+multiple values.
+
+The header names provided in lowercase, listed in order of appearance over the
+wire. Except for duplicated headers. They are grouped on the first occurrence
+of that header, each value is presented in the JSON array.
+.TP
.B http_code
The numerical response code that was found in the last retrieved HTTP(S) or
FTP(s) transfer.
@@ -77,7 +94,7 @@ Number of new connects made in the recent transfer. (Added in 7.12.3)
.TP
.B num_headers
The number of response headers in the most recent request (restarted at each
- redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
+redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
.TP
.B num_redirects
Number of redirects that were followed in the request. (Added in 7.12.3)
@@ -190,4 +207,3 @@ The URL that was fetched last. This is most meaningful if you have told curl
to follow location: headers.
.RE
.IP
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/xattr.d b/docs/cmdline-opts/xattr.d
index 51ca83480..9f1a6cf8a 100644
--- a/docs/cmdline-opts/xattr.d
+++ b/docs/cmdline-opts/xattr.d
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
Long: xattr
Help: Store metadata in extended file attributes
Category: misc
Example: --xattr -o storage $URL
Added: 7.21.3
See-also: remote-time write-out verbose
+Multi: boolean
---
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
diff --git a/docs/curl-config.1 b/docs/curl-config.1
index 773e05c9b..6a7fa86aa 100644
--- a/docs/curl-config.1
+++ b/docs/curl-config.1
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl-config 1 "November 04, 2020" "Curl 7.81.0" "curl-config manual"
+.TH curl-config 1 "September 20, 2022" "Curl 7.86.0" "curl-config manual"
.SH NAME
curl-config \- Get information about a libcurl installation
@@ -61,9 +63,9 @@ on. The prefix is set with "configure --prefix".
.IP "--protocols"
Lists what particular protocols the installed libcurl was built to support. At
the time of writing, this list may include HTTP, HTTPS, FTP, FTPS, FILE,
-TELNET, LDAP, DICT. Do not assume any particular order. The protocols will
-be listed using uppercase and are separated by newlines. There may be none,
-one, or several protocols in the list. (Added in 7.13.0)
+TELNET, LDAP, DICT and many more. Do not assume any particular order. The
+protocols will be listed using uppercase and are separated by newlines. There
+may be none, one, or several protocols in the list. (Added in 7.13.0)
.IP "--ssl-backends"
Lists the SSL backends that were enabled when libcurl was built. It might be
no, one or several names. If more than one name, they will appear
@@ -81,23 +83,24 @@ major, minor, and patch. So that libcurl 7.7.4 would appear as 070704 and libcur
omitted. (This option was broken in the 7.15.0 release.)
.SH "EXAMPLES"
What linker options do I need when I link with libcurl?
-
+.nf
$ curl-config --libs
-
+.fi
What compiler options do I need when I compile using libcurl functions?
-
+.nf
$ curl-config --cflags
-
+.fi
How do I know if libcurl was built with SSL support?
-
+.nf
$ curl-config --feature | grep SSL
-
+.fi
What's the installed libcurl version?
-
+.nf
$ curl-config --version
-
+.fi
How do I build a single file with a one-line command?
-
+.nf
$ `curl-config --cc --cflags` -o example example.c `curl-config --libs`
+.fi
.SH "SEE ALSO"
.BR curl (1)
diff --git a/docs/curl.1 b/docs/curl.1
index f504a5741..18d2cf07c 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 \- 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 \- 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
-.TH curl 1 "January 03 2022" "curl 7.81.0" "curl Manual"
+.TH curl 1 "October 23 2022" "curl 7.86.0" "curl Manual"
.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
@@ -31,7 +33,7 @@ curl \- transfer a URL
\fBcurl\fP is a tool for transferring data from or to a server. It supports these
protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS,
LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP,
-SMTPS, TELNET or TFTP. The command is designed to work without user
+SMTPS, TELNET, TFTP, WS and WSS. The command is designed to work without user
interaction.
curl offers a busload of useful tricks like proxy support, user
@@ -49,28 +51,28 @@ You can specify multiple URLs or parts of URLs by writing part sets within
braces and quoting the URL as in:
.nf
- "http://site.{one,two,three}.com"
+ \(dqhttp://site.{one,two,three}.com"
.fi
or you can get sequences of alphanumeric series by using [] as in:
.nf
- "ftp://ftp.example.com/file[1-100].txt"
+ \(dqftp://ftp.example.com/file[1-100].txt"
.fi
.nf
- "ftp://ftp.example.com/file[001-100].txt" (with leading zeros)
+ \(dqftp://ftp.example.com/file[001-100].txt" (with leading zeros)
.fi
.nf
- "ftp://ftp.example.com/file[a-z].txt"
+ \(dqftp://ftp.example.com/file[a-z].txt"
.fi
Nested sequences are not supported, but you can use several ones next to each
other:
.nf
- "http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
+ \(dqhttp://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
.fi
You can specify any amount of URLs on the command line. They will be fetched
@@ -81,23 +83,23 @@ You can specify a step counter for the ranges to get every Nth number or
letter:
.nf
- "http://example.com/file[1-100:10].txt"
+ \(dqhttp://example.com/file[1-100:10].txt"
.fi
.nf
- "http://example.com/file[a-z:2].txt"
+ \(dqhttp://example.com/file[a-z:2].txt"
.fi
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 \(aq&', '?' and '*'.
+for example '&', '?' and '*'.
Provide the IPv6 zone index in the URL with an escaped percentage sign and the
interface name. Like in
.nf
- "http://[fe80::3%25eth0]/"
+ \(dqhttp://[fe80::3%25eth0]/"
.fi
If you specify URL without protocol:// prefix, curl will attempt to guess what
@@ -116,8 +118,8 @@ specified on a single command line and cannot be used between separate curl
invocations.
.SH OUTPUT
If not told otherwise, curl writes the received data to stdout. It can be
-instructed to instead save that data into a local file, using the \fI\-o, \-\-output\fP or
-\fI\-O, \-\-remote-name\fP options. If curl is given multiple URLs to transfer on the
+instructed to instead save that data into a local file, using the \-\-output or
+\-\-remote-name options. If curl is given multiple URLs to transfer on the
command line, it similarly needs multiple options for where to save them.
curl does not parse or otherwise "understand" the content it gets or writes as
@@ -185,22 +187,22 @@ do an operation and it is about to write data to the terminal, it
mixing progress meter and response data.
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 (>), \fI\-o, \-\-output\fP or
+redirect the response output to a file, using shell redirect (>), \-\-output or
similar.
This does not apply to FTP upload as that operation does not spit out any
response data to the terminal.
-If you prefer a progress "bar" instead of the regular meter, \fI\-#, \-\-progress-bar\fP is
+If you prefer a progress "bar" instead of the regular meter, \-\-progress-bar is
your friend. You can also disable the progress meter completely with the
-\fI\-s, \-\-silent\fP option.
+\-\-silent option.
.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, \fI\-d, \-\-data\fP for example, requires a space
+separator. The long "double-dash" form, \-\-data for example, requires a space
between it and its value.
Short version options that do not need any additional values can be used
@@ -213,9 +215,11 @@ prefix it with "no-". However, in this list we mostly only list and show the
\-\-option version of them.
.IP "\-\-abstract-unix-socket <path>"
(HTTP) Connect through an abstract Unix domain socket, instead of using the network.
-Note: netstat shows the path of an abstract socket prefixed with \(aq@', however
+Note: netstat shows the path of an abstract socket prefixed with '@', however
the <path> argument should not have this leading character.
+If --abstract-unix-socket is provided several times, the last set value will be used.
+
Example:
.nf
curl --abstract-unix-socket socketpath https://example.com
@@ -233,6 +237,8 @@ just handle the cache in memory.
If this option is used several times, curl will load contents from all the
files but the last one will be used for saving.
+--alt-svc can be used several times in a command line
+
Example:
.nf
curl --alt-svc svc.txt https://example.com
@@ -246,13 +252,15 @@ 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 \fI\-\-basic\fP, \fI\-\-digest\fP, \fI\-\-ntlm\fP, and \fI\-\-negotiate\fP.
-Using \fI\-\-anyauth\fP is not recommended if you do uploads from stdin, since it may
+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.
Used together with \fI\-u, \-\-user\fP.
+Providing --anyauth multiple times has no extra effect.
+
Example:
.nf
curl --anyauth --user me:pwd https://example.com
@@ -264,6 +272,9 @@ See also \fI--proxy-anyauth\fP, \fI--basic\fP and \fI--digest\fP.
overwriting it. If the remote file does not exist, it will be created. Note
that this flag is ignored by some SFTP servers (including OpenSSH).
+Providing --append multiple times has no extra effect.
+Disable it again with --no-append.
+
Example:
.nf
curl --upload-file local --append ftp://example.com/
@@ -283,6 +294,8 @@ the endpoint.
The service argument is a string that points to a function provided by a cloud
(service-code) when the service name is omitted from the endpoint.
+If --aws-sigv4 is provided several times, the last set value will be used.
+
Example:
.nf
curl --aws-sigv4 "aws:amz:east-2:es" --user "key:secret" https://example.com
@@ -297,6 +310,8 @@ previously set option that sets a different authentication method (such as
Used together with \fI\-u, \-\-user\fP.
+Providing --basic multiple times has no extra effect.
+
Example:
.nf
curl -u name:password --basic https://example.com
@@ -309,7 +324,7 @@ may contain multiple CA certificates. The certificate(s) must be in PEM
format. Normally curl is built to use a default file for this, so this option
is typically used to alter that default file.
-curl recognizes the environment variable named \(aqCURL_CA_BUNDLE' if it is
+curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is
set, and uses the given path as a path to a CA cert bundle. This option
overrides that variable.
@@ -324,14 +339,14 @@ If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
option is supported for backward compatibility with other SSL engines, but it
should not be set. If the option is not set, then curl will use the
certificates in the system and user Keychain to verify the peer, which is the
-preferred method of verifying the peer\(aqs certificate chain.
+preferred method of verifying the peer's certificate chain.
(Schannel only) This option is supported for Schannel in Windows 7 or later
with libcurl 7.60 or later. This option is supported for backward
compatibility with other SSL engines; instead it is recommended to use
-Windows\(aq store of root certificates (the default for Schannel).
+Windows' store of root certificates (the default for Schannel).
-If this option is used several times, the last one will be used.
+If --cacert is provided several times, the last set value will be used.
Example:
.nf
@@ -342,14 +357,15 @@ See also \fI--capath\fP and \fI-k, --insecure\fP.
.IP "\-\-capath <dir>"
(TLS) 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
+\(dqpath1: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 \fI\-\-capath\fP can allow
+c_rehash utility supplied with OpenSSL. Using \-\-capath can allow
OpenSSL-powered curl to make SSL-connections much more efficiently than using
-\fI\-\-cacert\fP if the \-\-cacert file contains many CA certificates.
+\-\-cacert if the \-\-cacert file contains many CA certificates.
-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.
+
+If --capath is provided several times, the last set value will be used.
Example:
.nf
@@ -362,11 +378,14 @@ See also \fI--cacert\fP and \fI-k, --insecure\fP.
Certificate Status Request (aka. OCSP stapling) TLS extension.
If this option is enabled and the server sends an invalid (e.g. expired)
-response, if the response suggests that the server certificate has been revoked,
-or no response at all is received, the verification fails.
+response, if the response suggests that the server certificate has been
+revoked, or no response at all is received, the verification fails.
This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
+Providing --cert-status multiple times has no extra effect.
+Disable it again with --no-cert-status.
+
Example:
.nf
curl --cert-status https://example.com
@@ -375,9 +394,13 @@ Example:
See also \fI--pinnedpubkey\fP. Added in 7.41.0.
.IP "\-\-cert-type <type>"
(TLS) Tells curl what type the provided client certificate is using. PEM, DER, ENG
-and P12 are recognized types. If not specified, PEM is assumed.
+and P12 are recognized types.
-If this option is used several times, the last one will be used.
+The default type depends on the TLS backend and is usually PEM, however for
+Secure Transport and Schannel it is P12. If \-\-cert is a pkcs11: URI then ENG is
+the default type.
+
+If --cert-type is provided several times, the last set value will be used.
Example:
.nf
@@ -390,26 +413,30 @@ See also \fI-E, --cert\fP, \fI--key\fP and \fI--key-type\fP.
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 is not specified, it will be queried for on
-the terminal. Note that this option assumes a \&"certificate" file that is the
-private key and the client certificate concatenated! See \fI\-E, \-\-cert\fP and \fI\-\-key\fP to
+the terminal. Note that this option assumes a certificate file that is the
+private key and the client certificate concatenated. See \-\-cert and \-\-key to
specify them independently.
+In the <certificate> portion of the argument, you must escape the character ":"
+as "\\:" so that it is not recognized as the password delimiter. Similarly, you
+must escape the character "\\" as "\\\\" so that it is not recognized as an
+escape character.
+
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.
+loaded.
+
+If you provide a path relative to the current directory, you must prefix the
+path with "./" in order to avoid confusion with an NSS database nickname.
If curl is built against OpenSSL library, and the engine pkcs11 is available,
then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in
a PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a
-PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI\-\-engine\fP option will be set
-as "pkcs11" if none was provided and the \fI\-\-cert-type\fP option will be set as
-"ENG" if none was provided.
+PKCS#11 URI. If a PKCS#11 URI is provided, then the \-\-engine option will be set
+as "pkcs11" if none was provided and the \-\-cert-type option will be set as
+\(dqENG" if none was provided.
(iOS and macOS only) If curl is built against Secure Transport, then the
certificate string can either be the name of a certificate/private key in the
@@ -420,15 +447,15 @@ precede it with "./" prefix, in order to avoid confusion with a nickname.
(Schannel only) Client certificates must be specified by a path
expression to a certificate store. (Loading PFX is not supported; you can
import it to a store first). You can use
-"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
+\(dq<store location>\\<store name>\\<thumbprint>" to refer to a certificate
in the system certificates store, for example,
-"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
+\(dqCurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
usually a SHA-1 hex string which you can see in certificate details. Following
store locations are supported: CurrentUser, LocalMachine, CurrentService,
Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
LocalMachineEnterprise.
-If this option is used several times, the last one will be used.
+If --cert is provided several times, the last set value will be used.
Example:
.nf
@@ -444,7 +471,7 @@ specify valid ciphers. Read up on SSL cipher list details on this URL:
https://curl.se/docs/ssl-ciphers.html
.fi
-If this option is used several times, the last one will be used.
+If --ciphers is provided several times, the last set value will be used.
Example:
.nf
@@ -456,6 +483,9 @@ See also \fI--tlsv1.3\fP.
(SCP SFTP) Enables built-in SSH compression.
This is a request, not an order; the server may or may not do it.
+Providing --compressed-ssh multiple times has no extra effect.
+Disable it again with --no-compressed-ssh.
+
Example:
.nf
curl --compressed-ssh sftp://example.com/
@@ -470,6 +500,9 @@ If this option is used and the server sends an unsupported encoding, curl will
report an error. This is a request, not an order; the server may or may not
deliver data compressed.
+Providing --compressed multiple times has no extra effect.
+Disable it again with --no-compressed.
+
Example:
.nf
curl --compressed https://example.com
@@ -493,15 +526,15 @@ 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 \(aq#' character, the rest of the line
+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 \fI\-K, \-\-config\fP as \(aq-' to make curl read the file from stdin.
+Specify the filename to \-\-config as '-' to make curl read the file from stdin.
Note that to be able to specify a URL in the config file, you need to specify
-it using the \fI\-\-url\fP option, and not by simply writing the URL on its own
+it using the \-\-url option, and not by simply writing the URL on its own
line. So, it could look similar to this:
url = "https://curl.se/docs/"
@@ -522,8 +555,8 @@ url = "https://curl.se/docs/"
# \-\-\- End of example file \-\-\-
.fi
-When curl is invoked, it (unless \fI\-q, \-\-disable\fP is used) checks for a default
-config file and uses it if found, even when \fI\-K, \-\-config\fP is used. The default
+When curl is invoked, it (unless \-\-disable is used) checks for a default
+config file and uses it if found, even when \-\-config is used. The default
config file is checked for in the following places in this order:
1) "$CURL_HOME/.curlrc"
@@ -538,12 +571,15 @@ config file is checked for in the following places in this order:
6) Windows: "%USERPROFILE%\\Application Data\\.curlrc"
-7) Non-windows: use getpwuid to find the home directory
+7) Non-Windows: use getpwuid to find the home directory
-8) On windows, if it finds no .curlrc file in the sequence described above, it
+8) On Windows, if it finds no .curlrc file in the sequence described above, it
checks for one in the same dir the curl executable is placed.
-This option can be used multiple times to load multiple config files.
+On Windows two filenames are checked per location: .curlrc and _curlrc,
+preferring the former. Older versions on Windows checked for _curlrc only.
+
+--config can be used several times in a command line
Example:
.nf
@@ -552,12 +588,12 @@ Example:
See also \fI-q, --disable\fP.
.IP "\-\-connect-timeout <fractional seconds>"
-Maximum time in seconds that you allow curl\(aqs connection to take. This only
+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.
-If this option is used several times, the last one will be used.
+If --connect-timeout is provided several times, the last set value will be used.
Examples:
.nf
@@ -575,13 +611,13 @@ establish the network connection. It does NOT affect the hostname/port that is
used for TLS/SSL (e.g. SNI, certificate verification) or for the application
protocols. "HOST1" and "PORT1" may be the empty string, meaning "any
host/port". "HOST2" and "PORT2" may also be the empty string, meaning "use the
-request\(aqs original host/port".
+request's original host/port".
A "host" specified to this option is compared as a string, so it needs to
match the name used in request URL. It can be either numerical such as
-"127.0.0.1" or the full host name such as "example.org".
+\(dq127.0.0.1" or the full host name such as "example.org".
-This option can be used many times to add many connect rules.
+--connect-to can be used several times in a command line
Example:
.nf
@@ -598,7 +634,7 @@ uploads, the FTP server command SIZE will not be used by curl.
Use "-C \-" to tell curl to automatically find out where/how to resume the
transfer. It then uses the given output/input files to figure that out.
-If this option is used several times, the last one will be used.
+If --continue-at is provided several times, the last set value will be used.
Examples:
.nf
@@ -616,16 +652,15 @@ you set the file name to a single dash, "-", the cookies will be written to
stdout.
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 \fI\-b, \-\-cookie\fP
+record and use cookies. Another way to activate it is to use the \-\-cookie
option.
If the cookie jar cannot be created or written to, the whole curl operation
-will not fail or even report an error clearly. Using \fI\-v, \-\-verbose\fP will get a
+will not fail or even report an error clearly. Using \-\-verbose will get a
warning displayed, but that is the only visible feedback you get about this
possibly lethal situation.
-If this option is used several times, the last specified file name will be
-used.
+If --cookie-jar is provided several times, the last set value will be used.
Examples:
.nf
@@ -635,34 +670,37 @@ Examples:
See also \fI-b, --cookie\fP.
.IP "\-b, \-\-cookie <data|filename>"
-(HTTP) Pass the data to the HTTP server in the Cookie header. 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 \(aq=' symbol is used in the argument, it is instead treated as a filename
+(HTTP) Pass the data to the HTTP server in the Cookie header. 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". This makes curl use the
+cookie header with this content explicitly in all outgoing request(s). If
+multiple requests are done due to authentication, followed redirects or
+similar, they will all get this cookie passed on.
+
+If no '=' symbol is used in the argument, it is instead treated as a filename
to read previously stored cookie from. This option also activates the cookie
engine which will make curl record incoming cookies, which may be handy if
-you are using this in combination with the \fI\-L, \-\-location\fP option or do multiple URL
+you are using this in combination with the \-\-location option or do multiple URL
transfers on the same invoke. If the file name is exactly a minus ("-"), curl
will instead read the contents from stdin.
The file format of the file to read cookies from should be plain HTTP headers
(Set-Cookie style) or the Netscape/Mozilla cookie file format.
-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.
+The file specified with \-\-cookie is only used as input. No cookies will be
+written to the file. To store cookies, use the \-\-cookie-jar option.
If you use the Set-Cookie file format and do not specify a domain then the
cookie is not sent since the domain will never match. To address this, set a
domain in Set-Cookie line (doing that will include sub-domains) or preferably:
use the Netscape format.
-This option can be used multiple times.
-
Users often want to both read cookies from a file and write updated cookies
-back to a file, so using both \fI\-b, \-\-cookie\fP and \fI\-c, \-\-cookie-jar\fP in the same command
+back to a file, so using both \-\-cookie and \-\-cookie-jar in the same command
line is common.
+--cookie can be used several times in a command line
+
Examples:
.nf
curl -b cookiefile https://example.com
@@ -671,9 +709,9 @@ Examples:
See also \fI-c, --cookie-jar\fP and \fI-j, --junk-session-cookies\fP.
.IP "\-\-create-dirs"
-When used in conjunction with the \fI\-o, \-\-output\fP option, curl will create the
+When used in conjunction with the \-\-output option, curl will create the
necessary local directory hierarchy as needed. This option creates the
-directories mentioned with the \fI\-o, \-\-output\fP option, nothing else. If the \-\-output
+directories mentioned with the \-\-output option, nothing else. If the \-\-output
file name uses no directory, or if the directories it mentions already exist,
no directories will be created.
@@ -681,6 +719,9 @@ Created dirs are made with mode 0750 on unix style file systems.
To create remote directories when using FTP or SFTP, try \fI\-\-ftp-create-dirs\fP.
+Providing --create-dirs multiple times has no extra effect.
+Disable it again with --no-create-dirs.
+
Example:
.nf
curl --create-dirs --output local/dir/file https://example.com
@@ -689,12 +730,12 @@ Example:
See also \fI--ftp-create-dirs\fP and \fI--output-dir\fP.
.IP "\-\-create-file-mode <mode>"
(SFTP SCP FILE) When curl is used to create files remotely using one of the supported
-protocols, this option allows the user to set which \(aqmode' to set on the file
+protocols, this option allows the user to set which 'mode' to set on the file
at creation time, instead of the default 0644.
This option takes an octal number as argument.
-If this option is used several times, the last one will be used.
+If --create-file-mode is provided several times, the last set value will be used.
Example:
.nf
@@ -707,6 +748,9 @@ See also \fI--ftp-create-dirs\fP. Added in 7.75.0.
(SMTP added in 7.40.0)
+Providing --crlf multiple times has no extra effect.
+Disable it again with --no-crlf.
+
Example:
.nf
curl --crlf -T file ftp://example.com/
@@ -717,7 +761,7 @@ See also \fI-B, --use-ascii\fP.
(TLS) Provide a file using PEM format with a Certificate Revocation List that may
specify peer certificates that are to be considered revoked.
-If this option is used several times, the last one will be used.
+If --crlfile is provided several times, the last set value will be used.
Example:
.nf
@@ -731,13 +775,15 @@ according to RFC 8422, 5.1. Multiple algorithms can be provided by separating
them with ":" (e.g. "X25519:P-521"). The parameter is available identically
in the "openssl s_client/s_server" utilities.
-\fI\-\-curves\fP allows a OpenSSL powered curl to make SSL-connections with exactly
+\-\-curves allows a OpenSSL powered curl to make SSL-connections with exactly
the (EC) curve requested by the client, avoiding nontransparent client/server
negotiations.
If this option is set, the default curves list built into openssl will be
ignored.
+If --curves is provided several times, the last set value will be used.
+
Example:
.nf
curl --curves X25519 https://example.com
@@ -747,6 +793,8 @@ See also \fI--ciphers\fP. Added in 7.73.0.
.IP "\-\-data-ascii <data>"
(HTTP) This is just an alias for \fI\-d, \-\-data\fP.
+--data-ascii can be used several times in a command line
+
Example:
.nf
curl --data-ascii @file https://example.com
@@ -757,10 +805,10 @@ See also \fI--data-binary\fP, \fI--data-raw\fP and \fI--data-urlencode\fP.
(HTTP) This posts data exactly as specified with no extra processing whatsoever.
If you start the data with the letter @, the rest should be a filename. Data
-is posted in a similar manner as \fI\-d, \-\-data\fP does, except that newlines and
+is posted in a similar manner as \-\-data does, except that newlines and
carriage returns are preserved and conversions are never done.
-Like \fI\-d, \-\-data\fP the default content-type sent to the server is
+Like \-\-data the default content-type sent to the server is
application/x-www-form-urlencoded. If you want the data to be treated as
arbitrary binary data by the server then set the content-type to octet-stream:
\-H "Content-Type: application/octet-stream".
@@ -768,6 +816,8 @@ arbitrary binary data by the server then set the content-type to octet-stream:
If this option is used several times, the ones following the first will append
data as described in \fI\-d, \-\-data\fP.
+--data-binary can be used several times in a command line
+
Example:
.nf
curl --data-binary @filename https://example.com
@@ -775,9 +825,11 @@ Example:
See also \fI--data-ascii\fP.
.IP "\-\-data-raw <data>"
-(HTTP) This posts data similarly to \fI\-d, \-\-data\fP but without the special
+(HTTP) This posts data similarly to \-\-data but without the special
interpretation of the @ character.
+--data-raw can be used several times in a command line
+
Examples:
.nf
curl --data-raw "hello" https://example.com
@@ -786,7 +838,7 @@ Examples:
See also \fI-d, --data\fP. Added in 7.43.0.
.IP "\-\-data-urlencode <data>"
-(HTTP) This posts data, similar to the other \fI\-d, \-\-data\fP options with the exception
+(HTTP) This posts data, similar to the other \-\-data options with the exception
that this performs URL-encoding.
To be CGI-compliant, the <data> part should begin with a \fIname\fP followed
@@ -813,6 +865,8 @@ sign appended, resulting in \fIname=urlencoded-file-content\fP. Note that the
name is expected to be URL-encoded already.
.RE
+--data-urlencode can be used several times in a command line
+
Examples:
.nf
curl --data-urlencode name=val https://example.com
@@ -828,22 +882,24 @@ 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 \fI\-F, \-\-form\fP.
-\fI\-\-data-raw\fP is almost the same but does not have a special interpretation of
+\-\-data-raw is almost the same but does not have a special interpretation of
the @ character. To post data purely binary, you should instead use the
-\fI\-\-data-binary\fP option. To URL-encode the value of a form field you may use
+\-\-data-binary option. To URL-encode the value of a form field you may use
\fI\-\-data-urlencode\fP.
If any of these options is used more than once on the same command line, the
data pieces specified will be merged with a separating &-symbol. Thus, using
-\&\(aq-d name=daniel \-d skill=lousy' would generate a post chunk that looks like
-\&\(aqname=daniel&skill=lousy'.
+\(aq-d name=daniel \-d skill=lousy' would generate a post chunk that looks like
+\(aqname=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. Posting
-data from a file named \&\(aqfoobar' would thus be done with \fI\-d, \-\-data\fP @foobar. When
-\fI\-d, \-\-data\fP is told to read from a file like that, carriage returns and newlines
+data from a file named 'foobar' would thus be done with \fI\-d, \-\-data\fP @foobar. When
+\-\-data is told to read from a file like that, carriage returns and newlines
will be stripped out. If you do not want the @ character to have a special
-interpretation use \fI\-\-data-raw\fP instead.
+interpretation use \-\-data-raw instead.
+
+--data can be used several times in a command line
Examples:
.nf
@@ -852,7 +908,7 @@ Examples:
curl -d @filename https://example.com
.fi
-See also \fI--data-binary\fP, \fI--data-urlencode\fP and \fI--data-raw\fP. This option overrides \fI-F, --form\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
+See also \fI--data-binary\fP, \fI--data-urlencode\fP and \fI--data-raw\fP. This option is mutually exclusive to \fI-F, --form\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
.IP "\-\-delegation <LEVEL>"
(GSS/kerberos) Set LEVEL to tell the server what it is allowed to delegate when it
comes to user credentials.
@@ -866,7 +922,7 @@ service ticket, which is a matter of realm policy.
Unconditionally allow the server to delegate.
.RE
-If this option is used several times, the last one will be used.
+If --delegation is provided several times, the last set value will be used.
Example:
.nf
@@ -877,16 +933,17 @@ See also \fI-k, --insecure\fP and \fI--ssl\fP.
.IP "\-\-digest"
(HTTP) Enables HTTP Digest authentication. This is an authentication scheme that
prevents the password from being sent over the wire in clear text. Use this in
-combination with the normal \fI\-u, \-\-user\fP option to set user name and password.
+combination with the normal \-\-user option to set user name and password.
-If this option is used several times, only the first one is used.
+Providing --digest multiple times has no extra effect.
+Disable it again with --no-digest.
Example:
.nf
curl -u name:password --digest https://example.com
.fi
-See also \fI-u, --user\fP, \fI--proxy-digest\fP and \fI--anyauth\fP. This option overrides \fI--basic\fP and \fI--ntlm\fP and \fI--negotiate\fP.
+See also \fI-u, --user\fP, \fI--proxy-digest\fP and \fI--anyauth\fP. This option is mutually exclusive to \fI--basic\fP and \fI--ntlm\fP and \fI--negotiate\fP.
.IP "\-\-disable-eprt"
(FTP) Tell curl to disable the use of the EPRT and LPRT commands when doing active
FTP transfers. Curl will normally always first attempt to use EPRT, then LPRT
@@ -902,7 +959,10 @@ If the server is accessed using IPv6, this option will have no effect as EPRT
is necessary then.
Disabling EPRT only changes the active behavior. If you want to switch to
-passive mode you need to not use \fI\-P, \-\-ftp-port\fP or force it with \fI\-\-ftp-pasv\fP.
+passive mode you need to not use \-\-ftp-port or force it with \fI\-\-ftp-pasv\fP.
+
+Providing --disable-eprt multiple times has no extra effect.
+Disable it again with --no-disable-eprt.
Example:
.nf
@@ -924,6 +984,9 @@ necessary then.
Disabling EPSV only changes the passive behavior. If you want to switch to
active mode you need to use \fI\-P, \-\-ftp-port\fP.
+Providing --disable-epsv multiple times has no extra effect.
+Disable it again with --no-disable-epsv.
+
Example:
.nf
curl --disable-epsv ftp://example.com/
@@ -932,9 +995,12 @@ Example:
See also \fI--disable-eprt\fP and \fI-P, --ftp-port\fP.
.IP "\-q, \-\-disable"
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 default
+file will not be read and used. See the \-\-config for details on the default
config file search path.
+Providing --disable multiple times has no extra effect.
+Disable it again with --no-disable.
+
Example:
.nf
curl -q https://example.com
@@ -942,8 +1008,11 @@ Example:
See also \fI-K, --config\fP.
.IP "\-\-disallow-username-in-url"
-(HTTP) This tells curl to exit if passed a url containing a username. This is probably
-most useful when the URL is being provided at run-time or similar.
+(HTTP) This tells curl to exit if passed a URL containing a username. This is probably
+most useful when the URL is being provided at runtime or similar.
+
+Providing --disallow-username-in-url multiple times has no extra effect.
+Disable it again with --no-disallow-username-in-url.
Example:
.nf
@@ -956,6 +1025,8 @@ See also \fI--proto\fP. Added in 7.61.0.
counterpart to \fI\-\-interface\fP (which does not affect DNS). The supplied string
must be an interface name (not an address).
+If --dns-interface is provided several times, the last set value will be used.
+
Example:
.nf
curl --dns-interface eth0 https://example.com
@@ -967,7 +1038,7 @@ See also \fI--dns-ipv4-addr\fP and \fI--dns-ipv6-addr\fP. \fI--dns-interface\fP
the DNS requests originate from this address. The argument should be a
single IPv4 address.
-If this option is used several times, the last one will be used.
+If --dns-ipv4-addr is provided several times, the last set value will be used.
Example:
.nf
@@ -980,7 +1051,7 @@ See also \fI--dns-interface\fP and \fI--dns-ipv6-addr\fP. \fI--dns-ipv4-addr\fP
the DNS requests originate from this address. The argument should be a
single IPv6 address.
-If this option is used several times, the last one will be used.
+If --dns-ipv6-addr is provided several times, the last set value will be used.
Example:
.nf
@@ -994,7 +1065,7 @@ 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.
-If this option is used several times, the last one will be used.
+If --dns-servers is provided several times, the last set value will be used.
Example:
.nf
@@ -1003,7 +1074,10 @@ Example:
See also \fI--dns-interface\fP and \fI--dns-ipv4-addr\fP. \fI--dns-servers\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
.IP "\-\-doh-cert-status"
-Same as \fI\-\-cert-status\fP but used for DoH (DNS-over-HTTPS).
+Same as \-\-cert-status but used for DoH (DNS-over-HTTPS).
+
+Providing --doh-cert-status multiple times has no extra effect.
+Disable it again with --no-doh-cert-status.
Example:
.nf
@@ -1012,7 +1086,10 @@ Example:
See also \fI--doh-insecure\fP. Added in 7.76.0.
.IP "\-\-doh-insecure"
-Same as \fI\-k, \-\-insecure\fP but used for DoH (DNS-over-HTTPS).
+Same as \-\-insecure but used for DoH (DNS-over-HTTPS).
+
+Providing --doh-insecure multiple times has no extra effect.
+Disable it again with --no-doh-insecure.
Example:
.nf
@@ -1027,9 +1104,12 @@ instead of using the default name resolver mechanism. The URL must be HTTPS.
Some SSL options that you set for your transfer will apply to DoH since the
name lookups take place over SSL. However, the certificate verification
settings are not inherited and can be controlled separately via
-\fI\-\-doh-insecure\fP and \fI\-\-doh-cert-status\fP.
+\-\-doh-insecure and \fI\-\-doh-cert-status\fP.
+
+This option is unset if an empty string "" is used as the URL. (Added in
+7.85.0)
-If this option is used several times, the last one will be used.
+If --doh-url is provided several times, the last set value will be used.
Example:
.nf
@@ -1044,7 +1124,7 @@ received, the use of this option will create an empty file.
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.
+If --dump-header is provided several times, the last set value will be used.
Example:
.nf
@@ -1053,9 +1133,14 @@ Example:
See also \fI-o, --output\fP.
.IP "\-\-egd-file <file>"
-(TLS) Specify the path name to the Entropy Gathering Daemon socket. The socket is
+(TLS) Deprecated option. This option is ignored by curl since 7.84.0. Prior to that
+it only had an effect on curl if built to use old versions of OpenSSL.
+
+Specify the path name to the Entropy Gathering Daemon socket. The socket is
used to seed the random engine for SSL connections.
+If --egd-file is provided several times, the last set value will be used.
+
Example:
.nf
curl --egd-file /random/here https://example.com
@@ -1063,9 +1148,11 @@ Example:
See also \fI--random-file\fP.
.IP "\-\-engine <name>"
-(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \fI\-\-engine\fP
+(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \-\-engine
list to print a list of build-time supported engines. Note that not all (and
-possibly none) of the engines may be available at run-time.
+possibly none) of the engines may be available at runtime.
+
+If --engine is provided several times, the last set value will be used.
Example:
.nf
@@ -1082,10 +1169,12 @@ For correct results, make sure that the specified file contains only a
single line with the desired ETag. An empty file is parsed as an empty
ETag.
-Use the option \fI\-\-etag-save\fP to first save the ETag from a response, and
+Use the option \-\-etag-save to first save the ETag from a response, and
then use this option to compare against the saved ETag in a subsequent
request.
+If --etag-compare is provided several times, the last set value will be used.
+
Example:
.nf
curl --etag-compare etag.txt https://example.com
@@ -1098,6 +1187,8 @@ caching related header, usually returned in a response.
If no ETag is sent by the server, an empty file is created.
+If --etag-save is provided several times, the last set value will be used.
+
Example:
.nf
curl --etag-save storetag.txt https://example.com
@@ -1110,6 +1201,8 @@ response when curl emits an Expects: 100-continue header in its request. By
default curl will wait one second. This option accepts decimal values! When
curl stops waiting, it will continue as if the response has been received.
+If --expect100-timeout is provided several times, the last set value will be used.
+
Example:
.nf
curl --expect100-timeout 2.5 -T file https://example.com
@@ -1121,7 +1214,7 @@ Fail and exit on the first detected transfer error.
When curl is used to do multiple transfers on the command line, it will
attempt to operate on each given URL, one by one. By default, it will ignore
-errors if there are more URLs given and the last URL\(aqs success will determine
+errors if there are more URLs given and the last URL's success will determine
the error code curl returns. So early failures will be "hidden" by subsequent
successful transfers.
@@ -1132,9 +1225,12 @@ line. This way, no transfer failures go undetected by scripts and similar.
This option is global and does not need to be specified for each use of \fI\-:, \-\-next\fP.
This option does not imply \fI\-f, \-\-fail\fP, which causes transfers to fail due to the
-server\(aqs HTTP status code. You can combine the two options, however note \fI\-f, \-\-fail\fP
+server's HTTP status code. You can combine the two options, however note \-\-fail
is not global and is therefore contained by \fI\-:, \-\-next\fP.
+Providing --fail-early multiple times has no extra effect.
+Disable it again with --no-fail-early.
+
Example:
.nf
curl --fail-early https://example.com https://two.example
@@ -1148,41 +1244,50 @@ returns an HTML document stating so (which often also describes why and
more). This flag will still allow curl to output and save that content but
also to return error 22.
-This is an alternative option to \fI\-f, \-\-fail\fP which makes curl fail for the same
+This is an alternative option to \-\-fail which makes curl fail for the same
circumstances but without saving the content.
+Providing --fail-with-body multiple times has no extra effect.
+Disable it again with --no-fail-with-body.
+
Example:
.nf
curl --fail-with-body https://example.com
.fi
-See also \fI-f, --fail\fP. Added in 7.76.0.
+See also \fI-f, --fail\fP. This option is mutually exclusive to \fI-f, --fail\fP. Added in 7.76.0.
.IP "\-f, \-\-fail"
-(HTTP) Fail silently (no output at all) on server errors. This is mostly done to
-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.
+(HTTP) Fail fast with no output at all on server errors. This is useful to enable
+scripts and users 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
(response codes 401 and 407).
+Providing --fail multiple times has no extra effect.
+Disable it again with --no-fail.
+
Example:
.nf
curl --fail https://example.com
.fi
-See also \fI--fail-with-body\fP.
+See also \fI--fail-with-body\fP. This option is mutually exclusive to \fI--fail-with-body\fP.
.IP "\-\-false-start"
(TLS) Tells curl to use false start during the TLS handshake. False start is a mode
where a TLS client will start sending application data before verifying the
-server\(aqs Finished message, thus saving a round trip when performing a full
+server's Finished message, thus saving a round trip when performing a full
handshake.
This is currently only implemented in the NSS and Secure Transport (on iOS 7.0
or later, or OS X 10.9 or later) backends.
+Providing --false-start multiple times has no extra effect.
+Disable it again with --no-false-start.
+
Example:
.nf
curl --false-start https://example.com
@@ -1193,18 +1298,22 @@ See also \fI--tcp-fastopen\fP. Added in 7.42.0.
(HTTP) Tells curl to pass on names of multipart form fields and files using
backslash-escaping instead of percent-encoding.
+If --form-escape is provided several times, the last set value will be used.
+
Example:
.nf
- curl --form-escape --form 'field\\name=curl' 'file=@load"this' https://example.com
+ curl --form-escape -F 'field\\name=curl' -F 'file=@load"this' https://example.com
.fi
See also \fI-F, --form\fP. Added in 7.81.0.
.IP "\-\-form-string <name=string>"
-(HTTP SMTP IMAP) Similar to \fI\-F, \-\-form\fP except that the value string for the named parameter is used
-literally. Leading \&\(aq@' and \&'<' characters, and the \&';type=' string in
-the value have no special meaning. Use this in preference to \fI\-F, \-\-form\fP if
-there\(aqs any possibility that the string value may accidentally trigger the
-\&\(aq@' or \&'<' features of \fI\-F, \-\-form\fP.
+(HTTP SMTP IMAP) Similar to \-\-form except that the value string for the named parameter is used
+literally. Leading '@' and '<' characters, and the ';type=' string in
+the value have no special meaning. Use this in preference to \-\-form if
+there's any possibility that the string value may accidentally trigger the
+\(aq@' or '<' features of \fI\-F, \-\-form\fP.
+
+--form-string can be used several times in a command line
Example:
.nf
@@ -1220,7 +1329,7 @@ Content-Type multipart/form-data according to RFC 2388.
For SMTP and IMAP protocols, this is the means to compose a multipart mail
message to transmit.
-This enables uploading of binary files etc. To force the \(aqcontent' part to be
+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
@@ -1230,13 +1339,13 @@ file.
Tell curl to read content from stdin instead of a file by using \- as
filename. This goes for both @ and < constructs. When stdin is used, the
contents is buffered in memory first by curl to determine its size and allow a
-possible resend. Defining a part\(aqs data from a named non-regular file (such
+possible resend. Defining a part's data from a named non-regular file (such
as a named pipe or similar) is unfortunately not subject to buffering and will
be effectively read at transmission time; since the full size is unknown
before the transfer starts, such data is sent as chunks by HTTP and rejected
by IMAP.
-Example: send an image to an HTTP server, where \&\(aqprofile' is the name of the
+Example: send an image to an HTTP server, where 'profile' is the name of the
form-field to which the file portrait.jpg will be the input:
.nf
@@ -1256,7 +1365,7 @@ text field, but get the contents for it from a local file:
curl \-F "story=<hugefile.txt" https://example.com/
.fi
-You can also tell curl what Content-Type to use by using \(aqtype=', in a manner
+You can also tell curl what Content-Type to use by using 'type=', in a manner
similar to:
.nf
@@ -1276,7 +1385,7 @@ filename=, like this:
curl \-F "file=@localfile;filename=nameinpost" example.com
.fi
-If filename/path contains \(aq,' or ';', it must be quoted by double-quotes like:
+If filename/path contains ',' or ';', it must be quoted by double-quotes like:
.nf
curl \-F "file=@\\"local,file\\";filename=\\"name;in;post\\"" example.com
@@ -1285,7 +1394,7 @@ If filename/path contains \(aq,' or ';', it must be quoted by double-quotes like
or
.nf
- curl \-F \(aqfile=@"local,file";filename="name;in;post"' example.com
+ curl \-F 'file=@"local,file";filename="name;in;post"' example.com
.fi
Note that if a filename/path is quoted by double-quotes, any double-quote
@@ -1295,7 +1404,7 @@ Quoting must also be applied to non-file data if it contains semicolons,
leading/trailing spaces or leading double quotes:
.nf
- curl \-F \(aqcolors="red; green; blue";type=text/x-myapp' example.com
+ curl \-F 'colors="red; green; blue";type=text/x-myapp' example.com
.fi
You can add custom headers to the field by setting headers=, like
@@ -1312,7 +1421,7 @@ or
The headers= keyword may appear more that once and above notes about quoting
apply. When headers are read from a file, Empty lines and lines starting
-with \(aq#' are comments and ignored; each header can be folded by splitting
+with '#' are comments and ignored; each header can be folded by splitting
between two words and starting the continuation line with a space; embedded
carriage-returns and trailing spaces are stripped.
Here is an example of a header file contents:
@@ -1332,20 +1441,20 @@ To support sending multipart mail messages, the syntax is extended as follows:
.br
\- name can be omitted: the equal sign is the first character of the argument,
.br
-\- if data starts with \(aq(', this signals to start a new multipart: it can be
+\- if data starts with '(', this signals to start a new multipart: it can be
followed by a content type specification.
.br
-\- a multipart can be terminated with a \(aq=)' argument.
+\- a multipart can be terminated with a '=)' argument.
Example: the following command sends an SMTP mime email consisting in an
inline part in two alternative formats: plain text and HTML. It attaches a
text file:
.nf
- curl \-F \(aq=(;type=multipart/alternative' \\
- \-F \(aq=plain text message' \\
- \-F \(aq= <body>HTML message</body>;type=text/html' \\
- \-F \(aq=)' \-F '=@textfile.txt' ... smtp://example.com
+ curl \-F '=(;type=multipart/alternative' \\
+ \-F '=plain text message' \\
+ \-F '= <body>HTML message</body>;type=text/html' \\
+ \-F '=)' \-F '=@textfile.txt' ... smtp://example.com
.fi
Data can be encoded for transfer using encoder=. Available encodings are
@@ -1359,25 +1468,25 @@ Example: send multipart mail with a quoted-printable text message and a
base64 attached file:
.nf
- curl \-F \(aq=text message;encoder=quoted-printable' \\
- \-F \(aq=@localfile;encoder=base64' ... smtp://example.com
+ curl \-F '=text message;encoder=quoted-printable' \\
+ \-F '=@localfile;encoder=base64' ... smtp://example.com
.fi
See further examples and details in the MANUAL.
-This option can be used multiple times.
+--form can be used several times in a command line
Example:
.nf
curl --form "name=curl" --form "file=@loadthis" https://example.com
.fi
-See also \fI-d, --data\fP, \fI--form-string\fP and \fI--form-escape\fP. This option overrides \fI-d, --data\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
+See also \fI-d, --data\fP, \fI--form-string\fP and \fI--form-escape\fP. This option is mutually exclusive to \fI-d, --data\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
.IP "\-\-ftp-account <data>"
(FTP) 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.
-If this option is used several times, the last one will be used.
+If --ftp-account is provided several times, the last set value will be used.
Example:
.nf
@@ -1387,10 +1496,12 @@ Example:
See also \fI-u, --user\fP.
.IP "\-\-ftp-alternative-to-user <command>"
(FTP) If authenticating with the USER and PASS commands fails, send this command.
-When connecting to Tumbleweed\(aqs Secure Transport server over FTPS using a
+When connecting to Tumbleweed's Secure Transport server over FTPS using a
client certificate, using "SITE AUTH" will tell the server to retrieve the
username from the certificate.
+If --ftp-alternative-to-user is provided several times, the last set value will be used.
+
Example:
.nf
curl --ftp-alternative-to-user "U53r" ftp://example.com
@@ -1402,6 +1513,9 @@ See also \fI--ftp-account\fP and \fI-u, --user\fP.
the server, the standard behavior of curl is to fail. Using this option, curl
will instead attempt to create missing directories.
+Providing --ftp-create-dirs multiple times has no extra effect.
+Disable it again with --no-ftp-create-dirs.
+
Example:
.nf
curl --ftp-create-dirs -T file ftp://example.com/remote/path/file
@@ -1421,10 +1535,12 @@ curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full
path to the server for all these commands. This is the fastest behavior.
.IP singlecwd
curl 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 \(aqnocwd' but without the full penalty of 'multicwd'.
+\(dqnormally" (like in the multicwd case). This is somewhat more standards
+compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE
+If --ftp-method is provided several times, the last set value will be used.
+
Examples:
.nf
curl --ftp-method multicwd ftp://example.com/dir1/dir2/file
@@ -1435,15 +1551,17 @@ Examples:
See also \fI-l, --list-only\fP.
.IP "\-\-ftp-pasv"
(FTP) Use passive mode for the data connection. Passive is the internal default
-behavior, but using this option can be used to override a previous \fI\-P, \-\-ftp-port\fP
+behavior, but using this option can be used to override a previous \-\-ftp-port
option.
-If this option is used several times, only the first one is used. Undoing an
-enforced passive really is not doable but you must then instead enforce the
-correct \fI\-P, \-\-ftp-port\fP again.
+Reversing an enforced passive really is not doable but you must then instead
+enforce the correct \-\-ftp-port again.
Passive mode means that curl will try the EPSV command first and then PASV,
-unless \fI\-\-disable-epsv\fP is used.
+unless \-\-disable-epsv is used.
+
+Providing --ftp-pasv multiple times has no extra effect.
+Disable it again with --no-ftp-pasv.
Example:
.nf
@@ -1454,12 +1572,12 @@ See also \fI--disable-epsv\fP.
.IP "\-P, \-\-ftp-port <address>"
(FTP) Reverses the default initiator/listener roles when connecting with FTP. This
option makes curl use active mode. curl then tells the server to connect back
-to the client\(aqs specified address and port, while passive mode asks the server
+to the client's specified address and port, while passive mode asks the server
to setup an IP address and port for it to connect to. <address> should be one
of:
.RS
.IP interface
-e.g. "eth0" to specify which interface\(aqs IP address you want to use (Unix only)
+e.g. "eth0" to specify which interface's IP address you want to use (Unix only)
.IP "IP address"
e.g. "192.168.10.1" to specify the exact IP address
.IP "host name"
@@ -1469,16 +1587,17 @@ make curl pick the same IP address that is already used for the control
connection
.RE
-If this option is used several times, the last one will be used. Disable the
-use of PORT with \fI\-\-ftp-pasv\fP. Disable the attempt to use the EPRT command
-instead of PORT by using \fI\-\-disable-eprt\fP. EPRT is really PORT++.
+Disable the use of PORT with \fI\-\-ftp-pasv\fP. Disable the attempt to use the EPRT
+command instead of PORT by using \fI\-\-disable-eprt\fP. EPRT is really PORT++.
-You can also append \&":[start]-[end]\&" to the right of the address, to tell
+You can also append ":[start]-[end]\&" to the right of the address, to tell
curl what TCP port range to use. That means you specify a port range, from a
lower to a higher number. A single number works as well, but do note that it
increases the risk of failure since the port may not be available.
+If --ftp-port is provided several times, the last set value will be used.
+
Examples:
.nf
curl -P - ftp:/example.com
@@ -1492,6 +1611,9 @@ See also \fI--ftp-pasv\fP and \fI--disable-eprt\fP.
mainly drftpd, require this non-standard command for directory listings as
well as up and downloads in PASV mode.
+Providing --ftp-pret multiple times has no extra effect.
+Disable it again with --no-ftp-pret.
+
Example:
.nf
curl --ftp-pret ftp://example.com/
@@ -1500,7 +1622,7 @@ Example:
See also \fI-P, --ftp-port\fP and \fI--ftp-pasv\fP.
.IP "\-\-ftp-skip-pasv-ip"
(FTP) Tell curl to not use the IP address the server suggests in its response
-to curl\(aqs PASV command when curl connects the data connection. Instead curl
+to curl's PASV command when curl connects the data connection. Instead curl
will re-use the same IP address it already uses for the control
connection.
@@ -1508,6 +1630,9 @@ Since curl 7.74.0 this option is enabled by default.
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
+Providing --ftp-skip-pasv-ip multiple times has no extra effect.
+Disable it again with --no-ftp-skip-pasv-ip.
+
Example:
.nf
curl --ftp-skip-pasv-ip ftp://example.com/
@@ -1520,6 +1645,9 @@ instead wait for the server to do it, and will not reply to the shutdown from
the server. The active mode initiates the shutdown and waits for a reply from
the server.
+Providing --ftp-ssl-ccc-mode multiple times has no extra effect.
+Disable it again with --no-ftp-ssl-ccc-mode.
+
Example:
.nf
curl --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/
@@ -1532,6 +1660,9 @@ authenticating. The rest of the control channel communication will be
unencrypted. This allows NAT routers to follow the FTP transaction. The
default mode is passive.
+Providing --ftp-ssl-ccc multiple times has no extra effect.
+Disable it again with --no-ftp-ssl-ccc.
+
Example:
.nf
curl --ftp-ssl-ccc ftps://example.com/
@@ -1543,6 +1674,9 @@ See also \fI--ssl\fP and \fI--ftp-ssl-ccc-mode\fP.
authentication, but non-encrypted data transfers for efficiency. Fails the
transfer if the server does not support SSL/TLS.
+Providing --ftp-ssl-control multiple times has no extra effect.
+Disable it again with --no-ftp-ssl-control.
+
Example:
.nf
curl --ftp-ssl-control ftp://example.com
@@ -1550,17 +1684,16 @@ Example:
See also \fI--ssl\fP.
.IP "\-G, \-\-get"
-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
+When used, this option will make all data specified with \fI\-d, \-\-data\fP, \-\-data-binary
+or \-\-data-urlencode 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 \(aq?' separator.
+with a '?' separator.
If used in combination with \fI\-I, \-\-head\fP, the POST data will instead be appended to
the URL with a HEAD request.
-If this option is used several times, only the first one is used. This is
-because undoing a GET does not make sense, but you should then instead enforce
-the alternative method you prefer.
+Providing --get multiple times has no extra effect.
+Disable it again with --no-get.
Examples:
.nf
@@ -1576,6 +1709,9 @@ you can specify URLs that contain the letters {}[] without having curl itself
interpret them. Note that these letters are not normal legal URL contents but
they should be encoded according to the URI standard.
+Providing --globoff multiple times has no extra effect.
+Disable it again with --no-globoff.
+
Example:
.nf
curl -g "https://example.com/{[]}}}}"
@@ -1590,11 +1726,11 @@ time, then a connection attempt is made to the IPv4 address in parallel. The
first connection to be established is the one that is used.
The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
-"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
+\(dqIt is RECOMMENDED that connection attempts be paced 150-250 ms apart to
balance human factors against network load." libcurl currently defaults to
200 ms. Firefox and Chrome currently default to 300 ms.
-If this option is used several times, the last one will be used.
+If --happy-eyeballs-timeout-ms is provided several times, the last set value will be used.
Example:
.nf
@@ -1605,11 +1741,14 @@ See also \fI-m, --max-time\fP and \fI--connect-timeout\fP. Added in 7.59.0.
.IP "\-\-haproxy-protocol"
(HTTP) Send a HAProxy PROXY protocol v1 header at the beginning of the
connection. This is used by some load balancers and reverse proxies to
-indicate the client\(aqs true IP address and port.
+indicate the client's true IP address and port.
This option is primarily useful when sending test requests to a service that
expects this header.
+Providing --haproxy-protocol multiple times has no extra effect.
+Disable it again with --no-haproxy-protocol.
+
Example:
.nf
curl --haproxy-protocol https://example.com
@@ -1621,6 +1760,9 @@ See also \fI-x, --proxy\fP. Added in 7.60.0.
to get nothing but the header of a document. When used on an FTP or FILE file,
curl displays the file size and last modification time only.
+Providing --head multiple times has no extra effect.
+Disable it again with --no-head.
+
Example:
.nf
curl -I https://example.com
@@ -1628,16 +1770,22 @@ Example:
See also \fI-G, --get\fP, \fI-v, --verbose\fP and \fI--trace-ascii\fP.
.IP "\-H, \-\-header <header/@file>"
-(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 are
-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 IMAP SMTP) Extra header to include in information sent. When used within an HTTP request,
+it is added to the regular request headers.
+
+For an IMAP or SMTP MIME uploaded mail built with \-\-form options, it is
+prepended to the resulting MIME document, effectively including it at the mail
+global level. It does not affect raw uploaded mails (Added in 7.56.0).
+
+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 are 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
@@ -1648,18 +1796,23 @@ This option can take an argument in @filename style, which then adds a header
for each line in the input file. Using @- will make curl read the header file
from stdin. Added in 7.55.0.
-You need \fI\-\-proxy-header\fP to send custom headers intended for a HTTP
+Please note that most anti-spam utilities check the presence and value of
+several MIME mail headers: these are "From:", "To:", "Date:" and "Subject:"
+among others and should be added with this option.
+
+You need \-\-proxy-header to send custom headers intended for an HTTP
proxy. Added in 7.37.0.
-Passing on a "Transfer-Encoding: chunked" header when doing a HTTP request
+Passing on a "Transfer-Encoding: chunked" header when doing an HTTP request
with a request body, will make curl send the data using chunked encoding.
-\fBWARNING\fP: headers set with this option will be set in all requests \- even
-after redirects are followed, like when told with \fI\-L, \-\-location\fP. This can lead to
-the header being sent to other hosts than the original host, so sensitive
-headers should be used with caution combined with following redirects.
+\fBWARNING\fP: headers set with this option will be set in all HTTP requests
+\- even after redirects are followed, like when told with \fI\-L, \-\-location\fP. This can
+lead to the header being sent to other hosts than the original host, so
+sensitive headers should be used with caution combined with following
+redirects.
-This option can be used multiple times to add/replace/remove multiple headers.
+--header can be used several times in a command line
Examples:
.nf
@@ -1677,6 +1830,9 @@ If the argument "all" was provided, curl will display all options available.
If the argument "category" was provided, curl will display all categories and
their meanings.
+Providing --help multiple times has no extra effect.
+Disable it again with --no-help.
+
Example:
.nf
curl --help all
@@ -1685,9 +1841,11 @@ Example:
See also \fI-v, --verbose\fP.
.IP "\-\-hostpubmd5 <md5>"
(SFTP SCP) Pass a string containing 32 hexadecimal digits. The string should
-be the 128 bit MD5 checksum of the remote host\(aqs public key, curl will refuse
+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.
+If --hostpubmd5 is provided several times, the last set value will be used.
+
Example:
.nf
curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/
@@ -1696,9 +1854,11 @@ Example:
See also \fI--hostpubsha256\fP.
.IP "\-\-hostpubsha256 <sha256>"
(SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash of the remote
-host\(aqs public key. Curl will refuse the connection with the host
+host's public key. Curl will refuse the connection with the host
unless the hashes match.
+If --hostpubsha256 is provided several times, the last set value will be used.
+
Example:
.nf
curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/
@@ -1716,6 +1876,8 @@ just handle HSTS in memory.
If this option is used several times, curl will load contents from all the
files but the last one will be used for saving.
+--hsts can be used several times in a command line
+
Example:
.nf
curl --hsts cache.txt https://example.com
@@ -1731,6 +1893,9 @@ simply transparently downgrade \- if allowed.
Since curl 7.66.0, HTTP/0.9 is disabled by default.
+Providing --http0.9 multiple times has no extra effect.
+Disable it again with --no-http0.9.
+
Example:
.nf
curl --http0.9 https://example.com
@@ -1741,33 +1906,40 @@ See also \fI--http1.1\fP, \fI--http2\fP and \fI--http3\fP. Added in 7.64.0.
(HTTP) Tells curl to use HTTP version 1.0 instead of using its internally preferred
HTTP version.
+Providing --http1.0 multiple times has no extra effect.
+
Example:
.nf
curl --http1.0 https://example.com
.fi
-See also \fI--http0.9\fP and \fI--http1.1\fP. This option overrides \fI--http1.1\fP and \fI--http2\fP.
+See also \fI--http0.9\fP and \fI--http1.1\fP. This option is mutually exclusive to \fI--http1.1\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP and \fI--http3\fP.
.IP "\-\-http1.1"
(HTTP) Tells curl to use HTTP version 1.1.
+Providing --http1.1 multiple times has no extra effect.
+
Example:
.nf
curl --http1.1 https://example.com
.fi
-See also \fI--http1.1\fP and \fI--http0.9\fP. This option overrides \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.33.0.
+See also \fI-0, --http1.0\fP and \fI--http0.9\fP. This option is mutually exclusive to \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP and \fI--http3\fP. Added in 7.33.0.
.IP "\-\-http2-prior-knowledge"
(HTTP) Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1
Upgrade. It requires prior knowledge that the server supports HTTP/2 straight
away. HTTPS requests will still do HTTP/2 the standard way with negotiated
protocol version in the TLS handshake.
+Providing --http2-prior-knowledge multiple times has no extra effect.
+Disable it again with --no-http2-prior-knowledge.
+
Example:
.nf
curl --http2-prior-knowledge https://example.com
.fi
-See also \fI--http2\fP and \fI--http3\fP. \fI--http2-prior-knowledge\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.49.0.
+See also \fI--http2\fP and \fI--http3\fP. \fI--http2-prior-knowledge\fP requires that the underlying libcurl was built to support HTTP/2. This option is mutually exclusive to \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http3\fP. Added in 7.49.0.
.IP "\-\-http2"
(HTTP) Tells curl to use HTTP version 2.
@@ -1777,14 +1949,20 @@ handshake. curl does this by default.
For HTTP, this means curl will attempt to upgrade the request to HTTP/2 using
the Upgrade: request header.
+When curl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or
+higher even though that is required by the specification. A user can add this
+version requirement with \fI\-\-tlsv1.2\fP.
+
+Providing --http2 multiple times has no extra effect.
+
Example:
.nf
curl --http2 https://example.com
.fi
-See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP. Added in 7.33.0.
+See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option is mutually exclusive to \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP and \fI--http3\fP. Added in 7.33.0.
.IP "\-\-http3"
-(HTTP) \fBWARNING\fP: this option is experimental. Do not use in production.
+(HTTP) **WARNING**: this option is experimental. Do not use in production.
Tells curl to use HTTP version 3 directly to the host and port number used in
the URL. A normal HTTP/3 transaction will be done to a host and then get
@@ -1794,12 +1972,14 @@ you know that the target speaks HTTP/3 on the given host and port.
This option will make curl fail if a QUIC connection cannot be established, it
cannot fall back to a lower HTTP version on its own.
+Providing --http3 multiple times has no extra effect.
+
Example:
.nf
curl --http3 https://example.com
.fi
-See also \fI--http1.1\fP and \fI--http2\fP. \fI--http3\fP requires that the underlying libcurl was built to support HTTP/3. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP. Added in 7.66.0.
+See also \fI--http1.1\fP and \fI--http2\fP. \fI--http3\fP requires that the underlying libcurl was built to support HTTP/3. This option is mutually exclusive to \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP. Added in 7.66.0.
.IP "\-\-ignore-content-length"
(FTP HTTP) For HTTP, Ignore the Content-Length header. This is particularly useful for
servers running Apache 1.x, which will report incorrect Content-Length for
@@ -1810,6 +1990,9 @@ downloading a file.
This option does not work for HTTP if libcurl was built to use hyper.
+Providing --ignore-content-length multiple times has no extra effect.
+Disable it again with --no-ignore-content-length.
+
Example:
.nf
curl --ignore-content-length https://example.com
@@ -1821,7 +2004,10 @@ Include the HTTP response headers in the output. The HTTP response headers can
include things like server name, cookies, date of the document, HTTP version
and more...
-To view the request headers, consider the \fI\-v, \-\-verbose\fP option.
+To view the request headers, consider the \-\-verbose option.
+
+Providing --include multiple times has no extra effect.
+Disable it again with --no-include.
Example:
.nf
@@ -1835,7 +2021,7 @@ the transfer takes place. This option makes curl skip the verification step
and proceed without checking.
When this option is not used for protocols using TLS, curl verifies the
-server\(aqs TLS certificate before it continues: that the certificate contains
+server's TLS certificate before it continues: that the certificate contains
the right name which matches the host name used in the URL and that the
certificate has been signed by a CA certificate present in the cert store.
See this online resource for further details:
@@ -1844,11 +2030,14 @@ See this online resource for further details:
.fi
For SFTP and SCP, this option makes curl skip the \fIknown_hosts\fP verification.
-\fIknown_hosts\fP is a file normally stored in the user\(aqs home directory in the
-\&.ssh subdirectory, which contains host names and their public keys.
+\fIknown_hosts\fP is a file normally stored in the user's home directory in the
+\(dq.ssh" subdirectory, which contains host names and their public keys.
\fBWARNING\fP: using this option makes the transfer insecure.
+Providing --insecure multiple times has no extra effect.
+Disable it again with --no-insecure.
+
Example:
.nf
curl --insecure https://example.com
@@ -1863,12 +2052,12 @@ name, IP address or host name. An example could look like:
curl \-\-interface eth0:1 https://www.example.com/
.fi
-If this option is used several times, the last one will be used.
-
On Linux it can be used to specify a VRF, but the binary needs to either
have CAP_NET_RAW or to be run as root. More information about Linux VRF:
https://www.kernel.org/doc/Documentation/networking/vrf.txt
+If --interface is provided several times, the last set value will be used.
+
Example:
.nf
curl --interface eth0 https://example.com
@@ -1876,31 +2065,74 @@ Example:
See also \fI--dns-interface\fP.
.IP "\-4, \-\-ipv4"
-This option tells curl to resolve names to IPv4 addresses only, and not for
-example try IPv6.
+This option tells curl to use IPv4 addresses only, and not for example try
+IPv6.
+
+Providing --ipv4 multiple times has no extra effect.
+Disable it again with --no-ipv4.
Example:
.nf
curl --ipv4 https://example.com
.fi
-See also \fI--http1.1\fP and \fI--http2\fP. This option overrides \fI-6, --ipv6\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. This option is mutually exclusive to \fI-6, --ipv6\fP.
.IP "\-6, \-\-ipv6"
-This option tells curl to resolve names to IPv6 addresses only, and not for
-example try IPv4.
+This option tells curl to use IPv6 addresses only, and not for example try
+IPv4.
+
+Providing --ipv6 multiple times has no extra effect.
+Disable it again with --no-ipv6.
Example:
.nf
curl --ipv6 https://example.com
.fi
-See also \fI--http1.1\fP and \fI--http2\fP. This option overrides \fI-4, --ipv4\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. This option is mutually exclusive to \fI-4, --ipv4\fP.
+.IP "\-\-json <data>"
+(HTTP) Sends the specified JSON data in a POST request to the HTTP server. \-\-json
+works as a shortcut for passing on these three options:
+
+.nf
+ \-\-data [arg]
+ \-\-header "Content-Type: application/json"
+ \-\-header "Accept: application/json"
+.fi
+
+There is \fI\fPno verification\fI\fP that the passed in data is actual JSON or that
+the syntax is correct.
+
+If you start the data with the letter @, the rest should be a file name to
+read the data from, or a single dash (-) if you want curl to read the data
+from stdin. Posting data from a file named 'foobar' would thus be done with
+\fI\-\-json\fP @foobar and to instead read the data from stdin, use \-\-json @-.
+
+If this option is used more than once on the same command line, the additional
+data pieces will be concatenated to the previous before sending.
+
+The headers this option sets can be overridden with \-\-header as usual.
+
+--json can be used several times in a command line
+
+Examples:
+.nf
+ curl --json '{ "drink": "coffe" }' https://example.com
+ curl --json '{ "drink":' --json ' "coffe" }' https://example.com
+ curl --json @prepared https://example.com
+ curl --json @- https://example.com < json.txt
+.fi
+
+See also \fI--data-binary\fP and \fI--data-raw\fP. This option is mutually exclusive to \fI-F, --form\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP. Added in 7.82.0.
.IP "\-j, \-\-junk-session-cookies"
(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 are closed down.
+Providing --junk-session-cookies multiple times has no extra effect.
+Disable it again with --no-junk-session-cookies.
+
Example:
.nf
curl --junk-session-cookies -b cookies.txt https://example.com
@@ -1911,11 +2143,15 @@ See also \fI-b, --cookie\fP and \fI-c, --cookie-jar\fP.
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 \fI\-\-no-keepalive\fP is used.
+TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more).
+Keepalives are used by the TCP stack to detect broken networks on idle
+connections. The number of missed keepalive probes before declaring the
+connection down is OS dependent and is commonly 9 or 10. This option has no
+effect if \-\-no-keepalive is used.
+
+If unspecified, the option defaults to 60 seconds.
-If this option is used several times, the last one will be used. If
-unspecified, the option defaults to 60 seconds.
+If --keepalive-time is provided several times, the last set value will be used.
Example:
.nf
@@ -1924,10 +2160,10 @@ Example:
See also \fI--no-keepalive\fP and \fI-m, --max-time\fP.
.IP "\-\-key-type <type>"
-(TLS) Private key file type. Specify which type your \fI\-\-key\fP provided private key
+(TLS) Private key file type. Specify which type your \-\-key provided private key
is. DER, PEM, and ENG are supported. If not specified, PEM is assumed.
-If this option is used several times, the last one will be used.
+If --key-type is provided several times, the last set value will be used.
Example:
.nf
@@ -1938,16 +2174,21 @@ See also \fI--key\fP.
.IP "\-\-key <key>"
(TLS 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:
-\&\(aq~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
+\(aq~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
If curl is built against OpenSSL library, and the engine pkcs11 is available,
then a PKCS#11 URI (RFC 7512) can be used to specify a private key located in a
PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a
-PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI\-\-engine\fP option will be set
-as "pkcs11" if none was provided and the \fI\-\-key-type\fP option will be set as
-"ENG" if none was provided.
+PKCS#11 URI. If a PKCS#11 URI is provided, then the \-\-engine option will be set
+as "pkcs11" if none was provided and the \-\-key-type option will be set as
+\(dqENG" if none was provided.
-If this option is used several times, the last one will be used.
+If curl is built against Secure Transport or Schannel then this option is
+ignored for TLS protocols (HTTPS, etc). Those backends expect the private key
+to be already present in the keychain or PKCS#12 file containing the
+certificate.
+
+If --key is provided several times, the last set value will be used.
Example:
.nf
@@ -1957,10 +2198,10 @@ Example:
See also \fI--key-type\fP and \fI-E, --cert\fP.
.IP "\-\-krb <level>"
(FTP) Enable Kerberos authentication and use. The level must be entered and should
-be one of \(aqclear', 'safe', 'confidential', or 'private'. Should you use a
-level that is not one of these, \(aqprivate' will instead be used.
+be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a
+level that is not one of these, 'private' will instead be used.
-If this option is used several times, the last one will be used.
+If --krb is provided several times, the last set value will be used.
Example:
.nf
@@ -1976,8 +2217,7 @@ of what your command-line operation does!
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
-If this option is used several times, the last given file name will be
-used.
+If --libcurl is provided several times, the last set value will be used.
Example:
.nf
@@ -1992,18 +2232,18 @@ 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 \(aqk' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
-megabytes, while \(aqg' or 'G' makes it gigabytes. The suffixes (k, M, G, T, P)
+Appending 'k' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
+megabytes, while 'g' or 'G' makes it gigabytes. The suffixes (k, M, G, T, P)
are 1024 based. For example 1k is 1024. Examples: 200K, 3m and 1G.
The rate limiting logic works on averaging the transfer speed to no more than
the set threshold over a period of multiple seconds.
-If you also use the \fI\-Y, \-\-speed-limit\fP option, that option will take precedence and
+If you also use the \-\-speed-limit option, that option will take precedence and
might cripple the rate-limiting slightly, to help keeping the speed-limit
logic working.
-If this option is used several times, the last one will be used.
+If --limit-rate is provided several times, the last set value will be used.
Examples:
.nf
@@ -2030,9 +2270,12 @@ 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\fP, this option can be used to send a UIDL
-command instead, so the user may use the email\(aqs unique identifier rather than
+command instead, so the user may use the email's unique identifier rather than
its message-id to make the request.
+Providing --list-only multiple times has no extra effect.
+Disable it again with --no-list-only.
+
Example:
.nf
curl --list-only ftp://example.com/dir/
@@ -2045,6 +2288,8 @@ for the connection(s). Note that port numbers by nature are a scarce resource
that will be busy at times so setting this range to something too narrow might
cause unnecessary connection setup failures.
+If --local-port is provided several times, the last set value will be used.
+
Example:
.nf
curl --local-port 1000-3000 https://example.com
@@ -2057,6 +2302,9 @@ the site may redirect to. This may or may not introduce a security breach if
the site redirects you to a site to which you will send your authentication
info (which is plaintext in the case of HTTP Basic authentication).
+Providing --location-trusted multiple times has no extra effect.
+Disable it again with --no-location-trusted.
+
Example:
.nf
curl --location-trusted -u user:password https://example.com
@@ -2067,12 +2315,12 @@ See also \fI-u, --user\fP.
(HTTP) 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
-\fI\-i, \-\-include\fP or \fI\-I, \-\-head\fP, headers from all requested pages will be shown. When
+\-\-include or \fI\-I, \-\-head\fP, 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 will not be able to
-intercept the user+password. See also \fI\-\-location-trusted\fP on how to change
+intercept the user+password. See also \-\-location-trusted on how to change
this. You can limit the amount of redirects to follow by using the
-\fI\-\-max-redirs\fP option.
+\-\-max-redirs option.
When curl follows a redirect and if the request is a POST, it will send the
following request with a GET if the HTTP response was 301, 302, or 303. If the
@@ -2080,11 +2328,14 @@ 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 POST requests to GET after a 30x response by
-using the dedicated options for that: \fI\-\-post301\fP, \fI\-\-post302\fP and \fI\-\-post303\fP.
+using the dedicated options for that: \fI\-\-post301\fP, \-\-post302 and \fI\-\-post303\fP.
-The method set with \fI\-X, \-\-request\fP overrides the method curl would otherwise select
+The method set with \-\-request overrides the method curl would otherwise select
to use.
+Providing --location multiple times has no extra effect.
+Disable it again with --no-location.
+
Example:
.nf
curl -L https://example.com
@@ -2092,14 +2343,14 @@ Example:
See also \fI--resolve\fP and \fI--alt-svc\fP.
.IP "\-\-login-options <options>"
-(IMAP POP3 SMTP) Specify the login options to use during server authentication.
+(IMAP LDAP POP3 SMTP) Specify the login options to use during server authentication.
You can use 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 login options please see RFC
2384, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt
-If this option is used several times, the last one will be used.
+If --login-options is provided several times, the last set value will be used.
Example:
.nf
@@ -2112,6 +2363,8 @@ See also \fI-u, --user\fP. Added in 7.34.0.
address (identity) of a submitted message that is being relayed to another
server.
+If --mail-auth is provided several times, the last set value will be used.
+
Example:
.nf
curl --mail-auth user@example.come -T mail smtp://example.com/
@@ -2121,6 +2374,8 @@ See also \fI--mail-rcpt\fP and \fI--mail-from\fP.
.IP "\-\-mail-from <address>"
(SMTP) Specify a single address that the given mail should get sent from.
+If --mail-from is provided several times, the last set value will be used.
+
Example:
.nf
curl --mail-from user@example.com -T mail smtp://example.com/
@@ -2132,7 +2387,7 @@ See also \fI--mail-rcpt\fP and \fI--mail-auth\fP.
conversation if at least one of the recipients causes RCPT TO command to
return an error.
-The default behavior can be changed by passing \fI\-\-mail-rcpt-allowfails\fP
+The default behavior can be changed by passing \-\-mail-rcpt-allowfails
command-line option which will make curl ignore errors and proceed with the
remaining valid recipients.
@@ -2140,6 +2395,9 @@ If all recipients trigger RCPT TO failures and this flag is specified, curl
will still abort the SMTP conversation and return the error received from to
the last RCPT TO command.
+Providing --mail-rcpt-allowfails multiple times has no extra effect.
+Disable it again with --no-mail-rcpt-allowfails.
+
Example:
.nf
curl --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com
@@ -2158,6 +2416,8 @@ 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)
+--mail-rcpt can be used several times in a command line
+
Example:
.nf
curl --mail-rcpt user@example.net smtp://example.com
@@ -2167,6 +2427,9 @@ See also \fI--mail-rcpt-allowfails\fP.
.IP "\-M, \-\-manual"
Manual. Display the huge help text.
+Providing --manual multiple times has no extra effect.
+Disable it again with --no-manual.
+
Example:
.nf
curl --manual
@@ -2178,13 +2441,15 @@ See also \fI-v, --verbose\fP, \fI--libcurl\fP and \fI--trace\fP.
requested is larger than this value, the transfer will not start and curl will
return with exit code 63.
-A size modifier may be used. For example, Appending \(aqk' or 'K' will count the
-number as kilobytes, \(aqm' or 'M' makes it megabytes, while 'g' or 'G' makes it
+A size modifier may be used. For example, 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. (Added in 7.58.0)
\fBNOTE\fP: 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.
+If --max-filesize is provided several times, the last set value will be used.
+
Example:
.nf
curl --max-filesize 100K https://example.com
@@ -2192,11 +2457,11 @@ Example:
See also \fI--limit-rate\fP.
.IP "\-\-max-redirs <num>"
-(HTTP) Set maximum number of redirections to follow. When \fI\-L, \-\-location\fP is used, to
+(HTTP) Set maximum number of redirections to follow. When \-\-location is used, to
prevent curl from following too many redirects, by default, the limit is
set to 50 redirects. Set this option to \-1 to make it unlimited.
-If this option is used several times, the last one will be used.
+If --max-redirs is provided several times, the last set value will be used.
Example:
.nf
@@ -2205,13 +2470,17 @@ Example:
See also \fI-L, --location\fP.
.IP "\-m, \-\-max-time <fractional seconds>"
-Maximum time in seconds that you allow the whole operation to take. This is
+Maximum time in seconds that you allow each transfer 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.
-If this option is used several times, the last one will be used.
+If you enable retrying the transfer (\fI\-\-retry\fP) then the maximum time counter is
+reset each time the transfer is retried. You can use \-\-retry-max-time to limit
+the retry time.
+
+If --max-time is provided several times, the last set value will be used.
Examples:
.nf
@@ -2219,11 +2488,13 @@ Examples:
curl --max-time 2.92 https://example.com
.fi
-See also \fI--connect-timeout\fP.
+See also \fI--connect-timeout\fP and \fI--retry-max-time\fP.
.IP "\-\-metalink"
This option was previously used to specify a metalink resource. Metalink
support has been disabled in curl since 7.78.0 for security reasons.
+If --metalink is provided several times, the last set value will be used.
+
Example:
.nf
curl --metalink file https://example.com
@@ -2234,14 +2505,16 @@ See also \fI-Z, --parallel\fP.
(HTTP) Enables Negotiate (SPNEGO) authentication.
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 or SPNEGO.
+\-\-version to see if your curl supports GSS-API/SSPI or SPNEGO.
-When using this option, you must also provide a fake \fI\-u, \-\-user\fP option to activate
-the authentication code properly. Sending a \(aq-u :' is enough as the user name
-and password from the \fI\-u, \-\-user\fP option are not actually used.
+When using this option, you must also provide a fake \-\-user option to activate
+the authentication code properly. Sending a '-u :' is enough as the user name
+and password from the \-\-user option are not actually used.
If this option is used several times, only the first one is used.
+Providing --negotiate multiple times has no extra effect.
+
Example:
.nf
curl --negotiate -u : https://example.com
@@ -2251,29 +2524,33 @@ See also \fI--basic\fP, \fI--ntlm\fP, \fI--anyauth\fP and \fI--proxy-negotiate\f
.IP "\-\-netrc-file <filename>"
This option is similar to \fI\-n, \-\-netrc\fP, except that you provide the path (absolute
or relative) to the netrc file that curl should use. You can only specify one
-netrc file per invocation. If several \fI\-\-netrc-file\fP options are provided,
-the last one will be used.
+netrc file per invocation.
+
+It will abide by \-\-netrc-optional if specified.
-It will abide by \fI\-\-netrc-optional\fP if specified.
+If --netrc-file is provided several times, the last set value will be used.
Example:
.nf
curl --netrc-file netrc https://example.com
.fi
-See also \fI-n, --netrc\fP, \fI-u, --user\fP and \fI-K, --config\fP. This option overrides \fI-n, --netrc\fP.
+See also \fI-n, --netrc\fP, \fI-u, --user\fP and \fI-K, --config\fP. This option is mutually exclusive to \fI-n, --netrc\fP.
.IP "\-\-netrc-optional"
Similar to \fI\-n, \-\-netrc\fP, but this option makes the .netrc usage \fBoptional\fP
-and not mandatory as the \fI\-n, \-\-netrc\fP option does.
+and not mandatory as the \-\-netrc option does.
+
+Providing --netrc-optional multiple times has no extra effect.
+Disable it again with --no-netrc-optional.
Example:
.nf
curl --netrc-optional https://example.com
.fi
-See also \fI--netrc-file\fP. This option overrides \fI-n, --netrc\fP.
+See also \fI--netrc-file\fP. This option is mutually exclusive to \fI-n, --netrc\fP.
.IP "\-n, \-\-netrc"
-Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user\(aqs home
+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
\fInetrc(5)\fP and \fIftp(1)\fP for details on the file format. Curl will not
@@ -2282,13 +2559,17 @@ neither world- nor group-readable). The environment variable "HOME" is used
to find the home directory.
A quick and simple example of how to setup a \fI.netrc\fP to allow curl to FTP to
-the machine host.domain.com with user name \&\(aqmyself' and password \&'secret'
+the machine host.domain.com with user name 'myself' and password 'secret'
could look similar to:
.nf
machine host.domain.com
login myself
- password secret"
+ password secret
+.fi
+
+Providing --netrc multiple times has no extra effect.
+Disable it again with --no-netrc.
Example:
.nf
@@ -2302,17 +2583,17 @@ 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.
-\fI\-:, \-\-next\fP will reset all local options and only global ones will have their
-values survive over to the operation following the \fI\-:, \-\-next\fP instruction. Global
-options include \fI\-v, \-\-verbose\fP, \fI\-\-trace\fP, \fI\-\-trace-ascii\fP and \fI\-\-fail-early\fP.
+\-\-next will reset all local options and only global ones will have their
+values survive over to the operation following the \-\-next instruction. Global
+options include \fI\-v, \-\-verbose\fP, \fI\-\-trace\fP, \-\-trace-ascii and \fI\-\-fail-early\fP.
For example, you can do both a GET and a POST in a single command line:
.nf
-.nf
curl www1.example.com \-\-next \-d postthis www2.example.com
.fi
-.fi
+
+--next can be used several times in a command line
Examples:
.nf
@@ -2326,6 +2607,9 @@ See also \fI-Z, --parallel\fP and \fI-K, --config\fP. Added in 7.36.0.
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.
+Providing --no-alpn multiple times has no extra effect.
+Disable it again with --alpn.
+
Example:
.nf
curl --no-alpn https://example.com
@@ -2338,8 +2622,8 @@ will use a standard buffered output stream that will have the effect that it
will output the data in chunks, not necessarily exactly when the data arrives.
Using this option will disable that buffering.
-Note that this is the negated option name documented. You can thus use
-\-\-buffer to enforce the buffering.
+Providing --no-buffer multiple times has no extra effect.
+Disable it again with --buffer.
Example:
.nf
@@ -2347,6 +2631,26 @@ Example:
.fi
See also \fI-#, --progress-bar\fP.
+.IP "\-\-no-clobber"
+When used in conjunction with the \fI\-o, \-\-output\fP, \fI\-J, \-\-remote-header-name\fP,
+\fI\-O, \-\-remote-name\fP, or \-\-remote-name-all options, curl avoids overwriting files
+that already exist. Instead, a dot and a number gets appended to the name
+of the file that would be created, up to filename.100 after which it will not
+create any file.
+
+Note that this is the negated option name documented. You can thus use
+\-\-clobber to enforce the clobbering, even if \-\-remote-header-name or \-J is
+specified.
+
+Providing --no-clobber multiple times has no extra effect.
+Disable it again with --clobber.
+
+Example:
+.nf
+ curl --no-clobber --output local/dir/file https://example.com
+.fi
+
+See also \fI-o, --output\fP and \fI-O, --remote-name\fP. Added in 7.83.0.
.IP "\-\-no-keepalive"
Disables the use of keepalive messages on the TCP connection. curl otherwise
enables them by default.
@@ -2354,6 +2658,9 @@ enables them by default.
Note that this is the negated option name documented. You can thus use
\-\-keepalive to enforce keepalive.
+Providing --no-keepalive multiple times has no extra effect.
+Disable it again with --keepalive.
+
Example:
.nf
curl --no-keepalive https://example.com
@@ -2361,10 +2668,15 @@ Example:
See also \fI--keepalive-time\fP.
.IP "\-\-no-npn"
-(HTTPS) Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
+(HTTPS) In curl 7.86.0 and later, curl never uses 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.
+Providing --no-npn multiple times has no extra effect.
+Disable it again with --npn.
+
Example:
.nf
curl --no-npn https://example.com
@@ -2373,11 +2685,14 @@ Example:
See also \fI--no-alpn\fP and \fI--http2\fP. \fI--no-npn\fP requires that the underlying libcurl was built to support TLS. Added in 7.36.0.
.IP "\-\-no-progress-meter"
Option to switch off the progress meter output without muting or otherwise
-affecting warning and informational messages like \fI\-s, \-\-silent\fP does.
+affecting warning and informational messages like \-\-silent does.
Note that this is the negated option name documented. You can thus use
\-\-progress-meter to enable the progress meter again.
+Providing --no-progress-meter multiple times has no extra effect.
+Disable it again with --progress-meter.
+
Example:
.nf
curl --no-progress-meter -o store https://example.com
@@ -2385,7 +2700,7 @@ Example:
See also \fI-v, --verbose\fP and \fI-s, --silent\fP. Added in 7.67.0.
.IP "\-\-no-sessionid"
-(TLS) Disable curl\(aqs use of SSL session-ID caching. By default all transfers are
+(TLS) Disable curl's use of SSL session-ID caching. By default all transfers are
done using the cache. Note that while nothing should ever 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
@@ -2394,6 +2709,9 @@ you to succeed.
Note that this is the negated option name documented. You can thus use
\-\-sessionid to enforce session-ID caching.
+Providing --no-sessionid multiple times has no extra effect.
+Disable it again with --sessionid.
+
Example:
.nf
curl --no-sessionid https://example.com
@@ -2409,8 +2727,10 @@ example, local.com would match local.com, local.com:80, and www.local.com, but
not www.notlocal.com.
Since 7.53.0, This option overrides the environment variables that disable the
-proxy (\(aqno_proxy' and 'NO_PROXY'). If there's an environment variable
-disabling a proxy, you can set the noproxy list to \&"" to override it.
+proxy ('no_proxy' and 'NO_PROXY'). If there's an environment variable
+disabling a proxy, you can set the noproxy list to "" to override it.
+
+If --noproxy is provided several times, the last set value will be used.
Example:
.nf
@@ -2419,9 +2739,11 @@ Example:
See also \fI-x, --proxy\fP.
.IP "\-\-ntlm-wb"
-(HTTP) Enables NTLM much in the style \fI\-\-ntlm\fP does, but hand over the authentication
+(HTTP) Enables NTLM much in the style \-\-ntlm does, but hand over the authentication
to the separate binary ntlmauth application that is executed when needed.
+Providing --ntlm-wb multiple times has no extra effect.
+
Example:
.nf
curl --ntlm-wb -u user:password https://example.com
@@ -2441,20 +2763,22 @@ If you want to enable NTLM for your proxy authentication, then use
If this option is used several times, only the first one is used.
+Providing --ntlm multiple times has no extra effect.
+
Example:
.nf
curl --ntlm -u user:password https://example.com
.fi
-See also \fI--proxy-ntlm\fP. \fI--ntlm\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI--basic\fP and \fI--negotiate\fP and \fI--digest\fP and \fI--anyauth\fP.
+See also \fI--proxy-ntlm\fP. \fI--ntlm\fP requires that the underlying libcurl was built to support TLS. This option is mutually exclusive to \fI--basic\fP and \fI--negotiate\fP and \fI--digest\fP and \fI--anyauth\fP.
.IP "\-\-oauth2-bearer <token>"
-(IMAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token
+(IMAP LDAP POP3 SMTP HTTP) 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 \-\-url or \-\-user 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.
+If --oauth2-bearer is provided several times, the last set value will be used.
Example:
.nf
@@ -2463,18 +2787,16 @@ Example:
See also \fI--basic\fP, \fI--ntlm\fP and \fI--digest\fP. Added in 7.33.0.
.IP "\-\-output-dir <dir>"
-
This option specifies the directory in which files should be stored, when
-\fI\-O, \-\-remote-name\fP or \fI\-o, \-\-output\fP are used.
+\-\-remote-name or \-\-output are used.
The given output directory is used for all URLs and output options on the
command line, up until the first \fI\-:, \-\-next\fP.
If the specified target directory does not exist, the operation will fail
-unless \fI\-\-create-dirs\fP is also used.
+unless \-\-create-dirs is also used.
-If this option is used multiple times, the last specified directory will be
-used.
+If --output-dir is provided several times, the last set value will be used.
Example:
.nf
@@ -2484,7 +2806,7 @@ Example:
See also \fI-O, --remote-name\fP and \fI-J, --remote-header-name\fP. Added in 7.73.0.
.IP "\-o, \-\-output <file>"
Write output to <file> instead of stdout. If you are using {} or [] to fetch
-multiple documents, you should quote the URL and you can use \(aq#' followed by a
+multiple documents, you should quote the URL and you can use '#' followed by a
number in the <file> specifier. That variable will be replaced with the current
string for the URL being fetched. Like in:
@@ -2514,8 +2836,8 @@ written as
curl example.com example.net \-o aa \-o bb
.fi
-See also the \fI\-\-create-dirs\fP option to create the local directories
-dynamically. Specifying the output as \(aq-' (a single dash) will force the
+See also the \-\-create-dirs option to create the local directories
+dynamically. Specifying the output as '-' (a single dash) will force the
output to be done to stdout.
To suppress response bodies, you can redirect output to /dev/null:
@@ -2528,6 +2850,9 @@ Or for Windows use nul:
.nf
curl example.com \-o nul
+.fi
+
+--output can be used several times in a command line
Examples:
.nf
@@ -2547,6 +2872,9 @@ connection.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
+Providing --parallel-immediate multiple times has no extra effect.
+Disable it again with --no-parallel-immediate.
+
Example:
.nf
curl --parallel-immediate -Z https://example.com -o file1 https://example.com -o file2
@@ -2562,6 +2890,8 @@ This option is global and does not need to be specified for each use of
The default is 50.
+If --parallel-max is provided several times, the last set value will be used.
+
Example:
.nf
curl --parallel-max 100 -Z https://example.com ftp://example.com/
@@ -2575,6 +2905,9 @@ manner.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
+Providing --parallel multiple times has no extra effect.
+Disable it again with --no-parallel.
+
Example:
.nf
curl --parallel https://example.com -o file1 https://example.com -o file2
@@ -2584,7 +2917,7 @@ See also \fI-:, --next\fP and \fI-v, --verbose\fP. Added in 7.66.0.
.IP "\-\-pass <phrase>"
(SSH TLS) Passphrase for the private key.
-If this option is used several times, the last one will be used.
+If --pass is provided several times, the last set value will be used.
Example:
.nf
@@ -2597,6 +2930,9 @@ Tell curl to not handle sequences of /../ or /./ in the given URL
path. Normally curl will squash or merge them according to standards but with
this option set you tell it not to do that.
+Providing --path-as-is multiple times has no extra effect.
+Disable it again with --no-path-as-is.
+
Example:
.nf
curl --path-as-is https://example.com/../../etc/passwd
@@ -2630,7 +2966,7 @@ sha256 support:
Other SSL backends not supported.
-If this option is used several times, the last one will be used.
+If --pinnedpubkey is provided several times, the last set value will be used.
Examples:
.nf
@@ -2646,6 +2982,9 @@ in web browsers, so curl 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 using \fI\-L, \-\-location\fP.
+Providing --post301 multiple times has no extra effect.
+Disable it again with --no-post301.
+
Example:
.nf
curl --post301 --location -d "data" https://example.com
@@ -2659,6 +2998,9 @@ in web browsers, so curl 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 using \fI\-L, \-\-location\fP.
+Providing --post302 multiple times has no extra effect.
+Disable it again with --no-post302.
+
Example:
.nf
curl --post302 --location -d "data" https://example.com
@@ -2671,6 +3013,9 @@ requests when following 303 redirections. A server may require a POST to
remain a POST after a 303 redirection. This option is meaningful only when
using \fI\-L, \-\-location\fP.
+Providing --post303 multiple times has no extra effect.
+Disable it again with --no-post303.
+
Example:
.nf
curl --post303 --location -d "data" https://example.com
@@ -2694,7 +3039,7 @@ 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.
-If this option is used several times, the last one will be used.
+If --preproxy is provided several times, the last set value will be used.
Example:
.nf
@@ -2706,7 +3051,7 @@ See also \fI-x, --proxy\fP and \fI--socks5\fP. Added in 7.52.0.
Make curl display transfer progress as a simple progress bar instead of the
standard, more informational, meter.
-This progress bar draws a single line of \(aq#' characters across the screen and
+This progress bar draws a single line of '#' characters across the screen and
shows a percentage if the transfer size is known. For transfers without a
known size, there will be space ship (-=o=-) that moves back and forth but
only while data is being transferred, with a set of flying hash sign symbols on
@@ -2715,6 +3060,9 @@ top.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
+Providing --progress-bar multiple times has no extra effect.
+Disable it again with --no-progress-bar.
+
Example:
.nf
curl -# -O https://example.com
@@ -2730,7 +3078,9 @@ An unknown or unsupported protocol causes error
This option does not change the default proxy protocol (http).
Without this option set, curl guesses protocol based on the host name, see
-\fI\-\-url\fP for details.
+\-\-url for details.
+
+If --proto-default is provided several times, the last set value will be used.
Example:
.nf
@@ -2740,7 +3090,7 @@ Example:
See also \fI--proto\fP and \fI--proto-redir\fP. Added in 7.45.0.
.IP "\-\-proto-redir <protocols>"
Tells curl to limit what protocols it may use on redirect. Protocols denied by
-\fI\-\-proto\fP are not overridden by this option. See \-\-proto for how protocols are
+\-\-proto are not overridden by this option. See \-\-proto for how protocols are
represented.
Example, allow only HTTP and HTTPS on redirect:
@@ -2753,6 +3103,8 @@ By default curl will only allow HTTP, HTTPS, FTP and FTPS on redirect (since
7.65.2). Specifying \fIall\fP or \fI+all\fP enables all protocols on redirects, which
is not good for security.
+If --proto-redir is provided several times, the last set value will be used.
+
Example:
.nf
curl --proto-redir =http,https https://example.com
@@ -2762,7 +3114,7 @@ See also \fI--proto\fP.
.IP "\-\-proto <protocols>"
Tells curl to limit what protocols it may use for transfers. Protocols are
evaluated left to right, are comma separated, and are each a protocol name or
-\&\(aqall', optionally prefixed by zero or more modifiers. Available modifiers are:
+\(aqall', optionally prefixed by zero or more modifiers. Available modifiers are:
.RS
.TP 3
.B +
@@ -2791,13 +3143,15 @@ only enables http and https
also only enables http and https
.RE
.IP
-Unknown protocols produce a warning. This allows scripts to safely rely on
-being able to disable potentially dangerous protocols, without relying upon
-support for that protocol being built into curl to avoid an error.
+Unknown and disabled protocols produce a warning. This allows scripts to
+safely rely on being able to disable potentially dangerous protocols, without
+relying upon support for that protocol being built into curl to avoid an error.
This option can be used multiple times, in which case the effect is the same
as concatenating the protocols into one instance of the option.
+If --proto is provided several times, the last set value will be used.
+
Example:
.nf
curl --proto =http,https,sftp https://example.com
@@ -2808,6 +3162,8 @@ See also \fI--proto-redir\fP and \fI--proto-default\fP.
Tells curl to pick a suitable authentication method when communicating with
the given HTTP proxy. This might cause an extra request/response round-trip.
+Providing --proxy-anyauth multiple times has no extra effect.
+
Example:
.nf
curl --proxy-anyauth --proxy-user user:passwd -x proxy https://example.com
@@ -2816,9 +3172,11 @@ Example:
See also \fI-x, --proxy\fP, \fI--proxy-basic\fP and \fI--proxy-digest\fP.
.IP "\-\-proxy-basic"
Tells curl to use HTTP Basic authentication when communicating with the given
-proxy. Use \fI\-\-basic\fP for enabling HTTP Basic with a remote host. Basic is the
+proxy. Use \-\-basic for enabling HTTP Basic with a remote host. Basic is the
default authentication method curl uses with proxies.
+Providing --proxy-basic multiple times has no extra effect.
+
Example:
.nf
curl --proxy-basic --proxy-user user:passwd -x proxy https://example.com
@@ -2826,7 +3184,9 @@ Example:
See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-digest\fP.
.IP "\-\-proxy-cacert <file>"
-Same as \fI\-\-cacert\fP but used in HTTPS proxy context.
+Same as \-\-cacert but used in HTTPS proxy context.
+
+If --proxy-cacert is provided several times, the last set value will be used.
Example:
.nf
@@ -2835,7 +3195,9 @@ Example:
See also \fI--proxy-capath\fP, \fI--cacert\fP, \fI--capath\fP and \fI-x, --proxy\fP. Added in 7.52.0.
.IP "\-\-proxy-capath <dir>"
-Same as \fI\-\-capath\fP but used in HTTPS proxy context.
+Same as \-\-capath but used in HTTPS proxy context.
+
+If --proxy-capath is provided several times, the last set value will be used.
Example:
.nf
@@ -2844,7 +3206,9 @@ Example:
See also \fI--proxy-cacert\fP, \fI-x, --proxy\fP and \fI--capath\fP. Added in 7.52.0.
.IP "\-\-proxy-cert-type <type>"
-Same as \fI\-\-cert-type\fP but used in HTTPS proxy context.
+Same as \-\-cert-type but used in HTTPS proxy context.
+
+If --proxy-cert-type is provided several times, the last set value will be used.
Example:
.nf
@@ -2853,7 +3217,9 @@ Example:
See also \fI--proxy-cert\fP. Added in 7.52.0.
.IP "\-\-proxy-cert <cert[:passwd]>"
-Same as \fI\-E, \-\-cert\fP but used in HTTPS proxy context.
+Same as \-\-cert but used in HTTPS proxy context.
+
+If --proxy-cert is provided several times, the last set value will be used.
Example:
.nf
@@ -2862,7 +3228,9 @@ Example:
See also \fI--proxy-cert-type\fP. Added in 7.52.0.
.IP "\-\-proxy-ciphers <list>"
-Same as \fI\-\-ciphers\fP but used in HTTPS proxy context.
+Same as \-\-ciphers but used in HTTPS proxy context.
+
+If --proxy-ciphers is provided several times, the last set value will be used.
Example:
.nf
@@ -2871,7 +3239,9 @@ Example:
See also \fI--ciphers\fP, \fI--curves\fP and \fI-x, --proxy\fP. Added in 7.52.0.
.IP "\-\-proxy-crlfile <file>"
-Same as \fI\-\-crlfile\fP but used in HTTPS proxy context.
+Same as \-\-crlfile but used in HTTPS proxy context.
+
+If --proxy-crlfile is provided several times, the last set value will be used.
Example:
.nf
@@ -2881,7 +3251,9 @@ Example:
See also \fI--crlfile\fP and \fI-x, --proxy\fP. Added in 7.52.0.
.IP "\-\-proxy-digest"
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.
+proxy. Use \-\-digest for enabling HTTP Digest with a remote host.
+
+Providing --proxy-digest multiple times has no extra effect.
Example:
.nf
@@ -2891,7 +3263,7 @@ Example:
See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-basic\fP.
.IP "\-\-proxy-header <header/@file>"
(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
+specify any number of extra headers. This is the equivalent option to \-\-header
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.
@@ -2909,6 +3281,8 @@ read the header file from stdin.
This option can be used multiple times to add/replace/remove multiple headers.
+--proxy-header can be used several times in a command line
+
Examples:
.nf
curl --proxy-header "X-First-Name: Joe" -x http://proxy https://example.com
@@ -2918,7 +3292,10 @@ Examples:
See also \fI-x, --proxy\fP. Added in 7.37.0.
.IP "\-\-proxy-insecure"
-Same as \fI\-k, \-\-insecure\fP but used in HTTPS proxy context.
+Same as \-\-insecure but used in HTTPS proxy context.
+
+Providing --proxy-insecure multiple times has no extra effect.
+Disable it again with --no-proxy-insecure.
Example:
.nf
@@ -2927,7 +3304,9 @@ Example:
See also \fI-x, --proxy\fP and \fI-k, --insecure\fP. Added in 7.52.0.
.IP "\-\-proxy-key-type <type>"
-Same as \fI\-\-key-type\fP but used in HTTPS proxy context.
+Same as \-\-key-type but used in HTTPS proxy context.
+
+If --proxy-key-type is provided several times, the last set value will be used.
Example:
.nf
@@ -2936,7 +3315,9 @@ Example:
See also \fI--proxy-key\fP and \fI-x, --proxy\fP. Added in 7.52.0.
.IP "\-\-proxy-key <key>"
-Same as \fI\-\-key\fP but used in HTTPS proxy context.
+Same as \-\-key but used in HTTPS proxy context.
+
+If --proxy-key is provided several times, the last set value will be used.
Example:
.nf
@@ -2946,9 +3327,11 @@ Example:
See also \fI--proxy-key-type\fP and \fI-x, --proxy\fP. Added in 7.52.0.
.IP "\-\-proxy-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 the given proxy. Use \-\-negotiate for enabling HTTP Negotiate (SPNEGO)
with a remote host.
+Providing --proxy-negotiate multiple times has no extra effect.
+
Example:
.nf
curl --proxy-negotiate --proxy-user user:passwd -x proxy https://example.com
@@ -2957,7 +3340,9 @@ Example:
See also \fI--proxy-anyauth\fP and \fI--proxy-basic\fP.
.IP "\-\-proxy-ntlm"
Tells curl to use HTTP NTLM authentication when communicating with the given
-proxy. Use \fI\-\-ntlm\fP for enabling NTLM with a remote host.
+proxy. Use \-\-ntlm for enabling NTLM with a remote host.
+
+Providing --proxy-ntlm multiple times has no extra effect.
Example:
.nf
@@ -2966,7 +3351,9 @@ Example:
See also \fI--proxy-negotiate\fP and \fI--proxy-anyauth\fP.
.IP "\-\-proxy-pass <phrase>"
-Same as \fI\-\-pass\fP but used in HTTPS proxy context.
+Same as \-\-pass but used in HTTPS proxy context.
+
+If --proxy-pass is provided several times, the last set value will be used.
Example:
.nf
@@ -2985,7 +3372,7 @@ 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.
-If this option is used several times, the last one will be used.
+If --proxy-pinnedpubkey is provided several times, the last set value will be used.
Examples:
.nf
@@ -2997,6 +3384,8 @@ See also \fI--pinnedpubkey\fP and \fI-x, --proxy\fP. Added in 7.59.0.
.IP "\-\-proxy-service-name <name>"
This option allows you to change the service name for proxy negotiation.
+If --proxy-service-name is provided several times, the last set value will be used.
+
Example:
.nf
curl --proxy-service-name "shrubbery" -x proxy https://example.com
@@ -3004,7 +3393,10 @@ Example:
See also \fI--service-name\fP and \fI-x, --proxy\fP. Added in 7.43.0.
.IP "\-\-proxy-ssl-allow-beast"
-Same as \fI\-\-ssl-allow-beast\fP but used in HTTPS proxy context.
+Same as \-\-ssl-allow-beast but used in HTTPS proxy context.
+
+Providing --proxy-ssl-allow-beast multiple times has no extra effect.
+Disable it again with --no-proxy-ssl-allow-beast.
Example:
.nf
@@ -3013,7 +3405,10 @@ Example:
See also \fI--ssl-allow-beast\fP and \fI-x, --proxy\fP. Added in 7.52.0.
.IP "\-\-proxy-ssl-auto-client-cert"
-Same as \fI\-\-ssl-auto-client-cert\fP but used in HTTPS proxy context.
+Same as \-\-ssl-auto-client-cert but used in HTTPS proxy context.
+
+Providing --proxy-ssl-auto-client-cert multiple times has no extra effect.
+Disable it again with --no-proxy-ssl-auto-client-cert.
Example:
.nf
@@ -3032,9 +3427,9 @@ ciphers. Read up on TLS 1.3 cipher suite details on this URL:
This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
-cipher suites by using the \fI\-\-proxy-ciphers\fP option.
+cipher suites by using the \-\-proxy-ciphers option.
-If this option is used several times, the last one will be used.
+If --proxy-tls13-ciphers is provided several times, the last set value will be used.
Example:
.nf
@@ -3043,7 +3438,9 @@ Example:
See also \fI--tls13-ciphers\fP and \fI--curves\fP. Added in 7.61.0.
.IP "\-\-proxy-tlsauthtype <type>"
-Same as \fI\-\-tlsauthtype\fP but used in HTTPS proxy context.
+Same as \-\-tlsauthtype but used in HTTPS proxy context.
+
+If --proxy-tlsauthtype is provided several times, the last set value will be used.
Example:
.nf
@@ -3052,7 +3449,9 @@ Example:
See also \fI-x, --proxy\fP and \fI--proxy-tlsuser\fP. Added in 7.52.0.
.IP "\-\-proxy-tlspassword <string>"
-Same as \fI\-\-tlspassword\fP but used in HTTPS proxy context.
+Same as \-\-tlspassword but used in HTTPS proxy context.
+
+If --proxy-tlspassword is provided several times, the last set value will be used.
Example:
.nf
@@ -3061,7 +3460,9 @@ Example:
See also \fI-x, --proxy\fP and \fI--proxy-tlsuser\fP. Added in 7.52.0.
.IP "\-\-proxy-tlsuser <name>"
-Same as \fI\-\-tlsuser\fP but used in HTTPS proxy context.
+Same as \-\-tlsuser but used in HTTPS proxy context.
+
+If --proxy-tlsuser is provided several times, the last set value will be used.
Example:
.nf
@@ -3070,7 +3471,9 @@ Example:
See also \fI-x, --proxy\fP and \fI--proxy-tlspassword\fP. Added in 7.52.0.
.IP "\-\-proxy-tlsv1"
-Same as \fI\-1, \-\-tlsv1\fP but used in HTTPS proxy context.
+Same as \-\-tlsv1 but used in HTTPS proxy context.
+
+Providing --proxy-tlsv1 multiple times has no extra effect.
Example:
.nf
@@ -3091,7 +3494,7 @@ getting seen by other users on the same system as they will still be visible
for a moment before cleared. Such sensitive data should be retrieved from a
file instead or similar and never used in clear text in a command line.
-If this option is used several times, the last one will be used.
+If --proxy-user is provided several times, the last set value will be used.
Example:
.nf
@@ -3107,6 +3510,9 @@ specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://,
socks5:// or socks5h:// to request a specific SOCKS version to be used.
+Unix domain sockets are supported for socks proxy. Set localhost for the host
+part. e.g. socks5h://localhost/path/to/socket.sock
+
HTTPS proxy support via https:// protocol prefix was added in 7.52.0 for
OpenSSL, GnuTLS and NSS.
@@ -3117,13 +3523,13 @@ 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\(aqs an environment variable setting a proxy, you can set proxy to
-\&"" to override it.
+use. If there's an environment variable setting a proxy, you can set proxy to
+\(dq" to override it.
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 \fI\-p, \-\-proxytunnel\fP option.
+one with the \-\-proxytunnel option.
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
@@ -3133,7 +3539,7 @@ The proxy host can be specified the same way as the proxy environment
variables, including the protocol prefix (http://) and the embedded user +
password.
-If this option is used several times, the last one will be used.
+If --proxy is provided several times, the last set value will be used.
Example:
.nf
@@ -3149,6 +3555,8 @@ The only difference between this and the HTTP proxy option \fI\-x, \-\-proxy\fP,
attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol
instead of the default HTTP 1.1.
+Providing --proxy1.0 multiple times has no extra effect.
+
Example:
.nf
curl --proxy1.0 -x http://proxy https://example.com
@@ -3164,6 +3572,9 @@ wants to tunnel through to.
To suppress proxy CONNECT response headers when curl is set to output headers
use \fI\-\-suppress-connect-headers\fP.
+Providing --proxytunnel multiple times has no extra effect.
+Disable it again with --no-proxytunnel.
+
Example:
.nf
curl --proxytunnel -x http://proxy https://example.com
@@ -3174,13 +3585,13 @@ See also \fI-x, --proxy\fP.
(SFTP SCP) Public key file name. Allows you to provide your public key in this 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.)
+If --pubkey is provided several times, the last set value will be used.
+
Example:
.nf
curl --pubkey file.pub sftp://example.com/
@@ -3191,10 +3602,13 @@ See also \fI--pass\fP.
(FTP SFTP) Send an arbitrary command to the remote FTP or SFTP server. Quote commands are
sent BEFORE the transfer takes place (just after the initial PWD command in an
FTP transfer, to be exact). To make commands take place after a successful
-transfer, prefix them with a dash \(aq-'. To make commands be sent after curl
-has changed the working directory, just before the transfer command(s), prefix
-the command with a \(aq+' (this is only supported for FTP). You may specify any
-number of commands.
+transfer, prefix them with a dash '-'.
+
+(FTP only) To make commands be sent after curl has changed the working
+directory, just before the file transfer command(s), prefix the command with a
+\(aq+'. This is not performed when a directory listing is performed.
+
+You may specify any number of commands.
By default curl will stop at first failure. To make curl continue even if the
command fails, prefix the command with an asterisk (*). Otherwise, if the
@@ -3249,6 +3663,8 @@ operand, provided it is empty.
See ln.
.RE
+--quote can be used several times in a command line
+
Example:
.nf
curl --quote "DELE file" ftp://example.com/foo
@@ -3256,9 +3672,13 @@ Example:
See also \fI-X, --request\fP.
.IP "\-\-random-file <file>"
+Deprecated option. This option is ignored by curl since 7.84.0. Prior to that
+it only had an effect on curl if built to use old versions of OpenSSL.
+
Specify the path name to file containing what will be considered as random
-data. The data may be used to seed the random engine for SSL connections. See
-also the \fI\-\-egd-file\fP option.
+data. The data may be used to seed the random engine for SSL connections.
+
+If --random-file is provided several times, the last set value will be used.
Example:
.nf
@@ -3294,20 +3714,20 @@ specifies two separate 100-byte ranges(*) (HTTP)
response, which will be returned as-is by curl! Parsing or otherwise
transforming this response is the responsibility of the caller.
-Only digit characters (0-9) are valid in the \(aqstart' and 'stop' fields of the
-\&\(aqstart-stop' range syntax. If a non-digit character is given in the range,
-the server\(aqs response will be unspecified, depending on the server's
+Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
+\(aqstart-stop' range syntax. If a non-digit character is given in the range,
+the server's response will be unspecified, depending on the server's
configuration.
You should also be aware that many HTTP/1.1 servers do not have this feature
enabled, so that when you attempt to get a range, you will instead get the
whole document.
-FTP and SFTP range downloads only support the simple \(aqstart-stop' syntax
+FTP and SFTP range downloads only support the simple 'start-stop' syntax
(optionally with one of the numbers omitted). FTP use depends on the extended
FTP command SIZE.
-If this option is used several times, the last one will be used.
+If --range is provided several times, the last set value will be used.
Example:
.nf
@@ -3315,10 +3735,46 @@ Example:
.fi
See also \fI-C, --continue-at\fP and \fI-a, --append\fP.
+.IP "\-\-rate <max request rate>"
+Specify the maximum transfer frequency you allow curl to use \- in number of
+transfer starts per time unit (sometimes called request rate). Without this
+option, curl will start the next transfer as fast as possible.
+
+If given several URLs and a transfer completes faster than the allowed rate,
+curl will wait until the next transfer is started to maintain the requested
+rate. This option has no effect when \-\-parallel is used.
+
+The request rate is provided as "N/U" where N is an integer number and U is a
+time unit. Supported units are 's' (second), 'm' (minute), 'h' (hour) and 'd'
+/(day, as in a 24 hour unit). The default time unit, if no "/U" is provided,
+is number of transfers per hour.
+
+If curl is told to allow 10 requests per minute, it will not start the next
+request until 6 seconds have elapsed since the previous transfer was started.
+
+This function uses millisecond resolution. If the allowed frequency is set
+more than 1000 per second, it will instead run unrestricted.
+
+When retrying transfers, enabled with \fI\-\-retry\fP, the separate retry delay logic
+is used and not this setting.
+
+If --rate is provided several times, the last set value will be used.
+
+Examples:
+.nf
+ curl --rate 2/s https://example.com
+ curl --rate 3/h https://example.com
+ curl --rate 14/m https://example.com
+.fi
+
+See also \fI--limit-rate\fP and \fI--retry-delay\fP. Added in 7.84.0.
.IP "\-\-raw"
(HTTP) When used, it disables all internal HTTP decoding of content or transfer
encodings and instead makes them passed on unaltered, raw.
+Providing --raw multiple times has no extra effect.
+Disable it again with --no-raw.
+
Example:
.nf
curl --raw https://example.com
@@ -3327,12 +3783,12 @@ Example:
See also \fI--tr-encoding\fP.
.IP "\-e, \-\-referer <URL>"
(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 \fI\-e, \-\-referer\fP URL to make curl automatically set the previous URL
-when it follows a Location: header. The \&";auto" string can be used alone,
+with the \-\-header flag of course. When used with \-\-location you can append
+\(dq;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 do not set an initial \fI\-e, \-\-referer\fP.
-If this option is used several times, the last one will be used.
+If --referer is provided several times, the last set value will be used.
Examples:
.nf
@@ -3343,21 +3799,29 @@ Examples:
See also \fI-A, --user-agent\fP and \fI-H, --header\fP.
.IP "\-J, \-\-remote-header-name"
-(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 \-\-remote-name option to use the server-specified
+Content-Disposition filename instead of extracting a filename from the URL. If
+the server-provided file name contains a path, that will be stripped off
+before the file name is used.
+
+The file is saved in the current directory, or in the directory specified with
+\fI\-\-output-dir\fP.
If the server specifies a file name and a file with that name already exists
-in the current working directory it will not be overwritten and an error will
+in the destination directory, it will not be overwritten and an error will
occur. If the server does not specify a file name then this option has no
effect.
-There\(aqs no attempt to decode %-sequences (yet) in the provided file name, so
+There's no attempt to decode %-sequences (yet) in the provided file name, so
this option may provide you with rather unexpected file names.
\fBWARNING\fP: Exercise judicious use of this option, especially on Windows. A
rogue server could send you the name of a DLL or other file that could be
loaded automatically by Windows or some third party software.
+Providing --remote-header-name multiple times has no extra effect.
+Disable it again with --no-remote-header-name.
+
Example:
.nf
curl -OJ https://example.com/file
@@ -3366,10 +3830,13 @@ Example:
See also \fI-O, --remote-name\fP.
.IP "\-\-remote-name-all"
This option changes the default action for all given URLs to be dealt with as
-if \fI\-O, \-\-remote-name\fP were used for each one. So if you want to disable that for a
-specific URL after \fI\-\-remote-name-all\fP has been used, you must use "-o \-" or
+if \-\-remote-name were used for each one. So if you want to disable that for a
+specific URL after \-\-remote-name-all has been used, you must use "-o \-" or
\-\-no-remote-name.
+Providing --remote-name-all multiple times has no extra effect.
+Disable it again with --no-remote-name-all.
+
Example:
.nf
curl --remote-name-all ftp://example.com/file1 ftp://example.com/file2
@@ -3382,11 +3849,11 @@ part of the remote file is used, the path is cut off.)
The file will be saved in the current working directory. If you want the file
saved in a different directory, make sure you change the current working
-directory before invoking curl with this option.
+directory before invoking curl with this option or use \fI\-\-output-dir\fP.
The remote file name to use for saving is extracted from the given URL,
nothing else, and if it already exists it will be overwritten. If you want the
-server to be able to choose the file name refer to \fI\-J, \-\-remote-header-name\fP which
+server to be able to choose the file name refer to \-\-remote-header-name which
can be used in addition to this option. If the server chooses a file name and
that name already exists it will not be overwritten.
@@ -3395,29 +3862,52 @@ 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.
+--remote-name can be used several times in a command line
+
Example:
.nf
curl -O https://example.com/filename
.fi
-See also \fI--remote-name-all\fP.
+See also \fI--remote-name-all\fP, \fI--output-dir\fP and \fI-J, --remote-header-name\fP.
.IP "\-R, \-\-remote-time"
When used, this will make curl attempt to figure out the timestamp of the
remote file, and if that is available make the local file get that same
timestamp.
+Providing --remote-time multiple times has no extra effect.
+Disable it again with --no-remote-time.
+
Example:
.nf
curl --remote-time -o foo https://example.com
.fi
See also \fI-O, --remote-name\fP and \fI-z, --time-cond\fP.
+.IP "\-\-remove-on-error"
+When curl returns an error when told to save output in a local file, this
+option removes that saved file before exiting. This prevents curl from
+leaving a partial file in the case of an error during transfer.
+
+If the output is not a file, this option has no effect.
+
+Providing --remove-on-error multiple times has no extra effect.
+Disable it again with --no-remove-on-error.
+
+Example:
+.nf
+ curl --remove-on-error -o output https://example.com
+.fi
+
+See also \fI-f, --fail\fP. Added in 7.83.0.
.IP "\-\-request-target <path>"
(HTTP) Tells curl to use an alternative "target" (path) instead of using the path as
provided in the URL. Particularly useful when wanting to issue HTTP requests
without leading slash or other data that does not follow the regular URL
pattern, like "OPTIONS *".
+If --request-target is provided several times, the last set value will be used.
+
Example:
.nf
curl --request-target "*" -X OPTIONS https://example.com
@@ -3437,10 +3927,10 @@ requests are rather invoked by using dedicated command line options.
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 \fI\-I, \-\-head\fP option.
+request, using \-X HEAD will not suffice. You need to use the \-\-head option.
-The method string you set with \fI\-X, \-\-request\fP will be used for all requests, which
-if you for example use \fI\-L, \-\-location\fP may cause unintended side-effects when curl
+The method string you set with \-\-request will be used for all requests, which
+if you for example use \-\-location may cause unintended side-effects when curl
does not change request method according to the HTTP 30x response codes \- and
similar.
@@ -3458,7 +3948,7 @@ 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.
+If --request is provided several times, the last set value will be used.
Examples:
.nf
@@ -3476,14 +3966,14 @@ the number used for the specific protocol the host will be used for. It means
you need several entries if you want to provide address for the same host but
different ports.
-By specifying \(aq*' as host you can tell curl to resolve any host and specific
-port pair to the specified address. Wildcard is resolved last so any \fI\-\-resolve\fP
+By specifying '*' as host you can tell curl to resolve any host and specific
+port pair to the specified address. Wildcard is resolved last so any \-\-resolve
with a specific host and port will be used first.
-The provided address set by this option will be used even if \fI\-4, \-\-ipv4\fP or \fI\-6, \-\-ipv6\fP
+The provided address set by this option will be used even if \-\-ipv4 or \-\-ipv6
is set to make curl use another IP version.
-By prefixing the host with a \(aq+' you can make the entry time out after curl's
+By prefixing the host with a '+' you can make the entry time out after curl's
default timeout (1 minute). Note that this will only make sense for long
running parallel transfers with a lot of files. In such cases, if this option
is used curl will try to resolve the host as it normally would once the
@@ -3495,10 +3985,12 @@ Support for providing multiple IP addresses per entry was added in 7.59.0.
Support for resolving with wildcard was added in 7.64.0.
-Support for the \(aq+' prefix was was added in 7.75.0.
+Support for the '+' prefix was was added in 7.75.0.
This option can be used many times to add many host names to resolve.
+--resolve can be used several times in a command line
+
Example:
.nf
curl --resolve example.com:443:127.0.0.1 https://example.com
@@ -3510,7 +4002,7 @@ Retry on any error. This option is used together with \fI\-\-retry\fP.
This option is the "sledgehammer" of retrying. Do not use this option by
default (eg in curlrc), there may be unintended consequences such as sending or
-receiving duplicate data. Do not use with redirected input or output. You\(aqd be
+receiving duplicate data. Do not use with redirected input or output. You'd be
much better off handling your unique problems in shell script. Please read the
example below.
@@ -3526,11 +4018,14 @@ duplicate data.
By default curl will not error on an HTTP response code that indicates an HTTP
error, if the transfer was successful. For example, if a server replies 404
Not Found and the reply is fully received then that is not an error. When
-\fI\-\-retry\fP is used then curl will retry on some HTTP response codes that indicate
+\-\-retry is used then curl will retry on some HTTP response codes that indicate
transient HTTP errors, but that does not include most 4xx response codes such
as 404. If you want to retry on all response codes that indicate HTTP errors
(4xx and 5xx) then combine with \fI\-f, \-\-fail\fP.
+Providing --retry-all-errors multiple times has no extra effect.
+Disable it again with --no-retry-all-errors.
+
Example:
.nf
curl --retry 5 --retry-all-errors https://example.com
@@ -3541,6 +4036,9 @@ See also \fI--retry\fP. Added in 7.71.0.
In addition to the other conditions, consider ECONNREFUSED as a transient
error too for \fI\-\-retry\fP. This option is used together with \-\-retry.
+Providing --retry-connrefused multiple times has no extra effect.
+Disable it again with --no-retry-connrefused.
+
Example:
.nf
curl --retry-connrefused --retry https://example.com
@@ -3550,10 +4048,10 @@ See also \fI--retry\fP and \fI--retry-all-errors\fP. Added in 7.52.0.
.IP "\-\-retry-delay <seconds>"
Make curl sleep this amount of time before each retry when a transfer has
failed with a transient error (it changes the default backoff time algorithm
-between retries). This option is only interesting if \fI\-\-retry\fP is also
+between retries). This option is only interesting if \-\-retry is also
used. Setting this delay to zero will make curl use the default backoff time.
-If this option is used several times, the last one will be used.
+If --retry-delay is provided several times, the last set value will be used.
Example:
.nf
@@ -3566,10 +4064,10 @@ The retry timer is reset before the first transfer attempt. Retries will be
done as usual (see \fI\-\-retry\fP) as long as the timer has not reached this given
limit. Notice that if the timer has not reached the limit, the request will be
made and while performing, it may take longer than this given time period. To
-limit a single request\(aqs maximum time, use \fI\-m, \-\-max-time\fP. Set this option to
+limit a single request's maximum time, use \fI\-m, \-\-max-time\fP. Set this option to
zero to not timeout retries.
-If this option is used several times, the last one will be used.
+If --retry-max-time is provided several times, the last set value will be used.
Example:
.nf
@@ -3587,13 +4085,13 @@ response code.
When curl is about to retry a transfer, it will first wait one second and then
for all forthcoming retries it will double the waiting time until it reaches
10 minutes which then will be the delay between the rest of the retries. By
-using \fI\-\-retry-delay\fP you disable this exponential backoff algorithm. See also
-\fI\-\-retry-max-time\fP to limit the total time allowed for retries.
+using \-\-retry-delay you disable this exponential backoff algorithm. See also
+\-\-retry-max-time to limit the total time allowed for retries.
Since curl 7.66.0, curl will comply with the Retry-After: response header if
one was present to know when to issue the next retry.
-If this option is used several times, the last one will be used.
+If --retry is provided several times, the last set value will be used.
Example:
.nf
@@ -3602,14 +4100,16 @@ Example:
See also \fI--retry-max-time\fP.
.IP "\-\-sasl-authzid <identity>"
-Use this authorisation identity (authzid), during SASL PLAIN authentication,
+Use this authorization identity (authzid), during SASL PLAIN authentication,
in addition to the authentication identity (authcid) as specified by \fI\-u, \-\-user\fP.
If the option is not specified, the server will derive the authzid from the
authcid, but if specified, and depending on the server implementation, it may
-be used to access another user\(aqs inbox, that the user has been granted access
+be used to access another user's inbox, that the user has been granted access
to, or a shared mailbox for example.
+If --sasl-authzid is provided several times, the last set value will be used.
+
Example:
.nf
curl --sasl-authzid zid imap://example.com/
@@ -3619,6 +4119,9 @@ See also \fI--login-options\fP. Added in 7.66.0.
.IP "\-\-sasl-ir"
Enable initial response in SASL authentication.
+Providing --sasl-ir multiple times has no extra effect.
+Disable it again with --no-sasl-ir.
+
Example:
.nf
curl --sasl-ir imap://example.com/
@@ -3628,7 +4131,9 @@ See also \fI--sasl-authzid\fP. Added in 7.31.0.
.IP "\-\-service-name <name>"
This option allows you to change the service name for SPNEGO.
-Examples: \fI\-\-negotiate\fP \fI\-\-service-name\fP sockd would use sockd/server-name.
+Examples: \fI\-\-negotiate\fP \-\-service-name sockd would use sockd/server-name.
+
+If --service-name is provided several times, the last set value will be used.
Example:
.nf
@@ -3642,6 +4147,9 @@ When used with \fI\-s, \-\-silent\fP, it makes curl show an error message if it
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
+Providing --show-error multiple times has no extra effect.
+Disable it again with --no-show-error.
+
Example:
.nf
curl --show-error --silent https://example.com
@@ -3653,9 +4161,12 @@ Silent or quiet mode. Do not show progress meter or error messages. Makes Curl
mute. It will still output the data you ask for, potentially even to the
terminal/stdout unless you redirect it.
-Use \fI\-S, \-\-show-error\fP in addition to this option to disable progress meter but
+Use \-\-show-error in addition to this option to disable progress meter but
still show error messages.
+Providing --silent multiple times has no extra effect.
+Disable it again with --no-silent.
+
Example:
.nf
curl -s https://example.com
@@ -3667,17 +4178,20 @@ Use the specified SOCKS4 proxy. If the port number is not specified, it is
assumed at port 1080. Using this socket type make curl resolve the host name
and passing the address on to the proxy.
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks4://localhost/path/to/socket.sock
+
This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
exclusive.
-This option is superfluous since you can specify a socks4 proxy with \fI\-x, \-\-proxy\fP
+This option is superfluous since you can specify a socks4 proxy with \-\-proxy
using a socks4:// protocol prefix.
-Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
-\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
+Since 7.52.0, \-\-preproxy can be used to specify a SOCKS proxy at the same time
+\-\-proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-If this option is used several times, the last one will be used.
+If --socks4 is provided several times, the last set value will be used.
Example:
.nf
@@ -3689,17 +4203,20 @@ See also \fI--socks4a\fP, \fI--socks5\fP and \fI--socks5-hostname\fP.
Use the specified SOCKS4a proxy. If the port number is not specified, it is
assumed at port 1080. This asks the proxy to resolve the host name.
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks4a://localhost/path/to/socket.sock
+
This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
exclusive.
-This option is superfluous since you can specify a socks4a proxy with \fI\-x, \-\-proxy\fP
+This option is superfluous since you can specify a socks4a proxy with \-\-proxy
using a socks4a:// protocol prefix.
-Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
-\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
+Since 7.52.0, \-\-preproxy can be used to specify a SOCKS proxy at the same time
+\-\-proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-If this option is used several times, the last one will be used.
+If --socks4a is provided several times, the last set value will be used.
Example:
.nf
@@ -3710,7 +4227,9 @@ See also \fI--socks4\fP, \fI--socks5\fP and \fI--socks5-hostname\fP.
.IP "\-\-socks5-basic"
Tells curl to use username/password authentication when connecting to a SOCKS5
proxy. The username/password authentication is enabled by default. Use
-\fI\-\-socks5-gssapi\fP to force GSS-API authentication to SOCKS5 proxies.
+\-\-socks5-gssapi to force GSS-API authentication to SOCKS5 proxies.
+
+Providing --socks5-basic multiple times has no extra effect.
Example:
.nf
@@ -3721,9 +4240,12 @@ See also \fI--socks5\fP. Added in 7.55.0.
.IP "\-\-socks5-gssapi-nec"
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
+implementation does not. The option \-\-socks5-gssapi-nec allows the
unprotected exchange of the protection mode negotiation.
+Providing --socks5-gssapi-nec multiple times has no extra effect.
+Disable it again with --no-socks5-gssapi-nec.
+
Example:
.nf
curl --socks5-gssapi-nec --socks5 hostname:4096 https://example.com
@@ -3734,11 +4256,13 @@ See also \fI--socks5\fP.
The default service name for a socks server is rcmd/server-fqdn. This option
allows you to change it.
-Examples: \fI\-\-socks5\fP proxy-name \fI\-\-socks5-gssapi-service\fP sockd would use
-sockd/proxy-name \fI\-\-socks5\fP proxy-name \fI\-\-socks5-gssapi-service\fP sockd/real-name
+Examples: \-\-socks5 proxy-name \-\-socks5-gssapi-service sockd would use
+sockd/proxy-name \-\-socks5 proxy-name \-\-socks5-gssapi-service sockd/real-name
would use sockd/real-name for cases where the proxy-name does not match the
principal name.
+If --socks5-gssapi-service is provided several times, the last set value will be used.
+
Example:
.nf
curl --socks5-gssapi-service sockd --socks5 hostname:4096 https://example.com
@@ -3748,9 +4272,12 @@ See also \fI--socks5\fP.
.IP "\-\-socks5-gssapi"
Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy.
The GSS-API authentication is enabled by default (if curl is compiled with
-GSS-API support). Use \fI\-\-socks5-basic\fP to force username/password authentication
+GSS-API support). Use \-\-socks5-basic to force username/password authentication
to SOCKS5 proxies.
+Providing --socks5-gssapi multiple times has no extra effect.
+Disable it again with --no-socks5-gssapi.
+
Example:
.nf
curl --socks5-gssapi --socks5 hostname:4096 https://example.com
@@ -3761,17 +4288,20 @@ See also \fI--socks5\fP. Added in 7.55.0.
Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
the port number is not specified, it is assumed at port 1080.
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks5h://localhost/path/to/socket.sock
+
This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
exclusive.
This option is superfluous since you can specify a socks5 hostname proxy with
-\fI\-x, \-\-proxy\fP using a socks5h:// protocol prefix.
+\-\-proxy using a socks5h:// protocol prefix.
-Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
-\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
+Since 7.52.0, \-\-preproxy can be used to specify a SOCKS proxy at the same time
+\-\-proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-If this option is used several times, the last one will be used.
+If --socks5-hostname is provided several times, the last set value will be used.
Example:
.nf
@@ -3783,20 +4313,23 @@ See also \fI--socks5\fP and \fI--socks4a\fP.
Use the specified SOCKS5 proxy \- but resolve the host name locally. If the
port number is not specified, it is assumed at port 1080.
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks5://localhost/path/to/socket.sock
+
This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
exclusive.
-This option is superfluous since you can specify a socks5 proxy with \fI\-x, \-\-proxy\fP
+This option is superfluous since you can specify a socks5 proxy with \-\-proxy
using a socks5:// protocol prefix.
-Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
-\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
+Since 7.52.0, \-\-preproxy can be used to specify a SOCKS proxy at the same time
+\-\-proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-If this option is used several times, the last one will be used.
-
This option (as well as \fI\-\-socks4\fP) does not work with IPV6, FTPS or LDAP.
+If --socks5 is provided several times, the last set value will be used.
+
Example:
.nf
curl --socks5 proxy.example:7000 https://example.com
@@ -3804,11 +4337,11 @@ Example:
See also \fI--socks5-hostname\fP and \fI--socks4a\fP.
.IP "\-Y, \-\-speed-limit <speed>"
-If a download is slower than this given speed (in bytes per second) for
-speed-time seconds it gets aborted. speed-time is set with \fI\-y, \-\-speed-time\fP and is
+If a transfer is slower than this given speed (in bytes per second) for
+speed-time seconds it gets aborted. speed-time is set with \-\-speed-time and is
30 if not set.
-If this option is used several times, the last one will be used.
+If --speed-limit is provided several times, the last set value will be used.
Example:
.nf
@@ -3817,14 +4350,14 @@ Example:
See also \fI-y, --speed-time\fP, \fI--limit-rate\fP and \fI-m, --max-time\fP.
.IP "\-y, \-\-speed-time <seconds>"
-If a download is slower than speed-limit bytes per second during a speed-time
-period, the download gets aborted. If speed-time is used, the default
+If a transfer runs slower than speed-limit bytes per second during a speed-time
+period, the transfer is aborted. If speed-time is used, the default
speed-limit will be 1 unless set with \fI\-Y, \-\-speed-limit\fP.
-This option controls transfers and thus will not affect slow connects etc. If
-this is a concern for you, try the \fI\-\-connect-timeout\fP option.
+This option controls transfers (in both directions) but will not affect slow
+connects etc. If this is a concern for you, try the \-\-connect-timeout option.
-If this option is used several times, the last one will be used.
+If --speed-time is provided several times, the last set value will be used.
Example:
.nf
@@ -3841,6 +4374,9 @@ SSL implementations.
\fBWARNING\fP: this option loosens the SSL security, and by using this flag you
ask for exactly that.
+Providing --ssl-allow-beast multiple times has no extra effect.
+Disable it again with --no-ssl-allow-beast.
+
Example:
.nf
curl --ssl-allow-beast https://example.com
@@ -3855,6 +4391,9 @@ default behavior in libcurl with Schannel. Since the server can request any
certificate that supports client authentication in the OS certificate store it
could be a privacy violation and unexpected.
+Providing --ssl-auto-client-cert multiple times has no extra effect.
+Disable it again with --no-ssl-auto-client-cert.
+
Example:
.nf
curl --ssl-auto-client-cert https://example.com
@@ -3866,6 +4405,9 @@ See also \fI--proxy-ssl-auto-client-cert\fP. Added in 7.77.0.
WARNING: this option loosens the SSL security, and by using this flag you ask
for exactly that.
+Providing --ssl-no-revoke multiple times has no extra effect.
+Disable it again with --no-ssl-no-revoke.
+
Example:
.nf
curl --ssl-no-revoke https://example.com
@@ -3877,11 +4419,14 @@ See also \fI--crlfile\fP. Added in 7.44.0.
does not support SSL/TLS.
This option is handled in LDAP since version 7.81.0. It is fully supported
-by the openldap backend and rejected by the generic ldap backend if explicit
+by the OpenLDAP backend and rejected by the generic ldap backend if explicit
TLS is required.
This option was formerly known as \-\-ftp-ssl-reqd.
+Providing --ssl-reqd multiple times has no extra effect.
+Disable it again with --no-ssl-reqd.
+
Example:
.nf
curl --ssl-reqd ftp://example.com
@@ -3893,6 +4438,9 @@ See also \fI--ssl\fP and \fI-k, --insecure\fP.
they failed due to missing/offline distribution points for the revocation check
lists.
+Providing --ssl-revoke-best-effort multiple times has no extra effect.
+Disable it again with --no-ssl-revoke-best-effort.
+
Example:
.nf
curl --ssl-revoke-best-effort https://example.com
@@ -3900,12 +4448,15 @@ Example:
See also \fI--crlfile\fP and \fI-k, --insecure\fP. Added in 7.70.0.
.IP "\-\-ssl"
-(FTP IMAP POP3 SMTP LDAP) Try to use SSL/TLS for the connection. Reverts to a non-secure connection if
-the server does not support SSL/TLS. See also \fI\-\-ftp-ssl-control\fP and \fI\-\-ssl-reqd\fP
+(FTP IMAP POP3 SMTP LDAP) Warning: this is considered an insecure option. Consider using \-\-ssl-reqd
+instead to be sure curl upgrades to a secure connection.
+
+Try to use SSL/TLS for the connection. Reverts to a non-secure connection if
+the server does not support SSL/TLS. See also \-\-ftp-ssl-control and \-\-ssl-reqd
for different levels of encryption required.
This option is handled in LDAP since version 7.81.0. It is fully supported
-by the openldap backend and ignored by the generic ldap backend.
+by the OpenLDAP backend and ignored by the generic ldap backend.
Please note that a server may close the connection if the negotiation does
not succeed.
@@ -3913,42 +4464,49 @@ not succeed.
This option was formerly known as \-\-ftp-ssl. That option
name can still be used but will be removed in a future version.
+Providing --ssl multiple times has no extra effect.
+Disable it again with --no-ssl.
+
Example:
.nf
curl --ssl pop3://example.com/
.fi
-See also \fI-k, --insecure\fP and \fI--ciphers\fP.
+See also \fI--ssl-reqd\fP, \fI-k, --insecure\fP and \fI--ciphers\fP.
.IP "\-2, \-\-sslv2"
(SSL) This option previously asked curl to use SSLv2, but starting in curl 7.77.0
this instruction is ignored. SSLv2 is widely considered insecure (see RFC
6176).
+Providing --sslv2 multiple times has no extra effect.
+
Example:
.nf
curl --sslv2 https://example.com
.fi
-See also \fI--http1.1\fP and \fI--http2\fP. \fI-2, --sslv2\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI-3, --sslv3\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. \fI-2, --sslv2\fP requires that the underlying libcurl was built to support TLS. This option is mutually exclusive to \fI-3, --sslv3\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
.IP "\-3, \-\-sslv3"
(SSL) This option previously asked curl to use SSLv3, but starting in curl 7.77.0
this instruction is ignored. SSLv3 is widely considered insecure (see RFC
7568).
+Providing --sslv3 multiple times has no extra effect.
+
Example:
.nf
curl --sslv3 https://example.com
.fi
-See also \fI--http1.1\fP and \fI--http2\fP. \fI-3, --sslv3\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI-2, --sslv2\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. \fI-3, --sslv3\fP requires that the underlying libcurl was built to support TLS. This option is mutually exclusive to \fI-2, --sslv2\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
.IP "\-\-stderr <file>"
Redirect all writes to stderr to the specified file instead. If the file name
-is a plain \(aq-', it is instead written to stdout.
+is a plain '-', it is instead written to stdout.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
-If this option is used several times, the last one will be used.
+If --stderr is provided several times, the last set value will be used.
Example:
.nf
@@ -3963,6 +4521,9 @@ terminal. Use \-\-no-styled-output to switch them off.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
+Providing --styled-output multiple times has no extra effect.
+Disable it again with --no-styled-output.
+
Example:
.nf
curl --styled-output -I https://example.com
@@ -3970,10 +4531,13 @@ Example:
See also \fI-I, --head\fP and \fI-v, --verbose\fP. Added in 7.61.0.
.IP "\-\-suppress-connect-headers"
-When \fI\-p, \-\-proxytunnel\fP is used and a CONNECT request is made do not output proxy
-CONNECT response headers. This option is meant to be used with \fI\-D, \-\-dump-header\fP or
-\fI\-i, \-\-include\fP which are used to show protocol headers in the output. It has no
-effect on debug options such as \fI\-v, \-\-verbose\fP or \fI\-\-trace\fP, or any statistics.
+When \-\-proxytunnel is used and a CONNECT request is made do not output proxy
+CONNECT response headers. This option is meant to be used with \-\-dump-header or
+\-\-include which are used to show protocol headers in the output. It has no
+effect on debug options such as \-\-verbose or \fI\-\-trace\fP, or any statistics.
+
+Providing --suppress-connect-headers multiple times has no extra effect.
+Disable it again with --no-suppress-connect-headers.
Example:
.nf
@@ -3984,6 +4548,9 @@ See also \fI-D, --dump-header\fP, \fI-i, --include\fP and \fI-p, --proxytunnel\f
.IP "\-\-tcp-fastopen"
Enable use of TCP Fast Open (RFC7413).
+Providing --tcp-fastopen multiple times has no extra effect.
+Disable it again with --no-tcp-fastopen.
+
Example:
.nf
curl --tcp-fastopen https://example.com
@@ -3997,6 +4564,9 @@ details about this option.
Since 7.50.2, curl sets this option by default and you need to explicitly
switch it off if you do not want it on.
+Providing --tcp-nodelay multiple times has no extra effect.
+Disable it again with --no-tcp-nodelay.
+
Example:
.nf
curl --tcp-nodelay https://example.com
@@ -4012,6 +4582,8 @@ XDISPLOC=<X display> Sets the X display location.
NEW_ENV=<var,val> Sets an environment variable.
+--telnet-option can be used several times in a command line
+
Example:
.nf
curl -t TTYPE=vt100 telnet://example.com/
@@ -4023,7 +4595,7 @@ See also \fI-K, --config\fP.
try to use when transferring data to or from a TFTP server. By default 512
bytes will be used.
-If this option is used several times, the last one will be used.
+If --tftp-blksize is provided several times, the last set value will be used.
Example:
.nf
@@ -4035,9 +4607,12 @@ See also \fI--tftp-no-options\fP.
(TFTP) Tells curl not to send TFTP options requests.
This option improves interop with some legacy servers that do not acknowledge
-or properly implement TFTP options. When this option is used \fI\-\-tftp-blksize\fP is
+or properly implement TFTP options. When this option is used \-\-tftp-blksize is
ignored.
+Providing --tftp-no-options multiple times has no extra effect.
+Disable it again with --no-tftp-no-options.
+
Example:
.nf
curl --tftp-no-options tftp://192.168.0.1/
@@ -4055,7 +4630,7 @@ 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.
-If this option is used several times, the last one will be used.
+If --time-cond is provided several times, the last set value will be used.
Examples:
.nf
@@ -4085,6 +4660,8 @@ Use up to TLSv1.2.
Use up to TLSv1.3.
.RE
+If --tls-max is provided several times, the last set value will be used.
+
Examples:
.nf
curl --tls-max 1.2 https://example.com
@@ -4103,9 +4680,9 @@ cipher suite details on this URL:
This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
-cipher suites by using the \fI\-\-ciphers\fP option.
+cipher suites by using the \-\-ciphers option.
-If this option is used several times, the last one will be used.
+If --tls13-ciphers is provided several times, the last set value will be used.
Example:
.nf
@@ -4115,11 +4692,13 @@ Example:
See also \fI--ciphers\fP and \fI--curves\fP. Added in 7.61.0.
.IP "\-\-tlsauthtype <type>"
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". This option works
+for TLS-SRP (RFC 5054). If \-\-tlsuser and \-\-tlspassword are specified but
+\-\-tlsauthtype is not, then this option defaults to "SRP". This option works
only if the underlying libcurl is built with TLS-SRP support, which requires
OpenSSL or GnuTLS with TLS-SRP support.
+If --tlsauthtype is provided several times, the last set value will be used.
+
Example:
.nf
curl --tlsauthtype SRP https://example.com
@@ -4128,10 +4707,12 @@ Example:
See also \fI--tlsuser\fP.
.IP "\-\-tlspassword <string>"
Set password for use with the TLS authentication method specified with
-\fI\-\-tlsauthtype\fP. Requires that \fI\-\-tlsuser\fP also be set.
+\fI\-\-tlsauthtype\fP. Requires that \-\-tlsuser also be set.
This option does not work with TLS 1.3.
+If --tlspassword is provided several times, the last set value will be used.
+
Example:
.nf
curl --tlspassword pwd --tlsuser user https://example.com
@@ -4140,10 +4721,12 @@ Example:
See also \fI--tlsuser\fP.
.IP "\-\-tlsuser <name>"
Set username for use with the TLS authentication method specified with
-\fI\-\-tlsauthtype\fP. Requires that \fI\-\-tlspassword\fP also is set.
+\fI\-\-tlsauthtype\fP. Requires that \-\-tlspassword also is set.
This option does not work with TLS 1.3.
+If --tlsuser is provided several times, the last set value will be used.
+
Example:
.nf
curl --tlspassword pwd --tlsuser user https://example.com
@@ -4154,9 +4737,11 @@ See also \fI--tlspassword\fP.
(TLS) Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.
In old versions of curl this option was documented to allow _only_ TLS 1.0.
-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
+That behavior was inconsistent depending on the TLS library. Use \-\-tls-max if
you want to set a maximum TLS version.
+Providing --tlsv1.0 multiple times has no extra effect.
+
Example:
.nf
curl --tlsv1.0 https://example.com
@@ -4167,28 +4752,32 @@ See also \fI--tlsv1.3\fP. Added in 7.34.0.
(TLS) Forces curl to use TLS version 1.1 or later when connecting to a remote TLS server.
In old versions of curl this option was documented to allow _only_ TLS 1.1.
-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
+That behavior was inconsistent depending on the TLS library. Use \-\-tls-max if
you want to set a maximum TLS version.
+Providing --tlsv1.1 multiple times has no extra effect.
+
Example:
.nf
curl --tlsv1.1 https://example.com
.fi
-See also \fI--tlsv1.3\fP. Added in 7.34.0.
+See also \fI--tlsv1.3\fP and \fI--tls-max\fP. Added in 7.34.0.
.IP "\-\-tlsv1.2"
(TLS) Forces curl to use TLS version 1.2 or later when connecting to a remote TLS server.
In old versions of curl this option was documented to allow _only_ TLS 1.2.
-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
+That behavior was inconsistent depending on the TLS library. Use \-\-tls-max if
you want to set a maximum TLS version.
+Providing --tlsv1.2 multiple times has no extra effect.
+
Example:
.nf
curl --tlsv1.2 https://example.com
.fi
-See also \fI--tlsv1.3\fP. Added in 7.34.0.
+See also \fI--tlsv1.3\fP and \fI--tls-max\fP. Added in 7.34.0.
.IP "\-\-tlsv1.3"
(TLS) Forces curl to use TLS version 1.3 or later when connecting to a remote TLS
server.
@@ -4198,26 +4787,33 @@ includes QUIC-using (HTTP/3) transfers.
Note that TLS 1.3 is not supported by all TLS backends.
+Providing --tlsv1.3 multiple times has no extra effect.
+
Example:
.nf
curl --tlsv1.3 https://example.com
.fi
-See also \fI--tlsv1.2\fP. Added in 7.52.0.
+See also \fI--tlsv1.2\fP and \fI--tls-max\fP. Added in 7.52.0.
.IP "\-1, \-\-tlsv1"
(SSL) Tells curl to use at least TLS version 1.x when negotiating with a remote TLS
server. That means TLS version 1.0 or higher
+Providing --tlsv1 multiple times has no extra effect.
+
Example:
.nf
curl --tlsv1 https://example.com
.fi
-See also \fI--http1.1\fP and \fI--http2\fP. \fI-1, --tlsv1\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI--tlsv1.1\fP and \fI--tlsv1.2\fP and \fI--tlsv1.3\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. \fI-1, --tlsv1\fP requires that the underlying libcurl was built to support TLS. This option is mutually exclusive to \fI--tlsv1.1\fP and \fI--tlsv1.2\fP and \fI--tlsv1.3\fP.
.IP "\-\-tr-encoding"
(HTTP) Request a compressed Transfer-Encoding response using one of the algorithms
curl supports, and uncompress the data while receiving it.
+Providing --tr-encoding multiple times has no extra effect.
+Disable it again with --no-tr-encoding.
+
Example:
.nf
curl --tr-encoding https://example.com
@@ -4236,20 +4832,23 @@ for untrained humans.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
-If this option is used several times, the last one will be used.
+If --trace-ascii is provided several times, the last set value will be used.
Example:
.nf
curl --trace-ascii log.txt https://example.com
.fi
-See also \fI-v, --verbose\fP and \fI--trace\fP. This option overrides \fI--trace\fP and \fI-v, --verbose\fP.
+See also \fI-v, --verbose\fP and \fI--trace\fP. This option is mutually exclusive to \fI--trace\fP and \fI-v, --verbose\fP.
.IP "\-\-trace-time"
Prepends a time stamp to each trace or verbose line that curl displays.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
+Providing --trace-time multiple times has no extra effect.
+Disable it again with --no-trace-time.
+
Example:
.nf
curl --trace-time --trace-ascii output https://example.com
@@ -4265,17 +4864,19 @@ stderr.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
-If this option is used several times, the last one will be used.
+If --trace is provided several times, the last set value will be used.
Example:
.nf
curl --trace log.txt https://example.com
.fi
-See also \fI--trace-ascii\fP and \fI--trace-time\fP. This option overrides \fI-v, --verbose\fP and \fI--trace-ascii\fP.
+See also \fI--trace-ascii\fP and \fI--trace-time\fP. This option is mutually exclusive to \fI-v, --verbose\fP and \fI--trace-ascii\fP.
.IP "\-\-unix-socket <path>"
(HTTP) Connect through this Unix domain socket, instead of using the network.
+If --unix-socket is provided several times, the last set value will be used.
+
Example:
.nf
curl --unix-socket socket-path https://example.com
@@ -4292,12 +4893,12 @@ this is used on an HTTP(S) server, the PUT command will be used.
Use the file name "-" (a single dash) to use stdin instead of a given file.
Alternately, the file name "." (a single period) may be specified instead of
-"-" to use stdin in non-blocking mode to allow reading server output while
+\(dq-" to use stdin in non-blocking mode to allow reading server output while
stdin is being uploaded.
-You can specify one \fI\-T, \-\-upload-file\fP for each URL on the command line. Each
+You can specify one \-\-upload-file for each URL on the command line. Each
\fI\-T, \-\-upload-file\fP + URL pair specifies what to upload and to where. curl also
-supports "globbing" of the \fI\-T, \-\-upload-file\fP argument, meaning that you can upload
+supports "globbing" of the \-\-upload-file argument, meaning that you can upload
multiple files to a single URL by using the same URL globbing style supported
in the URL.
@@ -4306,6 +4907,8 @@ formatted. It has to feature the necessary set of headers and mail body
formatted correctly by the user as curl will not transcode nor encode it
further in any way.
+--upload-file can be used several times in a command line
+
Examples:
.nf
curl -T file https://example.com
@@ -4322,14 +4925,16 @@ If the given URL is missing a scheme name (such as "http://" or "ftp://" etc)
then curl will make a guess based on the host. If the outermost sub-domain
name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be
used, otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by
-setting a default protocol, see \fI\-\-proto-default\fP for details.
+setting a default protocol, see \-\-proto-default for details.
-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.
+To control where this URL is written, use the \-\-output or the \-\-remote-name
+options.
\fBWARNING\fP: On Windows, particular file:// accesses can be converted to
network accesses by the operating system. Beware!
+--url can be used several times in a command line
+
Example:
.nf
curl --url https://example.com
@@ -4341,6 +4946,9 @@ See also \fI-:, --next\fP and \fI-K, --config\fP.
ends with ";type=A". This option causes data sent to stdout to be in text mode
for win32 systems.
+Providing --use-ascii multiple times has no extra effect.
+Disable it again with --no-use-ascii.
+
Example:
.nf
curl -B ftp://example.com/README
@@ -4350,13 +4958,13 @@ See also \fI--crlf\fP and \fI--data-ascii\fP.
.IP "\-A, \-\-user-agent <name>"
(HTTP) Specify the User-Agent string to send to the HTTP server. To encode blanks in
the string, surround the string with single quote marks. This header can also
-be set with the \fI\-H, \-\-header\fP or the \fI\-\-proxy-header\fP options.
+be set with the \-\-header or the \-\-proxy-header options.
If you give an empty argument to \fI\-A, \-\-user-agent\fP (""), it will remove the header
completely from the request. If you prefer a blank header, you can set it to a
single space (" ").
-If this option is used several times, the last one will be used.
+If --user-agent is provided several times, the last set value will be used.
Example:
.nf
@@ -4366,7 +4974,7 @@ Example:
See also \fI-H, --header\fP and \fI--proxy-header\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.
+\-\-netrc and \fI\-\-netrc-optional\fP.
If you simply specify the user name, curl will prompt for a password.
@@ -4398,7 +5006,7 @@ 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.
+If --user is provided several times, the last set value will be used.
Example:
.nf
@@ -4408,28 +5016,31 @@ Example:
See also \fI-n, --netrc\fP and \fI-K, --config\fP.
.IP "\-v, \-\-verbose"
Makes curl verbose during the operation. Useful for debugging and seeing
-what\(aqs going on "under the hood". A line starting with '>' means "header data"
-sent by curl, \(aq<' means "header data" received by curl that is hidden in
-normal cases, and a line starting with \(aq*' means additional info provided by
+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.
-If you only want HTTP headers in the output, \fI\-i, \-\-include\fP might be the option
+If you only want HTTP headers in the output, \-\-include might be the option
you are looking for.
If you think this option still does not give you enough details, consider using
-\fI\-\-trace\fP or \fI\-\-trace-ascii\fP instead.
+\-\-trace or \-\-trace-ascii instead.
This option is global and does not need to be specified for each use of
\fI\-:, \-\-next\fP.
-Use \fI\-s, \-\-silent\fP to make curl really quiet.
+Use \-\-silent to make curl really quiet.
+
+Providing --verbose multiple times has no extra effect.
+Disable it again with --no-verbose.
Example:
.nf
curl --verbose https://example.com
.fi
-See also \fI-i, --include\fP. This option overrides \fI--trace\fP and \fI--trace-ascii\fP.
+See also \fI-i, --include\fP. This option is mutually exclusive to \fI--trace\fP and \fI--trace-ascii\fP.
.IP "\-V, \-\-version"
Displays information about curl and the libcurl version it uses.
@@ -4506,6 +5117,9 @@ Unix sockets support is provided.
Automatic decompression (via zstd) of compressed files over HTTP is supported.
.RE
+Providing --version multiple times has no extra effect.
+Disable it again with --no-version.
+
Example:
.nf
curl --version
@@ -4528,6 +5142,11 @@ output a newline by using \\n, a carriage return with \\r and a tab space with
The output will be written to standard output, but this can be switched to
standard error by using %{stderr}.
+Output HTTP headers from the most recent request by using \fB%header{name}\fP
+where \fBname\fP is the case insensitive name of the header (without the
+trailing colon). The header contents are exactly as sent over the network,
+with leading and trailing whitespace trimmed. Added in curl 7.84.0.
+
.B NOTE:
The %-symbol is a special symbol in the win32-environment, where all
occurrences of % must be doubled when using this option.
@@ -4546,14 +5165,23 @@ The numerical exitcode of the transfer. (Added in 7.75.0)
.TP
.B filename_effective
The ultimate filename that curl writes out to. This is only meaningful if curl
-is told to write to a file with the \fI\-O, \-\-remote-name\fP or \fI\-o, \-\-output\fP
-option. It\(aqs most useful in combination with the \fI\-J, \-\-remote-header-name\fP
+is told to write to a file with the \-\-remote-name or \-\-output
+option. It's most useful in combination with the \-\-remote-header-name
option.
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
server.
.TP
+.B header_json
+A JSON object with all HTTP response headers from the recent transfer. Values
+are provided as arrays, since in the case of multiple headers there can be
+multiple values.
+
+The header names provided in lowercase, listed in order of appearance over the
+wire. Except for duplicated headers. They are grouped on the first occurrence
+of that header, each value is presented in the JSON array.
+.TP
.B http_code
The numerical response code that was found in the last retrieved HTTP(S) or
FTP(s) transfer.
@@ -4583,9 +5211,7 @@ Number of new connects made in the recent transfer.
.TP
.B num_headers
The number of response headers in the most recent request (restarted at each
-.nf
- redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
-.fi
+redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
.TP
.B num_redirects
Number of redirects that were followed in the request.
@@ -4595,12 +5221,12 @@ The rest of the output is only shown if the transfer returned a non-zero error
(Added in 7.75.0)
.TP
.B proxy_ssl_verify_result
-The result of the HTTPS proxy\(aqs SSL peer certificate verification that was
+The result of the HTTPS proxy's SSL peer certificate verification that was
requested. 0 means the verification was successful. (Added in 7.52.0)
.TP
.B redirect_url
-When an HTTP request was made without \fI\-L, \-\-location\fP to follow redirects (or when
-\fI\-\-max-redirs\fP is met), this variable will show the actual URL a redirect
+When an HTTP request was made without \-\-location to follow redirects (or when
+\-\-max-redirs is met), this variable will show the actual URL a redirect
\fIwould\fP have gone to.
.TP
.B referer
@@ -4647,11 +5273,11 @@ The result of the SSL peer certificate verification that was requested. 0
means the verification was successful.
.TP
.B stderr
-From this point on, the \fI\-w, \-\-write-out\fP output will be written to standard
+From this point on, the \-\-write-out output will be written to standard
error. (Added in 7.63.0)
.TP
.B stdout
-From this point on, the \fI\-w, \-\-write-out\fP output will be written to standard output.
+From this point on, the \-\-write-out output will be written to standard output.
This is the default, but can be used to switch back after switching to stderr.
(Added in 7.63.0)
.TP
@@ -4698,7 +5324,8 @@ The URL that was fetched last. This is most meaningful if you have told curl
to follow location: headers.
.RE
.IP
-If this option is used several times, the last one will be used.
+
+If --write-out is provided several times, the last set value will be used.
Example:
.nf
@@ -4713,6 +5340,9 @@ 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.
+Providing --xattr multiple times has no extra effect.
+Disable it again with --no-xattr.
+
Example:
.nf
curl --xattr -o storage https://example.com
@@ -4722,14 +5352,14 @@ See also \fI-R, --remote-time\fP, \fI-w, --write-out\fP and \fI-v, --verbose\fP.
.SH FILES
.I ~/.curlrc
.RS
-Default config file, see \fI\-K, \-\-config\fP for details.
+Default config file, see \-\-config for details.
.SH ENVIRONMENT
The environment variables can be specified in lower case or upper case. The
lower case version has precedence. http_proxy is an exception as it is only
available in lower case.
Using an environment variable to set the proxy has the same effect as using
-the \fI\-x, \-\-proxy\fP option.
+the \-\-proxy option.
.IP "http_proxy [protocol://]<host>[:port]"
Sets the proxy server to use for HTTP.
@@ -4743,11 +5373,11 @@ SMTP, LDAP, etc.
Sets the proxy server to use if no protocol-specific proxy is set.
.IP "NO_PROXY <comma-separated list of hosts/domains>"
list of host names that should not go through any proxy. If set to an asterisk
-\&\(aq*' only, it matches all hosts. Each name in this list is matched as either
+\(aq*' only, it matches all hosts. Each name in this list is matched as either
a domain name which contains the hostname, or the hostname itself.
This environment variable disables use of the proxy even when specified with
-the \fI\-x, \-\-proxy\fP option. That is
+the \-\-proxy option. That is
.B NO_PROXY=direct.example.com curl \-x http://proxy.example.com
.B http://direct.example.com
accesses the target URL directly, and
@@ -4769,7 +5399,7 @@ If set, the specified number of characters will be used as the terminal width
when the alternative progress-bar is shown. If not set, curl will try to
figure it out using other ways.
.IP "CURL_CA_BUNDLE <file>"
-If set, will be used as the \fI\fI\-\-cacert\fP\fP value.
+If set, will be used as the \fI\-\-cacert\fP value.
.IP "CURL_HOME <dir>"
If set, is the first variable curl checks when trying to find its home
directory. If not set, it continues to check \fBXDG_CONFIG_HOME\fP.
@@ -4781,7 +5411,7 @@ invoked. Setting a name that is not a built-in alternative will make curl
stay with the default.
SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
-mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
+nss, openssl, rustls, schannel, secure-transport, wolfssl
.IP "HOME <dir>"
If set, this is used to find the home directory when that is needed. Like when
looking for the default .curlrc. \fBCURL_HOME\fP and \fBXDG_CONFIG_HOME\fP
@@ -4794,9 +5424,9 @@ files can become rather large. Works with both QUIC backends.
.IP SHELL
Used on VMS when trying to detect if using a DCL or a "unix" shell.
.IP "SSL_CERT_DIR <dir>"
-If set, will be used as the \fI\fI\-\-capath\fP\fP value.
+If set, will be used as the \fI\-\-capath\fP value.
.IP "SSL_CERT_FILE <path>"
-If set, will be used as the \fI\fI\-\-cacert\fP\fP value.
+If set, will be used as the \fI\-\-cacert\fP value.
.IP "SSLKEYLOGFILE <file name>"
If you set this environment variable to a file name, curl will store TLS
secrets from its connections in that file when invoked to enable you to
@@ -4806,7 +5436,7 @@ BoringSSL, GnuTLS, NSS and wolfSSL.
.IP "USERPROFILE <dir>"
On Windows, this variable is used when trying to find the home directory. If
the other, primary, variable are all unset. If set, curl will use the path
-"$USERPROFILE\\Application Data".
+\(dq$USERPROFILE\\Application Data".
.IP "XDG_CONFIG_HOME <dir>"
If \fBCURL_HOME\fP is not set, this variable is checked when looking for a
default .curlrc file.
@@ -4823,17 +5453,19 @@ Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
.IP "https://"
Makes it treated as an \fBHTTPS\fP proxy.
.IP "socks4://"
-Makes it the equivalent of \fI\-\-socks4\fP
+Makes it the equivalent of \-\-socks4
.IP "socks4a://"
-Makes it the equivalent of \fI\-\-socks4a\fP
+Makes it the equivalent of \-\-socks4a
.IP "socks5://"
-Makes it the equivalent of \fI\-\-socks5\fP
+Makes it the equivalent of \-\-socks5
.IP "socks5h://"
-Makes it the equivalent of \fI\-\-socks5-hostname\fP
+Makes it the equivalent of \-\-socks5-hostname
.SH EXIT CODES
There are a bunch of different error codes and their corresponding error
messages that may appear under error conditions. At the time of this writing,
the exit codes are:
+.IP 0
+Success. The operation completed successfully according to the instructions.
.IP 1
Unsupported protocol. This build of curl has no support for this protocol.
.IP 2
@@ -4885,9 +5517,9 @@ failed.
.IP 21
FTP quote error. A quote command returned error from the server.
.IP 22
-HTTP page not retrieved. The requested url was not found or returned another
+HTTP page not retrieved. The requested URL was not found or returned another
error with the HTTP error code being 400 or above. This return code only
-appears if \fI\-f, \-\-fail\fP is used.
+appears if \-\-fail is used.
.IP 23
Write error. Curl could not write data to a local filesystem or similar.
.IP 25
@@ -4936,8 +5568,6 @@ option to curl that was passed on to libcurl and rejected. Read up in the
manual!
.IP 49
Malformed telnet option.
-.IP 51
-The peer\(aqs SSL certificate or SSH MD5 fingerprint was not OK.
.IP 52
The server did not reply anything, which here is considered an error.
.IP 53
@@ -4956,8 +5586,6 @@ Could not use specified SSL cipher.
Peer certificate cannot be authenticated with known CA certificates.
.IP 61
Unrecognized transfer encoding.
-.IP 62
-Invalid LDAP URL.
.IP 63
Maximum file size exceeded.
.IP 64
@@ -4982,10 +5610,6 @@ Unknown TFTP transfer ID.
File already exists (TFTP).
.IP 74
No such user (TFTP).
-.IP 75
-Character conversion failed.
-.IP 76
-Character conversion functions required.
.IP 77
Problem reading the SSL CA cert (path? access rights?).
.IP 78
@@ -5030,7 +5654,7 @@ is the protocol used for HTTP/3 transfers.
More error codes will appear here in future releases. The existing ones
are meant to never change.
.SH BUGS
-If you experience any problems with curl, submit an issue in the project\(aqs bug
+If you experience any problems with curl, submit an issue in the project's bug
tracker on GitHub: https://github.com/curl/curl/issues
.SH AUTHORS / CONTRIBUTORS
Daniel Stenberg is the main author, but the whole list of contributors is
diff --git a/docs/examples/10-at-a-time.c b/docs/examples/10-at-a-time.c
index 9f45e4533..1739a9e78 100644
--- a/docs/examples/10-at-a-time.c
+++ b/docs/examples/10-at-a-time.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Download many files in parallel, in the same thread.
diff --git a/docs/examples/Makefile.am b/docs/examples/Makefile.am
index 1da1e8dfd..6759d97f1 100644
--- a/docs/examples/Makefile.am
+++ b/docs/examples/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
EXTRA_DIST = README.md Makefile.example Makefile.inc Makefile.m32 \
- Makefile.netware makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
+ makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
# 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
@@ -67,4 +69,4 @@ CS_1 =
CS_ = $(CS_0)
checksrc:
- $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/*.c)
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/*.c)
diff --git a/docs/examples/Makefile.example b/docs/examples/Makefile.example
index e598d35dc..b05ca8ee1 100644
--- a/docs/examples/Makefile.example
+++ b/docs/examples/Makefile.example
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# What to call the final executable
diff --git a/docs/examples/Makefile.in b/docs/examples/Makefile.in
index f61471472..dc32d817a 100644
--- a/docs/examples/Makefile.in
+++ b/docs/examples/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#***************************************************************************
@@ -43,7 +45,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -56,6 +58,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
VPATH = @srcdir@
am__is_gnu_make = { \
@@ -135,12 +139,12 @@ host_triplet = @host@
check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
anyauthput$(EXEEXT) certinfo$(EXEEXT) chkspeed$(EXEEXT) \
cookie_interface$(EXEEXT) debug$(EXEEXT) \
- externalsocket$(EXEEXT) fileupload$(EXEEXT) fopen$(EXEEXT) \
+ externalsocket$(EXEEXT) fileupload$(EXEEXT) \
ftp-wildcard$(EXEEXT) ftpget$(EXEEXT) ftpgetinfo$(EXEEXT) \
ftpgetresp$(EXEEXT) ftpsget$(EXEEXT) ftpupload$(EXEEXT) \
ftpuploadfrommem$(EXEEXT) ftpuploadresume$(EXEEXT) \
getinfo$(EXEEXT) getinmemory$(EXEEXT) getredirect$(EXEEXT) \
- getreferrer$(EXEEXT) http-post$(EXEEXT) \
+ getreferrer$(EXEEXT) headerapi$(EXEEXT) http-post$(EXEEXT) \
http2-download$(EXEEXT) http2-pushinmemory$(EXEEXT) \
http2-serverpush$(EXEEXT) http2-upload$(EXEEXT) http3$(EXEEXT) \
http3-present$(EXEEXT) httpcustomheader$(EXEEXT) \
@@ -160,8 +164,8 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
pop3-tls$(EXEEXT) pop3-top$(EXEEXT) pop3-uidl$(EXEEXT) \
post-callback$(EXEEXT) postinmemory$(EXEEXT) postit2$(EXEEXT) \
postit2-formadd$(EXEEXT) progressfunc$(EXEEXT) \
- resolve$(EXEEXT) rtsp$(EXEEXT) sendrecv$(EXEEXT) \
- sepheaders$(EXEEXT) sftpget$(EXEEXT) sftpuploadresume$(EXEEXT) \
+ resolve$(EXEEXT) sendrecv$(EXEEXT) sepheaders$(EXEEXT) \
+ sftpget$(EXEEXT) sftpuploadresume$(EXEEXT) \
shared-connection-cache$(EXEEXT) simple$(EXEEXT) \
simplepost$(EXEEXT) simplessl$(EXEEXT) smtp-authzid$(EXEEXT) \
smtp-expn$(EXEEXT) smtp-mail$(EXEEXT) smtp-mime$(EXEEXT) \
@@ -170,15 +174,13 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
urlapi$(EXEEXT)
subdir = docs/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -271,12 +273,6 @@ fileupload_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@fileupload_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
-fopen_SOURCES = fopen.c
-fopen_OBJECTS = fopen.$(OBJEXT)
-fopen_LDADD = $(LDADD)
-@USE_EXPLICIT_LIB_DEPS_FALSE@fopen_DEPENDENCIES = \
-@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
-@USE_EXPLICIT_LIB_DEPS_TRUE@fopen_DEPENDENCIES = $(LIBDIR)/libcurl.la
ftp_wildcard_SOURCES = ftp-wildcard.c
ftp_wildcard_OBJECTS = ftp-wildcard.$(OBJEXT)
ftp_wildcard_LDADD = $(LDADD)
@@ -361,6 +357,13 @@ getreferrer_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@getreferrer_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
+headerapi_SOURCES = headerapi.c
+headerapi_OBJECTS = headerapi.$(OBJEXT)
+headerapi_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@headerapi_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@headerapi_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
http_post_SOURCES = http-post.c
http_post_OBJECTS = http-post.$(OBJEXT)
http_post_LDADD = $(LDADD)
@@ -723,11 +726,6 @@ resolve_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@resolve_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
-rtsp_SOURCES = rtsp.c
-rtsp_OBJECTS = rtsp.$(OBJEXT)
-rtsp_LDADD = $(LDADD)
-@USE_EXPLICIT_LIB_DEPS_FALSE@rtsp_DEPENDENCIES = $(LIBDIR)/libcurl.la
-@USE_EXPLICIT_LIB_DEPS_TRUE@rtsp_DEPENDENCIES = $(LIBDIR)/libcurl.la
sendrecv_SOURCES = sendrecv.c
sendrecv_OBJECTS = sendrecv.$(OBJEXT)
sendrecv_LDADD = $(LDADD)
@@ -881,13 +879,13 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
./$(DEPDIR)/certinfo.Po ./$(DEPDIR)/chkspeed.Po \
./$(DEPDIR)/cookie_interface.Po ./$(DEPDIR)/debug.Po \
./$(DEPDIR)/externalsocket.Po ./$(DEPDIR)/fileupload.Po \
- ./$(DEPDIR)/fopen.Po ./$(DEPDIR)/ftp-wildcard.Po \
- ./$(DEPDIR)/ftpget.Po ./$(DEPDIR)/ftpgetinfo.Po \
- ./$(DEPDIR)/ftpgetresp.Po ./$(DEPDIR)/ftpsget.Po \
- ./$(DEPDIR)/ftpupload.Po ./$(DEPDIR)/ftpuploadfrommem.Po \
- ./$(DEPDIR)/ftpuploadresume.Po ./$(DEPDIR)/getinfo.Po \
- ./$(DEPDIR)/getinmemory.Po ./$(DEPDIR)/getredirect.Po \
- ./$(DEPDIR)/getreferrer.Po ./$(DEPDIR)/http-post.Po \
+ ./$(DEPDIR)/ftp-wildcard.Po ./$(DEPDIR)/ftpget.Po \
+ ./$(DEPDIR)/ftpgetinfo.Po ./$(DEPDIR)/ftpgetresp.Po \
+ ./$(DEPDIR)/ftpsget.Po ./$(DEPDIR)/ftpupload.Po \
+ ./$(DEPDIR)/ftpuploadfrommem.Po ./$(DEPDIR)/ftpuploadresume.Po \
+ ./$(DEPDIR)/getinfo.Po ./$(DEPDIR)/getinmemory.Po \
+ ./$(DEPDIR)/getredirect.Po ./$(DEPDIR)/getreferrer.Po \
+ ./$(DEPDIR)/headerapi.Po ./$(DEPDIR)/http-post.Po \
./$(DEPDIR)/http2-download.Po \
./$(DEPDIR)/http2-pushinmemory.Po \
./$(DEPDIR)/http2-serverpush.Po ./$(DEPDIR)/http2-upload.Po \
@@ -915,9 +913,8 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
./$(DEPDIR)/post-callback.Po ./$(DEPDIR)/postinmemory.Po \
./$(DEPDIR)/postit2-formadd.Po ./$(DEPDIR)/postit2.Po \
./$(DEPDIR)/progressfunc.Po ./$(DEPDIR)/resolve.Po \
- ./$(DEPDIR)/rtsp.Po ./$(DEPDIR)/sendrecv.Po \
- ./$(DEPDIR)/sepheaders.Po ./$(DEPDIR)/sftpget.Po \
- ./$(DEPDIR)/sftpuploadresume.Po \
+ ./$(DEPDIR)/sendrecv.Po ./$(DEPDIR)/sepheaders.Po \
+ ./$(DEPDIR)/sftpget.Po ./$(DEPDIR)/sftpuploadresume.Po \
./$(DEPDIR)/shared-connection-cache.Po ./$(DEPDIR)/simple.Po \
./$(DEPDIR)/simplepost.Po ./$(DEPDIR)/simplessl.Po \
./$(DEPDIR)/smtp-authzid.Po ./$(DEPDIR)/smtp-expn.Po \
@@ -947,9 +944,9 @@ am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = 10-at-a-time.c altsvc.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 ftpuploadfrommem.c ftpuploadresume.c \
- getinfo.c getinmemory.c getredirect.c getreferrer.c \
+ ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c ftpsget.c \
+ ftpupload.c ftpuploadfrommem.c ftpuploadresume.c getinfo.c \
+ getinmemory.c getredirect.c getreferrer.c headerapi.c \
http-post.c http2-download.c http2-pushinmemory.c \
http2-serverpush.c http2-upload.c http3.c http3-present.c \
httpcustomheader.c httpput.c httpput-postfields.c https.c \
@@ -962,30 +959,29 @@ SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c chkspeed.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 postit2-formadd.c \
- progressfunc.c resolve.c rtsp.c sendrecv.c sepheaders.c \
- sftpget.c sftpuploadresume.c shared-connection-cache.c \
- simple.c simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
+ progressfunc.c resolve.c sendrecv.c sepheaders.c sftpget.c \
+ sftpuploadresume.c shared-connection-cache.c simple.c \
+ simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
smtp-vrfy.c sslbackend.c url2file.c urlapi.c
DIST_SOURCES = 10-at-a-time.c altsvc.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 ftpuploadfrommem.c \
- ftpuploadresume.c getinfo.c getinmemory.c getredirect.c \
- getreferrer.c http-post.c http2-download.c \
- http2-pushinmemory.c http2-serverpush.c http2-upload.c http3.c \
- http3-present.c httpcustomheader.c httpput.c \
- httpput-postfields.c https.c imap-append.c imap-authzid.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-formadd.c \
- multi-legacy.c multi-post.c multi-single.c parseurl.c \
- persistent.c pop3-authzid.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 postit2-formadd.c progressfunc.c \
- resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
+ fileupload.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
+ ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c \
+ getinfo.c getinmemory.c getredirect.c getreferrer.c \
+ headerapi.c http-post.c http2-download.c http2-pushinmemory.c \
+ http2-serverpush.c http2-upload.c http3.c http3-present.c \
+ httpcustomheader.c httpput.c httpput-postfields.c https.c \
+ imap-append.c imap-authzid.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-formadd.c multi-legacy.c multi-post.c \
+ multi-single.c parseurl.c persistent.c pop3-authzid.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 postit2-formadd.c \
+ progressfunc.c resolve.c sendrecv.c sepheaders.c sftpget.c \
sftpuploadresume.c shared-connection-cache.c simple.c \
simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
@@ -1060,6 +1056,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -1077,6 +1074,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -1136,6 +1134,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -1154,12 +1153,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -1226,7 +1226,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -1234,7 +1233,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign nostdinc
EXTRA_DIST = README.md Makefile.example Makefile.inc Makefile.m32 \
- Makefile.netware makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
+ makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
# Specify our include paths here, and do it relative to $(top_srcdir) and
@@ -1258,7 +1257,6 @@ COMPLICATED_EXAMPLES = \
cacertinmem.c \
crawler.c \
curlgtk.c \
- curlx.c \
ephiperfifo.c \
evhiperfifo.c \
ghiper.c \
@@ -1270,7 +1268,6 @@ COMPLICATED_EXAMPLES = \
multi-uv.c \
multithread.c \
opensslthreadlock.c \
- sampleconv.c \
sessioninfo.c \
smooth-gtk-thread.c \
synctime.c \
@@ -1363,10 +1360,6 @@ fileupload$(EXEEXT): $(fileupload_OBJECTS) $(fileupload_DEPENDENCIES) $(EXTRA_fi
@rm -f fileupload$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fileupload_OBJECTS) $(fileupload_LDADD) $(LIBS)
-fopen$(EXEEXT): $(fopen_OBJECTS) $(fopen_DEPENDENCIES) $(EXTRA_fopen_DEPENDENCIES)
- @rm -f fopen$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(fopen_OBJECTS) $(fopen_LDADD) $(LIBS)
-
ftp-wildcard$(EXEEXT): $(ftp_wildcard_OBJECTS) $(ftp_wildcard_DEPENDENCIES) $(EXTRA_ftp_wildcard_DEPENDENCIES)
@rm -f ftp-wildcard$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(ftp_wildcard_OBJECTS) $(ftp_wildcard_LDADD) $(LIBS)
@@ -1415,6 +1408,10 @@ getreferrer$(EXEEXT): $(getreferrer_OBJECTS) $(getreferrer_DEPENDENCIES) $(EXTRA
@rm -f getreferrer$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getreferrer_OBJECTS) $(getreferrer_LDADD) $(LIBS)
+headerapi$(EXEEXT): $(headerapi_OBJECTS) $(headerapi_DEPENDENCIES) $(EXTRA_headerapi_DEPENDENCIES)
+ @rm -f headerapi$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(headerapi_OBJECTS) $(headerapi_LDADD) $(LIBS)
+
http-post$(EXEEXT): $(http_post_OBJECTS) $(http_post_DEPENDENCIES) $(EXTRA_http_post_DEPENDENCIES)
@rm -f http-post$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(http_post_OBJECTS) $(http_post_LDADD) $(LIBS)
@@ -1623,10 +1620,6 @@ resolve$(EXEEXT): $(resolve_OBJECTS) $(resolve_DEPENDENCIES) $(EXTRA_resolve_DEP
@rm -f resolve$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(resolve_OBJECTS) $(resolve_LDADD) $(LIBS)
-rtsp$(EXEEXT): $(rtsp_OBJECTS) $(rtsp_DEPENDENCIES) $(EXTRA_rtsp_DEPENDENCIES)
- @rm -f rtsp$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(rtsp_OBJECTS) $(rtsp_LDADD) $(LIBS)
-
sendrecv$(EXEEXT): $(sendrecv_OBJECTS) $(sendrecv_DEPENDENCIES) $(EXTRA_sendrecv_DEPENDENCIES)
@rm -f sendrecv$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(sendrecv_OBJECTS) $(sendrecv_LDADD) $(LIBS)
@@ -1718,7 +1711,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/externalsocket.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileupload.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fopen.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp-wildcard.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpget.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpgetinfo.Po@am__quote@ # am--include-marker
@@ -1731,6 +1723,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinmemory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getredirect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getreferrer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/headerapi.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-post.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-download.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-pushinmemory.Po@am__quote@ # am--include-marker
@@ -1783,7 +1776,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postit2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressfunc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtsp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sepheaders.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sftpget.Po@am__quote@ # am--include-marker
@@ -1974,7 +1966,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/debug.Po
-rm -f ./$(DEPDIR)/externalsocket.Po
-rm -f ./$(DEPDIR)/fileupload.Po
- -rm -f ./$(DEPDIR)/fopen.Po
-rm -f ./$(DEPDIR)/ftp-wildcard.Po
-rm -f ./$(DEPDIR)/ftpget.Po
-rm -f ./$(DEPDIR)/ftpgetinfo.Po
@@ -1987,6 +1978,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/getinmemory.Po
-rm -f ./$(DEPDIR)/getredirect.Po
-rm -f ./$(DEPDIR)/getreferrer.Po
+ -rm -f ./$(DEPDIR)/headerapi.Po
-rm -f ./$(DEPDIR)/http-post.Po
-rm -f ./$(DEPDIR)/http2-download.Po
-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
@@ -2039,7 +2031,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/postit2.Po
-rm -f ./$(DEPDIR)/progressfunc.Po
-rm -f ./$(DEPDIR)/resolve.Po
- -rm -f ./$(DEPDIR)/rtsp.Po
-rm -f ./$(DEPDIR)/sendrecv.Po
-rm -f ./$(DEPDIR)/sepheaders.Po
-rm -f ./$(DEPDIR)/sftpget.Po
@@ -2113,7 +2104,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/debug.Po
-rm -f ./$(DEPDIR)/externalsocket.Po
-rm -f ./$(DEPDIR)/fileupload.Po
- -rm -f ./$(DEPDIR)/fopen.Po
-rm -f ./$(DEPDIR)/ftp-wildcard.Po
-rm -f ./$(DEPDIR)/ftpget.Po
-rm -f ./$(DEPDIR)/ftpgetinfo.Po
@@ -2126,6 +2116,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/getinmemory.Po
-rm -f ./$(DEPDIR)/getredirect.Po
-rm -f ./$(DEPDIR)/getreferrer.Po
+ -rm -f ./$(DEPDIR)/headerapi.Po
-rm -f ./$(DEPDIR)/http-post.Po
-rm -f ./$(DEPDIR)/http2-download.Po
-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
@@ -2178,7 +2169,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/postit2.Po
-rm -f ./$(DEPDIR)/progressfunc.Po
-rm -f ./$(DEPDIR)/resolve.Po
- -rm -f ./$(DEPDIR)/rtsp.Po
-rm -f ./$(DEPDIR)/sendrecv.Po
-rm -f ./$(DEPDIR)/sepheaders.Po
-rm -f ./$(DEPDIR)/sftpget.Po
@@ -2240,7 +2230,7 @@ uninstall-am:
all: $(check_PROGRAMS)
checksrc:
- $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/*.c)
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/*.c)
# 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.
diff --git a/docs/examples/Makefile.inc b/docs/examples/Makefile.inc
index 028956f00..42247fe61 100644
--- a/docs/examples/Makefile.inc
+++ b/docs/examples/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# These are all libcurl example programs to be test compiled
@@ -31,7 +33,6 @@ check_PROGRAMS = \
debug \
externalsocket \
fileupload \
- fopen \
ftp-wildcard \
ftpget \
ftpgetinfo \
@@ -44,6 +45,7 @@ check_PROGRAMS = \
getinmemory \
getredirect \
getreferrer \
+ headerapi \
http-post \
http2-download \
http2-pushinmemory \
@@ -96,7 +98,6 @@ check_PROGRAMS = \
postit2-formadd \
progressfunc \
resolve \
- rtsp \
sendrecv \
sepheaders \
sftpget \
@@ -123,7 +124,6 @@ COMPLICATED_EXAMPLES = \
cacertinmem.c \
crawler.c \
curlgtk.c \
- curlx.c \
ephiperfifo.c \
evhiperfifo.c \
ghiper.c \
@@ -135,7 +135,6 @@ COMPLICATED_EXAMPLES = \
multi-uv.c \
multithread.c \
opensslthreadlock.c \
- sampleconv.c \
sessioninfo.c \
smooth-gtk-thread.c \
synctime.c \
diff --git a/docs/examples/Makefile.m32 b/docs/examples/Makefile.m32
index ed1d17cd2..076608216 100644
--- a/docs/examples/Makefile.m32
+++ b/docs/examples/Makefile.m32
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,386 +18,41 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
-#***************************************************************************
-
-###########################################################################
-#
-## Makefile for building curl examples with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
-## brotli (1.0.1), zstd (1.4.5)
-##
-## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
-## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
-##
-## Hint: you can also set environment vars to control the build, f.e.:
-## set ZLIB_PATH=c:/zlib-1.2.8
-## set ZLIB=1
+# SPDX-License-Identifier: curl
#
-###########################################################################
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../../zlib-1.2.8
-endif
-# Edit the path below to point to the base of your Zstandard sources.
-ifndef ZSTD_PATH
-ZSTD_PATH = ../../../zstd-1.4.5
-endif
-# Edit the path below to point to the base of your Brotli sources.
-ifndef BROTLI_PATH
-BROTLI_PATH = ../../../brotli-1.0.1
-endif
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-1.0.2a
-endif
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.5.0
-endif
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.4
-endif
-# Edit the path below to point to the base of your libexpat package.
-ifndef LIBEXPAT_PATH
-LIBEXPAT_PATH = ../../../expat-2.1.0
-endif
-# Edit the path below to point to the base of your libxml2 package.
-ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../../libxml2-2.9.2
-endif
-# Edit the path below to point to the base of your libgsasl package.
-ifndef LIBGSASL_PATH
-LIBGSASL_PATH = ../../../libgsasl-1.10.0
-endif
-# Edit the path below to point to the base of your libidn2 package.
-ifndef LIBIDN2_PATH
-LIBIDN2_PATH = ../../../libidn2-2.0.3
-endif
-# Edit the path below to point to the base of your MS IDN package.
-# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# https://www.microsoft.com/en-us/download/details.aspx?id=734
-ifndef WINIDN_PATH
-WINIDN_PATH = ../../../Microsoft IDN Mitigation APIs
-endif
-# Edit the path below to point to the base of your Novell LDAP NDK.
-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-1.0.0
-endif
-# Edit the path below to point to the base of your nghttp3 package.
-ifndef NGHTTP3_PATH
-NGHTTP3_PATH = ../../../nghttp3-1.0.0
-endif
-# Edit the path below to point to the base of your ngtcp2 package.
-ifndef NGTCP2_PATH
-NGTCP2_PATH = ../../../ngtcp2-1.0.0
-endif
-
-PROOT = ../..
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = $(PROOT)/ares
-endif
-
-ifeq ($(CURL_CC),)
-CURL_CC := $(CROSSPREFIX)gcc
-endif
-ifeq ($(CURL_AR),)
-CURL_AR := $(CROSSPREFIX)ar
-endif
-
-CC = $(CURL_CC)
-CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W
-CFLAGS += -fno-strict-aliasing
-# comment LDFLAGS below to keep debug info
-LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE) -s
-RC = $(CROSSPREFIX)windres
-RCFLAGS = --include-dir=$(PROOT)/include -O coff
-
-# 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 += -m64 -D_AMD64_
-LDFLAGS += -m64
-RCFLAGS += -F pe-x86-64
-else
-CFLAGS += -m32
-LDFLAGS += -m32
-RCFLAGS += -F pe-i386
-endif
-
-# Platform-dependent helper tool macros
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DEL = rm -f $1
-RMDIR = rm -fr $1
-MKDIR = mkdir -p $1
-COPY = -cp -afv $1 $2
-#COPYR = -cp -afr $1/* $2
-COPYR = -rsync -aC $1/* $2
-TOUCH = touch $1
-CAT = cat
-ECHONL = echo ""
-DL = '
-else
-ifeq "$(OS)" "Windows_NT"
-DEL = -del 2>NUL /q /f $(subst /,\,$1)
-RMDIR = -rd 2>NUL /q /s $(subst /,\,$1)
-else
-DEL = -del 2>NUL $(subst /,\,$1)
-RMDIR = -deltree 2>NUL /y $(subst /,\,$1)
-endif
-MKDIR = -md 2>NUL $(subst /,\,$1)
-COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
-COPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
-TOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,,
-CAT = type
-ECHONL = $(ComSpec) /c echo.
-endif
-
-########################################################
-## Nothing more to do below this line!
+#***************************************************************************
-ifneq ($(findstring -dyn,$(CFG)),)
-DYN = 1
-endif
-ifneq ($(findstring -ares,$(CFG)),)
-ARES = 1
-endif
-ifneq ($(findstring -rtmp,$(CFG)),)
-RTMP = 1
-ZLIB = 1
-endif
-ifneq ($(findstring -ssh2,$(CFG)),)
-SSH2 = 1
-ZLIB = 1
-endif
-ifneq ($(findstring -ssl,$(CFG)),)
-SSL = 1
-endif
-ifneq ($(findstring -zlib,$(CFG)),)
-ZLIB = 1
-endif
-ifneq ($(findstring -zstd,$(CFG)),)
-ZSTD = 1
-endif
-ifneq ($(findstring -brotli,$(CFG)),)
-BROTLI = 1
-endif
-ifneq ($(findstring -gsasl,$(CFG)),)
-GSASL = 1
-endif
-ifneq ($(findstring -idn2,$(CFG)),)
-IDN2 = 1
-endif
-ifneq ($(findstring -winidn,$(CFG)),)
-WINIDN = 1
-endif
-ifneq ($(findstring -sspi,$(CFG)),)
-SSPI = 1
-endif
-ifneq ($(findstring -ldaps,$(CFG)),)
-LDAPS = 1
-endif
-ifneq ($(findstring -ipv6,$(CFG)),)
-IPV6 = 1
-endif
-ifneq ($(findstring -schannel,$(CFG))$(findstring -winssl,$(CFG)),)
-SCHANNEL = 1
-SSPI = 1
-endif
-ifneq ($(findstring -nghttp2,$(CFG)),)
-NGHTTP2 = 1
-endif
-ifneq ($(findstring -nghttp3,$(CFG)),)
-NGHTTP3 = 1
-endif
-ifneq ($(findstring -ngtcp2,$(CFG)),)
-NGTCP2 = 1
-endif
+# Build libcurl via lib/Makefile.m32 first.
-# SSH2 and RTMP require an SSL library; assume OpenSSL if none specified
-ifneq ($(SSH2)$(RTMP),)
- ifeq ($(SSL)$(SCHANNEL),)
- SSL = 1
- endif
-endif
+PROOT := ../..
-INCLUDES = -I. -I$(PROOT) -I$(PROOT)/include -I$(PROOT)/lib
+LDFLAGS += -L$(PROOT)/lib
+LIBS += -lcurl
-ifdef DYN
- curl_DEPENDENCIES = $(PROOT)/lib/libcurldll.a $(PROOT)/lib/libcurl.dll
- curl_LDADD = -L$(PROOT)/lib -lcurldll
+ifeq ($(findstring -static,$(CFG)),)
+ curl_DEPENDENCIES += $(PROOT)/lib/libcurl.dll.a
+ DYN := 1
else
- curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a
- curl_LDADD = -L$(PROOT)/lib -lcurl
- CFLAGS += -DCURL_STATICLIB
+ curl_DEPENDENCIES := $(PROOT)/lib/libcurl.a
+ CPPFLAGS += -DCURL_STATICLIB
LDFLAGS += -static
endif
-ifdef ARES
- ifndef DYN
- curl_DEPENDENCIES += $(LIBCARES_PATH)/libcares.a
- endif
- CFLAGS += -DUSE_ARES
- curl_LDADD += -L"$(LIBCARES_PATH)" -lcares
-endif
-ifdef RTMP
- 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 SCHANNEL
- ifndef DYN
- curl_LDADD += -lbcrypt -lcrypt32
- endif
- endif
-endif
-ifdef SSL
- ifdef NGHTTP3
- CFLAGS += -DUSE_NGHTTP3
- curl_LDADD += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
- ifdef NGTCP2
- CFLAGS += -DUSE_NGTCP2
- curl_LDADD += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
- endif
- endif
- ifndef OPENSSL_INCLUDE
- ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
- OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
- endif
- ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
- OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
- endif
- endif
- ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
- $(error Invalid path to OpenSSL package: $(OPENSSL_PATH))
- endif
- ifndef OPENSSL_LIBPATH
- OPENSSL_LIBS = -lssl -lcrypto
- ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
- OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
- ifdef DYN
- OPENSSL_LIBS = -lssl32 -leay32
- endif
- endif
- ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
- OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
- endif
- endif
- ifndef DYN
- OPENSSL_LIBS += -lgdi32 -lcrypt32
- endif
- INCLUDES += -I"$(OPENSSL_INCLUDE)"
- CFLAGS += -DUSE_OPENSSL
- curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
-endif
-ifdef SCHANNEL
- CFLAGS += -DUSE_SCHANNEL
- curl_LDADD += -lcrypt32
-endif
-ifdef ZLIB
- INCLUDES += -I"$(ZLIB_PATH)"
- CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
- curl_LDADD += -L"$(ZLIB_PATH)" -lz
-endif
-ifdef ZSTD
- INCLUDES += -I"$(ZSTD_PATH)/include"
- CFLAGS += -DHAVE_ZSTD
- curl_LDADD += -L"$(ZSTD_PATH)/lib"
- ifdef ZSTD_LIBS
- curl_LDADD += $(ZSTD_LIBS)
- else
- curl_LDADD += -lzstd
- endif
-endif
-ifdef BROTLI
- INCLUDES += -I"$(BROTLI_PATH)/include"
- CFLAGS += -DHAVE_BROTLI
- curl_LDADD += -L"$(BROTLI_PATH)/lib"
- ifdef BROTLI_LIBS
- curl_LDADD += $(BROTLI_LIBS)
- else
- curl_LDADD += -lbrotlidec
- endif
-endif
-ifdef GSASL
- CFLAGS += -DUSE_GSASL
- curl_LDADD += -L"$(LIBGSASL_PATH)/lib" -lgsasl
-endif
-ifdef IDN2
- CFLAGS += -DUSE_LIBIDN2
- curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
-else
-ifdef WINIDN
- CFLAGS += -DUSE_WIN32_IDN
- curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
-endif
-endif
-ifdef SSPI
- CFLAGS += -DUSE_WINDOWS_SSPI
-endif
-ifdef IPV6
- CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
-endif
-ifdef LDAPS
- CFLAGS += -DHAVE_LDAP_SSL
-endif
-ifdef USE_LDAP_NOVELL
- CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
- curl_LDADD += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
-endif
-ifdef USE_LDAP_OPENLDAP
- CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
- curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
-endif
-ifndef USE_LDAP_NOVELL
-ifndef USE_LDAP_OPENLDAP
- curl_LDADD += -lwldap32
-endif
-endif
-curl_LDADD += -lws2_32
+LIBS += -lws2_32
-# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
-include Makefile.inc
-
-check_PROGRAMS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS)))
-check_PROGRAMS += ftpuploadresume.exe synctime.exe
+### Sources and targets
-.PRECIOUS: %.o
+# Provides check_PROGRAMS
+include Makefile.inc
+TARGETS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS) synctime))
+TOCLEAN := $(TARGETS:.exe=.o)
-all: $(check_PROGRAMS)
+### Local rules
%.exe: %.o $(curl_DEPENDENCIES)
- $(CC) $(LDFLAGS) -o $@ $< $(curl_LDADD)
-
-%.o: %.c
- $(CC) $(INCLUDES) $(CFLAGS) -c $<
-
-%.res: %.rc
- $(RC) $(RCFLAGS) -i $< -o $@
+ $(CC) $(LDFLAGS) $(CURL_LDFLAGS_BIN) -o $@ $< $(LIBS)
-clean:
- @$(call DEL, $(check_PROGRAMS:.exe=.o))
+### Global script
-distclean vclean: clean
- @$(call DEL, $(check_PROGRAMS))
+include $(PROOT)/lib/Makefile.m32
diff --git a/docs/examples/Makefile.netware b/docs/examples/Makefile.netware
deleted file mode 100644
index 3198e2664..000000000
--- a/docs/examples/Makefile.netware
+++ /dev/null
@@ -1,436 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2008 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-#################################################################
-#
-## Makefile for building curl.nlm (NetWare version - gnu make)
-## Use: make -f Makefile.netware
-##
-## Comments to: Guenter Knauf
-#
-#################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE = c:/novell
-endif
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../../zlib-1.2.8
-endif
-
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-1.0.2a
-endif
-
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.5.0
-endif
-
-# Edit the path below to point to the base of your libidn package.
-ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.32
-endif
-
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.4
-endif
-
-# Edit the path below to point to the base of your fbopenssl package.
-ifndef FBOPENSSL_PATH
-FBOPENSSL_PATH = ../../fbopenssl-0.4
-endif
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = ../../ares
-endif
-
-ifndef INSTDIR
-INSTDIR = ..$(DS)..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw
-endif
-
-# Edit the vars below to change NLM target settings.
-TARGET = examples
-VERSION = $(LIBCURL_VERSION)
-COPYR = Copyright (C) $(LIBCURL_COPYRIGHT_STR)
-DESCR = curl ($(LIBARCH))
-MTSAFE = YES
-STACK = 8192
-SCREEN = Example Program
-# Comment the line below if you don't want to load protected automatically.
-# LDRING = 3
-
-# Uncomment the next line to enable linking with POSIX semantics.
-# POSIXFL = 1
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to NDEBUG or DEBUG, CURLDEBUG
-ifndef DB
-DB = NDEBUG
-endif
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
- OPT = -O2
- OBJDIR = release
-else
- OPT = -g
- OBJDIR = debug
-endif
-
-# The following lines defines your compiler.
-ifdef CWFolder
- METROWERKS = $(CWFolder)
-endif
-ifdef METROWERKS
- # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support
- MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support
- CC = mwccnlm
-else
- CC = gcc
-endif
-PERL = perl
-# Here you can find a native Win32 binary of the original awk:
-# http://www.gknw.net/development/prgtools/awk-20100523.zip
-AWK = awk
-CP = cp -afv
-MKDIR = mkdir
-# RM = rm -f
-# If you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.net/development/prgtools/mkxdc.zip
-MPKXDC = mkxdc
-
-# LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH))
-LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
-
-# Include the version info retrieved from curlver.h
--include $(OBJDIR)/version.inc
-
-# Global flags for all compilers
-CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
-
-ifeq ($(CC),mwccnlm)
- LD = mwldnlm
- LDFLAGS = -nostdlib $< $(PRELUDE) $(LDLIBS) -o $@ -commandfile
- LIBEXT = lib
- CFLAGS += -gccinc -inline off -opt nointrinsics -proc 586
- CFLAGS += -relax_pointers
- #CFLAGS += -w on
- ifeq ($(LIBARCH),LIBC)
- ifeq ($(POSIXFL),1)
- PRELUDE = $(NDK_LIBC)/imports/posixpre.o
- else
- PRELUDE = $(NDK_LIBC)/imports/libcpre.o
- endif
- CFLAGS += -align 4
- else
- # PRELUDE = $(NDK_CLIB)/imports/clibpre.o
- # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
- PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
- # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
- CFLAGS += -align 1
- endif
-else
- LD = nlmconv
- LDFLAGS = -T
- LIBEXT = a
- CFLAGS += -m32
- CFLAGS += -fno-builtin -fno-strict-aliasing
- ifeq ($(findstring gcc,$(CC)),gcc)
- CFLAGS += -fpcc-struct-return
- endif
- CFLAGS += -Wall # -pedantic
- ifeq ($(LIBARCH),LIBC)
- ifeq ($(POSIXFL),1)
- PRELUDE = $(NDK_LIBC)/imports/posixpre.gcc.o
- else
- PRELUDE = $(NDK_LIBC)/imports/libcpre.gcc.o
- endif
- else
- # PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o
- # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
- # http://www.gknw.net/development/mk_nlm/gcc_pre.zip
- PRELUDE = $(NDK_ROOT)/pre/prelude.o
- CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
- endif
-endif
-
-NDK_ROOT = $(NDKBASE)/ndk
-ifndef NDK_CLIB
-NDK_CLIB = $(NDK_ROOT)/nwsdk
-endif
-ifndef NDK_LIBC
-NDK_LIBC = $(NDK_ROOT)/libc
-endif
-ifndef NDK_LDAP
-NDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
-endif
-CURL_INC = ../../include
-CURL_LIB = ../../lib
-
-INCLUDES = -I$(CURL_INC)
-
-ifeq ($(findstring -static,$(CFG)),-static)
-LINK_STATIC = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-WITH_ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-WITH_RTMP = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-WITH_SSH2 = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-WITH_SSL = 1
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -idn,$(CFG)),-idn)
-WITH_IDN = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-ENABLE_IPV6 = 1
-endif
-
-ifdef LINK_STATIC
- LDLIBS = $(CURL_LIB)/libcurl.$(LIBEXT)
-ifdef WITH_ARES
- LDLIBS += $(LIBCARES_PATH)/libcares.$(LIBEXT)
-endif
-else
- MODULES = libcurl.nlm
- IMPORTS = @$(CURL_LIB)/libcurl.imp
-endif
-ifdef WITH_SSH2
- # INCLUDES += -I$(LIBSSH2_PATH)/include
- ifdef LINK_STATIC
- LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT)
- else
- MODULES += libssh2.nlm
- IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp
- endif
-endif
-ifdef WITH_RTMP
- # INCLUDES += -I$(LIBRTMP_PATH)
-ifdef LINK_STATIC
- LDLIBS += $(LIBRTMP_PATH)/librtmp/librtmp.$(LIBEXT)
-endif
-endif
-ifdef WITH_SSL
- INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
- LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
- LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
- IMPORTS += GetProcessSwitchCount RunningProcess
-else
-endif
-ifdef WITH_ZLIB
- # INCLUDES += -I$(ZLIB_PATH)
-ifdef LINK_STATIC
- LDLIBS += $(ZLIB_PATH)/nw/$(LIBARCH)/libz.$(LIBEXT)
-else
- MODULES += libz.nlm
- IMPORTS += @$(ZLIB_PATH)/nw/$(LIBARCH)/libz.imp
-endif
-endif
-ifdef WITH_IDN
- # INCLUDES += -I$(LIBIDN_PATH)/include
- LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
-endif
-
-ifeq ($(LIBARCH),LIBC)
- INCLUDES += -I$(NDK_LIBC)/include
- # INCLUDES += -I$(NDK_LIBC)/include/nks
- # INCLUDES += -I$(NDK_LIBC)/include/winsock
- CFLAGS += -D_POSIX_SOURCE
-else
- INCLUDES += -I$(NDK_CLIB)/include/nlm
- # INCLUDES += -I$(NDK_CLIB)/include
-endif
-ifndef DISABLE_LDAP
- # INCLUDES += -I$(NDK_LDAP)/$(LIBARCH_L)/inc
-endif
-CFLAGS += $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
- XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
- XDCOPT = -u
-endif
-ifdef XDCOPT
- XDCDATA = $(OBJDIR)/$(TARGET).xdc
-endif
-
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DL = '
-DS = /
-PCT = %
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-else
-DS = \\
-PCT = %%
-endif
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-check_PROGRAMS := $(patsubst %,%.nlm,$(strip $(check_PROGRAMS)))
-
-.PRECIOUS: $(OBJDIR)/%.o $(OBJDIR)/%.def $(OBJDIR)/%.xdc
-
-
-all: prebuild $(check_PROGRAMS)
-
-prebuild: $(OBJDIR) $(OBJDIR)/version.inc
-
-$(OBJDIR)/%.o: %.c
- @echo Compiling $<
- $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR)
- @echo Creating $@
- @$(AWK) -f ../../packages/NetWare/get_ver.awk $< > $@
-
-install: $(INSTDIR) all
- @$(CP) $(check_PROGRAMS) $(INSTDIR)
-
-clean:
- -$(RM) -r $(OBJDIR)
-
-distclean vclean: clean
- -$(RM) $(check_PROGRAMS)
-
-$(OBJDIR) $(INSTDIR):
- @$(MKDIR) $@
-
-%.nlm: $(OBJDIR)/%.o $(OBJDIR)/%.def $(XDCDATA)
- @echo Linking $@
- @-$(RM) $@
- @$(LD) $(LDFLAGS) $(OBJDIR)/$(@:.nlm=.def)
-
-$(OBJDIR)/%.xdc: Makefile.netware
- @echo Creating $@
- @$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
- @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
- @echo $(DL)# Do not edit this file - it is created by Make!$(DL) >> $@
- @echo $(DL)# All your changes will be lost!!$(DL) >> $@
- @echo $(DL)#$(DL) >> $@
- @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
- @echo $(DL)description "$(DESCR) $(notdir $(@:.def=)) Example"$(DL) >> $@
- @echo $(DL)version $(VERSION)$(DL) >> $@
-ifdef NLMTYPE
- @echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
- @echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
- @echo $(DL)screenname "$(DESCR) $(notdir $(@:.def=)) $(SCREEN)"$(DL) >> $@
-else
- @echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifneq ($(DB),NDEBUG)
- @echo $(DL)debug$(DL) >> $@
-endif
- @echo $(DL)threadname "_$(notdir $(@:.def=))"$(DL) >> $@
-ifdef XDCDATA
- @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
-endif
-ifeq ($(LDRING),0)
- @echo $(DL)flag_on 16$(DL) >> $@
-endif
-ifeq ($(LDRING),3)
- @echo $(DL)flag_on 512$(DL) >> $@
-endif
-ifeq ($(LIBARCH),CLIB)
- @echo $(DL)start _Prelude$(DL) >> $@
- @echo $(DL)exit _Stop$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/clib.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/threads.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/socklib.imp$(DL) >> $@
- @echo $(DL)module clib$(DL) >> $@
-ifndef DISABLE_LDAP
- @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
-# @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
- @echo $(DL)module ldapsdk ldapssl$(DL) >> $@
-endif
-else
-ifeq ($(POSIXFL),1)
- @echo $(DL)flag_on 4194304$(DL) >> $@
-endif
- @echo $(DL)flag_on 64$(DL) >> $@
- @echo $(DL)pseudopreemption$(DL) >> $@
-ifeq ($(findstring posixpre,$(PRELUDE)),posixpre)
- @echo $(DL)start POSIX_Start$(DL) >> $@
- @echo $(DL)exit POSIX_Stop$(DL) >> $@
- @echo $(DL)check POSIX_CheckUnload$(DL) >> $@
-else
- @echo $(DL)start _LibCPrelude$(DL) >> $@
- @echo $(DL)exit _LibCPostlude$(DL) >> $@
- @echo $(DL)check _LibCCheckUnload$(DL) >> $@
-endif
- @echo $(DL)import @$(NDK_LIBC)/imports/libc.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LIBC)/imports/netware.imp$(DL) >> $@
- @echo $(DL)module libc$(DL) >> $@
-ifndef DISABLE_LDAP
- @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
-# @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
- @echo $(DL)module lldapsdk lldapssl$(DL) >> $@
-endif
-endif
-ifdef MODULES
- @echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
- @echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
- @echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(findstring nlmconv,$(LD)),nlmconv)
- @echo $(DL)input $(PRELUDE)$(DL) >> $@
- @echo $(DL)input $(@:.def=.o)$(DL) >> $@
-ifdef LDLIBS
- @echo $(DL)input $(LDLIBS)$(DL) >> $@
-endif
- @echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
-endif
diff --git a/docs/examples/README.md b/docs/examples/README.md
index 78577f84f..c74dc9416 100644
--- a/docs/examples/README.md
+++ b/docs/examples/README.md
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
# libcurl examples
This directory is for libcurl programming examples. They are meant to show
@@ -9,8 +15,9 @@ them for submission in future packages and on the website.
## Building
-The Makefile.example is an example makefile that could be used to build these
-examples. Just edit the file according to your system and requirements first.
+The `Makefile.example` is an example Makefile that could be used to build
+these examples. Just edit the file according to your system and requirements
+first.
Most examples should build fine using a command line like this:
@@ -21,10 +28,10 @@ want you do reorganize them like:
`curl-config --cc` -o example example.c `curl-config --cflags --libs`
-**Please** do not use the `curl.se` site as a test target for your
-libcurl applications/experiments. Even if some of the examples use that site
-as a URL at some places, it does not mean that the URLs work or that we expect
-you to actually torture our website with your tests! Thanks.
+**Please** do not use the `curl.se` site as a test target for your libcurl
+applications/experiments. Even if some of the examples use that site as a URL
+at some places, it does not mean that the URLs work or that we expect you to
+actually torture our website with your tests. Thanks.
## Examples
diff --git a/docs/examples/altsvc.c b/docs/examples/altsvc.c
index ffca05776..7fa47c2c2 100644
--- a/docs/examples/altsvc.c
+++ b/docs/examples/altsvc.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP with Alt-Svc support
diff --git a/docs/examples/anyauthput.c b/docs/examples/anyauthput.c
index f5db702f5..b5764327c 100644
--- a/docs/examples/anyauthput.c
+++ b/docs/examples/anyauthput.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP PUT upload with authentication using "any" method. libcurl picks the
@@ -32,11 +34,9 @@
#include <curl/curl.h>
#ifdef WIN32
-# include <io.h>
-# define READ_3RD_ARG unsigned int
+# define FILENO(fp) _fileno(fp)
#else
-# include <unistd.h>
-# define READ_3RD_ARG size_t
+# define FILENO(fp) fileno(fp)
#endif
#if LIBCURL_VERSION_NUM < 0x070c03
@@ -48,33 +48,22 @@
* type. It PUTs a file given as a command line argument to the URL also given
* on the command line.
*
- * Since libcurl 7.12.3, using "any" auth and POST/PUT requires a set ioctl
+ * Since libcurl 7.12.3, using "any" auth and POST/PUT requires a set seek
* function.
*
* This example also uses its own read callback.
*/
-/* ioctl callback function */
-static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
+/* seek callback function */
+static int my_seek(void *userp, curl_off_t offset, int origin)
{
- int *fdp = (int *)userp;
- int fd = *fdp;
-
- (void)handle; /* not used in here */
-
- switch(cmd) {
- case CURLIOCMD_RESTARTREAD:
- /* mr libcurl kindly asks as to rewind the read data stream to start */
- if(-1 == lseek(fd, 0, SEEK_SET))
- /* couldn't rewind */
- return CURLIOE_FAILRESTART;
+ FILE *fp = (FILE *) userp;
- break;
+ if(-1 == fseek(fp, (long) offset, origin))
+ /* couldn't seek */
+ return CURL_SEEKFUNC_CANTSEEK;
- default: /* ignore unknown commands */
- return CURLIOE_UNKNOWNCMD;
- }
- return CURLIOE_OK; /* success! */
+ return CURL_SEEKFUNC_OK; /* success! */
}
/* read callback function, fread() look alike */
@@ -83,10 +72,7 @@ static size_t read_callback(char *ptr, size_t size, size_t nmemb, void *stream)
ssize_t retcode;
unsigned long nread;
- int *fdp = (int *)stream;
- int fd = *fdp;
-
- retcode = read(fd, ptr, (READ_3RD_ARG)(size * nmemb));
+ retcode = fread(ptr, size, nmemb, stream);
if(retcode > 0) {
nread = (unsigned long)retcode;
@@ -100,7 +86,7 @@ int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
- int hd;
+ FILE *fp;
struct stat file_info;
char *file;
@@ -113,8 +99,8 @@ int main(int argc, char **argv)
url = argv[2];
/* get the file size of the local file */
- hd = open(file, O_RDONLY);
- fstat(hd, &file_info);
+ fp = fopen(file, "rb");
+ fstat(FILENO(fp), &file_info);
/* In windows, this will init the winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
@@ -126,13 +112,13 @@ int main(int argc, char **argv)
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
/* which file to upload */
- curl_easy_setopt(curl, CURLOPT_READDATA, (void *)&hd);
+ curl_easy_setopt(curl, CURLOPT_READDATA, (void *) fp);
- /* set the ioctl function */
- curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, my_ioctl);
+ /* set the seek function */
+ curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, my_seek);
- /* pass the file descriptor to the ioctl callback as well */
- curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void *)&hd);
+ /* pass the file descriptor to the seek callback as well */
+ curl_easy_setopt(curl, CURLOPT_SEEKDATA, (void *) fp);
/* enable "uploading" (which means PUT when doing HTTP) */
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
@@ -164,7 +150,7 @@ int main(int argc, char **argv)
/* always cleanup */
curl_easy_cleanup(curl);
}
- close(hd); /* close the local file */
+ fclose(fp); /* close the local file */
curl_global_cleanup();
return 0;
diff --git a/docs/examples/cacertinmem.c b/docs/examples/cacertinmem.c
index 880b7b1fd..a16d319d2 100644
--- a/docs/examples/cacertinmem.c
+++ b/docs/examples/cacertinmem.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* CA cert in memory with OpenSSL to get a HTTPS page.
diff --git a/docs/examples/certinfo.c b/docs/examples/certinfo.c
index 6e622c46a..381ee5110 100644
--- a/docs/examples/certinfo.c
+++ b/docs/examples/certinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Extract lots of TLS certificate info.
diff --git a/docs/examples/chkspeed.c b/docs/examples/chkspeed.c
index 4c7136bf5..a467913a7 100644
--- a/docs/examples/chkspeed.c
+++ b/docs/examples/chkspeed.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Show transfer timing info after download completes.
@@ -35,7 +37,6 @@
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <time.h>
#include <curl/curl.h>
@@ -71,58 +72,66 @@ int main(int argc, char *argv[])
if(argc > 1) {
/* parse input parameters */
for(argc--, argv++; *argv; argc--, argv++) {
- if(strncasecmp(*argv, "-", 1) == 0) {
- if(strncasecmp(*argv, "-H", 2) == 0) {
+ if(argv[0][0] == '-') {
+ switch(argv[0][1]) {
+ case 'h':
+ case 'H':
fprintf(stderr,
"\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
appname);
exit(1);
- }
- else if(strncasecmp(*argv, "-V", 2) == 0) {
+ case 'v':
+ case 'V':
fprintf(stderr, "\r%s %s - %s\n",
appname, CHKSPEED_VERSION, curl_version());
exit(1);
- }
- else if(strncasecmp(*argv, "-A", 2) == 0) {
+ case 'a':
+ case 'A':
prtall = 1;
- }
- else if(strncasecmp(*argv, "-X", 2) == 0) {
+ break;
+ case 'x':
+ case 'X':
prtsep = 1;
- }
- else if(strncasecmp(*argv, "-T", 2) == 0) {
+ break;
+ case 't':
+ case 'T':
prttime = 1;
- }
- else if(strncasecmp(*argv, "-M=", 3) == 0) {
- long m = strtol((*argv) + 3, NULL, 10);
- switch(m) {
- case 1:
- url = URL_1M;
- break;
- case 2:
- url = URL_2M;
+ break;
+ case 'm':
+ case 'M':
+ if(argv[0][2] == '=') {
+ long m = strtol((*argv) + 3, NULL, 10);
+ switch(m) {
+ case 1:
+ url = URL_1M;
+ break;
+ case 2:
+ url = URL_2M;
+ break;
+ case 5:
+ url = URL_5M;
+ break;
+ case 10:
+ url = URL_10M;
+ break;
+ case 20:
+ url = URL_20M;
+ break;
+ case 50:
+ url = URL_50M;
+ break;
+ case 100:
+ url = URL_100M;
+ break;
+ default:
+ fprintf(stderr, "\r%s: invalid parameter %s\n",
+ appname, *argv + 3);
+ exit(1);
+ }
break;
- case 5:
- url = URL_5M;
- break;
- case 10:
- url = URL_10M;
- break;
- case 20:
- url = URL_20M;
- break;
- case 50:
- url = URL_50M;
- break;
- case 100:
- url = URL_100M;
- break;
- default:
- fprintf(stderr, "\r%s: invalid parameter %s\n",
- appname, *argv + 3);
- exit(1);
}
- }
- else {
+ /* FALLTHROUGH */
+ default:
fprintf(stderr, "\r%s: invalid or unknown option %s\n",
appname, *argv);
exit(1);
diff --git a/docs/examples/cookie_interface.c b/docs/examples/cookie_interface.c
index 9168247cf..62e9dd798 100644
--- a/docs/examples/cookie_interface.c
+++ b/docs/examples/cookie_interface.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Import and export cookies with COOKIELIST.
diff --git a/docs/examples/crawler.c b/docs/examples/crawler.c
index 59de99d7a..1859c274e 100644
--- a/docs/examples/crawler.c
+++ b/docs/examples/crawler.c
@@ -5,9 +5,20 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Web crawler based on curl and libxml2.
- * Copyright (C) 2018 - 2020 Jeroen Ooms <jeroenooms@gmail.com>
- * License: MIT
+ * Copyright (C) 2018 - 2022 Jeroen Ooms <jeroenooms@gmail.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 https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
*
* To compile:
* gcc crawler.c $(pkg-config --cflags --libs libxml-2.0 libcurl)
diff --git a/docs/examples/curlgtk.c b/docs/examples/curlgtk.c
index c14e4823e..756894121 100644
--- a/docs/examples/curlgtk.c
+++ b/docs/examples/curlgtk.c
@@ -1,12 +1,26 @@
-/*****************************************************************************
+/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (c) 2000 - 2021 David Odin (aka DindinX) for MandrakeSoft
- */
+ * Copyright (c) 2000 - 2022 David Odin (aka DindinX) for MandrakeSoft
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
/* <DESC>
* use the libcurl in a gtk-threaded application
* </DESC>
diff --git a/docs/examples/curlx.c b/docs/examples/curlx.c
deleted file mode 100644
index 3e3e35322..000000000
--- a/docs/examples/curlx.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- curlx.c Authors: Peter Sylvester, Jean-Paul Merlin
-
- This is a little program to demonstrate the usage of
-
- - an ssl initialisation callback setting a user key and trustbases
- coming from a pkcs12 file
- - using an ssl application callback to find a URI in the
- certificate presented during ssl session establishment.
-
-*/
-/* <DESC>
- * demonstrates use of SSL context callback, requires OpenSSL
- * </DESC>
- */
-
-/*
- * Copyright (c) 2003 - 2021 The OpenEvidence Project. 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, the following disclaimer,
- * and the original OpenSSL and SSLeay Licences below.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions, the following disclaimer
- * and the original OpenSSL and SSLeay Licences below in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgments:
- * "This product includes software developed by the Openevidence Project
- * for use in the OpenEvidence Toolkit. (http://www.openevidence.org/)"
- * This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (https://www.openssl.org/)"
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com)."
- *
- * 4. The names "OpenEvidence Toolkit" and "OpenEvidence Project" must not be
- * used to endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * openevidence-core@openevidence.org.
- *
- * 5. Products derived from this software may not be called "OpenEvidence"
- * nor may "OpenEvidence" appear in their names without prior written
- * permission of the OpenEvidence Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgments:
- * "This product includes software developed by the OpenEvidence Project
- * for use in the OpenEvidence Toolkit (http://www.openevidence.org/)
- * This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (https://www.openssl.org/)"
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com)."
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenEvidence PROJECT ``AS IS'' AND ANY
- * EXPRESSED 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 OpenEvidence PROJECT OR
- * ITS 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.
- * ====================================================================
- *
- * This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (https://www.openssl.org/)
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <curl/curl.h>
-#include <openssl/x509v3.h>
-#include <openssl/x509_vfy.h>
-#include <openssl/crypto.h>
-#include <openssl/lhash.h>
-#include <openssl/objects.h>
-#include <openssl/err.h>
-#include <openssl/evp.h>
-#include <openssl/x509.h>
-#include <openssl/pkcs12.h>
-#include <openssl/bio.h>
-#include <openssl/ssl.h>
-
-static const char *curlx_usage[]={
- "usage: curlx args\n",
- " -p12 arg - tia file ",
- " -envpass arg - environment variable which content the tia private"
- " key password",
- " -out arg - output file (response)- default stdout",
- " -in arg - input file (request)- default stdin",
- " -connect arg - URL of the server for the connection ex:"
- " www.openevidence.org",
- " -mimetype arg - MIME type for data in ex : application/timestamp-query"
- " or application/dvcs -default application/timestamp-query",
- " -acceptmime arg - MIME type acceptable for the response ex : "
- "application/timestamp-response or application/dvcs -default none",
- " -accesstype arg - an Object identifier in an AIA/SIA method, e.g."
- " AD_DVCS or ad_timestamping",
- NULL
-};
-
-/*
-
-./curlx -p12 psy.p12 -envpass XX -in request -verbose -accesstype AD_DVCS
--mimetype application/dvcs -acceptmime application/dvcs -out response
-
-*/
-
-/*
- * We use this ZERO_NULL to avoid picky compiler warnings,
- * when assigning a NULL pointer to a function pointer var.
- */
-
-#define ZERO_NULL 0
-
-/* This is a context that we pass to all callbacks */
-
-typedef struct sslctxparm_st {
- unsigned char *p12file;
- const char *pst;
- PKCS12 *p12;
- EVP_PKEY *pkey;
- X509 *usercert;
- STACK_OF(X509) * ca;
- CURL *curl;
- BIO *errorbio;
- int accesstype;
- int verbose;
-
-} sslctxparm;
-
-/* some helper function. */
-
-static char *ia5string(ASN1_IA5STRING *ia5)
-{
- char *tmp;
- if(!ia5 || !ia5->length)
- return NULL;
- tmp = OPENSSL_malloc(ia5->length + 1);
- memcpy(tmp, ia5->data, ia5->length);
- tmp[ia5->length] = 0;
- return tmp;
-}
-
-/* A convenience routine to get an access URI. */
-static unsigned char *my_get_ext(X509 *cert, const int type,
- int extensiontype)
-{
- int i;
- STACK_OF(ACCESS_DESCRIPTION) * accessinfo;
- accessinfo = X509_get_ext_d2i(cert, extensiontype, NULL, NULL);
-
- if(!sk_ACCESS_DESCRIPTION_num(accessinfo))
- return NULL;
- for(i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
- ACCESS_DESCRIPTION * ad = sk_ACCESS_DESCRIPTION_value(accessinfo, i);
- if(OBJ_obj2nid(ad->method) == type) {
- if(ad->location->type == GEN_URI) {
- return ia5string(ad->location->d.ia5);
- }
- return NULL;
- }
- }
- return NULL;
-}
-
-/* This is an application verification call back, it does not
- perform any addition verification but tries to find a URL
- in the presented certificate. If found, this will become
- the URL to be used in the POST.
-*/
-
-static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg)
-{
- sslctxparm * p = (sslctxparm *) arg;
- int ok;
-
- if(p->verbose > 2)
- BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n");
-
- ok = X509_verify_cert(ctx);
- if(ok && ctx->cert) {
- unsigned char *accessinfo;
- if(p->verbose > 1)
- X509_print_ex(p->errorbio, ctx->cert, 0, 0);
-
- accessinfo = my_get_ext(ctx->cert, p->accesstype, NID_sinfo_access);
- if(accessinfo) {
- if(p->verbose)
- BIO_printf(p->errorbio, "Setting URL from SIA to: %s\n", accessinfo);
-
- curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
- }
- else if(accessinfo = my_get_ext(ctx->cert, p->accesstype,
- NID_info_access)) {
- if(p->verbose)
- BIO_printf(p->errorbio, "Setting URL from AIA to: %s\n", accessinfo);
-
- curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
- }
- }
- if(p->verbose > 2)
- BIO_printf(p->errorbio, "leaving ssl_app_verify_callback with %d\n", ok);
-
- return ok;
-}
-
-
-/* The SSL initialisation callback. The callback sets:
- - a private key and certificate
- - a trusted ca certificate
- - a preferred cipherlist
- - an application verification callback (the function above)
-*/
-
-static CURLcode sslctxfun(CURL *curl, void *sslctx, void *parm)
-{
- sslctxparm *p = (sslctxparm *) parm;
- SSL_CTX *ctx = (SSL_CTX *) sslctx;
-
- if(!SSL_CTX_use_certificate(ctx, p->usercert)) {
- BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n");
- goto err;
- }
- if(!SSL_CTX_use_PrivateKey(ctx, p->pkey)) {
- BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n");
- goto err;
- }
-
- if(!SSL_CTX_check_private_key(ctx)) {
- BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n");
- goto err;
- }
-
- SSL_CTX_set_quiet_shutdown(ctx, 1);
- SSL_CTX_set_cipher_list(ctx, "RC4-MD5");
- SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
-
- X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx),
- sk_X509_value(p->ca, sk_X509_num(p->ca)-1));
-
- SSL_CTX_set_verify_depth(ctx, 2);
- SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, ZERO_NULL);
- SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, parm);
-
- return CURLE_OK;
- err:
- ERR_print_errors(p->errorbio);
- return CURLE_SSL_CERTPROBLEM;
-
-}
-
-int main(int argc, char **argv)
-{
- BIO* in = NULL;
- BIO* out = NULL;
-
- char *outfile = NULL;
- char *infile = NULL;
-
- int tabLength = 100;
- char *binaryptr;
- char *mimetype = NULL;
- char *mimetypeaccept = NULL;
- char *contenttype;
- const char **pp;
- unsigned char *hostporturl = NULL;
- BIO *p12bio;
- char **args = argv + 1;
- unsigned char *serverurl;
- sslctxparm p;
- char *response;
-
- CURLcode res;
- struct curl_slist *headers = NULL;
- int badarg = 0;
-
- binaryptr = malloc(tabLength);
-
- memset(&p, '\0', sizeof(p));
- p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- /* we need some more for the P12 decoding */
-
- OpenSSL_add_all_ciphers();
- OpenSSL_add_all_digests();
- ERR_load_crypto_strings();
-
- while(*args && *args[0] == '-') {
- if(!strcmp (*args, "-in")) {
- if(args[1]) {
- infile = *(++args);
- }
- else
- badarg = 1;
- }
- else if(!strcmp (*args, "-out")) {
- if(args[1]) {
- outfile = *(++args);
- }
- else
- badarg = 1;
- }
- else if(!strcmp (*args, "-p12")) {
- if(args[1]) {
- p.p12file = *(++args);
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-envpass") == 0) {
- if(args[1]) {
- p.pst = getenv(*(++args));
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-connect") == 0) {
- if(args[1]) {
- hostporturl = *(++args);
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-mimetype") == 0) {
- if(args[1]) {
- mimetype = *(++args);
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-acceptmime") == 0) {
- if(args[1]) {
- mimetypeaccept = *(++args);
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-accesstype") == 0) {
- if(args[1]) {
- p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args, 0));
- if(p.accesstype == 0)
- badarg = 1;
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-verbose") == 0) {
- p.verbose++;
- }
- else
- badarg = 1;
- args++;
- }
-
- if(!mimetype || !mimetypeaccept || !p.p12file)
- badarg = 1;
-
- if(badarg) {
- for(pp = curlx_usage; (*pp != NULL); pp++)
- BIO_printf(p.errorbio, "%s\n", *pp);
- BIO_printf(p.errorbio, "\n");
- goto err;
- }
-
- /* set input */
-
- in = BIO_new(BIO_s_file());
- if(!in) {
- BIO_printf(p.errorbio, "Error setting input bio\n");
- goto err;
- }
- else if(!infile)
- BIO_set_fp(in, stdin, BIO_NOCLOSE|BIO_FP_TEXT);
- else if(BIO_read_filename(in, infile) <= 0) {
- BIO_printf(p.errorbio, "Error opening input file %s\n", infile);
- BIO_free(in);
- goto err;
- }
-
- /* set output */
-
- out = BIO_new(BIO_s_file());
- if(!out) {
- BIO_printf(p.errorbio, "Error setting output bio.\n");
- goto err;
- }
- else if(!outfile)
- BIO_set_fp(out, stdout, BIO_NOCLOSE|BIO_FP_TEXT);
- else if(BIO_write_filename(out, outfile) <= 0) {
- BIO_printf(p.errorbio, "Error opening output file %s\n", outfile);
- BIO_free(out);
- goto err;
- }
-
-
- p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);
-
- p.curl = curl_easy_init();
- if(!p.curl) {
- BIO_printf(p.errorbio, "Cannot init curl lib\n");
- goto err;
- }
-
- p12bio = BIO_new_file(p.p12file, "rb");
- if(!p12bio) {
- BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file);
- goto err;
- }
- p.p12 = d2i_PKCS12_bio(p12bio, NULL);
- if(!p.p12) {
- BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file);
- goto err;
- }
-
- p.ca = NULL;
- if(!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
- BIO_printf(p.errorbio, "Invalid P12 structure in %s\n", p.p12file);
- goto err;
- }
-
- if(sk_X509_num(p.ca) <= 0) {
- BIO_printf(p.errorbio, "No trustworthy CA given.%s\n", p.p12file);
- goto err;
- }
-
- if(p.verbose > 1)
- X509_print_ex(p.errorbio, p.usercert, 0, 0);
-
- /* determine URL to go */
-
- if(hostporturl) {
- size_t len = strlen(hostporturl) + 9;
- serverurl = malloc(len);
- snprintf(serverurl, len, "https://%s", hostporturl);
- }
- else if(p.accesstype) { /* see whether we can find an AIA or SIA for a
- given access type */
- serverurl = my_get_ext(p.usercert, p.accesstype, NID_info_access);
- if(!serverurl) {
- int j = 0;
- BIO_printf(p.errorbio, "no service URL in user cert "
- "searching in others certificates\n");
- for(j = 0; j<sk_X509_num(p.ca); j++) {
- serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
- NID_info_access);
- if(serverurl)
- break;
- serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
- NID_sinfo_access);
- if(serverurl)
- break;
- }
- }
- }
-
- if(!serverurl) {
- BIO_printf(p.errorbio, "no service URL in certificates,"
- " check '-accesstype (AD_DVCS | ad_timestamping)'"
- " or use '-connect'\n");
- goto err;
- }
-
- if(p.verbose)
- BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
-
- curl_easy_setopt(p.curl, CURLOPT_URL, serverurl);
-
- /* Now specify the POST binary data */
-
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
-
- /* pass our list of custom made headers */
-
- contenttype = malloc(15 + strlen(mimetype));
- snprintf(contenttype, 15 + strlen(mimetype), "Content-type: %s", mimetype);
- headers = curl_slist_append(headers, contenttype);
- curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);
-
- if(p.verbose)
- BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
-
- {
- FILE *outfp;
- BIO_get_fp(out, &outfp);
- curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
- }
-
- res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun);
-
- if(res != CURLE_OK)
- BIO_printf(p.errorbio, "%d %s=%d %d\n", __LINE__,
- "CURLOPT_SSL_CTX_FUNCTION", CURLOPT_SSL_CTX_FUNCTION, res);
-
- curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);
-
- {
- char *ptr;
- int lu; int i = 0;
- while((lu = BIO_read(in, &binaryptr[i], tabLength-i)) >0) {
- i += lu;
- if(i == tabLength) {
- tabLength += 100;
- ptr = realloc(binaryptr, tabLength); /* should be more careful */
- if(!ptr) {
- /* out of memory */
- BIO_printf(p.errorbio, "out of memory (realloc returned NULL)\n");
- goto fail;
- }
- binaryptr = ptr;
- ptr = NULL;
- }
- }
- tabLength = i;
- }
- /* Now specify the POST binary data */
-
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
-
-
- /* Perform the request, res will get the return code */
-
- BIO_printf(p.errorbio, "%d %s %d\n", __LINE__, "curl_easy_perform",
- res = curl_easy_perform(p.curl));
- {
- curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response);
- if(mimetypeaccept && p.verbose) {
- if(!strcmp(mimetypeaccept, response))
- BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n",
- response);
- else
- BIO_printf(p.errorbio, "the response doesn\'t have an acceptable "
- "mime type, it is %s instead of %s\n",
- response, mimetypeaccept);
- }
- }
-
- /*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/
-
-/* free the header list*/
-fail:
- curl_slist_free_all(headers);
-
- /* always cleanup */
- curl_easy_cleanup(p.curl);
-
- BIO_free(in);
- BIO_free(out);
- return (EXIT_SUCCESS);
-
- err: BIO_printf(p.errorbio, "error");
- exit(1);
-}
diff --git a/docs/examples/debug.c b/docs/examples/debug.c
index 87492aa38..aeef8290a 100644
--- a/docs/examples/debug.c
+++ b/docs/examples/debug.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Show how CURLOPT_DEBUGFUNCTION can be used.
diff --git a/docs/examples/ephiperfifo.c b/docs/examples/ephiperfifo.c
index af13169f3..7079846fd 100644
--- a/docs/examples/ephiperfifo.c
+++ b/docs/examples/ephiperfifo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* multi socket API usage with epoll and timerfd
diff --git a/docs/examples/evhiperfifo.c b/docs/examples/evhiperfifo.c
index 07cfada43..3c9ca57dd 100644
--- a/docs/examples/evhiperfifo.c
+++ b/docs/examples/evhiperfifo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* multi socket interface together with libev
diff --git a/docs/examples/externalsocket.c b/docs/examples/externalsocket.c
index 292a59621..dfdd1c275 100644
--- a/docs/examples/externalsocket.c
+++ b/docs/examples/externalsocket.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* An example demonstrating how an application can pass in a custom
diff --git a/docs/examples/fileupload.c b/docs/examples/fileupload.c
index 81914b2c9..8d3e6cdf8 100644
--- a/docs/examples/fileupload.c
+++ b/docs/examples/fileupload.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Upload to a file:// URL
diff --git a/docs/examples/fopen.c b/docs/examples/fopen.c
deleted file mode 100644
index 02ab11905..000000000
--- a/docs/examples/fopen.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/*****************************************************************************
- *
- * This example source code introduces a c library buffered I/O interface to
- * URL reads it supports fopen(), fread(), fgets(), feof(), fclose(),
- * rewind(). Supported functions have identical prototypes to their normal c
- * lib namesakes and are preceaded by url_ .
- *
- * Using this code you can replace your program's fopen() with url_fopen()
- * and fread() with url_fread() and it become possible to read remote streams
- * instead of (only) local files. Local files (ie those that can be directly
- * fopened) will drop back to using the underlying clib implementations
- *
- * See the main() function at the bottom that shows an app that retrieves from
- * a specified url using fgets() and fread() and saves as two output files.
- *
- * Copyright (c) 2003 - 2021 Simtec Electronics
- *
- * Re-implemented by Vincent Sanders <vince@kyllikki.org> with extensive
- * reference to original curl example code
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This example requires libcurl 7.9.7 or later.
- */
-/* <DESC>
- * implements an fopen() abstraction allowing reading from URLs
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#ifndef WIN32
-# include <sys/time.h>
-#endif
-#include <stdlib.h>
-#include <errno.h>
-
-#include <curl/curl.h>
-
-enum fcurl_type_e {
- CFTYPE_NONE = 0,
- CFTYPE_FILE = 1,
- CFTYPE_CURL = 2
-};
-
-struct fcurl_data
-{
- enum fcurl_type_e type; /* type of handle */
- union {
- CURL *curl;
- FILE *file;
- } handle; /* handle */
-
- char *buffer; /* buffer to store cached data*/
- size_t buffer_len; /* currently allocated buffers length */
- size_t buffer_pos; /* end of data in buffer*/
- int still_running; /* Is background url fetch still in progress */
-};
-
-typedef struct fcurl_data URL_FILE;
-
-/* exported functions */
-URL_FILE *url_fopen(const char *url, const char *operation);
-int url_fclose(URL_FILE *file);
-int url_feof(URL_FILE *file);
-size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file);
-char *url_fgets(char *ptr, size_t size, URL_FILE *file);
-void url_rewind(URL_FILE *file);
-
-/* we use a global one for convenience */
-static CURLM *multi_handle;
-
-/* curl calls this routine to get more data */
-static size_t write_callback(char *buffer,
- size_t size,
- size_t nitems,
- void *userp)
-{
- char *newbuff;
- size_t rembuff;
-
- URL_FILE *url = (URL_FILE *)userp;
- size *= nitems;
-
- rembuff = url->buffer_len - url->buffer_pos; /* remaining space in buffer */
-
- if(size > rembuff) {
- /* not enough space in buffer */
- newbuff = realloc(url->buffer, url->buffer_len + (size - rembuff));
- if(!newbuff) {
- fprintf(stderr, "callback buffer grow failed\n");
- size = rembuff;
- }
- else {
- /* realloc succeeded increase buffer size*/
- url->buffer_len += size - rembuff;
- url->buffer = newbuff;
- }
- }
-
- memcpy(&url->buffer[url->buffer_pos], buffer, size);
- url->buffer_pos += size;
-
- return size;
-}
-
-/* use to attempt to fill the read buffer up to requested number of bytes */
-static int fill_buffer(URL_FILE *file, size_t want)
-{
- fd_set fdread;
- fd_set fdwrite;
- 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
- * does not exceed required size already
- */
- if((!file->still_running) || (file->buffer_pos > want))
- return 0;
-
- /* attempt to fill buffer */
- do {
- int maxfd = -1;
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to fail on */
- timeout.tv_sec = 60; /* 1 minute */
- 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;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &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);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
-
- case 0:
- default:
- /* timeout or readable/writable sockets */
- curl_multi_perform(multi_handle, &file->still_running);
- break;
- }
- } while(file->still_running && (file->buffer_pos < want));
- return 1;
-}
-
-/* use to remove want bytes from the front of a files buffer */
-static int use_buffer(URL_FILE *file, size_t want)
-{
- /* sort out buffer */
- if(file->buffer_pos <= want) {
- /* ditch buffer - write will recreate */
- free(file->buffer);
- file->buffer = NULL;
- file->buffer_pos = 0;
- file->buffer_len = 0;
- }
- else {
- /* move rest down make it available for later */
- memmove(file->buffer,
- &file->buffer[want],
- (file->buffer_pos - want));
-
- file->buffer_pos -= want;
- }
- return 0;
-}
-
-URL_FILE *url_fopen(const char *url, const char *operation)
-{
- /* this code could check for URLs or types in the 'url' and
- basically use the real fopen() for standard files */
-
- URL_FILE *file;
- (void)operation;
-
- file = calloc(1, sizeof(URL_FILE));
- if(!file)
- return NULL;
-
- file->handle.file = fopen(url, operation);
- if(file->handle.file)
- file->type = CFTYPE_FILE; /* marked as URL */
-
- else {
- file->type = CFTYPE_CURL; /* marked as URL */
- file->handle.curl = curl_easy_init();
-
- curl_easy_setopt(file->handle.curl, CURLOPT_URL, url);
- curl_easy_setopt(file->handle.curl, CURLOPT_WRITEDATA, file);
- curl_easy_setopt(file->handle.curl, CURLOPT_VERBOSE, 0L);
- curl_easy_setopt(file->handle.curl, CURLOPT_WRITEFUNCTION, write_callback);
-
- if(!multi_handle)
- multi_handle = curl_multi_init();
-
- curl_multi_add_handle(multi_handle, file->handle.curl);
-
- /* lets start the fetch */
- curl_multi_perform(multi_handle, &file->still_running);
-
- if((file->buffer_pos == 0) && (!file->still_running)) {
- /* if still_running is 0 now, we should return NULL */
-
- /* make sure the easy handle is not in the multi handle anymore */
- curl_multi_remove_handle(multi_handle, file->handle.curl);
-
- /* cleanup */
- curl_easy_cleanup(file->handle.curl);
-
- free(file);
-
- file = NULL;
- }
- }
- return file;
-}
-
-int url_fclose(URL_FILE *file)
-{
- int ret = 0;/* default is good return */
-
- switch(file->type) {
- case CFTYPE_FILE:
- ret = fclose(file->handle.file); /* passthrough */
- break;
-
- case CFTYPE_CURL:
- /* make sure the easy handle is not in the multi handle anymore */
- curl_multi_remove_handle(multi_handle, file->handle.curl);
-
- /* cleanup */
- curl_easy_cleanup(file->handle.curl);
- break;
-
- default: /* unknown or supported type - oh dear */
- ret = EOF;
- errno = EBADF;
- break;
- }
-
- free(file->buffer);/* free any allocated buffer space */
- free(file);
-
- return ret;
-}
-
-int url_feof(URL_FILE *file)
-{
- int ret = 0;
-
- switch(file->type) {
- case CFTYPE_FILE:
- ret = feof(file->handle.file);
- break;
-
- case CFTYPE_CURL:
- if((file->buffer_pos == 0) && (!file->still_running))
- ret = 1;
- break;
-
- default: /* unknown or supported type - oh dear */
- ret = -1;
- errno = EBADF;
- break;
- }
- return ret;
-}
-
-size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
-{
- size_t want;
-
- switch(file->type) {
- case CFTYPE_FILE:
- want = fread(ptr, size, nmemb, file->handle.file);
- break;
-
- case CFTYPE_CURL:
- want = nmemb * size;
-
- fill_buffer(file, want);
-
- /* check if there's data in the buffer - if not fill_buffer()
- * either errored or EOF */
- if(!file->buffer_pos)
- return 0;
-
- /* ensure only available data is considered */
- if(file->buffer_pos < want)
- want = file->buffer_pos;
-
- /* xfer data to caller */
- memcpy(ptr, file->buffer, want);
-
- use_buffer(file, want);
-
- want = want / size; /* number of items */
- break;
-
- default: /* unknown or supported type - oh dear */
- want = 0;
- errno = EBADF;
- break;
-
- }
- return want;
-}
-
-char *url_fgets(char *ptr, size_t size, URL_FILE *file)
-{
- size_t want = size - 1;/* always need to leave room for zero termination */
- size_t loop;
-
- switch(file->type) {
- case CFTYPE_FILE:
- ptr = fgets(ptr, (int)size, file->handle.file);
- break;
-
- case CFTYPE_CURL:
- fill_buffer(file, want);
-
- /* check if there's data in the buffer - if not fill either errored or
- * EOF */
- if(!file->buffer_pos)
- return NULL;
-
- /* ensure only available data is considered */
- if(file->buffer_pos < want)
- want = file->buffer_pos;
-
- /*buffer contains data */
- /* look for newline or eof */
- for(loop = 0; loop < want; loop++) {
- if(file->buffer[loop] == '\n') {
- want = loop + 1;/* include newline */
- break;
- }
- }
-
- /* xfer data to caller */
- memcpy(ptr, file->buffer, want);
- ptr[want] = 0;/* always null terminate */
-
- use_buffer(file, want);
-
- break;
-
- default: /* unknown or supported type - oh dear */
- ptr = NULL;
- errno = EBADF;
- break;
- }
-
- return ptr;/*success */
-}
-
-void url_rewind(URL_FILE *file)
-{
- switch(file->type) {
- case CFTYPE_FILE:
- rewind(file->handle.file); /* passthrough */
- break;
-
- case CFTYPE_CURL:
- /* halt transaction */
- curl_multi_remove_handle(multi_handle, file->handle.curl);
-
- /* restart */
- curl_multi_add_handle(multi_handle, file->handle.curl);
-
- /* ditch buffer - write will recreate - resets stream pos*/
- free(file->buffer);
- file->buffer = NULL;
- file->buffer_pos = 0;
- file->buffer_len = 0;
-
- break;
-
- default: /* unknown or supported type - oh dear */
- break;
- }
-}
-
-#define FGETSFILE "fgets.test"
-#define FREADFILE "fread.test"
-#define REWINDFILE "rewind.test"
-
-/* Small main program to retrieve from a url using fgets and fread saving the
- * output to two test files (note the fgets method will corrupt binary files if
- * they contain 0 chars */
-int main(int argc, char *argv[])
-{
- URL_FILE *handle;
- FILE *outf;
-
- size_t nread;
- char buffer[256];
- const char *url;
-
- if(argc < 2)
- url = "http://192.168.7.3/testfile";/* default to testurl */
- else
- url = argv[1];/* use passed url */
-
- /* copy from url line by line with fgets */
- outf = fopen(FGETSFILE, "wb+");
- if(!outf) {
- perror("couldn't open fgets output file\n");
- return 1;
- }
-
- handle = url_fopen(url, "r");
- if(!handle) {
- printf("couldn't url_fopen() %s\n", url);
- fclose(outf);
- return 2;
- }
-
- while(!url_feof(handle)) {
- url_fgets(buffer, sizeof(buffer), handle);
- fwrite(buffer, 1, strlen(buffer), outf);
- }
-
- url_fclose(handle);
-
- fclose(outf);
-
-
- /* Copy from url with fread */
- outf = fopen(FREADFILE, "wb+");
- if(!outf) {
- perror("couldn't open fread output file\n");
- return 1;
- }
-
- handle = url_fopen("testfile", "r");
- if(!handle) {
- printf("couldn't url_fopen() testfile\n");
- fclose(outf);
- return 2;
- }
-
- do {
- nread = url_fread(buffer, 1, sizeof(buffer), handle);
- fwrite(buffer, 1, nread, outf);
- } while(nread);
-
- url_fclose(handle);
-
- fclose(outf);
-
-
- /* Test rewind */
- outf = fopen(REWINDFILE, "wb+");
- if(!outf) {
- perror("couldn't open fread output file\n");
- return 1;
- }
-
- handle = url_fopen("testfile", "r");
- if(!handle) {
- printf("couldn't url_fopen() testfile\n");
- fclose(outf);
- return 2;
- }
-
- nread = url_fread(buffer, 1, sizeof(buffer), handle);
- fwrite(buffer, 1, nread, outf);
- url_rewind(handle);
-
- buffer[0]='\n';
- fwrite(buffer, 1, 1, outf);
-
- nread = url_fread(buffer, 1, sizeof(buffer), handle);
- fwrite(buffer, 1, nread, outf);
-
- url_fclose(handle);
-
- fclose(outf);
-
- return 0;/* all done */
-}
diff --git a/docs/examples/ftp-wildcard.c b/docs/examples/ftp-wildcard.c
index 14f5d5d3c..9c1c913f1 100644
--- a/docs/examples/ftp-wildcard.c
+++ b/docs/examples/ftp-wildcard.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* FTP wildcard pattern matching
@@ -77,7 +79,7 @@ int main(int argc, char **argv)
/* curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); */
- /* set an URL containing wildcard pattern (only in the last part) */
+ /* set a URL containing wildcard pattern (only in the last part) */
if(argc == 2)
curl_easy_setopt(handle, CURLOPT_URL, argv[1]);
else
diff --git a/docs/examples/ftpget.c b/docs/examples/ftpget.c
index ad9a383e7..3229dbf7b 100644
--- a/docs/examples/ftpget.c
+++ b/docs/examples/ftpget.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <stdio.h>
diff --git a/docs/examples/ftpgetinfo.c b/docs/examples/ftpgetinfo.c
index 89ffe755a..d95753d3e 100644
--- a/docs/examples/ftpgetinfo.c
+++ b/docs/examples/ftpgetinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <stdio.h>
#include <string.h>
@@ -44,7 +46,7 @@ int main(void)
CURL *curl;
CURLcode res;
long filetime = -1;
- double filesize = 0.0;
+ curl_off_t filesize = 0;
const char *filename = strrchr(ftpurl, '/') + 1;
curl_global_init(CURL_GLOBAL_DEFAULT);
@@ -70,10 +72,11 @@ int main(void)
time_t file_time = (time_t)filetime;
printf("filetime %s: %s", filename, ctime(&file_time));
}
- res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
+ res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
&filesize);
- if((CURLE_OK == res) && (filesize>0.0))
- printf("filesize %s: %0.0f bytes\n", filename, filesize);
+ if((CURLE_OK == res) && (filesize>0))
+ printf("filesize %s: %" CURL_FORMAT_CURL_OFF_T " bytes\n",
+ filename, filesize);
}
else {
/* we failed */
diff --git a/docs/examples/ftpgetresp.c b/docs/examples/ftpgetresp.c
index 93945ed38..1bee903db 100644
--- a/docs/examples/ftpgetresp.c
+++ b/docs/examples/ftpgetresp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <stdio.h>
diff --git a/docs/examples/ftpsget.c b/docs/examples/ftpsget.c
index 9fcbceda8..521ad5cb6 100644
--- a/docs/examples/ftpsget.c
+++ b/docs/examples/ftpsget.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <stdio.h>
diff --git a/docs/examples/ftpupload.c b/docs/examples/ftpupload.c
index 75356d86a..046166a43 100644
--- a/docs/examples/ftpupload.c
+++ b/docs/examples/ftpupload.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <stdio.h>
#include <string.h>
diff --git a/docs/examples/ftpuploadfrommem.c b/docs/examples/ftpuploadfrommem.c
index fbbc01b12..b32020e80 100644
--- a/docs/examples/ftpuploadfrommem.c
+++ b/docs/examples/ftpuploadfrommem.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* FTP upload a file from memory
diff --git a/docs/examples/ftpuploadresume.c b/docs/examples/ftpuploadresume.c
index 50166bfef..5014e3f23 100644
--- a/docs/examples/ftpuploadresume.c
+++ b/docs/examples/ftpuploadresume.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Upload to FTP, resuming failed transfers.
@@ -84,7 +86,7 @@ static int upload(CURL *curlhandle, const char *remotepath,
curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
if(timeout)
- curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);
+ curl_easy_setopt(curlhandle, CURLOPT_SERVER_RESPONSE_TIMEOUT, timeout);
curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
curl_easy_setopt(curlhandle, CURLOPT_HEADERDATA, &uploaded_len);
diff --git a/docs/examples/getinfo.c b/docs/examples/getinfo.c
index bd18384c0..d63b030aa 100644
--- a/docs/examples/getinfo.c
+++ b/docs/examples/getinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Use getinfo to get content-type after completed transfer.
diff --git a/docs/examples/getinmemory.c b/docs/examples/getinmemory.c
index fcb97eab0..085ece7b7 100644
--- a/docs/examples/getinmemory.c
+++ b/docs/examples/getinmemory.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Shows how the write callback function can be used to download data into a
diff --git a/docs/examples/getredirect.c b/docs/examples/getredirect.c
index 97da94316..85ea382b7 100644
--- a/docs/examples/getredirect.c
+++ b/docs/examples/getredirect.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Show how to extract Location: header and URL to redirect to.
diff --git a/docs/examples/getreferrer.c b/docs/examples/getreferrer.c
index faefc619a..d320c104d 100644
--- a/docs/examples/getreferrer.c
+++ b/docs/examples/getreferrer.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Show how to extract referrer header.
diff --git a/docs/examples/ghiper.c b/docs/examples/ghiper.c
index 9ebc056fd..e18ca6e5b 100644
--- a/docs/examples/ghiper.c
+++ b/docs/examples/ghiper.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* multi socket API usage together with with glib2
diff --git a/docs/examples/headerapi.c b/docs/examples/headerapi.c
new file mode 100644
index 000000000..58c858629
--- /dev/null
+++ b/docs/examples/headerapi.c
@@ -0,0 +1,81 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Extract headers post transfer with the header API
+ * </DESC>
+ */
+#include <stdio.h>
+#include <curl/curl.h>
+
+static size_t write_cb(char *data, size_t n, size_t l, void *userp)
+{
+ /* take care of the data here, ignored in this example */
+ (void)data;
+ (void)userp;
+ return n*l;
+}
+
+int main(void)
+{
+ CURL *curl;
+
+ curl = curl_easy_init();
+ if(curl) {
+ CURLcode res;
+ struct curl_header *header;
+ curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+ /* example.com is redirected, so we tell libcurl to follow redirection */
+ curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+
+ /* this example just ignores the content */
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
+
+ /* 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));
+
+ if(CURLHE_OK == curl_easy_header(curl, "Content-Type", 0, CURLH_HEADER,
+ -1, &header))
+ printf("Got content-type: %s\n", header->value);
+
+ printf("All server headers:\n");
+ {
+ struct curl_header *h;
+ struct curl_header *prev = NULL;
+ do {
+ h = curl_easy_nextheader(curl, CURLH_HEADER, -1, prev);
+ if(h)
+ printf(" %s: %s (%u)\n", h->name, h->value, (int)h->amount);
+ prev = h;
+ } while(h);
+
+ }
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ }
+ return 0;
+}
diff --git a/docs/examples/hiperfifo.c b/docs/examples/hiperfifo.c
index 5af990071..ea0cdb185 100644
--- a/docs/examples/hiperfifo.c
+++ b/docs/examples/hiperfifo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* multi socket API usage with libevent 2
diff --git a/docs/examples/href_extractor.c b/docs/examples/href_extractor.c
index eb0c7297d..b73157b8d 100644
--- a/docs/examples/href_extractor.c
+++ b/docs/examples/href_extractor.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/htmltidy.c b/docs/examples/htmltidy.c
index 73ac6fb88..97e3eac73 100644
--- a/docs/examples/htmltidy.c
+++ b/docs/examples/htmltidy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Download a document and use libtidy to parse the HTML.
diff --git a/docs/examples/htmltitle.cpp b/docs/examples/htmltitle.cpp
index 3baba6f64..b5c78f796 100644
--- a/docs/examples/htmltitle.cpp
+++ b/docs/examples/htmltitle.cpp
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Get a web page, extract the title with libxml.
diff --git a/docs/examples/http-post.c b/docs/examples/http-post.c
index 4807a731f..df0e5a7a4 100644
--- a/docs/examples/http-post.c
+++ b/docs/examples/http-post.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* simple HTTP POST using the easy interface
diff --git a/docs/examples/http2-download.c b/docs/examples/http2-download.c
index cb0ef13ac..e88f578cd 100644
--- a/docs/examples/http2-download.c
+++ b/docs/examples/http2-download.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Multiplexed HTTP/2 downloads over a single connection
diff --git a/docs/examples/http2-pushinmemory.c b/docs/examples/http2-pushinmemory.c
index a9c364859..78273c9db 100644
--- a/docs/examples/http2-pushinmemory.c
+++ b/docs/examples/http2-pushinmemory.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP/2 server push. Receive all data in memory.
diff --git a/docs/examples/http2-serverpush.c b/docs/examples/http2-serverpush.c
index b7c16371a..f27935516 100644
--- a/docs/examples/http2-serverpush.c
+++ b/docs/examples/http2-serverpush.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP/2 server push
diff --git a/docs/examples/http2-upload.c b/docs/examples/http2-upload.c
index 742177f69..d0d54695e 100644
--- a/docs/examples/http2-upload.c
+++ b/docs/examples/http2-upload.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Multiplexed HTTP/2 uploads over a single connection
diff --git a/docs/examples/http3-present.c b/docs/examples/http3-present.c
index f0dc7aa6c..3e189203c 100644
--- a/docs/examples/http3-present.c
+++ b/docs/examples/http3-present.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Checks if HTTP/3 support is present in libcurl.
diff --git a/docs/examples/http3.c b/docs/examples/http3.c
index 8553e3ac8..6463ccfd0 100644
--- a/docs/examples/http3.c
+++ b/docs/examples/http3.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Very simple HTTP/3 GET
diff --git a/docs/examples/httpcustomheader.c b/docs/examples/httpcustomheader.c
index f431177f2..c72a474e0 100644
--- a/docs/examples/httpcustomheader.c
+++ b/docs/examples/httpcustomheader.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP request with custom modified, removed and added headers
diff --git a/docs/examples/httpput-postfields.c b/docs/examples/httpput-postfields.c
index eb74eb9d7..f8a5c43a6 100644
--- a/docs/examples/httpput-postfields.c
+++ b/docs/examples/httpput-postfields.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP PUT using CURLOPT_POSTFIELDS
@@ -35,8 +37,10 @@ static const char olivertwist[]=
"small: to wit, a workhouse; and in this workhouse was born; on a day and "
"date which I need not trouble myself to repeat, inasmuch as it can be of "
"no possible consequence to the reader, in this stage of the business at "
- "all events; the item of mortality whose name is prefixed to the head of "
- "this chapter.";
+ "all events; the item of mortality whose name is prefixed";
+
+/* ... to the head of this chapter. String cut off to stick within the C90
+ 509 byte limit. */
/*
* This example shows a HTTP PUT operation that sends a fixed buffer with
diff --git a/docs/examples/httpput.c b/docs/examples/httpput.c
index 7fd027819..00ad99cb7 100644
--- a/docs/examples/httpput.c
+++ b/docs/examples/httpput.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP PUT with easy interface and read callback
diff --git a/docs/examples/https.c b/docs/examples/https.c
index 675441a17..7be330a8e 100644
--- a/docs/examples/https.c
+++ b/docs/examples/https.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Simple HTTPS GET
diff --git a/docs/examples/imap-append.c b/docs/examples/imap-append.c
index 045f896b8..b66d8687e 100644
--- a/docs/examples/imap-append.c
+++ b/docs/examples/imap-append.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-authzid.c b/docs/examples/imap-authzid.c
index cf8ea1084..62eca4a68 100644
--- a/docs/examples/imap-authzid.c
+++ b/docs/examples/imap-authzid.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
@@ -45,7 +47,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
- /* Set the authorisation identity (identity to act as) */
+ /* Set the authorization identity (identity to act as) */
curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "shared-mailbox");
/* Force PLAIN authentication */
diff --git a/docs/examples/imap-copy.c b/docs/examples/imap-copy.c
index 08506c552..81ec5be70 100644
--- a/docs/examples/imap-copy.c
+++ b/docs/examples/imap-copy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-create.c b/docs/examples/imap-create.c
index edb7daa4a..12e7113f3 100644
--- a/docs/examples/imap-create.c
+++ b/docs/examples/imap-create.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-delete.c b/docs/examples/imap-delete.c
index 9eaf8d726..467b06010 100644
--- a/docs/examples/imap-delete.c
+++ b/docs/examples/imap-delete.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-examine.c b/docs/examples/imap-examine.c
index 6bc1c9491..68cc63693 100644
--- a/docs/examples/imap-examine.c
+++ b/docs/examples/imap-examine.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-fetch.c b/docs/examples/imap-fetch.c
index d8356e23c..d6237c386 100644
--- a/docs/examples/imap-fetch.c
+++ b/docs/examples/imap-fetch.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-list.c b/docs/examples/imap-list.c
index 90b556d47..85bddac07 100644
--- a/docs/examples/imap-list.c
+++ b/docs/examples/imap-list.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-lsub.c b/docs/examples/imap-lsub.c
index 0597edd7b..1b22fa1e2 100644
--- a/docs/examples/imap-lsub.c
+++ b/docs/examples/imap-lsub.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-multi.c b/docs/examples/imap-multi.c
index d4ad95828..3b5c63368 100644
--- a/docs/examples/imap-multi.c
+++ b/docs/examples/imap-multi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-noop.c b/docs/examples/imap-noop.c
index 3cea5ca43..ee1a7772d 100644
--- a/docs/examples/imap-noop.c
+++ b/docs/examples/imap-noop.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-search.c b/docs/examples/imap-search.c
index 2ef6941aa..7b175b27c 100644
--- a/docs/examples/imap-search.c
+++ b/docs/examples/imap-search.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-ssl.c b/docs/examples/imap-ssl.c
index e43639e16..5b0befbc2 100644
--- a/docs/examples/imap-ssl.c
+++ b/docs/examples/imap-ssl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-store.c b/docs/examples/imap-store.c
index fb45fc403..6a4c75677 100644
--- a/docs/examples/imap-store.c
+++ b/docs/examples/imap-store.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/imap-tls.c b/docs/examples/imap-tls.c
index d8b587d66..dbebbc722 100644
--- a/docs/examples/imap-tls.c
+++ b/docs/examples/imap-tls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/makefile.dj b/docs/examples/makefile.dj
index 3a1f05c01..9f0de6690 100644
--- a/docs/examples/makefile.dj
+++ b/docs/examples/makefile.dj
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
TOPDIR = ../..
diff --git a/docs/examples/multi-app.c b/docs/examples/multi-app.c
index 58ad03f81..813623865 100644
--- a/docs/examples/multi-app.c
+++ b/docs/examples/multi-app.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* A basic application source code using the multi interface doing two
@@ -104,11 +106,13 @@ int main(void)
}
}
- curl_multi_cleanup(multi_handle);
-
- /* Free the CURL handles */
- for(i = 0; i<HANDLECOUNT; i++)
+ /* remove the transfers and cleanup the handles */
+ for(i = 0; i<HANDLECOUNT; i++) {
+ curl_multi_remove_handle(multi_handle, handles[i]);
curl_easy_cleanup(handles[i]);
+ }
+
+ curl_multi_cleanup(multi_handle);
return 0;
}
diff --git a/docs/examples/multi-debugcallback.c b/docs/examples/multi-debugcallback.c
index b173b724f..16d5d56ca 100644
--- a/docs/examples/multi-debugcallback.c
+++ b/docs/examples/multi-debugcallback.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* multi interface and debug callback
diff --git a/docs/examples/multi-double.c b/docs/examples/multi-double.c
index efcace0e7..b9bba520d 100644
--- a/docs/examples/multi-double.c
+++ b/docs/examples/multi-double.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* multi interface code doing two parallel HTTP transfers
diff --git a/docs/examples/multi-event.c b/docs/examples/multi-event.c
index 6da85134b..4f61f5e4b 100644
--- a/docs/examples/multi-event.c
+++ b/docs/examples/multi-event.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/multi-formadd.c b/docs/examples/multi-formadd.c
index b9defd452..e62de32ab 100644
--- a/docs/examples/multi-formadd.c
+++ b/docs/examples/multi-formadd.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,12 +18,19 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* using the multi interface to do a multipart formpost without blocking
* </DESC>
*/
+/*
+ * Warning: this example uses the deprecated form api. See "multi-post.c"
+ * for a similar example using the mime api.
+ */
+
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
@@ -47,14 +54,14 @@ int main(void)
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "sendfile",
- CURLFORM_FILE, "postit2.c",
+ CURLFORM_FILE, "multi-formadd.c",
CURLFORM_END);
/* Fill in the filename field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "filename",
- CURLFORM_COPYCONTENTS, "postit2.c",
+ CURLFORM_COPYCONTENTS, "multi-formadd.c",
CURLFORM_END);
/* Fill in the submit field too, even if this is rarely needed */
diff --git a/docs/examples/multi-legacy.c b/docs/examples/multi-legacy.c
index 85ec55d0f..f9bc699dd 100644
--- a/docs/examples/multi-legacy.c
+++ b/docs/examples/multi-legacy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* A basic application source code using the multi interface doing two
diff --git a/docs/examples/multi-post.c b/docs/examples/multi-post.c
index a7af0408c..c141c68e9 100644
--- a/docs/examples/multi-post.c
+++ b/docs/examples/multi-post.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* using the multi interface to do a multipart formpost without blocking
diff --git a/docs/examples/multi-single.c b/docs/examples/multi-single.c
index d7d1fb3ed..373ede34b 100644
--- a/docs/examples/multi-single.c
+++ b/docs/examples/multi-single.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* using the multi interface to do a single download
diff --git a/docs/examples/multi-uv.c b/docs/examples/multi-uv.c
index f8985a8d7..fe7b357e8 100644
--- a/docs/examples/multi-uv.c
+++ b/docs/examples/multi-uv.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/multithread.c b/docs/examples/multithread.c
index 003c312cd..4f2c85574 100644
--- a/docs/examples/multithread.c
+++ b/docs/examples/multithread.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* A multi-threaded example that uses pthreads to fetch several files at once
diff --git a/docs/examples/opensslthreadlock.c b/docs/examples/opensslthreadlock.c
index dac987ec6..a7de777ca 100644
--- a/docs/examples/opensslthreadlock.c
+++ b/docs/examples/opensslthreadlock.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* one way to set the necessary OpenSSL locking callbacks if you want to do
diff --git a/docs/examples/parseurl.c b/docs/examples/parseurl.c
index 0c84eeeb7..d6682d70b 100644
--- a/docs/examples/parseurl.c
+++ b/docs/examples/parseurl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Basic URL API use.
diff --git a/docs/examples/persistent.c b/docs/examples/persistent.c
index 390d7b191..6ddfc40ac 100644
--- a/docs/examples/persistent.c
+++ b/docs/examples/persistent.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* re-using handles to do HTTP persistent connections
diff --git a/docs/examples/pop3-authzid.c b/docs/examples/pop3-authzid.c
index f6b9fe87a..8e0c2f2c6 100644
--- a/docs/examples/pop3-authzid.c
+++ b/docs/examples/pop3-authzid.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
@@ -45,7 +47,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
- /* Set the authorisation identity (identity to act as) */
+ /* Set the authorization identity (identity to act as) */
curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "shared-mailbox");
/* Force PLAIN authentication */
diff --git a/docs/examples/pop3-dele.c b/docs/examples/pop3-dele.c
index ff732d14c..d0281cb76 100644
--- a/docs/examples/pop3-dele.c
+++ b/docs/examples/pop3-dele.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-list.c b/docs/examples/pop3-list.c
index 7ed072d5e..991ff2417 100644
--- a/docs/examples/pop3-list.c
+++ b/docs/examples/pop3-list.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-multi.c b/docs/examples/pop3-multi.c
index c819aab08..69a108857 100644
--- a/docs/examples/pop3-multi.c
+++ b/docs/examples/pop3-multi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-noop.c b/docs/examples/pop3-noop.c
index db385f2e4..a3ecb8821 100644
--- a/docs/examples/pop3-noop.c
+++ b/docs/examples/pop3-noop.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-retr.c b/docs/examples/pop3-retr.c
index 39b0e96a4..1df065716 100644
--- a/docs/examples/pop3-retr.c
+++ b/docs/examples/pop3-retr.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-ssl.c b/docs/examples/pop3-ssl.c
index be492890c..6f3455a69 100644
--- a/docs/examples/pop3-ssl.c
+++ b/docs/examples/pop3-ssl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-stat.c b/docs/examples/pop3-stat.c
index 7350dc964..3df35719d 100644
--- a/docs/examples/pop3-stat.c
+++ b/docs/examples/pop3-stat.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-tls.c b/docs/examples/pop3-tls.c
index 496a3de2d..d58b5e49a 100644
--- a/docs/examples/pop3-tls.c
+++ b/docs/examples/pop3-tls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-top.c b/docs/examples/pop3-top.c
index 696570b8d..c63b43c73 100644
--- a/docs/examples/pop3-top.c
+++ b/docs/examples/pop3-top.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/pop3-uidl.c b/docs/examples/pop3-uidl.c
index 3dc8a5a62..308de3b44 100644
--- a/docs/examples/pop3-uidl.c
+++ b/docs/examples/pop3-uidl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/post-callback.c b/docs/examples/post-callback.c
index f9c816036..dabcef056 100644
--- a/docs/examples/post-callback.c
+++ b/docs/examples/post-callback.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Issue an HTTP POST and provide the data through the read callback.
diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c
index d0f797042..bbe145773 100644
--- a/docs/examples/postinmemory.c
+++ b/docs/examples/postinmemory.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Make a HTTP POST with data from memory and receive response in memory.
diff --git a/docs/examples/postit2-formadd.c b/docs/examples/postit2-formadd.c
index cef89f6c9..502776960 100644
--- a/docs/examples/postit2-formadd.c
+++ b/docs/examples/postit2-formadd.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,14 +18,21 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP Multipart formpost with file upload and two additional parts.
* </DESC>
*/
-/* Example code that uploads a file name 'foo' to a remote script that accepts
+
+/*
+ * Example code that uploads a file name 'foo' to a remote script that accepts
* "HTML form based" (as described in RFC1738) uploads using HTTP POST.
*
+ * Warning: this example uses the deprecated form api. See "postit2.c"
+ * for a similar example using the mime api.
+ *
* The imaginary form we will fill in looks like:
*
* <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
@@ -33,7 +40,6 @@
* Enter file name: <input type="text" name="filename" size="30">
* <input type="submit" value="send" name="submit">
* </form>
- *
*/
#include <stdio.h>
@@ -57,14 +63,14 @@ int main(int argc, char *argv[])
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "sendfile",
- CURLFORM_FILE, "postit2.c",
+ CURLFORM_FILE, "postit2-formadd.c",
CURLFORM_END);
/* Fill in the filename field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "filename",
- CURLFORM_COPYCONTENTS, "postit2.c",
+ CURLFORM_COPYCONTENTS, "postit2-formadd.c",
CURLFORM_END);
diff --git a/docs/examples/postit2.c b/docs/examples/postit2.c
index 923fead4a..5e9c609d3 100644
--- a/docs/examples/postit2.c
+++ b/docs/examples/postit2.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* HTTP Multipart formpost with file upload and two additional parts.
diff --git a/docs/examples/progressfunc.c b/docs/examples/progressfunc.c
index 56889df66..be32b67aa 100644
--- a/docs/examples/progressfunc.c
+++ b/docs/examples/progressfunc.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Use the progress callbacks, old and/or new one depending on available
diff --git a/docs/examples/resolve.c b/docs/examples/resolve.c
index 88e528568..40bdfb345 100644
--- a/docs/examples/resolve.c
+++ b/docs/examples/resolve.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Use CURLOPT_RESOLVE to feed custom IP addresses for given host name + port
diff --git a/docs/examples/rtsp.c b/docs/examples/rtsp.c
deleted file mode 100644
index ca6bcfe13..000000000
--- a/docs/examples/rtsp.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Copyright (c) 2011 - 2021, Jim Hollinger
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- * * Neither the name of Jim Hollinger 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 COPYRIGHT HOLDERS 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 COPYRIGHT
- * OWNER 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.
- *
- */
-/* <DESC>
- * A basic RTSP transfer
- * </DESC>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined (WIN32)
-# include <conio.h> /* _getch() */
-#else
-# include <termios.h>
-# include <unistd.h>
-
-static int _getch(void)
-{
- struct termios oldt, newt;
- int ch;
- tcgetattr(STDIN_FILENO, &oldt);
- newt = oldt;
- newt.c_lflag &= ~( ICANON | ECHO);
- tcsetattr(STDIN_FILENO, TCSANOW, &newt);
- ch = getchar();
- tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
- return ch;
-}
-#endif
-
-#include <curl/curl.h>
-
-#define VERSION_STR "V1.0"
-
-/* error handling macros */
-#define my_curl_easy_setopt(A, B, C) \
- do { \
- res = curl_easy_setopt((A), (B), (C)); \
- if(res != CURLE_OK) \
- fprintf(stderr, "curl_easy_setopt(%s, %s, %s) failed: %d\n", \
- #A, #B, #C, res); \
- } while(0)
-
-#define my_curl_easy_perform(A) \
- do { \
- res = curl_easy_perform(A); \
- if(res != CURLE_OK) \
- fprintf(stderr, "curl_easy_perform(%s) failed: %d\n", #A, res); \
- } while(0)
-
-/* send RTSP OPTIONS request */
-static void rtsp_options(CURL *curl, const char *uri)
-{
- CURLcode res = CURLE_OK;
- printf("\nRTSP: OPTIONS %s\n", uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_OPTIONS);
- my_curl_easy_perform(curl);
-}
-
-
-/* send RTSP DESCRIBE request and write sdp response to a file */
-static void rtsp_describe(CURL *curl, const char *uri,
- const char *sdp_filename)
-{
- CURLcode res = CURLE_OK;
- FILE *sdp_fp = fopen(sdp_filename, "wb");
- printf("\nRTSP: DESCRIBE %s\n", uri);
- if(!sdp_fp) {
- fprintf(stderr, "Could not open '%s' for writing\n", sdp_filename);
- sdp_fp = stdout;
- }
- else {
- printf("Writing SDP to '%s'\n", sdp_filename);
- }
- my_curl_easy_setopt(curl, CURLOPT_WRITEDATA, sdp_fp);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_DESCRIBE);
- my_curl_easy_perform(curl);
- my_curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
- if(sdp_fp != stdout) {
- fclose(sdp_fp);
- }
-}
-
-/* send RTSP SETUP request */
-static void rtsp_setup(CURL *curl, const char *uri, const char *transport)
-{
- CURLcode res = CURLE_OK;
- printf("\nRTSP: SETUP %s\n", uri);
- printf(" TRANSPORT %s\n", transport);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_TRANSPORT, transport);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_SETUP);
- my_curl_easy_perform(curl);
-}
-
-
-/* send RTSP PLAY request */
-static void rtsp_play(CURL *curl, const char *uri, const char *range)
-{
- CURLcode res = CURLE_OK;
- printf("\nRTSP: PLAY %s\n", uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
- my_curl_easy_setopt(curl, CURLOPT_RANGE, range);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_PLAY);
- my_curl_easy_perform(curl);
-
- /* switch off using range again */
- my_curl_easy_setopt(curl, CURLOPT_RANGE, NULL);
-}
-
-
-/* send RTSP TEARDOWN request */
-static void rtsp_teardown(CURL *curl, const char *uri)
-{
- CURLcode res = CURLE_OK;
- printf("\nRTSP: TEARDOWN %s\n", uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_TEARDOWN);
- my_curl_easy_perform(curl);
-}
-
-
-/* convert url into an sdp filename */
-static void get_sdp_filename(const char *url, char *sdp_filename,
- size_t namelen)
-{
- const char *s = strrchr(url, '/');
- strcpy(sdp_filename, "video.sdp");
- if(s) {
- s++;
- if(s[0] != '\0') {
- snprintf(sdp_filename, namelen, "%s.sdp", s);
- }
- }
-}
-
-
-/* scan sdp file for media control attribute */
-static void get_media_control_attribute(const char *sdp_filename,
- char *control)
-{
- int max_len = 256;
- char *s = malloc(max_len);
- FILE *sdp_fp = fopen(sdp_filename, "rb");
- control[0] = '\0';
- if(sdp_fp) {
- while(fgets(s, max_len - 2, sdp_fp)) {
- sscanf(s, " a = control: %32s", control);
- }
- fclose(sdp_fp);
- }
- free(s);
-}
-
-
-/* main app */
-int main(int argc, char * const argv[])
-{
-#if 1
- const char *transport = "RTP/AVP;unicast;client_port=1234-1235"; /* UDP */
-#else
- /* TCP */
- const char *transport = "RTP/AVP/TCP;unicast;client_port=1234-1235";
-#endif
- const char *range = "0.000-";
- int rc = EXIT_SUCCESS;
- char *base_name = NULL;
-
- printf("\nRTSP request %s\n", VERSION_STR);
- printf(" Project website: "
- "https://github.com/BackupGGCode/rtsprequest\n");
- printf(" Requires curl V7.20 or greater\n\n");
-
- /* check command line */
- if((argc != 2) && (argc != 3)) {
- base_name = strrchr(argv[0], '/');
- if(!base_name) {
- base_name = strrchr(argv[0], '\\');
- }
- if(!base_name) {
- base_name = argv[0];
- }
- else {
- base_name++;
- }
- printf("Usage: %s url [transport]\n", base_name);
- printf(" url of video server\n");
- printf(" transport (optional) specifier for media stream"
- " protocol\n");
- printf(" default transport: %s\n", transport);
- printf("Example: %s rtsp://192.168.0.2/media/video1\n\n", base_name);
- rc = EXIT_FAILURE;
- }
- else {
- const char *url = argv[1];
- char *uri = malloc(strlen(url) + 32);
- char *sdp_filename = malloc(strlen(url) + 32);
- char *control = malloc(strlen(url) + 32);
- CURLcode res;
- get_sdp_filename(url, sdp_filename, strlen(url) + 32);
- if(argc == 3) {
- transport = argv[2];
- }
-
- /* initialize curl */
- res = curl_global_init(CURL_GLOBAL_ALL);
- if(res == CURLE_OK) {
- curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
- CURL *curl;
- fprintf(stderr, " curl V%s loaded\n", data->version);
-
- /* initialize this curl session */
- curl = curl_easy_init();
- if(curl) {
- my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
- my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
- my_curl_easy_setopt(curl, CURLOPT_HEADERDATA, stdout);
- my_curl_easy_setopt(curl, CURLOPT_URL, url);
-
- /* request server options */
- snprintf(uri, strlen(url) + 32, "%s", url);
- rtsp_options(curl, uri);
-
- /* request session description and write response to sdp file */
- rtsp_describe(curl, uri, sdp_filename);
-
- /* get media control attribute from sdp file */
- get_media_control_attribute(sdp_filename, control);
-
- /* setup media stream */
- snprintf(uri, strlen(url) + 32, "%s/%s", url, control);
- rtsp_setup(curl, uri, transport);
-
- /* start playing media stream */
- snprintf(uri, strlen(url) + 32, "%s/", url);
- rtsp_play(curl, uri, range);
- printf("Playing video, press any key to stop ...");
- _getch();
- printf("\n");
-
- /* teardown session */
- rtsp_teardown(curl, uri);
-
- /* cleanup */
- curl_easy_cleanup(curl);
- curl = NULL;
- }
- else {
- fprintf(stderr, "curl_easy_init() failed\n");
- }
- curl_global_cleanup();
- }
- else {
- fprintf(stderr, "curl_global_init(%s) failed: %d\n",
- "CURL_GLOBAL_ALL", res);
- }
- free(control);
- free(sdp_filename);
- free(uri);
- }
-
- return rc;
-}
diff --git a/docs/examples/sampleconv.c b/docs/examples/sampleconv.c
deleted file mode 100644
index 7aa169f1b..000000000
--- a/docs/examples/sampleconv.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * This is a simple example showing how a program on a non-ASCII platform
- * would invoke callbacks to do its own codeset conversions instead of
- * using the built-in iconv functions in libcurl.
- * </DESC>
- */
-/*
-
- The IBM-1047 EBCDIC codeset is used for this example but the code
- would be similar for other non-ASCII codesets.
-
- Three callback functions are created below:
- my_conv_from_ascii_to_ebcdic,
- my_conv_from_ebcdic_to_ascii, and
- my_conv_from_utf8_to_ebcdic
-
- The "platform_xxx" calls represent platform-specific conversion routines.
-
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-static CURLcode my_conv_from_ascii_to_ebcdic(char *buffer, size_t length)
-{
- char *tempptrin, *tempptrout;
- size_t bytes = length;
- int rc;
- tempptrin = tempptrout = buffer;
- rc = platform_a2e(&tempptrin, &bytes, &tempptrout, &bytes);
- if(rc == PLATFORM_CONV_OK) {
- return CURLE_OK;
- }
- else {
- return CURLE_CONV_FAILED;
- }
-}
-
-static CURLcode my_conv_from_ebcdic_to_ascii(char *buffer, size_t length)
-{
- char *tempptrin, *tempptrout;
- size_t bytes = length;
- int rc;
- tempptrin = tempptrout = buffer;
- rc = platform_e2a(&tempptrin, &bytes, &tempptrout, &bytes);
- if(rc == PLATFORM_CONV_OK) {
- return CURLE_OK;
- }
- else {
- return CURLE_CONV_FAILED;
- }
-}
-
-static CURLcode my_conv_from_utf8_to_ebcdic(char *buffer, size_t length)
-{
- char *tempptrin, *tempptrout;
- size_t bytes = length;
- int rc;
- tempptrin = tempptrout = buffer;
- rc = platform_u2e(&tempptrin, &bytes, &tempptrout, &bytes);
- if(rc == PLATFORM_CONV_OK) {
- return CURLE_OK;
- }
- else {
- return CURLE_CONV_FAILED;
- }
-}
-
-int main(void)
-{
- CURL *curl;
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-
- /* use platform-specific functions for codeset conversions */
- curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
- my_conv_from_ascii_to_ebcdic);
- curl_easy_setopt(curl, CURLOPT_CONV_TO_NETWORK_FUNCTION,
- my_conv_from_ebcdic_to_ascii);
- curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION,
- my_conv_from_utf8_to_ebcdic);
-
- curl_easy_perform(curl);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return 0;
-}
diff --git a/docs/examples/sendrecv.c b/docs/examples/sendrecv.c
index d8158466b..7da740a09 100644
--- a/docs/examples/sendrecv.c
+++ b/docs/examples/sendrecv.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* An example of curl_easy_send() and curl_easy_recv() usage.
diff --git a/docs/examples/sepheaders.c b/docs/examples/sepheaders.c
index cf057069c..a398d0568 100644
--- a/docs/examples/sepheaders.c
+++ b/docs/examples/sepheaders.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Simple HTTP GET that stores the headers in a separate file
diff --git a/docs/examples/sessioninfo.c b/docs/examples/sessioninfo.c
index 0d8d70807..4a848b9fe 100644
--- a/docs/examples/sessioninfo.c
+++ b/docs/examples/sessioninfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Uses the CURLINFO_TLS_SESSION data.
diff --git a/docs/examples/sftpget.c b/docs/examples/sftpget.c
index 3c74d2abc..05041b18b 100644
--- a/docs/examples/sftpget.c
+++ b/docs/examples/sftpget.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Gets a file using an SFTP URL.
diff --git a/docs/examples/sftpuploadresume.c b/docs/examples/sftpuploadresume.c
index 3ff58c4b1..7c72e5d09 100644
--- a/docs/examples/sftpuploadresume.c
+++ b/docs/examples/sftpuploadresume.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Upload to SFTP, resuming a previously aborted transfer.
diff --git a/docs/examples/shared-connection-cache.c b/docs/examples/shared-connection-cache.c
index 3c05c40d5..ac9eb5492 100644
--- a/docs/examples/shared-connection-cache.c
+++ b/docs/examples/shared-connection-cache.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Connection cache shared between easy handles with the share interface
diff --git a/docs/examples/simple.c b/docs/examples/simple.c
index cf8dd3d49..38134c394 100644
--- a/docs/examples/simple.c
+++ b/docs/examples/simple.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Very simple HTTP GET
diff --git a/docs/examples/simplepost.c b/docs/examples/simplepost.c
index 70252a41a..95564d75f 100644
--- a/docs/examples/simplepost.c
+++ b/docs/examples/simplepost.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Very simple HTTP POST
diff --git a/docs/examples/simplessl.c b/docs/examples/simplessl.c
index f34ee4740..879672b3f 100644
--- a/docs/examples/simplessl.c
+++ b/docs/examples/simplessl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Shows HTTPS usage with client certs and optional ssl engine use.
diff --git a/docs/examples/smooth-gtk-thread.c b/docs/examples/smooth-gtk-thread.c
index 231c0dd25..c9923746f 100644
--- a/docs/examples/smooth-gtk-thread.c
+++ b/docs/examples/smooth-gtk-thread.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* A multi threaded application that uses a progress bar to show
diff --git a/docs/examples/smtp-authzid.c b/docs/examples/smtp-authzid.c
index e3b95114b..d48a811c8 100644
--- a/docs/examples/smtp-authzid.c
+++ b/docs/examples/smtp-authzid.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
@@ -107,7 +109,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_USERNAME, "kurt");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "xipj3plmq");
- /* Set the authorisation identity (identity to act as) */
+ /* Set the authorization identity (identity to act as) */
curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "ursel");
/* Force PLAIN authentication */
diff --git a/docs/examples/smtp-expn.c b/docs/examples/smtp-expn.c
index f02b56d1d..6d9d4a4b8 100644
--- a/docs/examples/smtp-expn.c
+++ b/docs/examples/smtp-expn.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/smtp-mail.c b/docs/examples/smtp-mail.c
index df50f80f6..5f3fcfddb 100644
--- a/docs/examples/smtp-mail.c
+++ b/docs/examples/smtp-mail.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/smtp-mime.c b/docs/examples/smtp-mime.c
index 91dfe0530..ce95582b3 100644
--- a/docs/examples/smtp-mime.c
+++ b/docs/examples/smtp-mime.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/smtp-multi.c b/docs/examples/smtp-multi.c
index 4ba7ecb60..385827c0c 100644
--- a/docs/examples/smtp-multi.c
+++ b/docs/examples/smtp-multi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/smtp-ssl.c b/docs/examples/smtp-ssl.c
index 099dedb6c..70b204591 100644
--- a/docs/examples/smtp-ssl.c
+++ b/docs/examples/smtp-ssl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/smtp-tls.c b/docs/examples/smtp-tls.c
index 41024b1da..e30f4788e 100644
--- a/docs/examples/smtp-tls.c
+++ b/docs/examples/smtp-tls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/smtp-vrfy.c b/docs/examples/smtp-vrfy.c
index 3720351d3..e6815b6cb 100644
--- a/docs/examples/smtp-vrfy.c
+++ b/docs/examples/smtp-vrfy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
diff --git a/docs/examples/sslbackend.c b/docs/examples/sslbackend.c
index f1f66d527..e07d1905e 100644
--- a/docs/examples/sslbackend.c
+++ b/docs/examples/sslbackend.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Shows HTTPS usage with client certs and optional ssl engine use.
diff --git a/docs/examples/synctime.c b/docs/examples/synctime.c
index bdf047390..b617dd6ab 100644
--- a/docs/examples/synctime.c
+++ b/docs/examples/synctime.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Set your system time from a remote HTTP server's Date: header.
@@ -39,7 +41,7 @@
*
* Synchronising your computer clock via Internet time server usually relies
* on DAYTIME, TIME, or NTP protocols. These protocols provide good accurate
- * time synchronisation but it does not work very well through a
+ * time synchronization but it does not work very well through a
* firewall/proxy. Some adjustment has to be made to the firewall/proxy for
* these protocols to work properly.
*
diff --git a/docs/examples/threaded-ssl.c b/docs/examples/threaded-ssl.c
index e594b813b..09292c49a 100644
--- a/docs/examples/threaded-ssl.c
+++ b/docs/examples/threaded-ssl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Show the required mutex callback setups for GnuTLS and OpenSSL when using
diff --git a/docs/examples/url2file.c b/docs/examples/url2file.c
index 949f8a13f..c01bcf3e4 100644
--- a/docs/examples/url2file.c
+++ b/docs/examples/url2file.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Download a given URL into a local file named page.out.
diff --git a/docs/examples/urlapi.c b/docs/examples/urlapi.c
index 0c67480a1..11962abc5 100644
--- a/docs/examples/urlapi.c
+++ b/docs/examples/urlapi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Set working URL with CURLU *.
diff --git a/docs/examples/usercertinmem.c b/docs/examples/usercertinmem.c
index a31cbfcec..89a0c3c40 100644
--- a/docs/examples/usercertinmem.c
+++ b/docs/examples/usercertinmem.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Use an in-memory user certificate and RSA key and retrieve an https page.
diff --git a/docs/examples/version-check.pl b/docs/examples/version-check.pl
index 38f4ce825..aca37995a 100755
--- a/docs/examples/version-check.pl
+++ b/docs/examples/version-check.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# This script accepts a source file as input on the command line.
diff --git a/docs/examples/xmlstream.c b/docs/examples/xmlstream.c
index 0a8bff3d5..ae5963b95 100644
--- a/docs/examples/xmlstream.c
+++ b/docs/examples/xmlstream.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* <DESC>
* Stream-parse a document using the streaming Expat parser.
diff --git a/docs/libcurl/ABI.md b/docs/libcurl/ABI.md
index fcd6be44a..f03363327 100644
--- a/docs/libcurl/ABI.md
+++ b/docs/libcurl/ABI.md
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
ABI - Application Binary Interface
==================================
@@ -20,11 +26,11 @@ ABI - Application Binary Interface
we do not break the ABI so you can *always* upgrade to a later version without
any loss or change in functionality.
-## Soname Bumps
+## 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
- changed to adhere to new things, we will bump the soname. Then the library
+ changed to adhere to new things, we will bump the SONAME. Then the library
will get a different output name and thus can in fact be installed in
parallel with an older installed lib (on most systems). Thus, old
applications built against the previous ABI version will remain working and
@@ -33,8 +39,8 @@ ABI - Application Binary Interface
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.
+ We are determined to bump the SONAME as rarely as possible. Ideally, we never
+ do it again.
## Downgrades
@@ -44,11 +50,11 @@ ABI - Application Binary Interface
that going backwards may get you in a situation where you pick a libcurl that
does not support the options your application needs. Or possibly you even
downgrade so far so you cross an ABI break border and thus a different
- soname, and then your application may need to adapt to the modified ABI.
+ SONAME, and then your application may need to adapt to the modified ABI.
## History
- The previous major library soname number bumps (breaking backwards
+ The previous major library SONAME number bumps (breaking backwards
compatibility) happened the following times:
0 - libcurl 7.1, August 2000
diff --git a/docs/libcurl/CMakeLists.txt b/docs/libcurl/CMakeLists.txt
index 948a72121..e90d9bbd5 100644
--- a/docs/libcurl/CMakeLists.txt
+++ b/docs/libcurl/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Load man_MANS from shared file
transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
diff --git a/docs/libcurl/Makefile.am b/docs/libcurl/Makefile.am
index 6905a7b24..aa0eda05a 100644
--- a/docs/libcurl/Makefile.am
+++ b/docs/libcurl/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign no-dependencies
diff --git a/docs/libcurl/Makefile.in b/docs/libcurl/Makefile.in
index 0189bc652..93e506756 100644
--- a/docs/libcurl/Makefile.in
+++ b/docs/libcurl/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#***************************************************************************
@@ -43,7 +45,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2008 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2008 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -56,6 +58,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Shared between Makefile.am and CMakeLists.txt
@@ -136,15 +140,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = docs/libcurl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -506,6 +508,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -523,6 +526,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -580,6 +584,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -598,12 +603,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -670,7 +676,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -683,7 +688,9 @@ man_MANS = \
curl_easy_duphandle.3 \
curl_easy_escape.3 \
curl_easy_getinfo.3 \
+ curl_easy_header.3 \
curl_easy_init.3 \
+ curl_easy_nextheader.3 \
curl_easy_option_by_id.3 \
curl_easy_option_by_name.3 \
curl_easy_option_next.3 \
@@ -754,6 +761,9 @@ man_MANS = \
curl_url_strerror.3 \
curl_version.3 \
curl_version_info.3 \
+ curl_ws_meta.3 \
+ curl_ws_recv.3 \
+ curl_ws_send.3 \
libcurl-easy.3 \
libcurl-env.3 \
libcurl-errors.3 \
diff --git a/docs/libcurl/Makefile.inc b/docs/libcurl/Makefile.inc
index 706d8b6ba..3e62ff0b0 100644
--- a/docs/libcurl/Makefile.inc
+++ b/docs/libcurl/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2008 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2008 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Shared between Makefile.am and CMakeLists.txt
@@ -27,7 +29,9 @@ man_MANS = \
curl_easy_duphandle.3 \
curl_easy_escape.3 \
curl_easy_getinfo.3 \
+ curl_easy_header.3 \
curl_easy_init.3 \
+ curl_easy_nextheader.3 \
curl_easy_option_by_id.3 \
curl_easy_option_by_name.3 \
curl_easy_option_next.3 \
@@ -98,6 +102,9 @@ man_MANS = \
curl_url_strerror.3 \
curl_version.3 \
curl_version_info.3 \
+ curl_ws_meta.3 \
+ curl_ws_recv.3 \
+ curl_ws_send.3 \
libcurl-easy.3 \
libcurl-env.3 \
libcurl-errors.3 \
diff --git a/docs/libcurl/curl_easy_cleanup.3 b/docs/libcurl/curl_easy_cleanup.3
index 599c60c8f..dec1f51ce 100644
--- a/docs/libcurl/curl_easy_cleanup.3
+++ b/docs/libcurl/curl_easy_cleanup.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_cleanup 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_cleanup - End a libcurl easy handle
diff --git a/docs/libcurl/curl_easy_duphandle.3 b/docs/libcurl/curl_easy_duphandle.3
index 89cab565e..c0e0f498e 100644
--- a/docs/libcurl/curl_easy_duphandle.3
+++ b/docs/libcurl/curl_easy_duphandle.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_duphandle 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_duphandle 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
diff --git a/docs/libcurl/curl_easy_escape.3 b/docs/libcurl/curl_easy_escape.3
index e1ff9714b..0648cfdc6 100644
--- a/docs/libcurl/curl_easy_escape.3
+++ b/docs/libcurl/curl_easy_escape.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_escape 3 "December 06, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_escape 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_escape - URL encodes the given string
@@ -34,12 +36,16 @@ char *curl_easy_escape(CURL *curl, const char *string, int length);
This function converts the given input \fIstring\fP to a 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).
+version (\fB%NN\fP where \fBNN\fP is a two-digit hexadecimal number).
If \fIlength\fP is set to 0 (zero), \fIcurl_easy_escape(3)\fP uses strlen() on
the input \fIstring\fP to find out the size. This function does not accept
input strings longer than \fBCURL_MAX_INPUT_LENGTH\fP (8 MB).
+Since 7.82.0, the \fBcurl\fP parameter is ignored. Prior to that there was
+per-handle character conversion support for some very old operating systems
+such as TPF, but it was otherwise ignored.
+
You must \fIcurl_free(3)\fP the returned string when you are done with it.
.SH ENCODING
libcurl is typically not aware of, nor does it care about, character
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index 4cfc017bb..a053ff53b 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_getinfo 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_getinfo 3 "October 12, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_getinfo - extract information from a curl handle
@@ -202,7 +204,7 @@ See \fICURLINFO_LOCAL_PORT(3)\fP
List of all known cookies.
See \fICURLINFO_COOKIELIST(3)\fP
.IP CURLINFO_LASTSOCKET
-Last socket used.
+(Deprecated) Last socket used.
See \fICURLINFO_LASTSOCKET(3)\fP
.IP CURLINFO_ACTIVESOCKET
The session's active socket.
@@ -210,6 +212,12 @@ See \fICURLINFO_ACTIVESOCKET(3)\fP
.IP CURLINFO_FTP_ENTRY_PATH
The entry path after logging in to an FTP server.
See \fICURLINFO_FTP_ENTRY_PATH(3)\fP
+.IP CURLINFO_CAPATH
+Get the default value for \fICURLOPT_CAPATH(3)\fP.
+See \fICURLINFO_CAPATH(3)\fP
+.IP CURLINFO_CAINFO
+Get the default value for \fICURLOPT_CAINFO(3)\fP.
+See \fICURLINFO_CAINFO(3)\fP
.IP CURLINFO_CERTINFO
Certificate chain.
See \fICURLINFO_CERTINFO(3)\fP
@@ -236,7 +244,7 @@ See \fICURLINFO_RTSP_SERVER_CSEQ(3)\fP
RTSP CSeq last received.
See \fICURLINFO_RTSP_CSEQ_RECV(3)\fP
.IP CURLINFO_PROTOCOL
-The protocol used for the connection. (Added in 7.52.0)
+(Deprecated) The protocol used for the connection. (Added in 7.52.0)
See \fICURLINFO_PROTOCOL(3)\fP
.IP CURLINFO_SCHEME
The scheme used for the connection. (Added in 7.52.0)
diff --git a/docs/libcurl/curl_easy_header.3 b/docs/libcurl/curl_easy_header.3
new file mode 100644
index 000000000..35c59e65c
--- /dev/null
+++ b/docs/libcurl/curl_easy_header.3
@@ -0,0 +1,154 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.TH curl_easy_header 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_easy_header - get an HTTP header
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLHcode curl_easy_header(CURL *easy,
+ const char *name,
+ size_t index,
+ unsigned int origin,
+ int request,
+ struct curl_header **hout);
+.SH DESCRIPTION
+\fIcurl_easy_header(3)\fP returns a pointer to a "curl_header" struct in
+\fBhout\fP with data for the HTTP response header \fIname\fP. The case
+insensitive null-terminated header name should be specified without colon.
+
+\fIindex\fP 0 means asking for the first instance of the header. If the
+returned header struct has \fBamount\fP set larger than 1, it means there are
+more instances of the same header name available to get. Asking for a too big
+index makes \fBCURLHE_BADINDEX\fP get returned.
+
+The \fIorigin\fP argument is for specifying which headers to receive, as a
+single HTTP transfer might provide headers from several different places and
+they may then have different importance to the user and headers using the same
+name might be used. The \fIorigin\fP is a bitmask for what header sources you
+want. See the descriptions below.
+
+The \fIrequest\fP argument tells libcurl from which request you want headers
+from. A single transfer might consist of a series of HTTP requests and this
+argument lets you specify which particular individual request you want the
+headers from. 0 being the first request and then the number increases for
+further redirects or when multi-state authentication is used. Passing in -1 is
+a shortcut to "the last" request in the series, independently of the actual
+amount of requests used.
+
+libcurl stores and provides the actually used "correct" headers. If for
+example two headers with the same name arrive and the latter overrides the
+former, then only the latter will be provided. If the first header survives
+the second, then only the first one will be provided. An application using
+this API does not have to bother about multiple headers used wrongly.
+
+The memory for the returned struct is associated with the easy handle and
+subsequent calls to \fIcurl_easy_header(3)\fP will clobber the struct used in
+the previous calls for the same easy handle. Applications need to copy the
+data if it wants to keep it around. The memory used for the struct gets freed
+with calling \fIcurl_easy_cleanup(3)\fP of the easy handle.
+
+The first line in an HTTP response is called the status line. It is not
+considered a header by this function. Headers are the "name: value" lines
+following the status.
+
+This function can be used before (all) headers have been received and is fine
+to call from within libcurl callbacks. It will always return the state of the
+headers at the time it is called.
+.SH "The header struct"
+.nf
+struct curl_header {
+ char *name;
+ char *value;
+ size_t amount;
+ size_t index;
+ unsigned int origin;
+ void *anchor;
+};
+.fi
+
+The data \fBname\fP field points to, will be the same as the requested name
+but it might have a different case.
+
+The data \fBvalue\fP field points to, comes exactly as delivered over the
+network but with leading and trailing whitespace and newlines stripped
+off. The `value` data is null-terminated. For legacy HTTP/1 "folded headers",
+this API provides the full single value in an unfolded manner with a single
+whitespace between the lines.
+
+\fBamount\fP is how many headers using this name that exist, within the origin
+and request scope asked for.
+
+\fBindex\fP is the zero based entry number of this particular header, which in
+case this header was used more than once in the requested scope can be larger
+than 0 but is always less than \fBamount\fP.
+
+The \fBorigin\fP field in the "curl_header" struct has one of the origin bits
+set, indicating where from the header originates. At the time of this writing,
+there are 5 bits with defined use. The undocumented 27 remaining bits are
+reserved for future use and must not be assumed to have any particular value.
+
+\fBanchor\fP is a private handle used by libcurl internals. Do not modify.
+.SH ORIGINS
+.IP CURLH_HEADER
+The header arrived as a header from the server.
+.IP CURLH_TRAILER
+The header arrived as a trailer. A header that arrives after the body.
+.IP CURLH_CONNECT
+The header arrived in a CONNECT response. A CONNECT request is being done to
+setup a transfer "through" an HTTP(S) proxy.
+.IP CURLH_1XX
+The header arrived in an HTTP 1xx response. A 1xx response is an "intermediate"
+response that might happen before the "real" response.
+.IP CURLH_PSEUDO
+The header is an HTTP/2 or HTTP/3 pseudo header
+.SH EXAMPLE
+.nf
+struct curl_header *type;
+CURLHcode h =
+ curl_easy_header(easy, "Content-Type", 0, CURLH_HEADER, -1, &type);
+.fi
+.SH AVAILABILITY
+Added in 7.83.0. Officially supported since 7.84.0.
+.SH RETURN VALUE
+This function returns a CURLHcode indicating success or error.
+.IP "CURLHE_BADINDEX (1)"
+There is no header with the requested index.
+.IP "CURLHE_MISSING (2)"
+No such header exists.
+.IP "CURLHE_NOHEADERS (3)"
+No headers at all have been recorded.
+.IP "CURLHE_NOREQUEST (4)"
+There was no such request number.
+.IP "CURLHE_OUT_OF_MEMORY (5)"
+Out of resources
+.IP "CURLHE_BAD_ARGUMENT (6)"
+One or more of the given arguments are bad.
+.IP "CURLHE_NOT_BUILT_IN (7)"
+HTTP or the header API has been disabled in the build.
+.SH "SEE ALSO"
+.BR curl_easy_nextheader "(3), " curl_easy_perform "(3), "
+.BR CURLOPT_HEADERFUNCTION "(3), " CURLINFO_CONTENT_TYPE "(3) "
diff --git a/docs/libcurl/curl_easy_init.3 b/docs/libcurl/curl_easy_init.3
index e766ec0c7..7b6362344 100644
--- a/docs/libcurl/curl_easy_init.3
+++ b/docs/libcurl/curl_easy_init.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_init 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_init 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_init - Start a libcurl easy session
diff --git a/docs/libcurl/curl_easy_nextheader.3 b/docs/libcurl/curl_easy_nextheader.3
new file mode 100644
index 000000000..d7ac7a277
--- /dev/null
+++ b/docs/libcurl/curl_easy_nextheader.3
@@ -0,0 +1,97 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.TH curl_easy_nextheader 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_easy_nextheader - get the next HTTP header
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+struct curl_header *curl_easy_nextheader(CURL *easy,
+ unsigned int origin,
+ int request,
+ struct curl_header *prev);
+.fi
+.SH DESCRIPTION
+This function lets an application iterate over all previously received HTTP
+headers.
+
+The \fIorigin\fP argument is for specifying which headers to receive, as a
+single HTTP transfer might provide headers from several different places and
+they may then have different importance to the user and headers using the same
+name might be used. The \fIorigin\fP is a bitmask for what header sources you
+want. See the \fIcurl_easy_header(3)\fP man page for the origin descriptions.
+
+The \fIrequest\fP argument tells libcurl from which request you want headers
+from. A single transfer might consist of a series of HTTP requests and this
+argument lets you specify which particular individual request you want the
+headers from. 0 being the first request and then the number increases for
+further redirects or when multi-state authentication is used. Passing in -1 is
+a shortcut to "the last" request in the series, independently of the actual
+amount of requests used.
+
+It is suggested that you pass in the same \fBorigin\fP and \fBrequest\fP when
+iterating over a range of headers as changing the value mid-loop might give
+you unexpected results.
+
+If \fIprev\fP is NULL, this function returns a pointer to the first header
+stored within the given scope (origin + request).
+
+If \fIprev\fP is a pointer to a previously returned header struct,
+\fIcurl_easy_nextheader(3)\fP returns a pointer the next header stored within
+the given scope. This way, an application can iterate over all available
+headers.
+
+The memory for the struct this points to, is owned and managed by libcurl and
+is associated with the easy handle. Applications must copy the data if they
+want it to survive subsequent API calls or the life-time of the easy handle.
+.SH EXAMPLE
+.nf
+struct curl_header *prev = NULL;
+struct curl_header *h;
+
+/* extract the normal headers from the first request */
+while((h = curl_easy_nextheader(easy, CURLH_HEADER, 0, prev))) {
+ print "%s: %s\\n", h->name, h->value);
+ prev = h;
+}
+
+/* extract the normal headers + 1xx + trailers from the last request */
+unsigned int origin = CURLH_HEADER| CURLH_1XX | CURLH_TRAILER;
+while((h = curl_easy_nextheader(easy, origin, -1, prev))) {
+ print "%s: %s\\n", h->name, h->value);
+ prev = h;
+}
+.fi
+.SH AVAILABILITY
+Added in 7.83.0. Officially supported since 7.84.0.
+.SH RETURN VALUE
+This function returns the next header, or NULL when there are no more
+(matching) headers or an error occurred.
+
+If this function returns NULL when \fIprev\fP was set to NULL, then there are
+no headers available within the scope to return.
+.SH "SEE ALSO"
+.BR curl_easy_header "(3), " curl_easy_perform "(3) "
diff --git a/docs/libcurl/curl_easy_option_by_id.3 b/docs/libcurl/curl_easy_option_by_id.3
index d2ae76aa5..9951332c4 100644
--- a/docs/libcurl/curl_easy_option_by_id.3
+++ b/docs/libcurl/curl_easy_option_by_id.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_option_by_id 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_option_by_id 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_option_by_id - find an easy setopt option by id
@@ -30,8 +32,8 @@ curl_easy_option_by_id - find an easy setopt option by id
const struct curl_easyoption *curl_easy_option_by_id(CURLoption id);
.fi
.SH DESCRIPTION
-Given a CURLoption \fBid\fP, this function returns a pointer to the
-curl_easyoption struct, holding information about the
+Given a \fICURLoption\fP \fBid\fP, this function returns a pointer to the
+\fIcurl_easyoption\fP struct, holding information about the
\fIcurl_easy_setopt(3)\fP option using that id. The option id is the CURLOPT_
prefix ones provided in the standard curl/curl.h header file. This function
will return the non-aliases version for the cases where there is an alias
@@ -48,7 +50,7 @@ if(opt) {
.SH AVAILABILITY
This function was added in libcurl 7.73.0
.SH RETURN VALUE
-A pointer to the curl_easyoption struct for the option or NULL.
+A pointer to the \fIcurl_easyoption\fP struct for the option or NULL.
.SH "SEE ALSO"
.BR curl_easy_option_by_name "(3)," curl_easy_option_next "(3),"
.BR curl_easy_setopt "(3),"
diff --git a/docs/libcurl/curl_easy_option_by_name.3 b/docs/libcurl/curl_easy_option_by_name.3
index e0378d4f1..66c08693b 100644
--- a/docs/libcurl/curl_easy_option_by_name.3
+++ b/docs/libcurl/curl_easy_option_by_name.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_option_by_name 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_option_by_name 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_option_by_name - find an easy setopt option by name
@@ -30,10 +32,11 @@ curl_easy_option_by_name - find an easy setopt option by name
const struct curl_easyoption *curl_easy_option_by_name(const char *name);
.fi
.SH DESCRIPTION
-Given a \fBname\fP, this function returns a pointer to the curl_easyoption
-struct, holding information about the \fIcurl_easy_setopt(3)\fP option using
-that name. The name should be specified without the "CURLOPT_" prefix and the
-name comparison is made case insensitive.
+Given a \fBname\fP, this function returns a pointer to the
+\fIcurl_easyoption\fP struct, holding information about the
+\fIcurl_easy_setopt(3)\fP option using that name. The name should be specified
+without the "CURLOPT_" prefix and the name comparison is made case
+insensitive.
If libcurl has no option with the given name, this function returns NULL.
.SH EXAMPLE
@@ -46,7 +49,7 @@ if(opt) {
.SH AVAILABILITY
This function was added in libcurl 7.73.0
.SH RETURN VALUE
-A pointer to the curl_easyoption struct for the option or NULL.
+A pointer to the \fIcurl_easyoption\fP struct for the option or NULL.
.SH "SEE ALSO"
.BR curl_easy_option_next "(3)," curl_easy_option_by_id "(3),"
.BR curl_easy_setopt "(3),"
diff --git a/docs/libcurl/curl_easy_option_next.3 b/docs/libcurl/curl_easy_option_next.3
index 3a5bb2a6a..cea14a5b0 100644
--- a/docs/libcurl/curl_easy_option_next.3
+++ b/docs/libcurl/curl_easy_option_next.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_option_next 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_option_next 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_option_next - iterate over easy setopt options
@@ -32,7 +34,7 @@ typedef enum {
CURLOT_VALUES, /* (a defined set or bitmask) */
CURLOT_OFF_T, /* curl_off_t (a range of values) */
CURLOT_OBJECT, /* pointer (void *) */
- CURLOT_STRING, /* (char * to zero terminated buffer) */
+ CURLOT_STRING, /* (char * to null-terminated buffer) */
CURLOT_SLIST, /* (struct curl_slist *) */
CURLOT_CBPTR, /* (void * passed as-is to a callback) */
CURLOT_BLOB, /* blob (struct curl_blob *) */
@@ -52,7 +54,7 @@ const struct curl_easyoption *
curl_easy_option_next(const struct curl_easyoption *prev);
.fi
.SH DESCRIPTION
-This function returns a pointer to the first or the next curl_easyoption
+This function returns a pointer to the first or the next \fIcurl_easyoption\fP
struct, providing an ability to iterate over all known options for
\fIcurl_easy_setopt(3)\fP in this instance of libcurl.
@@ -78,8 +80,8 @@ while(opt) {
.SH AVAILABILITY
This function was added in libcurl 7.73.0
.SH RETURN VALUE
-A pointer to the curl_easyoption struct for the next option or NULL if no more
-options.
+A pointer to the \fIcurl_easyoption\fP struct for the next option or NULL if
+no more options.
.SH "SEE ALSO"
.BR curl_easy_option_by_name "(3)," curl_easy_option_by_id "(3),"
.BR curl_easy_setopt "(3),"
diff --git a/docs/libcurl/curl_easy_pause.3 b/docs/libcurl/curl_easy_pause.3
index 6edea99f8..eee478a09 100644
--- a/docs/libcurl/curl_easy_pause.3
+++ b/docs/libcurl/curl_easy_pause.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_pause 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_pause 3 "September 05, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_pause - pause and unpause a connection
@@ -42,11 +44,13 @@ the transfer is unpaused.
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.
+progress callback (\fICURLOPT_PROGRESSFUNCTION(3)\fP).
-When this function is called to unpause receiving, the chance is high that you
-will get your write callback called before this function returns.
+When this function is called to unpause receiving, the write callback might
+get called before this function returns to deliver cached content. When
+libcurl delivers such cached data to the write callback, it will be delivered
+as fast as possible, which may overstep the boundary set in
+\fICURLOPT_MAX_RECV_SPEED_LARGE(3)\fP etc.
The \fBhandle\fP argument identifies the transfer you want to pause or
unpause.
diff --git a/docs/libcurl/curl_easy_perform.3 b/docs/libcurl/curl_easy_perform.3
index 9999b816b..c6b3d7660 100644
--- a/docs/libcurl/curl_easy_perform.3
+++ b/docs/libcurl/curl_easy_perform.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_perform 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_perform 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_perform - perform a blocking file transfer
@@ -73,7 +75,7 @@ if(curl) {
.SH AVAILABILITY
Always
.SH RETURN VALUE
-CURLE_OK (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>
defines - see \fIlibcurl-errors(3)\fP. If the \fICURLOPT_ERRORBUFFER(3)\fP was
set with \fIcurl_easy_setopt(3)\fP there will be a readable error message in
diff --git a/docs/libcurl/curl_easy_recv.3 b/docs/libcurl/curl_easy_recv.3
index a7bc70e31..810faf515 100644
--- a/docs/libcurl/curl_easy_recv.3
+++ b/docs/libcurl/curl_easy_recv.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_recv 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_recv 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
@@ -35,7 +37,7 @@ This function receives raw data from the established connection. You may use
it together with \fIcurl_easy_send(3)\fP 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.
+connection setup.
\fBbuffer\fP is a pointer to your buffer that will get the received
data. \fBbuflen\fP is the maximum amount of data you can get in that
diff --git a/docs/libcurl/curl_easy_reset.3 b/docs/libcurl/curl_easy_reset.3
index 29a3b7248..85b11cf0b 100644
--- a/docs/libcurl/curl_easy_reset.3
+++ b/docs/libcurl/curl_easy_reset.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_reset 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_reset 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
diff --git a/docs/libcurl/curl_easy_send.3 b/docs/libcurl/curl_easy_send.3
index 42eea4834..b7dd97251 100644
--- a/docs/libcurl/curl_easy_send.3
+++ b/docs/libcurl/curl_easy_send.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_send 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_send 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_send - sends raw data over an "easy" connection
@@ -36,7 +38,7 @@ This function sends arbitrary data over the established connection. You may
use it together with \fIcurl_easy_recv(3)\fP 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.
+connection setup.
\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.
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index fe113990b..b00079601 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_setopt 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_setopt 3 "October 12, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_setopt \- set options for a curl easy handle
@@ -82,9 +84,11 @@ Callback for reading data. See \fICURLOPT_READFUNCTION(3)\fP
.IP CURLOPT_READDATA
Data pointer to pass to the read callback. See \fICURLOPT_READDATA(3)\fP
.IP CURLOPT_IOCTLFUNCTION
-Callback for I/O operations. See \fICURLOPT_IOCTLFUNCTION(3)\fP
+\fBDeprecated option\fP Callback for I/O operations.
+See \fICURLOPT_IOCTLFUNCTION(3)\fP
.IP CURLOPT_IOCTLDATA
-Data pointer to pass to the I/O callback. See \fICURLOPT_IOCTLDATA(3)\fP
+\fBDeprecated option\fP Data pointer to pass to the I/O callback.
+See \fICURLOPT_IOCTLDATA(3)\fP
.IP CURLOPT_SEEKFUNCTION
Callback for seek operations. See \fICURLOPT_SEEKFUNCTION(3)\fP
.IP CURLOPT_SEEKDATA
@@ -102,7 +106,8 @@ Callback for closing socket. See \fICURLOPT_CLOSESOCKETFUNCTION(3)\fP
.IP CURLOPT_CLOSESOCKETDATA
Data pointer to pass to the close socket callback. See \fICURLOPT_CLOSESOCKETDATA(3)\fP
.IP CURLOPT_PROGRESSFUNCTION
-OBSOLETE callback for progress meter. See \fICURLOPT_PROGRESSFUNCTION(3)\fP
+\fBOBSOLETE\fP callback for progress meter.
+See \fICURLOPT_PROGRESSFUNCTION(3)\fP
.IP CURLOPT_PROGRESSDATA
Data pointer to pass to the progress meter callback. See \fICURLOPT_PROGRESSDATA(3)\fP
.IP CURLOPT_XFERINFOFUNCTION
@@ -166,9 +171,14 @@ URL to work on. See \fICURLOPT_URL(3)\fP
.IP CURLOPT_PATH_AS_IS
Disable squashing /../ and /./ sequences in the path. See \fICURLOPT_PATH_AS_IS(3)\fP
.IP CURLOPT_PROTOCOLS
-Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
+\fBDeprecated option\fP Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
+.IP CURLOPT_PROTOCOLS_STR
+Allowed protocols. See \fICURLOPT_PROTOCOLS_STR(3)\fP
.IP CURLOPT_REDIR_PROTOCOLS
-Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS(3)\fP
+\fBDeprecated option\fP Protocols to allow redirects to. See
+\fICURLOPT_REDIR_PROTOCOLS(3)\fP
+.IP CURLOPT_REDIR_PROTOCOLS_STR
+Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP
.IP CURLOPT_DEFAULT_PROTOCOL
Default protocol. See \fICURLOPT_DEFAULT_PROTOCOL(3)\fP
.IP CURLOPT_PROXY
@@ -188,7 +198,8 @@ Connect to a specific host and port. See \fICURLOPT_CONNECT_TO(3)\fP
.IP CURLOPT_SOCKS5_AUTH
Socks5 authentication methods. See \fICURLOPT_SOCKS5_AUTH(3)\fP
.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
-Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
+\fBDeprecated option\fP Socks5 GSSAPI service name.
+See \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
.IP CURLOPT_SOCKS5_GSSAPI_NEC
Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
.IP CURLOPT_PROXY_SERVICE_NAME
@@ -206,7 +217,8 @@ Bind connection locally to port range. See \fICURLOPT_LOCALPORTRANGE(3)\fP
.IP CURLOPT_DNS_CACHE_TIMEOUT
Timeout for DNS cache. See \fICURLOPT_DNS_CACHE_TIMEOUT(3)\fP
.IP CURLOPT_DNS_USE_GLOBAL_CACHE
-OBSOLETE Enable global DNS cache. See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
+\fBOBSOLETE\fP Enable global DNS cache.
+See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
.IP CURLOPT_DOH_URL
Use this DoH server for name resolves. See \fICURLOPT_DOH_URL(3)\fP
.IP CURLOPT_BUFFERSIZE
@@ -214,7 +226,7 @@ Ask for alternate buffer size. See \fICURLOPT_BUFFERSIZE(3)\fP
.IP CURLOPT_PORT
Port number to connect to. See \fICURLOPT_PORT(3)\fP
.IP CURLOPT_TCP_FASTOPEN
-Enable TFO, TCP Fast Open. See \fICURLOPT_TCP_FASTOPEN(3)\fP
+Enable TCP Fast Open. See \fICURLOPT_TCP_FASTOPEN(3)\fP
.IP CURLOPT_TCP_NODELAY
Disable the Nagle algorithm. See \fICURLOPT_TCP_NODELAY(3)\fP
.IP CURLOPT_ADDRESS_SCOPE
@@ -265,7 +277,7 @@ Proxy TLS authentication methods. See \fICURLOPT_PROXY_TLSAUTH_TYPE(3)\fP
.IP CURLOPT_PROXYAUTH
HTTP proxy authentication methods. See \fICURLOPT_PROXYAUTH(3)\fP
.IP CURLOPT_SASL_AUTHZID
-SASL authorisation identity (identity to act as). See \fICURLOPT_SASL_AUTHZID(3)\fP
+SASL authorization identity (identity to act as). See \fICURLOPT_SASL_AUTHZID(3)\fP
.IP CURLOPT_SASL_IR
Enable SASL initial response. See \fICURLOPT_SASL_IR(3)\fP
.IP CURLOPT_XOAUTH2_BEARER
@@ -288,7 +300,7 @@ Maximum number of redirects to follow. See \fICURLOPT_MAXREDIRS(3)\fP
.IP CURLOPT_POSTREDIR
How to act on redirects after POST. See \fICURLOPT_POSTREDIR(3)\fP
.IP CURLOPT_PUT
-Issue an HTTP PUT request. See \fICURLOPT_PUT(3)\fP
+\fBDeprecated option\fP Issue an HTTP PUT request. See \fICURLOPT_PUT(3)\fP
.IP CURLOPT_POST
Issue an HTTP POST request. See \fICURLOPT_POST(3)\fP
.IP CURLOPT_POSTFIELDS
@@ -300,7 +312,8 @@ The POST data is this big. See \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP
.IP CURLOPT_COPYPOSTFIELDS
Send a POST with this data - and copy it. See \fICURLOPT_COPYPOSTFIELDS(3)\fP
.IP CURLOPT_HTTPPOST
-Multipart formpost HTTP POST. See \fICURLOPT_HTTPPOST(3)\fP
+\fBDeprecated option\fP Multipart formpost HTTP POST.
+See \fICURLOPT_HTTPPOST(3)\fP
.IP CURLOPT_REFERER
Referer: header. See \fICURLOPT_REFERER(3)\fP
.IP CURLOPT_USERAGENT
@@ -396,15 +409,15 @@ Commands to run just before transfer. See \fICURLOPT_PREQUOTE(3)\fP
.IP CURLOPT_APPEND
Append to remote file. See \fICURLOPT_APPEND(3)\fP
.IP CURLOPT_FTP_USE_EPRT
-Use EPTR. See \fICURLOPT_FTP_USE_EPRT(3)\fP
+Use EPRT. See \fICURLOPT_FTP_USE_EPRT(3)\fP
.IP CURLOPT_FTP_USE_EPSV
Use EPSV. See \fICURLOPT_FTP_USE_EPSV(3)\fP
.IP CURLOPT_FTP_USE_PRET
Use PRET. See \fICURLOPT_FTP_USE_PRET(3)\fP
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
Create missing directories on the remote server. See \fICURLOPT_FTP_CREATE_MISSING_DIRS(3)\fP
-.IP CURLOPT_FTP_RESPONSE_TIMEOUT
-Timeout for FTP responses. See \fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP
+.IP CURLOPT_SERVER_RESPONSE_TIMEOUT
+Timeout for server responses. See \fICURLOPT_SERVER_RESPONSE_TIMEOUT(3)\fP
.IP CURLOPT_FTP_ALTERNATIVE_TO_USER
Alternative to USER. See \fICURLOPT_FTP_ALTERNATIVE_TO_USER(3)\fP
.IP CURLOPT_FTP_SKIP_PASV_IP
@@ -446,7 +459,7 @@ Resume a transfer. See \fICURLOPT_RESUME_FROM(3)\fP
.IP CURLOPT_RESUME_FROM_LARGE
Resume a transfer. See \fICURLOPT_RESUME_FROM_LARGE(3)\fP
.IP CURLOPT_CURLU
-Set URL to work on with CURLU *. See \fICURLOPT_CURLU(3)\fP
+Set URL to work on with a URL handle. See \fICURLOPT_CURLU(3)\fP
.IP CURLOPT_CUSTOMREQUEST
Custom request/method. See \fICURLOPT_CUSTOMREQUEST(3)\fP
.IP CURLOPT_FILETIME
@@ -563,7 +576,7 @@ Set key exchange curves. See \fICURLOPT_SSL_EC_CURVES(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
+\fBOBSOLETE\fP Enable use of NPN. See \fICURLOPT_SSL_ENABLE_NPN(3)\fP
.IP CURLOPT_SSLENGINE
Use identifier with SSL engine. See \fICURLOPT_SSLENGINE(3)\fP
.IP CURLOPT_SSLENGINE_DEFAULT
@@ -625,9 +638,10 @@ Set pinned SSL public key . See \fICURLOPT_PINNEDPUBLICKEY(3)\fP
Set the proxy's pinned SSL public key. See
\fICURLOPT_PROXY_PINNEDPUBLICKEY(3)\fP
.IP CURLOPT_RANDOM_FILE
-Provide source for entropy random data. See \fICURLOPT_RANDOM_FILE(3)\fP
+\fBOBSOLETE\fP Provide source for entropy random data.
+See \fICURLOPT_RANDOM_FILE(3)\fP
.IP CURLOPT_EGDSOCKET
-Identify EGD socket for entropy. See \fICURLOPT_EGDSOCKET(3)\fP
+\fBOBSOLETE\fP Identify EGD socket for entropy. See \fICURLOPT_EGDSOCKET(3)\fP
.IP CURLOPT_SSL_CIPHER_LIST
Ciphers to use. See \fICURLOPT_SSL_CIPHER_LIST(3)\fP
.IP CURLOPT_PROXY_SSL_CIPHER_LIST
@@ -665,6 +679,13 @@ File name with known hosts. See \fICURLOPT_SSH_KNOWNHOSTS(3)\fP
Callback for known hosts handling. See \fICURLOPT_SSH_KEYFUNCTION(3)\fP
.IP CURLOPT_SSH_KEYDATA
Custom pointer to pass to ssh key callback. See \fICURLOPT_SSH_KEYDATA(3)\fP
+.IP CURLOPT_SSH_HOSTKEYFUNCTION
+Callback for checking host key handling. See \fICURLOPT_SSH_HOSTKEYFUNCTION(3)\fP
+.IP CURLOPT_SSH_HOSTKEYDATA
+Custom pointer to pass to ssh host key callback. See \fICURLOPT_SSH_HOSTKEYDATA(3)\fP
+.SH WEBSOCKET
+.IP CURLOPT_WS_OPTIONS
+Set WebSocket options. See \fICURLOPT_WS_OPTIONS(3)\fP
.SH OTHER OPTIONS
.IP CURLOPT_PRIVATE
Private pointer to store. See \fICURLOPT_PRIVATE(3)\fP
diff --git a/docs/libcurl/curl_easy_strerror.3 b/docs/libcurl/curl_easy_strerror.3
index 27b588ec7..59012aee4 100644
--- a/docs/libcurl/curl_easy_strerror.3
+++ b/docs/libcurl/curl_easy_strerror.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_easy_strerror 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_strerror 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_strerror - return string describing error code
@@ -34,7 +36,7 @@ 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.
+specific error descriptions generated at runtime.
.SH EXAMPLE
.nf
/* Perform the request, res will get the return code */
diff --git a/docs/libcurl/curl_easy_unescape.3 b/docs/libcurl/curl_easy_unescape.3
index f501825fb..e3bfea520 100644
--- a/docs/libcurl/curl_easy_unescape.3
+++ b/docs/libcurl/curl_easy_unescape.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_unescape 3 "December 06, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_unescape 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_unescape - URL decodes the given string
@@ -41,11 +43,14 @@ If the \fBlength\fP argument is set to 0 (zero), \fIcurl_easy_unescape(3)\fP
will use strlen() on the input \fIurl\fP string to find out the size.
If \fBoutlength\fP 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. Since this is a
-pointer to an \fIint\fP type, it can only return a value up to INT_MAX so no
-longer string can be unescaped if the string length is returned in this
-parameter.
+returned string in the integer it points to. This allows proper handling even
+for strings containing %00. Since this is a pointer to an \fIint\fP type, it
+can only return a value up to \fIINT_MAX\fP so no longer string can be
+returned in this parameter.
+
+Since 7.82.0, the \fBcurl\fP parameter is ignored. Prior to that there was
+per-handle character conversion support for some very old operating systems
+such as TPF, but it was otherwise ignored.
You must \fIcurl_free(3)\fP the returned string when you are done with it.
.SH EXAMPLE
diff --git a/docs/libcurl/curl_easy_upkeep.3 b/docs/libcurl/curl_easy_upkeep.3
index 75cdd1607..e08aca6c3 100644
--- a/docs/libcurl/curl_easy_upkeep.3
+++ b/docs/libcurl/curl_easy_upkeep.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_upkeep 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_upkeep 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_easy_upkeep - Perform any connection upkeep checks.
diff --git a/docs/libcurl/curl_escape.3 b/docs/libcurl/curl_escape.3
index 47a23b7f3..f31c7654f 100644
--- a/docs/libcurl/curl_escape.3
+++ b/docs/libcurl/curl_escape.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_escape 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_escape 3 "October 11, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_escape - URL encodes the given string
@@ -32,13 +34,13 @@ char *curl_escape(const char *url, int length);
.SH DESCRIPTION
Obsolete function. Use \fIcurl_easy_escape(3)\fP instead!
-This function will convert the given input string to an URL encoded string and
+This function will convert the given input string to a 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).
+A-Z or 0-9 will be converted to their "URL escaped" version (\fB%NN\fP where
+\fBNN\fP is a two-digit hexadecimal number).
-If the \fBlengthf\fP argument is set to 0, curl_escape() will use strlen() on
-the input \fBurl\fP string to find out the size.
+If the \fBlength\fP argument is set to 0, \fIcurl_escape(3)\fP will use
+strlen() on the input \fBurl\fP string to find out the size.
You must \fIcurl_free(3)\fP the returned string when you are done with it.
.SH EXAMPLE
diff --git a/docs/libcurl/curl_formadd.3 b/docs/libcurl/curl_formadd.3
index e8e45dab8..26bf9d441 100644
--- a/docs/libcurl/curl_formadd.3
+++ b/docs/libcurl/curl_formadd.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_formadd 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_formadd 3 "October 03, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_formadd - add a section to a multipart/formdata HTTP POST
+curl_formadd - add a section to a multipart form POST
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -31,15 +33,14 @@ CURLFORMcode curl_formadd(struct curl_httppost **firstitem,
struct curl_httppost **lastitem, ...);
.fi
.SH DESCRIPTION
-This function is deprecated. Do not use. See \fIcurl_mime_init(3)\fP instead.
+\fBThis function is deprecated.\fP Use \fIcurl_mime_init(3)\fP instead.
-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 have added all the sections you want included and then you
-pass the \fIfirstitem\fP pointer as parameter to \fICURLOPT_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.
+curl_formadd() is used to append sections when building a multipart form
+post. Append one section at a time until you have added all the sections you
+want included and then you pass the \fIfirstitem\fP pointer as parameter to
+\fICURLOPT_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.
After the \fIlastitem\fP pointer follow the real arguments.
@@ -51,7 +52,7 @@ the function itself. You must call \fIcurl_formfree(3)\fP on the
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.
-First, there are some basics you need to understand about multipart/formdata
+First, there are some basics you need to understand about multipart form
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 will discuss what options you use to set these properties in the
@@ -64,14 +65,15 @@ parts.
.IP CURLFORM_COPYNAME
followed by a string which provides the \fIname\fP of this part. libcurl
copies the string so your application does not need to keep it around after
-this function call. If the name is not NUL-terminated, you must set its length
-with \fBCURLFORM_NAMELENGTH\fP. The \fIname\fP is not allowed to contain
-zero-valued bytes. The copied data will be freed by \fIcurl_formfree(3)\fP.
+this function call. If the name is not null-terminated, you must set its
+length with \fBCURLFORM_NAMELENGTH\fP. The \fIname\fP is not allowed to
+contain zero-valued bytes. The copied data will be freed by
+\fIcurl_formfree(3)\fP.
.IP CURLFORM_PTRNAME
followed by a string which provides the \fIname\fP 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
-is not NUL-terminated, you must set its length with \fBCURLFORM_NAMELENGTH\fP.
+is not null-terminated, you must set its length with \fBCURLFORM_NAMELENGTH\fP.
The \fIname\fP is not allowed to contain zero-valued bytes.
.IP CURLFORM_COPYCONTENTS
followed by a pointer to the contents of this part, the actual data
@@ -81,11 +83,11 @@ terminated, or if you would like it to contain zero bytes, you must
set the length of the name with \fBCURLFORM_CONTENTSLENGTH\fP. The copied
data will be freed by \fIcurl_formfree(3)\fP.
.IP CURLFORM_PTRCONTENTS
-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 is not NUL-terminated, or if you would like it to contain zero bytes,
-you must set its length with \fBCURLFORM_CONTENTSLENGTH\fP.
+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
+is not null-terminated, or if you would like it to contain zero bytes, you
+must set its length with \fBCURLFORM_CONTENTSLENGTH\fP.
.IP CURLFORM_CONTENTLEN
followed by a curl_off_t value giving the length of the contents. Note that
for \fICURLFORM_STREAM\fP contents, this option is mandatory.
@@ -156,10 +158,10 @@ chunked encoded. (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
-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 \fBCURLFORM_END\fP.
+its value. Each curl_forms structure element has a \fICURLformoption\fP 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 \fBCURLFORM_END\fP.
.IP CURLFORM_CONTENTHEADER
specifies extra headers for the form POST section. This takes a curl_slist
prepared in the usual way using \fBcurl_slist_append\fP and appends the list
@@ -167,9 +169,10 @@ 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.
-When you have passed the HttpPost pointer to \fIcurl_easy_setopt(3)\fP (using
-the \fICURLOPT_HTTPPOST(3)\fP option), you must not free the list until after
-you have called \fIcurl_easy_cleanup(3)\fP for the curl handle.
+When you have passed the \fIstruct curl_httppost\fP pointer to
+\fIcurl_easy_setopt(3)\fP (using the \fICURLOPT_HTTPPOST(3)\fP option), you
+must not free the list until after you have called \fIcurl_easy_cleanup(3)\fP
+for the curl handle.
See example below.
.SH EXAMPLE
@@ -258,7 +261,7 @@ actually sent: the effective data size can then not be automatically
determined, resulting in a chunked encoding transfer. Backslashes and
double quotes in field and file names are now escaped before transmission.
.SH RETURN VALUE
-0 means everything was ok, non-zero means an error occurred corresponding
+0 means everything was OK, non-zero means an error occurred corresponding
to a CURL_FORMADD_* constant defined in
.I <curl/curl.h>
.SH "SEE ALSO"
diff --git a/docs/libcurl/curl_formfree.3 b/docs/libcurl/curl_formfree.3
index 6b9ee9536..4ce2e5429 100644
--- a/docs/libcurl/curl_formfree.3
+++ b/docs/libcurl/curl_formfree.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_formfree 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_formfree 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_formfree - free a previously build multipart/formdata HTTP POST chain
+curl_formfree - free a previously build multipart form post chain
.SH SYNOPSIS
.nf
#include <curl/curl.h>
diff --git a/docs/libcurl/curl_formget.3 b/docs/libcurl/curl_formget.3
index f1e533901..417512634 100644
--- a/docs/libcurl/curl_formget.3
+++ b/docs/libcurl/curl_formget.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_formget 3 "October 31, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_formget 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_formget - serialize a previously built multipart/formdata HTTP POST chain
+curl_formget - serialize a previously built multipart form POST chain
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
@@ -66,6 +68,6 @@ request as only then will libcurl get the actual read callback to use!
This function was added in libcurl 7.15.5. The form API is deprecated in
libcurl 7.56.0.
.SH RETURN VALUE
-0 means everything was ok, non-zero means an error occurred
+0 means everything was OK, non-zero means an error occurred
.SH "SEE ALSO"
.BR curl_formadd "(3), " curl_mime_init "(3)"
diff --git a/docs/libcurl/curl_free.3 b/docs/libcurl/curl_free.3
index 1500ceb4b..3526c9f0b 100644
--- a/docs/libcurl/curl_free.3
+++ b/docs/libcurl/curl_free.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_free 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_free 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
diff --git a/docs/libcurl/curl_getdate.3 b/docs/libcurl/curl_getdate.3
index 01f093640..46d9df184 100644
--- a/docs/libcurl/curl_getdate.3
+++ b/docs/libcurl/curl_getdate.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_getdate 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_getdate 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_getdate - Convert a date string to number of seconds
@@ -34,15 +36,19 @@ time_t curl_getdate(char *datestring, time_t *now);
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.
+
+This function works with valid dates and does not always detect and reject
+wrong dates, such as February 30.
+
.SH PARSING DATES AND TIMES
A "date" is a string containing several items separated by whitespace. The
order of the items is immaterial. A date string may contain many flavors of
items:
.TP 0.8i
.B calendar date items
-Can be specified several ways. Month names can only be three-letter english
-abbreviations, numbers can be zero-prefixed and the year may use 2 or 4 digits.
-Examples: 06 Nov 1994, 06-Nov-94 and Nov-94 6.
+Can be specified several ways. Month names can only be three-letter English
+abbreviations, numbers can be zero-prefixed and the year may use 2 or 4
+digits. Examples: 06 Nov 1994, 06-Nov-94 and Nov-94 6.
.TP
.B time of the day items
This string specifies the time on a given day. You must specify it with 6
@@ -56,14 +62,13 @@ UTC. Supported formats include: -1200, MST, +0100.
.TP
.B day of the week items
Specifies a day of the week. Days of the week may be spelled out in full
-(using english): `Sunday', `Monday', etc or they may be abbreviated to their
+(using English): `Sunday', `Monday', etc or they may be abbreviated to their
first three letters. This is usually not info that adds anything.
.TP
.B pure numbers
If a decimal number of the form YYYYMMDD appears, then YYYY is read as the
year, MM as the month number and DD as the day of the month, for the specified
calendar date.
-.PP
.SH EXAMPLE
.nf
time_t t;
@@ -93,8 +98,8 @@ calendar date.
.SH STANDARDS
This parser handles date formats specified in RFC 822 (including the update in
RFC 1123) using time zone name or time zone delta and RFC 850 (obsoleted by
-RFC 1036) and ANSI C's asctime() format. These formats are the only ones RFC
-7231 says HTTP applications may use.
+RFC 1036) and ANSI C's \fIasctime()\fP format. These formats are the only ones
+RFC 7231 says HTTP applications may use.
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/curl_getenv.3 b/docs/libcurl/curl_getenv.3
index d79bdc357..30d70e241 100644
--- a/docs/libcurl/curl_getenv.3
+++ b/docs/libcurl/curl_getenv.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_getenv 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_getenv 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_getenv - return value for environment name
@@ -44,9 +46,7 @@ You must \fIcurl_free(3)\fP the returned string when you are done with it.
}
.fi
.SH AVAILABILITY
-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().
+Always
.SH RETURN VALUE
A pointer to a null-terminated string or NULL if it failed to find the
specified name.
diff --git a/docs/libcurl/curl_global_cleanup.3 b/docs/libcurl/curl_global_cleanup.3
index 9d9b59ced..efdb38517 100644
--- a/docs/libcurl/curl_global_cleanup.3
+++ b/docs/libcurl/curl_global_cleanup.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_global_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_global_cleanup 3 "June 15, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_global_cleanup - global libcurl cleanup
@@ -35,7 +37,11 @@ This function releases resources acquired by \fIcurl_global_init(3)\fP.
You should call \fIcurl_global_cleanup(3)\fP once for each call you make to
\fIcurl_global_init(3)\fP, after you are done using libcurl.
-\fBThis function is not thread safe.\fP You must not call it when any other
+This function is thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the CURL_VERSION_THREADSAFE feature bit set
+(most platforms).
+
+If this is not thread-safe, you must not call this function when any other
thread in the program (i.e. a thread sharing the same memory) is running.
This does not just mean no other thread that is using libcurl. Because
\fIcurl_global_cleanup(3)\fP calls functions of other libraries that are
diff --git a/docs/libcurl/curl_global_init.3 b/docs/libcurl/curl_global_init.3
index 5eb2ff19b..adce3048c 100644
--- a/docs/libcurl/curl_global_init.3
+++ b/docs/libcurl/curl_global_init.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_global_init 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_global_init 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_global_init - Global libcurl initialisation
+curl_global_init - Global libcurl initialization
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -45,16 +47,20 @@ In normal operation, you must specify CURL_GLOBAL_ALL. Do not use any other
value unless you are familiar with it and mean to control internal operations
of libcurl.
-\fBThis function is not thread safe.\fP You must not call it when any other
+This function is thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the CURL_VERSION_THREADSAFE feature bit set
+(most platforms).
+
+If this is not thread-safe, you must not call this function when any other
thread in the program (i.e. a thread sharing the same memory) is running.
This does not just mean no other thread that is using libcurl. Because
\fIcurl_global_init(3)\fP calls functions of other libraries that are
similarly thread unsafe, it could conflict with any other thread that uses
these other libraries.
-If you are initializing libcurl from a Windows DLL you should not initialize it
-from DllMain or a static initializer because Windows holds the loader lock
-during that time and it could cause a deadlock.
+If you are initializing libcurl from a Windows DLL you should not initialize
+it from \fIDllMain\fP or a static initializer because Windows holds the loader
+lock during that time and it could cause a deadlock.
See the description in \fIlibcurl(3)\fP of global environment requirements for
details of how to use this function.
@@ -84,7 +90,7 @@ winsock has to be done by the application or you risk getting undefined
behaviors. This option exists for when the initialization is handled outside
of libcurl so there's no need for libcurl to do it again.
.IP CURL_GLOBAL_NOTHING
-Initialise nothing extra. This sets no bit.
+Initialize nothing extra. This sets no bit.
.IP CURL_GLOBAL_DEFAULT
A sensible default. It will init both SSL and Win32. Right now, this equals
the functionality of the \fBCURL_GLOBAL_ALL\fP mask.
diff --git a/docs/libcurl/curl_global_init_mem.3 b/docs/libcurl/curl_global_init_mem.3
index 2bc4fbc3a..6831cd091 100644
--- a/docs/libcurl/curl_global_init_mem.3
+++ b/docs/libcurl/curl_global_init_mem.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_global_init_mem 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_global_init_mem 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_global_init_mem - Global libcurl initialisation with memory callbacks
+curl_global_init_mem - Global libcurl initialization with memory callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -56,7 +58,7 @@ To replace realloc()
To replace strdup()
.IP "void *calloc_callback(size_t nmemb, size_t size);"
To replace calloc()
-.RE
+.PP
This function is otherwise the same as \fIcurl_global_init(3)\fP, please refer
to that man page for documentation.
.SH CAUTION
@@ -71,7 +73,7 @@ screw things up for libcurl. Take care!
.SH AVAILABILITY
Added in 7.12.0
.SH RETURN VALUE
-CURLE_OK (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
\fI<curl/curl.h>\fP defines - see \fIlibcurl-errors(3)\fP.
.SH "SEE ALSO"
.BR curl_global_init "(3), "
diff --git a/docs/libcurl/curl_global_sslset.3 b/docs/libcurl/curl_global_sslset.3
index e6547895f..9cb677387 100644
--- a/docs/libcurl/curl_global_sslset.3
+++ b/docs/libcurl/curl_global_sslset.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_global_sslset 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_global_sslset 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
@@ -63,24 +65,28 @@ The backend can be identified by the \fIid\fP
both \fIid\fP and \fIname\fP are specified, the \fIname\fP will be ignored.
If neither \fIid\fP nor \fPname\fP are specified, the function will fail with
-CURLSSLSET_UNKNOWN_BACKEND and set the \fIavail\fP pointer to the
+\fBCURLSSLSET_UNKNOWN_BACKEND\fP and set the \fIavail\fP pointer to the
NULL-terminated list of available backends. The available backends are those
that this particular build of libcurl supports.
Since libcurl 7.60.0, the \fIavail\fP pointer will always be set to the list
of alternatives if non-NULL.
-Upon success, the function returns CURLSSLSET_OK.
+Upon success, the function returns \fBCURLSSLSET_OK\fP.
If the specified SSL backend is not available, the function returns
-CURLSSLSET_UNKNOWN_BACKEND and sets the \fIavail\fP pointer to a
+\fBCURLSSLSET_UNKNOWN_BACKEND\fP and sets the \fIavail\fP pointer to a
NULL-terminated list of available SSL backends. In this case, you may call the
function again to try to select a different backend.
The SSL backend can be set only once. If it has already been set, a subsequent
attempt to change it will result in a \fBCURLSSLSET_TOO_LATE\fP.
-\fBThis function is not thread safe.\fP You must not call it when any other
+This function is thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the CURL_VERSION_THREADSAFE feature bit set
+(most platforms).
+
+If this is not thread-safe, you must not call this function when any other
thread in the program (i.e. a thread sharing the same memory) is running.
This does not just mean no other thread that is using libcurl.
.SH EXAMPLE
@@ -100,7 +106,8 @@ This does not just mean no other thread that is using libcurl.
This function was added in libcurl 7.56.0. Before this version, there was no
support for choosing SSL backends at runtime.
.SH RETURN VALUE
-If this function returns CURLSSLSET_OK, the backend was successfully selected.
+If this function returns \fICURLSSLSET_OK\fP, the backend was successfully
+selected.
If the chosen backend is unknown (or support for the chosen backend has not
been compiled into libcurl), the function returns
diff --git a/docs/libcurl/curl_mime_addpart.3 b/docs/libcurl/curl_mime_addpart.3
index b2b0f23a7..2eaf90cee 100644
--- a/docs/libcurl/curl_mime_addpart.3
+++ b/docs/libcurl/curl_mime_addpart.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_addpart 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_addpart 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
diff --git a/docs/libcurl/curl_mime_data.3 b/docs/libcurl/curl_mime_data.3
index 21e29c727..e3a5d3d27 100644
--- a/docs/libcurl/curl_mime_data.3
+++ b/docs/libcurl/curl_mime_data.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_data 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_data 3 "June 28, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_data - set a mime part's body data from memory
@@ -33,15 +35,18 @@ CURLcode curl_mime_data(curl_mimepart *part, const char *data,
.SH DESCRIPTION
\fIcurl_mime_data(3)\fP sets a mime part's body content from memory data.
-\fIdata\fP points to the data bytes: those are copied to the part and their
-storage may safely be reused after call.
-\fIdatasize\fP is the number of data bytes: it can be set to
+\fIpart\fP is the mime part to assign contents to, created with
+\fIcurl_mime_addpart(3)\fP.
+
+\fIdata\fP points to the data that gets copied by this function. The storage
+may safely be reused after the call.
+
+\fIdatasize\fP is the number of bytes \fIdata\fP points to. It can be set to
\fICURL_ZERO_TERMINATED\fP to indicate \fIdata\fP is a null-terminated
character string.
-\fIpart\fP is the part's to assign contents to.
-Setting a part's contents twice is valid: only the value set by the last call
-is retained. It is possible to unassign part's contents by setting
+Setting a part's contents multiple times is valid: only the value set by the
+last call is retained. It is possible to unassign part's contents by setting
\fIdata\fP to NULL.
Setting large data is memory consuming: one might consider using
diff --git a/docs/libcurl/curl_mime_data_cb.3 b/docs/libcurl/curl_mime_data_cb.3
index 5935d0dc8..cc7e51ed6 100644
--- a/docs/libcurl/curl_mime_data_cb.3
+++ b/docs/libcurl/curl_mime_data_cb.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_data_cb 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_data_cb 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
diff --git a/docs/libcurl/curl_mime_encoder.3 b/docs/libcurl/curl_mime_encoder.3
index d033744c8..fcdfbf19f 100644
--- a/docs/libcurl/curl_mime_encoder.3
+++ b/docs/libcurl/curl_mime_encoder.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_encoder 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_encoder 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
@@ -38,8 +40,8 @@ transmitted.
set to NULL to disable an encoder previously attached to the part. The encoding
scheme storage may safely be reused after this function returns.
-Setting a part's encoder twice is valid: only the value set by the last call is
-retained.
+Setting a part's encoder multiple times is valid: only the value set by the
+last call is retained.
Upon multipart rendering, the part's content is encoded according to the
pertaining scheme and a corresponding \fI"Content-Transfer-Encoding"\fP header
@@ -66,7 +68,7 @@ not be used with other types of data.
If the original data is already encoded in such a scheme, a custom
\fIContent-Transfer-Encoding\fP header should be added with
-\FIcurl_mime_headers\fP() instead of setting a part encoder.
+\fIcurl_mime_headers\fP() instead of setting a part encoder.
Encoding should not be applied to multiparts, thus the use of this
function on a part with content set with \fIcurl_mime_subparts\fP() is
diff --git a/docs/libcurl/curl_mime_filedata.3 b/docs/libcurl/curl_mime_filedata.3
index 940619127..9d01cb322 100644
--- a/docs/libcurl/curl_mime_filedata.3
+++ b/docs/libcurl/curl_mime_filedata.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_filedata 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_filedata 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
@@ -53,8 +55,8 @@ If the file size cannot be determined before actually reading it (such as for
a device or named pipe), the whole mime structure containing the part
will be transferred as chunks by HTTP and rejected by IMAP.
-Setting a part's contents twice is valid: only the value set by the last call
-is retained.
+Setting a part's contents multiple times is valid: only the value set by the
+last call is retained.
.SH EXAMPLE
.nf
curl_mime *mime;
diff --git a/docs/libcurl/curl_mime_filename.3 b/docs/libcurl/curl_mime_filename.3
index 332935aa2..33416b668 100644
--- a/docs/libcurl/curl_mime_filename.3
+++ b/docs/libcurl/curl_mime_filename.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_filename 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_filename 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_filename - set a mime part's remote file name
@@ -43,7 +45,7 @@ to NULL to remove a previously attached remote file name.
The remote file name string is copied into the part, thus the associated
storage may safely be released or reused after call. Setting a part's file
-name twice is valid: only the value set by the last call is retained.
+name multiple times is valid: only the value set by the last call is retained.
.SH EXAMPLE
.nf
curl_mime *mime;
diff --git a/docs/libcurl/curl_mime_free.3 b/docs/libcurl/curl_mime_free.3
index 50b109181..70a169198 100644
--- a/docs/libcurl/curl_mime_free.3
+++ b/docs/libcurl/curl_mime_free.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_free 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_free 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_free - free a previously built mime structure
@@ -35,9 +37,9 @@ with \fIcurl_mime_addpart(3)\fP and other mime-handling functions. This must
be called when the data has been used, which typically means after
\fIcurl_easy_perform(3)\fP has been called.
-The handle to free is the one you passed to
-the \fICURLOPT_MIMEPOST(3)\fP option: attached subparts mime structures must
-not be explicitly freed as they are by the top structure freeing.
+The handle to free is the one you passed to the \fICURLOPT_MIMEPOST(3)\fP
+option: attached sub part mime structures must not be explicitly freed as they
+are by the top structure freeing.
\fBmime\fP is the handle as returned from a previous call to
\fIcurl_mime_init(3)\fP and may be NULL.
diff --git a/docs/libcurl/curl_mime_headers.3 b/docs/libcurl/curl_mime_headers.3
index cccc2145d..e7dde698a 100644
--- a/docs/libcurl/curl_mime_headers.3
+++ b/docs/libcurl/curl_mime_headers.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_headers 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_headers 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_headers - set a mime part's custom headers
@@ -42,8 +44,8 @@ to remove a previously attached custom header list.
replacement or mime structure deletion; in this case the list must not be
freed explicitly.
-Setting a part's custom headers list twice is valid: only the value set by
-the last call is retained.
+Setting a part's custom headers list multiple times is valid: only the value
+set by the last call is retained.
.SH EXAMPLE
.nf
struct curl_slist *headers = NULL;
diff --git a/docs/libcurl/curl_mime_init.3 b/docs/libcurl/curl_mime_init.3
index 12672f482..bfb6dfc24 100644
--- a/docs/libcurl/curl_mime_init.3
+++ b/docs/libcurl/curl_mime_init.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_init 3 "December 17, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_init 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_init - create a mime handle
diff --git a/docs/libcurl/curl_mime_name.3 b/docs/libcurl/curl_mime_name.3
index 7cd2edb60..3bed9891d 100644
--- a/docs/libcurl/curl_mime_name.3
+++ b/docs/libcurl/curl_mime_name.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_name 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_name 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_name - set a mime part's name
@@ -38,9 +40,9 @@ fields are named.
\fIname\fP points to the null-terminated name string.
The name string is copied into the part, thus the associated storage may
-safely be released or reused after call. Setting a part's name twice is valid:
-only the value set by the last call is retained. It is possible to "unname" a
-part by setting \fIname\fP to NULL.
+safely be released or reused after call. Setting a part's name multiple times
+is valid: only the value set by the last call is retained. It is possible to
+reset the name of a part by setting \fIname\fP to NULL.
.SH EXAMPLE
.nf
curl_mime *mime;
diff --git a/docs/libcurl/curl_mime_subparts.3 b/docs/libcurl/curl_mime_subparts.3
index 8f2010926..a86ddf772 100644
--- a/docs/libcurl/curl_mime_subparts.3
+++ b/docs/libcurl/curl_mime_subparts.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_subparts 3 "December 17, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_subparts 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_mime_subparts - set subparts of a multipart mime part
+curl_mime_subparts - set sub-parts of a multipart mime part
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -35,14 +37,14 @@ structure.
\fIpart\fP is a handle to the multipart part.
-\fIsubparts\fP is a mime structure handle holding the subparts. After
+\fIsubparts\fP is a mime structure handle holding the sub-parts. After
\fIcurl_mime_subparts\fP succeeds, the mime structure handle belongs to the
multipart part and must not be freed explicitly. It may however be updated by
subsequent calls to mime API functions.
-Setting a part's contents twice is valid: only the value set by the last call
-is retained. It is possible to unassign previous part's contents by setting
-\fIsubparts\fP to NULL.
+Setting a part's contents multiple times is valid: only the value set by the
+last call is retained. It is possible to unassign previous part's contents by
+setting \fIsubparts\fP to NULL.
.SH EXAMPLE
.nf
/* The inline part is an alternative proposing the html and the text
diff --git a/docs/libcurl/curl_mime_type.3 b/docs/libcurl/curl_mime_type.3
index 137197dba..f759c7470 100644
--- a/docs/libcurl/curl_mime_type.3
+++ b/docs/libcurl/curl_mime_type.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_mime_type 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_type 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_mime_type - set a mime part's content type
@@ -38,8 +40,8 @@ CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);
set to NULL to remove a previously attached mime type.
The mime type string is copied into the part, thus the associated storage may
-safely be released or reused after call. Setting a part's type twice is valid:
-only the value set by the last call is retained.
+safely be released or reused after call. Setting a part's type multiple times
+is valid: only the value set by the last call is retained.
In the absence of a mime type and if needed by the protocol specifications,
a default mime type is determined by the context:
diff --git a/docs/libcurl/curl_mprintf.3 b/docs/libcurl/curl_mprintf.3
index c3532b07a..5fb7997bd 100644
--- a/docs/libcurl/curl_mprintf.3
+++ b/docs/libcurl/curl_mprintf.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_printf 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_printf 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
@@ -63,9 +65,9 @@ The functions \fBcurl_mvprintf()\fP, \fBcurl_mvfprintf()\fP,
\fBcurl_mvsprintf()\fP, \fBcurl_mvsnprintf()\fP are equivalent to the
functions \fBcurl_mprintf()\fP, \fBcurl_mfprintf()\fP, \fBcurl_msprintf()\fP,
\fBcurl_msnprintf()\fP, respectively, except that they are called with a
-va_list instead of a variable number of arguments. These functions do not
-call the va_end macro. Because they invoke the va_arg macro, the value of ap
-is undefined after the call.
+\fIva_list\fP instead of a variable number of arguments. These functions do
+not call the \fIva_end\fP macro. Because they invoke the \fIva_arg\fP macro,
+the value of \fIap\fP is undefined after the call.
The functions \fBcurl_maprintf()\fP and \fBcurl_mvaprintf()\fP return the
output string as pointer to a newly allocated memory area. The returned string
@@ -92,21 +94,21 @@ can also specify explicitly which argument is taken, at each place where an
argument is required, by writing "%m$" instead of '%' and "*m$" instead
of '*', where the decimal integer m denotes the position in the argument list
of the desired argument, indexed starting from 1. Thus,
-
+.nf
curl_mprintf("%*d", width, num);
-
+.fi
and
-
+.nf
curl_mprintf("%2$*1$d", width, num);
-
+.fi
are equivalent. The second style allows repeated references to the same
argument.
If the style using '$' is used, it must be used throughout for all conversions
taking an argument and all width and precision arguments, but it may be mixed
with "%%" formats, which do not consume an argument. There may be no gaps in
-the numbers of argu‐ ments specified using '$'; for example, if arguments 1
-and 3 are specified, argument 2 must also be specified somewhere in the format
+the numbers of arguments specified using '$'; for example, if arguments 1 and
+3 are specified, argument 2 must also be specified somewhere in the format
string.
.SH "Flag characters"
@@ -138,17 +140,17 @@ minimum field width. If the converted value has fewer characters than the
field width, it will be padded with spaces on the left (or right, if the
left-adjustment flag has been given). Instead of a decimal digit string one
may write "*" or "*m$" (for some decimal integer m) to specify that the field
-width is given in the next argument, or in the m-th argument, respec‐ tively,
-which must be of type int. A negative field width is taken as a '-' flag
-followed by a positive field width. In no case does a nonexistent or small
-field width cause truncation of a field; if the result of a conversion is
-wider than the field width, the field is expanded to contain the conversion
-result.
+width is given in the next argument, or in the \fIm-th\fP argument,
+respectively, which must be of type int. A negative field width is taken as
+a '-' flag followed by a positive field width. In no case does a nonexistent
+or small field width cause truncation of a field; if the result of a
+conversion is wider than the field width, the field is expanded to contain the
+conversion result.
.SH "Precision"
An optional precision in the form of a period ('.') followed by an optional
decimal digit string. Instead of a decimal digit string one may write "*" or
"*m$" (for some decimal integer m) to specify that the precision is given in
-the next argument, or in the m-th argument, respectively, which must be of
+the next argument, or in the \fIm-th\fP argument, respectively, which must be of
type int. If the precision is given as just '.', the precision is taken to be
zero. A negative precision is taken as if the precision were omitted. This
gives the minimum number of digits to appear for \fBd\fP, \fBi\fP, \fBo\fP,
@@ -197,18 +199,18 @@ empty.
.B o, u, x, X
The unsigned int argument is converted to unsigned octal (o), unsigned decimal
(u), or unsigned hexadecimal (\fBx\fP and \fBX\fP) notation. The letters
-abcdef are used for \fBx\fP conversions; the letters ABCDEF are used for
-\fBX\fP conversions. The precision, if any, gives the minimum number of digits
-that must appear; if the converted value requires fewer digits, it is padded
-on the left with zeros. The default precision is 1. When 0 is printed with
-an explicit precision 0, the output is empty.
+\fIabcdef\fP are used for \fBx\fP conversions; the letters \fIABCDEF\fP are
+used for \fBX\fP conversions. The precision, if any, gives the minimum number
+of digits that must appear; if the converted value requires fewer digits, it
+is padded on the left with zeros. The default precision is 1. When 0 is
+printed with an explicit precision 0, the output is empty.
.TP
.B e, E
-The double argument is rounded and output in the style "[-]d.ddde±dd"
+The double argument is rounded and output in the style \fB"[-]d.ddde±dd"\fP
.TP
.B f, F
-The double argument is rounded and output to decimal notiation in the style
-[-]ddd.ddd.
+The double argument is rounded and output to decimal notation in the style
+\fB"[-]ddd.ddd"\fP.
.TP
.B g, G
The double argument is converted in style f or e.
@@ -218,12 +220,12 @@ The int argument is converted to an unsigned char, and the resulting character
is written.
.TP
.B s
-The const char * argument is expected to be a pointer to an array of character
-type (pointer to a string). Characters from the array are written up to (but
-not including) a terminating null byte. If a precision is specified, no more
-than the number specified are written. If a precision is given, no null byte
-need be present; if the precision is not specified, or is greater than the
-size of the array, the array must contain a terminating null byte.
+The \fIconst char *\fP argument is expected to be a pointer to an array of
+character type (pointer to a string). Characters from the array are written up
+to (but not including) a terminating null byte. If a precision is specified,
+no more than the number specified are written. If a precision is given, no
+null byte need be present; if the precision is not specified, or is greater
+than the size of the array, the array must contain a terminating null byte.
.TP
.B p
The \fIvoid *\fP pointer argument is printed in hexadecimal.
diff --git a/docs/libcurl/curl_multi_add_handle.3 b/docs/libcurl/curl_multi_add_handle.3
index 1582b43f0..119476e39 100644
--- a/docs/libcurl/curl_multi_add_handle.3
+++ b/docs/libcurl/curl_multi_add_handle.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_add_handle 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_add_handle 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
@@ -76,7 +78,7 @@ first the easy handle and then the multi handle:
curl_multi_add_handle(multi_handle, http_handle2);
.fi
.SH AVAILABILITY
-ADded in 7.9.6
+Added in 7.9.6
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code.
.SH "SEE ALSO"
diff --git a/docs/libcurl/curl_multi_assign.3 b/docs/libcurl/curl_multi_assign.3
index 892285bd4..945dc956f 100644
--- a/docs/libcurl/curl_multi_assign.3
+++ b/docs/libcurl/curl_multi_assign.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_assign 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_assign 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_assign \- set data to associate with an internal socket
@@ -49,6 +51,8 @@ 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.
+
+It is acceptable to call this function from your multi callback functions.
.SH EXAMPLE
.nf
/* make our struct pointer associated with socket fd */
diff --git a/docs/libcurl/curl_multi_cleanup.3 b/docs/libcurl/curl_multi_cleanup.3
index 51655a6eb..dd2b01762 100644
--- a/docs/libcurl/curl_multi_cleanup.3
+++ b/docs/libcurl/curl_multi_cleanup.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_cleanup 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_cleanup - close down a multi session
diff --git a/docs/libcurl/curl_multi_fdset.3 b/docs/libcurl/curl_multi_fdset.3
index 354fd3ccd..9ca434581 100644
--- a/docs/libcurl/curl_multi_fdset.3
+++ b/docs/libcurl/curl_multi_fdset.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_fdset 3 "October 31, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_fdset 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
@@ -35,23 +37,23 @@ CURLMcode curl_multi_fdset(CURLM *multi_handle,
.ad
.SH DESCRIPTION
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
+libcurl returns its \fIfd_set\fP sets. The application can use these to
+select() on, but be sure to \fIFD_ZERO\fP them before calling this function as
\fIcurl_multi_fdset(3)\fP only adds its own descriptors, it does not 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.
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.
+object of type \fBfd_set\fP 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.
+object of type \fBfd_set\fP 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.
+of type \fBfd_set\fP 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
this function returns. Otherwise it will contain the highest descriptor number
@@ -66,16 +68,17 @@ conditions to find a suitable value.
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 would think and want.
+activity has been seen on the \fBfd_sets\fP after the timeout expires as
+otherwise internal retries and timeouts may not work as you would 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
-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...
+set in an \fBfd_set\fP, which on POSIX systems means that the file descriptor
+is larger than \fBFD_SETSIZE\fP, then libcurl will try to not set it. Setting
+a too large file descriptor in an \fBfd_set\fP 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...
.SH EXAMPLE
.nf
/* get file descriptors from the transfers */
@@ -92,7 +95,7 @@ for...
.SH AVAILABILITY
Added in 7.9.6
.SH RETURN VALUE
-CURLMcode type, general libcurl multi interface error code. See
+\fBCURLMcode\fP type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP
.SH "SEE ALSO"
.BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
diff --git a/docs/libcurl/curl_multi_info_read.3 b/docs/libcurl/curl_multi_info_read.3
index e2d7cbe2a..1feee6a62 100644
--- a/docs/libcurl/curl_multi_info_read.3
+++ b/docs/libcurl/curl_multi_info_read.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_info_read 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_info_read 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_multi_info_read - read multi stack informationals
+curl_multi_info_read - read multi stack information
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -30,10 +32,10 @@ curl_multi_info_read - read multi stack informationals
CURLMsg *curl_multi_info_read(CURLM *multi_handle, int *msgs_in_queue);
.fi
.SH DESCRIPTION
-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.
+Ask the multi handle if there are any messages from the individual
+transfers. Messages may include information 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.
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
@@ -49,10 +51,10 @@ is emptied.
calling \fIcurl_multi_cleanup(3)\fP, \fIcurl_multi_remove_handle(3)\fP or
\fIcurl_easy_cleanup(3)\fP.
-The 'CURLMsg' struct is simple and only contains basic information. If more
-involved information is wanted, the particular "easy handle" is present in
-that struct and can be used in subsequent regular \fIcurl_easy_getinfo(3)\fP
-calls (or similar):
+The \fICURLMsg\fP struct is simple and only contains basic information. If
+more involved information is wanted, the particular "easy handle" is present
+in that struct and can be used in subsequent regular
+\fIcurl_easy_getinfo(3)\fP calls (or similar):
.nf
struct CURLMsg {
diff --git a/docs/libcurl/curl_multi_init.3 b/docs/libcurl/curl_multi_init.3
index 3b0acdf25..a2e4b26a1 100644
--- a/docs/libcurl/curl_multi_init.3
+++ b/docs/libcurl/curl_multi_init.3
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_init 3 "January 04, 2022" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_init 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_init - create a multi handle
@@ -30,9 +32,9 @@ curl_multi_init - create a multi handle
CURLM *curl_multi_init();
.fi
.SH DESCRIPTION
-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
+This function returns a pointer to a \fICURLM\fP 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
\fIcurl_multi_cleanup(3)\fP when the operation is complete.
.SH EXAMPLE
.nf
diff --git a/docs/libcurl/curl_multi_perform.3 b/docs/libcurl/curl_multi_perform.3
index 8123c19e7..2edef0c86 100644
--- a/docs/libcurl/curl_multi_perform.3
+++ b/docs/libcurl/curl_multi_perform.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_perform 3 "December 09, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_perform 3 "August 15, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_multi_perform - reads/writes available data from each easy handle
+curl_multi_perform - reads/writes available data from easy handles
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -31,7 +33,7 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
.fi
.SH DESCRIPTION
This function performs transfers on all the added handles that need attention
-in an non-blocking fashion. The easy handles have previously been added to the
+in a non-blocking fashion. The easy handles have previously been added to the
multi handle with \fIcurl_multi_add_handle(3)\fP.
When an application has found out there's data available for the multi_handle
diff --git a/docs/libcurl/curl_multi_poll.3 b/docs/libcurl/curl_multi_poll.3
index cd2e9fd8f..4d59d1f2c 100644
--- a/docs/libcurl/curl_multi_poll.3
+++ b/docs/libcurl/curl_multi_poll.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_poll 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_poll 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
@@ -42,7 +44,8 @@ shorter expiry time than \fItimeout_ms\fP, that shorter time will be used
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.
+similar to \fIpoll(2)\fP's \fIpollfd\fP structure to be waited on in the same
+call.
On completion, if \fInumfds\fP is non-NULL, it will be populated with the
total number of file descriptors on which interesting events occurred. This
diff --git a/docs/libcurl/curl_multi_remove_handle.3 b/docs/libcurl/curl_multi_remove_handle.3
index e254365dc..3a873b995 100644
--- a/docs/libcurl/curl_multi_remove_handle.3
+++ b/docs/libcurl/curl_multi_remove_handle.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_remove_handle 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_remove_handle 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
diff --git a/docs/libcurl/curl_multi_setopt.3 b/docs/libcurl/curl_multi_setopt.3
index b12c67637..d4818550d 100644
--- a/docs/libcurl/curl_multi_setopt.3
+++ b/docs/libcurl/curl_multi_setopt.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_setopt 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_setopt 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_setopt \- set options for a curl multi handle
diff --git a/docs/libcurl/curl_multi_socket.3 b/docs/libcurl/curl_multi_socket.3
index 351b423a2..c075e0f37 100644
--- a/docs/libcurl/curl_multi_socket.3
+++ b/docs/libcurl/curl_multi_socket.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_socket 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_socket 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_socket \- reads/writes available data
@@ -67,68 +69,6 @@ equivalent to \fIcurl_multi_socket_action(3)\fP with \fBev_bitmask\fP set to
Force libcurl to (re-)check all its internal sockets and transfers instead of
just a single one by calling \fIcurl_multi_socket_all(3)\fP. Note that there
should not be any reason to use this function.
-.SH CALLBACK
-The socket \fBcallback\fP function uses a prototype like this
-.nf
- int curl_socket_callback(CURL *easy, /* easy handle */
- curl_socket_t s, /* socket */
- int action, /* see values below */
- void *userp, /* private callback pointer */
- void *socketp); /* private socket pointer */
-.fi
-The callback MUST return 0.
-
-The \fIeasy\fP argument is a pointer to the easy handle that deals with this
-particular socket. Note that a single handle may work with several sockets
-simultaneously.
-
-The \fIs\fP argument is the actual socket value as you use it within your
-system.
-
-The \fIaction\fP argument to the callback has one of five values:
-.RS
-.IP "CURL_POLL_NONE (0)"
-register, not interested in readiness (yet)
-.IP "CURL_POLL_IN (1)"
-register, interested in read readiness
-.IP "CURL_POLL_OUT (2)"
-register, interested in write readiness
-.IP "CURL_POLL_INOUT (3)"
-register, interested in both read and write readiness
-.IP "CURL_POLL_REMOVE (4)"
-unregister
-.RE
-
-The \fIsocketp\fP argument is a private pointer you have previously set with
-\fIcurl_multi_assign(3)\fP to be associated with the \fIs\fP 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.
-
-The \fIuserp\fP argument is a private pointer you have previously set with
-\fIcurl_multi_setopt(3)\fP and the \fICURLMOPT_SOCKETDATA(3)\fP option.
-.SH "TYPICAL USAGE"
-1. Create a multi handle
-
-2. Set the socket callback with \fICURLMOPT_SOCKETFUNCTION(3)\fP
-
-3. Set the timeout callback with \fICURLMOPT_TIMERFUNCTION(3)\fP, to get to
-know what timeout value to use when waiting for socket activities.
-
-4. Add easy handles with curl_multi_add_handle()
-
-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.
-
-6. Wait for activity on any of libcurl's sockets, use the timeout value your
-callback has been told
-
-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 \fIcurl_multi_socket_action(3)\fP with \fICURL_SOCKET_TIMEOUT\fP
-
-8. Go back to step 6.
.SH EXAMPLE
.nf
/* the event-library gets told when there activity on the socket 'fd',
diff --git a/docs/libcurl/curl_multi_socket_action.3 b/docs/libcurl/curl_multi_socket_action.3
index d4cd41ea6..600c2cbd9 100644
--- a/docs/libcurl/curl_multi_socket_action.3
+++ b/docs/libcurl/curl_multi_socket_action.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_socket_action 3 "December 09, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_socket_action 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
diff --git a/docs/libcurl/curl_multi_strerror.3 b/docs/libcurl/curl_multi_strerror.3
index 721bc3fd0..7a341be38 100644
--- a/docs/libcurl/curl_multi_strerror.3
+++ b/docs/libcurl/curl_multi_strerror.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_strerror 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_strerror 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_strerror - return string describing error code
@@ -28,8 +30,8 @@ curl_multi_strerror - return string describing error code
.B #include <curl/curl.h>
.BI "const char *curl_multi_strerror(CURLMcode " errornum ");"
.SH DESCRIPTION
-The curl_multi_strerror() function returns a string describing the CURLMcode
-error code passed in the argument \fIerrornum\fP.
+The curl_multi_strerror() function returns a string describing the
+\fICURLMcode\fP error code passed in the argument \fIerrornum\fP.
.SH EXAMPLE
.nf
int still_running;
diff --git a/docs/libcurl/curl_multi_timeout.3 b/docs/libcurl/curl_multi_timeout.3
index 4fda0325c..be04c38a6 100644
--- a/docs/libcurl/curl_multi_timeout.3
+++ b/docs/libcurl/curl_multi_timeout.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_timeout 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_timeout 3 "July 14, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
@@ -44,9 +46,9 @@ The timeout value returned in the long \fBtimeout\fP points to, is in number
of milliseconds at this moment. If 0, it means you should proceed immediately
without waiting for anything. If it returns -1, there's no timeout at all set.
-An application that uses the multi_socket API SHOULD NOT use this function, but
-SHOULD instead use \fIcurl_multi_setopt(3)\fP and its
-\fPCURLMOPT_TIMERFUNCTION\fP option for proper and desired behavior.
+An application that uses the multi_socket API SHOULD NOT use this function,
+but SHOULD instead use the \fICURLMOPT_TIMERFUNCTION(3)\fP option for proper
+and desired behavior.
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
@@ -68,9 +70,11 @@ timeout.tv_usec = (timeo % 1000) * 1000;
select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
.fi
.SH TYPICAL USAGE
-Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. You
-figure out which sockets to wait for by calling \fIcurl_multi_fdset(3)\fP or
-by a previous call to \fIcurl_multi_socket(3)\fP.
+Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. Figure
+out which sockets to wait for by calling \fIcurl_multi_fdset(3)\fP.
+
+When there is activity or timeout, call \fIcurl_multi_perform(3)\fP and then
+loop - until all transfers are complete.
.SH AVAILABILITY
This function was added in libcurl 7.15.4.
.SH RETURN VALUE
diff --git a/docs/libcurl/curl_multi_wait.3 b/docs/libcurl/curl_multi_wait.3
index 3205fdfb1..d48711a84 100644
--- a/docs/libcurl/curl_multi_wait.3
+++ b/docs/libcurl/curl_multi_wait.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_wait 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_wait 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
@@ -41,8 +43,9 @@ 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.
-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 \fIcurl_waitfd\fP structures which
+are similar to \fIpoll(2)\fP's \fIpollfd\fP structure to be waited on in the
+same call.
On completion, if \fInumfds\fP is non-NULL, it will be populated with the
total number of file descriptors on which interesting events occurred. This
@@ -65,14 +68,14 @@ struct curl_waitfd {
};
.fi
.IP CURL_WAIT_POLLIN
-Bit flag to curl_waitfd.events indicating the socket should poll on read
+Bit flag to \fIcurl_waitfd.events\fP indicating the socket should poll on read
events such as new data received.
.IP CURL_WAIT_POLLPRI
-Bit flag to curl_waitfd.events indicating the socket should poll on high
+Bit flag to \fIcurl_waitfd.events\fP indicating the socket should poll on high
priority read events such as out of band data.
.IP CURL_WAIT_POLLOUT
-Bit flag to curl_waitfd.events indicating the socket should poll on write
-events such as the socket being clear to write without blocking.
+Bit flag to \fIcurl_waitfd.events\fP indicating the socket should poll on
+write events such as the socket being clear to write without blocking.
.SH EXAMPLE
.nf
CURL *easy_handle;
diff --git a/docs/libcurl/curl_multi_wakeup.3 b/docs/libcurl/curl_multi_wakeup.3
index c6f7df0da..929710cc3 100644
--- a/docs/libcurl/curl_multi_wakeup.3
+++ b/docs/libcurl/curl_multi_wakeup.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_multi_wakeup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_wakeup 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
diff --git a/docs/libcurl/curl_share_cleanup.3 b/docs/libcurl/curl_share_cleanup.3
index 89c0ffa76..9d67aea4a 100644
--- a/docs/libcurl/curl_share_cleanup.3
+++ b/docs/libcurl/curl_share_cleanup.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_share_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_share_cleanup 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_share_cleanup - Clean up a shared object
@@ -37,7 +39,7 @@ Passing in a NULL pointer in \fIshare_handle\fP will make this function return
immediately with no action.
.SH EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
/* use the share, then ... */
diff --git a/docs/libcurl/curl_share_init.3 b/docs/libcurl/curl_share_init.3
index f43974401..656c81b7b 100644
--- a/docs/libcurl/curl_share_init.3
+++ b/docs/libcurl/curl_share_init.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_share_init 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_share_init 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_share_init - Create a shared object
@@ -30,17 +32,18 @@ curl_share_init - Create a shared object
CURLSH *curl_share_init();
.fi
.SH DESCRIPTION
-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
-\fIcurl_share_cleanup\fP when all operations using the share are complete.
+This function returns a pointer to a \fICURLSH\fP 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 \fIcurl_share_cleanup(3)\fP when all operations using the share are
+complete.
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 EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
if(sh)
diff --git a/docs/libcurl/curl_share_setopt.3 b/docs/libcurl/curl_share_setopt.3
index 977b24a33..711fcd17a 100644
--- a/docs/libcurl/curl_share_setopt.3
+++ b/docs/libcurl/curl_share_setopt.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_share_setopt 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_share_setopt 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_share_setopt - Set options for a shared object
@@ -44,7 +46,7 @@ See \fICURLSHOPT_UNSHARE(3)\fP.
See \fICURLSHOPT_USERDATA(3)\fP.
.SH EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
if(sh)
diff --git a/docs/libcurl/curl_share_strerror.3 b/docs/libcurl/curl_share_strerror.3
index ef31edefb..83850b044 100644
--- a/docs/libcurl/curl_share_strerror.3
+++ b/docs/libcurl/curl_share_strerror.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_share_strerror 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_share_strerror 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_share_strerror - return string describing error code
@@ -28,11 +30,11 @@ curl_share_strerror - return string describing error code
.B #include <curl/curl.h>
.BI "const char *curl_share_strerror(CURLSHcode " errornum ");"
.SH DESCRIPTION
-The curl_share_strerror() function returns a string describing the CURLSHcode
-error code passed in the argument \fIerrornum\fP.
+The \fIcurl_share_strerror(3)\fP function returns a string describing the
+\fICURLSHcode\fP error code passed in the argument \fIerrornum\fP.
.SH EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
if(sh)
diff --git a/docs/libcurl/curl_slist_append.3 b/docs/libcurl/curl_slist_append.3
index 4dd734d1b..e30019f34 100644
--- a/docs/libcurl/curl_slist_append.3
+++ b/docs/libcurl/curl_slist_append.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_slist_append 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_slist_append 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_slist_append - add a string to an slist
diff --git a/docs/libcurl/curl_slist_free_all.3 b/docs/libcurl/curl_slist_free_all.3
index ba84e6274..f1ac4dc15 100644
--- a/docs/libcurl/curl_slist_free_all.3
+++ b/docs/libcurl/curl_slist_free_all.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_slist_free_all 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_slist_free_all 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_slist_free_all - free an entire curl_slist list
diff --git a/docs/libcurl/curl_strequal.3 b/docs/libcurl/curl_strequal.3
index 0eb8fbcb2..78d11252a 100644
--- a/docs/libcurl/curl_strequal.3
+++ b/docs/libcurl/curl_strequal.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_strequal 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_strequal 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
@@ -38,7 +40,7 @@ of the characters. It returns a non-zero (TRUE) integer if the strings are
identical.
.sp
The \fBcurl_strnequal()\fP function is similar, except it only compares the
-first \fIlenght\fP characters of \fIstr1\fP.
+first \fIlength\fP characters of \fIstr1\fP.
.sp
These functions are provided by libcurl to enable applications to compare
strings in a truly portable manner. There are no standard portable case
@@ -51,9 +53,7 @@ if(curl_strnequal(name, input, 5))
printf("Name and input matches in the 5 first bytes\\n");
.fi
.SH AVAILABILITY
-These functions will be removed from the public libcurl API in a near
-future. They will instead be made "available" by source code access only, and
-then as curlx_strequal() and curlx_strenqual().
+Always
.SH RETURN VALUE
Non-zero if the strings are identical. Zero if they are not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/curl_unescape.3 b/docs/libcurl/curl_unescape.3
index 036dcdf09..9133b7fac 100644
--- a/docs/libcurl/curl_unescape.3
+++ b/docs/libcurl/curl_unescape.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_unescape 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_unescape 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_unescape - URL decodes the given string
@@ -37,8 +39,8 @@ 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.
-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, \fIcurl_unescape(3)\fP will use strlen()
+on the input \fBurl\fP string to find out the size.
You must \fIcurl_free(3)\fP the returned string when you are done with it.
.SH EXAMPLE
@@ -61,4 +63,4 @@ be removed in a future release.
.SH RETURN VALUE
A pointer to a null-terminated string or NULL if it failed.
.SH "SEE ALSO"
-.br 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
diff --git a/docs/libcurl/curl_url.3 b/docs/libcurl/curl_url.3
index c89b68566..e423233e7 100644
--- a/docs/libcurl/curl_url.3
+++ b/docs/libcurl/curl_url.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_url 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_url - returns a new CURLU handle
+curl_url - returns a new URL handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -30,8 +32,8 @@ curl_url - returns a new CURLU handle
CURLU *curl_url();
.fi
.SH DESCRIPTION
-This function will allocates and returns a pointer to a fresh CURLU handle, to
-be used for further use of the URL API.
+This function will allocates and returns a pointer to a fresh \fICURLU\fP
+handle, to be used for further use of the URL API.
.SH EXAMPLE
.nf
CURLUcode rc;
diff --git a/docs/libcurl/curl_url_cleanup.3 b/docs/libcurl/curl_url_cleanup.3
index 90c22690f..ab6353439 100644
--- a/docs/libcurl/curl_url_cleanup.3
+++ b/docs/libcurl/curl_url_cleanup.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_url_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_cleanup 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_url_cleanup - free a CURLU handle
+curl_url_cleanup - free the URL handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -30,7 +32,7 @@ curl_url_cleanup - free a CURLU handle
void curl_url_cleanup(CURLU *handle);
.fi
.SH DESCRIPTION
-Frees all the resources associated with the given CURLU handle!
+Frees all the resources associated with the given \fICURLU\fP handle!
.SH EXAMPLE
.nf
CURLU *url = curl_url();
diff --git a/docs/libcurl/curl_url_dup.3 b/docs/libcurl/curl_url_dup.3
index 6ac0ccfa0..5fcfa52da 100644
--- a/docs/libcurl/curl_url_dup.3
+++ b/docs/libcurl/curl_url_dup.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_url_dup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_dup 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_url_dup - duplicate a CURLU handle
+curl_url_dup - duplicate a URL handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -30,9 +32,9 @@ curl_url_dup - duplicate a CURLU handle
CURLU *curl_url_dup(CURLU *inhandle);
.fi
.SH DESCRIPTION
-Duplicates a given CURLU \fIinhandle\fP and all its contents and returns a
-pointer to a new CURLU handle. The new handle also needs to be freed with
-\fIcurl_url_cleanup(3)\fP.
+Duplicates a given \fICURLU\fP \fIinhandle\fP and all its contents and returns
+a pointer to a new \fICURLU\fP handle. The new handle also needs to be freed
+with \fIcurl_url_cleanup(3)\fP.
.SH EXAMPLE
.nf
CURLUcode rc;
diff --git a/docs/libcurl/curl_url_get.3 b/docs/libcurl/curl_url_get.3
index d28f53b30..f3c9c3d53 100644
--- a/docs/libcurl/curl_url_get.3
+++ b/docs/libcurl/curl_url_get.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_url_get 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_get 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_url_get - extract a part from a URL
@@ -85,7 +87,7 @@ Scheme cannot be URL decoded on get.
.IP CURLUPART_PASSWORD
.IP CURLUPART_OPTIONS
.IP CURLUPART_HOST
-The host name. If it is an IPv6 numeric address, the zoneid will not be part
+The host name. If it is an IPv6 numeric address, the zone id will not be part
of it but is provided separately in \fICURLUPART_ZONEID\fP. IPv6 numerical
addresses are returned within brackets ([]).
.IP CURLUPART_ZONEID
diff --git a/docs/libcurl/curl_url_set.3 b/docs/libcurl/curl_url_set.3
index 8504b55ac..19d403729 100644
--- a/docs/libcurl/curl_url_set.3
+++ b/docs/libcurl/curl_url_set.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_url_set 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_set 3 "September 30, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_url_set - set a URL part
@@ -45,7 +47,13 @@ The application does not have to keep \fIcontent\fP around after a successful
call.
Setting a part to a NULL pointer will effectively remove that part's contents
-from the CURLU handle.
+from the \fICURLU\fP handle.
+
+By default, this API only accepts URLs using schemes for protocols that are
+supported built-in. To make libcurl parse URLs generically even for schemes it
+does not know about, the \fBCURLU_NON_SUPPORT_SCHEME\fP flags bit must be
+set. Otherwise, this function returns \fICURLUE_UNSUPPORTED_SCHEME\fP on URL
+schemes it does not recognize.
The \fIflags\fP argument is a bitmask with independent features.
.SH PARTS
@@ -80,21 +88,24 @@ If a path is set in the URL without a leading slash, a slash will be inserted
automatically when this URL is read from the handle.
.IP CURLUPART_QUERY
The query part will also get spaces converted to pluses when asked to URL
-encode on set with the CURLU_URLENCODE bit.
+encode on set with the \fICURLU_URLENCODE\fP bit.
-If used together with the \fICURLU_APPENDQUERY\fP bit, the provided part will
-be appended on the end of the existing query - and if the previous part did not
-end with an ampersand (&), an ampersand will be inserted before the new
-appended part.
-
-When \fICURLU_APPENDQUERY\fP is used together with \fICURLU_URLENCODE\fP, the
-first '=' symbol will not be URL encoded.
+If used together with the \fICURLU_APPENDQUERY\fP bit, the provided part is
+appended on the end of the existing query.
The question mark in the URL is not part of the actual query contents.
.IP CURLUPART_FRAGMENT
The hash sign in the URL is not part of the actual fragment contents.
.SH FLAGS
The flags argument is zero, one or more bits set in a bitmask.
+.IP CURLU_APPENDQUERY
+Can be used when setting the \fICURLUPART_QUERY\fP component. The provided new
+part will then instead be appended at the end of the existing query - and if
+the previous part did not end with an ampersand (&), an ampersand gets
+inserted before the new appended part.
+
+When \fICURLU_APPENDQUERY\fP is used together with \fICURLU_URLENCODE\fP, the
+first '=' symbol will not be URL encoded.
.IP CURLU_NON_SUPPORT_SCHEME
If set, allows \fIcurl_url_set(3)\fP to set a non-supported scheme.
.IP CURLU_URLENCODE
@@ -136,7 +147,7 @@ When space is used and allowed in a URL, it will be stored as-is unless
\fICURLU_URLENCODE\fP is also set, which then makes libcurl URL-encode the
space before stored. This affects how the URL will be constructed when
\fIcurl_url_get(3)\fP is subsequently used to extract the full URL or
-individual parts.
+individual parts. (Added in 7.78.0)
.SH EXAMPLE
.nf
CURLUcode rc;
@@ -152,8 +163,8 @@ individual parts.
.SH AVAILABILITY
Added in 7.62.0. CURLUPART_ZONEID was added in 7.65.0.
.SH RETURN VALUE
-Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
-fine. See the \fIlibcurl-errors(3)\fP man page for the full list with
+Returns a \fICURLUcode\fP error value, which is CURLUE_OK (0) if everything
+went fine. See the \fIlibcurl-errors(3)\fP man page for the full list with
descriptions.
A URL string passed on to \fIcurl_url_set(3)\fP for the \fBCURLUPART_URL\fP
diff --git a/docs/libcurl/curl_url_strerror.3 b/docs/libcurl/curl_url_strerror.3
index c88cc073c..f76f34ade 100644
--- a/docs/libcurl/curl_url_strerror.3
+++ b/docs/libcurl/curl_url_strerror.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_url_strerror 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_strerror 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_url_strerror - return string describing error code
diff --git a/docs/libcurl/curl_version.3 b/docs/libcurl/curl_version.3
index 023290f86..b3b3588bf 100644
--- a/docs/libcurl/curl_version.3
+++ b/docs/libcurl/curl_version.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH curl_version 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_version 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
curl_version - returns the libcurl version string
diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3
index 925804c18..a8f2f1695 100644
--- a/docs/libcurl/curl_version_info.3
+++ b/docs/libcurl/curl_version_info.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH curl_version_info 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_version_info 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-curl_version_info - returns run-time libcurl version info
+curl_version_info - returns runtime libcurl version info
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -173,8 +175,8 @@ supports IPv6
.IP CURL_VERSION_KERBEROS4
supports Kerberos V4 (when using FTP). Legacy bit. Deprecated since 7.33.0.
.IP CURL_VERSION_KERBEROS5
-supports Kerberos V5 authentication for FTP, IMAP, POP3, SMTP and SOCKSv5 proxy
-(Added in 7.40.0)
+supports Kerberos V5 authentication for FTP, IMAP, LDAP, POP3, SMTP and
+SOCKSv5 proxy. (Added in 7.40.0)
.IP CURL_VERSION_LARGEFILE
libcurl was built with support for large files. (Added in 7.11.1)
.IP CURL_VERSION_UNICODE
@@ -205,6 +207,9 @@ 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)
+.IP CURL_VERSION_THREADSAFE
+libcurl was built with thread-safety support (Atomic or SRWLOCK) to protect
+curl initialization. (Added in 7.84.0) See \fIlibcurl-thread(3)\fP
.IP CURL_VERSION_TLSAUTH_SRP
libcurl was built with support for TLS-SRP (in one or more of the built-in TLS
backends). (Added in 7.21.4)
@@ -214,7 +219,7 @@ libcurl was built with support for Unix domain sockets.
.RE
\fIssl_version\fP is an ASCII string for the TLS library name + version
used. If libcurl has no SSL support, this is NULL. For example "Schannel",
-\&"SecureTransport" or "OpenSSL/1.1.0g".
+\&"Secure Transport" or "OpenSSL/1.1.0g".
\fIssl_version_num\fP is always 0.
diff --git a/docs/libcurl/curl_ws_meta.3 b/docs/libcurl/curl_ws_meta.3
new file mode 100644
index 000000000..451551e2e
--- /dev/null
+++ b/docs/libcurl/curl_ws_meta.3
@@ -0,0 +1,120 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH curl_ws_meta 3 "October 03, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_ws_meta - meta data WebSocket information
+.SH SYNOPSIS
+.nf
+#include <curl/easy.h>
+
+struct curl_ws_frame {
+ int age; /* zero */
+ int flags; /* See the CURLWS_* defines */
+ curl_off_t offset; /* the offset of this data into the frame */
+ curl_off_t bytesleft; /* number of pending bytes left of the payload */
+};
+
+struct curl_ws_frame *curl_ws_meta(CURL *curl);
+.fi
+.SH DESCRIPTION
+This function call is EXPERIMENTAL.
+
+When the write callback (\fICURLOPT_WRITEFUNCTION(3)\fP) is invoked on
+received WebSocket traffic, \fIcurl_ws_meta(3)\fP can be called from within
+the callback to provide additional information about the current frame.
+
+This function only works from within the callback, and only when receiving
+WebSocket data.
+
+This function requires an easy handle as input argument for libcurl to know
+what transfer the question is about, but as there is no such pointer provided
+to the callback by libcurl itself, applications that want to use
+\fIcurl_ws_meta(3)\fP need to pass it on to the callback on its own.
+
+.SH "struct fields"
+.IP age
+This field specify the age of this struct. It is always zero for now.
+.IP flags
+This is a bitmask with individual bits set that describes the WebSocket
+data. See the list below.
+.IP offset
+When this frame is a continuation of fragment data already delivered, this is
+the offset into the final fragment where this piece belongs.
+.IP bytesleft
+If this is not a complete fragment, the \fIbytesleft\fP field informs about
+how many additional bytes are expected to arrive before this fragment is
+complete.
+.SH FLAGS
+.IP CURLWS_TEXT
+The buffer contains text data. Note that this makes a difference to WebSocket
+but libcurl itself will not make any verification of the content or
+precautions that you actually receive valid UTF-8 content.
+.IP CURLWS_BINARY
+This is binary data.
+.IP CURLWS_CONT
+This is not the final fragment of the message, it implies that there will be
+another fragment coming as part of the same message.
+.IP CURLWS_CLOSE
+This transfer is now closed.
+.IP CURLWS_PING
+This as an incoming ping message, that expects a pong response.
+.SH EXAMPLE
+.nf
+
+/* we pass a pointer to this struct to the callback */
+struct customdata {
+ CURL *easy;
+ void *ptr;
+};
+
+static size_t writecb(unsigned char *buffer,
+ size_t size, size_t nitems, void *p)
+{
+ struct customdata *c = (struct customdata *)p;
+ struct curl_ws_frame *m = curl_ws_meta(c->easy);
+
+ /* m->flags tells us about the traffic */
+}
+
+{
+ struct customdata custom;
+ custom.easy = easy;
+ custom.ptr = NULL;
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, &custom);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.86.0.
+.SH RETURN VALUE
+This function returns a pointer to a \fIcurl_ws_frame\fP struct with
+information that is valid for this specific callback invocation. If it cannot
+return this information, or if the function is called in the wrong context, it
+returns NULL.
+.SH "SEE ALSO"
+.BR curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), "
+.BR curl_ws_send "(3), " curl_ws_recv "(3), "
diff --git a/docs/libcurl/curl_ws_recv.3 b/docs/libcurl/curl_ws_recv.3
new file mode 100644
index 000000000..a7152ae9d
--- /dev/null
+++ b/docs/libcurl/curl_ws_recv.3
@@ -0,0 +1,61 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH curl_ws_recv 3 "October 03, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_ws_recv - receive WebSocket data
+.SH SYNOPSIS
+.nf
+#include <curl/easy.h>
+
+CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
+ size_t *recv, struct curl_ws_frame **meta);
+.fi
+.SH DESCRIPTION
+This function call is EXPERIMENTAL.
+
+Retrieves as much as possible of a received WebSocket data fragment into the
+\fBbuffer\fP, but not more than \fBbuflen\fP bytes. \fIrecv\fP is set to the
+number of bytes actually stored.
+
+If there is more fragment data to deliver than what fits in the provided
+\fIbuffer\fP, libcurl returns a full buffer and the application needs to call
+this function again to continue draining the buffer.
+
+The \fImeta\fP pointer gets set to point to a \fIstruct curl_ws_frame\fP that
+contains information about the received data. See the \fIcurl_ws_meta(3)\fP
+for details on that struct.
+.SH EXAMPLE
+.nf
+
+.fi
+.SH AVAILABILITY
+Added in 7.86.0.
+.SH RETURN VALUE
+
+.SH "SEE ALSO"
+.BR curl_easy_setopt "(3), " curl_easy_perform "(3), "
+.BR curl_easy_getinfo "(3), "
+.BR curl_ws_send "(3) "
diff --git a/docs/libcurl/curl_ws_send.3 b/docs/libcurl/curl_ws_send.3
new file mode 100644
index 000000000..628d358d7
--- /dev/null
+++ b/docs/libcurl/curl_ws_send.3
@@ -0,0 +1,91 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH curl_ws_send 3 "October 07, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_ws_send - send WebSocket data
+.SH SYNOPSIS
+.nf
+#include <curl/easy.h>
+
+CURLcode curl_ws_send(CURL *curl, const void *buffer, size_t buflen,
+ size_t *sent, curl_off_t fragsize,
+ unsigned int flags);
+.fi
+.SH DESCRIPTION
+This function call is EXPERIMENTAL.
+
+Send the specific message fragment over an established WebSocket
+connection. The \fIbuffer\fP holds the data to send and it is \fIbuflen\fP
+number of payload bytes in that memory area.
+
+\fIsent\fP is returned as the number of payload bytes actually sent.
+
+To send a (huge) fragment using multiple calls with partial content per
+invoke, set the \fICURLWS_OFFSET\fP bit and the \fIfragsize\fP argument as the
+total expected size for the first part, then set the \fICURLWS_OFFSET\fP with
+a zero \fIfragsize\fP for the following parts.
+
+If not sending a partial fragment or if this is raw mode, \fIfragsize\fP
+should be set to zero.
+
+If \fBCURLWS_RAW_MODE\fP is enabled in \fICURLOPT_WS_OPTIONS(3)\fP, the
+\fBflags\fP argument should be set to 0.
+
+.SH FLAGS
+.IP CURLWS_TEXT
+The buffer contains text data. Note that this makes a difference to WebSocket
+but libcurl itself will not make any verification of the content or
+precautions that you actually send valid UTF-8 content.
+.IP CURLWS_BINARY
+This is binary data.
+.IP CURLWS_CONT
+This is not the final fragment of the message, which implies that there will
+be another fragment coming as part of the same message where this bit is not
+set.
+.IP CURLWS_CLOSE
+Close this transfer.
+.IP CURLWS_PING
+This as a ping.
+.IP CURLWS_PONG
+This as a pong.
+.IP CURLWS_OFFSET
+The provided data is only a partial fragment and there will be more in a
+following call to \fIcurl_ws_send()\fP. When sending only a piece of the
+fragment like this, the \fIfragsize\fP must be provided with the total
+expected fragment size in the first call and it needs to be zero in subsequent
+calls.
+.SH EXAMPLE
+.nf
+
+.fi
+.SH AVAILABILITY
+Added in 7.86.0.
+.SH RETURN VALUE
+
+.SH "SEE ALSO"
+.BR curl_easy_setopt "(3), " curl_easy_perform "(3), "
+.BR curl_easy_getinfo "(3), "
+.BR curl_ws_recv "(3) "
diff --git a/docs/libcurl/libcurl-easy.3 b/docs/libcurl/libcurl-easy.3
index ab7184a67..d60f34816 100644
--- a/docs/libcurl/libcurl-easy.3
+++ b/docs/libcurl/libcurl-easy.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH libcurl 3 "November 08, 2021" "libcurl 7.81.0" "libcurl easy interface"
+.TH libcurl 3 "May 17, 2022" "libcurl 7.86.0" "libcurl easy interface"
.SH NAME
libcurl-easy \- easy interface overview
diff --git a/docs/libcurl/libcurl-env.3 b/docs/libcurl/libcurl-env.3
index 0ac81e440..4560eb9af 100644
--- a/docs/libcurl/libcurl-env.3
+++ b/docs/libcurl/libcurl-env.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH libcurl-env 3 "October 31, 2021" "libcurl 7.81.0" "libcurl environment variables"
+.TH libcurl-env 3 "September 20, 2022" "libcurl 7.86.0" "libcurl environment variables"
.SH NAME
libcurl-env \- environment variables libcurl understands
@@ -49,20 +51,25 @@ specific backend at first use. If no selection is done by the program using
libcurl, this variable's selection will be used. Setting a name that is not a
built-in alternative will make libcurl stay with the default.
-SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
-mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
+SSL backend names (case-insensitive): BearSSL, GnuTLS, gskit, mbedTLS,
+nss, OpenSSL, rustls, Schannel, Secure-Transport, wolfSSL
.IP HOME
When the netrc feature is used (\fICURLOPT_NETRC(3)\fP), this variable is
checked as the primary way to find the "current" home directory in which
the .netrc file is likely to exist.
+.IP USERPROFILE
+When the netrc feature is used (\fICURLOPT_NETRC(3)\fP), this variable is
+checked as the secondary way to find the "current" home directory (on Windows
+only) in which the .netrc file is likely to exist.
.IP LOGNAME
-User name to use when invoking the ntlm-wb tool, if NTLMUSER was not set.
+User name to use when invoking the \fIntlm-wb\fP tool, if \fINTLMUSER\fP was
+not set.
.IP NO_PROXY
This has the same functionality as the \fICURLOPT_NOPROXY(3)\fP option: it
gives libcurl a comma-separated list of host name patterns for which libcurl
should not use a proxy.
.IP NTLMUSER
-User name to use when invoking the ntlm-wb tool.
+User name to use when invoking the \fIntlm-wb\fP tool.
.IP SSLKEYLOGFILE
When set and libcurl runs with a SSL backend that supports this feature,
libcurl will save SSL secrets into the given file name. Using those SSL
@@ -72,8 +79,8 @@ analyze/view the traffic.
When libcurl runs with the NSS backends for TLS features, this variable is
used to find the directory for NSS PKI database instead of the built-in.
.IP USER
-User name to use when invoking the ntlm-wb tool, if NTLMUSER and LOGNAME
-were not set.
+User name to use when invoking the \fIntlm-wb\fP tool, if \fINTLMUSER\fP and
+\fILOGNAME\fP were not set.
.SH "Debug Variables"
There's a set of variables only recognized and used if libcurl was built
"debug enabled", which should never be true for a library used in production.
@@ -88,6 +95,7 @@ random outputs can be tested for what they generate.
.IP "CURL_TRACE"
Debug-only variable. Used for debugging the lib/ldap implementation.
.IP "CURL_NTLM_WB_FILE"
-Debug-only variable. Used to set to a debug-version of the ntlm-wb executable.
+Debug-only variable. Used to set to a debug-version of the \fIntlm-wb\fP
+executable.
.IP "CURL_OPENLDAP_TRACE"
-Debug-only variable. Used for debugging the lib/openldap.c implementation.
+Debug-only variable. Used for debugging the OpenLDAP implementation.
diff --git a/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3
index afa01d9f4..500f4a628 100644
--- a/docs/libcurl/libcurl-errors.3
+++ b/docs/libcurl/libcurl-errors.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH libcurl-errors 3 "December 08, 2021" "libcurl 7.81.0" "libcurl errors"
+.TH libcurl-errors 3 "September 20, 2022" "libcurl 7.86.0" "libcurl errors"
.SH NAME
libcurl-errors \- error codes in libcurl
@@ -55,9 +57,9 @@ due to a build-time decision. This means that a feature or option was not
enabled or explicitly disabled when libcurl was built and in order to get it
to function you have to get a rebuilt libcurl.
.IP "CURLE_COULDNT_RESOLVE_PROXY (5)"
-Couldn't resolve proxy. The given proxy host could not be resolved.
+Could not resolve proxy. The given proxy host could not be resolved.
.IP "CURLE_COULDNT_RESOLVE_HOST (6)"
-Couldn't resolve host. The given remote host was not resolved.
+Could not resolve host. The given remote host was not resolved.
.IP "CURLE_COULDNT_CONNECT (7)"
Failed to connect() to host or proxy.
.IP "CURLE_WEIRD_SERVER_REPLY (8)"
@@ -95,6 +97,8 @@ does not match the previously given size.
.IP "CURLE_FTP_COULDNT_RETR_FILE (19)"
This was either a weird reply to a 'RETR' command or a zero byte transfer
complete.
+.IP "Obsolete error (20)"
+Not used in modern versions.
.IP "CURLE_QUOTE_ERROR (21)"
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
@@ -105,6 +109,8 @@ 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 "Obsolete error (24)"
+Not used in modern versions.
.IP "CURLE_UPLOAD_FAILED (25)"
Failed starting the upload. For FTP, the server typically denied the STOR
command. The error buffer usually contains the server's explanation for this.
@@ -117,6 +123,8 @@ things are severely screwed up if this ever occurs.
.IP "CURLE_OPERATION_TIMEDOUT (28)"
Operation timeout. The specified time-out period was reached according to the
conditions.
+.IP "Obsolete error (29)"
+Not used in modern versions.
.IP "CURLE_FTP_PORT_FAILED (30)"
The FTP PORT command returned error. This mostly happens when you have not
specified a good enough address for libcurl to use. See
@@ -124,6 +132,8 @@ specified a good enough address for libcurl to use. See
.IP "CURLE_FTP_COULDNT_USE_REST (31)"
The FTP REST command returned error. This should never happen if the server is
sane.
+.IP "Obsolete error (32)"
+Not used in modern versions.
.IP "CURLE_RANGE_ERROR (33)"
The server does not support or accept range requests.
.IP "CURLE_HTTP_POST_ERROR (34)"
@@ -143,16 +153,22 @@ path does not identify an existing file. Did you check file permissions?
LDAP cannot bind. LDAP bind operation failed.
.IP "CURLE_LDAP_SEARCH_FAILED (39)"
LDAP search failed.
+.IP "Obsolete error (40)"
+Not used in modern versions.
.IP "CURLE_FUNCTION_NOT_FOUND (41)"
Function not found. A required zlib function was not found.
.IP "CURLE_ABORTED_BY_CALLBACK (42)"
Aborted by callback. A callback returned "abort" to libcurl.
.IP "CURLE_BAD_FUNCTION_ARGUMENT (43)"
A function was called with a bad parameter.
+.IP "Obsolete error (44)"
+Not used in modern versions.
.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
\fICURLOPT_INTERFACE(3)\fP.
+.IP "Obsolete error (46)"
+Not used in modern versions.
.IP "CURLE_TOO_MANY_REDIRECTS (47)"
Too many redirects. When following redirects, libcurl hit the maximum amount.
Set your limit with \fICURLOPT_MAXREDIRS(3)\fP.
@@ -164,6 +180,8 @@ exact option it concerns.
.IP "CURLE_SETOPT_OPTION_SYNTAX (49)"
An option passed in to a setopt was wrongly formatted. See error message for
details about what option.
+.IP "Obsolete errors (50-51)"
+Not used in modern versions.
.IP "CURLE_GOT_NOTHING (52)"
Nothing was returned from the server, and under the circumstances, getting
nothing is considered an error.
@@ -175,18 +193,20 @@ Failed setting the selected SSL crypto engine as default.
Failed sending network data.
.IP "CURLE_RECV_ERROR (56)"
Failure with receiving network data.
+.IP "Obsolete error (57)"
+Not used in modern versions.
.IP "CURLE_SSL_CERTPROBLEM (58)"
problem with the local client certificate.
.IP "CURLE_SSL_CIPHER (59)"
-Couldn't use specified cipher.
+Could not use specified cipher.
.IP "CURLE_PEER_FAILED_VERIFICATION (60)"
-The remote server's SSL certificate or SSH md5 fingerprint was deemed not OK.
+The remote server's SSL certificate or SSH fingerprint was deemed not OK.
This error code has been unified with CURLE_SSL_CACERT since 7.62.0. Its
previous value was 51.
.IP "CURLE_BAD_CONTENT_ENCODING (61)"
Unrecognized transfer encoding.
-.IP "CURLE_LDAP_INVALID_URL (62)"
-Invalid LDAP URL.
+.IP "Obsolete error (62)"
+Not used in modern versions.
.IP "CURLE_FILESIZE_EXCEEDED (63)"
Maximum file size exceeded.
.IP "CURLE_USE_SSL_FAILED (64)"
@@ -212,10 +232,8 @@ Unknown TFTP transfer ID.
File already exists and will not be overwritten.
.IP "CURLE_TFTP_NOSUCHUSER (74)"
This error should never be returned by a properly functioning TFTP server.
-.IP "CURLE_CONV_FAILED (75)"
-Character conversion failed.
-.IP "CURLE_CONV_REQD (76)"
-Caller must register conversion callbacks.
+.IP "Obsolete error (75-76)"
+Not used in modern versions.
.IP "CURLE_SSL_CACERT_BADFILE (77)"
Problem with reading the SSL CA cert (path? access rights?)
.IP "CURLE_REMOTE_FILE_NOT_FOUND (78)"
@@ -235,8 +253,8 @@ 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(3)\fP, a
-custom LIST command will be sent with PRET CMD before PASV as well. (Added in
-7.20.0)
+custom LIST command will be sent with the PRET command before PASV as
+well. (Added in 7.20.0)
.IP "CURLE_RTSP_CSEQ_ERROR (85)"
Mismatch of RTSP CSeq numbers.
.IP "CURLE_RTSP_SESSION_ERROR (86)"
@@ -264,8 +282,13 @@ be one out of several problems, see the error buffer for details.
.IP "CURLE_QUIC_CONNECT_ERROR (96)"
QUIC connection error. This error may be caused by an SSL library error. QUIC
is the protocol used for HTTP/3 transfers.
+.IP "CURLE_PROXY (97)"
+Proxy handshake error. \fICURLINFO_PROXY_ERROR(3)\fP provides extra details on
+the specific problem.
.IP "CURLE_SSL_CLIENTCERT (98)"
SSL Client Certificate required.
+.IP "CURLE_UNRECOVERABLE_POLL (99)"
+An internal call to poll() or select() returned error that is not recoverable.
.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They were used in an old libcurl
version and are currently unused.
@@ -279,12 +302,12 @@ between. Before version 7.20.0 (released on February 9 2010) this could be retur
\fIcurl_multi_perform(3)\fP, but in later versions this return code is never
used.
.IP "CURLM_CALL_MULTI_SOCKET (-1)"
-An alias for CURLM_CALL_MULTI_PERFORM. Never returned by modern libcurl
+An alias for \fICURLM_CALL_MULTI_PERFORM\fP. Never returned by modern libcurl
versions.
.IP "CURLM_OK (0)"
Things are fine.
.IP "CURLM_BAD_HANDLE (1)"
-The passed-in handle is not a valid CURLM handle.
+The passed-in handle is not a valid \fICURLM\fP handle.
.IP "CURLM_BAD_EASY_HANDLE (2)"
An easy handle was not good/valid. It could mean that it is not an easy handle
at all, or possibly that the handle already is in use by this or another multi
@@ -305,14 +328,16 @@ second time. (Added in 7.32.1)
.IP "CURLM_RECURSIVE_API_CALL (8)"
An API function was called from inside a callback.
.IP "CURLM_WAKEUP_FAILURE (9)"
-Wakeup is unavailable or failed.
+Wake up is unavailable or failed.
.IP "CURLM_BAD_FUNCTION_ARGUMENT (10)"
A function was called with a bad parameter.
.IP "CURLM_ABORTED_BY_CALLBACK (11)"
A multi handle callback returned error.
+.IP "CURLM_UNRECOVERABLE_POLL (12)"
+An internal call to poll() or select() returned error that is not recoverable.
.SH "CURLSHcode"
-The "share" interface will return a CURLSHcode to indicate when an error has
-occurred. Also consider \fIcurl_share_strerror(3)\fP.
+The "share" interface will return a \fBCURLSHcode\fP to indicate when an error
+has occurred. Also consider \fIcurl_share_strerror(3)\fP.
.IP "CURLSHE_OK (0)"
All fine. Proceed as usual.
.IP "CURLSHE_BAD_OPTION (1)"
@@ -328,10 +353,10 @@ Not enough memory was available.
The requested sharing could not be done because the library you use do not have
that particular feature enabled. (Added in 7.23.0)
.SH "CURLUcode"
-The URL interface will return a CURLUcode to indicate when an error has
+The URL interface will return a \fICURLUcode\fP to indicate when an error has
occurred. Also consider \fIcurl_url_strerror(3)\fP.
.IP "CURLUE_BAD_HANDLE (1)"
-An invalid CURLU pointer was passed as argument.
+An invalid URL handle was passed as argument.
.IP "CURLUE_BAD_PARTPOINTER (2)"
An invalid 'part' argument was passed as argument.
.IP "CURLUE_MALFORMED_INPUT (3)"
@@ -365,7 +390,7 @@ There is no query part in the URL.
.IP "CURLUE_NO_FRAGMENT (17)"
There is no fragment part in the URL.
.IP "CURLUE_NO_ZONEID (18)"
-There is no zoneid set in the URL.
+There is no zone id set in the URL.
.IP "CURLUE_BAD_FILE_URL (19)"
The file:// URL is invalid.
.IP "CURLUE_BAD_FRAGMENT (20)"
diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3
index 654d7eb9b..f49eb976f 100644
--- a/docs/libcurl/libcurl-multi.3
+++ b/docs/libcurl/libcurl-multi.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH libcurl-multi 3 "December 23, 2021" "libcurl 7.81.0" "libcurl multi interface"
+.TH libcurl-multi 3 "September 20, 2022" "libcurl 7.86.0" "libcurl multi interface"
.SH NAME
libcurl-multi \- how to use the multi interface
@@ -57,7 +59,7 @@ transfers in parallel. Each single transfer is built up around an easy
handle. You create all the easy handles you need, and setup the appropriate
options for each easy handle using \fIcurl_easy_setopt(3)\fP.
-There are two flavours of the multi interface, the select() oriented one and
+There are two flavors of the multi interface, the select() oriented one and
the event based one we call multi_socket. You will benefit from reading
through the description of both versions to fully understand how they work and
differentiate. We start out with the select() oriented version.
@@ -88,7 +90,7 @@ Your application extracts info from libcurl about when it would like to get
invoked to transfer data or do other work. The most convenient way is to use
\fIcurl_multi_poll(3)\fP that will help you wait until the application should
call libcurl again. The older API to accomplish the same thing is
-\fIcurl_multi_fdset(3)\fP that extracts fd_sets from libcurl to use in
+\fIcurl_multi_fdset(3)\fP that extracts \fIfd_sets\fP 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. Both these APIs allow for your program to
wait for input on your own private file descriptors at the same time.
@@ -159,10 +161,11 @@ better scale upward and beyond thousands of simultaneous transfers without
losing performance.
When you have 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 will 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 have been asked to wait on, or if the timeout timer expires.
+\fIcurl_multi_socket_action(3)\fP with CURL_SOCKET_TIMEOUT set in the
+\fIsockfd\fP argument, and you will 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 have 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.
diff --git a/docs/libcurl/libcurl-security.3 b/docs/libcurl/libcurl-security.3
index 1891a4a68..e7536cb5d 100644
--- a/docs/libcurl/libcurl-security.3
+++ b/docs/libcurl/libcurl-security.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH libcurl-security 3 "December 15, 2021" "libcurl 7.81.0" "libcurl security"
+.TH libcurl-security 3 "September 20, 2022" "libcurl 7.86.0" "libcurl security"
.SH NAME
libcurl-security \- security considerations when using libcurl
@@ -44,7 +46,7 @@ should be aware.
.SH "Command Lines"
If you use a command line tool (such as curl) that uses libcurl, and you give
options to the tool on the command line those options can get read by other
-users of your system when they use 'ps' or other tools to list currently
+users of your system when they use \fIps\fP or other tools to list currently
running processes.
To avoid these problems, never feed sensitive things to programs using command
@@ -75,23 +77,22 @@ To avoid this problem, use an authentication mechanism or other protocol that
does not let snoopers see your password: Digest, CRAM-MD5, Kerberos, SPNEGO or
NTLM authentication. Or even better: use authenticated protocols that protect
the entire connection and everything sent over it.
-.SH "Un-authenticated Connections"
+.SH "Unauthenticated Connections"
Protocols that do not have any form of cryptographic authentication cannot
with any certainty know that they communicate with the right remote server.
If your application is using a fixed scheme or fixed host name, it is not safe
-as long as the connection is un-authenticated. There can be a
-man-in-the-middle or in fact the whole server might have been replaced by an
-evil actor.
+as long as the connection is unauthenticated. There can be a man-in-the-middle
+or in fact the whole server might have been replaced by an evil actor.
-Un-authenticated protocols are unsafe. The data that comes back to curl may
+Unauthenticated protocols are unsafe. The data that comes back to curl may
have been injected by an attacker. The data that curl sends might be modified
before it reaches the intended server. If it even reaches the intended server
at all.
Remedies:
.IP "Restrict operations to authenticated transfers"
-Ie use authenticated protocols protected with HTTPS or SSH.
+Use authenticated protocols protected with HTTPS or SSH.
.IP "Make sure the server's certificate etc is verified"
Never ever switch off certificate verification.
.SH "Redirects"
@@ -105,7 +106,7 @@ 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).
+\fBfile://localhost/etc/passwd\fP).
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
@@ -115,7 +116,7 @@ then return data even when the server is password protected.
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. sftp://user@some-internal-server/etc/passwd
+e.g. \fBsftp://user@some-internal-server/etc/passwd\fP
The \fICURLOPT_REDIR_PROTOCOLS(3)\fP and \fICURLOPT_NETRC(3)\fP options can be
used to mitigate against this kind of attack.
@@ -131,21 +132,31 @@ 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 or \fICURLOPT_PREREQFUNCTION(3)\fP callback
function in which addresses are sanitized before use.
+.SH "CRLF in Headers"
+For all options in libcurl which specify headers, including but not limited to
+\fICURLOPT_HTTPHEADER(3)\fP, \fICURLOPT_PROXYHEADER(3)\fP,
+\fICURLOPT_COOKIE(3)\fP, \fICURLOPT_USERAGENT(3)\fP, \fICURLOPT_REFERER(3)\fP
+and \fICURLOPT_RANGE(3)\fP, libcurl will send the headers as-is and will not
+apply any special sanitation or normalization to them.
+
+If you allow untrusted user input into these options without sanitizing CRLF
+sequences in them, someone malicious may be able to modify the request in a
+way you did not intend such as injecting new headers.
.SH "Local Resources"
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
-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. Applications can
-mitigate against this by setting a \fICURLOPT_OPENSOCKETFUNCTION(3)\fP
-or \fICURLOPT_PREREQFUNCTION(3)\fP and checking the address before a
-connection.
+\fBhttp://fuzzybunnies.example.com/\fP could actually resolve to the IP
+address of a server behind a firewall, such as 127.0.0.1 or
+10.1.2.3. Applications can mitigate against this by setting a
+\fICURLOPT_OPENSOCKETFUNCTION(3)\fP or \fICURLOPT_PREREQFUNCTION(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. Applications can mitigate against this with the
+translation service might happily translate \fBfile://localhost/etc/passwd\fP
+and display the result. Applications can mitigate against this with the
\fICURLOPT_PROTOCOLS(3)\fP option as well as by similar mitigation techniques
for redirections.
@@ -172,16 +183,16 @@ or a mix of decimal, octal or hexadecimal encoding.
.SH "IPv6 Addresses"
libcurl will normally handle IPv6 addresses transparently and just as easily
as IPv4 addresses. That means that a sanitizing function that filters out
-addresses like 127.0.0.1 is not 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 should not 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, setting
-\fICURLOPT_IPRESOLVE(3)\fP to CURL_IPRESOLVE_V4 can be used to limit resolved
-addresses to IPv4 only and bypass these issues.
+addresses like 127.0.0.1 is not sufficient--the equivalent IPv6 addresses
+\fB::1\fP, \fB::\fP, \fB0:00::0:1\fP, \fB::127.0.0.1\fP and
+\fB::ffff:7f00:1\fP 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 should
+not 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, setting \fICURLOPT_IPRESOLVE(3)\fP to CURL_IPRESOLVE_V4
+can be used to limit resolved addresses to IPv4 only and bypass these issues.
.SH Uploads
When uploading, a redirect can cause a local (or remote) file to be
overwritten. Applications must not allow any unsanitized URL to be passed in
@@ -212,9 +223,9 @@ between requests.
.SH "Dangerous SCP URLs"
SCP URLs can contain raw commands within the scp: URL, which is a side effect
of how the SCP protocol is designed. e.g.
-
+.nf
scp://user:pass@host/a;date >/tmp/test;
-
+.fi
Applications must not allow unsanitized SCP: URLs to be passed in for
downloads.
.SH "file://"
@@ -294,13 +305,13 @@ as within libcurl itself.
When performing an FTP transfer, two TCP connections are used: one for setting
up the transfer and one for the actual data.
-FTP is not only un-authenticated, but the setting up of the second transfer is
+FTP is not only unauthenticated, but the setting up of the second transfer is
also a weak spot. The second connection to use for data, is either setup with
the PORT/EPRT command that makes the server connect back to the client on the
given IP+PORT, or with PASV/EPSV that makes the server setup a port to listen
to and tells the client to connect to a given IP+PORT.
-Again, un-authenticated means that the connection might be meddled with by a
+Again, unauthenticated means that the connection might be meddled with by a
man-in-the-middle or that there's a malicious server pretending to be the
right one.
@@ -349,7 +360,8 @@ file name. The curl command-line tool does this with
a file name. An application could also use \fICURLINFO_EFFECTIVE_URL(3)\fP 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".
+supplying one like \fB"/etc/passwd"\fP, \fB"\\autoexec.bat"\fP, \fB"prn:"\fP
+or even \fB".bashrc"\fP.
.SH "Server Certificates"
A secure application should never use the \fICURLOPT_SSL_VERIFYPEER(3)\fP
option to disable certificate validation. There are numerous attacks that are
@@ -373,7 +385,7 @@ sensitive data.
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.
-.SH "Setuid applications using libcurl"
+.SH "setuid applications using libcurl"
libcurl-using applications that set the 'setuid' bit to run with elevated or
modified rights also implicitly give that extra power to libcurl and this
should only be done after careful considerations.
@@ -385,15 +397,27 @@ that the user is otherwise not able to view (like credentials for a login
etc), it should be noted that libcurl still might understand proxy environment
variables that allow the user to redirect libcurl operations to use a proxy
controlled by the user.
-.SH "File descriptors, fork and ntlm_wb"
-An application that uses libcurl and invokes `fork()` will get all file
+.SH "File descriptors, fork and NTLM"
+An application that uses libcurl and invokes \fIfork()\fP will get all file
descriptors duplicated in the child process, including the ones libcurl
created.
-libcurl itself uses `fork()` and `execl()` if told to use the
-`CURLAUTH_NTLM_WB` authentication method which then will invoke the helper
+libcurl itself uses \fIfork()\fP and \fIexecl()\fP if told to use the
+\fBCURLAUTH_NTLM_WB\fP authentication method which then will invoke the helper
command in a child process with file descriptors duplicated. Make sure that
only the trusted and reliable helper program is invoked!
+.SH "Secrets in memory"
+When applications pass user names, passwords or other sensitive data to
+libcurl to be used for upcoming transfers, those secrets will be kept around
+as-is in memory. In many cases they will be stored in heap for as long as the
+handle itself for which the options are set.
+
+If an attacker can access the heap, like maybe by reading swap space or via a
+core dump file, such data might be accessible.
+
+Further, when eventually closing a handle and the secrets are no longer
+needed, libcurl does not explicitly clear memory before freeing it, so
+credentials may be left in freed data.
.SH "Report Security Problems"
Should you detect or just suspect a security problem in libcurl or curl,
contact the project curl security team immediately. See
diff --git a/docs/libcurl/libcurl-share.3 b/docs/libcurl/libcurl-share.3
index 7e3548891..2eb618159 100644
--- a/docs/libcurl/libcurl-share.3
+++ b/docs/libcurl/libcurl-share.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH libcurl-share 3 "October 31, 2021" "libcurl 7.81.0" "libcurl share interface"
+.TH libcurl-share 3 "May 17, 2022" "libcurl 7.86.0" "libcurl share interface"
.SH NAME
libcurl-share \- how to use the share interface
diff --git a/docs/libcurl/libcurl-symbols.3 b/docs/libcurl/libcurl-symbols.3
index 1095143a8..8484b2efd 100644
--- a/docs/libcurl/libcurl-symbols.3
+++ b/docs/libcurl/libcurl-symbols.3
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH libcurl-symbols 3 "Jan 5, 2022" "libcurl 7.41.0" "libcurl symbols"
+.TH libcurl-symbols 3 "Oct 26, 2022" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
@@ -35,6 +37,370 @@ The last version that featured the specific symbol. Using the symbol in source
code will make it no longer compile error-free after that specified version.
This man page is automatically generated from the symbols-in-versions file.
+.IP CURL_AT_LEAST_VERSION
+Introduced in 7.43.0
+.IP CURL_BLOB_COPY
+Introduced in 7.71.0
+.IP CURL_BLOB_NOCOPY
+Introduced in 7.71.0
+.IP CURL_CHUNK_BGN_FUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_CHUNK_BGN_FUNC_OK
+Introduced in 7.21.0
+.IP CURL_CHUNK_BGN_FUNC_SKIP
+Introduced in 7.21.0
+.IP CURL_CHUNK_END_FUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_CHUNK_END_FUNC_OK
+Introduced in 7.21.0
+.IP CURL_CSELECT_ERR
+Introduced in 7.16.3
+.IP CURL_CSELECT_IN
+Introduced in 7.16.3
+.IP CURL_CSELECT_OUT
+Introduced in 7.16.3
+.IP CURL_DID_MEMORY_FUNC_TYPEDEFS
+Introduced in 7.49.0
+.IP CURL_EASY_NONE
+Introduced in 7.14.0
+.IP CURL_EASY_TIMEOUT
+Introduced in 7.14.0
+.IP CURL_ERROR_SIZE
+Introduced in 7.1
+.IP CURL_FNMATCHFUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_FNMATCHFUNC_MATCH
+Introduced in 7.21.0
+.IP CURL_FNMATCHFUNC_NOMATCH
+Introduced in 7.21.0
+.IP CURL_FORMADD_DISABLED
+Introduced in 7.12.1
+Deprecated since 7.56.0
+.IP CURL_FORMADD_ILLEGAL_ARRAY
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_INCOMPLETE
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_MEMORY
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_NULL
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_OK
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_OPTION_TWICE
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_UNKNOWN_OPTION
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_GLOBAL_ACK_EINTR
+Introduced in 7.30.0
+.IP CURL_GLOBAL_ALL
+Introduced in 7.8
+.IP CURL_GLOBAL_DEFAULT
+Introduced in 7.8
+.IP CURL_GLOBAL_NOTHING
+Introduced in 7.8
+.IP CURL_GLOBAL_SSL
+Introduced in 7.8
+.IP CURL_GLOBAL_WIN32
+Introduced in 7.8.1
+.IP CURL_HET_DEFAULT
+Introduced in 7.59.0
+.IP CURL_HTTP_VERSION_1_0
+Introduced in 7.9.1
+.IP CURL_HTTP_VERSION_1_1
+Introduced in 7.9.1
+.IP CURL_HTTP_VERSION_2
+Introduced in 7.43.0
+.IP CURL_HTTP_VERSION_2_0
+Introduced in 7.33.0
+.IP CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
+Introduced in 7.49.0
+.IP CURL_HTTP_VERSION_2TLS
+Introduced in 7.47.0
+.IP CURL_HTTP_VERSION_3
+Introduced in 7.66.0
+.IP CURL_HTTP_VERSION_NONE
+Introduced in 7.9.1
+.IP CURL_HTTPPOST_BUFFER
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_CALLBACK
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_FILENAME
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_LARGE
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_PTRBUFFER
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_PTRCONTENTS
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_PTRNAME
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_READFILE
+Introduced in 7.46.0
+.IP CURL_IPRESOLVE_V4
+Introduced in 7.10.8
+.IP CURL_IPRESOLVE_V6
+Introduced in 7.10.8
+.IP CURL_IPRESOLVE_WHATEVER
+Introduced in 7.10.8
+.IP CURL_ISOCPP
+Introduced in 7.10.2
+.IP CURL_LOCK_ACCESS_NONE
+Introduced in 7.10.3
+.IP CURL_LOCK_ACCESS_SHARED
+Introduced in 7.10.3
+.IP CURL_LOCK_ACCESS_SINGLE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_CONNECT
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_COOKIE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_DNS
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_NONE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_PSL
+Introduced in 7.61.0
+.IP CURL_LOCK_DATA_SHARE
+Introduced in 7.10.4
+.IP CURL_LOCK_DATA_SSL_SESSION
+Introduced in 7.10.3
+.IP CURL_LOCK_TYPE_CONNECT
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_COOKIE
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_DNS
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_NONE
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_SSL_SESSION
+Introduced in 7.10
+.IP CURL_MAX_HTTP_HEADER
+Introduced in 7.19.7
+.IP CURL_MAX_READ_SIZE
+Introduced in 7.53.0
+.IP CURL_MAX_WRITE_SIZE
+Introduced in 7.9.7
+.IP CURL_NETRC_IGNORED
+Introduced in 7.9.8
+.IP CURL_NETRC_OPTIONAL
+Introduced in 7.9.8
+.IP CURL_NETRC_REQUIRED
+Introduced in 7.9.8
+.IP CURL_POLL_IN
+Introduced in 7.14.0
+.IP CURL_POLL_INOUT
+Introduced in 7.14.0
+.IP CURL_POLL_NONE
+Introduced in 7.14.0
+.IP CURL_POLL_OUT
+Introduced in 7.14.0
+.IP CURL_POLL_REMOVE
+Introduced in 7.14.0
+.IP CURL_PREREQFUNC_ABORT
+Introduced in 7.79.0
+.IP CURL_PREREQFUNC_OK
+Introduced in 7.79.0
+.IP CURL_PROGRESS_BAR
+Introduced in 7.1.1
+.IP CURL_PROGRESS_STATS
+Introduced in 7.1.1
+.IP CURL_PROGRESSFUNC_CONTINUE
+Introduced in 7.68.0
+.IP CURL_PULL_SYS_POLL_H
+Introduced in 7.56.0
+.IP CURL_PUSH_DENY
+Introduced in 7.44.0
+.IP CURL_PUSH_ERROROUT
+Introduced in 7.72.0
+.IP CURL_PUSH_OK
+Introduced in 7.44.0
+.IP CURL_READFUNC_ABORT
+Introduced in 7.12.1
+.IP CURL_READFUNC_PAUSE
+Introduced in 7.18.0
+.IP CURL_REDIR_GET_ALL
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_301
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_302
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_303
+Introduced in 7.25.1
+.IP CURL_REDIR_POST_ALL
+Introduced in 7.19.1
+.IP CURL_RTSPREQ_ANNOUNCE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_DESCRIBE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_GET_PARAMETER
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_NONE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_OPTIONS
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_PAUSE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_PLAY
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_RECEIVE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_RECORD
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_SET_PARAMETER
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_SETUP
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_TEARDOWN
+Introduced in 7.20.0
+.IP CURL_SEEKFUNC_CANTSEEK
+Introduced in 7.19.5
+.IP CURL_SEEKFUNC_FAIL
+Introduced in 7.19.5
+.IP CURL_SEEKFUNC_OK
+Introduced in 7.19.5
+.IP CURL_SOCKET_BAD
+Introduced in 7.14.0
+.IP CURL_SOCKET_TIMEOUT
+Introduced in 7.14.0
+.IP CURL_SOCKOPT_ALREADY_CONNECTED
+Introduced in 7.21.5
+.IP CURL_SOCKOPT_ERROR
+Introduced in 7.21.5
+.IP CURL_SOCKOPT_OK
+Introduced in 7.21.5
+.IP CURL_SSLVERSION_DEFAULT
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_MAX_DEFAULT
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_NONE
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_TLSv1_0
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_TLSv1_1
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_TLSv1_2
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_TLSv1_3
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_SSLv2
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_SSLv3
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_TLSv1
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_TLSv1_0
+Introduced in 7.34.0
+.IP CURL_SSLVERSION_TLSv1_1
+Introduced in 7.34.0
+.IP CURL_SSLVERSION_TLSv1_2
+Introduced in 7.34.0
+.IP CURL_SSLVERSION_TLSv1_3
+Introduced in 7.52.0
+.IP CURL_STRICTER
+Introduced in 7.50.2
+.IP CURL_TIMECOND_IFMODSINCE
+Introduced in 7.9.7
+.IP CURL_TIMECOND_IFUNMODSINCE
+Introduced in 7.9.7
+.IP CURL_TIMECOND_LASTMOD
+Introduced in 7.9.7
+.IP CURL_TIMECOND_NONE
+Introduced in 7.9.7
+.IP CURL_TLSAUTH_NONE
+Introduced in 7.21.4
+.IP CURL_TLSAUTH_SRP
+Introduced in 7.21.4
+.IP CURL_TRAILERFUNC_ABORT
+Introduced in 7.64.0
+.IP CURL_TRAILERFUNC_OK
+Introduced in 7.64.0
+.IP CURL_UPKEEP_INTERVAL_DEFAULT
+Introduced in 7.62.0
+.IP CURL_VERSION_ALTSVC
+Introduced in 7.64.1
+.IP CURL_VERSION_ASYNCHDNS
+Introduced in 7.10.7
+.IP CURL_VERSION_BITS
+Introduced in 7.43.0
+.IP CURL_VERSION_BROTLI
+Introduced in 7.57.0
+.IP CURL_VERSION_CONV
+Introduced in 7.15.4
+.IP CURL_VERSION_CURLDEBUG
+Introduced in 7.19.6
+.IP CURL_VERSION_DEBUG
+Introduced in 7.10.6
+.IP CURL_VERSION_GSASL
+Introduced in 7.76.0
+.IP CURL_VERSION_GSSAPI
+Introduced in 7.38.0
+.IP CURL_VERSION_GSSNEGOTIATE
+Introduced in 7.10.6
+Deprecated since 7.38.0
+.IP CURL_VERSION_HSTS
+Introduced in 7.74.0
+.IP CURL_VERSION_HTTP2
+Introduced in 7.33.0
+.IP CURL_VERSION_HTTP3
+Introduced in 7.66.0
+.IP CURL_VERSION_HTTPS_PROXY
+Introduced in 7.52.0
+.IP CURL_VERSION_IDN
+Introduced in 7.12.0
+.IP CURL_VERSION_IPV6
+Introduced in 7.10
+.IP CURL_VERSION_KERBEROS4
+Introduced in 7.10
+Deprecated since 7.33.0
+.IP CURL_VERSION_KERBEROS5
+Introduced in 7.40.0
+.IP CURL_VERSION_LARGEFILE
+Introduced in 7.11.1
+.IP CURL_VERSION_LIBZ
+Introduced in 7.10
+.IP CURL_VERSION_MULTI_SSL
+Introduced in 7.56.0
+.IP CURL_VERSION_NTLM
+Introduced in 7.10.6
+.IP CURL_VERSION_NTLM_WB
+Introduced in 7.22.0
+.IP CURL_VERSION_PSL
+Introduced in 7.47.0
+.IP CURL_VERSION_SPNEGO
+Introduced in 7.10.8
+.IP CURL_VERSION_SSL
+Introduced in 7.10
+.IP CURL_VERSION_SSPI
+Introduced in 7.13.2
+.IP CURL_VERSION_THREADSAFE
+Introduced in 7.84.0
+.IP CURL_VERSION_TLSAUTH_SRP
+Introduced in 7.21.4
+.IP CURL_VERSION_UNICODE
+Introduced in 7.72.0
+.IP CURL_VERSION_UNIX_SOCKETS
+Introduced in 7.40.0
+.IP CURL_VERSION_ZSTD
+Introduced in 7.72.0
+.IP CURL_WAIT_POLLIN
+Introduced in 7.28.0
+.IP CURL_WAIT_POLLOUT
+Introduced in 7.28.0
+.IP CURL_WAIT_POLLPRI
+Introduced in 7.28.0
+.IP CURL_WIN32
+Introduced in 7.69.0
+.IP CURL_WRITEFUNC_PAUSE
+Introduced in 7.18.0
+.IP CURL_ZERO_TERMINATED
+Introduced in 7.56.0
.IP CURLALTSVC_H1
Introduced in 7.64.1
.IP CURLALTSVC_H2
@@ -47,6 +413,8 @@ Introduced in 7.64.1
Introduced in 7.10.6
.IP CURLAUTH_ANYSAFE
Introduced in 7.10.6
+.IP CURLAUTH_AWS_SIGV4
+Introduced in 7.75.0
.IP CURLAUTH_BASIC
Introduced in 7.10.6
.IP CURLAUTH_BEARER
@@ -70,8 +438,6 @@ Introduced in 7.10.6
Introduced in 7.22.0
.IP CURLAUTH_ONLY
Introduced in 7.21.3
-.IP CURLAUTH_AWS_SIGV4
-Introduced in 7.75.0
.IP CURLCLOSEPOLICY_CALLBACK
Introduced in 7.7
.IP CURLCLOSEPOLICY_LEAST_RECENTLY_USED
@@ -109,8 +475,10 @@ Deprecated since 7.17.0
Introduced in 7.21.0
.IP CURLE_CONV_FAILED
Introduced in 7.15.4
+Deprecated since 7.82.0
.IP CURLE_CONV_REQD
Introduced in 7.15.4
+Deprecated since 7.82.0
.IP CURLE_COULDNT_CONNECT
Introduced in 7.1
.IP CURLE_COULDNT_RESOLVE_HOST
@@ -119,10 +487,10 @@ Introduced in 7.1
Introduced in 7.1
.IP CURLE_FAILED_INIT
Introduced in 7.1
-.IP CURLE_FILESIZE_EXCEEDED
-Introduced in 7.10.8
.IP CURLE_FILE_COULDNT_READ_FILE
Introduced in 7.1
+.IP CURLE_FILESIZE_EXCEEDED
+Introduced in 7.10.8
.IP CURLE_FTP_ACCEPT_FAILED
Introduced in 7.24.0
.IP CURLE_FTP_ACCEPT_TIMEOUT
@@ -218,6 +586,7 @@ Introduced in 7.12.0
Introduced in 7.1
.IP CURLE_LDAP_INVALID_URL
Introduced in 7.10.8
+Deprecated since 7.82.0
.IP CURLE_LDAP_SEARCH_FAILED
Introduced in 7.1
.IP CURLE_LIBRARY_NOT_FOUND
@@ -228,10 +597,10 @@ Introduced in 7.13.1
.IP CURLE_MALFORMAT_USER
Introduced in 7.1
Deprecated since 7.17.0
-.IP CURLE_NOT_BUILT_IN
-Introduced in 7.21.5
.IP CURLE_NO_CONNECTION_AVAILABLE
Introduced in 7.30.0
+.IP CURLE_NOT_BUILT_IN
+Introduced in 7.21.5
.IP CURLE_OK
Introduced in 7.1
.IP CURLE_OPERATION_TIMEDOUT
@@ -339,6 +708,8 @@ Introduced in 7.21.5
.IP CURLE_UNKNOWN_TELNET_OPTION
Introduced in 7.7
Deprecated since 7.21.5
+.IP CURLE_UNRECOVERABLE_POLL
+Introduced in 7.84.0
.IP CURLE_UNSUPPORTED_PROTOCOL
Introduced in 7.1
.IP CURLE_UPLOAD_FAILED
@@ -453,6 +824,12 @@ Deprecated since 7.56.0
.IP CURLFORM_STREAM
Introduced in 7.18.2
Deprecated since 7.56.0
+.IP CURLFTP_CREATE_DIR
+Introduced in 7.19.4
+.IP CURLFTP_CREATE_DIR_NONE
+Introduced in 7.19.4
+.IP CURLFTP_CREATE_DIR_RETRY
+Introduced in 7.19.4
.IP CURLFTPAUTH_DEFAULT
Introduced in 7.12.2
.IP CURLFTPAUTH_SSL
@@ -485,18 +862,38 @@ Deprecated since 7.17.0
.IP CURLFTPSSL_TRY
Introduced in 7.11.0
Deprecated since 7.17.0
-.IP CURLFTP_CREATE_DIR
-Introduced in 7.19.4
-.IP CURLFTP_CREATE_DIR_NONE
-Introduced in 7.19.4
-.IP CURLFTP_CREATE_DIR_RETRY
-Introduced in 7.19.4
.IP CURLGSSAPI_DELEGATION_FLAG
Introduced in 7.22.0
.IP CURLGSSAPI_DELEGATION_NONE
Introduced in 7.22.0
.IP CURLGSSAPI_DELEGATION_POLICY_FLAG
Introduced in 7.22.0
+.IP CURLH_1XX
+Introduced in 7.83.0
+.IP CURLH_CONNECT
+Introduced in 7.83.0
+.IP CURLH_HEADER
+Introduced in 7.83.0
+.IP CURLH_PSEUDO
+Introduced in 7.83.0
+.IP CURLH_TRAILER
+Introduced in 7.83.0
+.IP CURLHE_BAD_ARGUMENT
+Introduced in 7.83.0
+.IP CURLHE_BADINDEX
+Introduced in 7.83.0
+.IP CURLHE_MISSING
+Introduced in 7.83.0
+.IP CURLHE_NOHEADERS
+Introduced in 7.83.0
+.IP CURLHE_NOREQUEST
+Introduced in 7.83.0
+.IP CURLHE_NOT_BUILT_IN
+Introduced in 7.83.0
+.IP CURLHE_OK
+Introduced in 7.83.0
+.IP CURLHE_OUT_OF_MEMORY
+Introduced in 7.83.0
.IP CURLHEADER_SEPARATE
Introduced in 7.37.0
.IP CURLHEADER_UNIFIED
@@ -511,6 +908,10 @@ Introduced in 7.45.0
Introduced in 7.19.0
.IP CURLINFO_APPCONNECT_TIME_T
Introduced in 7.61.0
+.IP CURLINFO_CAINFO
+Introduced in 7.84.0
+.IP CURLINFO_CAPATH
+Introduced in 7.84.0
.IP CURLINFO_CERTINFO
Introduced in 7.19.1
.IP CURLINFO_CONDITION_UNMET
@@ -521,10 +922,12 @@ Introduced in 7.4.1
Introduced in 7.61.0
.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
Introduced in 7.6.1
+Deprecated since 7.55.0
.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
Introduced in 7.55.0
.IP CURLINFO_CONTENT_LENGTH_UPLOAD
Introduced in 7.6.1
+Deprecated since 7.55.0
.IP CURLINFO_CONTENT_LENGTH_UPLOAD_T
Introduced in 7.55.0
.IP CURLINFO_CONTENT_TYPE
@@ -555,8 +958,6 @@ Introduced in 7.9.6
Introduced in 7.9.6
.IP CURLINFO_HEADER_SIZE
Introduced in 7.4.1
-.IP CURLINFO_HTTPAUTH_AVAIL
-Introduced in 7.10.8
.IP CURLINFO_HTTP_CODE
Introduced in 7.4.1
Deprecated since 7.10.8
@@ -564,10 +965,13 @@ Deprecated since 7.10.8
Introduced in 7.10.7
.IP CURLINFO_HTTP_VERSION
Introduced in 7.50.0
+.IP CURLINFO_HTTPAUTH_AVAIL
+Introduced in 7.10.8
.IP CURLINFO_LASTONE
Introduced in 7.4.1
.IP CURLINFO_LASTSOCKET
Introduced in 7.15.2
+Deprecated since 7.45.0
.IP CURLINFO_LOCAL_IP
Introduced in 7.21.0
.IP CURLINFO_LOCAL_PORT
@@ -600,12 +1004,13 @@ Introduced in 7.21.0
Introduced in 7.10.3
.IP CURLINFO_PROTOCOL
Introduced in 7.52.0
-.IP CURLINFO_PROXYAUTH_AVAIL
-Introduced in 7.10.8
+Deprecated since 7.85.0
.IP CURLINFO_PROXY_ERROR
Introduced in 7.73.0
.IP CURLINFO_PROXY_SSL_VERIFYRESULT
Introduced in 7.52.0
+.IP CURLINFO_PROXYAUTH_AVAIL
+Introduced in 7.10.8
.IP CURLINFO_PTR
Introduced in 7.54.1
.IP CURLINFO_REDIRECT_COUNT
@@ -636,10 +1041,12 @@ Introduced in 7.20.0
Introduced in 7.52.0
.IP CURLINFO_SIZE_DOWNLOAD
Introduced in 7.4.1
+Deprecated since 7.55.0
.IP CURLINFO_SIZE_DOWNLOAD_T
Introduced in 7.55.0
.IP CURLINFO_SIZE_UPLOAD
Introduced in 7.4.1
+Deprecated since 7.55.0
.IP CURLINFO_SIZE_UPLOAD_T
Introduced in 7.55.0
.IP CURLINFO_SLIST
@@ -648,10 +1055,12 @@ Introduced in 7.12.3
Introduced in 7.45.0
.IP CURLINFO_SPEED_DOWNLOAD
Introduced in 7.4.1
+Deprecated since 7.55.0
.IP CURLINFO_SPEED_DOWNLOAD_T
Introduced in 7.55.0
.IP CURLINFO_SPEED_UPLOAD
Introduced in 7.4.1
+Deprecated since 7.55.0
.IP CURLINFO_SPEED_UPLOAD_T
Introduced in 7.55.0
.IP CURLINFO_SSL_DATA_IN
@@ -719,14 +1128,42 @@ Introduced in 7.19.6
Introduced in 7.19.6
.IP CURLKHTYPE_UNKNOWN
Introduced in 7.19.6
+.IP CURLM_ABORTED_BY_CALLBACK
+Introduced in 7.81.0
+.IP CURLM_ADDED_ALREADY
+Introduced in 7.32.1
+.IP CURLM_BAD_EASY_HANDLE
+Introduced in 7.9.6
+.IP CURLM_BAD_FUNCTION_ARGUMENT
+Introduced in 7.69.0
+.IP CURLM_BAD_HANDLE
+Introduced in 7.9.6
+.IP CURLM_BAD_SOCKET
+Introduced in 7.15.4
+.IP CURLM_CALL_MULTI_PERFORM
+Introduced in 7.9.6
+.IP CURLM_CALL_MULTI_SOCKET
+Introduced in 7.15.5
+.IP CURLM_INTERNAL_ERROR
+Introduced in 7.9.6
+.IP CURLM_OK
+Introduced in 7.9.6
+.IP CURLM_OUT_OF_MEMORY
+Introduced in 7.9.6
+.IP CURLM_RECURSIVE_API_CALL
+Introduced in 7.59.0
+.IP CURLM_UNKNOWN_OPTION
+Introduced in 7.15.4
+.IP CURLM_UNRECOVERABLE_POLL
+Introduced in 7.84.0
+.IP CURLM_WAKEUP_FAILURE
+Introduced in 7.68.0
.IP CURLMIMEOPT_FORMESCAPE
Introduced in 7.81.0
.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
Introduced in 7.30.0
.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
Introduced in 7.30.0
-.IP CURLMOPT_MAXCONNECTS
-Introduced in 7.16.3
.IP CURLMOPT_MAX_CONCURRENT_STREAMS
Introduced in 7.67.0
.IP CURLMOPT_MAX_HOST_CONNECTIONS
@@ -735,6 +1172,8 @@ Introduced in 7.30.0
Introduced in 7.30.0
.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
Introduced in 7.30.0
+.IP CURLMOPT_MAXCONNECTS
+Introduced in 7.16.3
.IP CURLMOPT_PIPELINING
Introduced in 7.16.0
.IP CURLMOPT_PIPELINING_SERVER_BL
@@ -757,60 +1196,14 @@ Introduced in 7.16.0
Introduced in 7.9.6
.IP CURLMSG_NONE
Introduced in 7.9.6
-.IP CURLM_ABORTED_BY_CALLBACK
-Introduced in 7.81.0
-.IP CURLM_ADDED_ALREADY
-Introduced in 7.32.1
-.IP CURLM_BAD_EASY_HANDLE
-Introduced in 7.9.6
-.IP CURLM_BAD_FUNCTION_ARGUMENT
-Introduced in 7.69.0
-.IP CURLM_BAD_HANDLE
-Introduced in 7.9.6
-.IP CURLM_BAD_SOCKET
-Introduced in 7.15.4
-.IP CURLM_CALL_MULTI_PERFORM
-Introduced in 7.9.6
-.IP CURLM_CALL_MULTI_SOCKET
-Introduced in 7.15.5
-.IP CURLM_INTERNAL_ERROR
-Introduced in 7.9.6
-.IP CURLM_OK
-Introduced in 7.9.6
-.IP CURLM_OUT_OF_MEMORY
-Introduced in 7.9.6
-.IP CURLM_RECURSIVE_API_CALL
-Introduced in 7.59.0
-.IP CURLM_UNKNOWN_OPTION
-Introduced in 7.15.4
-.IP CURLM_WAKEUP_FAILURE
-Introduced in 7.68.0
.IP CURLOPT
Introduced in 7.69.0
-.IP CURLOPTTYPE_BLOB
-Introduced in 7.71.0
-.IP CURLOPTTYPE_CBPOINT
-Introduced in 7.73.0
-.IP CURLOPTTYPE_FUNCTIONPOINT
-Introduced in 7.1
-.IP CURLOPTTYPE_LONG
-Introduced in 7.1
-.IP CURLOPTTYPE_OBJECTPOINT
-Introduced in 7.1
-.IP CURLOPTTYPE_OFF_T
-Introduced in 7.11.0
-.IP CURLOPTTYPE_SLISTPOINT
-Introduced in 7.65.2
-.IP CURLOPTTYPE_STRINGPOINT
-Introduced in 7.46.0
-.IP CURLOPTTYPE_VALUES
-Introduced in 7.73.0
.IP CURLOPT_ABSTRACT_UNIX_SOCKET
Introduced in 7.53.0
-.IP CURLOPT_ACCEPTTIMEOUT_MS
-Introduced in 7.24.0
.IP CURLOPT_ACCEPT_ENCODING
Introduced in 7.21.6
+.IP CURLOPT_ACCEPTTIMEOUT_MS
+Introduced in 7.24.0
.IP CURLOPT_ADDRESS_SCOPE
Introduced in 7.19.0
.IP CURLOPT_ALTSVC
@@ -821,6 +1214,8 @@ Introduced in 7.64.1
Introduced in 7.17.0
.IP CURLOPT_AUTOREFERER
Introduced in 7.1
+.IP CURLOPT_AWS_SIGV4
+Introduced in 7.75.0
.IP CURLOPT_BUFFERSIZE
Introduced in 7.10
.IP CURLOPT_CAINFO
@@ -848,20 +1243,23 @@ Deprecated since 7.16.1
Introduced in 7.21.7
.IP CURLOPT_CLOSESOCKETFUNCTION
Introduced in 7.21.7
-.IP CURLOPT_CONNECTTIMEOUT
-Introduced in 7.7
-.IP CURLOPT_CONNECTTIMEOUT_MS
-Introduced in 7.16.2
.IP CURLOPT_CONNECT_ONLY
Introduced in 7.15.2
.IP CURLOPT_CONNECT_TO
Introduced in 7.49.0
+.IP CURLOPT_CONNECTTIMEOUT
+Introduced in 7.7
+.IP CURLOPT_CONNECTTIMEOUT_MS
+Introduced in 7.16.2
.IP CURLOPT_CONV_FROM_NETWORK_FUNCTION
Introduced in 7.15.4
+Deprecated since 7.82.0
.IP CURLOPT_CONV_FROM_UTF8_FUNCTION
Introduced in 7.15.4
+Deprecated since 7.82.0
.IP CURLOPT_CONV_TO_NETWORK_FUNCTION
Introduced in 7.15.4
+Deprecated since 7.82.0
.IP CURLOPT_COOKIE
Introduced in 7.1
.IP CURLOPT_COOKIEFILE
@@ -917,8 +1315,10 @@ Introduced in 7.76.0
Introduced in 7.62.0
.IP CURLOPT_EGDSOCKET
Introduced in 7.7
+Deprecated since 7.84.0
.IP CURLOPT_ENCODING
Introduced in 7.10
+Deprecated since 7.21.6
.IP CURLOPT_ERRORBUFFER
Introduced in 7.1
.IP CURLOPT_EXPECT_100_TIMEOUT_MS
@@ -940,20 +1340,6 @@ Introduced in 7.1
Introduced in 7.7
.IP CURLOPT_FRESH_CONNECT
Introduced in 7.7
-.IP CURLOPT_FTPAPPEND
-Introduced in 7.1
-Deprecated since 7.16.4
-.IP CURLOPT_FTPASCII
-Introduced in 7.1
-Deprecated since 7.11.1
-Last used in 7.15.5
-.IP CURLOPT_FTPLISTONLY
-Introduced in 7.1
-Deprecated since 7.16.4
-.IP CURLOPT_FTPPORT
-Introduced in 7.1
-.IP CURLOPT_FTPSSLAUTH
-Introduced in 7.12.2
.IP CURLOPT_FTP_ACCOUNT
Introduced in 7.13.0
.IP CURLOPT_FTP_ALTERNATIVE_TO_USER
@@ -964,6 +1350,7 @@ Introduced in 7.10.7
Introduced in 7.15.1
.IP CURLOPT_FTP_RESPONSE_TIMEOUT
Introduced in 7.10.8
+Deprecated since 7.85.0
.IP CURLOPT_FTP_SKIP_PASV_IP
Introduced in 7.15.0
.IP CURLOPT_FTP_SSL
@@ -977,6 +1364,20 @@ Introduced in 7.10.5
Introduced in 7.9.2
.IP CURLOPT_FTP_USE_PRET
Introduced in 7.20.0
+.IP CURLOPT_FTPAPPEND
+Introduced in 7.1
+Deprecated since 7.16.4
+.IP CURLOPT_FTPASCII
+Introduced in 7.1
+Deprecated since 7.11.1
+Last used in 7.15.5
+.IP CURLOPT_FTPLISTONLY
+Introduced in 7.1
+Deprecated since 7.16.4
+.IP CURLOPT_FTPPORT
+Introduced in 7.1
+.IP CURLOPT_FTPSSLAUTH
+Introduced in 7.12.2
.IP CURLOPT_GSSAPI_DELEGATION
Introduced in 7.22.0
.IP CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
@@ -1007,6 +1408,12 @@ Introduced in 7.74.0
Introduced in 7.64.0
.IP CURLOPT_HTTP200ALIASES
Introduced in 7.10.3
+.IP CURLOPT_HTTP_CONTENT_DECODING
+Introduced in 7.16.2
+.IP CURLOPT_HTTP_TRANSFER_DECODING
+Introduced in 7.16.2
+.IP CURLOPT_HTTP_VERSION
+Introduced in 7.9.1
.IP CURLOPT_HTTPAUTH
Introduced in 7.10.6
.IP CURLOPT_HTTPGET
@@ -1020,12 +1427,6 @@ Deprecated since 7.56.0
Introduced in 7.3
.IP CURLOPT_HTTPREQUEST
Introduced in 7.1
-.IP CURLOPT_HTTP_CONTENT_DECODING
-Introduced in 7.16.2
-.IP CURLOPT_HTTP_TRANSFER_DECODING
-Introduced in 7.16.2
-.IP CURLOPT_HTTP_VERSION
-Introduced in 7.9.1
.IP CURLOPT_IGNORE_CONTENT_LENGTH
Introduced in 7.14.1
.IP CURLOPT_INFILE
@@ -1043,8 +1444,10 @@ Introduced in 7.20.0
Introduced in 7.20.0
.IP CURLOPT_IOCTLDATA
Introduced in 7.12.3
+Deprecated since 7.18.0
.IP CURLOPT_IOCTLFUNCTION
Introduced in 7.12.3
+Deprecated since 7.18.0
.IP CURLOPT_IPRESOLVE
Introduced in 7.10.8
.IP CURLOPT_ISSUERCERT
@@ -1078,6 +1481,10 @@ Introduced in 7.20.0
Introduced in 7.20.0
.IP CURLOPT_MAIL_RCPT_ALLLOWFAILS
Introduced in 7.69.0
+.IP CURLOPT_MAX_RECV_SPEED_LARGE
+Introduced in 7.15.5
+.IP CURLOPT_MAX_SEND_SPEED_LARGE
+Introduced in 7.15.5
.IP CURLOPT_MAXAGE_CONN
Introduced in 7.65.0
.IP CURLOPT_MAXCONNECTS
@@ -1090,14 +1497,10 @@ Introduced in 7.11.0
Introduced in 7.80.0
.IP CURLOPT_MAXREDIRS
Introduced in 7.5
-.IP CURLOPT_MAX_RECV_SPEED_LARGE
-Introduced in 7.15.5
-.IP CURLOPT_MAX_SEND_SPEED_LARGE
-Introduced in 7.15.5
-.IP CURLOPT_MIMEPOST
-Introduced in 7.56.0
.IP CURLOPT_MIME_OPTIONS
Introduced in 7.81.0
+.IP CURLOPT_MIMEPOST
+Introduced in 7.56.0
.IP CURLOPT_MUTE
Introduced in 7.1
Deprecated since 7.8
@@ -1163,14 +1566,14 @@ Introduced in 7.11.1
Introduced in 7.1
.IP CURLOPT_POSTREDIR
Introduced in 7.19.1
+.IP CURLOPT_PRE_PROXY
+Introduced in 7.52.0
.IP CURLOPT_PREQUOTE
Introduced in 7.9.5
.IP CURLOPT_PREREQDATA
Introduced in 7.80.0
.IP CURLOPT_PREREQFUNCTION
Introduced in 7.80.0
-.IP CURLOPT_PRE_PROXY
-Introduced in 7.52.0
.IP CURLOPT_PRIVATE
Introduced in 7.10.3
.IP CURLOPT_PROGRESSDATA
@@ -1180,22 +1583,11 @@ Introduced in 7.1
Deprecated since 7.32.0
.IP CURLOPT_PROTOCOLS
Introduced in 7.19.4
+Deprecated since 7.85.0
+.IP CURLOPT_PROTOCOLS_STR
+Introduced in 7.85.0
.IP CURLOPT_PROXY
Introduced in 7.1
-.IP CURLOPT_PROXYAUTH
-Introduced in 7.10.7
-.IP CURLOPT_PROXYHEADER
-Introduced in 7.37.0
-.IP CURLOPT_PROXYPASSWORD
-Introduced in 7.19.1
-.IP CURLOPT_PROXYPORT
-Introduced in 7.1
-.IP CURLOPT_PROXYTYPE
-Introduced in 7.10
-.IP CURLOPT_PROXYUSERNAME
-Introduced in 7.19.1
-.IP CURLOPT_PROXYUSERPWD
-Introduced in 7.1
.IP CURLOPT_PROXY_CAINFO
Introduced in 7.52.0
.IP CURLOPT_PROXY_CAINFO_BLOB
@@ -1214,27 +1606,27 @@ Introduced in 7.52.0
Introduced in 7.52.0
.IP CURLOPT_PROXY_SERVICE_NAME
Introduced in 7.43.0
-.IP CURLOPT_PROXY_SSLCERT
+.IP CURLOPT_PROXY_SSL_CIPHER_LIST
Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSLCERTTYPE
+.IP CURLOPT_PROXY_SSL_OPTIONS
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSL_VERIFYHOST
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSL_VERIFYPEER
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSLCERT
Introduced in 7.52.0
.IP CURLOPT_PROXY_SSLCERT_BLOB
Introduced in 7.71.0
-.IP CURLOPT_PROXY_SSLKEY
+.IP CURLOPT_PROXY_SSLCERTTYPE
Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSLKEYTYPE
+.IP CURLOPT_PROXY_SSLKEY
Introduced in 7.52.0
.IP CURLOPT_PROXY_SSLKEY_BLOB
Introduced in 7.71.0
-.IP CURLOPT_PROXY_SSLVERSION
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSL_CIPHER_LIST
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSL_OPTIONS
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSL_VERIFYHOST
+.IP CURLOPT_PROXY_SSLKEYTYPE
Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSL_VERIFYPEER
+.IP CURLOPT_PROXY_SSLVERSION
Introduced in 7.52.0
.IP CURLOPT_PROXY_TLS13_CIPHERS
Introduced in 7.61.0
@@ -1246,12 +1638,28 @@ Introduced in 7.52.0
Introduced in 7.52.0
.IP CURLOPT_PROXY_TRANSFER_MODE
Introduced in 7.18.0
+.IP CURLOPT_PROXYAUTH
+Introduced in 7.10.7
+.IP CURLOPT_PROXYHEADER
+Introduced in 7.37.0
+.IP CURLOPT_PROXYPASSWORD
+Introduced in 7.19.1
+.IP CURLOPT_PROXYPORT
+Introduced in 7.1
+.IP CURLOPT_PROXYTYPE
+Introduced in 7.10
+.IP CURLOPT_PROXYUSERNAME
+Introduced in 7.19.1
+.IP CURLOPT_PROXYUSERPWD
+Introduced in 7.1
.IP CURLOPT_PUT
Introduced in 7.1
+Deprecated since 7.12.1
.IP CURLOPT_QUOTE
Introduced in 7.1
.IP CURLOPT_RANDOM_FILE
Introduced in 7.7
+Deprecated since 7.84.0
.IP CURLOPT_RANGE
Introduced in 7.1
.IP CURLOPT_READDATA
@@ -1260,6 +1668,9 @@ Introduced in 7.9.7
Introduced in 7.1
.IP CURLOPT_REDIR_PROTOCOLS
Introduced in 7.19.4
+Deprecated since 7.85.0
+.IP CURLOPT_REDIR_PROTOCOLS_STR
+Introduced in 7.85.0
.IP CURLOPT_REFERER
Introduced in 7.1
.IP CURLOPT_REQUEST_TARGET
@@ -1274,8 +1685,6 @@ Introduced in 7.59.0
Introduced in 7.1
.IP CURLOPT_RESUME_FROM_LARGE
Introduced in 7.11.0
-.IP CURLOPT_RTSPHEADER
-Introduced in 7.20.0
.IP CURLOPT_RTSP_CLIENT_CSEQ
Introduced in 7.20.0
.IP CURLOPT_RTSP_REQUEST
@@ -1288,6 +1697,8 @@ Introduced in 7.20.0
Introduced in 7.20.0
.IP CURLOPT_RTSP_TRANSPORT
Introduced in 7.20.0
+.IP CURLOPT_RTSPHEADER
+Introduced in 7.20.0
.IP CURLOPT_SASL_AUTHZID
Introduced in 7.66.0
.IP CURLOPT_SASL_IR
@@ -1337,6 +1748,10 @@ Introduced in 7.56.0
Introduced in 7.17.1
.IP CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
Introduced in 7.80.0
+.IP CURLOPT_SSH_HOSTKEYDATA
+Introduced in 7.84.0
+.IP CURLOPT_SSH_HOSTKEYFUNCTION
+Introduced in 7.84.0
.IP CURLOPT_SSH_KEYDATA
Introduced in 7.19.6
.IP CURLOPT_SSH_KEYFUNCTION
@@ -1347,30 +1762,6 @@ Introduced in 7.19.6
Introduced in 7.16.1
.IP CURLOPT_SSH_PUBLIC_KEYFILE
Introduced in 7.16.1
-.IP CURLOPT_SSLCERT
-Introduced in 7.1
-.IP CURLOPT_SSLCERTPASSWD
-Introduced in 7.1.1
-Deprecated since 7.17.0
-.IP CURLOPT_SSLCERTTYPE
-Introduced in 7.9.3
-.IP CURLOPT_SSLCERT_BLOB
-Introduced in 7.71.0
-.IP CURLOPT_SSLENGINE
-Introduced in 7.9.3
-.IP CURLOPT_SSLENGINE_DEFAULT
-Introduced in 7.9.3
-.IP CURLOPT_SSLKEY
-Introduced in 7.9.3
-.IP CURLOPT_SSLKEYPASSWD
-Introduced in 7.9.3
-Deprecated since 7.17.0
-.IP CURLOPT_SSLKEYTYPE
-Introduced in 7.9.3
-.IP CURLOPT_SSLKEY_BLOB
-Introduced in 7.71.0
-.IP CURLOPT_SSLVERSION
-Introduced in 7.1
.IP CURLOPT_SSL_CIPHER_LIST
Introduced in 7.9
.IP CURLOPT_SSL_CTX_DATA
@@ -1383,6 +1774,7 @@ Introduced in 7.73.0
Introduced in 7.36.0
.IP CURLOPT_SSL_ENABLE_NPN
Introduced in 7.36.0
+Deprecated since 7.86.0
.IP CURLOPT_SSL_FALSESTART
Introduced in 7.42.0
.IP CURLOPT_SSL_OPTIONS
@@ -1395,6 +1787,30 @@ Introduced in 7.8.1
Introduced in 7.4.2
.IP CURLOPT_SSL_VERIFYSTATUS
Introduced in 7.41.0
+.IP CURLOPT_SSLCERT
+Introduced in 7.1
+.IP CURLOPT_SSLCERT_BLOB
+Introduced in 7.71.0
+.IP CURLOPT_SSLCERTPASSWD
+Introduced in 7.1.1
+Deprecated since 7.17.0
+.IP CURLOPT_SSLCERTTYPE
+Introduced in 7.9.3
+.IP CURLOPT_SSLENGINE
+Introduced in 7.9.3
+.IP CURLOPT_SSLENGINE_DEFAULT
+Introduced in 7.9.3
+.IP CURLOPT_SSLKEY
+Introduced in 7.9.3
+.IP CURLOPT_SSLKEY_BLOB
+Introduced in 7.71.0
+.IP CURLOPT_SSLKEYPASSWD
+Introduced in 7.9.3
+Deprecated since 7.17.0
+.IP CURLOPT_SSLKEYTYPE
+Introduced in 7.9.3
+.IP CURLOPT_SSLVERSION
+Introduced in 7.1
.IP CURLOPT_STDERR
Introduced in 7.1
.IP CURLOPT_STREAM_DEPENDS
@@ -1443,10 +1859,10 @@ Introduced in 7.21.4
Introduced in 7.64.0
.IP CURLOPT_TRAILERFUNCTION
Introduced in 7.64.0
-.IP CURLOPT_TRANSFERTEXT
-Introduced in 7.1.1
.IP CURLOPT_TRANSFER_ENCODING
Introduced in 7.21.6
+.IP CURLOPT_TRANSFERTEXT
+Introduced in 7.1.1
.IP CURLOPT_UNIX_SOCKET_PATH
Introduced in 7.40.0
.IP CURLOPT_UNRESTRICTED_AUTH
@@ -1459,16 +1875,14 @@ Introduced in 7.1
Introduced in 7.62.0
.IP CURLOPT_URL
Introduced in 7.1
+.IP CURLOPT_USE_SSL
+Introduced in 7.17.0
.IP CURLOPT_USERAGENT
Introduced in 7.1
.IP CURLOPT_USERNAME
Introduced in 7.19.1
.IP CURLOPT_USERPWD
Introduced in 7.1
-.IP CURLOPT_USE_SSL
-Introduced in 7.17.0
-.IP CURLOPT_AWS_SIGV4
-Introduced in 7.75.0
.IP CURLOPT_VERBOSE
Introduced in 7.1
.IP CURLOPT_WILDCARDMATCH
@@ -1481,16 +1895,38 @@ Introduced in 7.1
Introduced in 7.1
.IP CURLOPT_WRITEINFO
Introduced in 7.1
+.IP CURLOPT_WS_OPTIONS
+Introduced in 7.86.0
.IP CURLOPT_XFERINFODATA
Introduced in 7.32.0
.IP CURLOPT_XFERINFOFUNCTION
Introduced in 7.32.0
.IP CURLOPT_XOAUTH2_BEARER
Introduced in 7.33.0
+.IP CURLOPTTYPE_BLOB
+Introduced in 7.71.0
+.IP CURLOPTTYPE_CBPOINT
+Introduced in 7.73.0
+.IP CURLOPTTYPE_FUNCTIONPOINT
+Introduced in 7.1
+.IP CURLOPTTYPE_LONG
+Introduced in 7.1
+.IP CURLOPTTYPE_OBJECTPOINT
+Introduced in 7.1
+.IP CURLOPTTYPE_OFF_T
+Introduced in 7.11.0
+.IP CURLOPTTYPE_SLISTPOINT
+Introduced in 7.65.2
+.IP CURLOPTTYPE_STRINGPOINT
+Introduced in 7.46.0
+.IP CURLOPTTYPE_VALUES
+Introduced in 7.73.0
.IP CURLOT_BLOB
Introduced in 7.73.0
.IP CURLOT_CBPTR
Introduced in 7.73.0
+.IP CURLOT_FLAG_ALIAS
+Introduced in 7.73.0
.IP CURLOT_FUNCTION
Introduced in 7.73.0
.IP CURLOT_LONG
@@ -1587,10 +2023,10 @@ Introduced in 7.19.4
Introduced in 7.19.4
.IP CURLPROXY_HTTP
Introduced in 7.10
-.IP CURLPROXY_HTTPS
-Introduced in 7.52.0
.IP CURLPROXY_HTTP_1_0
Introduced in 7.19.4
+.IP CURLPROXY_HTTPS
+Introduced in 7.52.0
.IP CURLPROXY_SOCKS4
Introduced in 7.10
.IP CURLPROXY_SOCKS4A
@@ -1669,10 +2105,10 @@ Introduced in 7.73.0
Introduced in 7.73.0
.IP CURLSHE_BAD_OPTION
Introduced in 7.10.3
-.IP CURLSHE_INVALID
-Introduced in 7.10.3
.IP CURLSHE_IN_USE
Introduced in 7.10.3
+.IP CURLSHE_INVALID
+Introduced in 7.10.3
.IP CURLSHE_NOMEM
Introduced in 7.12.0
.IP CURLSHE_NOT_BUILT_IN
@@ -1744,10 +2180,10 @@ Introduced in 7.34.0
.IP CURLSSLBACKEND_POLARSSL
Introduced in 7.34.0
Deprecated since 7.69.0
-.IP CURLSSLBACKEND_RUSTLS
-Introduced in 7.76.0
.IP CURLSSLBACKEND_QSOSSL
Introduced in 7.34.0
+.IP CURLSSLBACKEND_RUSTLS
+Introduced in 7.76.0
.IP CURLSSLBACKEND_SCHANNEL
Introduced in 7.34.0
.IP CURLSSLBACKEND_SECURETRANSPORT
@@ -1780,6 +2216,30 @@ Introduced in 7.74.0
Introduced in 7.74.0
.IP CURLSTS_OK
Introduced in 7.74.0
+.IP CURLU_ALLOW_SPACE
+Introduced in 7.78.0
+.IP CURLU_APPENDQUERY
+Introduced in 7.62.0
+.IP CURLU_DEFAULT_PORT
+Introduced in 7.62.0
+.IP CURLU_DEFAULT_SCHEME
+Introduced in 7.62.0
+.IP CURLU_DISALLOW_USER
+Introduced in 7.62.0
+.IP CURLU_GUESS_SCHEME
+Introduced in 7.62.0
+.IP CURLU_NO_AUTHORITY
+Introduced in 7.67.0
+.IP CURLU_NO_DEFAULT_PORT
+Introduced in 7.62.0
+.IP CURLU_NON_SUPPORT_SCHEME
+Introduced in 7.62.0
+.IP CURLU_PATH_AS_IS
+Introduced in 7.62.0
+.IP CURLU_URLDECODE
+Introduced in 7.62.0
+.IP CURLU_URLENCODE
+Introduced in 7.62.0
.IP CURLUE_BAD_FILE_URL
Introduced in 7.81.0
.IP CURLUE_BAD_FRAGMENT
@@ -1870,30 +2330,6 @@ Introduced in 7.17.0
Introduced in 7.17.0
.IP CURLUSESSL_TRY
Introduced in 7.17.0
-.IP CURLU_ALLOW_SPACE
-Introduced in 7.78.0
-.IP CURLU_APPENDQUERY
-Introduced in 7.62.0
-.IP CURLU_DEFAULT_PORT
-Introduced in 7.62.0
-.IP CURLU_DEFAULT_SCHEME
-Introduced in 7.62.0
-.IP CURLU_DISALLOW_USER
-Introduced in 7.62.0
-.IP CURLU_GUESS_SCHEME
-Introduced in 7.62.0
-.IP CURLU_NON_SUPPORT_SCHEME
-Introduced in 7.62.0
-.IP CURLU_NO_AUTHORITY
-Introduced in 7.67.0
-.IP CURLU_NO_DEFAULT_PORT
-Introduced in 7.62.0
-.IP CURLU_PATH_AS_IS
-Introduced in 7.62.0
-.IP CURLU_URLDECODE
-Introduced in 7.62.0
-.IP CURLU_URLENCODE
-Introduced in 7.62.0
.IP CURLVERSION_EIGHTH
Introduced in 7.72.0
.IP CURLVERSION_FIFTH
@@ -1916,353 +2352,21 @@ Introduced in 7.66.0
Introduced in 7.77.0
.IP CURLVERSION_THIRD
Introduced in 7.12.0
-.IP CURL_CHUNK_BGN_FUNC_FAIL
-Introduced in 7.21.0
-.IP CURL_CHUNK_BGN_FUNC_OK
-Introduced in 7.21.0
-.IP CURL_CHUNK_BGN_FUNC_SKIP
-Introduced in 7.21.0
-.IP CURL_CHUNK_END_FUNC_FAIL
-Introduced in 7.21.0
-.IP CURL_CHUNK_END_FUNC_OK
-Introduced in 7.21.0
-.IP CURL_CSELECT_ERR
-Introduced in 7.16.3
-.IP CURL_CSELECT_IN
-Introduced in 7.16.3
-.IP CURL_CSELECT_OUT
-Introduced in 7.16.3
-.IP CURL_DID_MEMORY_FUNC_TYPEDEFS
-Introduced in 7.49.0
-.IP CURL_EASY_NONE
-Introduced in 7.14.0
-.IP CURL_EASY_TIMEOUT
-Introduced in 7.14.0
-.IP CURL_ERROR_SIZE
-Introduced in 7.1
-.IP CURL_FNMATCHFUNC_FAIL
-Introduced in 7.21.0
-.IP CURL_FNMATCHFUNC_MATCH
-Introduced in 7.21.0
-.IP CURL_FNMATCHFUNC_NOMATCH
-Introduced in 7.21.0
-.IP CURL_FORMADD_DISABLED
-Introduced in 7.12.1
-Deprecated since 7.56.0
-.IP CURL_FORMADD_ILLEGAL_ARRAY
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_INCOMPLETE
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_MEMORY
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_NULL
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_OK
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_OPTION_TWICE
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_UNKNOWN_OPTION
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_GLOBAL_ACK_EINTR
-Introduced in 7.30.0
-.IP CURL_GLOBAL_ALL
-Introduced in 7.8
-.IP CURL_GLOBAL_DEFAULT
-Introduced in 7.8
-.IP CURL_GLOBAL_NOTHING
-Introduced in 7.8
-.IP CURL_GLOBAL_SSL
-Introduced in 7.8
-.IP CURL_GLOBAL_WIN32
-Introduced in 7.8.1
-.IP CURL_HET_DEFAULT
-Introduced in 7.59.0
-.IP CURL_HTTPPOST_BUFFER
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_CALLBACK
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_FILENAME
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_LARGE
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_PTRBUFFER
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_PTRCONTENTS
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_PTRNAME
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_READFILE
-Introduced in 7.46.0
-.IP CURL_HTTP_VERSION_1_0
-Introduced in 7.9.1
-.IP CURL_HTTP_VERSION_1_1
-Introduced in 7.9.1
-.IP CURL_HTTP_VERSION_2
-Introduced in 7.43.0
-.IP CURL_HTTP_VERSION_2TLS
-Introduced in 7.47.0
-.IP CURL_HTTP_VERSION_2_0
-Introduced in 7.33.0
-.IP CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
-Introduced in 7.49.0
-.IP CURL_HTTP_VERSION_3
+.IP CURLWARNING
Introduced in 7.66.0
-.IP CURL_HTTP_VERSION_NONE
-Introduced in 7.9.1
-.IP CURL_IPRESOLVE_V4
-Introduced in 7.10.8
-.IP CURL_IPRESOLVE_V6
-Introduced in 7.10.8
-.IP CURL_IPRESOLVE_WHATEVER
-Introduced in 7.10.8
-.IP CURL_LOCK_ACCESS_NONE
-Introduced in 7.10.3
-.IP CURL_LOCK_ACCESS_SHARED
-Introduced in 7.10.3
-.IP CURL_LOCK_ACCESS_SINGLE
-Introduced in 7.10.3
-.IP CURL_LOCK_DATA_CONNECT
-Introduced in 7.10.3
-.IP CURL_LOCK_DATA_COOKIE
-Introduced in 7.10.3
-.IP CURL_LOCK_DATA_DNS
-Introduced in 7.10.3
-.IP CURL_LOCK_DATA_NONE
-Introduced in 7.10.3
-.IP CURL_LOCK_DATA_PSL
-Introduced in 7.61.0
-.IP CURL_LOCK_DATA_SHARE
-Introduced in 7.10.4
-.IP CURL_LOCK_DATA_SSL_SESSION
-Introduced in 7.10.3
-.IP CURL_LOCK_TYPE_CONNECT
-Introduced in 7.10
-.IP CURL_LOCK_TYPE_COOKIE
-Introduced in 7.10
-.IP CURL_LOCK_TYPE_DNS
-Introduced in 7.10
-.IP CURL_LOCK_TYPE_NONE
-Introduced in 7.10
-.IP CURL_LOCK_TYPE_SSL_SESSION
-Introduced in 7.10
-.IP CURL_MAX_HTTP_HEADER
-Introduced in 7.19.7
-.IP CURL_MAX_READ_SIZE
-Introduced in 7.53.0
-.IP CURL_MAX_WRITE_SIZE
-Introduced in 7.9.7
-.IP CURL_NETRC_IGNORED
-Introduced in 7.9.8
-.IP CURL_NETRC_OPTIONAL
-Introduced in 7.9.8
-.IP CURL_NETRC_REQUIRED
-Introduced in 7.9.8
-.IP CURL_POLL_IN
-Introduced in 7.14.0
-.IP CURL_POLL_INOUT
-Introduced in 7.14.0
-.IP CURL_POLL_NONE
-Introduced in 7.14.0
-.IP CURL_POLL_OUT
-Introduced in 7.14.0
-.IP CURL_POLL_REMOVE
-Introduced in 7.14.0
-.IP CURL_PREREQFUNC_ABORT
-Introduced in 7.79.0
-.IP CURL_PREREQFUNC_OK
-Introduced in 7.79.0
-.IP CURL_PROGRESSFUNC_CONTINUE
-Introduced in 7.68.0
-.IP CURL_PROGRESS_BAR
-Introduced in 7.1.1
-.IP CURL_PROGRESS_STATS
-Introduced in 7.1.1
-.IP CURL_PUSH_DENY
-Introduced in 7.44.0
-.IP CURL_PUSH_ERROROUT
-Introduced in 7.72.0
-.IP CURL_PUSH_OK
-Introduced in 7.44.0
-.IP CURL_READFUNC_ABORT
-Introduced in 7.12.1
-.IP CURL_READFUNC_PAUSE
-Introduced in 7.18.0
-.IP CURL_REDIR_GET_ALL
-Introduced in 7.19.1
-.IP CURL_REDIR_POST_301
-Introduced in 7.19.1
-.IP CURL_REDIR_POST_302
-Introduced in 7.19.1
-.IP CURL_REDIR_POST_303
-Introduced in 7.25.1
-.IP CURL_REDIR_POST_ALL
-Introduced in 7.19.1
-.IP CURL_RTSPREQ_ANNOUNCE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_DESCRIBE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_GET_PARAMETER
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_NONE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_OPTIONS
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_PAUSE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_PLAY
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_RECEIVE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_RECORD
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_SETUP
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_SET_PARAMETER
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_TEARDOWN
-Introduced in 7.20.0
-.IP CURL_SEEKFUNC_CANTSEEK
-Introduced in 7.19.5
-.IP CURL_SEEKFUNC_FAIL
-Introduced in 7.19.5
-.IP CURL_SEEKFUNC_OK
-Introduced in 7.19.5
-.IP CURL_SOCKET_BAD
-Introduced in 7.14.0
-.IP CURL_SOCKET_TIMEOUT
-Introduced in 7.14.0
-.IP CURL_SOCKOPT_ALREADY_CONNECTED
-Introduced in 7.21.5
-.IP CURL_SOCKOPT_ERROR
-Introduced in 7.21.5
-.IP CURL_SOCKOPT_OK
-Introduced in 7.21.5
-.IP CURL_SSLVERSION_DEFAULT
-Introduced in 7.9.2
-.IP CURL_SSLVERSION_MAX_DEFAULT
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_NONE
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_TLSv1_0
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_TLSv1_1
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_TLSv1_2
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_TLSv1_3
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_SSLv2
-Introduced in 7.9.2
-.IP CURL_SSLVERSION_SSLv3
-Introduced in 7.9.2
-.IP CURL_SSLVERSION_TLSv1
-Introduced in 7.9.2
-.IP CURL_SSLVERSION_TLSv1_0
-Introduced in 7.34.0
-.IP CURL_SSLVERSION_TLSv1_1
-Introduced in 7.34.0
-.IP CURL_SSLVERSION_TLSv1_2
-Introduced in 7.34.0
-.IP CURL_SSLVERSION_TLSv1_3
-Introduced in 7.52.0
-.IP CURL_STRICTER
-Introduced in 7.50.2
-.IP CURL_TIMECOND_IFMODSINCE
-Introduced in 7.9.7
-.IP CURL_TIMECOND_IFUNMODSINCE
-Introduced in 7.9.7
-.IP CURL_TIMECOND_LASTMOD
-Introduced in 7.9.7
-.IP CURL_TIMECOND_NONE
-Introduced in 7.9.7
-.IP CURL_TLSAUTH_NONE
-Introduced in 7.21.4
-.IP CURL_TLSAUTH_SRP
-Introduced in 7.21.4
-.IP CURL_TRAILERFUNC_ABORT
-Introduced in 7.64.0
-.IP CURL_TRAILERFUNC_OK
-Introduced in 7.64.0
-.IP CURL_UPKEEP_INTERVAL_DEFAULT
-Introduced in 7.62.0
-.IP CURL_VERSION_ALTSVC
-Introduced in 7.64.1
-.IP CURL_VERSION_ASYNCHDNS
-Introduced in 7.10.7
-.IP CURL_VERSION_BROTLI
-Introduced in 7.57.0
-.IP CURL_VERSION_CONV
-Introduced in 7.15.4
-.IP CURL_VERSION_CURLDEBUG
-Introduced in 7.19.6
-.IP CURL_VERSION_DEBUG
-Introduced in 7.10.6
-.IP CURL_VERSION_GSASL
-Introduced in 7.76.0
-.IP CURL_VERSION_GSSAPI
-Introduced in 7.38.0
-.IP CURL_VERSION_GSSNEGOTIATE
-Introduced in 7.10.6
-Deprecated since 7.38.0
-.IP CURL_VERSION_HSTS
-Introduced in 7.74.0
-.IP CURL_VERSION_HTTP2
-Introduced in 7.33.0
-.IP CURL_VERSION_HTTP3
-Introduced in 7.66.0
-.IP CURL_VERSION_HTTPS_PROXY
-Introduced in 7.52.0
-.IP CURL_VERSION_IDN
-Introduced in 7.12.0
-.IP CURL_VERSION_IPV6
-Introduced in 7.10
-.IP CURL_VERSION_KERBEROS4
-Introduced in 7.10
-Deprecated since 7.33.0
-.IP CURL_VERSION_KERBEROS5
-Introduced in 7.40.0
-.IP CURL_VERSION_LARGEFILE
-Introduced in 7.11.1
-.IP CURL_VERSION_LIBZ
-Introduced in 7.10
-.IP CURL_VERSION_MULTI_SSL
-Introduced in 7.56.0
-.IP CURL_VERSION_NTLM
-Introduced in 7.10.6
-.IP CURL_VERSION_NTLM_WB
-Introduced in 7.22.0
-.IP CURL_VERSION_PSL
-Introduced in 7.47.0
-.IP CURL_VERSION_SPNEGO
-Introduced in 7.10.8
-.IP CURL_VERSION_SSL
-Introduced in 7.10
-.IP CURL_VERSION_SSPI
-Introduced in 7.13.2
-.IP CURL_VERSION_TLSAUTH_SRP
-Introduced in 7.21.4
-.IP CURL_VERSION_UNICODE
-Introduced in 7.72.0
-.IP CURL_VERSION_UNIX_SOCKETS
-Introduced in 7.40.0
-.IP CURL_VERSION_ZSTD
-Introduced in 7.72.0
-.IP CURL_WAIT_POLLIN
-Introduced in 7.28.0
-.IP CURL_WAIT_POLLOUT
-Introduced in 7.28.0
-.IP CURL_WAIT_POLLPRI
-Introduced in 7.28.0
-.IP CURL_WIN32
-Introduced in 7.69.0
-.IP CURL_WRITEFUNC_PAUSE
-Introduced in 7.18.0
-.IP CURL_ZERO_TERMINATED
-Introduced in 7.56.0
+.IP CURLWS_BINARY
+Introduced in 7.86.0
+.IP CURLWS_CLOSE
+Introduced in 7.86.0
+.IP CURLWS_CONT
+Introduced in 7.86.0
+.IP CURLWS_OFFSET
+Introduced in 7.86.0
+.IP CURLWS_PING
+Introduced in 7.86.0
+.IP CURLWS_PONG
+Introduced in 7.86.0
+.IP CURLWS_RAW_MODE
+Introduced in 7.86.0
+.IP CURLWS_TEXT
+Introduced in 7.86.0
diff --git a/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3
index 6a06dd0c2..559d3288f 100644
--- a/docs/libcurl/libcurl-thread.3
+++ b/docs/libcurl/libcurl-thread.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2015 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH libcurl-thread 3 "November 26, 2021" "libcurl 7.81.0" "libcurl thread safety"
+.TH libcurl-thread 3 "September 20, 2022" "libcurl 7.86.0" "libcurl thread safety"
.SH NAME
libcurl-thread \- libcurl thread safety
@@ -93,7 +95,11 @@ problem reports on *BSD (at least in the past, they may be working fine these
days). Some operating systems that are known to have solid and working thread
support are Linux, Solaris and Windows.
.IP "curl_global_* functions"
-These functions are not thread safe. If you are using libcurl with multiple
+These functions are thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the \fBCURL_VERSION_THREADSAFE\fP feature bit
+set (most platforms).
+
+If these functions are not thread-safe and you are using libcurl with multiple
threads it is especially important that before use you call
\fIcurl_global_init(3)\fP or \fIcurl_global_init_mem(3)\fP to explicitly
initialize the library and its dependents, rather than rely on the "lazy"
diff --git a/docs/libcurl/libcurl-tutorial.3 b/docs/libcurl/libcurl-tutorial.3
index 593f87baf..40f6ae606 100644
--- a/docs/libcurl/libcurl-tutorial.3
+++ b/docs/libcurl/libcurl-tutorial.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH libcurl-tutorial 3 "December 20, 2021" "libcurl 7.81.0" "libcurl programming"
+.TH libcurl-tutorial 3 "September 20, 2022" "libcurl 7.86.0" "libcurl programming"
.SH NAME
libcurl-tutorial \- libcurl programming tutorial
@@ -48,9 +50,9 @@ well.
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:
-
-$ curl-config --cflags
-
+.nf
+ $ curl-config --cflags
+.fi
.IP "Linking the Program with libcurl"
When having compiled the program, you need to link your object files to create
a single executable. For that to succeed, you need to link with libcurl and
@@ -58,9 +60,9 @@ possibly also with other libraries that libcurl itself depends on. Like the
OpenSSL libraries, but even some standard OS libraries may be needed on the
command line. To figure out which flags to use, once again the 'curl-config'
tool comes to the rescue:
-
-$ curl-config --libs
-
+.nf
+ $ curl-config --libs
+.fi
.IP "SSL or Not"
libcurl can be built and customized in many ways. One of the things that
varies from different libraries and builds is the support for SSL-based
@@ -68,19 +70,18 @@ transfers, like HTTPS and FTPS. If a supported SSL library was detected
properly at build-time, libcurl will be built with SSL support. To figure out
if an installed libcurl has been built with SSL support enabled, use
\&'curl-config' like this:
-
-$ curl-config --feature
-
-And if SSL is supported, the keyword 'SSL' will be written to stdout,
+.nf
+ $ curl-config --feature
+.fi
+And if SSL is supported, the keyword \fISSL\fP will be written to stdout,
possibly together with a few other features that could be either on or off on
for different libcurls.
See also the "Features libcurl Provides" further down.
.IP "autoconf macro"
When you write your configure script to detect libcurl and setup variables
-accordingly, we offer a prewritten macro that probably does everything you
-need in this area. See docs/libcurl/libcurl.m4 file - it includes docs on how
-to use it.
+accordingly, we offer a macro that probably does everything you need in this
+area. See docs/libcurl/libcurl.m4 file - it includes docs on how to use it.
.SH "Portable Code in a Portable World"
The people behind libcurl have put a considerable effort to make libcurl work
@@ -95,9 +96,9 @@ stop you from that.
The program must initialize some of the libcurl functionality globally. That
means it should be done exactly once, no matter how many times you intend to
use the library. Once for your program's entire life time. This is done using
-
+.nf
curl_global_init()
-
+.fi
and it takes one parameter which is a bit pattern that tells libcurl what to
initialize. Using \fICURL_GLOBAL_ALL\fP will make it initialize all known
internal sub modules, and might be a good default option. The current two bits
@@ -132,8 +133,8 @@ Repeated calls to \fIcurl_global_init(3)\fP and \fIcurl_global_cleanup(3)\fP
should be avoided. They should only be called once each.
.SH "Features libcurl Provides"
-It is considered best-practice to determine libcurl features at run-time
-rather than at build-time (if possible of course). By calling
+It is considered best-practice to determine libcurl features at runtime rather
+than at build-time (if possible of course). By calling
\fIcurl_version_info(3)\fP and checking out the details of the returned
struct, your program can figure out exactly what the currently running libcurl
supports.
@@ -155,9 +156,9 @@ should use one handle for every thread you plan to use for transferring. You
must never share the same handle in multiple threads.
Get an easy handle with
-
- easyhandle = curl_easy_init();
-
+.nf
+ handle = curl_easy_init();
+.fi
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.
@@ -190,19 +191,19 @@ remote resource you want to get here. Since you write a sort of application
that needs this transfer, I assume that you would like to get the data passed
to you directly instead of simply getting it passed to stdout. So, you write
your own function that matches this prototype:
-
+.nf
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);
-
+.fi
You tell libcurl to pass all data to this function by issuing a function
similar to this:
-
- curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_data);
+.fi
You can control what data your callback function gets in the fourth argument
by setting another property:
-
- curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA, &internal_struct);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_WRITEDATA, &internal_struct);
+.fi
Using that property, you can easily pass local data between your application
and the function that gets invoked by libcurl. libcurl itself will not touch the
data you pass with \fICURLOPT_WRITEDATA(3)\fP.
@@ -229,9 +230,9 @@ will experience crashes.
There are of course many more options you can set, and we will get back to a few
of them later. Let's instead continue to the actual transfer:
-
- success = curl_easy_perform(easyhandle);
-
+.nf
+ success = curl_easy_perform(handle);
+.fi
\fIcurl_easy_perform(3)\fP 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,
@@ -301,30 +302,30 @@ Since we write an application, we most likely want libcurl to get the upload
data by asking us for it. To make it do that, we set the read callback and
the custom pointer libcurl will pass to our read callback. The read callback
should have a prototype similar to:
-
+.nf
size_t function(char *bufptr, size_t size, size_t nitems, void *userp);
-
-Where bufptr is the pointer to a buffer we fill in with data to upload and
-size*nitems is the size of the buffer and therefore also the maximum amount
-of data we can return to libcurl in this call. The 'userp' pointer is the
-custom pointer we set to point to a struct of ours to pass private data
+.fi
+Where \fIbufptr\fP is the pointer to a buffer we fill in with data to upload
+and \fIsize*nitems\fP is the size of the buffer and therefore also the maximum
+amount of data we can return to libcurl in this call. The \fIuserp\fP pointer
+is the custom pointer we set to point to a struct of ours to pass private data
between the application and the callback.
+.nf
+ curl_easy_setopt(handle, CURLOPT_READFUNCTION, read_function);
- curl_easy_setopt(easyhandle, CURLOPT_READFUNCTION, read_function);
-
- curl_easy_setopt(easyhandle, CURLOPT_READDATA, &filedata);
-
+ curl_easy_setopt(handle, CURLOPT_READDATA, &filedata);
+.fi
Tell libcurl that we want to upload:
-
- curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, 1L);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_UPLOAD, 1L);
+.fi
A few protocols will not behave properly when uploads are done without any prior
knowledge of the expected file size. So, set the upload file size using the
\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 */
- curl_easy_setopt(easyhandle, CURLOPT_INFILESIZE_LARGE, file_size);
+ curl_easy_setopt(handle, CURLOPT_INFILESIZE_LARGE, file_size);
.fi
When you call \fIcurl_easy_perform(3)\fP this time, it will perform all the
@@ -342,9 +343,9 @@ several ways to specify them.
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:
-
+.nf
protocol://user:password@example.com/path/
-
+.fi
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.
@@ -352,27 +353,29 @@ 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
\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");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_USERPWD, "myname:thesecret");
+.fi
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 \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");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXYUSERPWD, "myname:thesecret");
+.fi
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 \fICURLOPT_NETRC(3)\fP option:
-
- curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L);
-
+passwords, namely in the $HOME/.netrc file (on Windows, libcurl also checks
+the \fI%USERPROFILE% environment\fP variable if \fI%HOME%\fP is unset, and
+tries "_netrc" as name). 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
+\fICURLOPT_NETRC(3)\fP option:
+.nf
+ curl_easy_setopt(handle, CURLOPT_NETRC, 1L);
+.fi
And a basic example of how such a .netrc file may look like:
.nf
@@ -387,9 +390,9 @@ without it. There are times when the password is not optional, like when
you are using an SSL private key for secure transfers.
To pass the known private key password to libcurl:
-
- curl_easy_setopt(easyhandle, CURLOPT_KEYPASSWD, "keypassword");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_KEYPASSWD, "keypassword");
+.fi
.SH "HTTP Authentication"
The previous chapter showed how to set user name and password for getting
URLs that require authentication. When using the HTTP protocol, there are
@@ -401,23 +404,22 @@ 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 (SPNEGO). You can tell libcurl which one to use
with \fICURLOPT_HTTPAUTH(3)\fP as in:
-
- curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
+.fi
And when you send authentication to a proxy, you can also set authentication
type the same way but instead with \fICURLOPT_PROXYAUTH(3)\fP:
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
+.fi
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:
-
- curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH,
- CURLAUTH_DIGEST|CURLAUTH_BASIC);
-
-For convenience, you can use the 'CURLAUTH_ANY' define (instead of a list
+.nf
+ curl_easy_setopt(handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST|CURLAUTH_BASIC);
+.fi
+For convenience, you can use the \fICURLAUTH_ANY\fP define (instead of a list
with specific types) which allows libcurl to use whatever method it wants.
When asking for multiple types, libcurl will pick the available one it
@@ -434,37 +436,37 @@ libcurl to post it all to the remote site:
.nf
char *data="name=daniel&project=curl";
- curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, data);
- curl_easy_setopt(easyhandle, CURLOPT_URL, "http://posthere.com/");
+ curl_easy_setopt(handle, CURLOPT_POSTFIELDS, data);
+ curl_easy_setopt(handle, CURLOPT_URL, "http://posthere.com/");
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
.fi
Simple enough, huh? Since you set the POST options with the
\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
-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.
+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.
.nf
struct curl_slist *headers=NULL;
headers = curl_slist_append(headers, "Content-Type: text/xml");
/* post binary data */
- curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
+ curl_easy_setopt(handle, CURLOPT_POSTFIELDS, binaryptr);
/* set the size of the postfields data */
- curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23L);
+ curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, 23L);
/* pass our list of custom made headers */
- curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
+ curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers);
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
curl_slist_free_all(headers); /* free the header list */
.fi
@@ -495,7 +497,7 @@ The following example sets two simple text parts with plain textual contents,
and then a file with binary contents and uploads the whole thing.
.nf
- curl_mime *multipart = curl_mime_init(easyhandle);
+ curl_mime *multipart = curl_mime_init(handle);
curl_mimepart *part = curl_mime_addpart(multipart);
curl_mime_name(part, "name");
curl_mime_data(part, "daniel", CURL_ZERO_TERMINATED);
@@ -507,9 +509,9 @@ and then a file with binary contents and uploads the whole thing.
curl_mime_filedata(part, "curl.png");
/* Set the form info */
- curl_easy_setopt(easyhandle, CURLOPT_MIMEPOST, multipart);
+ curl_easy_setopt(handle, CURLOPT_MIMEPOST, multipart);
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
/* free the post data again */
curl_mime_free(multipart);
@@ -551,9 +553,9 @@ The MIME API example above is expressed as follows using this function:
CURLFORM_FILECONTENT, "curl.png", CURLFORM_END);
/* Set the form info */
- curl_easy_setopt(easyhandle, CURLOPT_HTTPPOST, post);
+ curl_easy_setopt(handle, CURLOPT_HTTPPOST, post);
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
/* free the post data again */
curl_formfree(post);
@@ -578,20 +580,20 @@ post handle:
CURLFORM_CONTENTHEADER, headers,
CURLFORM_END);
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
curl_formfree(post); /* free post */
curl_slist_free_all(headers); /* free custom header list */
.fi
-Since all options on an easyhandle are "sticky", they remain the same until
+Since all options on an easy handle 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
+request. You force an easy handle to go back to GET by using the
\fICURLOPT_HTTPGET(3)\fP option:
-
- curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_HTTPGET, 1L);
+.fi
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!
@@ -600,7 +602,7 @@ Four rules have to be respected in building the multi-part:
.br
- The easy handle must be created before building the multi-part.
.br
-- The multi-part is always created by a call to curl_mime_init(easyhandle).
+- The multi-part is always created by a call to curl_mime_init(handle).
.br
- Each part is created by a call to curl_mime_addpart(multipart).
.br
@@ -667,7 +669,7 @@ The deprecated multipart/mixed implementation of multiple files field is
translated to two distinct parts with the same name.
.nf
- curl_easy_setopt(easyhandle, CURLOPT_READFUNCTION, myreadfunc);
+ curl_easy_setopt(handle, CURLOPT_READFUNCTION, myreadfunc);
curl_formadd(&post, &last,
CURLFORM_COPYNAME, "stream",
CURLFORM_STREAM, arg,
@@ -802,40 +804,40 @@ invoke your own custom FTP commands or even proper FTP directory listings.
.IP "Proxy Options"
To tell libcurl to use a proxy at a given port number:
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXY, "proxy-host.com:8080");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXY, "proxy-host.com:8080");
+.fi
Some proxies require user authentication before allowing a request, and you
pass that information similar to this:
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "user:password");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXYUSERPWD, "user:password");
+.fi
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 \fICURLOPT_PROXYTYPE(3)\fP (if not,
it will default to assume an HTTP proxy):
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+.fi
.IP "Environment Variables"
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.
+following an old tradition 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.
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 http://proxy 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.
+\&"[protocol://][user:password@]machine[:port]". Where the protocol:// part
+specifies which type of proxy it is, and the optional port number specifies on
+which port the proxy operates. 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.
There are two special environment variables. 'all_proxy' is what sets proxy
for any URL in case the protocol specific variable was not set, and
@@ -852,12 +854,12 @@ 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 an HTTP proxy is to ask
-the proxy to tunnel trough everything without being able to check or fiddle
+the proxy to tunnel everything through without being able to check or fiddle
with the traffic.
Opening an SSL connection over an HTTP proxy is therefore a matter of asking the
proxy for a straight connection to the target host on a specified port. This
-is made with the HTTP request CONNECT. ("please mr proxy, connect me to that
+is made with the HTTP request CONNECT. ("please dear proxy, connect me to that
remote host").
Because of the nature of this operation, where the proxy has no idea what kind
@@ -882,9 +884,9 @@ Again, this is often prevented by the administrators of proxies and is
rarely allowed.
Tell libcurl to use proxy tunneling like this:
-
- curl_easy_setopt(easyhandle, CURLOPT_HTTPPROXYTUNNEL, 1L);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_HTTPPROXYTUNNEL, 1L);
+.fi
In fact, there might even be times when you want to do plain HTTP
operations using a tunnel like this, as it then enables you to operate on
the remote server instead of asking the proxy to do so. libcurl will not
@@ -893,24 +895,24 @@ stand in the way for such innovative actions either!
.IP "Proxy Auto-Config"
Netscape first came up with this. It is basically a web page (usually using a
-\&.pac extension) with a Javascript that when executed by the browser with the
+\&.pac extension) with a JavaScript that when executed by the browser with the
requested URL as input, returns information to the browser on how to connect
to the URL. The returned information might be "DIRECT" (which means no proxy
should be used), "PROXY host:port" (to tell the browser where the proxy for
this particular URL is) or "SOCKS host:port" (to direct the browser to a SOCKS
proxy).
-libcurl has no means to interpret or evaluate Javascript and thus it does not
+libcurl has no means to interpret or evaluate JavaScript and thus it does not
support this. If you get yourself in a position where you face this nasty
invention, the following advice have been mentioned and used in the past:
-- Depending on the Javascript complexity, write up a script that translates it
+- 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.
@@ -968,7 +970,7 @@ anything but default.
.IP "Expect"
When doing POST requests, libcurl sets this header to \&"100-continue" to ask
the server for an "OK" message before it proceeds with sending the data part
-of the post. If the POSTed data amount is deemed "small", libcurl will not use
+of the post. If the posted data amount is deemed "small", libcurl will not use
this header.
.SH "Customizing Operations"
@@ -986,9 +988,9 @@ libcurl is your friend here too.
If just changing the actual HTTP request keyword is what you want, like when
GET, HEAD or POST is not good enough for you, \fICURLOPT_CUSTOMREQUEST(3)\fP
is there for you. It is simple to use:
-
- curl_easy_setopt(easyhandle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST");
+.fi
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
@@ -1006,9 +1008,9 @@ think fit. Adding headers is this easy:
headers = curl_slist_append(headers, "X-silly-content: yes");
/* pass our list of custom made headers */
- curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
+ curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers);
- curl_easy_perform(easyhandle); /* transfer http */
+ curl_easy_perform(handle); /* transfer http */
curl_slist_free_all(headers); /* free the header list */
.fi
@@ -1048,7 +1050,7 @@ we support. libcurl speaks HTTP 1.1 by default. Some old servers do not like
getting 1.1-requests and when dealing with stubborn old things like that, you
can tell libcurl to use 1.0 instead by doing something like this:
- curl_easy_setopt(easyhandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
+ curl_easy_setopt(handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
.IP "FTP Custom Commands"
@@ -1059,7 +1061,7 @@ Sending custom commands to an FTP server means that you need to send the
commands exactly as the FTP server expects them (RFC959 is a good guide here),
and you can only use commands that work on the control-connection alone. All
kinds of commands that require data interchange and thus need a
-data-connection must be left to libcurl's own judgement. Also be aware that
+data-connection must be left to libcurl's own judgment. Also be aware that
libcurl will do its best to change directory to the target directory before
doing any transfer, so if you change directory (with CWD or similar) you might
confuse libcurl and then it might not attempt to transfer the file in the
@@ -1071,9 +1073,9 @@ A little example that deletes a given file before an operation:
headers = curl_slist_append(headers, "DELE file-to-remove");
/* pass the list of custom commands to the handle */
- curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers);
+ curl_easy_setopt(handle, CURLOPT_QUOTE, headers);
- curl_easy_perform(easyhandle); /* transfer ftp data! */
+ curl_easy_perform(handle); /* transfer ftp data! */
curl_slist_free_all(headers); /* free the header list */
.fi
@@ -1119,9 +1121,9 @@ they are sent from clients to servers with the Cookie: header.
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;");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_COOKIE, "name1=var1; name2=var2;");
+.fi
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.
@@ -1213,17 +1215,17 @@ use this function (this would over-encode it), but explicitly set the
corresponding part header.
Upon sending such a message, libcurl prepends it with the header list
-set with \fICURLOPT_HTTPHEADER(3)\fP, as 0th-level mime part headers.
+set with \fICURLOPT_HTTPHEADER(3)\fP, as zero level mime part headers.
Here is an example building an email message with an inline plain/html text
alternative and a file attachment encoded in base64:
.nf
- curl_mime *message = curl_mime_init(easyhandle);
+ curl_mime *message = curl_mime_init(handle);
/* The inline part is an alternative proposing the html and the text
versions of the email. */
- curl_mime *alt = curl_mime_init(easyhandle);
+ curl_mime *alt = curl_mime_init(handle);
/* HTML message. */
curl_mimepart *part = curl_mime_addpart(alt);
@@ -1254,8 +1256,8 @@ alternative and a file attachment encoded in base64:
headers = curl_slist_append(headers, "To: you@example.com");
/* Set these into the easy handle. */
- curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
- curl_easy_setopt(easyhandle, CURLOPT_MIMEPOST, mime);
+ curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers);
+ curl_easy_setopt(handle, CURLOPT_MIMEPOST, mime);
.fi
It should be noted that appending a message to an IMAP directory requires
@@ -1329,8 +1331,8 @@ 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
-\fIcurl_multi_fdset(3)\fP, that fills in a set of fd_set variables for you
-with the particular file descriptors libcurl uses for the moment.
+\fIcurl_multi_fdset(3)\fP, that fills in a set of \fIfd_set\fP variables for
+you with the particular file descriptors libcurl uses for the moment.
When you then call select(), it will return when one of the file handles signal
action and you then call \fIcurl_multi_perform(3)\fP to allow libcurl to do
diff --git a/docs/libcurl/libcurl-url.3 b/docs/libcurl/libcurl-url.3
index f904b54f3..e60d71ffd 100644
--- a/docs/libcurl/libcurl-url.3
+++ b/docs/libcurl/libcurl-url.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH libcurl 3 "October 31, 2021" "libcurl 7.81.0" "libcurl url interface"
+.TH libcurl 3 "September 20, 2022" "libcurl 7.86.0" "libcurl URL interface"
.SH NAME
libcurl-url \- URL interface overview
@@ -29,21 +31,23 @@ The URL interface provides functions for parsing and generating URLs.
You still only include <curl/curl.h> in your code.
.SH CREATE
Create a handle that holds URL info and resources with \fIcurl_url(3)\fP:
-
+.nf
CURLU *h = curl_url();
+.fi
.SH CLEANUP
-When done with it, clean it up with \fIcurl_url_cleanup(3)\fP:
-
+When done with it, clean it up with \fIcurl_url_cleanup(3)\fP
+.nf
curl_url_cleanup(h);
+.fi
.SH DUPLICATE
When you need a copy of a handle, just duplicate it with \fIcurl_url_dup(3)\fP:
-
+.nf
CURLU *nh = curl_url_dup(h);
+.fi
.SH PARSING
-By "setting" a URL to the handle with \fIcurl_url_set(3)\fP, the URL is parsed
+By setting a URL to the handle with \fIcurl_url_set(3)\fP, the URL is parsed
and stored in the handle. If the URL is not syntactically correct it will
return an error instead.
-
.nf
rc = curl_url_set(h, CURLUPART_URL,
"https://example.com:449/foo/bar?name=moo", 0);
@@ -55,16 +59,17 @@ If successful, this stores the URL in its individual parts within the handle.
.SH REDIRECT
When a handle already contains info about a URL, setting a relative URL will
make it "redirect" to adapt to it.
-
+.nf
rc = curl_url_set(h, CURLUPART_URL, "../test?another", 0);
+.fi
.SH "GET URL"
-The `CURLU` handle represents a URL and you can easily extract that with
+The \fBCURLU\fP handle represents a URL and you can easily extract that with
\fIcurl_url_get(3)\fP:
-
+.nf
char *url;
rc = curl_url_get(h, CURLUPART_URL, &url, 0);
curl_free(url);
-
+.fi
The zero in the fourth argument is a bitmask for changing specific features.
.SH "GET PARTS"
When a URL has been parsed or parts have been set, you can extract those
@@ -82,7 +87,7 @@ pieces from the handle at any time.
.fi
Extracted parts are not URL decoded unless the user also asks for it with the
-CURLU_URLDECODE flag set in the fourth bitmask argument.
+\fICURLU_URLDECODE\fP flag set in the fourth bitmask argument.
Remember to free the returned string with \fIcurl_free(3)\fP when you are done
with it!
@@ -102,27 +107,26 @@ instead of parsing such.
.fi
Set parts are not URL encoded unless the user asks for it with the
-`CURLU_URLENCODE` flag.
-.SH "APPENDQUERY"
+\fICURLU_URLENCODE\fP flag.
+.SH "CURLU_APPENDQUERY"
An application can append a string to the right end of the query part with the
-`CURLU_APPENDQUERY` flag to \fIcurl_url_set(3)\fP.
+\fICURLU_APPENDQUERY\fP flag to \fIcurl_url_set(3)\fP.
-Imagine a handle that holds the URL `https://example.com/?shoes=2`. An
-application can then add the string `hat=1` to the query part like this:
+Imagine a handle that holds the URL "https://example.com/?shoes=2". An
+application can then add the string "hat=1" to the query part like this:
.nf
rc = curl_url_set(urlp, CURLUPART_QUERY, "hat=1", CURLU_APPENDQUERY);
.fi
-It will even notice the lack of an ampersand (`&`) separator so it will inject
+It will even notice the lack of an ampersand (&) separator so it will inject
one too, and the handle's full URL will then equal
-`https://example.com/?shoes=2&hat=1`.
+"https://example.com/?shoes=2&hat=1".
The appended string can of course also get URL encoded on add, and if asked to
URL encode, the encoding process will skip the '=' character. For example,
-append `candy=N&N` to what we already have, and URL encode it to deal with the
+append "candy=N&N" to what we already have, and URL encode it to deal with the
ampersand in the data:
-
.nf
rc = curl_url_set(urlp, CURLUPART_QUERY, "candy=N&N",
CURLU_APPENDQUERY | CURLU_URLENCODE);
@@ -130,9 +134,9 @@ ampersand in the data:
Now the URL looks like
.nf
- https://example.com/?shoes=2&hat=1&candy=N%26N`
+ https://example.com/?shoes=2&hat=1&candy=N%26N
.fi
-.SH AVALABILITY
+.SH AVAILABILITY
The URL API was introduced in libcurl 7.62.0.
.SH "SEE ALSO"
.BR curl_url "(3), " curl_url_cleanup "(3), " curl_url_get "(3), "
diff --git a/docs/libcurl/libcurl.3 b/docs/libcurl/libcurl.3
index 2d0c379d9..a10ce0306 100644
--- a/docs/libcurl/libcurl.3
+++ b/docs/libcurl/libcurl.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH libcurl 3 "November 26, 2021" "libcurl 7.81.0" "libcurl overview"
+.TH libcurl 3 "September 20, 2022" "libcurl 7.86.0" "libcurl overview"
.SH NAME
libcurl \- client-side URL transfers
@@ -30,7 +32,7 @@ specific man pages for each function mentioned in here. See
\fIlibcurl-url(3)\fP and \fIlibcurl-tutorial(3)\fP for in-depth understanding
on how to program with libcurl.
-There are many bindings available that bring libcurl access to your favourite
+There are many bindings available that bring libcurl access to your favorite
language. Look elsewhere for documentation on those.
libcurl has a global constant environment that you must set up and maintain
@@ -153,28 +155,31 @@ that library that describes the SSL protocol.
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
+The global constant functions are thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the CURL_VERSION_THREADSAFE feature bit set
+(most platforms). Read \fIlibcurl-thread(3)\fP for thread safety guidelines.
+
+If the global constant functions are \fInot thread safe\fP, then you must
+not call them when any other thread in the program is running. It
+is not 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 cannot
+generally know what these libraries are, or whether other threads are
+using them.
+
+If the global constant functions are \fInot thread safe\fP, then 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.
-
It is not actually required that the functions be called at the beginning
and end of the program -- that is just usually the easiest way to do it.
-It \fIis\fP required that the functions be called when no other thread
-in the program is running.
-These global constant functions are \fInot thread safe\fP, so you must
-not call them when any other thread in the program is running. It
-is not 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 cannot
-generally know what these libraries are, or whether other threads are
-using them.
+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.
The global constant situation merits special consideration when the
code you are writing to use libcurl is not the main program, but rather
@@ -201,8 +206,8 @@ 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.
(Caveat: If you are initializing libcurl from a Windows DLL you should not
-initialize it from DllMain or a static initializer because Windows holds the
-loader lock during that time and it could cause a deadlock.)
+initialize it from \fIDllMain\fP or a static initializer because Windows holds
+the loader lock during that time and it could cause a deadlock.)
\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
diff --git a/docs/libcurl/libcurl.m4 b/docs/libcurl/libcurl.m4
index ad53a444e..0908a028e 100644
--- a/docs/libcurl/libcurl.m4
+++ b/docs/libcurl/libcurl.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2006 - 2020, David Shaw <dshaw@jabberwocky.com>
+# Copyright (C) 2006 - 2022, 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
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION],
# [ACTION-IF-YES], [ACTION-IF-NO])
diff --git a/docs/libcurl/mksymbolsmanpage.pl b/docs/libcurl/mksymbolsmanpage.pl
index d19a93ce4..8d1ddd044 100755
--- a/docs/libcurl/mksymbolsmanpage.pl
+++ b/docs/libcurl/mksymbolsmanpage.pl
@@ -6,7 +6,7 @@
# * | (__| |_| | _ <| |___
# * \___|\___/|_| \_\_____|
# *
-# * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# * Copyright (C) 2015 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
# *
# * This software is licensed as described in the file COPYING, which
# * you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# * KIND, either express or implied.
# *
+# * SPDX-License-Identifier: curl
+# *
# ***************************************************************************
my $version="7.41.0";
@@ -48,6 +50,8 @@ print <<HEADER
.\\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\\" * KIND, either express or implied.
.\\" *
+.\\" * SPDX-License-Identifier: curl
+.\\" *
.\\" **************************************************************************
.TH libcurl-symbols 3 "$date" "libcurl $version" "libcurl symbols"
.SH NAME
diff --git a/docs/libcurl/opts/CMakeLists.txt b/docs/libcurl/opts/CMakeLists.txt
index d0035016d..10d8c5f85 100644
--- a/docs/libcurl/opts/CMakeLists.txt
+++ b/docs/libcurl/opts/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2009 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Load man_MANS from shared file
transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
diff --git a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
index 484582657..502a7f804 100644
--- a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
+++ b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_ACTIVESOCKET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_ACTIVESOCKET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
index f7c03f4f0..09139343c 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_APPCONNECT_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
index af1a3109a..7824028f1 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_APPCONNECT_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
diff --git a/docs/libcurl/opts/CURLINFO_CAINFO.3 b/docs/libcurl/opts/CURLINFO_CAINFO.3
new file mode 100644
index 000000000..3c66df020
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CAINFO.3
@@ -0,0 +1,68 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CAINFO 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
+
+.SH NAME
+CURLINFO_CAINFO \- get the default built-in CA certificate path
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CAINFO, char **path);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the pointer to a null-terminated
+string holding the default built-in path used for the \fICURLOPT_CAINFO(3)\fP
+option unless set by the user.
+
+Note that in a situation where libcurl has been built to support multiple TLS
+libraries, this option might return a string even if the specific TLS library
+currently set to be used does not support \fICURLOPT_CAINFO(3)\fP.
+
+This is a path identifying a single file containing CA certificates.
+
+The \fBpath\fP pointer will be NULL if there is no default path.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ CURLcode res;
+ char *cainfo = NULL;
+ curl_easy_getinfo(curl, CURLINFO_CAINFO, &cainfo);
+ if(cainfo)
+ printf("default ca info path: %s\\n", cainfo);
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.84.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLINFO_CAPATH "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CAPATH.3 b/docs/libcurl/opts/CURLINFO_CAPATH.3
new file mode 100644
index 000000000..093f8dbe5
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CAPATH.3
@@ -0,0 +1,68 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CAPATH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
+
+.SH NAME
+CURLINFO_CAPATH \- get the default built-in CA path string
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CAPATH, char **path);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the pointer to a null-terminated
+string holding the default built-in path used for the \fICURLOPT_CAPATH(3)\fP
+option unless set by the user.
+
+Note that in a situation where libcurl has been built to support multiple TLS
+libraries, this option might return a string even if the specific TLS library
+currently set to be used does not support \fICURLOPT_CAPATH(3)\fP.
+
+This is a path identifying a directory.
+
+The \fBpath\fP pointer will be NULL if there is no default path.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ CURLcode res;
+ char *capath = NULL;
+ curl_easy_getinfo(curl, CURLINFO_CAPATH, &capath);
+ if(capath)
+ printf("default ca path: %s\\n", capath);
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.84.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLINFO_CAINFO "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CERTINFO.3 b/docs/libcurl/opts/CURLINFO_CERTINFO.3
index a0c075acc..7ebc3e542 100644
--- a/docs/libcurl/opts/CURLINFO_CERTINFO.3
+++ b/docs/libcurl/opts/CURLINFO_CERTINFO.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CERTINFO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CERTINFO 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
@@ -32,13 +34,13 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
struct curl_certinfo **chainp);
.fi
.SH DESCRIPTION
-Pass a pointer to a 'struct curl_certinfo *' and you will get it set to point to
-a struct that holds a number of linked lists with info about the certificate
-chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the request was
-made. 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.
+Pass a pointer to a \fIstruct curl_certinfo *\fP and you will get it set to
+point to a struct that holds a number of linked lists with info about the
+certificate chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the
+request was made. 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 \fIcertinfo.c\fP example.
.SH PROTOCOLS
All TLS-based
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
index 01dbf39f7..57016d097 100644
--- a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
+++ b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONDITION_UNMET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONDITION_UNMET 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response.
@@ -51,7 +53,8 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
/* If-Modified-Since the above time stamp */
- curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION,
+ (long)CURL_TIMECOND_IFMODSINCE);
/* Perform the request */
res = curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
index a746300d3..585d5769f 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONNECT_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
index 266334277..8adbb2729 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONNECT_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
index cc70a940c..478e14dc1 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
@@ -60,7 +62,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.6.1
+Added in 7.6.1. Deprecated since 7.55.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
index 9a6cd8c8d..1365d4841 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
index 3d875cc1d..45830bfd4 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
@@ -59,7 +61,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.6.1
+Added in 7.6.1. Deprecated since 7.55.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
index c5261f70b..77004dde7 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
index 33b58f335..9cdb3a5db 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_TYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_TYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
@@ -66,3 +68,4 @@ Added in 7.9.4
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLOPT_HEADERFUNCTION "(3), " curl_easy_header "(3) "
diff --git a/docs/libcurl/opts/CURLINFO_COOKIELIST.3 b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
index 57cc85d12..5e27c74ce 100644
--- a/docs/libcurl/opts/CURLINFO_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_COOKIELIST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_COOKIELIST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
diff --git a/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3 b/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3
index 0287eca9d..2adeced17 100644
--- a/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3
+++ b/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_EFFECTIVE_METHOD 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_EFFECTIVE_METHOD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_EFFECTIVE_METHOD \- get the last used HTTP method
diff --git a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
index deee3180b..a2d99c20a 100644
--- a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
+++ b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_EFFECTIVE_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_EFFECTIVE_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME.3 b/docs/libcurl/opts/CURLINFO_FILETIME.3
index db59e383c..151c447a8 100644
--- a/docs/libcurl/opts/CURLINFO_FILETIME.3
+++ b/docs/libcurl/opts/CURLINFO_FILETIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FILETIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
@@ -32,7 +34,7 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
.fi
.SH DESCRIPTION
Pass a pointer to a long to receive the remote time of the retrieved document
-(in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If you get
+in number of seconds since January 1 1970 in the GMT/UTC time zone. If you get
-1, it can be because of many reasons (it might be unknown, the server might
hide it or the server does not support the command that tells document time
etc) and the time of the document is unknown.
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME_T.3 b/docs/libcurl/opts/CURLINFO_FILETIME_T.3
index 60639dbe3..f967a2e0d 100644
--- a/docs/libcurl/opts/CURLINFO_FILETIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_FILETIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FILETIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
@@ -33,10 +35,10 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T,
.fi
.SH DESCRIPTION
Pass a pointer to a curl_off_t to receive the remote time of the retrieved
-document (in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If
-you get -1, it can be because of many reasons (it might be unknown, the server
-might hide it or the server does not support the command that tells document
-time etc) and the time of the document is unknown.
+document in number of seconds since January 1 1970 in the GMT/UTC time
+zone. If you get -1, it can be because of many reasons (it might be unknown,
+the server might hide it or the server does not support the command that tells
+document time etc) and the time of the document is unknown.
You must ask libcurl to collect this information before the transfer is made,
by using the \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or
diff --git a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
index aae1bc409..f00890c54 100644
--- a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
+++ b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FTP_ENTRY_PATH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_FTP_ENTRY_PATH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
diff --git a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
index c8ad987e3..33cb344ed 100644
--- a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
+++ b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HEADER_SIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_HEADER_SIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
diff --git a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
index 80b1f46ad..b568df026 100644
--- a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
+++ b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTPAUTH_AVAIL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTPAUTH_AVAIL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
index c45c76e4b..cc1385fc7 100644
--- a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
+++ b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTP_CONNECTCODE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_CONNECTCODE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 b/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
index 986b1b075..61be2a53b 100644
--- a/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTP_VERSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_VERSION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
index fc1e81f50..e4c8e3b20 100644
--- a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
+++ b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LASTSOCKET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_LASTSOCKET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
index cf0eca004..7b2cb4cc6 100644
--- a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LOCAL_IP 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_IP 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
index 38d21bb63..2de757c88 100644
--- a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LOCAL_PORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_PORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
index f4c16ac27..b250373a9 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NAMELOOKUP_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
index e29f6b0b5..9a278a538 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NAMELOOKUP_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
diff --git a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
index f06fa6925..57f39769c 100644
--- a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
+++ b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NUM_CONNECTS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_NUM_CONNECTS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
diff --git a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
index 263b36851..cb37d6156 100644
--- a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
+++ b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_OS_ERRNO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_OS_ERRNO 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
index 9e0595018..ef611e803 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRETRANSFER_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
index ffb72bff8..fb78d8581 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRETRANSFER_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
index 70201870b..f172c9d0e 100644
--- a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIMARY_IP 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_IP 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
index 41fa43d7c..f1ae29fd9 100644
--- a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIMARY_PORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_PORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
@@ -33,6 +35,11 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);
.SH DESCRIPTION
Pass a pointer to a long to receive the destination port of the most recent
connection done with this \fBcurl\fP handle.
+
+This is the destination port of the actual TCP or UDP connection libcurl used.
+If a proxy was used for the most recent transfer, this is the port number of
+the proxy, if no proxy was used it is the port number of the most recently
+accessed URL.
.SH PROTOCOLS
All
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLINFO_PRIVATE.3 b/docs/libcurl/opts/CURLINFO_PRIVATE.3
index 1b9e9cbbf..0e8a51db6 100644
--- a/docs/libcurl/opts/CURLINFO_PRIVATE.3
+++ b/docs/libcurl/opts/CURLINFO_PRIVATE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIVATE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIVATE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIVATE \- get the private pointer
diff --git a/docs/libcurl/opts/CURLINFO_PROTOCOL.3 b/docs/libcurl/opts/CURLINFO_PROTOCOL.3
index 8b845fd91..ece0b087f 100644
--- a/docs/libcurl/opts/CURLINFO_PROTOCOL.3
+++ b/docs/libcurl/opts/CURLINFO_PROTOCOL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROTOCOL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROTOCOL 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
@@ -31,6 +33,10 @@ CURLINFO_PROTOCOL \- get the protocol used in the connection
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
.fi
.SH DESCRIPTION
+This option is deprecated. We strongly recommend using
+\fICURLINFO_SCHEME(3)\fP instead, because this option cannot return all
+possible protocols!
+
Pass a pointer to a long to receive the version used in the last http
connection. The returned value will be exactly one of the CURLPROTO_* values:
@@ -59,7 +65,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.52.0
+Added in 7.52.0. Deprecated since 7.85.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
index 577070472..13f126990 100644
--- a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
+++ b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROXYAUTH_AVAIL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXYAUTH_AVAIL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
diff --git a/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3 b/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3
index b0cddfed6..fd1354907 100644
--- a/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3
+++ b/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROXY_ERROR 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXY_ERROR 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROXY_ERROR \- get the detailed (SOCKS) proxy error
@@ -70,12 +72,11 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_ERROR, long *detail);
.fi
.SH DESCRIPTION
Pass a pointer to a long to receive a detailed error code when the most recent
-transfer returned a CURLE_PROXY error.
-
-The return value will match the CURLproxycode set.
+transfer returned a \fBCURLE_PROXY\fP error. That error code will match the
+\fBCURLproxycode\fP set.
-The returned value will be zero (equal to CURLPX_OK) if no such response code
-was available.
+The error code will be zero (\fBCURLPX_OK\fP) if no response code was
+available.
.SH PROTOCOLS
All that can be done over SOCKS
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
index af02c325b..a8c049a85 100644
--- a/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
+++ b/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
index 443f271ac..d8ac0c496 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_COUNT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_COUNT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
index c1cc4b3d3..09b5aad0b 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
@@ -34,8 +36,8 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME,
.SH DESCRIPTION
Pass a pointer to a double to receive the total time, in seconds, it took for
all redirection steps include name lookup, connect, pretransfer and transfer
-before final transaction was started. CURLINFO_REDIRECT_TIME contains the
-complete execution time for multiple redirections.
+before final transaction was started. \fICURLINFO_REDIRECT_TIME(3)\fP contains
+the complete execution time for multiple redirections.
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
index 1609fc246..b628bfedd 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
index e3a1c0322..0311e4960 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
diff --git a/docs/libcurl/opts/CURLINFO_REFERER.3 b/docs/libcurl/opts/CURLINFO_REFERER.3
index 618efba0a..d8ab0a483 100644
--- a/docs/libcurl/opts/CURLINFO_REFERER.3
+++ b/docs/libcurl/opts/CURLINFO_REFERER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REFERER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REFERER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REFERER \- get the referrer header
diff --git a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
index 6a684fd19..67387f4d6 100644
--- a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
+++ b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REQUEST_SIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REQUEST_SIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
diff --git a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
index a2c93805b..7254d96c4 100644
--- a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
+++ b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RESPONSE_CODE 3 "December 14, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RESPONSE_CODE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
@@ -32,7 +34,7 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);
.fi
.SH DESCRIPTION
Pass a pointer to a long to receive the last received HTTP, FTP, SMTP or
-LDAP (openldap only) response code. This option was previously known as
+LDAP (OpenLDAP only) response code. This option was previously known as
CURLINFO_HTTP_CODE in libcurl 7.10.7 and earlier.
The stored value will be zero if no server response code has been received.
Note that a proxy's CONNECT response should
diff --git a/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 b/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3
index 0c1c8f6d2..1de0f884b 100644
--- a/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3
+++ b/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RETRY_AFTER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RETRY_AFTER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
index 897ddb331..7494d2ff2 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
index 3d9b8d470..ccda2badc 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_CSEQ_RECV 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
index 8cc2c5853..754524a13 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_SERVER_CSEQ 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SERVER_CSEQ 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
@@ -35,7 +37,7 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ,
Pass a pointer to a long to receive the next CSeq that will be expected by the
application.
-Llistening for server initiated requests is currently unimplemented!
+Listening for server initiated requests is not implemented!
Applications wishing to resume an RTSP session on another connection should
retrieve this info before closing the active connection.
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
index f936baf26..f5a233459 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_SESSION_ID 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SESSION_ID 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
diff --git a/docs/libcurl/opts/CURLINFO_SCHEME.3 b/docs/libcurl/opts/CURLINFO_SCHEME.3
index 2e1f89e74..7b9db05ec 100644
--- a/docs/libcurl/opts/CURLINFO_SCHEME.3
+++ b/docs/libcurl/opts/CURLINFO_SCHEME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SCHEME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SCHEME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
index 93146e3b7..b978b13bc 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_DOWNLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
@@ -61,7 +63,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.4.1
+Added in 7.4.1. Deprecated since 7.55.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
index 3ef36d5d4..19807218e 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_DOWNLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
index abf05107f..920273e1f 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_UPLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
@@ -58,7 +60,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.4.1
+Added in 7.4.1. Deprecated since 7.55.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
index 71cea8fb6..1a3f1c26f 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_UPLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
index 2879d1886..ef4b14d36 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_DOWNLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
@@ -51,13 +53,13 @@ if(curl) {
double speed;
res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD, &speed);
if(!res) {
- printf("Download speed %.0f bytes/sec\\n", ul);
+ printf("Download speed %.0f bytes/sec\\n", speed);
}
}
}
.fi
.SH AVAILABILITY
-Added in 7.4.1
+Added in 7.4.1. Deprecated since 7.55.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
index c23b08451..1050c7ccf 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_DOWNLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
index faf68272c..3ff75c87e 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_UPLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
@@ -50,13 +52,13 @@ if(curl) {
double speed;
res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed);
if(!res) {
- printf("Upload speed %.0f bytes/sec\\n", ul);
+ printf("Upload speed %.0f bytes/sec\\n", speed);
}
}
}
.fi
.SH AVAILABILITY
-Added in
+Added in 7.4.1. Deprecated since 7.55.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
index 9aacdb1bd..501d52e9e 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_UPLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
diff --git a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
index c230df7d3..78cfa70cd 100644
--- a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
+++ b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SSL_ENGINES 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_ENGINES 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
@@ -35,7 +37,7 @@ CURLcode curl_easy_getinfo(CURL *handle, 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
in separate dynamic libraries. Hence not all the returned engines may be
-available at run-time. \fBNOTE:\fP you must call \fIcurl_slist_free_all(3)\fP
+available at runtime. \fBNOTE:\fP you must call \fIcurl_slist_free_all(3)\fP
on the list pointer once you are done with it, as libcurl will not free the
data for you.
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
index 5da877d06..2ab2e2fb7 100644
--- a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
+++ b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SSL_VERIFYRESULT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_VERIFYRESULT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
index 380689e7a..6456103ed 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_STARTTRANSFER_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
index 6f6e6ea93..748a67177 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_STARTTRANSFER_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
index 67ef0ce6d..8de551a87 100644
--- a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
+++ b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TLS_SESSION 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SESSION 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
@@ -39,14 +41,14 @@ This option is exactly the same as \fICURLINFO_TLS_SSL_PTR(3)\fP except in the
case of OpenSSL. If the session \fIbackend\fP is CURLSSLBACKEND_OPENSSL the
session \fIinternals\fP pointer varies depending on the option:
-CURLINFO_TLS_SESSION OpenSSL session \fIinternals\fP is SSL_CTX *.
+\fICURLINFO_TLS_SESSION(3)\fP OpenSSL session \fIinternals\fP is \fBSSL_CTX *\fP.
-CURLINFO_TLS_SSL_PTR OpenSSL session \fIinternals\fP is SSL *.
+\fICURLINFO_TLS_SSL_PTR(3)\fP OpenSSL session \fIinternals\fP is \fBSSL *\fP.
-You can obtain an SSL_CTX pointer from an SSL pointer using OpenSSL function
-SSL_get_SSL_CTX. Therefore unless you need compatibility with older versions of
-libcurl use \fICURLINFO_TLS_SSL_PTR(3)\fP. Refer to that document for more
-information.
+You can obtain an \fBSSL_CTX\fP pointer from an SSL pointer using OpenSSL
+function \fISSL_get_SSL_CTX(3)\fP. Therefore unless you need compatibility
+with older versions of libcurl use \fICURLINFO_TLS_SSL_PTR(3)\fP. Refer to
+that document for more information.
.SH PROTOCOLS
All TLS-based
.SH EXAMPLE
@@ -62,8 +64,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.34.0, and supported OpenSSL, GnuTLS, NSS and gskit only up until
-7.48.0 was released.
+Added in 7.34.0. Deprecated since 7.48.0 and supported OpenSSL, GnuTLS,
+NSS and gskit only up until this version was released.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
index 153216d37..c90b30829 100644
--- a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
+++ b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TLS_SSL_PTR 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SSL_PTR 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
@@ -37,9 +39,9 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SSL_PTR,
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
struct curl_tlssessioninfo **session);
.SH DESCRIPTION
-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 a pointer to the
+Pass a pointer to a \fIstruct curl_tlssessioninfo *\fP. The pointer will be
+initialized to refer to a \fIstruct curl_tlssessioninfo *\fP that will contain
+an enum indicating the SSL library used for the handshake and a pointer to the
respective internal TLS session structure of this underlying SSL library.
This option may be useful for example to extract certificate information in a
@@ -65,34 +67,32 @@ The \fIinternals\fP struct member will point to a TLS library specific pointer
for the active ("in use") SSL connection, with the following underlying types:
.RS
.IP GnuTLS
-gnutls_session_t
+\fBgnutls_session_t\fP
.IP gskit
-gsk_handle
+\fBgsk_handle\fP
.IP NSS
-PRFileDesc *
+\fBPRFileDesc *\fP
.IP OpenSSL
-CURLINFO_TLS_SESSION: SSL_CTX *
+\fICURLINFO_TLS_SESSION(3)\fP: \fBSSL_CTX *\fP
-CURLINFO_TLS_SSL_PTR: SSL *
+\fICURLINFO_TLS_SSL_PTR(3)\fP: \fBSSL *\fP
.RE
Since 7.48.0 the \fIinternals\fP member can point to these other SSL backends
as well:
.RS
.IP mbedTLS
-mbedtls_ssl_context *
+\fBmbedTLS_ssl_context *\fP
.IP "Secure Channel"
-CtxtHandle *
+\fBCtxtHandle *\fP
.IP "Secure Transport"
-SSLContext *
+\fBSSLContext *\fP
.IP "wolfSSL"
-SSL *
-.IP "MesaLink"
-SSL *
+\fBSSL *\fP
.RE
If the \fIinternals\fP pointer is NULL then either the SSL backend is not
supported, an SSL session has not yet been established or the connection is no
-longer associated with the easy handle (eg curl_easy_perform has returned).
+longer associated with the easy handle (e.g. curl_easy_perform has returned).
.SH LIMITATIONS
This option has some limitations that could make it unsafe when it comes to
the manual verification of certificates.
@@ -103,7 +103,7 @@ using FTP over SSL. That is because the FTP protocol has a control channel and
a data channel and one or both may be over SSL. Currently there is no way to
retrieve a second in-use SSL session associated with an easy handle.
-This option has not been thoroughly tested with plaintext protocols that can
+This option has not been thoroughly tested with clear text protocols that can
be upgraded/downgraded to/from SSL: FTP, SMTP, POP3, IMAP when used with
\fICURLOPT_USE_SSL(3)\fP. Though you will be able to retrieve the SSL pointer,
it's possible that before you can do that data (including auth) may have
@@ -116,10 +116,10 @@ after renegotiation but before you are able to get the (possibly) changed SSL
pointer, with the (possibly) changed certificate information.
If you are using OpenSSL or wolfSSL then \fICURLOPT_SSL_CTX_FUNCTION(3)\fP can
-be used to set a certificate verification callback in the CTX. That is safer
-than using this option to poll for certificate changes and does not suffer from
-any of the problems above. There is currently no way in libcurl to set a
-verification callback for the other SSL backends.
+be used to set a certificate verification callback. That is safer than using
+this option to poll for certificate changes and does not suffer from any of
+the problems above. There is currently no way in libcurl to set a verification
+callback for the other SSL backends.
How are you using this option? Are you affected by any of these limitations?
Please let us know by making a comment at
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
index 3c870846b..3ba12bc82 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TOTAL_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
index 34ad3453e..0bf34cdb9 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TOTAL_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
index 4b3da35a1..8bc018784 100644
--- a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
@@ -34,11 +36,11 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE,
.SH DESCRIPTION
No function since pipelining was removed in 7.62.0.
-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.
+Pass a long with a \fBsize\fP in bytes. If a transfer in a pipeline 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
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
index cb55ad500..5071d13de 100644
--- a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
@@ -34,8 +36,8 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE,
.SH DESCRIPTION
No function since pipelining was removed in 7.62.0.
-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
+Pass a long with a \fBsize\fP in bytes. If a transfer in a pipeline 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.
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
index 61a9674ea..fae7b4650 100644
--- a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAXCONNECTS 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAXCONNECTS 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAXCONNECTS \- size of connection cache
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 b/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3
index b1fab1426..c3f3f2187 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "September 08, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_CONCURRENT_STREAMS \- max concurrent streams for http2
@@ -37,8 +39,7 @@ maximum number of concurrent streams for a connections that libcurl should
support on connections done using HTTP/2.
Valid values range from 1 to 2147483647 (2^31 - 1) and defaults to 100. The
-value passed here would be honoured based on other system resources
-properties.
+value passed here would be honored based on other system resources properties.
.SH DEFAULT
100
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
index e1561ed59..312c962ec 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- max number of connections to a single host
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
index 7c1cb1a57..47c84767f 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
@@ -35,8 +37,8 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH,
No function since pipelining was removed in 7.62.0.
Pass a long. The set \fBmax\fP number will be used as the maximum amount of
-outstanding requests in an HTTP/1.1 pipelined connection. This option is only
-used for HTTP/1.1 pipelining, not for HTTP/2 multiplexing.
+outstanding requests in an HTTP/1.1 pipeline. This option is only used for
+HTTP/1.1 pipelining, not for HTTP/2 multiplexing.
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
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
index da8c36175..af8f61c07 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
index bb22d7e6b..372175bfe 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING 3 "October 19, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
@@ -87,6 +89,5 @@ Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
.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_SERVER_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
index 777a061c6..ce954b772 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING_SERVER_BL 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SERVER_BL 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
index ee48a4fe6..d9e495d37 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING_SITE_BL 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SITE_BL 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
index dfee356e1..b23113508 100644
--- a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PUSHDATA 3 "November 04, 2020" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
index 4de8591b8..05c3082a9 100644
--- a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PUSHFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
@@ -48,9 +50,9 @@ pushes will be denied automatically.
The callback gets its arguments like this:
\fIparent\fP is the handle of the stream on which this push arrives. The new
-handle has been duphandle()d from the parent, meaning that it has gotten all
-its options inherited. It is then up to the application to alter any options
-if desired.
+handle has been duplicated from the parent, meaning that it has gotten all its
+options inherited. It is then up to the application to alter any options if
+desired.
\fIeasy\fP is a newly created handle that represents this upcoming transfer.
@@ -72,8 +74,8 @@ functions. These functions can only be used from within this callback and they
can only access the PUSH_PROMISE headers. The normal response headers will be
passed to the header callback for pushed streams just as for normal streams.
.IP curl_pushheader_bynum
-Returns the header at index 'num' (or NULL). The returned pointer points to a
-"name:value" string that will be freed when this callback returns.
+Returns the header at index \fInum\fP (or NULL). The returned pointer points
+to a "name:value" string that will be freed when this callback returns.
.IP curl_pushheader_byname
Returns the value for the given header name (or NULL). This is a shortcut so
that the application does not have to loop through all headers to find the one
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
index f595b889f..8fd86db35 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_SOCKETDATA 3 "November 04, 2020" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
index 75df846c6..d64d86a02 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_SOCKETFUNCTION 3 "December 02, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
index cd81e03d5..9349a162f 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_TIMERDATA 3 "November 04, 2020" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
@@ -69,7 +71,7 @@ static int timerfunc(CURLM *multi, long timeout_ms, void *userp)
id = g_new(guint, 1);
*id = g_timeout_add(timeout_ms, timeout_cb, id);
}
- curl_multi_setopt(multi, CURLMOPT_TIMERDATA, id);
+ current_timer = id;
return 0;
}
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
index 77f2f4870..4215da01a 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_TIMERFUNCTION 3 "December 02, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_TIMERFUNCTION \- callback to receive timeout values
@@ -60,10 +62,10 @@ multi handle will be aborted and fail.
This callback can be used instead of, or in addition to,
\fIcurl_multi_timeout(3)\fP.
-\fBWARNING:\fP even if it feels tempting, avoid calling libcurl directly from
-within the callback itself when the \fBtimeout_ms\fP value is zero, since it
-risks triggering an unpleasant recursive behavior that immediately calls
-another call to the callback with a zero timeout...
+\fBWARNING:\fP do not call libcurl directly from within the callback itself
+when the \fBtimeout_ms\fP value is zero, since it risks triggering an
+unpleasant recursive behavior that immediately calls another call to the
+callback with a zero timeout...
.SH DEFAULT
NULL
.SH PROTOCOLS
@@ -98,7 +100,7 @@ static int timerfunc(CURLM *multi, long timeout_ms, void *userp)
id = g_new(guint, 1);
*id = g_timeout_add(timeout_ms, timeout_cb, id);
}
- curl_multi_setopt(multi, CURLMOPT_TIMERDATA, id);
+ current_timer = id;
return 0;
}
diff --git a/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 b/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
index 8893fba85..5df935169 100644
--- a/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- abstract Unix domain socket
@@ -40,7 +42,7 @@ sockets, however it should be stressed that the path passed to this function
should not contain a leading NULL).
On non-supporting platforms, the abstract address will be interpreted as an
-empty string and fail gracefully, generating a run-time error.
+empty string and fail gracefully, generating a runtime error.
This option shares the same semantics as \fICURLOPT_UNIX_SOCKET_PATH(3)\fP in
which documentation more details can be found. Internally, these two options
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
index 8af37cc07..1382bc1d6 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
index 1ebdbd61d..09f0cc20d 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ACCEPT_ENCODING 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPT_ENCODING 3 "September 28, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ACCEPT_ENCODING \- automatic decompression of HTTP downloads
@@ -45,14 +47,12 @@ set ("") to ask for an Accept-Encoding: header to be used that contains all
built-in supported encodings.
Alternatively, you can specify exactly the encoding or list of encodings you
-want in the response. Four encodings are supported: \fIidentity\fP, meaning
-non-compressed, \fIdeflate\fP which requests the server to compress its
-response using the zlib algorithm, \fIgzip\fP which requests the gzip
+want in the response. The following encodings are supported: \fIidentity\fP,
+meaning non-compressed, \fIdeflate\fP which requests the server to compress
+its response using the zlib algorithm, \fIgzip\fP which requests the gzip
algorithm, (since curl 7.57.0) \fIbr\fP which is brotli and (since curl
-7.72.0) \fIzstd\fP which is zstd. Provide them in the string as a
-comma-separated list of accepted encodings, like:
-
- "br, gzip, deflate".
+7.72.0) \fIzstd\fP which is zstd. Provide them in the string as a
+comma-separated list of accepted encodings, like: \fB"br, gzip, deflate"\fP.
Set \fICURLOPT_ACCEPT_ENCODING(3)\fP to NULL to explicitly disable it, which
makes libcurl not send an Accept-Encoding: header and not decompress received
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
index 4309d35b8..6b4d5ca62 100644
--- a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
+++ b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ADDRESS_SCOPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ADDRESS_SCOPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ADDRESS_SCOPE \- scope id for IPv6 addresses
diff --git a/docs/libcurl/opts/CURLOPT_ALTSVC.3 b/docs/libcurl/opts/CURLOPT_ALTSVC.3
index 2f66b05c8..e560fe7e7 100644
--- a/docs/libcurl/opts/CURLOPT_ALTSVC.3
+++ b/docs/libcurl/opts/CURLOPT_ALTSVC.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ALTSVC 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ALTSVC 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ALTSVC \- alt-svc cache file name
@@ -50,6 +52,35 @@ if(curl) {
curl_easy_perform(curl);
}
.fi
+.SH "FILE FORMAT"
+A text based file with one line per alt-svc entry and each line consists of
+nine space-separated fields.
+
+An example line could look like
+
+ h2 www.example 8443 h3 second.example 443 "20190808 06:18:37" 1 0
+
+The fields of that line are:
+
+.IP h2
+ALPN id for the source origin
+.IP www.example
+Host name for the source origin
+.IP 8443
+Port number for the source origin
+.IP h3
+ALPN id for the destination host
+.IP second.example
+Host name for the destination host
+.IP 443
+Port number for the destination host
+.IP 2019*
+Expiration date and time of this entry within double quotes. The date format
+is "YYYYMMDD HH:MM:SS" and the time zone is GMT.
+.IP 1
+Boolean (1 or 0) if "persist" was set for this entry
+.IP 0
+Integer priority value (not currently used)
.SH AVAILABILITY
Added in 7.64.1
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 b/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
index ba06362b6..ce88f91ea 100644
--- a/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
+++ b/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ALTSVC_CTRL 3 "November 04, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ALTSVC_CTRL 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
@@ -74,7 +76,7 @@ HTTPS
.nf
CURL *curl = curl_easy_init();
if(curl) {
- curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, CURLALTSVC_H1);
+ curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, (long)CURLALTSVC_H1);
curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt");
curl_easy_perform(curl);
}
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.3 b/docs/libcurl/opts/CURLOPT_APPEND.3
index 68b87c953..3724f1620 100644
--- a/docs/libcurl/opts/CURLOPT_APPEND.3
+++ b/docs/libcurl/opts/CURLOPT_APPEND.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_APPEND 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_APPEND 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_APPEND \- append to the remote file
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
index 9e9a83796..91c0f5530 100644
--- a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
+++ b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_AUTOREFERER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_AUTOREFERER 3 "October 18, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
@@ -31,9 +33,13 @@ CURLOPT_AUTOREFERER \- automatically update the referer header
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
.fi
.SH DESCRIPTION
-Pass a parameter set to 1 to enable this. When enabled, libcurl will
+Pass a long parameter set to 1 to enable this. When enabled, libcurl will
automatically set the Referer: header field in HTTP requests to the full URL
where it follows a Location: redirect.
+
+The automatic referer is set to the full previous URL even when redirects are
+done cross-origin or following redirects to insecure protocols. This is
+considered a minor privacy leak by some.
.SH DEFAULT
0, disabled
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3 b/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3
index 76d54ac22..7d8cac3f4 100644
--- a/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3
+++ b/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_AWS_SIGV4 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_AWS_SIGV4 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_AWS_SIGV4 \- V4 signature
@@ -34,8 +36,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AWS_SIGV4, char *param);
Provides AWS V4 signature authentication on HTTP(S) header.
.PP
Pass a char * that is the collection of specific arguments are used for
-creating outgoing authentication headers.
-The format of the param option is:
+creating outgoing authentication headers. The format of the \fIparam\fP
+option is:
.IP provider1[:provider2[:region[:service]]]
.IP provider1,\ provider2
The providers arguments are used for generating some authentication parameters
@@ -49,19 +51,19 @@ It is extracted from the host name specified in the URL if omitted.
.PP
NOTE: This call set \fICURLOPT_HTTPAUTH(3)\fP to CURLAUTH_AWS_SIGV4.
Calling \fICURLOPT_HTTPAUTH(3)\fP with CURLAUTH_AWS_SIGV4 is the same
-as calling this with "aws:amz" in parameter.
+as calling this with \fB"aws:amz"\fP in parameter.
.PP
Example with "Test:Try", when curl will do the algorithm, it will generate
-"TEST-HMAC-SHA256" for "Algorithm", "x-try-date" and "X-Try-Date" for "date",
-"test4_request" for "request type",
-"SignedHeaders=content-type;host;x-try-date" for "signed headers"
+\fB"TEST-HMAC-SHA256"\đP for "Algorithm", \fB"x-try-date"\fP and
+\fB"X-Try-Date"\fP for "date", \fB"test4_request"\fP for "request type",
+\fB"SignedHeaders=content-type;host;x-try-date"\fP for "signed headers"
.PP
If you use just "test", instead of "test:try",
test will be use for every strings generated
.SH DEFAULT
By default, the value of this parameter is NULL.
Calling \fICURLOPT_HTTPAUTH(3)\fP with CURLAUTH_AWS_SIGV4 is the same
-as calling this with "aws:amz" in parameter.
+as calling this with \fB"aws:amz"\fP in parameter.
.SH PROTOCOLS
HTTP
.SH EXAMPLE
@@ -91,8 +93,8 @@ Added in 7.75.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH NOTES
-This option overrides the other auth types you might have set in CURL_HTTPAUTH
-which should be highlighted as this makes this auth method special.
-This method cannot be combined with other auth types.
+This option overrides the other auth types you might have set in
+\fICURLOPT_HTTPAUTH(3)\fP which should be highlighted as this makes this auth
+method special. This method cannot be combined with other auth types.
.SH "SEE ALSO"
.BR CURLOPT_HEADEROPT "(3), " CURLOPT_HTTPHEADER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
index ad15da8b8..3606cb1fb 100644
--- a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_BUFFERSIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_BUFFERSIZE 3 "August 23, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_BUFFERSIZE \- receive buffer size
@@ -69,3 +71,4 @@ Added in 7.10. Growing the buffer was added in 7.53.0.
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_WRITEFUNCTION "(3), "
+.BR CURLOPT_UPLOAD_BUFFERSIZE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.3 b/docs/libcurl/opts/CURLOPT_CAINFO.3
index ac752c3ba..5ec7d5757 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CAINFO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CAINFO 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
@@ -38,8 +40,8 @@ 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.
+This option is by default set to the system path where libcurl's CA
+certificate 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.
@@ -60,6 +62,8 @@ store of root certificates (the default for Schannel).
The application does not have to keep the string around after setting this
option.
+
+The default value for this can be figured out with \fICURLINFO_CAINFO(3)\fP.
.SH DEFAULT
Built-in system specific. When curl is built with Secure Transport or
Schannel, this option is not set by default.
@@ -76,11 +80,13 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-For the SSL engines that do not support certificate files the CURLOPT_CAINFO
-option is ignored. Schannel support added in libcurl 7.60.
+For the SSL engines that do not support certificate files the
+\fICURLOPT_CAINFO(3)\fP option is ignored. Schannel support added in libcurl
+7.60.
.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_CAINFO_BLOB "(3), " CURLOPT_CAPATH "(3), "
.BR CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_SSL_VERIFYHOST "(3), "
+.BR CURLINFO_CAINFO "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3 b/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3
index 37a51b419..3b5974374 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3
+++ b/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CAINFO_BLOB 3 "November 29, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CAINFO_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAINFO_BLOB \- Certificate Authority (CA) bundle in PEM format
@@ -63,7 +65,7 @@ if(curl) {
Added in 7.77.0.
This option is supported by the BearSSL (since 7.79.0), mbedTLS (since 7.81.0),
-OpenSSL, Secure Transport and Schannel backends.
+rustls (since 7.82.0), OpenSSL, Secure Transport and Schannel backends.
.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.
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
index 3e5883537..518696ae9 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CAPATH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CAPATH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAPATH \- directory holding CA certificates
@@ -33,15 +35,17 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);
.SH DESCRIPTION
Pass a char * to a null-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.
+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.
+to some limitation in OpenSSL.
The application does not have to keep the string around after setting this
option.
+
+The default value for this can be figured out with \fICURLINFO_CAPATH(3)\fP.
.SH DEFAULT
A default path detected at build time.
.SH PROTOCOLS
@@ -70,3 +74,4 @@ CURLE_OUT_OF_MEMORY
.SH "SEE ALSO"
.BR CURLOPT_CAINFO "(3), "
.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
+.BR CURLINFO_CAPATH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/docs/libcurl/opts/CURLOPT_CERTINFO.3
index be212d973..a633d51a8 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CERTINFO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CERTINFO 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
index f2ed16786..acec10a26 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
+CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcard match
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -67,14 +69,14 @@ 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.
+The \fItransfer_info\fP pointer will point to a \fBcurl_fileinfo\fP struct
+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
+the FTP wildcard download, the target is \fBcurl_fileinfo\fP 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
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
index 82e722aba..e30da8ef6 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_DATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_DATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_DATA \- pointer passed to the FTP chunk callbacks
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
index 821791b57..4660d2283 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_END_FUNCTION 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_END_FUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
+CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcard match
.SH SYNOPSIS
.nf
#include <curl/curl.h>
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
index 928c8e1b7..eaca56873 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CLOSESOCKETDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
index 043265c27..b227463e0 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
index 279b54af7..9d0caba1f 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECTTIMEOUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
index a80704ef5..59ccfd68d 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECTTIMEOUT_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
index 9ebab8bf6..9bbc0f9a8 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECT_ONLY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_ONLY 3 "September 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
@@ -41,12 +43,22 @@ useful when used with the \fICURLINFO_ACTIVESOCKET(3)\fP option to
the application can obtain the most recently used socket for special data
transfers.
+Since 7.86.0, this option can be set to '2' and if HTTP or WebSocket are
+used, libcurl will do the request and read all response headers before handing
+over control to the application.
+
Transfers marked connect only will not reuse any existing connections and
connections marked connect only will not be allowed to get reused.
+
+If the connect only transfer is done using the multi interface, the particular
+easy handle must remain added to the multi handle for as long as the
+application wants to use it. Once it has been removed with
+\fIcurl_multi_remove_handle(3)\fP, \fIcurl_easy_send(3)\fP and
+\fIcurl_easy_recv(3)\fP do not function.
.SH DEFAULT
0
.SH PROTOCOLS
-HTTP, SMTP, POP3 and IMAP
+HTTP, SMTP, POP3 and IMAP. For WS and WSS starting in 7.86.0.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
index dfe5c13d3..8fd699cdb 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECT_TO 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_TO 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECT_TO \- connect to a specific host and port instead of the URL's host and port
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
index 7897a6ff5..970877381 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
@@ -37,7 +39,7 @@ 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.
+\fBCURL_VERSION_CONV\fP 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
@@ -53,10 +55,10 @@ the network.
If you set a callback pointer to NULL, or do not 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.
+return the \fBCURLE_CONV_REQD\fP error code.
-If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
-For example:
+If \fBHAVE_ICONV\fP is defined, \fBCURL_ICONV_CODESET_OF_HOST\fP must also be
+defined. For example:
\&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
@@ -95,7 +97,10 @@ curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
my_conv_from_ascii_to_ebcdic);
.fi
.SH AVAILABILITY
-Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+Not available since 7.82.0
+
+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"
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
index aa7aad487..74e78d5c1 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
@@ -93,7 +95,10 @@ curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION,
my_conv_from_utf8_to_ebcdic);
.fi
.SH AVAILABILITY
-Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+Not available since 7.82.0
+
+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"
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
index e510cfd6d..d5b2d8edc 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
@@ -94,7 +96,10 @@ curl_easy_setopt(curl, CURLOPT_CONV_TO_NETWORK_FUNCTION,
my_conv_from_ebcdic_to_ascii);
.fi
.SH AVAILABILITY
-Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+Not available since 7.82.0
+
+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"
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.3 b/docs/libcurl/opts/CURLOPT_COOKIE.3
index 72803d0d8..6ec3c63a4 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIE \- HTTP Cookie header
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
index 8e9496f59..412a8a810 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIEFILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEFILE 3 "October 06, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
@@ -39,10 +41,9 @@ headers (Set-Cookie style) dumped to a file.
It also enables the cookie engine, making libcurl parse and send cookies on
subsequent requests with this handle.
-Given an empty or non-existing file or by passing the empty string ("") to
-this option, you can enable the cookie engine without reading any initial
-cookies. If you tell libcurl the file name is "-" (just a single minus sign),
-libcurl will instead read from stdin.
+By passing the empty string ("") to this option, you enable the cookie engine
+without reading any initial cookies. If you tell libcurl the file name is "-"
+(just a single minus sign), libcurl will instead read from stdin.
This option only \fBreads\fP cookies. To make libcurl write cookies to file,
see \fICURLOPT_COOKIEJAR(3)\fP.
@@ -60,6 +61,11 @@ option.
Setting this option to NULL will (since 7.77.0) explicitly disable the cookie
engine and clear the list of files to read cookies from.
+.SH SECURITY
+This document previously mentioned how specifying a non-existing file can also
+enable the cookie engine. While true, we strongly advice against using that
+method as it is too hard to be sure what files will stay that way in the long
+run.
.SH DEFAULT
NULL
.SH PROTOCOLS
@@ -79,9 +85,8 @@ if(curl) {
}
.fi
.SH "Cookie file format"
-The cookie file format and general cookie concepts in curl are described in
-the HTTP-COOKIES.md file, also hosted online here:
-https://curl.se/docs/http-cookies.html
+The cookie file format and general cookie concepts in curl are described
+online here: https://curl.se/docs/http-cookies.html
.SH AVAILABILITY
As long as HTTP is supported
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
index 4ebcaddff..eaa223093 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIEJAR 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEJAR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
index d2c6422a8..e162170c8 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIELIST 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIELIST 3 "October 04, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
@@ -106,17 +108,16 @@ curl_easy_perform(curl); /* cookies imported from cookies.txt */
curl_easy_cleanup(curl); /* cookies exported to cookies.txt */
.fi
.SH "Cookie file format"
-The cookie file format and general cookie concepts in curl are described in
-the HTTP-COOKIES.md file, also hosted online here:
-https://curl.se/docs/http-cookies.html
+The cookie file format and general cookie concepts in curl are described
+online here: https://curl.se/docs/http-cookies.html
.SH AVAILABILITY
-ALL was added in 7.14.1
+\fBALL\fP was added in 7.14.1
-SESS was added in 7.15.4
+\fBSESS\fP was added in 7.15.4
-FLUSH was added in 7.17.1
+\fBFLUSH\fP was added in 7.17.1
-RELOAD was added in 7.39.0
+\fBRELOAD\fP 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.
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
index e8a7f9abf..bb2a2f09c 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIESESSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIESESSION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
index 625d70f1a..473591b63 100644
--- a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COPYPOSTFIELDS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COPYPOSTFIELDS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.3 b/docs/libcurl/opts/CURLOPT_CRLF.3
index 6df1da8e5..a1b921f08 100644
--- a/docs/libcurl/opts/CURLOPT_CRLF.3
+++ b/docs/libcurl/opts/CURLOPT_CRLF.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CRLF 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CRLF 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CRLF \- CRLF conversion
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_CRLFILE.3
index 66420f79e..a986e86d9 100644
--- a/docs/libcurl/opts/CURLOPT_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_CRLFILE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CRLFILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CRLFILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CRLFILE \- Certificate Revocation List file
diff --git a/docs/libcurl/opts/CURLOPT_CURLU.3 b/docs/libcurl/opts/CURLOPT_CURLU.3
index 20cb28ce1..fc8a9cd21 100644
--- a/docs/libcurl/opts/CURLOPT_CURLU.3
+++ b/docs/libcurl/opts/CURLOPT_CURLU.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CURLU 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CURLU 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_CURLU \- URL in CURLU * format
+CURLOPT_CURLU \- URL in URL handle format
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -32,7 +34,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);
.fi
.SH DESCRIPTION
Pass in a pointer to the \fIURL\fP to work with. The parameter should be a
-CURLU *. Setting \fICURLOPT_CURLU(3)\fP will explicitly override
+\fICURLU *\fP. Setting \fICURLOPT_CURLU(3)\fP will explicitly override
\fICURLOPT_URL(3)\fP.
\fICURLOPT_URL(3)\fP or \fICURLOPT_CURLU(3)\fP \fBmust\fP be set before a
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
index 60f2c74a2..2bc320411 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CUSTOMREQUEST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CUSTOMREQUEST 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CUSTOMREQUEST \- custom request method
@@ -73,16 +75,16 @@ 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.
+\fBDELE\fP and \fBNOOP\fP for example.
.IP SMTP
-Instead of a HELP or VRFY when issuing SMTP based requests.
+Instead of a \fBHELP\fP or \fBVRFY\fP when issuing SMTP based requests.
For example:
-Normally a multiline response is returned which can be used, in conjunction
+Normally a multi line 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.
+issue \fBNOOP\fP and \fBRSET\fP commands.
The application does not have to keep the string around after setting this
option.
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
index 7a9e6dd29..895f240bd 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEBUGDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEBUGDATA \- pointer passed to the debug callback
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
index 4eca3766a..6ed52cf1d 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEBUGFUNCTION 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
@@ -60,7 +62,7 @@ NOT be null-terminated, but will be exactly of the \fIsize\fP as told by the
The \fIuserptr\fP argument is the pointer set with \fICURLOPT_DEBUGDATA(3)\fP.
-Available curl_infotype values:
+Available \fBcurl_infotype\fP values:
.IP CURLINFO_TEXT
The data is informational text.
.IP CURLINFO_HEADER_IN
diff --git a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
index 0802421c0..5027a0192 100644
--- a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
+++ b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEFAULT_PROTOCOL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DEFAULT_PROTOCOL 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
@@ -42,11 +44,11 @@ dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3,
pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
An unknown or unsupported protocol causes error
-\fICURLE_UNSUPPORTED_PROTOCOL\fP when libcurl parses a schemeless URL. Parsing
-happens when \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP is
-called. The protocols supported by libcurl will vary depending on how it was
-built. Use \fIcurl_version_info(3)\fP if you need a list of protocol names
-supported by the build of libcurl that you are using.
+\fICURLE_UNSUPPORTED_PROTOCOL\fP when libcurl parses a URL without a
+scheme. Parsing happens when \fIcurl_easy_perform(3)\fP or
+\fIcurl_multi_perform(3)\fP is called. The protocols supported by libcurl will
+vary depending on how it was built. Use \fIcurl_version_info(3)\fP if you need
+a list of protocol names supported by the build of libcurl that you are using.
This option does not change the default proxy protocol (http).
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
index d8e524ede..55355fc07 100644
--- a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
+++ b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DIRLISTONLY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DIRLISTONLY 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
diff --git a/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 b/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
index 3746d5bab..a0e8453e9 100644
--- a/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
+++ b/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
+CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the URL
.SH SYNOPSIS
.nf
#include <curl/curl.h>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
index 31da9f7a1..ecc909830 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- life-time for DNS cache entries
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
index f61b25d1f..96a81e69c 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_INTERFACE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_INTERFACE 3 "September 05, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_INTERFACE \- interface to speak DNS over
@@ -41,6 +43,7 @@ option.
.SH DEFAULT
NULL
.SH PROTOCOLS
+All protocols except file:// - protocols that resolve host names.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
index 085ef8c2c..3180c8e05 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_LOCAL_IP4 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP4 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
index 04f58c5d3..a03a0849c 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_LOCAL_IP6 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP6 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
index 4b08526b0..7a95c76f9 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_SERVERS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SERVERS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_SERVERS \- DNS servers to use
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 b/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
index 7dedd9c50..605f49b9d 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- shuffle IP addresses for hostname
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
index 20b1dd97e..5ddf1e5d8 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- global DNS cache
@@ -58,7 +60,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Deprecated since 7.62.0. Has no function.
+Deprecated since 7.11.1. Function removed in 7.62.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3
index 93880dde7..c9e1da42a 100644
--- a/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DOH_SSL_VERIFYHOST \- verify the host name in the DoH SSL certificate
@@ -47,7 +49,8 @@ Subject Alternate Name field in the certificate matches the host name in the
DoH URL to which you told Curl to connect.
When the \fIverify\fP value is set to 1L it is treated the same as 2L. However
-for consistency with the other VERIFYHOST options we suggest use 2 and not 1.
+for consistency with the other \fIVERIFYHOST\fP options we suggest use 2 and
+not 1.
When the \fIverify\fP value is set to 0L, the connection succeeds regardless of
the names used in the certificate. Use that ability with caution!
diff --git a/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3
index 458a4641c..949c48680 100644
--- a/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DOH_SSL_VERIFYPEER \- verify the DoH SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3
index 97a8ce2d6..bb8bebcfb 100644
--- a/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3
+++ b/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DOH_SSL_VERIFYSTATUS \- verify the DoH SSL certificate's status
diff --git a/docs/libcurl/opts/CURLOPT_DOH_URL.3 b/docs/libcurl/opts/CURLOPT_DOH_URL.3
index d43e4c546..43cfd49aa 100644
--- a/docs/libcurl/opts/CURLOPT_DOH_URL.3
+++ b/docs/libcurl/opts/CURLOPT_DOH_URL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DOH_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
@@ -34,7 +36,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL);
Pass in a pointer to a \fIURL\fP for the DoH server to use for name
resolving. The parameter should be a char * to a null-terminated string which
must be URL-encoded in the following format: "https://host:port/path". It MUST
-specify a HTTPS URL.
+specify an HTTPS URL.
libcurl does not 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
@@ -56,6 +58,12 @@ can be controlled separately via \fICURLOPT_DOH_SSL_VERIFYHOST(3)\fP and
\fICURLOPT_DOH_SSL_VERIFYPEER(3)\fP.
A set \fICURLOPT_OPENSOCKETFUNCTION(3)\fP callback is not inherited.
+.SH "KNOWN BUGS"
+Even when DoH is set to be used with this option, there are still some name
+resolves that are performed without it, using the default name resolver
+mechanism. This includes name resolves done for \fICURLOPT_INTERFACE(3)\fP,
+\fICURLOPT_FTPPORT(3)\fP, a proxy type set to \fBCURLPROXY_SOCKS4\fP or
+\fBCURLPROXY_SOCKS5\fP and probably some more.
.SH DEFAULT
NULL - there is no default DoH URL. If this option is not set, libcurl will use
the default name resolver.
@@ -76,8 +84,8 @@ Added in 7.62.0
Returns CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insufficient
heap space.
-Note that \fIcurl_easy_setopt(3)\fP will not actually parse the given string so
-given a bad DoH URL, curl will not detect a problem until it tries to resolve
-a name with it.
+Note that \fIcurl_easy_setopt(3)\fP will not immediately parse the given
+string so when given a bad DoH URL, libcurl might not detect the problem until
+it later tries to resolve a name with it.
.SH "SEE ALSO"
.BR CURLOPT_VERBOSE "(3), " CURLOPT_RESOLVE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
index 79ac8ba70..39b72f0e3 100644
--- a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_EGDSOCKET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_EGDSOCKET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_EGDSOCKET \- EGD socket path
@@ -31,6 +33,8 @@ CURLOPT_EGDSOCKET \- EGD socket path
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);
.fi
.SH DESCRIPTION
+Deprecated option. It serves no purpose anymore.
+
Pass a char * to the null-terminated path name to the Entropy Gathering Daemon
socket. It will be used to seed the random engine for TLS.
@@ -51,7 +55,10 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-If built with TLS enabled. Only the OpenSSL backend will use this.
+If built with TLS enabled. Only the OpenSSL backend will use this, and only
+with OpenSSL versions before 1.1.0.
+
+This option was deprecated in 7.84.0.
.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.
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
index 432d0e052..0153300d5 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ERRORBUFFER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ERRORBUFFER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ERRORBUFFER \- error buffer for error messages
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
index f5468b871..30aa3e71d 100644
--- a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
index 8bf837058..197fb85cc 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.3
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FAILONERROR 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FAILONERROR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.3 b/docs/libcurl/opts/CURLOPT_FILETIME.3
index 194c8b21c..f01d06309 100644
--- a/docs/libcurl/opts/CURLOPT_FILETIME.3
+++ b/docs/libcurl/opts/CURLOPT_FILETIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FILETIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FILETIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
@@ -39,7 +41,7 @@ argument can be used after a transfer to extract the received time (if any).
.SH DEFAULT
0
.SH PROTOCOLS
-HTTP, FTP, SFTP, FILE
+HTTP(S), FTP(S), SFTP, FILE, SMB(S)
.SH EXAMPLE
.nf
curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
index ac0d09ef0..75a42d6c7 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FNMATCH_DATA 3 "November 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_DATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FNMATCH_DATA \- pointer passed to the fnmatch callback
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
index 29190c225..53cbf56ec 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FNMATCH_FUNCTION 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_FUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard match callback
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
index e44f93d12..2e24d714f 100644
--- a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
+++ b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FOLLOWLOCATION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FOLLOWLOCATION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
index 2b4bdc283..4fb344b6b 100644
--- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
+++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FORBID_REUSE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FORBID_REUSE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
index 3d30fea9f..d203844c6 100644
--- a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
+++ b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FRESH_CONNECT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FRESH_CONNECT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/docs/libcurl/opts/CURLOPT_FTPPORT.3
index 55ff84cc9..250e22056 100644
--- a/docs/libcurl/opts/CURLOPT_FTPPORT.3
+++ b/docs/libcurl/opts/CURLOPT_FTPPORT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTPPORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTPPORT 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
@@ -46,8 +48,8 @@ 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.
+a port or port range have to be in brackets. IPv6 addresses without
+port/range specifier can be in brackets.
Examples with specified ports:
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
index 19e8258e0..e1c1fe365 100644
--- a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTPSSLAUTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTPSSLAUTH 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTPSSLAUTH \- order in which to attempt TLS vs SSL
@@ -53,7 +55,7 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt");
curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_TRY);
/* funny server, ask for SSL before TLS */
- curl_easy_setopt(curl, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_SSL);
+ curl_easy_setopt(curl, CURLOPT_FTPSSLAUTH, (long)CURLFTPAUTH_SSL);
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
index e6f620fdf..b0bf6d8ca 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_ACCOUNT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ACCOUNT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_ACCOUNT \- account info for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
index 3f8adf03c..7b17bdf47 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "July 04, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
@@ -62,4 +64,4 @@ Added in 7.15.5
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), "
+.BR CURLOPT_FTP_SKIP_PASV_IP "(3), " CURLOPT_SERVER_RESPONSE_TIMEOUT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
index ba687621a..d3957e816 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
+CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing directories for FTP and SFTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -50,11 +52,11 @@ 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
+retry the CWD command again if the subsequent \fBMKD\fP command fails. This is
especially useful if you are 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!
+but then another connection does \fBMKD\fP before this connection and thus
+\fBMKD\fP fails but trying CWD works!
.SH DEFAULT
CURLFTP_CREATE_DIR_NONE (0)
.SH PROTOCOLS
@@ -65,7 +67,7 @@ CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/non-existing/new.txt");
curl_easy_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS,
- CURLFTP_CREATE_DIR_RETRY);
+ (long)CURLFTP_CREATE_DIR_RETRY);
ret = curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
index 122036737..15d6dcbb7 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_FILEMETHOD 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_FILEMETHOD 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
@@ -59,7 +61,7 @@ CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/1/2/3/4/new.txt");
curl_easy_setopt(curl, CURLOPT_FTP_FILEMETHOD,
- CURLFTPMETHOD_SINGLECWD);
+ (long)CURLFTPMETHOD_SINGLECWD);
ret = curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
index 315a63694..4e97f7466 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_SKIP_PASV_IP 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
index 5134a0bd0..ac86b8ea4 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_SSL_CCC 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SSL_CCC 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
@@ -54,7 +56,7 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt");
curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_CONTROL);
/* go back to clear-text FTP after authenticating */
- curl_easy_setopt(curl, CURLOPT_FTP_SSL_CCC, CURLFTPSSL_CCC_ACTIVE);
+ curl_easy_setopt(curl, CURLOPT_FTP_SSL_CCC, (long)CURLFTPSSL_CCC_ACTIVE);
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
index d426e623a..1daa363c6 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_EPRT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPRT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_EPRT \- use EPRT for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
index 40297a149..4344e5f2f 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_EPSV 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPSV 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_EPSV \- use EPSV for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
index 20275ef98..d7accb02d 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_PRET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_PRET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_PRET \- use PRET for FTP
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
index 0af78e9ea..08c5e6f3d 100644
--- a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
+++ b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_GSSAPI_DELEGATION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_GSSAPI_DELEGATION 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_GSSAPI_DELEGATION \- allowed GSS-API delegation
@@ -36,7 +38,7 @@ allow unconditional GSSAPI credential delegation. The delegation is disabled
by default since 7.21.7. Set the parameter to
\fBCURLGSSAPI_DELEGATION_POLICY_FLAG\fP 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
+GSS-API implementation and the definition of \fIGSS_C_DELEG_POLICY_FLAG\fP was
available at compile-time.
.SH DEFAULT
CURLGSSAPI_DELEGATION_NONE
@@ -50,7 +52,7 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
/* delegate if okayed by policy */
curl_easy_setopt(curl, CURLOPT_GSSAPI_DELEGATION,
- CURLGSSAPI_DELEGATION_POLICY_FLAG);
+ (long)CURLGSSAPI_DELEGATION_POLICY_FLAG);
ret = curl_easy_perform(curl);
}
.fi
diff --git a/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
index a502a062c..d66050d63 100644
--- a/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
+CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for IPv6 for happy eyeballs
.SH SYNOPSIS
.nf
#include <curl/curl.h>
diff --git a/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 b/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
index 94a329651..121046892 100644
--- a/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
+++ b/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HAPROXYPROTOCOL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HAPROXYPROTOCOL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.3 b/docs/libcurl/opts/CURLOPT_HEADER.3
index 330395128..4212c1dcb 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HEADER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
index fe4593069..9ffa84c3c 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADERDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADERDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
index 62d6740de..989d7825b 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADERFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADERFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
@@ -118,4 +120,5 @@ Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
+.BR curl_easy_header "(3), "
.BR CURLOPT_HEADERDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
index e472bf8ce..4d68a1d33 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.3
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADEROPT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADEROPT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADEROPT \- send HTTP headers to both proxy and host or separately
diff --git a/docs/libcurl/opts/CURLOPT_HSTS.3 b/docs/libcurl/opts/CURLOPT_HSTS.3
index 202db91e8..49b5340f3 100644
--- a/docs/libcurl/opts/CURLOPT_HSTS.3
+++ b/docs/libcurl/opts/CURLOPT_HSTS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HSTS 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HSTS \- HSTS cache file name
@@ -49,8 +51,8 @@ physical line. Each line in the file has the following format:
[host] [stamp]
[host] is the domain name for the entry and the name is dot-prefixed if it is
-a includeSubDomain entry (if the entry is valid for all subdmains to the name
-as well or only for the exact name).
+an entry valid for all subdomains to the name as well or only for the exact
+name.
[stamp] is the time (in UTC) when the entry expires and it uses the format
\&"YYYYMMDD HH:MM:SS".
diff --git a/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3 b/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3
index b57e16745..507f6f63c 100644
--- a/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3
+++ b/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HSTSREADDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTSREADDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HSTSREADDATA \- pointer passed to the HSTS read callback
diff --git a/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3
index 9fbb567da..c6c7590d7 100644
--- a/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HSTSREADFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTSREADFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
@@ -28,6 +30,13 @@ CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
.nf
#include <curl/curl.h>
+struct curl_hstsentry {
+ char *name;
+ size_t namelen;
+ unsigned int includeSubDomains:1;
+ char expire[18]; /* YYYYMMDD HH:MM:SS [null-terminated] */
+};
+
CURLSTScode hstsread(CURL *easy, struct curl_hstsentry *sts, void *userp);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSREADFUNCTION, hstsread);
@@ -42,10 +51,10 @@ Set the \fIuserp\fP argument with the \fICURLOPT_HSTSREADDATA(3)\fP option or
it will be NULL.
When this callback is invoked, the \fIsts\fP pointer points to a populated
-struct: Copy the host name to 'name' (no longer than 'namelen' bytes). Make it
-null-terminated. Set 'includeSubDomains' to TRUE or FALSE. Set 'expire' to a
-date stamp or a zero length string for *forever* (wrong date stamp format
-might cause the name to not get accepted)
+struct: Copy the host name to \fIname\fP (no longer than \fInamelen\fP
+bytes). Make it null-terminated. Set \fIincludeSubDomains\fP to TRUE or
+FALSE. Set \fIexpire\fP to a date stamp or a zero length string for *forever*
+(wrong date stamp format might cause the name to not get accepted)
The callback should return \fICURLSTS_OK\fP if it returns a name and is
prepared to be called again (for another host) or \fICURLSTS_DONE\fP if it has
diff --git a/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3 b/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3
index 295984b1d..89d41c3b7 100644
--- a/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HSTSWRITEDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTSWRITEDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HSTSWRITEDATA \- pointer passed to the HSTS write callback
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSWRITEDATA, void *pointer);
.SH DESCRIPTION
Data \fIpointer\fP to pass to the HSTS write function. If you use the
\fICURLOPT_HSTSWRITEFUNCTION(3)\fP option, this is the pointer you will get as
-input in the 4th argument to the callback.
+input in the fourth argument to the callback.
This option does not enable HSTS, you need to use \fICURLOPT_HSTS_CTRL(3)\fP to
do that.
diff --git a/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3
index 677af1899..1e438597c 100644
--- a/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HSTSWRITEFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTSWRITEFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
@@ -28,6 +30,18 @@ CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
.nf
#include <curl/curl.h>
+struct curl_hstsentry {
+ char *name;
+ size_t namelen;
+ unsigned int includeSubDomains:1;
+ char expire[18]; /* YYYYMMDD HH:MM:SS [null-terminated] */
+};
+
+struct curl_index {
+ size_t index; /* the provided entry's "index" or count */
+ size_t total; /* total number of entries to save */
+};
+
CURLSTScode hstswrite(CURL *easy, struct curl_hstsentry *sts,
struct curl_index *count, void *userp);
@@ -44,10 +58,10 @@ Set the \fIuserp\fP argument with the \fICURLOPT_HSTSWRITEDATA(3)\fP option or
it will be NULL.
When the callback is invoked, the \fIsts\fP pointer points to a populated
-struct: Read the host name to 'name' (it is 'namelen' bytes long and null
-terminated. The 'includeSubDomains' field is non-zero if the entry matches
-subdomains. The 'expire' string is a date stamp null-terminated string using
-the syntax YYYYMMDD HH:MM:SS.
+struct: Read the host name to 'name' (it is \fInamelen\fP bytes long and null
+terminated. The \fIincludeSubDomains\fP field is non-zero if the entry matches
+subdomains. The \fIexpire\fP string is a date stamp null-terminated string
+using the syntax YYYYMMDD HH:MM:SS.
The callback should return \fICURLSTS_OK\fP if it succeeded and is prepared to
be called again (for another host) or \fICURLSTS_DONE\fP if there's nothing
diff --git a/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3 b/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3
index 594c454c5..3bf4e4be9 100644
--- a/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3
+++ b/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2020, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022, 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HSTS_CTRL 3 "September 06, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTS_CTRL 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HSTS_CTRL \- control HSTS behavior
@@ -56,7 +58,7 @@ HTTPS and HTTP
.nf
CURL *curl = curl_easy_init();
if(curl) {
- curl_easy_setopt(curl, CURLOPT_HSTS_CTRL, CURLHSTS_ENABLE);
+ curl_easy_setopt(curl, CURLOPT_HSTS_CTRL, (long)CURLHSTS_ENABLE);
curl_easy_perform(curl);
}
.fi
diff --git a/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 b/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
index 37f61c2c4..924c3535b 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2019, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP09_ALLOWED 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP09_ALLOWED 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP09_ALLOWED \- allow HTTP/0.9 response
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);
.SH DESCRIPTION
Pass the long argument \fIallowed\fP set to 1L to allow HTTP/0.9 responses.
-A HTTP/0.9 response is a server response entirely without headers and only a
+An HTTP/0.9 response is a server response entirely without headers and only a
body. You can connect to lots of random TCP services and still get a response
that curl might consider to be HTTP/0.9!
.SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
index 38754d372..ea95976c6 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP200ALIASES 3 "November 01, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP200ALIASES 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP200ALIASES \- alternative matches for HTTP 200 OK
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
index 333e79b78..c9670b2a4 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPAUTH 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPAUTH 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPAUTH \- HTTP server authentication methods to try
@@ -77,11 +79,11 @@ 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
+is specified at compile time but is typically \fB/usr/bin/ntlm_auth\fP.
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
+kill it when complete, calling \fBwaitpid()\fP 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
@@ -97,7 +99,7 @@ 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
+value to force libcurl to probe for unrestricted auth and if not, only that
single auth algorithm is acceptable.
.IP CURLAUTH_AWS_SIGV4
provides AWS V4 signature authentication on HTTPS header
@@ -113,7 +115,7 @@ if(curl) {
CURLcode ret;
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
/* allow whatever auth the server speaks */
- curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
+ curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY);
curl_easy_setopt(curl, CURLOPT_USERPWD, "james:bond");
ret = curl_easy_perform(curl);
}
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/docs/libcurl/opts/CURLOPT_HTTPGET.3
index dffdb25f8..6aee9de68 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPGET.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPGET.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPGET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPGET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
index ac3a0aba3..a7e4913de 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPHEADER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPHEADER 3 "September 28, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPHEADER \- set of HTTP headers
@@ -36,6 +38,11 @@ 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!
+When used within an IMAP or SMTP request to upload a MIME mail, the given
+header list establishes the document-level MIME headers to prepend to the
+uploaded document described by \fICURLOPT_MIMEPOST(3)\fP. This does not affect
+raw mail uploads.
+
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
@@ -44,16 +51,15 @@ 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).
+right side of the colon), use the form 'name;' (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
+The first line in an HTTP 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.
@@ -65,14 +71,14 @@ 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
+The most commonly replaced HTTP headers have "shortcuts" in the options
\fICURLOPT_COOKIE(3)\fP, \fICURLOPT_USERAGENT(3)\fP and
\fICURLOPT_REFERER(3)\fP. We recommend using those.
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 SPECIFIC HEADERS
+.SH SPECIFIC HTTP HEADERS
Setting some specific headers will cause libcurl to act differently.
.IP "Host:"
The specified host name will be used for cookie matching if the cookie engine
@@ -82,6 +88,24 @@ field and Host: will not be sent at all over the wire.
.IP "Transfer-Encoding: chunked"
Tells libcurl the upload is to be done using this chunked encoding instead of
providing the Content-Length: field in the request.
+.SH SPECIFIC MIME HEADERS
+When used to build a MIME e-mail for IMAP or SMTP, the following
+document-level headers can be set to override libcurl-generated values:
+.IP "Mime-Version:"
+Tells the parser at the receiving site how to interpret the MIME framing.
+It defaults to "1.0" and should normally not be altered.
+.IP "Content-Type:"
+Indicates the document's global structure type. By default, libcurl sets it
+to "multipart/mixed", describing a document made of independent parts. When a
+MIME mail is only composed of alternative representations of the same data
+(i.e.: HTML and plain text), this header must be set to "multipart/alternative".
+In all cases the value must be of the form "multipart/*" to respect the
+document structure and may not include the "boundary=" parameter.
+.P
+Other specific headers that do not have a libcurl default value but are
+strongly desired by mail delivery and user agents should also be included.
+These are "From:", "To:", "Date:" and "Subject:" among others and their
+presence and value is generally checked by anti-spam utilities.
.SH SECURITY CONCERNS
By default, this option makes libcurl send the given headers in all HTTP
requests done by this handle. You should therefore use this option with
@@ -108,7 +132,7 @@ permitted with the \fICURLOPT_UNRESTRICTED_AUTH(3)\fP option.
.SH DEFAULT
NULL
.SH PROTOCOLS
-HTTP
+HTTP, IMAP and SMTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
@@ -125,14 +149,15 @@ if(curl) {
curl_easy_perform(curl);
- curl_slist_free_all(list); /* free the list again */
+ curl_slist_free_all(list); /* free the list */
}
.fi
.SH AVAILABILITY
-As long as HTTP is enabled
+As long as HTTP is enabled. Use in MIME mail added in 7.56.0.
.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), " CURLOPT_HEADER "(3)"
+.BR CURLOPT_PROXYHEADER "(3), " CURLOPT_HEADER "(3), "
+.BR CURLOPT_MIMEPOST "(3), " curl_mime_init "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
index 60419e8be..edd47709d 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPOST.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPPOST 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPOST 3 "October 03, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPPOST \- multipart formpost content
@@ -31,10 +33,12 @@ CURLOPT_HTTPPOST \- multipart formpost content
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
+\fBThis option is deprecated.\fP Use \fICURLOPT_MIMEPOST(3)\fP instead.
+
+Tells libcurl you want a \fBmultipart/formdata\fP 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
+Pass a pointer to a linked list of \fIcurl_httppost\fP 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 as long as the curl
transfer is alive and is using it.
@@ -43,9 +47,6 @@ 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.
-
-This option is deprecated! Do not use it. Use \fICURLOPT_MIMEPOST(3)\fP
-instead after having prepared mime data.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
index 1d4809a49..276a9ff4c 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPPROXYTUNNEL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPROXYTUNNEL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
index 59b20c95e..5953348cd 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_CONTENT_DECODING 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- HTTP content decoding control
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
index 06c113b5a..4e85af24a 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "October 22, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- HTTP transfer decoding control
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
index e19eb66ce..1890bd4f3 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_VERSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_VERSION 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_VERSION \- HTTP protocol version to use
@@ -49,6 +51,10 @@ Enforce HTTP 1.1 requests.
Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.1 if HTTP 2 cannot be
negotiated with the server. (Added in 7.33.0)
+When libcurl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or
+higher even though that is required by the specification. A user can add this
+version requirement with \fICURLOPT_SSLVERSION(3)\fP.
+
The alias \fICURL_HTTP_VERSION_2\fP was added in 7.43.0 to better reflect the
actual protocol name.
.IP CURL_HTTP_VERSION_2TLS
@@ -80,7 +86,8 @@ CURL *curl = curl_easy_init();
if(curl) {
CURLcode ret;
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
- curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
+ curl_easy_setopt(curl, CURLOPT_HTTP_VERSION,
+ (long)CURL_HTTP_VERSION_2TLS);
ret = curl_easy_perform(curl);
if(ret == CURLE_HTTP_RETURNED_ERROR) {
/* an HTTP response error problem */
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
index 9b498727b..c5776789d 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "August 23, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
index 4ac7502e6..286737a54 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INFILESIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INFILESIZE \- size of the input file to send off
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
index 2d687f4f3..820760f3c 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INFILESIZE_LARGE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INFILESIZE_LARGE \- size of the input file to send off
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_INTERFACE.3
index f217b8e67..220e139f3 100644
--- a/docs/libcurl/opts/CURLOPT_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_INTERFACE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERFACE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERFACE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
index 34ccb850e..2735da22c 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERLEAVEDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERLEAVEDATA \- pointer passed to RTSP interleave callback
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
index 3bde839df..9f7e4597b 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERLEAVEFUNCTION 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback for RTSP interleaved data
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
index 5560f2eed..ee30d42bc 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IOCTLDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLDATA 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_IOCTLDATA \- pointer passed to I/O callback
@@ -56,7 +58,7 @@ static curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp)
}
.fi
.SH AVAILABILITY
-Added in 7.12.3
+Added in 7.12.3. Deprecated since 7.18.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
index c2528da8b..e2b81d8ae 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IOCTLFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLFUNCTION 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
@@ -86,7 +88,7 @@ static curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp)
}
.fi
.SH AVAILABILITY
-Added in 7.12.3
+Added in 7.12.3. Deprecated since 7.18.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
index d568522be..65481fd58 100644
--- a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IPRESOLVE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_IPRESOLVE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_IPRESOLVE \- IP protocol version to use
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
index 5eff62869..39bd70e64 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ISSUERCERT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ISSUERCERT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3 b/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3
index 06954799c..388af2e3f 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ISSUERCERT_BLOB 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ISSUERCERT_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob
diff --git a/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 b/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
index 8d37e291f..f2b8b2c1e 100644
--- a/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
+++ b/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
index 28e30f771..18616a98f 100644
--- a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KEYPASSWD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_KEYPASSWD 3 "October 11, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_KEYPASSWD \- passphrase to private key
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);
.SH DESCRIPTION
Pass a pointer to a null-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
+\fICURLOPT_SSH_PRIVATE_KEYFILE(3)\fP private key. You never need a pass
phrase to load a certificate but you need one to load your private key.
The application does not have to keep the string around after setting this
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
index b6af0aa52..15551984d 100644
--- a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
+++ b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KRBLEVEL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_KRBLEVEL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_KRBLEVEL \- FTP kerberos security level
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
index 238acf92a..ce7ad04a3 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORT.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOCALPORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOCALPORT \- local port number to use for socket
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
index 6d1505323..cc105ebe6 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOCALPORTRANGE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORTRANGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
index 3d1a9ee73..f7e1bb221 100644
--- a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOGIN_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOGIN_OPTIONS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOGIN_OPTIONS \- login options
@@ -35,7 +37,7 @@ Pass a char * as parameter, which should be pointing to the null-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
+the IETF draft \fBdraft-earhart-url-smtp-00.txt\fP.
\fICURLOPT_LOGIN_OPTIONS(3)\fP can be used to set protocol specific login
options, such as the preferred authentication mechanism via "AUTH=NTLM" or
@@ -47,7 +49,7 @@ option.
.SH DEFAULT
NULL
.SH PROTOCOLS
-Only IMAP, POP3 and SMTP support login options.
+Only IMAP, LDAP, POP3 and SMTP support login options.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
@@ -59,7 +61,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.34.0
+Added in 7.34.0. Support for OpenLDAP added in 7.82.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.
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
index aa58b2d85..fb81dae0b 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOW_SPEED_LIMIT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- low speed limit in bytes per second
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
index 029598245..566373994 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOW_SPEED_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOW_SPEED_TIME \- low speed limit time period
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
index 357d89b86..1bf2296ab 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_AUTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_AUTH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
index bfcdffbf1..7d0250efa 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_FROM 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_FROM 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
index 6aa8a2cbc..c14ef6c39 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_RCPT 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_RCPT 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
@@ -42,12 +44,13 @@ 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 an address verification (\fBVRFY\fP 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".
+When performing a mailing list expand (\fBEXPN\fP command), each recipient
+should be specified using the mailing list name, such as "Friends" or
+"London-Office".
.SH DEFAULT
NULL
.SH PROTOCOLS
@@ -67,7 +70,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.20.0. The VRFY and EXPN logic was added in 7.34.0
+Added in 7.20.0. The \fBVRFY\fP and \fBEXPN\fP 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"
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3 b/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3
index 81557e2f8..ec501fe52 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "July 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_RCPT_ALLLOWFAILS \- allow RCPT TO command to fail for some recipients
diff --git a/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 b/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3
index 81404aae8..cb612e06a 100644
--- a/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3
+++ b/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXAGE_CONN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXAGE_CONN 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
@@ -28,10 +30,10 @@ CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.nf
#include <curl/curl.h>
-CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long age);
.fi
.SH DESCRIPTION
-Pass a long as parameter containing \fImaxage\fP - the maximum time in seconds
+Pass a long as parameter containing \fIage\fP - the maximum time in seconds
that you allow an existing connection to have been idle to be considered for
reuse for this request.
@@ -41,10 +43,9 @@ reuse. The \fICURLOPT_MAXAGE_CONN(3)\fP limit prevents libcurl from trying too
old connections for reuse, since old connections have a high risk of not
working and thus trying them is a performance loss and sometimes service loss
due to the difficulties to figure out the situation. If a connection is found
-in the cache that is older than this set \fImaxage\fP, it will instead be
-closed.
+in the cache that is older than this set \fIage\fP, it will instead be closed.
.SH DEFAULT
-Default maxage is 118 seconds.
+Default maximum age is set to 118 seconds.
.SH PROTOCOLS
All
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
index 92d4b43aa..084a7c1e8 100644
--- a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXCONNECTS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXCONNECTS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
index 37a2201df..20342f842 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXFILESIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
index fda432e9c..0510794f7 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXFILESIZE_LARGE 3 "July 23, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
diff --git a/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 b/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3
index d1e28bdf5..bfe6829f8 100644
--- a/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3
+++ b/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXLIFETIME_CONN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXLIFETIME_CONN 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXLIFETIME_CONN \- max lifetime (since creation) allowed for reusing a connection
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
index a99362bac..7b5b71737 100644
--- a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXREDIRS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXREDIRS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
index 965211ab8..5007136a0 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
index 292f5444a..e2e705c32 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
diff --git a/docs/libcurl/opts/CURLOPT_MIMEPOST.3 b/docs/libcurl/opts/CURLOPT_MIMEPOST.3
index 3e101b95e..cbc115a10 100644
--- a/docs/libcurl/opts/CURLOPT_MIMEPOST.3
+++ b/docs/libcurl/opts/CURLOPT_MIMEPOST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MIMEPOST 3 "December 17, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MIMEPOST 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MIMEPOST \- send data from mime structure
@@ -38,13 +40,29 @@ This setting is supported by the HTTP protocol to post forms and by the
SMTP and IMAP protocols to provide the email data to send/upload.
This option is the preferred way of posting an HTTP form, replacing and
-extending the deprecated \fICURLOPT_HTTPPOST(3)\fP option.
+extending the \fICURLOPT_HTTPPOST(3)\fP option.
.SH PROTOCOLS
HTTP, SMTP, IMAP.
.SH EXAMPLE
-Using this option implies the use of several mime structure building
-functions: see https://curl.se/libcurl/c/smtp-mime.html for a complete
-example.
+.nf
+ curl_mime *multipart = curl_mime_init(handle);
+ curl_mimepart *part = curl_mime_addpart(multipart);
+ curl_mime_name(part, "name");
+ curl_mime_data(part, "daniel", CURL_ZERO_TERMINATED);
+ part = curl_mime_addpart(multipart);
+ curl_mime_name(part, "project");
+ curl_mime_data(part, "curl", CURL_ZERO_TERMINATED);
+ part = curl_mime_addpart(multipart);
+ curl_mime_name(part, "logotype-image");
+ curl_mime_filedata(part, "curl.png");
+
+ /* Set the form info */
+ curl_easy_setopt(handle, CURLOPT_MIMEPOST, multipart);
+
+ curl_easy_perform(handle); /* post away! */
+
+ curl_mime_free(multipart); /* free the post data */
+.fi
.SH AVAILABILITY
Added in 7.56.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3
index 9d2b725af..a753dfa9e 100644
--- a/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MIME_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MIME_OPTIONS 3 "September 02, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MIME_OPTIONS \- set MIME option flags
@@ -46,7 +48,7 @@ carriage return and line feed to %22, %0D and %0A respectively.
Before version 7.81.0, percent-encoding was never applied.
HTTP browsers used to do backslash-escaping in the past but have over time
-transitioned to use percent-encoding. This option allows to address
+transitioned to use percent-encoding. This option allows one to address
server-side applications that have not yet have been converted.
As an example, consider field or file name \fIstrange\\name"kind\fP.
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.3 b/docs/libcurl/opts/CURLOPT_NETRC.3
index f27c8b921..97f436d8a 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NETRC 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NETRC 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NETRC \- enable use of .netrc
@@ -33,9 +35,13 @@ 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. On Windows,
-libcurl will use the file as \fI%HOME%/_netrc\fP, but you can also tell
-libcurl a different file name to use with \fICURLOPT_NETRC_FILE(3)\fP.
+and passwords in the URL supplied with \fICURLOPT_URL(3)\fP.
+
+On Windows, libcurl will use the file as \fI%HOME%/_netrc\fP. If \fI%HOME%\fP
+is not set on Windows, libcurl falls back to \fI%USERPROFILE%\fP.
+
+You can also tell libcurl a different file name to use with
+\fICURLOPT_NETRC_FILE(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
@@ -47,24 +53,53 @@ and similar things are not 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 the \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
+\fIlevel\fP is a long that should be set to one of the values described below.
+.IP "CURL_NETRC_IGNORED (0)"
+The library will ignore the \fI.netrc\fP file. This is the default.
+.IP "CURL_NETRC_OPTIONAL (1)"
+The use of the \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.
+.IP "CURL_NETRC_REQUIRED (2)"
+The use of the \fI.netrc\fP file is required, and any credential information
+present in the URL is ignored. 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.
+.SH FILE FORMAT
+The \fB.netrc\fP file format is simple: you specify lines with a machine name
+and follow the login and password that are associated with that machine.
-Undefined values of the option will have this effect.
-.IP CURL_NETRC_IGNORED
-The library will ignore the \fI~/.netrc\fP file.
+Each field is provided as a sequence of letters that ends with a space or
+newline. Starting in 7.84.0, libcurl also supports quoted strings. They start
+and end with double quotes and support the escaped special letters \\\", \\n,
+\\r, and \\t. Quoted strings are the only way a space character can be used in
+a user name or password.
-This is the default.
-.IP CURL_NETRC_REQUIRED
-The use of the \fI~/.netrc\fP file is required, and information in the URL is
-to be ignored. 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.
+.IP "machine <name>"
+Provides credentials for a host called \fBname\fP. libcurl searches the .netrc
+file for a machine token that matches the host name specified in the URL. Once
+a match is made, the subsequent tokens are processed, stopping when the end of
+file is reached or another "machine" is encountered.
+.IP default
+This is the same as "machine" name except that default matches any name. There
+can be only one default token, and it must be after all machine tokens. To
+provide a default anonymous login for hosts that are not otherwise matched,
+add a line similar to this in the end:
+
+ default login anonymous password user@domain
+.IP "login <name>"
+The user name string for the remote machine.
+.IP "password <secret>"
+Supply a password. If this token is present, curl will supply the specified
+string if the remote server requires a password as part of the login process.
+Note that if this token is present in the .netrc file you really should make
+sure the file is not readable by anyone besides the user.
+.IP "macdef <name>"
+Define a macro. This feature is not supported by libcurl. In order for the
+rest of the .netrc to still work fine, libcurl will properly skip every
+definition done with "macdef" that it finds.
.SH DEFAULT
CURL_NETRC_IGNORED
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
index b5d2b0cca..f4a5d99a9 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NETRC_FILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NETRC_FILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
index 81fd272c3..d684a4a39 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
index be86774b8..2fde58ce3 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NEW_FILE_PERMS 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NEW_FILE_PERMS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.3 b/docs/libcurl/opts/CURLOPT_NOBODY.3
index 762ac305d..304bf4c54 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.3
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOBODY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NOBODY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
@@ -36,7 +38,7 @@ 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.
-For HTTP operations when \fICURLOPT_NOBODY(3)\fP has been set, unsetting the
+For HTTP operations when \fICURLOPT_NOBODY(3)\fP has been set, disabling this
option (with 0) will make it a GET again - only if the method is still set to
be HEAD. The proper way to get back to a GET request is to set
\fICURLOPT_HTTPGET(3)\fP and for other methods, use the POST or UPLOAD
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
index 83db6f102..72a9b9cb3 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOPROGRESS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NOPROGRESS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/docs/libcurl/opts/CURLOPT_NOPROXY.3
index ceab2d55a..149eaaceb 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROXY.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOPROXY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NOPROXY 3 "October 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
@@ -36,26 +38,22 @@ 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.
+hostname itself. For example, "ample.com" would match ample.com, ample.com:80,
+and www.ample.com, but not www.example.com or ample.com.org.
-If the name in the noproxy list has a leading period, it is a domain match
-against the provided host name. This way ".example.com" will switch off proxy
-use for both "www.example.com" as well as for "foo.example.com".
+If the name in the \fInoproxy\fP list has a leading period, it is a domain
+match against the provided host name. This way ".example.com" will switch off
+proxy use for both "www.example.com" as well as for "foo.example.com".
-Setting the noproxy string to "" (an empty string) will explicitly enable the
-proxy for all host names, even if there is an environment variable set for it.
+Setting the \fInoproxy\fP string to "" (an empty string) will explicitly
+enable the proxy for all host names, even if there is an environment variable
+set for it.
Enter IPv6 numerical addresses in the list of host names without enclosing
brackets:
"example.com,::1,localhost"
-IPv6 numerical addresses are compared as strings, so they will only match if
-the representations are the same: "::1" is the same as "::0:1" but they do not
-match.
-
The application does not have to keep the string around after setting this
option.
.SH "Environment variables"
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
index cfd4150af..7a389ad6c 100644
--- a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
+++ b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOSIGNAL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NOSIGNAL 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
@@ -45,10 +47,10 @@ 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
+effort to never cause such SIGPIPE signals 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
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
index 1a1089de8..edfbe90c4 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_OPENSOCKETDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_OPENSOCKETDATA \- pointer passed to open socket callback
@@ -32,7 +34,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);
.fi
.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.
+argument in the open socket callback set with
+\fICURLOPT_OPENSOCKETFUNCTION(3)\fP.
.SH DEFAULT
The default value of this parameter is NULL.
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
index 45739c2db..cc7b86101 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_OPENSOCKETFUNCTION 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- callback for opening socket
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PASSWORD.3
index 8a29c479b..73ba6b508 100644
--- a/docs/libcurl/opts/CURLOPT_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PASSWORD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PASSWORD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PASSWORD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
index 7c51a710f..5063d46cd 100644
--- a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PATH_AS_IS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PATH_AS_IS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
index cfb7bbe6b..afeeabf0d 100644
--- a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PINNEDPUBLICKEY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PINNEDPUBLICKEY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PINNEDPUBLICKEY \- pinned public key
@@ -105,21 +107,21 @@ PEM/DER support:
7.43.0: NSS and wolfSSL
- 7.47.0: mbedtls
+ 7.47.0: mbedTLS
- 7.54.1: SecureTransport on macOS 10.7+/iOS 10+
+ 7.54.1: Secure Transport on macOS 10.7+/iOS 10+
- 7.58.1: SChannel
+ 7.58.1: Schannel
sha256 support:
7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL
- 7.47.0: mbedtls
+ 7.47.0: mbedTLS
- 7.54.1: SecureTransport on macOS 10.7+/iOS 10+
+ 7.54.1: Secure Transport on macOS 10.7+/iOS 10+
- 7.58.1: SChannel Windows XP SP3+
+ 7.58.1: Schannel Windows XP SP3+
Other SSL backends not supported.
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
index 6fefb20e1..2f05d4dfb 100644
--- a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PIPEWAIT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PIPEWAIT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
diff --git a/docs/libcurl/opts/CURLOPT_PORT.3 b/docs/libcurl/opts/CURLOPT_PORT.3
index 7c28730fe..e149cb2a3 100644
--- a/docs/libcurl/opts/CURLOPT_PORT.3
+++ b/docs/libcurl/opts/CURLOPT_PORT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PORT 3 "July 04, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PORT \- remote port number to connect to
@@ -31,6 +33,9 @@ CURLOPT_PORT \- remote port number to connect to
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
.fi
.SH DESCRIPTION
+We discourage using this option since its scope is not obvious and hard to
+predict. Set the preferred port number in the URL instead.
+
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.
@@ -38,10 +43,12 @@ 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.
+While this option accepts a 'long', a port number is an unsigned 16 bit number
+and therefore using a port number lower than zero or over 65535 will cause a
+\fBCURLE_BAD_FUNCTION_ARGUMENT\fP error.
.SH DEFAULT
-By default this is 0 which makes it not used.
+By default this is 0 which makes it not used. This also makes port number zero
+impossible to set with this API.
.SH PROTOCOLS
Used for all protocols that speak to a port number.
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_POST.3 b/docs/libcurl/opts/CURLOPT_POST.3
index 06304c592..bbd211874 100644
--- a/docs/libcurl/opts/CURLOPT_POST.3
+++ b/docs/libcurl/opts/CURLOPT_POST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POST \- make an HTTP POST
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
index c774432fe..6fa7b5917 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDS 3 "October 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDS \- data to POST to server
@@ -34,19 +36,21 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
Pass a char * as parameter, pointing to the full data to send in an 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.
+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 behavior 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.
+This POST is a normal \fBapplication/x-www-form-urlencoded\fP 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.
-You can use \fIcurl_easy_escape(3)\fP to url-encode your data, if necessary. It
-returns a pointer to an encoded string that can be passed as \fIpostdata\fP.
+You can use \fIcurl_easy_escape(3)\fP to URL encode your data, if
+necessary. It returns a pointer to an encoded string that can be passed as
+\fIpostdata\fP.
Using \fICURLOPT_POSTFIELDS(3)\fP implies setting \fICURLOPT_POST(3)\fP to 1.
@@ -55,9 +59,9 @@ the POST data from the read callback. If you want to send a zero-byte POST set
\fICURLOPT_POSTFIELDS(3)\fP to an empty string, or set \fICURLOPT_POST(3)\fP to
1 and \fICURLOPT_POSTFIELDSIZE(3)\fP to 0.
-libcurl will use assume this option points to a nul-terminated string unless
+libcurl will use assume this option points to a null-terminated string unless
you also set \fICURLOPT_POSTFIELDSIZE(3)\fP to specify the length of the
-provided data, which then is strictly required if you want to send off nul
+provided data, which then is strictly required if you want to send off null
bytes included in the data.
Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header,
@@ -65,8 +69,8 @@ and libcurl will add that header automatically if the POST is either known to
be larger than 1MB or if the expected size is unknown. 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.
+To make \fBmultipart/formdata\fP posts, check out the
+\fICURLOPT_MIMEPOST(3)\fP option combined with \fIcurl_mime_init(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
@@ -94,3 +98,4 @@ Always
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_POSTFIELDSIZE "(3), " CURLOPT_READFUNCTION "(3), "
+.BR CURLOPT_MIMEPOST "(3), " CURLOPT_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
index 170e42b4b..6c5a72842 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDSIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
index 53a3e32aa..8f972525c 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
index d2e9cba84..c1cc1082f 100644
--- a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTQUOTE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTQUOTE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
index 62f4593ed..0e1fb8a56 100644
--- a/docs/libcurl/opts/CURLOPT_POSTREDIR.3
+++ b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTREDIR 3 "December 31, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTREDIR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
index 133076fb1..2f59d6ee9 100644
--- a/docs/libcurl/opts/CURLOPT_PREQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PREQUOTE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PREQUOTE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
@@ -38,6 +40,9 @@ 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.
+These commands are not performed when a directory listing is performed, only
+for file transfers.
+
While \fICURLOPT_QUOTE(3)\fP and \fICURLOPT_POSTQUOTE(3)\fP work for SFTP,
this option does not.
.SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_PREREQDATA.3 b/docs/libcurl/opts/CURLOPT_PREREQDATA.3
index 82f249cac..0a5d75402 100644
--- a/docs/libcurl/opts/CURLOPT_PREREQDATA.3
+++ b/docs/libcurl/opts/CURLOPT_PREREQDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2021, Max Dymond, <max.dymond@microsoft.com>, et al.
+.\" * Copyright (C) 2022, Max Dymond, <max.dymond@microsoft.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
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PREREQDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PREREQDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PREREQDATA \- pointer passed to the pre-request callback
diff --git a/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3 b/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3
index e2c460232..05cda91b5 100644
--- a/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2021, Max Dymond, <max.dymond@microsoft.com>, et al.
+.\" * Copyright (C) 2022 - 2022, Max Dymond, <max.dymond@microsoft.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
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PREREQFUNCTION 3 "November 04, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PREREQFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PREREQFUNCTION \- user callback called when a connection has been
@@ -53,28 +55,27 @@ before a GET/HEAD/POST/etc request has been sent.
This function may be called multiple times if redirections are enabled and are
being followed (see \fICURLOPT_FOLLOWLOCATION(3)\fP).
-This function is passed the following information:
+The callback function must return \fICURL_PREREQFUNC_OK\fP on success, or
+\fICURL_PREREQFUNC_ABORT\fP to cause the transfer to fail.
+
+This function is passed the following arguments:
.IP conn_primary_ip
-A nul-terminated pointer to a C string containing the primary IP of the remote
-server established with this connection. For FTP, this is the IP for the control
-connection. IPv6 addresses are represented without surrounding brackets.
+A null-terminated pointer to a C string containing the primary IP of the
+remote server established with this connection. For FTP, this is the IP for
+the control connection. IPv6 addresses are represented without surrounding
+brackets.
.IP conn_local_ip
-A nul-terminated pointer to a C string containing the originating IP for this
+A null-terminated pointer to a C string containing the originating IP for this
connection. IPv6 addresses are represented without surrounding brackets.
.IP conn_primary_port
The primary port number on the remote server established with this connection.
For FTP, this is the port for the control connection. This can be a TCP or a
-UDP port number dependending on the protocol.
+UDP port number depending on the protocol.
.IP conn_local_port
-The originating port number for this connection. This can be a TCP or a UDP port
-number dependending on the protocol.
-.RE
-
-\fIclientp\fP is the pointer you set with \fICURLOPT_PREREQDATA(3)\fP.
-
-The callback function must return \fICURL_PREREQFUNC_OK\fP on success, or
-\fICURL_PREREQFUNC_ABORT\fP to cause the transfer to fail.
-
+The originating port number for this connection. This can be a TCP or a UDP
+port number depending on the protocol.
+.IP clientp
+The pointer you set with \fICURLOPT_PREREQDATA(3)\fP.
.SH DEFAULT
By default, this is NULL and unused.
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 b/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
index 5f6c0dcab..e893e20e6 100644
--- a/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PRE_PROXY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PRE_PROXY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PRE_PROXY \- pre-proxy host to use
@@ -68,7 +70,7 @@ All except file://. Note that some protocols do not work well over proxy.
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/file.txt");
- curl_easy_setopt(curl, CURLOPT_PREPROXY, "socks4://socks-proxy:1080");
+ curl_easy_setopt(curl, CURLOPT_PRE_PROXY, "socks4://socks-proxy:1080");
curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80");
curl_easy_perform(curl);
}
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/docs/libcurl/opts/CURLOPT_PRIVATE.3
index 8a6e16594..9b8d2c3ac 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.3
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PRIVATE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PRIVATE 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PRIVATE \- store a private pointer
@@ -33,8 +35,8 @@ 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 anything with this data.
+\fIcurl_easy_getinfo(3)\fP with the \fICURLINFO_PRIVATE(3)\fP option. libcurl
+itself never does anything with this data.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
index fcd01d05b..e0c4269d8 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROGRESSDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROGRESSDATA \- pointer passed to the progress callback
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
index 09e4526e3..2224f5362 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROGRESSFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSFUNCTION 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROGRESSFUNCTION \- progress meter callback
@@ -41,8 +43,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSFUNCTION,
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 option is deprecated and 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
@@ -94,7 +96,7 @@ All
double ultotal,
double ulnow)
{
- struct memory *progress = (struct progress *)userp;
+ struct progress *memory = (struct progress *)clientp;
/* use the values */
@@ -109,7 +111,7 @@ All
curl_easy_setopt(curl_handle, CURLOPT_PROGRESSFUNCTION, progress_callback);
.fi
.SH AVAILABILITY
-Always
+Deprecated in 7.32.0.
.SH RETURN VALUE
Returns CURLE_OK.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
index de9f2d9df..0b0681aa1 100644
--- a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROTOCOLS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROTOCOLS 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROTOCOLS \- allowed protocols
@@ -31,6 +33,10 @@ CURLOPT_PROTOCOLS \- allowed protocols
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);
.fi
.SH DESCRIPTION
+This option is deprecated. We strongly recommend using
+\fICURLOPT_PROTOCOLS_STR(3)\fP instead because this option cannot control all
+available 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
@@ -70,7 +76,7 @@ CURLPROTO_TELNET
CURLPROTO_TFTP
.fi
.SH DEFAULT
-All protocols built-in
+All protocols built-in.
.SH PROTOCOLS
All
.SH EXAMPLE
@@ -89,7 +95,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.19.4
+Added in 7.19.4. Deprecated since 7.85.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3
new file mode 100644
index 000000000..dfa036838
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3
@@ -0,0 +1,85 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROTOCOLS_STR 3 "September 13, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_PROTOCOLS_STR \- allowed protocols
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS_STR, char *spec);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a string that holds a comma-separated list of case
+insensitive protocol names (URL schemes) to allow in the transfer. This
+option allows applications to use 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 accepts all protocols it was built with
+support for. See also \fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP.
+
+If trying to set a non-existing protocol or if no matching protocol at all is
+set, it returns error.
+
+These are the available protocols:
+
+DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,
+MQTT, POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, SCP, SFTP,
+SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS, WSS
+
+You can set "ALL" as a short-cut to enable all protocols. Note that by setting
+all, you may enable protocols that were not supported the day you write this
+but are introduced in a future libcurl version.
+
+\fIcurl_version_info(3)\fP can be used to get a list of all supported
+protocols in the current libcurl. \fICURLINFO_SCHEME(3)\fP is the recommended
+way to figure out the protocol used in a previous transfer.
+.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_STR, "http,tftp,sftp");
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.85.0
+.SH RETURN VALUE
+Returns CURLE_UNKNOWN_OPTION if the option is not implemented,
+CURLE_UNSUPPORTED_PROTOCOL if a listed protocol is not supported or disabled,
+CURLE_BAD_FUNCTION_ARGUMENT if no protocol is listed else CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_REDIR_PROTOCOLS_STR "(3), " CURLOPT_URL "(3), "
+.BR curl_version_info "(3), " CURLINFO_SCHEME "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.3 b/docs/libcurl/opts/CURLOPT_PROXY.3
index 0b58a1f82..99c310e75 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY \- proxy to use
@@ -74,6 +76,9 @@ use of a proxy, even if there is an environment variable set for it.
A proxy host string can also include protocol scheme (http://) and embedded
user + password.
+Unix domain sockets are supported for socks proxies since 7.84.0. Set
+localhost for the host part. e.g. socks5h://localhost/path/to/socket.sock
+
The application does not have to keep the string around after setting this
option.
.SH "Environment variables"
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
index e6f54777d..c3d4046d0 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYAUTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYAUTH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYAUTH \- HTTP proxy authentication methods
@@ -39,8 +41,8 @@ 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.
+The bitmask can be constructed by the bits listed and described in the
+\fICURLOPT_HTTPAUTH(3)\fP man page.
.SH DEFAULT
CURLAUTH_BASIC
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
index 9c0a2991d..92dedb801 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYHEADER 3 "November 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYHEADER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYHEADER \- set of HTTP headers to pass to proxy
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
index 373cea50e..8d4465f16 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYPASSWORD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPASSWORD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
index 4ca2a002f..fb02bfe1c 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPORT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYPORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
index 8d5b7bce8..88263e1cf 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYTYPE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
@@ -40,7 +42,7 @@ HTTP Proxy. Default.
HTTPS Proxy. (Added in 7.52.0 for OpenSSL, GnuTLS and NSS)
.IP CURLPROXY_HTTP_1_0
HTTP 1.0 Proxy. This is similar to CURLPROXY_HTTP except it uses HTTP/1.0 for
-any CONNECT tunnelling. It does not change the HTTP version of the actual HTTP
+any CONNECT tunneling. It does not change the HTTP version of the actual HTTP
requests, controlled by \fICURLOPT_HTTP_VERSION(3)\fP.
.IP CURLPROXY_SOCKS4
SOCKS4 Proxy.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
index 36d68bcf9..0912f623a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYUSERNAME 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERNAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
index 37b7a645c..9ae8c075a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYUSERPWD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERPWD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
index b1c14d548..d0f7925c1 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CAINFO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAINFO 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
@@ -40,8 +42,8 @@ If \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP is zero and you avoid verifying the
server's certificate, \fICURLOPT_PROXY_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.
+This option is by default set to the system path where libcurl's CA
+certificate 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.
@@ -54,6 +56,8 @@ preferred method of verifying the peer's certificate chain.
The application does not have to keep the string around after setting this
option.
+
+The default value for this can be figured out with \fICURLINFO_CAINFO(3)\fP.
.SH DEFAULT
Built-in system specific
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3
index 92072fa5e..1a9d29f3f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CAINFO_BLOB 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAINFO_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CAINFO_BLOB \- proxy Certificate Authority (CA) bundle in PEM format
@@ -66,7 +68,7 @@ if(curl) {
.SH AVAILABILITY
Added in 7.77.0.
-This option is supported by the OpenSSL, Secure
+This option is supported by the rustls (since 7.82.0), OpenSSL, Secure
Transport and Schannel backends.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
index a2dc78947..8dd19ce5a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CAPATH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAPATH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CAPATH \- directory holding HTTPS proxy CA certificates
@@ -33,12 +35,14 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath);
.SH DESCRIPTION
Pass a char * to a null-terminated string naming a directory holding multiple
CA certificates to verify the HTTPS proxy with. If libcurl is built against
-OpenSSL, the certificate directory must be prepared using the openssl c_rehash
-utility. This makes sense only when \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP is
-enabled (which it is by default).
+OpenSSL, the certificate directory must be prepared using the OpenSSL
+\fBc_rehash\fP utility. This makes sense only when
+\fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP is enabled (which it is by default).
The application does not have to keep the string around after setting this
option.
+
+The default value for this can be figured out with \fICURLINFO_CAPATH(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
index ec26015db..a30dfd237 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CRLFILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CRLFILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CRLFILE \- HTTPS proxy Certificate Revocation List file
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3 b/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3
index 55cb108fc..892a80af4 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_ISSUERCERT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_ISSUERCERT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_ISSUERCERT \- proxy issuer SSL certificate filename
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3 b/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3
index a6ac8af48..21f696b2b 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "November 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_ISSUERCERT_BLOB \- proxy issuer SSL certificate from memory blob
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
index 5cff8fcf4..77fe1ce08 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_KEYPASSWD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_KEYPASSWD 3 "October 11, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_KEYPASSWD \- passphrase for the proxy private key
@@ -35,7 +37,7 @@ This option is for connecting to an HTTPS proxy, not an HTTPS server.
Pass a pointer to a null-terminated string as parameter. It will be used as
the password required to use the \fICURLOPT_PROXY_SSLKEY(3)\fP private key.
-You never needed a pass phrase to load a certificate but you need one to load
+You never need a pass phrase to load a certificate but you need one to load
your private key.
The application does not have to keep the string around after setting this
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
index 23a690c7a..4386db03d 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- pinned public key for https proxy
@@ -97,11 +99,11 @@ footer:
.SH AVAILABILITY
PEM/DER support:
- 7.52.0: GSKit, GnuTLS, NSS, OpenSSL, mbedtls, wolfSSL
+ 7.52.0: GSKit, GnuTLS, NSS, OpenSSL, mbedTLS, wolfSSL
sha256 support:
- 7.52.0: GnuTLS, NSS, OpenSSL, mbedtls, wolfSSL
+ 7.52.0: GnuTLS, NSS, OpenSSL, mbedTLS, wolfSSL
Other SSL backends not supported.
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
index fc2d59116..132bce6b2 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SERVICE_NAME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SERVICE_NAME 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
@@ -33,8 +35,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME,
.fi
.SH DESCRIPTION
Pass a char * as parameter to a string holding the \fIname\fP of the
-service. The default service name is "HTTP" for HTTP based proxies and "rcmd"
-for SOCKS5. This option allows you to change it.
+service. The default service name is \fB"HTTP"\fP for HTTP based proxies and
+\fB"rcmd"\fP for SOCKS5. This option allows you to change it.
The application does not have to keep the string around after setting this
option.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
index e72fade2f..b883295a5 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLCERT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLCERT \- HTTPS proxy client certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
index 76753e2b1..bf9249cf9 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLCERTTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERTTYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- type of the proxy client SSL certificate
@@ -34,9 +36,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);
Pass a pointer to a null-terminated string as parameter. The string should be
the format of your client certificate used when connecting to an HTTPS proxy.
-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.
+Supported formats are "PEM" and "DER", except with Secure Transport or
+Schannel. OpenSSL (versions 0.9.3 and later), Secure Transport (on iOS 5 or
+later, or OS X 10.7 or later) and Schannel support "P12" for PKCS#12-encoded
+files.
The application does not have to keep the string around after setting this
option.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3
index 19ee25747..eb4453fd5 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "September 06, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob
@@ -47,7 +49,7 @@ expects a file name as input.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
+Used with HTTPS proxy
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
index bef93b175..10716cddd 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLKEY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_PROXY_SSLKEY \- private keyfile for HTTPS proxy client cert
+CURLOPT_PROXY_SSLKEY \- private key file for HTTPS proxy client cert
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -36,9 +38,9 @@ the file name of your private key used for connecting to the HTTPS proxy. The
default format is "PEM" and can be changed with
\fICURLOPT_PROXY_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.
+(Windows, iOS and Mac OS X) This option is ignored by Secure Transport and
+Schannel SSL backends because they expect the private key to be already
+present in the key chain or PKCS#12 file containing the certificate.
The application does not have to keep the string around after setting this
option.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
index 3120de862..24bac05cd 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLKEYTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEYTYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- type of the proxy private key file
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3
index e449be1b7..18e4cb9ca 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "October 25, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLKEY_BLOB \- private key for proxy cert from memory blob
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
index ed627e23b..08688ffc8 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLVERSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLVERSION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLVERSION \- preferred HTTPS proxy TLS version
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
index e4cbce48d..7da9b0870 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- ciphers to use for HTTPS proxy
@@ -50,6 +52,13 @@ enabled.
For WolfSSL, valid examples of cipher lists include \fBECDHE-RSA-RC4-SHA\fP,
\fBAES256-SHA:AES256-SHA256\fP, etc.
+For BearSSL, valid examples of cipher lists include
+\fBECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256\fP, or when using IANA names
+\fBTLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\fP,
+etc.
+With BearSSL you do not add/remove ciphers. If one uses this option then all
+known ciphers are disabled and only those passed in are enabled.
+
you will find more details about cipher lists on this URL:
https://curl.se/docs/ssl-ciphers.html
@@ -72,7 +81,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.52.0
+Added in 7.52.0, in 7.83.0 for BearSSL
If built TLS enabled.
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
index d952200fb..315bbffa3 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_OPTIONS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- HTTPS proxy SSL behavior options
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
index 72f661d07..69860449d 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
index c4a446ef8..06a4b02ca 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
index b1b95e45b..d39e1b5f1 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
@@ -43,7 +45,7 @@ you will find more details about cipher lists on this URL:
This option is currently used only when curl is built to use OpenSSL 1.1.1 or
later. If you are using a different SSL backend you can try setting TLS 1.3
-cipher suites by using the CURLOPT_PROXY_SSL_CIPHER_LIST option.
+cipher suites by using the \fICURLOPT_PROXY_SSL_CIPHER_LIST(3)\fP option.
The application does not have to keep the string around after setting this
option.
@@ -57,7 +59,7 @@ CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
curl_easy_setopt(curl, CURLOPT_PROXY_TLS13_CIPHERS,
- "TLS13-CHACHA20-POLY1305-SHA256");
+ "TLS_CHACHA20_POLY1305_SHA256");
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
index 61772b81a..12e91fecb 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
@@ -57,7 +59,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.52.0
+Added in 7.52.0, with the OpenSSL and GnuTLS backends only
.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.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
index 0121ffaf5..ca67a8ebf 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- HTTPS proxy TLS authentication methods
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
index 6bb2f1b62..931c3b279 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
@@ -57,7 +59,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.52.0
+Added in 7.52.0, with the OpenSSL and GnuTLS backends only.
.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.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
index 16be6aa5c..3d92debf4 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TRANSFER_MODE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TRANSFER_MODE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
diff --git a/docs/libcurl/opts/CURLOPT_PUT.3 b/docs/libcurl/opts/CURLOPT_PUT.3
index 5d30bce7d..5091f9fbb 100644
--- a/docs/libcurl/opts/CURLOPT_PUT.3
+++ b/docs/libcurl/opts/CURLOPT_PUT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PUT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.3 b/docs/libcurl/opts/CURLOPT_QUOTE.3
index dd67ab7b0..58708221f 100644
--- a/docs/libcurl/opts/CURLOPT_QUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_QUOTE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_QUOTE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_QUOTE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
@@ -70,8 +72,8 @@ 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.
+The \fBln\fP and \fBsymlink\fP 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 "mtime date file"
@@ -79,7 +81,8 @@ The mtime command sets the last modification time of the file named by the
file operand. The <date expression> can be all sorts of date strings, see the
\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)
.IP "pwd"
-The pwd command returns the absolute pathname of the current working directory.
+The \fBpwd\fP command returns the absolute path 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.
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
index 0abf28472..80efdeedb 100644
--- a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RANDOM_FILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RANDOM_FILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RANDOM_FILE \- file to read random data from
@@ -31,6 +33,8 @@ CURLOPT_RANDOM_FILE \- file to read random data from
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);
.fi
.SH DESCRIPTION
+Deprecated option. It serves no purpose anymore.
+
Pass a char * to a null-terminated file name. The file might be used to read
from to seed the random engine for SSL and more.
@@ -51,7 +55,10 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Always
+If built with TLS enabled. Only the OpenSSL backend will use this, and only
+with OpenSSL versions before 1.1.0.
+
+This option was deprecated in 7.84.0.
.SH RETURN VALUE
Returns CURLE_OK on success or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.3 b/docs/libcurl/opts/CURLOPT_RANGE.3
index fcf712505..d2c828ff1 100644
--- a/docs/libcurl/opts/CURLOPT_RANGE.3
+++ b/docs/libcurl/opts/CURLOPT_RANGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RANGE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RANGE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RANGE \- byte range to request
@@ -44,15 +46,10 @@ for a request, you may end up getting the full response sent back.
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.
+\fBnpt\fP, \fButc\fP, or \fBsmpte\fP formats.
For HTTP PUT uploads this option should not be used, since it may conflict with
-other options. If you need to upload arbitrary parts of a file (like for
-Amazon's web services) support is limited. We suggest set resume position using
-\fICURLOPT_RESUME_FROM(3)\fP, set end (resume+size) position using
-\fICURLOPT_INFILESIZE(3)\fP and seek to the resume position before initiating
-the transfer for each part. For more information refer to
-https://curl.se/mail/lib-2019-05/0012.html
+other options.
Pass a NULL to this option to disable the use of ranges.
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.3 b/docs/libcurl/opts/CURLOPT_READDATA.3
index 590807532..449b24347 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.3
+++ b/docs/libcurl/opts/CURLOPT_READDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_READDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_READDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_READDATA \- pointer passed to the read callback
@@ -33,7 +35,7 @@ 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 will get as
-input in the 4th argument to the callback.
+input in the fourth argument to the callback.
If you do not specify a read callback but instead rely on the default internal
read function, this data must be a valid readable FILE * (cast to 'void *').
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
index c8cd61205..4f2daae78 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_READFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_READFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
index 9691d463b..f2329328d 100644
--- a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REDIR_PROTOCOLS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_REDIR_PROTOCOLS 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_REDIR_PROTOCOLS \- protocols allowed to redirect to
@@ -31,6 +33,10 @@ CURLOPT_REDIR_PROTOCOLS \- protocols allowed to redirect to
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);
.fi
.SH DESCRIPTION
+This option is deprecated. We strongly recommend using
+\fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP instead because this option cannot
+control all available 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(3)\fP is enabled. This allows you to
@@ -100,7 +106,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.19.4, before then it would follow all protocols.
+Added in 7.19.4, before then it would follow all protocols. Deprecated
+since 7.85.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3
new file mode 100644
index 000000000..395b1952e
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3
@@ -0,0 +1,92 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_REDIR_PROTOCOLS_STR 3 "September 13, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_REDIR_PROTOCOLS_STR \- protocols allowed to redirect to
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS_STR,
+ char *spec);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a string that holds a comma-separated list of case
+insensitive protocol names (URL schemes). That list limits what protocols
+libcurl may use in a transfer that it follows to in a redirect when
+\fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This option allows applications to
+limit specific transfers to only be allowed to use a subset of protocols in
+redirections.
+
+Protocols denied by \fICURLOPT_PROTOCOLS_STR(3)\fP are not overridden by this
+option.
+
+By default libcurl will allow HTTP, HTTPS, FTP and FTPS on redirects (since
+7.65.2). Older versions of libcurl allowed all protocols on redirect except
+several disabled for security reasons: Since 7.19.4 FILE and SCP are disabled,
+and since 7.40.0 SMB and SMBS are also disabled.
+
+These are the available protocols:
+
+DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,
+MQTT, POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, SCP, SFTP,
+SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS, WSS
+
+You can set "ALL" as a short-cut to enable all protocols. Note that by setting
+all, you may enable protocols that were not supported the day you write this
+but are introduced in a future libcurl version.
+
+If trying to set a non-existing protocol or if no matching protocol at all is
+set, it returns error.
+.SH DEFAULT
+HTTP, HTTPS, FTP and FTPS (Added in 7.65.2).
+
+Older versions defaulted to all protocols except FILE, SCP and since 7.40.0
+SMB and SMBS.
+.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_STR, "http,https");
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.85.0.
+.SH RETURN VALUE
+Returns CURLE_UNKNOWN_OPTION if the option is not implemented,
+CURLE_UNSUPPORTED_PROTOCOL if a listed protocol is not supported or disabled,
+CURLE_BAD_FUNCTION_ARGUMENT if no protocol is listed else CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_PROTOCOLS_STR "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.3 b/docs/libcurl/opts/CURLOPT_REFERER.3
index 7311bf71c..b0650c6b6 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.3
+++ b/docs/libcurl/opts/CURLOPT_REFERER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REFERER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_REFERER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_REFERER \- the HTTP referer header
diff --git a/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
index b48898aa6..169df478e 100644
--- a/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
+++ b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REQUEST_TARGET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_REQUEST_TARGET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_REQUEST_TARGET \- alternative target for this request
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/docs/libcurl/opts/CURLOPT_RESOLVE.3
index 2c2142334..f0da50657 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVE 3 "December 07, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
@@ -45,7 +47,7 @@ Each resolve rule to add should be written using the format
\&... where HOST is the name libcurl will try to resolve, PORT is the port
number of the service where libcurl wants to connect to the HOST and ADDRESS
-is one or more numerical IP addresses. If you specify multiple ip addresses
+is one or more numerical IP addresses. If you specify multiple IP addresses
they need to be separated by comma. If libcurl is built to support IPv6, each
of the ADDRESS entries can of course be either IPv4 or IPv6 style addressing.
@@ -80,7 +82,7 @@ All
.nf
CURL *curl;
struct curl_slist *host = NULL;
-host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
+host = curl_slist_append(NULL, "example.com:443:127.0.0.1");
curl = curl_easy_init();
if(curl) {
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 b/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
index 165bd4091..8fbb7d12f 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVER_START_DATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVER_START_DATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVER_START_DATA \- pointer passed to the resolver start callback
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
index 736cd8360..7159a0be2 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVER_START_FUNCTION 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVER_START_FUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- callback called before a new name resolve is started
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
index 4fb775d0c..4b848f2fb 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESUME_FROM 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESUME_FROM \- offset to resume transfer from
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
index 0051736b3..9414ce7a3 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESUME_FROM_LARGE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESUME_FROM_LARGE \- offset to resume transfer from
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
index e6df571ca..f099d9da9 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- RTSP client CSEQ number
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
index aea599487..28323fc7d 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_REQUEST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_REQUEST 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_REQUEST \- RTSP request
@@ -60,10 +62,11 @@ extract and use the session ID in the response to this request. The session ID
is not needed for this method.
.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').
+modify the playback time (e.g. \fInpt=10-15\fP).
.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')
+a single value to indicate when the stream should be
+halted. (e.g. \fInpt=25\fP)
.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
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
index e87a781d9..ad087a6a6 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_SERVER_CSEQ 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- RTSP server CSEQ number
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
index 88b9e7061..be831dc82 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_SESSION_ID 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SESSION_ID 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_SESSION_ID \- RTSP session ID
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
index 38c14d2e4..6831fc003 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_STREAM_URI 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_STREAM_URI 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_STREAM_URI \- RTSP stream URI
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
index 0e092d1e1..30eb86ebe 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_TRANSPORT 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_TRANSPORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_TRANSPORT \- RTSP Transport: header
diff --git a/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 b/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3
index e80f62b06..57bcc6486 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3
+++ b/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SASL_AUTHZID 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SASL_AUTHZID 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SASL_AUTHZID \- authorisation identity (identity to act as)
+CURLOPT_SASL_AUTHZID \- authorization identity (identity to act as)
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -32,21 +34,21 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_AUTHZID, char *authzid);
.fi
.SH DESCRIPTION
Pass a char * as parameter, which should be pointing to the null-terminated
-authorisation identity (authzid) for the transfer. Only applicable to the PLAIN
-SASL authentication mechanism where it is optional.
+authorization identity (\fIauthzid\fP) for the transfer. Only applicable to
+the PLAIN SASL authentication mechanism where it is optional.
-When not specified only the authentication identity (authcid) as specified by
-the username will be sent to the server, along with the password. The server
-will derive a authzid from the authcid when not provided, which it will then
-uses internally.
+When not specified only the authentication identity (\fIauthcid\fP) as
+specified by the username will be sent to the server, along with the
+password. The server will derive a \fIauthzid\fP from the \fIauthcid\fP when
+not provided, which it will then uses internally.
-When the authzid is specified, the use of which is server dependent, it can be
-used to access another user's inbox, that the user has been granted access to,
-or a shared mailbox for example.
+When the \fIauthzid\fP is specified, the use of which is server dependent, it
+can be used to access another user's inbox, that the user has been granted
+access to, or a shared mailbox for example.
.SH DEFAULT
blank
.SH PROTOCOLS
-IMAP, POP3 and SMTP
+IMAP, LDAP, POP3 and SMTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
@@ -60,7 +62,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.66.0
+Added in 7.66.0. Support for OpenLDAP added in 7.82.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/docs/libcurl/opts/CURLOPT_SASL_IR.3
index 5cc405d32..7ab2d9778 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_IR.3
+++ b/docs/libcurl/opts/CURLOPT_SASL_IR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SASL_IR 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SASL_IR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SASL_IR \- send initial response in first packet
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
index f85051cf2..ddcca1617 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SEEKDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SEEKDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SEEKDATA \- pointer passed to the seek callback
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
index cee5c8b6d..fd6c6206b 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SEEKFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SEEKFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3
index e00ca8cb5..08e59c5cf 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,17 +18,19 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SERVER_RESPONSE_TIMEOUT 3 "July 04, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
+CURLOPT_SERVER_RESPONSE_TIMEOUT \- time allowed to wait for server response
.SH SYNOPSIS
.nf
#include <curl/curl.h>
-CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT,
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVER_RESPONSE_TIMEOUT,
long timeout);
.fi
.SH DESCRIPTION
@@ -37,28 +39,30 @@ 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_SERVER_RESPONSE_TIMEOUT(3)\fP to a value smaller than
\fICURLOPT_TIMEOUT(3)\fP.
+
+This option was formerly known as \fBCURLOPT_FTP_RESPONSE_TIMEOUT\fP.
.SH DEFAULT
None
.SH PROTOCOLS
-FTP
+FTP, IMAP, POP3 and SMTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/slow.txt");
/* wait no more than 23 seconds */
- curl_easy_setopt(curl, CURLOPT_FTP_RESPONSE_TIMEOUT, 23L);
+ curl_easy_setopt(curl, CURLOPT_SERVER_RESPONSE_TIMEOUT, 23L);
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
-Added in 7.10.8
+Added in 7.10.8. Used under this name since 7.20.0
.SH RETURN VALUE
-Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not. Returns
+Returns CURLE_OK if supported, and CURLE_UNKNOWN_OPTION if not. Returns
CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value or a value that when
converted to milliseconds is too large.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
index 84d0b48bb..28481e4e4 100644
--- a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SERVICE_NAME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SERVICE_NAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
@@ -33,15 +35,15 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
.SH DESCRIPTION
Pass a char * as parameter to a string holding the \fIname\fP of the service
for DIGEST-MD5, SPNEGO and Kerberos 5 authentication mechanisms. The default
-service names are "ftp", "HTTP", "imap", "pop" and "smtp". This option allows
-you to change them.
+service names are "ftp", "HTTP", "imap", "ldap", "pop" and "smtp". This option
+allows you to change them.
The application does not have to keep the string around after setting this
option.
.SH DEFAULT
See above
.SH PROTOCOLS
-HTTP, FTP, IMAP, POP and SMTP
+HTTP, FTP, IMAP, LDAP, POP3 and SMTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
@@ -53,7 +55,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.43.0 for HTTP, 7.49.0 for FTP, IMAP, POP3 and SMTP.
+Added in 7.43.0 for HTTP, 7.49.0 for FTP, IMAP, POP3 and SMTP,
+7.82.0 for OpenLDAP.
.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.
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.3 b/docs/libcurl/opts/CURLOPT_SHARE.3
index ebf3ca795..6519a5c89 100644
--- a/docs/libcurl/opts/CURLOPT_SHARE.3
+++ b/docs/libcurl/opts/CURLOPT_SHARE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SHARE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SHARE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SHARE \- share handle to use
@@ -40,8 +42,8 @@ data. If the curl handles are used simultaneously in multiple threads, you
\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 does not share
+that cookie cache and get the cookie engine enabled. If you stop sharing an
+object that was using cookies (or change to another object that does not 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
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
index d1d52b0c8..16bfbcbfc 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKOPTDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKOPTDATA \- pointer to pass to sockopt callback
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
index c8a99543e..078361317 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKOPTFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKOPTFUNCTION \- callback for setting socket options
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
index 4bc4411a2..3c1c7e7c0 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_AUTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_AUTH 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKS5_AUTH \- methods for SOCKS5 proxy authentication
@@ -51,7 +53,7 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://user:pass@myproxy.com");
/* enable username/password authentication only */
- curl_easy_setopt(curl, CURLOPT_SOCKS5_AUTH, CURLAUTH_BASIC);
+ curl_easy_setopt(curl, CURLOPT_SOCKS5_AUTH, (long)CURLAUTH_BASIC);
/* Perform the request */
curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
index 89dbb34f6..7b36fa806 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SOCKS5_GSSAPI_NEC \- socks proxy gssapi negotiation protection
+CURLOPT_SOCKS5_GSSAPI_NEC \- SOCKS proxy GSSAPI negotiation protection
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -31,7 +33,7 @@ CURLOPT_SOCKS5_GSSAPI_NEC \- socks proxy gssapi negotiation protection
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);
.fi
.SH DESCRIPTION
-Pass a long set to 1 to enable or 0 to disable. As part of the gssapi
+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
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
index bce2f48cf..ff751f747 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
@@ -34,9 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE,
.SH DESCRIPTION
Deprecated since 7.49.0. Use \fICURLOPT_PROXY_SERVICE_NAME(3)\fP instead.
-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". This option allows you
-to change it.
+Pass a \fBchar *\fP as parameter to a string holding the \fIname\fP of the
+service. The default service name for a SOCKS5 server is \fI"rcmd"\fP. This
+option allows you to change it.
The application does not have to keep the string around after setting this
option.
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
index e0a30c0d5..4484e6112 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_AUTH_TYPES 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_AUTH_TYPES 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_AUTH_TYPES \- auth types for SFTP and SCP
@@ -40,7 +42,7 @@ 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
+CURLSSH_AUTH_ANY (all available)
.SH PROTOCOLS
SFTP and SCP
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 b/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
index 87334321b..713f8b68f 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_COMPRESSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_COMPRESSION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_COMPRESSION \- enable SSH compression
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3
new file mode 100644
index 000000000..aeecef846
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3
@@ -0,0 +1,66 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_KEYDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_SSH_HOSTKEYDATA \- pointer to pass to the SSH host key callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOSTKEYDATA, void *pointer);
+.fi
+.SH DESCRIPTION
+Pass a void * as parameter. This \fIpointer\fP will be passed along verbatim
+to the callback set with \fICURLOPT_SSH_HOSTKEYFUNCTION(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SCP and SFTP
+.SH EXAMPLE
+.nf
+int hostkeycb(void *clientp, /* passed with CURLOPT_SSH_HOSTKEYDATA */
+ int keytype, /* CURLKHTYPE */
+ const char * key, /* host key to check */
+ size_t keylen); /* length of the key */
+{
+ /* 'clientp' points to the callback_data struct */
+ /* investigate the situation and return the correct value */
+ return CURLKHMATCH_OK;
+}
+{
+ curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt");
+ curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYFUNCTION, hostkeycb);
+ curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYDATA, &callback_data);
+
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.84.0, works only with libssh2 backend.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSH_HOSTKEYFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3
new file mode 100644
index 000000000..9b996e709
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3
@@ -0,0 +1,88 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_HOSTKEYFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_SSH_HOSTKEYFUNCTION \- callback to check host key
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+int keycallback(void *clientp,
+ int keytype,
+ const char *key,
+ size_t keylen);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOSTKEYFUNCTION,
+ keycallback);
+.fi
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above. It overrides \fICURLOPT_SSH_KNOWNHOSTS(3)\fP.
+
+This callback gets called when the verification of the SSH host key is needed.
+
+\fBkey\fP is \fBkeylen\fP bytes long and is the key to check. \fBkeytype\fP
+says what type it is, from the \fBCURLKHTYPE_*\fP series in the
+\fBcurl_khtype\fP enum.
+
+\fBclientp\fP is a custom pointer set with \fICURLOPT_SSH_HOSTKEYDATA(3)\fP.
+
+The callback MUST return one of the following return codes to tell libcurl how
+to act:
+.IP CURLKHMATCH_OK
+The host key is accepted, the connection should continue.
+.IP CURLKHMATCH_MISMATCH
+the host key is rejected, the connection is canceled.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SCP and SFTP
+.SH EXAMPLE
+.nf
+int hostkeycb(void *clientp, /* passed with CURLOPT_SSH_HOSTKEYDATA */
+ int keytype, /* CURLKHTYPE */
+ const char * key, /* host key to check */
+ size_t keylen); /* length of the key */
+{
+ /* 'clientp' points to the callback_data struct */
+ /* investigate the situation and return the correct value */
+ return CURLKHMATCH_OK;
+}
+{
+ curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt");
+ curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYFUNCTION, hostkeycb);
+ curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYDATA, &callback_data);
+
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.84.0 , work only with libssh2 backend.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSH_HOSTKEYDATA "(3), "
+.BR CURLOPT_SSH_KNOWNHOSTS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
index d1dcf2b29..7a0fd541e 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "November 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- MD5 checksum of SSH server public key
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOST_PUBLIC_KEY_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.
+libcurl will reject the connection to the host unless the MD5 checksum match.
The application does not have to keep the string around after setting this
option.
@@ -59,3 +61,4 @@ 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), "
+.BR CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3
index 83d8ab016..62b45b854 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 \- SHA256 hash of SSH server public key
@@ -53,7 +55,7 @@ if(curl) {
.fi
.SH AVAILABILITY
Added in 7.80.0
-Requires the libssh2 back-end.
+Requires the libssh2 backend.
.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.
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
index 7bcd6cac6..591850226 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KEYDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KEYDATA \- pointer passed to the SSH key callback
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
index 5460d915b..ca2801686 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KEYFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
@@ -33,9 +35,8 @@ enum curl_khstat {
CURLKHSTAT_FINE,
CURLKHSTAT_REJECT, /* reject the connection, return an error */
CURLKHSTAT_DEFER, /* do not accept it, but we cannot answer right
- now so this causes a CURLE_DEFER error but
- otherwise the connection will be left intact
- etc */
+ now. Causes a CURLE_PEER_FAILED_VERIFICATION error but
+ the connection will be left intact */
CURLKHSTAT_FINE_REPLACE
};
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
index 8f7a89b6a..3df7f95c0 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KNOWNHOSTS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KNOWNHOSTS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
@@ -36,7 +38,7 @@ 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.
+behavior on host and key matches and mismatches.
The application does not have to keep the string around after setting this
option.
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
index b9cd0b8d4..e13a83a11 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- private key file for SSH auth
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
index d7c8d9d90..c77b2ac81 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- public key file for SSH auth
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_SSLCERT.3
index c78de5645..1ee436575 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLCERT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERT 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLCERT \- SSL client certificate
@@ -41,17 +43,17 @@ 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.
-(Schannel only) Client certificates can be specified by a path expression to
-a certificate store. (You can import PFX to a store first). You can use
-"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
-in the system certificates store, for example,
-"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
-usually a SHA-1 hex string which you can see in certificate details. Following
-store locations are supported: CurrentUser, LocalMachine, CurrentService,
-Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
-LocalMachineEnterprise.
-Schannel also support P12 certificate file, with the string "P12" specified
-with \fICURLOPT_SSLCERTTYPE(3)\fP.
+(Schannel only) Client certificates can be specified by a path expression to a
+certificate store. (You can import \fIPFX\fP to a store first). You can use
+"<store location>\\<store name>\\<thumbprint>" to refer to a certificate in
+the system certificates store, for example,
+\fB"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa"\fP. The thumbprint is usually a
+SHA-1 hex string which you can see in certificate details. Following store
+locations are supported: \fBCurrentUser\fP, \fBLocalMachine\fP,
+\fBCurrentService\fP, \fBServices\fP, \fBCurrentUserGroupPolicy\fP,
+\fBLocalMachineGroupPolicy\fP, \fBLocalMachineEnterprise\fP. Schannel also
+support P12 certificate file, with the string "P12" specified with
+\fICURLOPT_SSLCERTTYPE(3)\fP.
When using a client certificate, you most likely also need to provide a
private key with \fICURLOPT_SSLKEY(3)\fP.
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
index 9d6db209a..c045b0e50 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLCERTTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERTTYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLCERTTYPE \- type of client SSL certificate
@@ -32,10 +34,12 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);
.fi
.SH DESCRIPTION
Pass a pointer to a null-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.
+the format of your certificate.
+
+Supported formats are "PEM" and "DER", except with Secure Transport or
+Schannel. OpenSSL (versions 0.9.3 and later), Secure Transport (on iOS 5 or
+later, or OS X 10.7 or later) and Schannel support "P12" for PKCS#12-encoded
+files.
The application does not have to keep the string around after setting this
option.
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3 b/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3
index bf188d9f8..f6b064ebf 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLCERT_BLOB 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERT_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob
@@ -34,8 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT_BLOB,
.SH DESCRIPTION
Pass a pointer to a curl_blob structure, which contains (pointer and size) a
client certificate. The format must be "P12" on Secure Transport or
-Schannel. The format must be "P12" or "PEM" on OpenSSL. The string "P12" or
-"PEM" must be specified with \fICURLOPT_SSLCERTTYPE(3)\fP.
+Schannel. The format must be "P12" or "PEM" on OpenSSL. The format must be
+"DER" or "PEM" on mbedTLS. The format must be specified with
+\fICURLOPT_SSLCERTTYPE(3)\fP.
If the blob is initialized with the flags member of struct curl_blob set to
CURL_BLOB_COPY, the application does not have to keep the buffer around after
@@ -64,8 +67,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.71.0. This option is supported by the OpenSSL, Secure Transport and
-Schannel backends.
+Added in 7.71.0. This option is supported by the OpenSSL, Secure Transport,
+Schannel and mbedTLS (since 7.78.0) backends.
.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.
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
index b55ec0822..69bb6154d 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLENGINE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLENGINE \- SSL engine identifier
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
index 35e5a8227..9dc2d5f50 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLENGINE_DEFAULT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_SSLKEY.3
index 81e4aca8c..0eb972f8c 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLKEY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SSLKEY \- private keyfile for TLS and SSL client cert
+CURLOPT_SSLKEY \- private key file for TLS and SSL client cert
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -35,9 +37,9 @@ Pass a pointer to a null-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.
+(Windows, iOS and Mac OS X) This option is ignored by Secure Transport and
+Schannel SSL backends because they expect the private key to be already present
+in the key-chain or PKCS#12 file containing the certificate.
The application does not have to keep the string around after setting this
option.
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
index 43a68edbe..e43a23b57 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLKEYTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEYTYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLKEYTYPE \- type of the private key file
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3 b/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3
index ed0dbfb58..f76ba596b 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLKEY_BLOB 3 "October 25, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEY_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLKEY_BLOB \- private key for client cert from memory blob
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
index 90d19b7b8..e7cdd017f 100644
--- a/docs/libcurl/opts/CURLOPT_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLVERSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLVERSION 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLVERSION \- preferred TLS/SSL version
@@ -98,7 +100,7 @@ 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);
+ curl_easy_setopt(curl, CURLOPT_SSLVERSION, (long)CURL_SSLVERSION_TLSv1);
/* Perform the request */
curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
index d6066507d..28e72c602 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CIPHER_LIST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CIPHER_LIST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_CIPHER_LIST \- ciphers to use for TLS
@@ -49,6 +51,13 @@ enabled.
For WolfSSL, valid examples of cipher lists include \fBECDHE-RSA-RC4-SHA\fP,
\fBAES256-SHA:AES256-SHA256\fP, etc.
+For BearSSL, valid examples of cipher lists include
+\fBECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256\fP, or when using IANA names
+\fBTLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\fP,
+etc.
+With BearSSL you do not add/remove ciphers. If one uses this option then all
+known ciphers are disabled and only those passed in are enabled.
+
you will find more details about cipher lists on this URL:
https://curl.se/docs/ssl-ciphers.html
@@ -70,6 +79,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
+Added in 7.9, in 7.83.0 for BearSSL
+
If built TLS enabled.
.SH RETURN VALUE
Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
index 2d984d238..65b82f5ac 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CTX_DATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_DATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SSL_CTX_DATA \- pointer passed to ssl_ctx callback
+CURLOPT_SSL_CTX_DATA \- pointer passed to SSL context callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -116,8 +118,8 @@ int main(void)
}
.fi
.SH AVAILABILITY
-Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL and in 7.54.0 for
-mbedTLS. Other SSL backends are not supported.
+Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL, in 7.54.0 for mbedTLS,
+in 7.83.0 in BearSSL. Other SSL backends are not supported.
.SH RETURN VALUE
CURLE_OK if supported; or an error such as:
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
index 9f377d0b8..959d178cf 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CTX_FUNCTION 3 "July 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_FUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
@@ -33,8 +35,9 @@ 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, wolfSSL or mbedTLS. If
-libcurl was built against another SSL library this functionality is absent.
+This option only works for libcurl powered by OpenSSL, wolfSSL, mbedTLS or
+BearSSL. 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.
@@ -43,8 +46,9 @@ This callback function gets called by libcurl just before the initialization
of an SSL connection after having processed all other SSL related options to
give a last chance to an application to modify the behavior of the SSL
initialization. The \fIssl_ctx\fP parameter is actually a pointer to the SSL
-library's \fISSL_CTX\fP for OpenSSL or wolfSSL, and a pointer to
-\fImbedtls_ssl_config\fP for mbedTLS. If an error is returned from the
+library's \fISSL_CTX\fP for OpenSSL or wolfSSL, a pointer to
+\fImbedtls_ssl_config\fP for mbedTLS or a pointer to
+\fIbr_ssl_client_context\fP for BearSSL. If an error is returned from the
callback no attempt to establish a connection is made and the perform
operation will return the callback's error code. Set the \fIuserptr\fP
argument with the \fICURLOPT_SSL_CTX_DATA(3)\fP option.
@@ -65,12 +69,12 @@ unknowingly reusing SSL connections with different properties. To remedy this
you may set \fICURLOPT_FORBID_REUSE(3)\fP from the callback function.
WARNING: If you are using DNS-over-HTTPS (DoH) via \fICURLOPT_DOH_URL(3)\fP
-then the CTX callback will also be called for those transfers and the curl
-handle is set to an internal handle. \fBThis behavior is subject to change.\fP
-We recommend before performing your transfer set \fICURLOPT_PRIVATE(3)\fP on
-your curl handle so you can identify it in the CTX callback. If you have a
-reason to modify DoH SSL context please let us know on the curl-library mailing
-list because we are considering removing this capability.
+then this callback will also be called for those transfers and the curl handle
+is set to an internal handle. \fBThis behavior is subject to change.\fP We
+recommend before performing your transfer set \fICURLOPT_PRIVATE(3)\fP on your
+curl handle so you can identify it in the context callback. If you have a
+reason to modify DoH SSL context please let us know on the curl-library
+mailing list because we are considering removing this capability.
.SH DEFAULT
NULL
.SH PROTOCOLS
@@ -153,8 +157,8 @@ int main(void)
}
.fi
.SH AVAILABILITY
-Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL and in 7.54.0 for
-mbedTLS. Other SSL backends are not supported.
+Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL, in 7.54.0 for mbedTLS,
+in 7.83.0 in BearSSL. Other SSL backends are not supported.
.SH RETURN VALUE
CURLE_OK if supported; or an error such as:
diff --git a/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3 b/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3
index ee2d74671..04bdf8ad4 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_EC_CURVES 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_EC_CURVES 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_EC_CURVES \- key exchange curves
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
index 80cfb926d..06e51b498 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_ENABLE_ALPN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- Application Layer Protocol Negotiation
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
index cba7cb5b7..1824c11c5 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_ENABLE_NPN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_NPN 3 "September 01, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_ENABLE_NPN \- use NPN
@@ -31,6 +33,8 @@ CURLOPT_SSL_ENABLE_NPN \- use NPN
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);
.fi
.SH DESCRIPTION
+Deprecated in 7.86.0. Setting this option has no function.
+
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.
@@ -49,7 +53,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.36.0
+Added in 7.36.0. Deprecated in 7.86.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
index a68ba5c13..f05cb8eb5 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_FALSESTART 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_FALSESTART 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_FALSESTART \- TLS false start
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
index ec46537d7..288ecec87 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_OPTIONS 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_OPTIONS \- SSL behavior options
@@ -81,7 +83,7 @@ CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
/* weaken TLS only for use with silly servers */
- curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, CURLSSLOPT_ALLOW_BEAST |
+ curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_ALLOW_BEAST |
CURLSSLOPT_NO_REVOKE);
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
index b9879ebfb..f58e565ed 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_SESSIONID_CACHE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- use the SSL session-ID cache
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
index 6a9419b16..6514de7a1 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYHOST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
index f3314efbb..e86a1ed8e 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYPEER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
index 5a5784776..ebbd4c781 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYSTATUS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYSTATUS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.3 b/docs/libcurl/opts/CURLOPT_STDERR.3
index c437bb52b..0a8ed81f4 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.3
+++ b/docs/libcurl/opts/CURLOPT_STDERR.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STDERR 3 "December 06, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_STDERR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
index ec25ee5c8..3785b8b62 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_DEPENDS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_DEPENDS \- stream this transfer depends on
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
index fef001f5e..9c10268f8 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_DEPENDS_E 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS_E 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_DEPENDS_E \- stream this transfer depends on exclusively
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
index 3dd4d1dd7..1c4b08dc4 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_WEIGHT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_WEIGHT 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_WEIGHT \- numerical stream weight
@@ -42,8 +44,7 @@ This option can be set during transfer and will then cause the updated weight
info get sent to the server the next time an HTTP/2 frame is sent to the
server.
-See section 5.3 of RFC 7540 for protocol details:
-https://httpwg.github.io/specs/rfc7540.html#StreamPriority
+See section 5.3 of RFC 7540 for protocol details.
Streams with the same parent should be allocated resources proportionally
based on their weight. So if you have two streams going, stream A with weight
diff --git a/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 b/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
index 7124edcea..eba54bc37 100644
--- a/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
+++ b/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- suppress proxy CONNECT response headers from user callbacks
diff --git a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
index e7d646903..d635f8872 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_FASTOPEN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_FASTOPEN 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_FASTOPEN \- TCP Fast Open
@@ -50,8 +52,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.49.0. This option is currently only supported on Linux and OS X
-El Capitan.
+Added in 7.49.0. This option is currently only supported on Linux and macOS
+10.11 or later.
.SH RETURN VALUE
Returns CURLE_OK if fast open is supported by the operating system, otherwise
returns CURLE_NOT_BUILT_IN.
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
index f6b332f99..f4e6c29e3 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPALIVE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPALIVE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPALIVE \- TCP keep-alive probing
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
index 589b2ab5a..348ee269d 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPIDLE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPIDLE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPIDLE \- TCP keep-alive idle time wait
@@ -34,6 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);
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.
+
+The maximum value this accepts is 2147483648. Any larger value will be capped
+to this amount.
.SH DEFAULT
60
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
index 2aeecb9d6..b3923412e 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPINTVL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPINTVL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPINTVL \- TCP keep-alive interval
@@ -34,6 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);
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)
+
+The maximum value this accepts is 2147483648. Any larger value will be capped
+to this amount.
.SH DEFAULT
60
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
index e71ee4615..cea6fe603 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_NODELAY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_NODELAY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_NODELAY \- the TCP_NODELAY option
@@ -31,14 +33,14 @@ CURLOPT_TCP_NODELAY \- the TCP_NODELAY option
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);
.fi
.SH DESCRIPTION
-Pass a long specifying whether the TCP_NODELAY option is to be set or cleared
-(1L = set, 0 = clear). The option is set by default. This will have no effect
-after the connection has been established.
+Pass a long specifying whether the \fITCP_NODELAY\fP option is to be set or
+cleared (1L = set, 0 = clear). The option is set by default. This will have no
+effect after the connection has been established.
Setting this option to 1L will disable TCP's Nagle algorithm on this
connection. 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).
+than the Maximum Segment Size 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
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
index 5d1d42edf..5c2e497eb 100644
--- a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TELNETOPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TELNETOPTIONS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TELNETOPTIONS \- set of telnet options
@@ -34,8 +36,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,
.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.
+supports the options \fBTTYPE\fP, \fBXDISPLOC\fP and \fBNEW_ENV\fP. See the
+TELNET standard for details.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
index eea9902fd..0bc67b280 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TFTP_BLKSIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_BLKSIZE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
@@ -34,9 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);
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.
+by the remote server. If the server does not return an option acknowledgment
+or returns an option acknowledgment with no block size, the default of 512
+bytes will be used.
.SH DEFAULT
512
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
index a9156f0e0..1a7ac9d60 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TFTP_NO_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_NO_OPTIONS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- send no TFTP options requests
@@ -32,10 +34,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);
.fi
.SH DESCRIPTION
Set \fIonoff\fP to 1L to exclude all TFTP options defined in RFC2347, RFC2348
-and RFC2349 from read and write requests (RRQs/WRQs).
+and RFC2349 from read and write requests.
-This option improves interop with some legacy servers that do not acknowledge
-or properly implement TFTP options. When this option is used
+This option improves interoperability with legacy servers that do not
+acknowledge or properly implement TFTP options. When this option is used
\fICURLOPT_TFTP_BLKSIZE(3)\fP is ignored.
.SH DEFAULT
0
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
index 0afc10b27..4735fecb8 100644
--- a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
+++ b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMECONDITION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMECONDITION 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
@@ -54,7 +56,8 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
/* If-Modified-Since the above time stamp */
- curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION,
+ (long)CURL_TIMECOND_IFMODSINCE);
/* Perform the request */
curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
index 6a7df44be..3a81adc08 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEOUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEOUT \- maximum time the transfer is allowed to complete
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
index 421efbfdd..d2f28e63b 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEOUT_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEOUT_MS \- maximum time the transfer is allowed to complete
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
index 6deebe967..fba5ceff2 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEVALUE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEVALUE \- time value for conditional
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
index cc2a2a83e..2cd6915f5 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEVALUE_LARGE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEVALUE_LARGE \- time value for conditional
diff --git a/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 b/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
index bcfe8aa24..66477f7db 100644
--- a/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
+++ b/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLS13_CIPHERS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TLS13_CIPHERS 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLS13_CIPHERS \- ciphers suites to use for TLS 1.3
@@ -40,8 +42,9 @@ you will find more details about cipher lists on this URL:
https://curl.se/docs/ssl-ciphers.html
This option is currently used only when curl is built to use OpenSSL 1.1.1 or
-later. If you are using a different SSL backend you can try setting TLS 1.3
-cipher suites by using the CURLOPT_SSL_CIPHER_LIST option.
+later or Schannel. If you are using a different SSL backend you can try
+setting TLS 1.3 cipher suites by using the \fICURLOPT_SSL_CIPHER_LIST(3)\fP
+option.
The application does not have to keep the string around after setting this
option.
@@ -55,14 +58,15 @@ CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
curl_easy_setopt(curl, CURLOPT_TLS13_CIPHERS,
- "TLS13-CHACHA20-POLY1305-SHA256");
+ "TLS_CHACHA20_POLY1305_SHA256");
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
-Added in 7.61.0.
-Available when built with OpenSSL >= 1.1.1.
+Added in 7.61.0 for OpenSSL. Available when built with OpenSSL >= 1.1.1.
+
+Added in 7.85.0 for Schannel.
.SH RETURN VALUE
Returns CURLE_OK if supported, CURLE_NOT_BUILT_IN otherwise.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
index 83186d119..b0c1552fe 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_PASSWORD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
@@ -57,7 +59,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.21.4
+Added in 7.21.4, with the OpenSSL and GnuTLS backends only
.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.
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
index 7e4811460..d043d6609 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_TYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_TYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_TYPE \- TLS authentication methods
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
index a334ce684..6fdc33bbb 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_USERNAME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_USERNAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
@@ -57,7 +59,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.21.4
+Added in 7.21.4, with the OpenSSL and GnuTLS backends only
.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.
diff --git a/docs/libcurl/opts/CURLOPT_TRAILERDATA.3 b/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
index 21c75754e..b12bba7e9 100644
--- a/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRAILERDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TRAILERDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TRAILERDATA \- pointer passed to trailing headers callback
diff --git a/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
index 2c61b3ed0..caa5880b5 100644
--- a/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRAILERFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TRAILERFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TRAILERFUNCTION \- callback for sending trailing headers
@@ -40,7 +42,8 @@ This callback function will be called once right before sending the final
CR LF in an HTTP chunked transfer to fill a list of trailing headers to be
sent before finishing the HTTP transfer.
-You can set the userdata argument with the CURLOPT_TRAILERDATA option.
+You can set the userdata argument with the \fICURLOPT_TRAILERDATA(3)\fP
+option.
The trailing headers included in the linked list must not be CRLF-terminated,
because libcurl will add the appropriate line termination characters after
@@ -50,13 +53,12 @@ If you use curl_slist_append to add trailing headers to the curl_slist then
libcurl will duplicate the strings, and will free the curl_slist and the
duplicates once the trailers have been sent.
-If one of the trailing headers is not formatted correctly
-(i.e. HeaderName: headerdata) it will be ignored and an info message
-will be emitted.
+If one of the trailing header fields is not formatted correctly it will be
+ignored and an info message will be emitted.
-The return value can either be CURL_TRAILERFUNC_OK or CURL_TRAILERFUNC_ABORT
-which would respectively instruct libcurl to either continue with sending the
-trailers or to abort the request.
+The return value can either be \fBCURL_TRAILERFUNC_OK\fP or
+\fBCURL_TRAILERFUNC_ABORT\fP which would respectively instruct libcurl to
+either continue with sending the trailers or to abort the request.
If you set this option to NULL, then the transfer proceeds as usual
without any interruptions.
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
index 746c2824a..344e28baf 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRANSFERTEXT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFERTEXT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
index bc641de43..a8c2e9b70 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRANSFER_ENCODING 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFER_ENCODING 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
index 564f1e41d..5d70f72db 100644
--- a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
+++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UNIX_SOCKET_PATH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UNIX_SOCKET_PATH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- Unix domain socket
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
index b54de3bb7..ced223464 100644
--- a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UNRESTRICTED_AUTH 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
@@ -36,9 +38,19 @@ authentication (user+password) credentials when following locations, even when
hostname changed. This option is meaningful only when setting
\fICURLOPT_FOLLOWLOCATION(3)\fP.
-By default, libcurl will only send given credentials to the initial host name
-as given in the original URL, to avoid leaking username + password to other
-sites.
+Further, when this option is not used or set to \fB0L\fP, libcurl will not
+send custom set nor internally generated Authentication: headers on requests
+done to other hosts than the one used for the initial URL.
+
+By default, libcurl will only send credentials and Authentication headers to
+the initial host name as given in the original URL, to avoid leaking username
++ password to other sites.
+
+This option should be used with caution: when curl follows redirects it
+blindly fetches the next URL as instructed by the server. Setting
+\fICURLOPT_UNRESTRICTED_AUTH(3)\fP to 1L will therefore also make curl trust
+the server and send possibly sensitive credentials to a host the server points
+out.
.SH DEFAULT
0
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3 b/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3
index d04a3e8d8..5e6c6fab3 100644
--- a/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3
+++ b/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UPKEEP_INTERVAL_MS \- connection upkeep interval
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/docs/libcurl/opts/CURLOPT_UPLOAD.3
index 48f348807..5c78f1f2c 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UPLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UPLOAD \- data upload
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
index a14424f22..ca5f1fbc0 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2018, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- upload buffer size
@@ -50,7 +52,7 @@ is not used for upload, this buffer will not be allocated at all.
DO NOT set this option on a handle that is currently used for an active
transfer as that may lead to unintended consequences.
.SH DEFAULT
-64 kB
+65536 bytes
.SH PROTOCOLS
All
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_URL.3 b/docs/libcurl/opts/CURLOPT_URL.3
index 564bd6bd8..948401031 100644
--- a/docs/libcurl/opts/CURLOPT_URL.3
+++ b/docs/libcurl/opts/CURLOPT_URL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_URL \- URL for this transfer
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/docs/libcurl/opts/CURLOPT_USERAGENT.3
index d4fc53da4..6b31eea8c 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.3
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERAGENT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_USERAGENT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERAGENT \- HTTP user-agent header
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.3 b/docs/libcurl/opts/CURLOPT_USERNAME.3
index 27370a1c5..fa59bc9d0 100644
--- a/docs/libcurl/opts/CURLOPT_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_USERNAME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERNAME 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_USERNAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.3 b/docs/libcurl/opts/CURLOPT_USERPWD.3
index 8f7a5d575..8f6ad6ba2 100644
--- a/docs/libcurl/opts/CURLOPT_USERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_USERPWD.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERPWD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_USERPWD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/docs/libcurl/opts/CURLOPT_USE_SSL.3
index 3b7baea88..652d57464 100644
--- a/docs/libcurl/opts/CURLOPT_USE_SSL.3
+++ b/docs/libcurl/opts/CURLOPT_USE_SSL.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USE_SSL 3 "November 30, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_USE_SSL 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
@@ -58,7 +60,7 @@ 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);
+ curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
/* Perform the request */
curl_easy_perform(curl);
@@ -67,7 +69,7 @@ if(curl) {
.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_*
-Handled by LDAP since 7.81.0. Fully supported by the openldap backend only.
+Handled by LDAP since 7.81.0. Fully supported by the OpenLDAP backend only.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/docs/libcurl/opts/CURLOPT_VERBOSE.3
index ee5b38d1a..4a2248422 100644
--- a/docs/libcurl/opts/CURLOPT_VERBOSE.3
+++ b/docs/libcurl/opts/CURLOPT_VERBOSE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_VERBOSE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_VERBOSE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_VERBOSE \- verbose mode
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
index fd6551072..f007c82ec 100644
--- a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
+++ b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WILDCARDMATCH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_WILDCARDMATCH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_WILDCARDMATCH \- directory wildcard transfers
@@ -33,8 +35,8 @@ 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).
+\fICURLOPT_URL(3)\fP option, using an \fBfnmatch\fP-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
@@ -43,14 +45,18 @@ can provide your own matching function by the
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). Only two asterisks are allowed within the same pattern string.
+.nf
+ ftp://example.com/some/path/*.txt
+.fi
+for all txt's from the root directory. Only two asterisks are allowed within
+the same pattern string.
.RE
.RS
.IP "? - QUESTION MARK"
Question mark matches any (exactly one) character.
-
-\&ftp://example.com/some/path/\fBphoto?.jpeg\fP
+.nf
+ ftp://example.com/some/path/photo?.jpg
+.fi
.RE
.RS
.IP "[ - BRACKET EXPRESSION"
@@ -64,37 +70,36 @@ right bracket and matches exactly one character. Some examples follow:
\fB[^abc]\fP or \fB[!abc]\fP - negation
-\fB[[:\fP\fIname\fP\fB:]]\fP class expression. Supported classes are
+\fB[[:name:]]\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 '\\'.
+\fB[\\[\\]\\\\]\fP - escape syntax. Matches '[', ']' or '\e'.
Using the rules above, a file name pattern can be constructed:
-
-\&ftp://example.com/some/path/\fB[a-z[:upper:]\\\\].jpeg\fP
-.RE
-.PP
+.nf
+ ftp://example.com/some/path/[a-z[:upper:]\\\\].jpg
+.fi
.SH PROTOCOLS
This feature is only supported for FTP download.
.SH EXAMPLE
.nf
- /* initialization of easy handle */
- handle = curl_easy_init();
+/* initialization of easy handle */
+handle = curl_easy_init();
- /* turn on wildcard matching */
- curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
+/* turn on wildcard matching */
+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_coming);
+/* callback is called before download of concrete file started */
+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);
- /* See more on https://curl.se/libcurl/c/ftp-wildcard.html */
+/* See more on https://curl.se/libcurl/c/ftp-wildcard.html */
.fi
.SH AVAILABILITY
Added in 7.21.0
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
index ed82ef186..6db7207df 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WRITEDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_WRITEDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_WRITEDATA \- pointer passed to the write callback
@@ -32,10 +34,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);
.fi
.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 will get in that
-callback's 4th argument. If you do not 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.
+\fICURLOPT_WRITEFUNCTION(3)\fP option, this is the pointer you will get in
+that callback's fourth and last argument. If you do not 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 has not been set.
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
index 3ffe72262..ef3dac4c2 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WRITEFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_WRITEFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_WRITEFUNCTION \- callback for writing received data
diff --git a/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3
new file mode 100644
index 000000000..c11e90164
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3
@@ -0,0 +1,70 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_WS_OPTIONS 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_WS_OPTIONS \- WebSocket behavior options
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WS_OPTIONS, long bitmask);
+.fi
+.SH DESCRIPTION
+Pass a long with a bitmask to tell libcurl about specific WebSocket
+behaviors.
+
+To detach a WebSocket connection and use the \fIcurl_ws_send(3)\fP and
+\fIcurl_ws_recv(3)\fP functions after the HTTP upgrade procedure, set the
+\fICURLOPT_CONNECT_ONLY(3)\fP option to 2L.
+
+Available bits in the bitmask
+.IP "CURLWS_RAW_MODE (1)"
+Deliver "raw" WebSocket traffic to the \fICURLOPT_WRITEFUNCTION(3)\fP
+callback.
+
+In raw mode, libcurl does not handle pings or any other frame for the
+application.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+WebSocket
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "ws://example.com/");
+ /* tell curl we deal with all the WebSocket magic ourselves */
+ curl_easy_setopt(curl, CURLOPT_WS_OPTIONS, (long)CURLWS_RAW_MODE);
+ ret = curl_easy_perform(curl);
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.85.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_ws_recv "(3), " curl_ws_send "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
index a9ff6d5ab..657d4cdf7 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XFERINFODATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFODATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_XFERINFODATA \- pointer passed to the progress callback
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
index d262abf0c..ebbd31587 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XFERINFOFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFOFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_XFERINFOFUNCTION \- progress meter callback
@@ -91,7 +93,7 @@ All
curl_off_t ultotal,
curl_off_t ulnow)
{
- struct memory *progress = (struct progress *)userp;
+ struct progress *memory = (struct progress *)clientp;
/* use the values */
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
index e4c10daed..5d88858ae 100644
--- a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
+++ b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XOAUTH2_BEARER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_XOAUTH2_BEARER 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_XOAUTH2_BEARER \- OAuth 2.0 access token
@@ -32,18 +34,18 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);
.fi
.SH DESCRIPTION
Pass a char * as parameter, which should point to the null-terminated OAuth
-2.0 Bearer Access Token for use with HTTP, IMAP, POP3 and SMTP servers
+2.0 Bearer Access Token for use with HTTP, IMAP, LDAP, POP3 and SMTP servers
that support the OAuth 2.0 Authorization Framework.
-Note: For IMAP, POP3 and SMTP, the user name used to generate the Bearer Token
-should be supplied via the \fICURLOPT_USERNAME(3)\fP option.
+Note: For IMAP, LDAP, POP3 and SMTP, the user name used to generate the
+Bearer Token should be supplied via the \fICURLOPT_USERNAME(3)\fP option.
The application does not have to keep the string around after setting this
option.
.SH DEFAULT
NULL
.SH PROTOCOLS
-IMAP, POP3 and SMTP
+HTTP, IMAP, LDAP, POP3 and SMTP
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
@@ -55,7 +57,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.33.0
+Added in 7.33.0. Support for OpenLDAP added in 7.82.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.
diff --git a/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3 b/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3
index ac50a1dc5..042679db0 100644
--- a/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3
+++ b/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH CURLSHOPT_LOCKFUNC 3 "November 12, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_LOCKFUNC 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
CURLSHOPT_LOCKFUNC - mutex lock callback
@@ -35,7 +37,7 @@ CURLSHcode curl_share_setopt(CURLSH *share, CURLSHOPT_LOCKFUNC, lockcb);
.SH DESCRIPTION
Set a mutex lock callback for the share object, to allow it to get used by
multiple threads concurrently. There's a corresponding
-\fICURLSHOPT_UNLOCKFUNC(3)\fP callback called when the mutex is again relased.
+\fICURLSHOPT_UNLOCKFUNC(3)\fP callback called when the mutex is again released.
The \fIlockcb\fP argument must be a pointer to a function matching the
prototype shown above. The arguments to the callback are:
@@ -54,7 +56,7 @@ This pointer is not used by libcurl itself.
All
.SH EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_LOCKFUNC, mutex_lock);
if(sh)
diff --git a/docs/libcurl/opts/CURLSHOPT_SHARE.3 b/docs/libcurl/opts/CURLSHOPT_SHARE.3
index 90c6eedc1..b30cc0fa4 100644
--- a/docs/libcurl/opts/CURLSHOPT_SHARE.3
+++ b/docs/libcurl/opts/CURLSHOPT_SHARE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH CURLSHOPT_SHARE 3 "November 12, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_SHARE 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
CURLSHOPT_SHARE - add data to share
@@ -81,7 +83,7 @@ multi handle will share PSL cache by default without using this option.
All
.SH EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
if(sh)
diff --git a/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3 b/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3
index 00bc4907e..5433896c0 100644
--- a/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3
+++ b/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH CURLSHOPT_UNLOCKFUNC 3 "November 12, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_UNLOCKFUNC 3 "September 28, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
CURLSHOPT_UNLOCKFUNC - mutex unlock callback
@@ -27,8 +29,7 @@ CURLSHOPT_UNLOCKFUNC - mutex unlock callback
.nf
#include <curl/curl.h>
-void unlockcb(CURL *handle, curl_lock_data data, curl_lock_access access,
- void *userptr);
+void unlockcb(CURL *handle, curl_lock_data data, void *userptr);
CURLSHcode curl_share_setopt(CURLSH *share, CURLSHOPT_UNLOCKFUNC, unlockcb);
.fi
@@ -45,15 +46,13 @@ is released.
The \fIdata\fP argument tells what kind of data libcurl wants to unlock. Make
sure that the callback uses a different lock for each kind of data.
-\fIaccess\fP defines what access type libcurl wants, shared or single.
-
\fIuserptr\fP is the private pointer you set with \fICURLSHOPT_USERDATA\fP.
This pointer is not used by libcurl itself.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, mutex_unlock);
if(sh)
diff --git a/docs/libcurl/opts/CURLSHOPT_UNSHARE.3 b/docs/libcurl/opts/CURLSHOPT_UNSHARE.3
index 2d8a2cdf9..3fab208c9 100644
--- a/docs/libcurl/opts/CURLSHOPT_UNSHARE.3
+++ b/docs/libcurl/opts/CURLSHOPT_UNSHARE.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,8 +18,10 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH CURLSHOPT_UNSHARE 3 "November 12, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_UNSHARE 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
CURLSHOPT_UNSHARE - remove data to share
@@ -54,7 +56,7 @@ The Public Suffix List is no longer shared.
All
.SH EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_COOKIE);
if(sh)
diff --git a/docs/libcurl/opts/CURLSHOPT_USERDATA.3 b/docs/libcurl/opts/CURLSHOPT_USERDATA.3
index 77f98422b..244f91a98 100644
--- a/docs/libcurl/opts/CURLSHOPT_USERDATA.3
+++ b/docs/libcurl/opts/CURLSHOPT_USERDATA.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,11 +18,13 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
-.TH CURLSHOPT_USERDATA 3 "December 09, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_USERDATA 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
.SH NAME
-CURLSHOPT_USERDATA - pointer passed to the (un)lock mutex callbacks
+CURLSHOPT_USERDATA - pointer passed to the lock and unlock mutex callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -37,7 +39,7 @@ and \fICURLSHOPT_UNLOCKFUNC(3)\fP.
All
.SH EXAMPLE
.nf
- CURLSHcode sh
+ CURLSHcode sh;
struct secrets private_stuff;
share = curl_share_init();
sh = curl_share_setopt(share, CURLSHOPT_USERDATA, &private_stuff);
diff --git a/docs/libcurl/opts/Makefile.am b/docs/libcurl/opts/Makefile.am
index 6596ae357..e952cd973 100644
--- a/docs/libcurl/opts/Makefile.am
+++ b/docs/libcurl/opts/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign no-dependencies
diff --git a/docs/libcurl/opts/Makefile.in b/docs/libcurl/opts/Makefile.in
index 63fa5aa3a..18e336b65 100644
--- a/docs/libcurl/opts/Makefile.in
+++ b/docs/libcurl/opts/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#***************************************************************************
@@ -43,7 +45,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -56,6 +58,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Shared between Makefile.am and CMakeLists.txt
VPATH = @srcdir@
@@ -134,15 +138,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = docs/libcurl/opts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -266,6 +268,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -283,6 +286,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -340,6 +344,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -358,12 +363,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -430,7 +436,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -441,6 +446,8 @@ man_MANS = \
CURLINFO_ACTIVESOCKET.3 \
CURLINFO_APPCONNECT_TIME.3 \
CURLINFO_APPCONNECT_TIME_T.3 \
+ CURLINFO_CAINFO.3 \
+ CURLINFO_CAPATH.3 \
CURLINFO_CERTINFO.3 \
CURLINFO_CONDITION_UNMET.3 \
CURLINFO_CONNECT_TIME.3 \
@@ -457,9 +464,9 @@ man_MANS = \
CURLINFO_FILETIME_T.3 \
CURLINFO_FTP_ENTRY_PATH.3 \
CURLINFO_HEADER_SIZE.3 \
- CURLINFO_HTTPAUTH_AVAIL.3 \
CURLINFO_HTTP_CONNECTCODE.3 \
CURLINFO_HTTP_VERSION.3 \
+ CURLINFO_HTTPAUTH_AVAIL.3 \
CURLINFO_LASTSOCKET.3 \
CURLINFO_LOCAL_IP.3 \
CURLINFO_LOCAL_PORT.3 \
@@ -507,11 +514,11 @@ man_MANS = \
CURLINFO_TOTAL_TIME_T.3 \
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 \
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 \
- CURLMOPT_MAXCONNECTS.3 \
CURLMOPT_MAX_CONCURRENT_STREAMS.3 \
CURLMOPT_MAX_HOST_CONNECTIONS.3 \
CURLMOPT_MAX_PIPELINE_LENGTH.3 \
CURLMOPT_MAX_TOTAL_CONNECTIONS.3 \
+ CURLMOPT_MAXCONNECTS.3 \
CURLMOPT_PIPELINING.3 \
CURLMOPT_PIPELINING_SERVER_BL.3 \
CURLMOPT_PIPELINING_SITE_BL.3 \
@@ -522,13 +529,14 @@ man_MANS = \
CURLMOPT_TIMERDATA.3 \
CURLMOPT_TIMERFUNCTION.3 \
CURLOPT_ABSTRACT_UNIX_SOCKET.3 \
- CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_ACCEPT_ENCODING.3 \
+ CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_ADDRESS_SCOPE.3 \
CURLOPT_ALTSVC.3 \
CURLOPT_ALTSVC_CTRL.3 \
CURLOPT_APPEND.3 \
CURLOPT_AUTOREFERER.3 \
+ CURLOPT_AWS_SIGV4.3 \
CURLOPT_BUFFERSIZE.3 \
CURLOPT_CAINFO.3 \
CURLOPT_CAINFO_BLOB.3 \
@@ -539,10 +547,10 @@ man_MANS = \
CURLOPT_CHUNK_END_FUNCTION.3 \
CURLOPT_CLOSESOCKETDATA.3 \
CURLOPT_CLOSESOCKETFUNCTION.3 \
- CURLOPT_CONNECTTIMEOUT.3 \
- CURLOPT_CONNECTTIMEOUT_MS.3 \
CURLOPT_CONNECT_ONLY.3 \
CURLOPT_CONNECT_TO.3 \
+ CURLOPT_CONNECTTIMEOUT.3 \
+ CURLOPT_CONNECTTIMEOUT_MS.3 \
CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 \
CURLOPT_CONV_FROM_UTF8_FUNCTION.3 \
CURLOPT_CONV_TO_NETWORK_FUNCTION.3 \
@@ -582,18 +590,17 @@ man_MANS = \
CURLOPT_FOLLOWLOCATION.3 \
CURLOPT_FORBID_REUSE.3 \
CURLOPT_FRESH_CONNECT.3 \
- CURLOPT_FTPPORT.3 \
- CURLOPT_FTPSSLAUTH.3 \
CURLOPT_FTP_ACCOUNT.3 \
CURLOPT_FTP_ALTERNATIVE_TO_USER.3 \
CURLOPT_FTP_CREATE_MISSING_DIRS.3 \
CURLOPT_FTP_FILEMETHOD.3 \
- CURLOPT_FTP_RESPONSE_TIMEOUT.3 \
CURLOPT_FTP_SKIP_PASV_IP.3 \
CURLOPT_FTP_SSL_CCC.3 \
CURLOPT_FTP_USE_EPRT.3 \
CURLOPT_FTP_USE_EPSV.3 \
CURLOPT_FTP_USE_PRET.3 \
+ CURLOPT_FTPPORT.3 \
+ CURLOPT_FTPSSLAUTH.3 \
CURLOPT_GSSAPI_DELEGATION.3 \
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 \
CURLOPT_HAPROXYPROTOCOL.3 \
@@ -602,21 +609,21 @@ man_MANS = \
CURLOPT_HEADERFUNCTION.3 \
CURLOPT_HEADEROPT.3 \
CURLOPT_HSTS.3 \
+ CURLOPT_HSTS_CTRL.3 \
CURLOPT_HSTSREADDATA.3 \
CURLOPT_HSTSREADFUNCTION.3 \
CURLOPT_HSTSWRITEDATA.3 \
CURLOPT_HSTSWRITEFUNCTION.3 \
- CURLOPT_HSTS_CTRL.3 \
CURLOPT_HTTP09_ALLOWED.3 \
CURLOPT_HTTP200ALIASES.3 \
+ CURLOPT_HTTP_CONTENT_DECODING.3 \
+ CURLOPT_HTTP_TRANSFER_DECODING.3 \
+ CURLOPT_HTTP_VERSION.3 \
CURLOPT_HTTPAUTH.3 \
CURLOPT_HTTPGET.3 \
CURLOPT_HTTPHEADER.3 \
CURLOPT_HTTPPOST.3 \
CURLOPT_HTTPPROXYTUNNEL.3 \
- CURLOPT_HTTP_CONTENT_DECODING.3 \
- CURLOPT_HTTP_TRANSFER_DECODING.3 \
- CURLOPT_HTTP_VERSION.3 \
CURLOPT_IGNORE_CONTENT_LENGTH.3 \
CURLOPT_INFILESIZE.3 \
CURLOPT_INFILESIZE_LARGE.3 \
@@ -640,16 +647,16 @@ man_MANS = \
CURLOPT_MAIL_FROM.3 \
CURLOPT_MAIL_RCPT.3 \
CURLOPT_MAIL_RCPT_ALLLOWFAILS.3 \
+ CURLOPT_MAX_RECV_SPEED_LARGE.3 \
+ CURLOPT_MAX_SEND_SPEED_LARGE.3 \
CURLOPT_MAXAGE_CONN.3 \
CURLOPT_MAXCONNECTS.3 \
CURLOPT_MAXFILESIZE.3 \
CURLOPT_MAXFILESIZE_LARGE.3 \
CURLOPT_MAXLIFETIME_CONN.3 \
CURLOPT_MAXREDIRS.3 \
- CURLOPT_MAX_RECV_SPEED_LARGE.3 \
- CURLOPT_MAX_SEND_SPEED_LARGE.3 \
- CURLOPT_MIMEPOST.3 \
CURLOPT_MIME_OPTIONS.3 \
+ CURLOPT_MIMEPOST.3 \
CURLOPT_NETRC.3 \
CURLOPT_NETRC_FILE.3 \
CURLOPT_NEW_DIRECTORY_PERMS.3 \
@@ -671,31 +678,29 @@ man_MANS = \
CURLOPT_POSTFIELDSIZE_LARGE.3 \
CURLOPT_POSTQUOTE.3 \
CURLOPT_POSTREDIR.3 \
+ CURLOPT_PRE_PROXY.3 \
CURLOPT_PREQUOTE.3 \
CURLOPT_PREREQDATA.3 \
CURLOPT_PREREQFUNCTION.3 \
- CURLOPT_PRE_PROXY.3 \
CURLOPT_PRIVATE.3 \
CURLOPT_PROGRESSDATA.3 \
CURLOPT_PROGRESSFUNCTION.3 \
CURLOPT_PROTOCOLS.3 \
+ CURLOPT_PROTOCOLS_STR.3 \
CURLOPT_PROXY.3 \
- CURLOPT_PROXYAUTH.3 \
- CURLOPT_PROXYHEADER.3 \
- CURLOPT_PROXYPASSWORD.3 \
- CURLOPT_PROXYPORT.3 \
- CURLOPT_PROXYTYPE.3 \
- CURLOPT_PROXYUSERNAME.3 \
- CURLOPT_PROXYUSERPWD.3 \
CURLOPT_PROXY_CAINFO.3 \
CURLOPT_PROXY_CAINFO_BLOB.3 \
CURLOPT_PROXY_CAPATH.3 \
CURLOPT_PROXY_CRLFILE.3 \
- CURLOPT_PROXY_KEYPASSWD.3 \
CURLOPT_PROXY_ISSUERCERT.3 \
CURLOPT_PROXY_ISSUERCERT_BLOB.3 \
+ CURLOPT_PROXY_KEYPASSWD.3 \
CURLOPT_PROXY_PINNEDPUBLICKEY.3 \
CURLOPT_PROXY_SERVICE_NAME.3 \
+ CURLOPT_PROXY_SSL_CIPHER_LIST.3 \
+ CURLOPT_PROXY_SSL_OPTIONS.3 \
+ CURLOPT_PROXY_SSL_VERIFYHOST.3 \
+ CURLOPT_PROXY_SSL_VERIFYPEER.3 \
CURLOPT_PROXY_SSLCERT.3 \
CURLOPT_PROXY_SSLCERT_BLOB.3 \
CURLOPT_PROXY_SSLCERTTYPE.3 \
@@ -703,15 +708,18 @@ man_MANS = \
CURLOPT_PROXY_SSLKEY_BLOB.3 \
CURLOPT_PROXY_SSLKEYTYPE.3 \
CURLOPT_PROXY_SSLVERSION.3 \
- CURLOPT_PROXY_SSL_CIPHER_LIST.3 \
- CURLOPT_PROXY_SSL_OPTIONS.3 \
- CURLOPT_PROXY_SSL_VERIFYHOST.3 \
- CURLOPT_PROXY_SSL_VERIFYPEER.3 \
CURLOPT_PROXY_TLS13_CIPHERS.3 \
CURLOPT_PROXY_TLSAUTH_PASSWORD.3 \
CURLOPT_PROXY_TLSAUTH_TYPE.3 \
CURLOPT_PROXY_TLSAUTH_USERNAME.3 \
CURLOPT_PROXY_TRANSFER_MODE.3 \
+ CURLOPT_PROXYAUTH.3 \
+ CURLOPT_PROXYHEADER.3 \
+ CURLOPT_PROXYPASSWORD.3 \
+ CURLOPT_PROXYPORT.3 \
+ CURLOPT_PROXYTYPE.3 \
+ CURLOPT_PROXYUSERNAME.3 \
+ CURLOPT_PROXYUSERPWD.3 \
CURLOPT_PUT.3 \
CURLOPT_QUOTE.3 \
CURLOPT_RANDOM_FILE.3 \
@@ -719,6 +727,7 @@ man_MANS = \
CURLOPT_READDATA.3 \
CURLOPT_READFUNCTION.3 \
CURLOPT_REDIR_PROTOCOLS.3 \
+ CURLOPT_REDIR_PROTOCOLS_STR.3 \
CURLOPT_REFERER.3 \
CURLOPT_REQUEST_TARGET.3 \
CURLOPT_RESOLVE.3 \
@@ -736,6 +745,7 @@ man_MANS = \
CURLOPT_SASL_IR.3 \
CURLOPT_SEEKDATA.3 \
CURLOPT_SEEKFUNCTION.3 \
+ CURLOPT_SERVER_RESPONSE_TIMEOUT.3 \
CURLOPT_SERVICE_NAME.3 \
CURLOPT_SHARE.3 \
CURLOPT_SOCKOPTDATA.3 \
@@ -752,15 +762,6 @@ man_MANS = \
CURLOPT_SSH_KNOWNHOSTS.3 \
CURLOPT_SSH_PRIVATE_KEYFILE.3 \
CURLOPT_SSH_PUBLIC_KEYFILE.3 \
- CURLOPT_SSLCERT.3 \
- CURLOPT_SSLCERT_BLOB.3 \
- CURLOPT_SSLCERTTYPE.3 \
- CURLOPT_SSLENGINE.3 \
- CURLOPT_SSLENGINE_DEFAULT.3 \
- CURLOPT_SSLKEY.3 \
- CURLOPT_SSLKEY_BLOB.3 \
- CURLOPT_SSLKEYTYPE.3 \
- CURLOPT_SSLVERSION.3 \
CURLOPT_SSL_CIPHER_LIST.3 \
CURLOPT_SSL_CTX_DATA.3 \
CURLOPT_SSL_CTX_FUNCTION.3 \
@@ -773,6 +774,15 @@ man_MANS = \
CURLOPT_SSL_VERIFYHOST.3 \
CURLOPT_SSL_VERIFYPEER.3 \
CURLOPT_SSL_VERIFYSTATUS.3 \
+ CURLOPT_SSLCERT.3 \
+ CURLOPT_SSLCERT_BLOB.3 \
+ CURLOPT_SSLCERTTYPE.3 \
+ CURLOPT_SSLENGINE.3 \
+ CURLOPT_SSLENGINE_DEFAULT.3 \
+ CURLOPT_SSLKEY.3 \
+ CURLOPT_SSLKEY_BLOB.3 \
+ CURLOPT_SSLKEYTYPE.3 \
+ CURLOPT_SSLVERSION.3 \
CURLOPT_STDERR.3 \
CURLOPT_STREAM_DEPENDS.3 \
CURLOPT_STREAM_DEPENDS_E.3 \
@@ -797,23 +807,23 @@ man_MANS = \
CURLOPT_TLSAUTH_USERNAME.3 \
CURLOPT_TRAILERDATA.3 \
CURLOPT_TRAILERFUNCTION.3 \
- CURLOPT_TRANSFERTEXT.3 \
CURLOPT_TRANSFER_ENCODING.3 \
+ CURLOPT_TRANSFERTEXT.3 \
CURLOPT_UNIX_SOCKET_PATH.3 \
CURLOPT_UNRESTRICTED_AUTH.3 \
CURLOPT_UPKEEP_INTERVAL_MS.3 \
CURLOPT_UPLOAD.3 \
CURLOPT_UPLOAD_BUFFERSIZE.3 \
CURLOPT_URL.3 \
+ CURLOPT_USE_SSL.3 \
CURLOPT_USERAGENT.3 \
CURLOPT_USERNAME.3 \
CURLOPT_USERPWD.3 \
- CURLOPT_USE_SSL.3 \
- CURLOPT_AWS_SIGV4.3 \
CURLOPT_VERBOSE.3 \
CURLOPT_WILDCARDMATCH.3 \
CURLOPT_WRITEDATA.3 \
CURLOPT_WRITEFUNCTION.3 \
+ CURLOPT_WS_OPTIONS.3 \
CURLOPT_XFERINFODATA.3 \
CURLOPT_XFERINFOFUNCTION.3 \
CURLOPT_XOAUTH2_BEARER.3 \
diff --git a/docs/libcurl/opts/Makefile.inc b/docs/libcurl/opts/Makefile.inc
index 5a270a8a9..a139d0676 100644
--- a/docs/libcurl/opts/Makefile.inc
+++ b/docs/libcurl/opts/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Shared between Makefile.am and CMakeLists.txt
@@ -25,6 +27,8 @@ man_MANS = \
CURLINFO_ACTIVESOCKET.3 \
CURLINFO_APPCONNECT_TIME.3 \
CURLINFO_APPCONNECT_TIME_T.3 \
+ CURLINFO_CAINFO.3 \
+ CURLINFO_CAPATH.3 \
CURLINFO_CERTINFO.3 \
CURLINFO_CONDITION_UNMET.3 \
CURLINFO_CONNECT_TIME.3 \
@@ -41,9 +45,9 @@ man_MANS = \
CURLINFO_FILETIME_T.3 \
CURLINFO_FTP_ENTRY_PATH.3 \
CURLINFO_HEADER_SIZE.3 \
- CURLINFO_HTTPAUTH_AVAIL.3 \
CURLINFO_HTTP_CONNECTCODE.3 \
CURLINFO_HTTP_VERSION.3 \
+ CURLINFO_HTTPAUTH_AVAIL.3 \
CURLINFO_LASTSOCKET.3 \
CURLINFO_LOCAL_IP.3 \
CURLINFO_LOCAL_PORT.3 \
@@ -91,11 +95,11 @@ man_MANS = \
CURLINFO_TOTAL_TIME_T.3 \
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 \
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 \
- CURLMOPT_MAXCONNECTS.3 \
CURLMOPT_MAX_CONCURRENT_STREAMS.3 \
CURLMOPT_MAX_HOST_CONNECTIONS.3 \
CURLMOPT_MAX_PIPELINE_LENGTH.3 \
CURLMOPT_MAX_TOTAL_CONNECTIONS.3 \
+ CURLMOPT_MAXCONNECTS.3 \
CURLMOPT_PIPELINING.3 \
CURLMOPT_PIPELINING_SERVER_BL.3 \
CURLMOPT_PIPELINING_SITE_BL.3 \
@@ -106,13 +110,14 @@ man_MANS = \
CURLMOPT_TIMERDATA.3 \
CURLMOPT_TIMERFUNCTION.3 \
CURLOPT_ABSTRACT_UNIX_SOCKET.3 \
- CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_ACCEPT_ENCODING.3 \
+ CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_ADDRESS_SCOPE.3 \
CURLOPT_ALTSVC.3 \
CURLOPT_ALTSVC_CTRL.3 \
CURLOPT_APPEND.3 \
CURLOPT_AUTOREFERER.3 \
+ CURLOPT_AWS_SIGV4.3 \
CURLOPT_BUFFERSIZE.3 \
CURLOPT_CAINFO.3 \
CURLOPT_CAINFO_BLOB.3 \
@@ -123,10 +128,10 @@ man_MANS = \
CURLOPT_CHUNK_END_FUNCTION.3 \
CURLOPT_CLOSESOCKETDATA.3 \
CURLOPT_CLOSESOCKETFUNCTION.3 \
- CURLOPT_CONNECTTIMEOUT.3 \
- CURLOPT_CONNECTTIMEOUT_MS.3 \
CURLOPT_CONNECT_ONLY.3 \
CURLOPT_CONNECT_TO.3 \
+ CURLOPT_CONNECTTIMEOUT.3 \
+ CURLOPT_CONNECTTIMEOUT_MS.3 \
CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 \
CURLOPT_CONV_FROM_UTF8_FUNCTION.3 \
CURLOPT_CONV_TO_NETWORK_FUNCTION.3 \
@@ -166,18 +171,17 @@ man_MANS = \
CURLOPT_FOLLOWLOCATION.3 \
CURLOPT_FORBID_REUSE.3 \
CURLOPT_FRESH_CONNECT.3 \
- CURLOPT_FTPPORT.3 \
- CURLOPT_FTPSSLAUTH.3 \
CURLOPT_FTP_ACCOUNT.3 \
CURLOPT_FTP_ALTERNATIVE_TO_USER.3 \
CURLOPT_FTP_CREATE_MISSING_DIRS.3 \
CURLOPT_FTP_FILEMETHOD.3 \
- CURLOPT_FTP_RESPONSE_TIMEOUT.3 \
CURLOPT_FTP_SKIP_PASV_IP.3 \
CURLOPT_FTP_SSL_CCC.3 \
CURLOPT_FTP_USE_EPRT.3 \
CURLOPT_FTP_USE_EPSV.3 \
CURLOPT_FTP_USE_PRET.3 \
+ CURLOPT_FTPPORT.3 \
+ CURLOPT_FTPSSLAUTH.3 \
CURLOPT_GSSAPI_DELEGATION.3 \
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 \
CURLOPT_HAPROXYPROTOCOL.3 \
@@ -186,21 +190,21 @@ man_MANS = \
CURLOPT_HEADERFUNCTION.3 \
CURLOPT_HEADEROPT.3 \
CURLOPT_HSTS.3 \
+ CURLOPT_HSTS_CTRL.3 \
CURLOPT_HSTSREADDATA.3 \
CURLOPT_HSTSREADFUNCTION.3 \
CURLOPT_HSTSWRITEDATA.3 \
CURLOPT_HSTSWRITEFUNCTION.3 \
- CURLOPT_HSTS_CTRL.3 \
CURLOPT_HTTP09_ALLOWED.3 \
CURLOPT_HTTP200ALIASES.3 \
+ CURLOPT_HTTP_CONTENT_DECODING.3 \
+ CURLOPT_HTTP_TRANSFER_DECODING.3 \
+ CURLOPT_HTTP_VERSION.3 \
CURLOPT_HTTPAUTH.3 \
CURLOPT_HTTPGET.3 \
CURLOPT_HTTPHEADER.3 \
CURLOPT_HTTPPOST.3 \
CURLOPT_HTTPPROXYTUNNEL.3 \
- CURLOPT_HTTP_CONTENT_DECODING.3 \
- CURLOPT_HTTP_TRANSFER_DECODING.3 \
- CURLOPT_HTTP_VERSION.3 \
CURLOPT_IGNORE_CONTENT_LENGTH.3 \
CURLOPT_INFILESIZE.3 \
CURLOPT_INFILESIZE_LARGE.3 \
@@ -224,16 +228,16 @@ man_MANS = \
CURLOPT_MAIL_FROM.3 \
CURLOPT_MAIL_RCPT.3 \
CURLOPT_MAIL_RCPT_ALLLOWFAILS.3 \
+ CURLOPT_MAX_RECV_SPEED_LARGE.3 \
+ CURLOPT_MAX_SEND_SPEED_LARGE.3 \
CURLOPT_MAXAGE_CONN.3 \
CURLOPT_MAXCONNECTS.3 \
CURLOPT_MAXFILESIZE.3 \
CURLOPT_MAXFILESIZE_LARGE.3 \
CURLOPT_MAXLIFETIME_CONN.3 \
CURLOPT_MAXREDIRS.3 \
- CURLOPT_MAX_RECV_SPEED_LARGE.3 \
- CURLOPT_MAX_SEND_SPEED_LARGE.3 \
- CURLOPT_MIMEPOST.3 \
CURLOPT_MIME_OPTIONS.3 \
+ CURLOPT_MIMEPOST.3 \
CURLOPT_NETRC.3 \
CURLOPT_NETRC_FILE.3 \
CURLOPT_NEW_DIRECTORY_PERMS.3 \
@@ -255,31 +259,29 @@ man_MANS = \
CURLOPT_POSTFIELDSIZE_LARGE.3 \
CURLOPT_POSTQUOTE.3 \
CURLOPT_POSTREDIR.3 \
+ CURLOPT_PRE_PROXY.3 \
CURLOPT_PREQUOTE.3 \
CURLOPT_PREREQDATA.3 \
CURLOPT_PREREQFUNCTION.3 \
- CURLOPT_PRE_PROXY.3 \
CURLOPT_PRIVATE.3 \
CURLOPT_PROGRESSDATA.3 \
CURLOPT_PROGRESSFUNCTION.3 \
CURLOPT_PROTOCOLS.3 \
+ CURLOPT_PROTOCOLS_STR.3 \
CURLOPT_PROXY.3 \
- CURLOPT_PROXYAUTH.3 \
- CURLOPT_PROXYHEADER.3 \
- CURLOPT_PROXYPASSWORD.3 \
- CURLOPT_PROXYPORT.3 \
- CURLOPT_PROXYTYPE.3 \
- CURLOPT_PROXYUSERNAME.3 \
- CURLOPT_PROXYUSERPWD.3 \
CURLOPT_PROXY_CAINFO.3 \
CURLOPT_PROXY_CAINFO_BLOB.3 \
CURLOPT_PROXY_CAPATH.3 \
CURLOPT_PROXY_CRLFILE.3 \
- CURLOPT_PROXY_KEYPASSWD.3 \
CURLOPT_PROXY_ISSUERCERT.3 \
CURLOPT_PROXY_ISSUERCERT_BLOB.3 \
+ CURLOPT_PROXY_KEYPASSWD.3 \
CURLOPT_PROXY_PINNEDPUBLICKEY.3 \
CURLOPT_PROXY_SERVICE_NAME.3 \
+ CURLOPT_PROXY_SSL_CIPHER_LIST.3 \
+ CURLOPT_PROXY_SSL_OPTIONS.3 \
+ CURLOPT_PROXY_SSL_VERIFYHOST.3 \
+ CURLOPT_PROXY_SSL_VERIFYPEER.3 \
CURLOPT_PROXY_SSLCERT.3 \
CURLOPT_PROXY_SSLCERT_BLOB.3 \
CURLOPT_PROXY_SSLCERTTYPE.3 \
@@ -287,15 +289,18 @@ man_MANS = \
CURLOPT_PROXY_SSLKEY_BLOB.3 \
CURLOPT_PROXY_SSLKEYTYPE.3 \
CURLOPT_PROXY_SSLVERSION.3 \
- CURLOPT_PROXY_SSL_CIPHER_LIST.3 \
- CURLOPT_PROXY_SSL_OPTIONS.3 \
- CURLOPT_PROXY_SSL_VERIFYHOST.3 \
- CURLOPT_PROXY_SSL_VERIFYPEER.3 \
CURLOPT_PROXY_TLS13_CIPHERS.3 \
CURLOPT_PROXY_TLSAUTH_PASSWORD.3 \
CURLOPT_PROXY_TLSAUTH_TYPE.3 \
CURLOPT_PROXY_TLSAUTH_USERNAME.3 \
CURLOPT_PROXY_TRANSFER_MODE.3 \
+ CURLOPT_PROXYAUTH.3 \
+ CURLOPT_PROXYHEADER.3 \
+ CURLOPT_PROXYPASSWORD.3 \
+ CURLOPT_PROXYPORT.3 \
+ CURLOPT_PROXYTYPE.3 \
+ CURLOPT_PROXYUSERNAME.3 \
+ CURLOPT_PROXYUSERPWD.3 \
CURLOPT_PUT.3 \
CURLOPT_QUOTE.3 \
CURLOPT_RANDOM_FILE.3 \
@@ -303,6 +308,7 @@ man_MANS = \
CURLOPT_READDATA.3 \
CURLOPT_READFUNCTION.3 \
CURLOPT_REDIR_PROTOCOLS.3 \
+ CURLOPT_REDIR_PROTOCOLS_STR.3 \
CURLOPT_REFERER.3 \
CURLOPT_REQUEST_TARGET.3 \
CURLOPT_RESOLVE.3 \
@@ -320,6 +326,7 @@ man_MANS = \
CURLOPT_SASL_IR.3 \
CURLOPT_SEEKDATA.3 \
CURLOPT_SEEKFUNCTION.3 \
+ CURLOPT_SERVER_RESPONSE_TIMEOUT.3 \
CURLOPT_SERVICE_NAME.3 \
CURLOPT_SHARE.3 \
CURLOPT_SOCKOPTDATA.3 \
@@ -336,15 +343,6 @@ man_MANS = \
CURLOPT_SSH_KNOWNHOSTS.3 \
CURLOPT_SSH_PRIVATE_KEYFILE.3 \
CURLOPT_SSH_PUBLIC_KEYFILE.3 \
- CURLOPT_SSLCERT.3 \
- CURLOPT_SSLCERT_BLOB.3 \
- CURLOPT_SSLCERTTYPE.3 \
- CURLOPT_SSLENGINE.3 \
- CURLOPT_SSLENGINE_DEFAULT.3 \
- CURLOPT_SSLKEY.3 \
- CURLOPT_SSLKEY_BLOB.3 \
- CURLOPT_SSLKEYTYPE.3 \
- CURLOPT_SSLVERSION.3 \
CURLOPT_SSL_CIPHER_LIST.3 \
CURLOPT_SSL_CTX_DATA.3 \
CURLOPT_SSL_CTX_FUNCTION.3 \
@@ -357,6 +355,15 @@ man_MANS = \
CURLOPT_SSL_VERIFYHOST.3 \
CURLOPT_SSL_VERIFYPEER.3 \
CURLOPT_SSL_VERIFYSTATUS.3 \
+ CURLOPT_SSLCERT.3 \
+ CURLOPT_SSLCERT_BLOB.3 \
+ CURLOPT_SSLCERTTYPE.3 \
+ CURLOPT_SSLENGINE.3 \
+ CURLOPT_SSLENGINE_DEFAULT.3 \
+ CURLOPT_SSLKEY.3 \
+ CURLOPT_SSLKEY_BLOB.3 \
+ CURLOPT_SSLKEYTYPE.3 \
+ CURLOPT_SSLVERSION.3 \
CURLOPT_STDERR.3 \
CURLOPT_STREAM_DEPENDS.3 \
CURLOPT_STREAM_DEPENDS_E.3 \
@@ -381,23 +388,23 @@ man_MANS = \
CURLOPT_TLSAUTH_USERNAME.3 \
CURLOPT_TRAILERDATA.3 \
CURLOPT_TRAILERFUNCTION.3 \
- CURLOPT_TRANSFERTEXT.3 \
CURLOPT_TRANSFER_ENCODING.3 \
+ CURLOPT_TRANSFERTEXT.3 \
CURLOPT_UNIX_SOCKET_PATH.3 \
CURLOPT_UNRESTRICTED_AUTH.3 \
CURLOPT_UPKEEP_INTERVAL_MS.3 \
CURLOPT_UPLOAD.3 \
CURLOPT_UPLOAD_BUFFERSIZE.3 \
CURLOPT_URL.3 \
+ CURLOPT_USE_SSL.3 \
CURLOPT_USERAGENT.3 \
CURLOPT_USERNAME.3 \
CURLOPT_USERPWD.3 \
- CURLOPT_USE_SSL.3 \
- CURLOPT_AWS_SIGV4.3 \
CURLOPT_VERBOSE.3 \
CURLOPT_WILDCARDMATCH.3 \
CURLOPT_WRITEDATA.3 \
CURLOPT_WRITEFUNCTION.3 \
+ CURLOPT_WS_OPTIONS.3 \
CURLOPT_XFERINFODATA.3 \
CURLOPT_XFERINFOFUNCTION.3 \
CURLOPT_XOAUTH2_BEARER.3 \
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index dfc8c04ec..d809940d7 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -12,12 +12,190 @@
Name Introduced Deprecated Last
+CURL_AT_LEAST_VERSION 7.43.0
+CURL_BLOB_COPY 7.71.0
+CURL_BLOB_NOCOPY 7.71.0
+CURL_CHUNK_BGN_FUNC_FAIL 7.21.0
+CURL_CHUNK_BGN_FUNC_OK 7.21.0
+CURL_CHUNK_BGN_FUNC_SKIP 7.21.0
+CURL_CHUNK_END_FUNC_FAIL 7.21.0
+CURL_CHUNK_END_FUNC_OK 7.21.0
+CURL_CSELECT_ERR 7.16.3
+CURL_CSELECT_IN 7.16.3
+CURL_CSELECT_OUT 7.16.3
+CURL_DID_MEMORY_FUNC_TYPEDEFS 7.49.0
+CURL_EASY_NONE 7.14.0 - 7.15.4
+CURL_EASY_TIMEOUT 7.14.0 - 7.15.4
+CURL_ERROR_SIZE 7.1
+CURL_FNMATCHFUNC_FAIL 7.21.0
+CURL_FNMATCHFUNC_MATCH 7.21.0
+CURL_FNMATCHFUNC_NOMATCH 7.21.0
+CURL_FORMADD_DISABLED 7.12.1 7.56.0
+CURL_FORMADD_ILLEGAL_ARRAY 7.9.8 7.56.0
+CURL_FORMADD_INCOMPLETE 7.9.8 7.56.0
+CURL_FORMADD_MEMORY 7.9.8 7.56.0
+CURL_FORMADD_NULL 7.9.8 7.56.0
+CURL_FORMADD_OK 7.9.8 7.56.0
+CURL_FORMADD_OPTION_TWICE 7.9.8 7.56.0
+CURL_FORMADD_UNKNOWN_OPTION 7.9.8 7.56.0
+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_HET_DEFAULT 7.59.0
+CURL_HTTP_VERSION_1_0 7.9.1
+CURL_HTTP_VERSION_1_1 7.9.1
+CURL_HTTP_VERSION_2 7.43.0
+CURL_HTTP_VERSION_2_0 7.33.0
+CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE 7.49.0
+CURL_HTTP_VERSION_2TLS 7.47.0
+CURL_HTTP_VERSION_3 7.66.0
+CURL_HTTP_VERSION_NONE 7.9.1
+CURL_HTTPPOST_BUFFER 7.46.0
+CURL_HTTPPOST_CALLBACK 7.46.0
+CURL_HTTPPOST_FILENAME 7.46.0
+CURL_HTTPPOST_LARGE 7.46.0
+CURL_HTTPPOST_PTRBUFFER 7.46.0
+CURL_HTTPPOST_PTRCONTENTS 7.46.0
+CURL_HTTPPOST_PTRNAME 7.46.0
+CURL_HTTPPOST_READFILE 7.46.0
+CURL_IPRESOLVE_V4 7.10.8
+CURL_IPRESOLVE_V6 7.10.8
+CURL_IPRESOLVE_WHATEVER 7.10.8
+CURL_ISOCPP 7.10.2
+CURL_LOCK_ACCESS_NONE 7.10.3
+CURL_LOCK_ACCESS_SHARED 7.10.3
+CURL_LOCK_ACCESS_SINGLE 7.10.3
+CURL_LOCK_DATA_CONNECT 7.10.3
+CURL_LOCK_DATA_COOKIE 7.10.3
+CURL_LOCK_DATA_DNS 7.10.3
+CURL_LOCK_DATA_NONE 7.10.3
+CURL_LOCK_DATA_PSL 7.61.0
+CURL_LOCK_DATA_SHARE 7.10.4
+CURL_LOCK_DATA_SSL_SESSION 7.10.3
+CURL_LOCK_TYPE_CONNECT 7.10 - 7.10.2
+CURL_LOCK_TYPE_COOKIE 7.10 - 7.10.2
+CURL_LOCK_TYPE_DNS 7.10 - 7.10.2
+CURL_LOCK_TYPE_NONE 7.10 - 7.10.2
+CURL_LOCK_TYPE_SSL_SESSION 7.10 - 7.10.2
+CURL_MAX_HTTP_HEADER 7.19.7
+CURL_MAX_READ_SIZE 7.53.0
+CURL_MAX_WRITE_SIZE 7.9.7
+CURL_NETRC_IGNORED 7.9.8
+CURL_NETRC_OPTIONAL 7.9.8
+CURL_NETRC_REQUIRED 7.9.8
+CURL_POLL_IN 7.14.0
+CURL_POLL_INOUT 7.14.0
+CURL_POLL_NONE 7.14.0
+CURL_POLL_OUT 7.14.0
+CURL_POLL_REMOVE 7.14.0
+CURL_PREREQFUNC_ABORT 7.79.0
+CURL_PREREQFUNC_OK 7.79.0
+CURL_PROGRESS_BAR 7.1.1 - 7.4.1
+CURL_PROGRESS_STATS 7.1.1 - 7.4.1
+CURL_PROGRESSFUNC_CONTINUE 7.68.0
+CURL_PULL_SYS_POLL_H 7.56.0
+CURL_PUSH_DENY 7.44.0
+CURL_PUSH_ERROROUT 7.72.0
+CURL_PUSH_OK 7.44.0
+CURL_READFUNC_ABORT 7.12.1
+CURL_READFUNC_PAUSE 7.18.0
+CURL_REDIR_GET_ALL 7.19.1
+CURL_REDIR_POST_301 7.19.1
+CURL_REDIR_POST_302 7.19.1
+CURL_REDIR_POST_303 7.25.1
+CURL_REDIR_POST_ALL 7.19.1
+CURL_RTSPREQ_ANNOUNCE 7.20.0
+CURL_RTSPREQ_DESCRIBE 7.20.0
+CURL_RTSPREQ_GET_PARAMETER 7.20.0
+CURL_RTSPREQ_NONE 7.20.0
+CURL_RTSPREQ_OPTIONS 7.20.0
+CURL_RTSPREQ_PAUSE 7.20.0
+CURL_RTSPREQ_PLAY 7.20.0
+CURL_RTSPREQ_RECEIVE 7.20.0
+CURL_RTSPREQ_RECORD 7.20.0
+CURL_RTSPREQ_SET_PARAMETER 7.20.0
+CURL_RTSPREQ_SETUP 7.20.0
+CURL_RTSPREQ_TEARDOWN 7.20.0
+CURL_SEEKFUNC_CANTSEEK 7.19.5
+CURL_SEEKFUNC_FAIL 7.19.5
+CURL_SEEKFUNC_OK 7.19.5
+CURL_SOCKET_BAD 7.14.0
+CURL_SOCKET_TIMEOUT 7.14.0
+CURL_SOCKOPT_ALREADY_CONNECTED 7.21.5
+CURL_SOCKOPT_ERROR 7.21.5
+CURL_SOCKOPT_OK 7.21.5
+CURL_SSLVERSION_DEFAULT 7.9.2
+CURL_SSLVERSION_MAX_DEFAULT 7.54.0
+CURL_SSLVERSION_MAX_NONE 7.54.0
+CURL_SSLVERSION_MAX_TLSv1_0 7.54.0
+CURL_SSLVERSION_MAX_TLSv1_1 7.54.0
+CURL_SSLVERSION_MAX_TLSv1_2 7.54.0
+CURL_SSLVERSION_MAX_TLSv1_3 7.54.0
+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_SSLVERSION_TLSv1_3 7.52.0
+CURL_STRICTER 7.50.2
+CURL_TIMECOND_IFMODSINCE 7.9.7
+CURL_TIMECOND_IFUNMODSINCE 7.9.7
+CURL_TIMECOND_LASTMOD 7.9.7
+CURL_TIMECOND_NONE 7.9.7
+CURL_TLSAUTH_NONE 7.21.4
+CURL_TLSAUTH_SRP 7.21.4
+CURL_TRAILERFUNC_ABORT 7.64.0
+CURL_TRAILERFUNC_OK 7.64.0
+CURL_UPKEEP_INTERVAL_DEFAULT 7.62.0
+CURL_VERSION_ALTSVC 7.64.1
+CURL_VERSION_ASYNCHDNS 7.10.7
+CURL_VERSION_BITS 7.43.0
+CURL_VERSION_BROTLI 7.57.0
+CURL_VERSION_CONV 7.15.4
+CURL_VERSION_CURLDEBUG 7.19.6
+CURL_VERSION_DEBUG 7.10.6
+CURL_VERSION_GSASL 7.76.0
+CURL_VERSION_GSSAPI 7.38.0
+CURL_VERSION_GSSNEGOTIATE 7.10.6 7.38.0
+CURL_VERSION_HSTS 7.74.0
+CURL_VERSION_HTTP2 7.33.0
+CURL_VERSION_HTTP3 7.66.0
+CURL_VERSION_HTTPS_PROXY 7.52.0
+CURL_VERSION_IDN 7.12.0
+CURL_VERSION_IPV6 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_MULTI_SSL 7.56.0
+CURL_VERSION_NTLM 7.10.6
+CURL_VERSION_NTLM_WB 7.22.0
+CURL_VERSION_PSL 7.47.0
+CURL_VERSION_SPNEGO 7.10.8
+CURL_VERSION_SSL 7.10
+CURL_VERSION_SSPI 7.13.2
+CURL_VERSION_THREADSAFE 7.84.0
+CURL_VERSION_TLSAUTH_SRP 7.21.4
+CURL_VERSION_UNICODE 7.72.0
+CURL_VERSION_UNIX_SOCKETS 7.40.0
+CURL_VERSION_ZSTD 7.72.0
+CURL_WAIT_POLLIN 7.28.0
+CURL_WAIT_POLLOUT 7.28.0
+CURL_WAIT_POLLPRI 7.28.0
+CURL_WIN32 7.69.0
+CURL_WRITEFUNC_PAUSE 7.18.0
+CURL_ZERO_TERMINATED 7.56.0
CURLALTSVC_H1 7.64.1
CURLALTSVC_H2 7.64.1
CURLALTSVC_H3 7.64.1
CURLALTSVC_READONLYFILE 7.64.1
CURLAUTH_ANY 7.10.6
CURLAUTH_ANYSAFE 7.10.6
+CURLAUTH_AWS_SIGV4 7.75.0
CURLAUTH_BASIC 7.10.6
CURLAUTH_BEARER 7.61.0
CURLAUTH_DIGEST 7.10.6
@@ -29,7 +207,6 @@ CURLAUTH_NONE 7.10.6
CURLAUTH_NTLM 7.10.6
CURLAUTH_NTLM_WB 7.22.0
CURLAUTH_ONLY 7.21.3
-CURLAUTH_AWS_SIGV4 7.75.0
CURLCLOSEPOLICY_CALLBACK 7.7
CURLCLOSEPOLICY_LEAST_RECENTLY_USED 7.7
CURLCLOSEPOLICY_LEAST_TRAFFIC 7.7
@@ -46,14 +223,14 @@ CURLE_BAD_DOWNLOAD_RESUME 7.10
CURLE_BAD_FUNCTION_ARGUMENT 7.1
CURLE_BAD_PASSWORD_ENTERED 7.4.2 7.17.0
CURLE_CHUNK_FAILED 7.21.0
-CURLE_CONV_FAILED 7.15.4
-CURLE_CONV_REQD 7.15.4
+CURLE_CONV_FAILED 7.15.4 7.82.0
+CURLE_CONV_REQD 7.15.4 7.82.0
CURLE_COULDNT_CONNECT 7.1
CURLE_COULDNT_RESOLVE_HOST 7.1
CURLE_COULDNT_RESOLVE_PROXY 7.1
CURLE_FAILED_INIT 7.1
-CURLE_FILESIZE_EXCEEDED 7.10.8
CURLE_FILE_COULDNT_READ_FILE 7.1
+CURLE_FILESIZE_EXCEEDED 7.10.8
CURLE_FTP_ACCEPT_FAILED 7.24.0
CURLE_FTP_ACCEPT_TIMEOUT 7.24.0
CURLE_FTP_ACCESS_DENIED 7.1 7.17.0
@@ -92,13 +269,13 @@ CURLE_HTTP_RANGE_ERROR 7.1 7.17.0
CURLE_HTTP_RETURNED_ERROR 7.10.3
CURLE_INTERFACE_FAILED 7.12.0
CURLE_LDAP_CANNOT_BIND 7.1
-CURLE_LDAP_INVALID_URL 7.10.8
+CURLE_LDAP_INVALID_URL 7.10.8 7.82.0
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_NOT_BUILT_IN 7.21.5
CURLE_NO_CONNECTION_AVAILABLE 7.30.0
+CURLE_NOT_BUILT_IN 7.21.5
CURLE_OK 7.1
CURLE_OPERATION_TIMEDOUT 7.10.2
CURLE_OPERATION_TIMEOUTED 7.1 7.17.0
@@ -149,6 +326,7 @@ CURLE_TFTP_UNKNOWNID 7.15.0
CURLE_TOO_MANY_REDIRECTS 7.5
CURLE_UNKNOWN_OPTION 7.21.5
CURLE_UNKNOWN_TELNET_OPTION 7.7 7.21.5
+CURLE_UNRECOVERABLE_POLL 7.84.0
CURLE_UNSUPPORTED_PROTOCOL 7.1
CURLE_UPLOAD_FAILED 7.16.3
CURLE_URL_MALFORMAT 7.1
@@ -194,6 +372,9 @@ CURLFORM_NOTHING 7.9 7.56.0
CURLFORM_PTRCONTENTS 7.9 7.56.0
CURLFORM_PTRNAME 7.9 7.56.0
CURLFORM_STREAM 7.18.2 7.56.0
+CURLFTP_CREATE_DIR 7.19.4
+CURLFTP_CREATE_DIR_NONE 7.19.4
+CURLFTP_CREATE_DIR_RETRY 7.19.4
CURLFTPAUTH_DEFAULT 7.12.2
CURLFTPAUTH_SSL 7.12.2
CURLFTPAUTH_TLS 7.12.2
@@ -208,12 +389,22 @@ CURLFTPSSL_CCC_PASSIVE 7.16.1
CURLFTPSSL_CONTROL 7.11.0 7.17.0
CURLFTPSSL_NONE 7.11.0 7.17.0
CURLFTPSSL_TRY 7.11.0 7.17.0
-CURLFTP_CREATE_DIR 7.19.4
-CURLFTP_CREATE_DIR_NONE 7.19.4
-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
+CURLH_1XX 7.83.0
+CURLH_CONNECT 7.83.0
+CURLH_HEADER 7.83.0
+CURLH_PSEUDO 7.83.0
+CURLH_TRAILER 7.83.0
+CURLHE_BAD_ARGUMENT 7.83.0
+CURLHE_BADINDEX 7.83.0
+CURLHE_MISSING 7.83.0
+CURLHE_NOHEADERS 7.83.0
+CURLHE_NOREQUEST 7.83.0
+CURLHE_NOT_BUILT_IN 7.83.0
+CURLHE_OK 7.83.0
+CURLHE_OUT_OF_MEMORY 7.83.0
CURLHEADER_SEPARATE 7.37.0
CURLHEADER_UNIFIED 7.37.0
CURLHSTS_ENABLE 7.74.0
@@ -221,13 +412,15 @@ CURLHSTS_READONLYFILE 7.74.0
CURLINFO_ACTIVESOCKET 7.45.0
CURLINFO_APPCONNECT_TIME 7.19.0
CURLINFO_APPCONNECT_TIME_T 7.61.0
+CURLINFO_CAINFO 7.84.0
+CURLINFO_CAPATH 7.84.0
CURLINFO_CERTINFO 7.19.1
CURLINFO_CONDITION_UNMET 7.19.4
CURLINFO_CONNECT_TIME 7.4.1
CURLINFO_CONNECT_TIME_T 7.61.0
-CURLINFO_CONTENT_LENGTH_DOWNLOAD 7.6.1
+CURLINFO_CONTENT_LENGTH_DOWNLOAD 7.6.1 7.55.0
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 7.55.0
-CURLINFO_CONTENT_LENGTH_UPLOAD 7.6.1
+CURLINFO_CONTENT_LENGTH_UPLOAD 7.6.1 7.55.0
CURLINFO_CONTENT_LENGTH_UPLOAD_T 7.55.0
CURLINFO_CONTENT_TYPE 7.9.4
CURLINFO_COOKIELIST 7.14.1
@@ -243,12 +436,12 @@ CURLINFO_FTP_ENTRY_PATH 7.15.4
CURLINFO_HEADER_IN 7.9.6
CURLINFO_HEADER_OUT 7.9.6
CURLINFO_HEADER_SIZE 7.4.1
-CURLINFO_HTTPAUTH_AVAIL 7.10.8
CURLINFO_HTTP_CODE 7.4.1 7.10.8
CURLINFO_HTTP_CONNECTCODE 7.10.7
CURLINFO_HTTP_VERSION 7.50.0
+CURLINFO_HTTPAUTH_AVAIL 7.10.8
CURLINFO_LASTONE 7.4.1
-CURLINFO_LASTSOCKET 7.15.2
+CURLINFO_LASTSOCKET 7.15.2 7.45.0
CURLINFO_LOCAL_IP 7.21.0
CURLINFO_LOCAL_PORT 7.21.0
CURLINFO_LONG 7.4.1
@@ -264,10 +457,10 @@ CURLINFO_PRETRANSFER_TIME_T 7.61.0
CURLINFO_PRIMARY_IP 7.19.0
CURLINFO_PRIMARY_PORT 7.21.0
CURLINFO_PRIVATE 7.10.3
-CURLINFO_PROTOCOL 7.52.0
-CURLINFO_PROXYAUTH_AVAIL 7.10.8
+CURLINFO_PROTOCOL 7.52.0 7.85.0
CURLINFO_PROXY_ERROR 7.73.0
CURLINFO_PROXY_SSL_VERIFYRESULT 7.52.0
+CURLINFO_PROXYAUTH_AVAIL 7.10.8
CURLINFO_PTR 7.54.1
CURLINFO_REDIRECT_COUNT 7.9.7
CURLINFO_REDIRECT_TIME 7.9.7
@@ -282,15 +475,15 @@ CURLINFO_RTSP_CSEQ_RECV 7.20.0
CURLINFO_RTSP_SERVER_CSEQ 7.20.0
CURLINFO_RTSP_SESSION_ID 7.20.0
CURLINFO_SCHEME 7.52.0
-CURLINFO_SIZE_DOWNLOAD 7.4.1
+CURLINFO_SIZE_DOWNLOAD 7.4.1 7.55.0
CURLINFO_SIZE_DOWNLOAD_T 7.55.0
-CURLINFO_SIZE_UPLOAD 7.4.1
+CURLINFO_SIZE_UPLOAD 7.4.1 7.55.0
CURLINFO_SIZE_UPLOAD_T 7.55.0
CURLINFO_SLIST 7.12.3
CURLINFO_SOCKET 7.45.0
-CURLINFO_SPEED_DOWNLOAD 7.4.1
+CURLINFO_SPEED_DOWNLOAD 7.4.1 7.55.0
CURLINFO_SPEED_DOWNLOAD_T 7.55.0
-CURLINFO_SPEED_UPLOAD 7.4.1
+CURLINFO_SPEED_UPLOAD 7.4.1 7.55.0
CURLINFO_SPEED_UPLOAD_T 7.55.0
CURLINFO_SSL_DATA_IN 7.12.1
CURLINFO_SSL_DATA_OUT 7.12.1
@@ -324,14 +517,29 @@ CURLKHTYPE_ED25519 7.58.0
CURLKHTYPE_RSA 7.19.6
CURLKHTYPE_RSA1 7.19.6
CURLKHTYPE_UNKNOWN 7.19.6
+CURLM_ABORTED_BY_CALLBACK 7.81.0
+CURLM_ADDED_ALREADY 7.32.1
+CURLM_BAD_EASY_HANDLE 7.9.6
+CURLM_BAD_FUNCTION_ARGUMENT 7.69.0
+CURLM_BAD_HANDLE 7.9.6
+CURLM_BAD_SOCKET 7.15.4
+CURLM_CALL_MULTI_PERFORM 7.9.6
+CURLM_CALL_MULTI_SOCKET 7.15.5
+CURLM_INTERNAL_ERROR 7.9.6
+CURLM_OK 7.9.6
+CURLM_OUT_OF_MEMORY 7.9.6
+CURLM_RECURSIVE_API_CALL 7.59.0
+CURLM_UNKNOWN_OPTION 7.15.4
+CURLM_UNRECOVERABLE_POLL 7.84.0
+CURLM_WAKEUP_FAILURE 7.68.0
CURLMIMEOPT_FORMESCAPE 7.81.0
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 7.30.0
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 7.30.0
-CURLMOPT_MAXCONNECTS 7.16.3
CURLMOPT_MAX_CONCURRENT_STREAMS 7.67.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
@@ -343,38 +551,16 @@ CURLMOPT_TIMERDATA 7.16.0
CURLMOPT_TIMERFUNCTION 7.16.0
CURLMSG_DONE 7.9.6
CURLMSG_NONE 7.9.6
-CURLM_ABORTED_BY_CALLBACK 7.81.0
-CURLM_ADDED_ALREADY 7.32.1
-CURLM_BAD_EASY_HANDLE 7.9.6
-CURLM_BAD_FUNCTION_ARGUMENT 7.69.0
-CURLM_BAD_HANDLE 7.9.6
-CURLM_BAD_SOCKET 7.15.4
-CURLM_CALL_MULTI_PERFORM 7.9.6
-CURLM_CALL_MULTI_SOCKET 7.15.5
-CURLM_INTERNAL_ERROR 7.9.6
-CURLM_OK 7.9.6
-CURLM_OUT_OF_MEMORY 7.9.6
-CURLM_RECURSIVE_API_CALL 7.59.0
-CURLM_UNKNOWN_OPTION 7.15.4
-CURLM_WAKEUP_FAILURE 7.68.0
CURLOPT 7.69.0
-CURLOPTTYPE_BLOB 7.71.0
-CURLOPTTYPE_CBPOINT 7.73.0
-CURLOPTTYPE_FUNCTIONPOINT 7.1
-CURLOPTTYPE_LONG 7.1
-CURLOPTTYPE_OBJECTPOINT 7.1
-CURLOPTTYPE_OFF_T 7.11.0
-CURLOPTTYPE_SLISTPOINT 7.65.2
-CURLOPTTYPE_STRINGPOINT 7.46.0
-CURLOPTTYPE_VALUES 7.73.0
CURLOPT_ABSTRACT_UNIX_SOCKET 7.53.0
-CURLOPT_ACCEPTTIMEOUT_MS 7.24.0
CURLOPT_ACCEPT_ENCODING 7.21.6
+CURLOPT_ACCEPTTIMEOUT_MS 7.24.0
CURLOPT_ADDRESS_SCOPE 7.19.0
CURLOPT_ALTSVC 7.64.1
CURLOPT_ALTSVC_CTRL 7.64.1
CURLOPT_APPEND 7.17.0
CURLOPT_AUTOREFERER 7.1
+CURLOPT_AWS_SIGV4 7.75.0
CURLOPT_BUFFERSIZE 7.10
CURLOPT_CAINFO 7.4.2
CURLOPT_CAINFO_BLOB 7.77.0
@@ -387,13 +573,13 @@ CURLOPT_CLOSEFUNCTION 7.7 7.11.1 7.15.5
CURLOPT_CLOSEPOLICY 7.7 7.16.1
CURLOPT_CLOSESOCKETDATA 7.21.7
CURLOPT_CLOSESOCKETFUNCTION 7.21.7
-CURLOPT_CONNECTTIMEOUT 7.7
-CURLOPT_CONNECTTIMEOUT_MS 7.16.2
CURLOPT_CONNECT_ONLY 7.15.2
CURLOPT_CONNECT_TO 7.49.0
-CURLOPT_CONV_FROM_NETWORK_FUNCTION 7.15.4
-CURLOPT_CONV_FROM_UTF8_FUNCTION 7.15.4
-CURLOPT_CONV_TO_NETWORK_FUNCTION 7.15.4
+CURLOPT_CONNECTTIMEOUT 7.7
+CURLOPT_CONNECTTIMEOUT_MS 7.16.2
+CURLOPT_CONV_FROM_NETWORK_FUNCTION 7.15.4 7.82.0
+CURLOPT_CONV_FROM_UTF8_FUNCTION 7.15.4 7.82.0
+CURLOPT_CONV_TO_NETWORK_FUNCTION 7.15.4 7.82.0
CURLOPT_COOKIE 7.1
CURLOPT_COOKIEFILE 7.1
CURLOPT_COOKIEJAR 7.9
@@ -420,8 +606,8 @@ CURLOPT_DOH_SSL_VERIFYHOST 7.76.0
CURLOPT_DOH_SSL_VERIFYPEER 7.76.0
CURLOPT_DOH_SSL_VERIFYSTATUS 7.76.0
CURLOPT_DOH_URL 7.62.0
-CURLOPT_EGDSOCKET 7.7
-CURLOPT_ENCODING 7.10
+CURLOPT_EGDSOCKET 7.7 7.84.0
+CURLOPT_ENCODING 7.10 7.21.6
CURLOPT_ERRORBUFFER 7.1
CURLOPT_EXPECT_100_TIMEOUT_MS 7.36.0
CURLOPT_FAILONERROR 7.1
@@ -432,22 +618,22 @@ CURLOPT_FNMATCH_FUNCTION 7.21.0
CURLOPT_FOLLOWLOCATION 7.1
CURLOPT_FORBID_REUSE 7.7
CURLOPT_FRESH_CONNECT 7.7
-CURLOPT_FTPAPPEND 7.1 7.16.4
-CURLOPT_FTPASCII 7.1 7.11.1 7.15.5
-CURLOPT_FTPLISTONLY 7.1 7.16.4
-CURLOPT_FTPPORT 7.1
-CURLOPT_FTPSSLAUTH 7.12.2
CURLOPT_FTP_ACCOUNT 7.13.0
CURLOPT_FTP_ALTERNATIVE_TO_USER 7.15.5
CURLOPT_FTP_CREATE_MISSING_DIRS 7.10.7
CURLOPT_FTP_FILEMETHOD 7.15.1
-CURLOPT_FTP_RESPONSE_TIMEOUT 7.10.8
+CURLOPT_FTP_RESPONSE_TIMEOUT 7.10.8 7.85.0
CURLOPT_FTP_SKIP_PASV_IP 7.15.0
CURLOPT_FTP_SSL 7.11.0 7.16.4
CURLOPT_FTP_SSL_CCC 7.16.1
CURLOPT_FTP_USE_EPRT 7.10.5
CURLOPT_FTP_USE_EPSV 7.9.2
CURLOPT_FTP_USE_PRET 7.20.0
+CURLOPT_FTPAPPEND 7.1 7.16.4
+CURLOPT_FTPASCII 7.1 7.11.1 7.15.5
+CURLOPT_FTPLISTONLY 7.1 7.16.4
+CURLOPT_FTPPORT 7.1
+CURLOPT_FTPSSLAUTH 7.12.2
CURLOPT_GSSAPI_DELEGATION 7.22.0
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 7.59.0
CURLOPT_HAPROXYPROTOCOL 7.60.0
@@ -463,15 +649,15 @@ CURLOPT_HSTSWRITEDATA 7.74.0
CURLOPT_HSTSWRITEFUNCTION 7.74.0
CURLOPT_HTTP09_ALLOWED 7.64.0
CURLOPT_HTTP200ALIASES 7.10.3
+CURLOPT_HTTP_CONTENT_DECODING 7.16.2
+CURLOPT_HTTP_TRANSFER_DECODING 7.16.2
+CURLOPT_HTTP_VERSION 7.9.1
CURLOPT_HTTPAUTH 7.10.6
CURLOPT_HTTPGET 7.8.1
CURLOPT_HTTPHEADER 7.1
CURLOPT_HTTPPOST 7.1 7.56.0
CURLOPT_HTTPPROXYTUNNEL 7.3
CURLOPT_HTTPREQUEST 7.1 - 7.15.5
-CURLOPT_HTTP_CONTENT_DECODING 7.16.2
-CURLOPT_HTTP_TRANSFER_DECODING 7.16.2
-CURLOPT_HTTP_VERSION 7.9.1
CURLOPT_IGNORE_CONTENT_LENGTH 7.14.1
CURLOPT_INFILE 7.1 7.9.7
CURLOPT_INFILESIZE 7.1
@@ -479,8 +665,8 @@ CURLOPT_INFILESIZE_LARGE 7.11.0
CURLOPT_INTERFACE 7.3
CURLOPT_INTERLEAVEDATA 7.20.0
CURLOPT_INTERLEAVEFUNCTION 7.20.0
-CURLOPT_IOCTLDATA 7.12.3
-CURLOPT_IOCTLFUNCTION 7.12.3
+CURLOPT_IOCTLDATA 7.12.3 7.18.0
+CURLOPT_IOCTLFUNCTION 7.12.3 7.18.0
CURLOPT_IPRESOLVE 7.10.8
CURLOPT_ISSUERCERT 7.19.0
CURLOPT_ISSUERCERT_BLOB 7.71.0
@@ -497,16 +683,16 @@ CURLOPT_MAIL_AUTH 7.25.0
CURLOPT_MAIL_FROM 7.20.0
CURLOPT_MAIL_RCPT 7.20.0
CURLOPT_MAIL_RCPT_ALLLOWFAILS 7.69.0
+CURLOPT_MAX_RECV_SPEED_LARGE 7.15.5
+CURLOPT_MAX_SEND_SPEED_LARGE 7.15.5
CURLOPT_MAXAGE_CONN 7.65.0
CURLOPT_MAXCONNECTS 7.7
CURLOPT_MAXFILESIZE 7.10.8
CURLOPT_MAXFILESIZE_LARGE 7.11.0
CURLOPT_MAXLIFETIME_CONN 7.80.0
CURLOPT_MAXREDIRS 7.5
-CURLOPT_MAX_RECV_SPEED_LARGE 7.15.5
-CURLOPT_MAX_SEND_SPEED_LARGE 7.15.5
-CURLOPT_MIMEPOST 7.56.0
CURLOPT_MIME_OPTIONS 7.81.0
+CURLOPT_MIMEPOST 7.56.0
CURLOPT_MUTE 7.1 7.8 7.15.5
CURLOPT_NETRC 7.1
CURLOPT_NETRC_FILE 7.11.0
@@ -534,22 +720,16 @@ CURLOPT_POSTFIELDSIZE 7.2
CURLOPT_POSTFIELDSIZE_LARGE 7.11.1
CURLOPT_POSTQUOTE 7.1
CURLOPT_POSTREDIR 7.19.1
+CURLOPT_PRE_PROXY 7.52.0
CURLOPT_PREQUOTE 7.9.5
CURLOPT_PREREQDATA 7.80.0
CURLOPT_PREREQFUNCTION 7.80.0
-CURLOPT_PRE_PROXY 7.52.0
CURLOPT_PRIVATE 7.10.3
CURLOPT_PROGRESSDATA 7.1
CURLOPT_PROGRESSFUNCTION 7.1 7.32.0
-CURLOPT_PROTOCOLS 7.19.4
+CURLOPT_PROTOCOLS 7.19.4 7.85.0
+CURLOPT_PROTOCOLS_STR 7.85.0
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_PROXYUSERNAME 7.19.1
-CURLOPT_PROXYUSERPWD 7.1
CURLOPT_PROXY_CAINFO 7.52.0
CURLOPT_PROXY_CAINFO_BLOB 7.77.0
CURLOPT_PROXY_CAPATH 7.52.0
@@ -559,29 +739,37 @@ CURLOPT_PROXY_ISSUERCERT_BLOB 7.71.0
CURLOPT_PROXY_KEYPASSWD 7.52.0
CURLOPT_PROXY_PINNEDPUBLICKEY 7.52.0
CURLOPT_PROXY_SERVICE_NAME 7.43.0
+CURLOPT_PROXY_SSL_CIPHER_LIST 7.52.0
+CURLOPT_PROXY_SSL_OPTIONS 7.52.0
+CURLOPT_PROXY_SSL_VERIFYHOST 7.52.0
+CURLOPT_PROXY_SSL_VERIFYPEER 7.52.0
CURLOPT_PROXY_SSLCERT 7.52.0
-CURLOPT_PROXY_SSLCERTTYPE 7.52.0
CURLOPT_PROXY_SSLCERT_BLOB 7.71.0
+CURLOPT_PROXY_SSLCERTTYPE 7.52.0
CURLOPT_PROXY_SSLKEY 7.52.0
-CURLOPT_PROXY_SSLKEYTYPE 7.52.0
CURLOPT_PROXY_SSLKEY_BLOB 7.71.0
+CURLOPT_PROXY_SSLKEYTYPE 7.52.0
CURLOPT_PROXY_SSLVERSION 7.52.0
-CURLOPT_PROXY_SSL_CIPHER_LIST 7.52.0
-CURLOPT_PROXY_SSL_OPTIONS 7.52.0
-CURLOPT_PROXY_SSL_VERIFYHOST 7.52.0
-CURLOPT_PROXY_SSL_VERIFYPEER 7.52.0
CURLOPT_PROXY_TLS13_CIPHERS 7.61.0
CURLOPT_PROXY_TLSAUTH_PASSWORD 7.52.0
CURLOPT_PROXY_TLSAUTH_TYPE 7.52.0
CURLOPT_PROXY_TLSAUTH_USERNAME 7.52.0
CURLOPT_PROXY_TRANSFER_MODE 7.18.0
-CURLOPT_PUT 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_PROXYUSERNAME 7.19.1
+CURLOPT_PROXYUSERPWD 7.1
+CURLOPT_PUT 7.1 7.12.1
CURLOPT_QUOTE 7.1
-CURLOPT_RANDOM_FILE 7.7
+CURLOPT_RANDOM_FILE 7.7 7.84.0
CURLOPT_RANGE 7.1
CURLOPT_READDATA 7.9.7
CURLOPT_READFUNCTION 7.1
-CURLOPT_REDIR_PROTOCOLS 7.19.4
+CURLOPT_REDIR_PROTOCOLS 7.19.4 7.85.0
+CURLOPT_REDIR_PROTOCOLS_STR 7.85.0
CURLOPT_REFERER 7.1
CURLOPT_REQUEST_TARGET 7.55.0
CURLOPT_RESOLVE 7.21.3
@@ -589,13 +777,13 @@ CURLOPT_RESOLVER_START_DATA 7.59.0
CURLOPT_RESOLVER_START_FUNCTION 7.59.0
CURLOPT_RESUME_FROM 7.1
CURLOPT_RESUME_FROM_LARGE 7.11.0
-CURLOPT_RTSPHEADER 7.20.0
CURLOPT_RTSP_CLIENT_CSEQ 7.20.0
CURLOPT_RTSP_REQUEST 7.20.0
CURLOPT_RTSP_SERVER_CSEQ 7.20.0
CURLOPT_RTSP_SESSION_ID 7.20.0
CURLOPT_RTSP_STREAM_URI 7.20.0
CURLOPT_RTSP_TRANSPORT 7.20.0
+CURLOPT_RTSPHEADER 7.20.0
CURLOPT_SASL_AUTHZID 7.66.0
CURLOPT_SASL_IR 7.31.0
CURLOPT_SEEKDATA 7.18.0
@@ -620,34 +808,36 @@ CURLOPT_SSH_AUTH_TYPES 7.16.1
CURLOPT_SSH_COMPRESSION 7.56.0
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 7.17.1
CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 7.80.0
+CURLOPT_SSH_HOSTKEYDATA 7.84.0
+CURLOPT_SSH_HOSTKEYFUNCTION 7.84.0
CURLOPT_SSH_KEYDATA 7.19.6
CURLOPT_SSH_KEYFUNCTION 7.19.6
CURLOPT_SSH_KNOWNHOSTS 7.19.6
CURLOPT_SSH_PRIVATE_KEYFILE 7.16.1
CURLOPT_SSH_PUBLIC_KEYFILE 7.16.1
-CURLOPT_SSLCERT 7.1
-CURLOPT_SSLCERTPASSWD 7.1.1 7.17.0
-CURLOPT_SSLCERTTYPE 7.9.3
-CURLOPT_SSLCERT_BLOB 7.71.0
-CURLOPT_SSLENGINE 7.9.3
-CURLOPT_SSLENGINE_DEFAULT 7.9.3
-CURLOPT_SSLKEY 7.9.3
-CURLOPT_SSLKEYPASSWD 7.9.3 7.17.0
-CURLOPT_SSLKEYTYPE 7.9.3
-CURLOPT_SSLKEY_BLOB 7.71.0
-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_EC_CURVES 7.73.0
CURLOPT_SSL_ENABLE_ALPN 7.36.0
-CURLOPT_SSL_ENABLE_NPN 7.36.0
+CURLOPT_SSL_ENABLE_NPN 7.36.0 7.86.0
CURLOPT_SSL_FALSESTART 7.42.0
CURLOPT_SSL_OPTIONS 7.25.0
CURLOPT_SSL_SESSIONID_CACHE 7.16.0
CURLOPT_SSL_VERIFYHOST 7.8.1
CURLOPT_SSL_VERIFYPEER 7.4.2
CURLOPT_SSL_VERIFYSTATUS 7.41.0
+CURLOPT_SSLCERT 7.1
+CURLOPT_SSLCERT_BLOB 7.71.0
+CURLOPT_SSLCERTPASSWD 7.1.1 7.17.0
+CURLOPT_SSLCERTTYPE 7.9.3
+CURLOPT_SSLENGINE 7.9.3
+CURLOPT_SSLENGINE_DEFAULT 7.9.3
+CURLOPT_SSLKEY 7.9.3
+CURLOPT_SSLKEY_BLOB 7.71.0
+CURLOPT_SSLKEYPASSWD 7.9.3 7.17.0
+CURLOPT_SSLKEYTYPE 7.9.3
+CURLOPT_SSLVERSION 7.1
CURLOPT_STDERR 7.1
CURLOPT_STREAM_DEPENDS 7.46.0
CURLOPT_STREAM_DEPENDS_E 7.46.0
@@ -672,30 +862,40 @@ CURLOPT_TLSAUTH_TYPE 7.21.4
CURLOPT_TLSAUTH_USERNAME 7.21.4
CURLOPT_TRAILERDATA 7.64.0
CURLOPT_TRAILERFUNCTION 7.64.0
-CURLOPT_TRANSFERTEXT 7.1.1
CURLOPT_TRANSFER_ENCODING 7.21.6
+CURLOPT_TRANSFERTEXT 7.1.1
CURLOPT_UNIX_SOCKET_PATH 7.40.0
CURLOPT_UNRESTRICTED_AUTH 7.10.4
CURLOPT_UPKEEP_INTERVAL_MS 7.62.0
CURLOPT_UPLOAD 7.1
CURLOPT_UPLOAD_BUFFERSIZE 7.62.0
CURLOPT_URL 7.1
+CURLOPT_USE_SSL 7.17.0
CURLOPT_USERAGENT 7.1
CURLOPT_USERNAME 7.19.1
CURLOPT_USERPWD 7.1
-CURLOPT_USE_SSL 7.17.0
-CURLOPT_AWS_SIGV4 7.75.0
CURLOPT_VERBOSE 7.1
CURLOPT_WILDCARDMATCH 7.21.0
CURLOPT_WRITEDATA 7.9.7
CURLOPT_WRITEFUNCTION 7.1
CURLOPT_WRITEHEADER 7.1
CURLOPT_WRITEINFO 7.1
+CURLOPT_WS_OPTIONS 7.86.0
CURLOPT_XFERINFODATA 7.32.0
CURLOPT_XFERINFOFUNCTION 7.32.0
CURLOPT_XOAUTH2_BEARER 7.33.0
+CURLOPTTYPE_BLOB 7.71.0
+CURLOPTTYPE_CBPOINT 7.73.0
+CURLOPTTYPE_FUNCTIONPOINT 7.1
+CURLOPTTYPE_LONG 7.1
+CURLOPTTYPE_OBJECTPOINT 7.1
+CURLOPTTYPE_OFF_T 7.11.0
+CURLOPTTYPE_SLISTPOINT 7.65.2
+CURLOPTTYPE_STRINGPOINT 7.46.0
+CURLOPTTYPE_VALUES 7.73.0
CURLOT_BLOB 7.73.0
CURLOT_CBPTR 7.73.0
+CURLOT_FLAG_ALIAS 7.73.0
CURLOT_FUNCTION 7.73.0
CURLOT_LONG 7.73.0
CURLOT_OBJECT 7.73.0
@@ -744,8 +944,8 @@ CURLPROTO_SMTPS 7.20.0
CURLPROTO_TELNET 7.19.4
CURLPROTO_TFTP 7.19.4
CURLPROXY_HTTP 7.10
-CURLPROXY_HTTPS 7.52.0
CURLPROXY_HTTP_1_0 7.19.4
+CURLPROXY_HTTPS 7.52.0
CURLPROXY_SOCKS4 7.10
CURLPROXY_SOCKS4A 7.18.0
CURLPROXY_SOCKS5 7.10
@@ -785,8 +985,8 @@ CURLPX_UNKNOWN_FAIL 7.73.0
CURLPX_UNKNOWN_MODE 7.73.0
CURLPX_USER_REJECTED 7.73.0
CURLSHE_BAD_OPTION 7.10.3
-CURLSHE_INVALID 7.10.3
CURLSHE_IN_USE 7.10.3
+CURLSHE_INVALID 7.10.3
CURLSHE_NOMEM 7.12.0
CURLSHE_NOT_BUILT_IN 7.23.0
CURLSHE_OK 7.10.3
@@ -821,8 +1021,8 @@ CURLSSLBACKEND_NONE 7.34.0
CURLSSLBACKEND_NSS 7.34.0
CURLSSLBACKEND_OPENSSL 7.34.0
CURLSSLBACKEND_POLARSSL 7.34.0 7.69.0
-CURLSSLBACKEND_RUSTLS 7.76.0
CURLSSLBACKEND_QSOSSL 7.34.0 - 7.38.0
+CURLSSLBACKEND_RUSTLS 7.76.0
CURLSSLBACKEND_SCHANNEL 7.34.0
CURLSSLBACKEND_SECURETRANSPORT 7.64.1
CURLSSLBACKEND_WOLFSSL 7.49.0
@@ -839,6 +1039,18 @@ CURLSSLSET_UNKNOWN_BACKEND 7.56.0
CURLSTS_DONE 7.74.0
CURLSTS_FAIL 7.74.0
CURLSTS_OK 7.74.0
+CURLU_ALLOW_SPACE 7.78.0
+CURLU_APPENDQUERY 7.62.0
+CURLU_DEFAULT_PORT 7.62.0
+CURLU_DEFAULT_SCHEME 7.62.0
+CURLU_DISALLOW_USER 7.62.0
+CURLU_GUESS_SCHEME 7.62.0
+CURLU_NO_AUTHORITY 7.67.0
+CURLU_NO_DEFAULT_PORT 7.62.0
+CURLU_NON_SUPPORT_SCHEME 7.62.0
+CURLU_PATH_AS_IS 7.62.0
+CURLU_URLDECODE 7.62.0
+CURLU_URLENCODE 7.62.0
CURLUE_BAD_FILE_URL 7.81.0
CURLUE_BAD_FRAGMENT 7.81.0
CURLUE_BAD_HANDLE 7.62.0
@@ -884,18 +1096,6 @@ CURLUSESSL_ALL 7.17.0
CURLUSESSL_CONTROL 7.17.0
CURLUSESSL_NONE 7.17.0
CURLUSESSL_TRY 7.17.0
-CURLU_ALLOW_SPACE 7.78.0
-CURLU_APPENDQUERY 7.62.0
-CURLU_DEFAULT_PORT 7.62.0
-CURLU_DEFAULT_SCHEME 7.62.0
-CURLU_DISALLOW_USER 7.62.0
-CURLU_GUESS_SCHEME 7.62.0
-CURLU_NON_SUPPORT_SCHEME 7.62.0
-CURLU_NO_AUTHORITY 7.67.0
-CURLU_NO_DEFAULT_PORT 7.62.0
-CURLU_PATH_AS_IS 7.62.0
-CURLU_URLDECODE 7.62.0
-CURLU_URLENCODE 7.62.0
CURLVERSION_EIGHTH 7.72.0
CURLVERSION_FIFTH 7.57.0
CURLVERSION_FIRST 7.10
@@ -907,173 +1107,19 @@ CURLVERSION_SEVENTH 7.70.0
CURLVERSION_SIXTH 7.66.0
CURLVERSION_TENTH 7.77.0
CURLVERSION_THIRD 7.12.0
-CURL_CHUNK_BGN_FUNC_FAIL 7.21.0
-CURL_CHUNK_BGN_FUNC_OK 7.21.0
-CURL_CHUNK_BGN_FUNC_SKIP 7.21.0
-CURL_CHUNK_END_FUNC_FAIL 7.21.0
-CURL_CHUNK_END_FUNC_OK 7.21.0
-CURL_CSELECT_ERR 7.16.3
-CURL_CSELECT_IN 7.16.3
-CURL_CSELECT_OUT 7.16.3
-CURL_DID_MEMORY_FUNC_TYPEDEFS 7.49.0
-CURL_EASY_NONE 7.14.0 - 7.15.4
-CURL_EASY_TIMEOUT 7.14.0 - 7.15.4
-CURL_ERROR_SIZE 7.1
-CURL_FNMATCHFUNC_FAIL 7.21.0
-CURL_FNMATCHFUNC_MATCH 7.21.0
-CURL_FNMATCHFUNC_NOMATCH 7.21.0
-CURL_FORMADD_DISABLED 7.12.1 7.56.0
-CURL_FORMADD_ILLEGAL_ARRAY 7.9.8 7.56.0
-CURL_FORMADD_INCOMPLETE 7.9.8 7.56.0
-CURL_FORMADD_MEMORY 7.9.8 7.56.0
-CURL_FORMADD_NULL 7.9.8 7.56.0
-CURL_FORMADD_OK 7.9.8 7.56.0
-CURL_FORMADD_OPTION_TWICE 7.9.8 7.56.0
-CURL_FORMADD_UNKNOWN_OPTION 7.9.8 7.56.0
-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_HET_DEFAULT 7.59.0
-CURL_HTTPPOST_BUFFER 7.46.0
-CURL_HTTPPOST_CALLBACK 7.46.0
-CURL_HTTPPOST_FILENAME 7.46.0
-CURL_HTTPPOST_LARGE 7.46.0
-CURL_HTTPPOST_PTRBUFFER 7.46.0
-CURL_HTTPPOST_PTRCONTENTS 7.46.0
-CURL_HTTPPOST_PTRNAME 7.46.0
-CURL_HTTPPOST_READFILE 7.46.0
-CURL_HTTP_VERSION_1_0 7.9.1
-CURL_HTTP_VERSION_1_1 7.9.1
-CURL_HTTP_VERSION_2 7.43.0
-CURL_HTTP_VERSION_2TLS 7.47.0
-CURL_HTTP_VERSION_2_0 7.33.0
-CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE 7.49.0
-CURL_HTTP_VERSION_3 7.66.0
-CURL_HTTP_VERSION_NONE 7.9.1
-CURL_IPRESOLVE_V4 7.10.8
-CURL_IPRESOLVE_V6 7.10.8
-CURL_IPRESOLVE_WHATEVER 7.10.8
-CURL_LOCK_ACCESS_NONE 7.10.3
-CURL_LOCK_ACCESS_SHARED 7.10.3
-CURL_LOCK_ACCESS_SINGLE 7.10.3
-CURL_LOCK_DATA_CONNECT 7.10.3
-CURL_LOCK_DATA_COOKIE 7.10.3
-CURL_LOCK_DATA_DNS 7.10.3
-CURL_LOCK_DATA_NONE 7.10.3
-CURL_LOCK_DATA_PSL 7.61.0
-CURL_LOCK_DATA_SHARE 7.10.4
-CURL_LOCK_DATA_SSL_SESSION 7.10.3
-CURL_LOCK_TYPE_CONNECT 7.10 - 7.10.2
-CURL_LOCK_TYPE_COOKIE 7.10 - 7.10.2
-CURL_LOCK_TYPE_DNS 7.10 - 7.10.2
-CURL_LOCK_TYPE_NONE 7.10 - 7.10.2
-CURL_LOCK_TYPE_SSL_SESSION 7.10 - 7.10.2
-CURL_MAX_HTTP_HEADER 7.19.7
-CURL_MAX_READ_SIZE 7.53.0
-CURL_MAX_WRITE_SIZE 7.9.7
-CURL_NETRC_IGNORED 7.9.8
-CURL_NETRC_OPTIONAL 7.9.8
-CURL_NETRC_REQUIRED 7.9.8
-CURL_POLL_IN 7.14.0
-CURL_POLL_INOUT 7.14.0
-CURL_POLL_NONE 7.14.0
-CURL_POLL_OUT 7.14.0
-CURL_POLL_REMOVE 7.14.0
-CURL_PREREQFUNC_ABORT 7.79.0
-CURL_PREREQFUNC_OK 7.79.0
-CURL_PROGRESSFUNC_CONTINUE 7.68.0
-CURL_PROGRESS_BAR 7.1.1 - 7.4.1
-CURL_PROGRESS_STATS 7.1.1 - 7.4.1
-CURL_PUSH_DENY 7.44.0
-CURL_PUSH_ERROROUT 7.72.0
-CURL_PUSH_OK 7.44.0
-CURL_READFUNC_ABORT 7.12.1
-CURL_READFUNC_PAUSE 7.18.0
-CURL_REDIR_GET_ALL 7.19.1
-CURL_REDIR_POST_301 7.19.1
-CURL_REDIR_POST_302 7.19.1
-CURL_REDIR_POST_303 7.25.1
-CURL_REDIR_POST_ALL 7.19.1
-CURL_RTSPREQ_ANNOUNCE 7.20.0
-CURL_RTSPREQ_DESCRIBE 7.20.0
-CURL_RTSPREQ_GET_PARAMETER 7.20.0
-CURL_RTSPREQ_NONE 7.20.0
-CURL_RTSPREQ_OPTIONS 7.20.0
-CURL_RTSPREQ_PAUSE 7.20.0
-CURL_RTSPREQ_PLAY 7.20.0
-CURL_RTSPREQ_RECEIVE 7.20.0
-CURL_RTSPREQ_RECORD 7.20.0
-CURL_RTSPREQ_SETUP 7.20.0
-CURL_RTSPREQ_SET_PARAMETER 7.20.0
-CURL_RTSPREQ_TEARDOWN 7.20.0
-CURL_SEEKFUNC_CANTSEEK 7.19.5
-CURL_SEEKFUNC_FAIL 7.19.5
-CURL_SEEKFUNC_OK 7.19.5
-CURL_SOCKET_BAD 7.14.0
-CURL_SOCKET_TIMEOUT 7.14.0
-CURL_SOCKOPT_ALREADY_CONNECTED 7.21.5
-CURL_SOCKOPT_ERROR 7.21.5
-CURL_SOCKOPT_OK 7.21.5
-CURL_SSLVERSION_DEFAULT 7.9.2
-CURL_SSLVERSION_MAX_DEFAULT 7.54.0
-CURL_SSLVERSION_MAX_NONE 7.54.0
-CURL_SSLVERSION_MAX_TLSv1_0 7.54.0
-CURL_SSLVERSION_MAX_TLSv1_1 7.54.0
-CURL_SSLVERSION_MAX_TLSv1_2 7.54.0
-CURL_SSLVERSION_MAX_TLSv1_3 7.54.0
-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_SSLVERSION_TLSv1_3 7.52.0
-CURL_STRICTER 7.50.2
-CURL_TIMECOND_IFMODSINCE 7.9.7
-CURL_TIMECOND_IFUNMODSINCE 7.9.7
-CURL_TIMECOND_LASTMOD 7.9.7
-CURL_TIMECOND_NONE 7.9.7
-CURL_TLSAUTH_NONE 7.21.4
-CURL_TLSAUTH_SRP 7.21.4
-CURL_TRAILERFUNC_ABORT 7.64.0
-CURL_TRAILERFUNC_OK 7.64.0
-CURL_UPKEEP_INTERVAL_DEFAULT 7.62.0
-CURL_VERSION_ALTSVC 7.64.1
-CURL_VERSION_ASYNCHDNS 7.10.7
-CURL_VERSION_BROTLI 7.57.0
-CURL_VERSION_CONV 7.15.4
-CURL_VERSION_CURLDEBUG 7.19.6
-CURL_VERSION_DEBUG 7.10.6
-CURL_VERSION_GSASL 7.76.0
-CURL_VERSION_GSSAPI 7.38.0
-CURL_VERSION_GSSNEGOTIATE 7.10.6 7.38.0
-CURL_VERSION_HSTS 7.74.0
-CURL_VERSION_HTTP2 7.33.0
-CURL_VERSION_HTTP3 7.66.0
-CURL_VERSION_HTTPS_PROXY 7.52.0
-CURL_VERSION_IDN 7.12.0
-CURL_VERSION_IPV6 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_MULTI_SSL 7.56.0
-CURL_VERSION_NTLM 7.10.6
-CURL_VERSION_NTLM_WB 7.22.0
-CURL_VERSION_PSL 7.47.0
-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_UNICODE 7.72.0
-CURL_VERSION_UNIX_SOCKETS 7.40.0
-CURL_VERSION_ZSTD 7.72.0
-CURL_WAIT_POLLIN 7.28.0
-CURL_WAIT_POLLOUT 7.28.0
-CURL_WAIT_POLLPRI 7.28.0
-CURL_WIN32 7.69.0
-CURL_WRITEFUNC_PAUSE 7.18.0
-CURL_ZERO_TERMINATED 7.56.0
+CURLWARNING 7.66.0
+CURLWS_BINARY 7.86.0
+CURLWS_CLOSE 7.86.0
+CURLWS_CONT 7.86.0
+CURLWS_OFFSET 7.86.0
+CURLWS_PING 7.86.0
+CURLWS_PONG 7.86.0
+CURLWS_RAW_MODE 7.86.0
+CURLWS_TEXT 7.86.0
+LIBCURL_COPYRIGHT 7.18.0
+LIBCURL_TIMESTAMP 7.16.2
+LIBCURL_VERSION 7.11.0
+LIBCURL_VERSION_MAJOR 7.11.0
+LIBCURL_VERSION_MINOR 7.11.0
+LIBCURL_VERSION_NUM 7.11.0
+LIBCURL_VERSION_PATCH 7.11.0
diff --git a/docs/libcurl/symbols.pl b/docs/libcurl/symbols.pl
index 76384a6c6..8087d0f57 100755
--- a/docs/libcurl/symbols.pl
+++ b/docs/libcurl/symbols.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# Experience has shown that the symbols-in-versions file is very useful to
diff --git a/docs/mk-ca-bundle.1 b/docs/mk-ca-bundle.1
index 3502ade8d..98b5ae1c4 100644
--- a/docs/mk-ca-bundle.1
+++ b/docs/mk-ca-bundle.1
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2008 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2008 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,37 +18,41 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
.TH mk-ca-bundle 1 "24 Oct 2016" "version 1.27" "mk-ca-bundle manual"
.SH NAME
-mk-ca-bundle \- convert mozilla's certdata.txt to PEM format
+mk-ca-bundle \- convert Mozilla's certificate bundle to PEM format
.SH SYNOPSIS
mk-ca-bundle [options]
.I [outputfile]
.SH DESCRIPTION
-The mk-ca-bundle tool downloads the certdata.txt file from Mozilla's source
-tree over HTTPS, 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.
+The mk-ca-bundle tool downloads the \fIcertdata.txt\fP file from Mozilla's
+source tree over HTTPS, then parses \fIcertdata.txt\fP 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 command line tool to produce the final ca-bundle
+file.
The default \fIoutputfile\fP name is \fBca-bundle.crt\fP. By setting it to '-'
(a single dash) you will get the output sent to STDOUT instead of a file.
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.
+for use by just about all OpenSSL or GnuTLS powered applications, such as curl
+and others.
.SH OPTIONS
The following options are supported:
.IP -b
backup an existing version of \fIoutputfilename\fP
.IP "-d [name]"
-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.
+specify which Mozilla tree to pull \fIcertdata.txt\fP 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 certificates
+data from.
.IP -f
-force rebuild even if certdata.txt is current (Added in version 1.17)
+force rebuild even if \fIcertdata.txt\fP is current (Added in version 1.17)
.IP -i
print version info about used modules
.IP -k
@@ -56,33 +60,36 @@ Allow insecure data transfer. By default (since 1.27) this command will fail
if the HTTPS transfer fails. This overrides that decision (and opens for
man-in-the-middle attacks).
.IP -l
-print license info about certdata.txt
+print license info about \fIcertdata.txt\fP
.IP -m
(Added in 1.26) Include meta data comments in the output. The meta data is
specific information about each certificate that is stored in the original
file as comments and using this option will make those comments get passed on
to the output file. The meta data is not parsed in any way by mk-ca-bundle.
.IP -n
-no download of certdata.txt (to use existing)
+no download of \fIcertdata.txt\fP (to use existing)
.IP "-p [purposes]:[levels]"
-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).
+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
+(\fISERVER_AUTH:TRUSTED_DELEGATOR\fP).
(Added in version 1.21, Perl only)
Valid purposes are:
.RS
-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
+\fIALL\fP, \fIDIGITAL_SIGNATURE\fP, \fINON_REPUDIATION\fP,
+\fIKEY_ENCIPHERMENT\fP, \fIDATA_ENCIPHERMENT\fP, \fIKEY_AGREEMENT\fP,
+\fIKEY_CERT_SIGN\fP, \fICRL_SIGN\fP, \fISERVER_AUTH\fP (default),
+\fICLIENT_AUTH\fP, \fICODE_SIGNING\fP, \fIEMAIL_PROTECTION\fP,
+\fIIPSEC_END_SYSTEM\fP, \fIIPSEC_TUNNEL\fP, \fIIPSEC_USER\fP,
+\fITIME_STAMPING\fP, \fISTEP_UP_APPROVED\fP
.RE
.IP
Valid trust levels are:
.RS
-ALL, TRUSTED_DELEGATOR (default), NOT_TRUSTED, MUST_VERIFY_TRUST, TRUSTED
+\fIALL\fP, \fITRUSTED_DELEGATOR\fP (default), \fINOT_TRUSTED\fP, \fIMUST_VERIFY_TRUST\fP, \fITRUSTED\fP
.RE
.IP -q
be really quiet (no progress output at all)
@@ -99,21 +106,15 @@ Valid algorithms are:
ALL, NONE, MD5 (default), SHA1, SHA256, SHA384, SHA512
.RE
.IP -u
-unlink (remove) certdata.txt after processing
+unlink (remove) \fIcertdata.txt\fP after processing
.IP -v
-be verbose and print out processed CAs
+be verbose and print out processed certificate authorities
.SH EXIT STATUS
Returns 0 on success. Returns 1 if it fails to download data.
-.SH CERTDATA FORMAT
-The file format used by Mozilla for this trust information seems to be documented here:
+.SH FILE FORMAT
+The file format used by Mozilla for this trust information is documented here:
.nf
https://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html
.fi
.SH SEE ALSO
.BR curl (1)
-.SH HISTORY
-\fBmk-ca-bundle\fP is a command line tool that is shipped as part of every
-curl and libcurl release (see https://curl.se/). It was originally based
-on the parse-certs script written by Roland Krikava and was later much
-improved by Guenter Knauf. This manual page was initially written by Jan
-Schaumann \&<jschauma@netmeister.org>.
diff --git a/docs/options-in-versions b/docs/options-in-versions
index e75df6e06..a6c75cfd0 100644
--- a/docs/options-in-versions
+++ b/docs/options-in-versions
@@ -99,6 +99,7 @@
--interface 7.3
--ipv4 (-4) 7.10.8
--ipv6 (-6) 7.10.8
+--json 7.82.0
--junk-session-cookies (-j) 7.9.7
--keepalive-time 7.18.0
--key 7.9.3
@@ -127,6 +128,7 @@
--next (-:) 7.36.0
--no-alpn 7.36.0
--no-buffer (-N) 6.5
+--no-clobber 7.83.0
--no-keepalive 7.18.0
--no-npn 7.36.0
--no-progress-meter 7.67.0
@@ -184,12 +186,14 @@
--quote (-Q) 5.3
--random-file 7.7
--range (-r) 4.0
+--rate 7.84.0
--raw 7.16.2
--referer (-e) 4.0
--remote-header-name (-J) 7.20.0
--remote-name (-O) 4.0
--remote-name-all 7.19.0
--remote-time (-R) 7.9
+--remove-on-error 7.83.0
--request (-X) 6.0
--request-target 7.55.0
--resolve 7.21.3
diff --git a/include/Makefile.am b/include/Makefile.am
index a334fdcae..32d7b339d 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
SUBDIRS = curl
diff --git a/include/Makefile.in b/include/Makefile.in
index c2684add7..6fddc702f 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -89,15 +89,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = include
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -249,6 +247,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -266,6 +265,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -323,6 +323,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -341,12 +342,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -413,7 +415,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -427,7 +428,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -440,6 +441,8 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
SUBDIRS = curl
EXTRA_DIST = README.md
diff --git a/include/README.md b/include/README.md
index bd28a30e8..8fdbe0e0e 100644
--- a/include/README.md
+++ b/include/README.md
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
# include
Public include files for libcurl, external users.
diff --git a/include/curl/Makefile.am b/include/curl/Makefile.am
index e77273717..29f470c09 100644
--- a/include/curl/Makefile.am
+++ b/include/curl/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,10 +18,12 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
pkginclude_HEADERS = \
curl.h curlver.h easy.h mprintf.h stdcheaders.h multi.h \
- typecheck-gcc.h system.h urlapi.h options.h
+ typecheck-gcc.h system.h urlapi.h options.h header.h websockets.h
pkgincludedir= $(includedir)/curl
@@ -31,7 +33,7 @@ CS_1 =
CS_ = $(CS_0)
checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
+ $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/include/curl/Makefile.in b/include/curl/Makefile.in
index 6f4c69a9d..89675ba1c 100644
--- a/include/curl/Makefile.in
+++ b/include/curl/Makefile.in
@@ -89,15 +89,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = include/curl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -236,6 +234,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -253,6 +252,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -310,6 +310,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -328,12 +329,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -400,7 +402,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -414,7 +415,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -427,10 +428,12 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
pkginclude_HEADERS = \
curl.h curlver.h easy.h mprintf.h stdcheaders.h multi.h \
- typecheck-gcc.h system.h urlapi.h options.h
+ typecheck-gcc.h system.h urlapi.h options.h header.h websockets.h
CHECKSRC = $(CS_$(V))
CS_0 = @echo " RUN " $@;
@@ -448,9 +451,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/curl/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu include/curl/Makefile
+ $(AUTOMAKE) --foreign include/curl/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -704,7 +707,7 @@ uninstall-am: uninstall-pkgincludeHEADERS
checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
+ $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 7b69ce2d6..e28dd0b5a 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -74,7 +76,7 @@
defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
(defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
(defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \
- defined(__VXWORKS__)
+ defined(__sun__)
#include <sys/select.h>
#endif
@@ -82,14 +84,10 @@
#include <sys/socket.h>
#endif
-#if !defined(CURL_WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)
+#if !defined(CURL_WIN32)
#include <sys/time.h>
#endif
-#ifdef __BEOS__
-#include <support/SupportDefs.h>
-#endif
-
/* Compatibility for non-Clang compilers */
#ifndef __has_declspec_attribute
# define __has_declspec_attribute(x) 0
@@ -529,10 +527,6 @@ typedef enum {
CURLE_UPLOAD_FAILED, /* 25 - failed upload "command" */
CURLE_READ_ERROR, /* 26 - couldn't open/read from file */
CURLE_OUT_OF_MEMORY, /* 27 */
- /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error
- instead of a memory allocation error if CURL_DOES_CONVERSIONS
- is defined
- */
CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was reached */
CURLE_OBSOLETE29, /* 29 - NOT USED */
CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */
@@ -569,7 +563,7 @@ typedef enum {
CURLE_PEER_FAILED_VERIFICATION, /* 60 - peer's certificate or fingerprint
wasn't verified fine */
CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized/bad encoding */
- CURLE_LDAP_INVALID_URL, /* 62 - Invalid LDAP URL */
+ CURLE_OBSOLETE62, /* 62 - NOT IN USE since 7.82.0 */
CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */
CURLE_USE_SSL_FAILED, /* 64 - Requested FTP SSL level failed */
CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rewind
@@ -584,12 +578,8 @@ typedef enum {
CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */
CURLE_REMOTE_FILE_EXISTS, /* 73 - File already exists */
CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */
- CURLE_CONV_FAILED, /* 75 - conversion failed */
- CURLE_CONV_REQD, /* 76 - caller must register conversion
- callbacks using curl_easy_setopt options
- CURLOPT_CONV_FROM_NETWORK_FUNCTION,
- CURLOPT_CONV_TO_NETWORK_FUNCTION, and
- CURLOPT_CONV_FROM_UTF8_FUNCTION */
+ CURLE_OBSOLETE75, /* 75 - NOT IN USE since 7.82.0 */
+ CURLE_OBSOLETE76, /* 76 - NOT IN USE since 7.82.0 */
CURLE_SSL_CACERT_BADFILE, /* 77 - could not load CACERT file, missing
or wrong format */
CURLE_REMOTE_FILE_NOT_FOUND, /* 78 - remote file not found */
@@ -626,6 +616,7 @@ typedef enum {
CURLE_QUIC_CONNECT_ERROR, /* 96 - QUIC connection error */
CURLE_PROXY, /* 97 - proxy handshake error */
CURLE_SSL_CLIENTCERT, /* 98 - client-side certificate required */
+ CURLE_UNRECOVERABLE_POLL, /* 99 - poll/select returned fatal error */
CURL_LAST /* never use! */
} CURLcode;
@@ -683,13 +674,14 @@ typedef enum {
/* The following were added earlier */
#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT
-
#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
-
#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
+#define CURLE_LDAP_INVALID_URL CURLE_OBSOLETE62
+#define CURLE_CONV_REQD CURLE_OBSOLETE76
+#define CURLE_CONV_FAILED CURLE_OBSOLETE75
/* This was the error code 50 in 7.7.3 and a few earlier versions, this
is no longer used by libcurl but is instead #defined here only to not
@@ -848,8 +840,8 @@ 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
+ CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right now.
+ Causes a CURLE_PEER_FAILED_VERIFICATION error but the
connection will be left intact etc */
CURLKHSTAT_FINE_REPLACE, /* accept and replace the wrong key*/
CURLKHSTAT_LAST /* not for use, only a marker for last-in-list */
@@ -868,7 +860,18 @@ typedef int
const struct curl_khkey *knownkey, /* known */
const struct curl_khkey *foundkey, /* found */
enum curl_khmatch, /* libcurl's view on the keys */
- void *clientp); /* custom pointer passed from app */
+ void *clientp); /* custom pointer passed with */
+ /* CURLOPT_SSH_KEYDATA */
+
+typedef int
+ (*curl_sshhostkeycallback) (void *clientp,/* custom pointer passed*/
+ /* with CURLOPT_SSH_HOSTKEYDATA */
+ int keytype, /* CURLKHTYPE */
+ const char *key, /*hostkey to check*/
+ size_t keylen); /*length of the key*/
+ /*return CURLE_OK to accept*/
+ /*or something else to refuse*/
+
/* parameter for the CURLOPT_USE_SSL option */
typedef enum {
@@ -1008,7 +1011,8 @@ typedef CURLSTScode (*curl_hstswrite_callback)(CURL *easy,
#define CURLHSTS_ENABLE (long)(1<<0)
#define CURLHSTS_READONLYFILE (long)(1<<1)
-/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
+/* The CURLPROTO_ defines below are for the **deprecated** CURLOPT_*PROTOCOLS
+ options. Do not use. */
#define CURLPROTO_HTTP (1<<0)
#define CURLPROTO_HTTPS (1<<1)
#define CURLPROTO_FTP (1<<2)
@@ -1474,12 +1478,11 @@ typedef enum {
Note that setting multiple bits may cause extra network round-trips. */
CURLOPT(CURLOPT_PROXYAUTH, CURLOPTTYPE_VALUES, 111),
- /* FTP option that changes the timeout, in seconds, associated with
- getting a response. This is different from transfer timeout time and
- essentially places a demand on the FTP server to acknowledge commands
- in a timely manner. */
- CURLOPT(CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),
-#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT
+ /* Option that changes the timeout, in seconds, associated with getting a
+ response. This is different from transfer timeout time and essentially
+ places a demand on the server to acknowledge commands in a timely
+ manner. For FTP, SMTP, IMAP and POP3. */
+ CURLOPT(CURLOPT_SERVER_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),
/* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
tell libcurl to use those IP versions only. This only has effect on
@@ -2062,7 +2065,7 @@ typedef enum {
* (in seconds) */
CURLOPT(CURLOPT_MAXAGE_CONN, CURLOPTTYPE_LONG, 288),
- /* SASL authorisation identity */
+ /* SASL authorization identity */
CURLOPT(CURLOPT_SASL_AUTHZID, CURLOPTTYPE_STRINGPOINT, 289),
/* allow RCPT TO command to fail for some recipients */
@@ -2135,6 +2138,25 @@ typedef enum {
/* Set MIME option flags. */
CURLOPT(CURLOPT_MIME_OPTIONS, CURLOPTTYPE_LONG, 315),
+ /* set the SSH host key callback, must point to a curl_sshkeycallback
+ function */
+ CURLOPT(CURLOPT_SSH_HOSTKEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 316),
+
+ /* set the SSH host key callback custom pointer */
+ CURLOPT(CURLOPT_SSH_HOSTKEYDATA, CURLOPTTYPE_CBPOINT, 317),
+
+ /* specify which protocols that are allowed to be used for the transfer,
+ which thus helps the app which takes URLs from users or other external
+ inputs and want to restrict what protocol(s) to deal with. Defaults to
+ all built-in protocols. */
+ CURLOPT(CURLOPT_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 318),
+
+ /* specify which protocols that libcurl is allowed to follow directs to */
+ CURLOPT(CURLOPT_REDIR_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 319),
+
+ /* websockets options */
+ CURLOPT(CURLOPT_WS_OPTIONS, CURLOPTTYPE_LONG, 320),
+
CURLOPT_LASTENTRY /* the last unused */
} CURLoption;
@@ -2160,6 +2182,9 @@ typedef enum {
#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
+/* */
+#define CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_SERVER_RESPONSE_TIMEOUT
+
#else
/* This is set if CURL_NO_OLDIES is defined at compile-time */
#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
@@ -2174,7 +2199,7 @@ typedef enum {
#define CURL_IPRESOLVE_V4 1 /* uses only IPv4 addresses/connections */
#define CURL_IPRESOLVE_V6 2 /* uses only IPv6 addresses/connections */
- /* three convenient "aliases" that follow the name scheme better */
+ /* Convenient "aliases" */
#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
/* These enums are for use with the CURLOPT_HTTP_VERSION option. */
@@ -2602,8 +2627,10 @@ CURL_EXTERN void curl_free(void *p);
*
* curl_global_init() should be invoked exactly once for each application that
* uses libcurl and before any call of other libcurl functions.
- *
- * This function is not thread-safe!
+
+ * This function is thread-safe if CURL_VERSION_THREADSAFE is set in the
+ * curl_version_info_data.features flag (fetch by curl_version_info()).
+
*/
CURL_EXTERN CURLcode curl_global_init(long flags);
@@ -2812,8 +2839,9 @@ typedef enum {
CURLINFO_EFFECTIVE_METHOD = CURLINFO_STRING + 58,
CURLINFO_PROXY_ERROR = CURLINFO_LONG + 59,
CURLINFO_REFERER = CURLINFO_STRING + 60,
-
- CURLINFO_LASTONE = 60
+ CURLINFO_CAINFO = CURLINFO_STRING + 61,
+ CURLINFO_CAPATH = CURLINFO_STRING + 62,
+ CURLINFO_LASTONE = 62
} CURLINFO;
/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
@@ -2832,7 +2860,7 @@ typedef enum {
CURLCLOSEPOLICY_LAST /* last, never use this */
} curl_closepolicy;
-#define CURL_GLOBAL_SSL (1<<0) /* no purpose since since 7.57.0 */
+#define CURL_GLOBAL_SSL (1<<0) /* no purpose since 7.57.0 */
#define CURL_GLOBAL_WIN32 (1<<1)
#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
#define CURL_GLOBAL_NOTHING 0
@@ -3019,6 +3047,7 @@ typedef struct curl_version_info_data curl_version_info_data;
#define CURL_VERSION_UNICODE (1<<27) /* Unicode support on Windows */
#define CURL_VERSION_HSTS (1<<28) /* HSTS is supported */
#define CURL_VERSION_GSASL (1<<29) /* libgsasl is supported */
+#define CURL_VERSION_THREADSAFE (1<<30) /* libcurl API is thread-safe */
/*
* NAME curl_version_info()
@@ -3082,6 +3111,8 @@ CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
#include "multi.h"
#include "urlapi.h"
#include "options.h"
+#include "header.h"
+#include "websockets.h"
/* the typechecker doesn't work in C++ (yet) */
#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
diff --git a/include/curl/curlver.h b/include/curl/curlver.h
index 6d2f99b6d..2e7124e6e 100644
--- a/include/curl/curlver.h
+++ b/include/curl/curlver.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,22 +20,24 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* This header file contains nothing but libcurl version info, generated by
a script at release-time. This was made its own header file in 7.11.2 */
/* This is the global package copyright */
-#define LIBCURL_COPYRIGHT "1996 - 2021 Daniel Stenberg, <daniel@haxx.se>."
+#define LIBCURL_COPYRIGHT "1996 - 2022 Daniel Stenberg, <daniel@haxx.se>."
/* This is the version number of the libcurl package from which this header
file origins: */
-#define LIBCURL_VERSION "7.81.0"
+#define LIBCURL_VERSION "7.86.0"
/* The numeric version number is also available "in parts" by using these
defines: */
#define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 81
+#define LIBCURL_VERSION_MINOR 86
#define LIBCURL_VERSION_PATCH 0
/* This is the numeric version of the libcurl version number, meant for easier
@@ -57,7 +59,7 @@
CURL_VERSION_BITS() macro since curl's own configure script greps for it
and needs it to contain the full number.
*/
-#define LIBCURL_VERSION_NUM 0x075100
+#define LIBCURL_VERSION_NUM 0x075600
/*
* This is the date and time when the full source package was created. The
@@ -68,7 +70,7 @@
*
* "2007-11-23"
*/
-#define LIBCURL_TIMESTAMP "2022-01-05"
+#define LIBCURL_TIMESTAMP "2022-10-26"
#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
diff --git a/include/curl/easy.h b/include/curl/easy.h
index 2dbfb26b5..9c7e63ada 100644
--- a/include/curl/easy.h
+++ b/include/curl/easy.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifdef __cplusplus
extern "C" {
diff --git a/include/curl/header.h b/include/curl/header.h
new file mode 100644
index 000000000..1598c6f11
--- /dev/null
+++ b/include/curl/header.h
@@ -0,0 +1,74 @@
+#ifndef CURLINC_HEADER_H
+#define CURLINC_HEADER_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct curl_header {
+ char *name; /* this might not use the same case */
+ char *value;
+ size_t amount; /* number of headers using this name */
+ size_t index; /* ... of this instance, 0 or higher */
+ unsigned int origin; /* see bits below */
+ void *anchor; /* handle privately used by libcurl */
+};
+
+/* 'origin' bits */
+#define CURLH_HEADER (1<<0) /* plain server header */
+#define CURLH_TRAILER (1<<1) /* trailers */
+#define CURLH_CONNECT (1<<2) /* CONNECT headers */
+#define CURLH_1XX (1<<3) /* 1xx headers */
+#define CURLH_PSEUDO (1<<4) /* pseudo headers */
+
+typedef enum {
+ CURLHE_OK,
+ CURLHE_BADINDEX, /* header exists but not with this index */
+ CURLHE_MISSING, /* no such header exists */
+ CURLHE_NOHEADERS, /* no headers at all exist (yet) */
+ CURLHE_NOREQUEST, /* no request with this number was used */
+ CURLHE_OUT_OF_MEMORY, /* out of memory while processing */
+ CURLHE_BAD_ARGUMENT, /* a function argument was not okay */
+ CURLHE_NOT_BUILT_IN /* if API was disabled in the build */
+} CURLHcode;
+
+CURL_EXTERN CURLHcode curl_easy_header(CURL *easy,
+ const char *name,
+ size_t index,
+ unsigned int origin,
+ int request,
+ struct curl_header **hout);
+
+CURL_EXTERN struct curl_header *curl_easy_nextheader(CURL *easy,
+ unsigned int origin,
+ int request,
+ struct curl_header *prev);
+
+#ifdef __cplusplus
+} /* end of extern "C" */
+#endif
+
+#endif /* CURLINC_HEADER_H */
diff --git a/include/curl/mprintf.h b/include/curl/mprintf.h
index 3549552db..cb948dcd9 100644
--- a/include/curl/mprintf.h
+++ b/include/curl/mprintf.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <stdarg.h>
diff --git a/include/curl/multi.h b/include/curl/multi.h
index 91cd95d32..2f3ec37a7 100644
--- a/include/curl/multi.h
+++ b/include/curl/multi.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
This is an "external" header file. Don't give away any internals here!
@@ -75,6 +77,7 @@ typedef enum {
CURLM_WAKEUP_FAILURE, /* wakeup is unavailable or failed */
CURLM_BAD_FUNCTION_ARGUMENT, /* function called with a bad parameter */
CURLM_ABORTED_BY_CALLBACK,
+ CURLM_UNRECOVERABLE_POLL,
CURLM_LAST
} CURLMcode;
@@ -121,7 +124,7 @@ struct curl_waitfd {
/*
* Name: curl_multi_init()
*
- * Desc: inititalize multi-style curl usage
+ * Desc: initialize multi-style curl usage
*
* Returns: a new CURLM handle to use in all 'curl_multi' functions.
*/
diff --git a/include/curl/options.h b/include/curl/options.h
index 14373b551..a792687cf 100644
--- a/include/curl/options.h
+++ b/include/curl/options.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifdef __cplusplus
@@ -31,7 +33,7 @@ typedef enum {
CURLOT_VALUES, /* (a defined set or bitmask) */
CURLOT_OFF_T, /* curl_off_t (a range of values) */
CURLOT_OBJECT, /* pointer (void *) */
- CURLOT_STRING, /* (char * to zero terminated buffer) */
+ CURLOT_STRING, /* (char * to null-terminated buffer) */
CURLOT_SLIST, /* (struct curl_slist *) */
CURLOT_CBPTR, /* (void * passed as-is to a callback) */
CURLOT_BLOB, /* blob (struct curl_blob *) */
@@ -57,7 +59,7 @@ CURL_EXTERN const struct curl_easyoption *
curl_easy_option_by_name(const char *name);
CURL_EXTERN const struct curl_easyoption *
-curl_easy_option_by_id (CURLoption id);
+curl_easy_option_by_id(CURLoption id);
CURL_EXTERN const struct curl_easyoption *
curl_easy_option_next(const struct curl_easyoption *prev);
diff --git a/include/curl/stdcheaders.h b/include/curl/stdcheaders.h
index 60596c756..82e1b5fef 100644
--- a/include/curl/stdcheaders.h
+++ b/include/curl/stdcheaders.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <sys/types.h>
diff --git a/include/curl/system.h b/include/curl/system.h
index faf8fcf84..8d56b8a4a 100644
--- a/include/curl/system.h
+++ b/include/curl/system.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -98,22 +100,6 @@
# define CURL_SUFFIX_CURL_OFF_TU UL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
-#elif defined(__WATCOMC__)
-# if defined(__386__)
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
#elif defined(__POCC__)
# if (__POCC__ < 280)
# define CURL_TYPEOF_CURL_OFF_T long
@@ -137,7 +123,7 @@
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#elif defined(__LCC__)
-# if defined(__e2k__) /* MCST eLbrus C Compiler */
+# if defined(__MCST__) /* MCST eLbrus Compiler Collection */
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
diff --git a/include/curl/typecheck-gcc.h b/include/curl/typecheck-gcc.h
index 9e14d8a37..2dabcb416 100644
--- a/include/curl/typecheck-gcc.h
+++ b/include/curl/typecheck-gcc.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* wraps curl_easy_setopt() with typechecking */
@@ -270,9 +272,9 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
(option) == CURLOPT_DNS_SERVERS || \
(option) == CURLOPT_DOH_URL || \
(option) == CURLOPT_EGDSOCKET || \
- (option) == CURLOPT_FTPPORT || \
(option) == CURLOPT_FTP_ACCOUNT || \
(option) == CURLOPT_FTP_ALTERNATIVE_TO_USER || \
+ (option) == CURLOPT_FTPPORT || \
(option) == CURLOPT_HSTS || \
(option) == CURLOPT_INTERFACE || \
(option) == CURLOPT_ISSUERCERT || \
@@ -286,10 +288,8 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
(option) == CURLOPT_PASSWORD || \
(option) == CURLOPT_PINNEDPUBLICKEY || \
(option) == CURLOPT_PRE_PROXY || \
+ (option) == CURLOPT_PROTOCOLS_STR || \
(option) == CURLOPT_PROXY || \
- (option) == CURLOPT_PROXYPASSWORD || \
- (option) == CURLOPT_PROXYUSERNAME || \
- (option) == CURLOPT_PROXYUSERPWD || \
(option) == CURLOPT_PROXY_CAINFO || \
(option) == CURLOPT_PROXY_CAPATH || \
(option) == CURLOPT_PROXY_CRLFILE || \
@@ -297,17 +297,21 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
(option) == CURLOPT_PROXY_KEYPASSWD || \
(option) == CURLOPT_PROXY_PINNEDPUBLICKEY || \
(option) == CURLOPT_PROXY_SERVICE_NAME || \
+ (option) == CURLOPT_PROXY_SSL_CIPHER_LIST || \
(option) == CURLOPT_PROXY_SSLCERT || \
(option) == CURLOPT_PROXY_SSLCERTTYPE || \
(option) == CURLOPT_PROXY_SSLKEY || \
(option) == CURLOPT_PROXY_SSLKEYTYPE || \
- (option) == CURLOPT_PROXY_SSL_CIPHER_LIST || \
(option) == CURLOPT_PROXY_TLS13_CIPHERS || \
(option) == CURLOPT_PROXY_TLSAUTH_PASSWORD || \
(option) == CURLOPT_PROXY_TLSAUTH_TYPE || \
(option) == CURLOPT_PROXY_TLSAUTH_USERNAME || \
+ (option) == CURLOPT_PROXYPASSWORD || \
+ (option) == CURLOPT_PROXYUSERNAME || \
+ (option) == CURLOPT_PROXYUSERPWD || \
(option) == CURLOPT_RANDOM_FILE || \
(option) == CURLOPT_RANGE || \
+ (option) == CURLOPT_REDIR_PROTOCOLS_STR || \
(option) == CURLOPT_REFERER || \
(option) == CURLOPT_REQUEST_TARGET || \
(option) == CURLOPT_RTSP_SESSION_ID || \
@@ -374,6 +378,7 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
(option) == CURLOPT_WRITEDATA || \
(option) == CURLOPT_RESOLVER_START_DATA || \
(option) == CURLOPT_TRAILERDATA || \
+ (option) == CURLOPT_SSH_HOSTKEYDATA || \
0)
/* evaluates to true if option takes a POST data argument (void* or char*) */
diff --git a/include/curl/urlapi.h b/include/curl/urlapi.h
index a475f91b6..e15c213cc 100644
--- a/include/curl/urlapi.h
+++ b/include/curl/urlapi.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl.h"
diff --git a/include/curl/websockets.h b/include/curl/websockets.h
new file mode 100644
index 000000000..4d57f91e5
--- /dev/null
+++ b/include/curl/websockets.h
@@ -0,0 +1,83 @@
+#ifndef CURLINC_WEBSOCKETS_H
+#define CURLINC_WEBSOCKETS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct curl_ws_frame {
+ int age; /* zero */
+ int flags; /* See the CURLWS_* defines */
+ curl_off_t offset; /* the offset of this data into the frame */
+ curl_off_t bytesleft; /* number of pending bytes left of the payload */
+};
+
+/* flag bits */
+#define CURLWS_TEXT (1<<0)
+#define CURLWS_BINARY (1<<1)
+#define CURLWS_CONT (1<<2)
+#define CURLWS_CLOSE (1<<3)
+#define CURLWS_PING (1<<4)
+#define CURLWS_OFFSET (1<<5)
+
+/*
+ * NAME curl_ws_recv()
+ *
+ * DESCRIPTION
+ *
+ * Receives data from the websocket connection. Use after successful
+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ */
+CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
+ size_t *recv,
+ struct curl_ws_frame **metap);
+
+/* sendflags for curl_ws_send() */
+#define CURLWS_PONG (1<<6)
+
+/*
+ * NAME curl_easy_send()
+ *
+ * DESCRIPTION
+ *
+ * Sends data over the websocket connection. Use after successful
+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ */
+CURL_EXTERN CURLcode curl_ws_send(CURL *curl, const void *buffer,
+ size_t buflen, size_t *sent,
+ curl_off_t framesize,
+ unsigned int sendflags);
+
+/* bits for the CURLOPT_WS_OPTIONS bitmask: */
+#define CURLWS_RAW_MODE (1<<0)
+
+CURL_EXTERN struct curl_ws_frame *curl_ws_meta(CURL *curl);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CURLINC_WEBSOCKETS_H */
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 46973bf2b..8cea346c3 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,9 +18,12 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
set(LIB_NAME libcurl)
set(LIBCURL_OUTPUT_NAME libcurl CACHE STRING "Basename of the curl library")
+add_definitions(-DBUILDING_LIBCURL)
if(BUILD_SHARED_LIBS)
set(CURL_STATICLIB NO)
@@ -40,7 +43,7 @@ list(APPEND HHEADERS
${CMAKE_CURRENT_BINARY_DIR}/curl_config.h
)
-if(WIN32)
+if(WIN32 AND NOT CURL_STATICLIB)
list(APPEND CSOURCES libcurl.rc)
endif()
@@ -93,7 +96,7 @@ if(NOT BUILD_SHARED_LIBS)
set_target_properties(${LIB_NAME} PROPERTIES INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB)
endif()
-target_link_libraries(${LIB_NAME} ${CURL_LIBS})
+target_link_libraries(${LIB_NAME} PRIVATE ${CURL_LIBS})
set_target_properties(${LIB_NAME} PROPERTIES
COMPILE_DEFINITIONS BUILDING_LIBCURL
@@ -117,7 +120,6 @@ endif()
if(WIN32)
if(BUILD_SHARED_LIBS)
- set_property(TARGET ${LIB_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "_USRDLL")
if(MSVC)
# Add "_imp" as a suffix before the extension to avoid conflicting with
# the statically linked "libcurl.lib"
@@ -130,14 +132,16 @@ target_include_directories(${LIB_NAME} INTERFACE
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<BUILD_INTERFACE:${CURL_SOURCE_DIR}/include>)
-install(TARGETS ${LIB_NAME}
- EXPORT ${TARGETS_EXPORT_NAME}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-)
-
-export(TARGETS ${LIB_NAME}
- APPEND FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
- NAMESPACE ${PROJECT_NAME}::
-)
+if(CURL_ENABLE_EXPORT_TARGET)
+ install(TARGETS ${LIB_NAME}
+ EXPORT ${TARGETS_EXPORT_NAME}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ )
+
+ export(TARGETS ${LIB_NAME}
+ FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
+ NAMESPACE ${PROJECT_NAME}::
+ )
+endif()
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 769363941..5d2df8bff 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,19 +18,17 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
-EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h \
- config-plan9.h config-riscos.h config-mac.h curl_config.h.in \
- makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \
- makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h \
- config-os400.h setup-os400.h \
- config-tpf.h mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST) \
- firefox-db2pem.sh config-vxworks.h Makefile.vxworks checksrc.pl \
- setup-win32.h .checksrc
+EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h config-plan9.h \
+ config-riscos.h config-mac.h curl_config.h.in makefile.dj config-dos.h \
+ libcurl.plist libcurl.rc config-amigaos.h makefile.amiga config-win32ce.h \
+ config-os400.h setup-os400.h $(CMAKE_DIST) setup-win32.h .checksrc
lib_LTLIBRARIES = libcurl.la
@@ -51,22 +49,15 @@ CFLAGS += @CURL_CFLAG_EXTRAS@
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "private" 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
AM_CPPFLAGS = -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
LIBS = $(BLANK_AT_MAKETIME)
-VERSIONINFO=-version-info 11:0:7
+VERSIONINFO=-version-info 12:0:8
# 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.
@@ -84,6 +75,12 @@ AM_CPPFLAGS += -DBUILDING_LIBCURL
AM_LDFLAGS =
AM_CFLAGS =
+# Makefile.inc provides the CSOURCES and HHEADERS defines
+include Makefile.inc
+
+libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
+libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
+
libcurl_la_CPPFLAGS_EXTRA =
libcurl_la_LDFLAGS_EXTRA =
libcurl_la_CFLAGS_EXTRA =
@@ -111,6 +108,11 @@ endif
if USE_CPPFLAG_CURL_STATICLIB
libcurl_la_CPPFLAGS_EXTRA += -DCURL_STATICLIB
+else
+if OS_WINDOWS
+libcurl_la_SOURCES += $(LIB_RCFILES)
+$(LIB_RCFILES): $(top_srcdir)/include/curl/curlver.h
+endif
endif
if DOING_CURL_SYMBOL_HIDING
@@ -126,20 +128,15 @@ libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS
libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
libcurlu_la_CFLAGS = $(AM_CFLAGS)
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
-libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
-
CHECKSRC = $(CS_$(V))
CS_0 = @echo " RUN " $@;
CS_1 =
CS_ = $(CS_0)
checksrc:
- $(CHECKSRC)(@PERL@ $(srcdir)/checksrc.pl -D$(srcdir) -W$(srcdir)/curl_config.h \
- $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \
+ -W$(srcdir)/curl_config.h $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] \
+ $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
@@ -156,3 +153,9 @@ tidy:
optiontable:
perl optiontable.pl < $(top_srcdir)/include/curl/curl.h > easyoptions.c
+
+if OS_WINDOWS
+# Warning is "normal": libtool: error: ignoring unknown tag RC
+.rc.lo:
+ $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include $(RCFLAGS) -i $< -o $@
+endif
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 188b2c4c2..5742ca1cb 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
VPATH = @srcdir@
@@ -110,29 +112,25 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-@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
+@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
# if symbol-hiding is enabled, hide them!
-@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE@@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_6 = -export-symbols-regex '^curl_.*'
-@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_7 = -DCURL_STATICLIB
+@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE@@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = -export-symbols-regex '^curl_.*'
+@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_6 = -DCURL_STATICLIB
+@OS_WINDOWS_TRUE@@USE_CPPFLAG_CURL_STATICLIB_FALSE@am__append_7 = $(LIB_RCFILES)
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_8 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_9 = $(CFLAG_CURL_SYMBOL_HIDING)
subdir = lib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -157,7 +155,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = curl_config.h
-CONFIG_CLEAN_FILES = libcurl.vers
+CONFIG_CLEAN_FILES = libcurl.vers libcurl.plist
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
@@ -189,30 +187,92 @@ am__uninstall_files_from_dir = { \
am__installdirs = "$(DESTDIR)$(libdir)"
LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
libcurl_la_LIBADD =
+am__libcurl_la_SOURCES_DIST = altsvc.c amigaos.c asyn-ares.c \
+ asyn-thread.c base64.c bufref.c c-hyper.c conncache.c \
+ connect.c content_encoding.c cookie.c curl_addrinfo.c \
+ curl_des.c curl_endian.c curl_fnmatch.c curl_get_line.c \
+ curl_gethostname.c curl_gssapi.c curl_memrchr.c \
+ curl_multibyte.c curl_ntlm_core.c curl_ntlm_wb.c curl_path.c \
+ curl_range.c curl_rtmp.c curl_sasl.c curl_sspi.c \
+ curl_threads.c dict.c doh.c dynbuf.c easy.c easygetopt.c \
+ easyoptions.c escape.c file.c fileinfo.c fopen.c formdata.c \
+ ftp.c ftplistparser.c getenv.c getinfo.c gopher.c h2h3.c \
+ hash.c headers.c hmac.c hostasyn.c hostip.c hostip4.c \
+ hostip6.c hostsyn.c hsts.c http.c http2.c http_chunks.c \
+ http_digest.c http_negotiate.c http_ntlm.c http_proxy.c \
+ http_aws_sigv4.c idn_win32.c if2ip.c imap.c inet_ntop.c \
+ inet_pton.c krb5.c ldap.c llist.c md4.c md5.c memdebug.c \
+ mime.c mprintf.c mqtt.c multi.c netrc.c nonblock.c noproxy.c \
+ openldap.c parsedate.c pingpong.c pop3.c progress.c psl.c \
+ rand.c rename.c rtsp.c select.c sendf.c setopt.c sha256.c \
+ share.c slist.c smb.c smtp.c socketpair.c socks.c \
+ socks_gssapi.c socks_sspi.c speedcheck.c splay.c strcase.c \
+ strdup.c strerror.c strtok.c strtoofft.c system_win32.c \
+ telnet.c tftp.c timediff.c timeval.c transfer.c url.c urlapi.c \
+ version.c version_win32.c warnless.c wildcard.c ws.c \
+ vauth/cleartext.c vauth/cram.c vauth/digest.c \
+ vauth/digest_sspi.c vauth/gsasl.c vauth/krb5_gssapi.c \
+ vauth/krb5_sspi.c vauth/ntlm.c vauth/ntlm_sspi.c \
+ vauth/oauth2.c vauth/spnego_gssapi.c vauth/spnego_sspi.c \
+ vauth/vauth.c vtls/bearssl.c vtls/gskit.c vtls/gtls.c \
+ vtls/hostcheck.c vtls/keylog.c vtls/mbedtls.c \
+ vtls/mbedtls_threadlock.c vtls/nss.c vtls/openssl.c \
+ vtls/rustls.c vtls/schannel.c vtls/schannel_verify.c \
+ vtls/sectransp.c vtls/vtls.c vtls/wolfssl.c vtls/x509asn1.c \
+ vquic/msh3.c vquic/ngtcp2.c vquic/quiche.c vquic/vquic.c \
+ vssh/libssh.c vssh/libssh2.c vssh/wolfssh.c altsvc.h amigaos.h \
+ arpa_telnet.h asyn.h bufref.h c-hyper.h conncache.h connect.h \
+ content_encoding.h cookie.h curl_addrinfo.h curl_base64.h \
+ curl_ctype.h curl_des.h curl_endian.h curl_fnmatch.h \
+ curl_get_line.h curl_gethostname.h curl_gssapi.h curl_hmac.h \
+ curl_krb5.h curl_ldap.h curl_md4.h curl_md5.h curl_memory.h \
+ curl_memrchr.h curl_multibyte.h curl_ntlm_core.h \
+ curl_ntlm_wb.h curl_path.h curl_printf.h curl_range.h \
+ curl_rtmp.h curl_sasl.h curl_setup.h curl_setup_once.h \
+ curl_sha256.h curl_sspi.h curl_threads.h curlx.h dict.h doh.h \
+ dynbuf.h easy_lock.h easyif.h easyoptions.h escape.h file.h \
+ fileinfo.h fopen.h formdata.h functypes.h ftp.h \
+ ftplistparser.h getinfo.h gopher.h h2h3.h hash.h headers.h \
+ hostip.h hsts.h http.h http2.h http_chunks.h http_digest.h \
+ http_negotiate.h http_ntlm.h http_proxy.h http_aws_sigv4.h \
+ if2ip.h imap.h inet_ntop.h inet_pton.h llist.h memdebug.h \
+ mime.h mqtt.h multihandle.h multiif.h netrc.h nonblock.h \
+ noproxy.h parsedate.h pingpong.h pop3.h progress.h psl.h \
+ quic.h rand.h rename.h rtsp.h select.h sendf.h setopt.h \
+ setup-vms.h share.h sigpipe.h slist.h smb.h smtp.h sockaddr.h \
+ socketpair.h socks.h speedcheck.h splay.h strcase.h strdup.h \
+ strerror.h strtok.h strtoofft.h system_win32.h telnet.h tftp.h \
+ timediff.h timeval.h transfer.h url.h urlapi-int.h urldata.h \
+ version_win32.h warnless.h wildcard.h ws.h vauth/digest.h \
+ vauth/ntlm.h vauth/vauth.h vtls/bearssl.h vtls/gskit.h \
+ vtls/gtls.h vtls/hostcheck.h vtls/keylog.h vtls/mbedtls.h \
+ vtls/mbedtls_threadlock.h vtls/nssg.h vtls/openssl.h \
+ vtls/rustls.h vtls/schannel.h vtls/sectransp.h vtls/vtls.h \
+ vtls/wolfssl.h vtls/x509asn1.h vquic/msh3.h vquic/ngtcp2.h \
+ vquic/quiche.h vquic/vquic.h vssh/ssh.h libcurl.rc
am__objects_1 = libcurl_la-altsvc.lo libcurl_la-amigaos.lo \
libcurl_la-asyn-ares.lo libcurl_la-asyn-thread.lo \
libcurl_la-base64.lo libcurl_la-bufref.lo \
libcurl_la-c-hyper.lo libcurl_la-conncache.lo \
libcurl_la-connect.lo libcurl_la-content_encoding.lo \
libcurl_la-cookie.lo libcurl_la-curl_addrinfo.lo \
- libcurl_la-curl_ctype.lo libcurl_la-curl_des.lo \
- libcurl_la-curl_endian.lo libcurl_la-curl_fnmatch.lo \
- libcurl_la-curl_get_line.lo libcurl_la-curl_gethostname.lo \
- libcurl_la-curl_gssapi.lo libcurl_la-curl_memrchr.lo \
- libcurl_la-curl_multibyte.lo libcurl_la-curl_ntlm_core.lo \
- libcurl_la-curl_ntlm_wb.lo libcurl_la-curl_path.lo \
- libcurl_la-curl_range.lo libcurl_la-curl_rtmp.lo \
- libcurl_la-curl_sasl.lo libcurl_la-curl_sspi.lo \
- libcurl_la-curl_threads.lo libcurl_la-dict.lo \
- libcurl_la-doh.lo libcurl_la-dotdot.lo libcurl_la-dynbuf.lo \
+ libcurl_la-curl_des.lo libcurl_la-curl_endian.lo \
+ libcurl_la-curl_fnmatch.lo libcurl_la-curl_get_line.lo \
+ libcurl_la-curl_gethostname.lo libcurl_la-curl_gssapi.lo \
+ libcurl_la-curl_memrchr.lo libcurl_la-curl_multibyte.lo \
+ libcurl_la-curl_ntlm_core.lo libcurl_la-curl_ntlm_wb.lo \
+ libcurl_la-curl_path.lo libcurl_la-curl_range.lo \
+ libcurl_la-curl_rtmp.lo libcurl_la-curl_sasl.lo \
+ libcurl_la-curl_sspi.lo libcurl_la-curl_threads.lo \
+ libcurl_la-dict.lo libcurl_la-doh.lo libcurl_la-dynbuf.lo \
libcurl_la-easy.lo libcurl_la-easygetopt.lo \
libcurl_la-easyoptions.lo libcurl_la-escape.lo \
- libcurl_la-file.lo libcurl_la-fileinfo.lo \
+ libcurl_la-file.lo libcurl_la-fileinfo.lo libcurl_la-fopen.lo \
libcurl_la-formdata.lo libcurl_la-ftp.lo \
libcurl_la-ftplistparser.lo libcurl_la-getenv.lo \
- libcurl_la-getinfo.lo libcurl_la-gopher.lo libcurl_la-hash.lo \
- libcurl_la-hmac.lo libcurl_la-hostasyn.lo \
- libcurl_la-hostcheck.lo libcurl_la-hostip.lo \
+ libcurl_la-getinfo.lo libcurl_la-gopher.lo libcurl_la-h2h3.lo \
+ libcurl_la-hash.lo libcurl_la-headers.lo libcurl_la-hmac.lo \
+ libcurl_la-hostasyn.lo libcurl_la-hostip.lo \
libcurl_la-hostip4.lo libcurl_la-hostip6.lo \
libcurl_la-hostsyn.lo libcurl_la-hsts.lo libcurl_la-http.lo \
libcurl_la-http2.lo libcurl_la-http_chunks.lo \
@@ -224,8 +284,8 @@ am__objects_1 = libcurl_la-altsvc.lo libcurl_la-amigaos.lo \
libcurl_la-llist.lo libcurl_la-md4.lo libcurl_la-md5.lo \
libcurl_la-memdebug.lo libcurl_la-mime.lo \
libcurl_la-mprintf.lo libcurl_la-mqtt.lo libcurl_la-multi.lo \
- libcurl_la-netrc.lo libcurl_la-non-ascii.lo \
- libcurl_la-nonblock.lo libcurl_la-openldap.lo \
+ libcurl_la-netrc.lo libcurl_la-nonblock.lo \
+ libcurl_la-noproxy.lo libcurl_la-openldap.lo \
libcurl_la-parsedate.lo libcurl_la-pingpong.lo \
libcurl_la-pop3.lo libcurl_la-progress.lo libcurl_la-psl.lo \
libcurl_la-rand.lo libcurl_la-rename.lo libcurl_la-rtsp.lo \
@@ -237,11 +297,11 @@ am__objects_1 = libcurl_la-altsvc.lo libcurl_la-amigaos.lo \
libcurl_la-splay.lo libcurl_la-strcase.lo libcurl_la-strdup.lo \
libcurl_la-strerror.lo libcurl_la-strtok.lo \
libcurl_la-strtoofft.lo libcurl_la-system_win32.lo \
- libcurl_la-telnet.lo libcurl_la-tftp.lo libcurl_la-timeval.lo \
- libcurl_la-transfer.lo libcurl_la-url.lo libcurl_la-urlapi.lo \
- libcurl_la-version.lo libcurl_la-version_win32.lo \
- libcurl_la-warnless.lo libcurl_la-wildcard.lo \
- libcurl_la-x509asn1.lo
+ libcurl_la-telnet.lo libcurl_la-tftp.lo libcurl_la-timediff.lo \
+ libcurl_la-timeval.lo libcurl_la-transfer.lo libcurl_la-url.lo \
+ libcurl_la-urlapi.lo libcurl_la-version.lo \
+ libcurl_la-version_win32.lo libcurl_la-warnless.lo \
+ libcurl_la-wildcard.lo libcurl_la-ws.lo
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_2 = vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \
vauth/libcurl_la-digest.lo vauth/libcurl_la-digest_sspi.lo \
@@ -251,16 +311,15 @@ am__objects_2 = vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \
vauth/libcurl_la-spnego_gssapi.lo \
vauth/libcurl_la-spnego_sspi.lo vauth/libcurl_la-vauth.lo
am__objects_3 = vtls/libcurl_la-bearssl.lo vtls/libcurl_la-gskit.lo \
- vtls/libcurl_la-gtls.lo vtls/libcurl_la-keylog.lo \
- vtls/libcurl_la-mbedtls.lo \
- vtls/libcurl_la-mbedtls_threadlock.lo \
- vtls/libcurl_la-mesalink.lo vtls/libcurl_la-nss.lo \
+ vtls/libcurl_la-gtls.lo vtls/libcurl_la-hostcheck.lo \
+ vtls/libcurl_la-keylog.lo vtls/libcurl_la-mbedtls.lo \
+ vtls/libcurl_la-mbedtls_threadlock.lo vtls/libcurl_la-nss.lo \
vtls/libcurl_la-openssl.lo vtls/libcurl_la-rustls.lo \
vtls/libcurl_la-schannel.lo vtls/libcurl_la-schannel_verify.lo \
vtls/libcurl_la-sectransp.lo vtls/libcurl_la-vtls.lo \
- vtls/libcurl_la-wolfssl.lo
-am__objects_4 = vquic/libcurl_la-ngtcp2.lo vquic/libcurl_la-quiche.lo \
- vquic/libcurl_la-vquic.lo
+ vtls/libcurl_la-wolfssl.lo vtls/libcurl_la-x509asn1.lo
+am__objects_4 = vquic/libcurl_la-msh3.lo vquic/libcurl_la-ngtcp2.lo \
+ vquic/libcurl_la-quiche.lo vquic/libcurl_la-vquic.lo
am__objects_5 = vssh/libcurl_la-libssh.lo vssh/libcurl_la-libssh2.lo \
vssh/libcurl_la-wolfssh.lo
am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
@@ -268,7 +327,10 @@ am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
am__objects_7 =
am__objects_8 = $(am__objects_7) $(am__objects_7) $(am__objects_7) \
$(am__objects_7) $(am__objects_7)
-am_libcurl_la_OBJECTS = $(am__objects_6) $(am__objects_8)
+am__objects_9 = libcurl.lo
+@OS_WINDOWS_TRUE@@USE_CPPFLAG_CURL_STATICLIB_FALSE@am__objects_10 = $(am__objects_9)
+am_libcurl_la_OBJECTS = $(am__objects_6) $(am__objects_8) \
+ $(am__objects_10)
libcurl_la_OBJECTS = $(am_libcurl_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -278,44 +340,43 @@ 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 =
-am__objects_9 = libcurlu_la-altsvc.lo libcurlu_la-amigaos.lo \
+am__objects_11 = libcurlu_la-altsvc.lo libcurlu_la-amigaos.lo \
libcurlu_la-asyn-ares.lo libcurlu_la-asyn-thread.lo \
libcurlu_la-base64.lo libcurlu_la-bufref.lo \
libcurlu_la-c-hyper.lo libcurlu_la-conncache.lo \
libcurlu_la-connect.lo libcurlu_la-content_encoding.lo \
libcurlu_la-cookie.lo libcurlu_la-curl_addrinfo.lo \
- libcurlu_la-curl_ctype.lo libcurlu_la-curl_des.lo \
- libcurlu_la-curl_endian.lo libcurlu_la-curl_fnmatch.lo \
- libcurlu_la-curl_get_line.lo libcurlu_la-curl_gethostname.lo \
- libcurlu_la-curl_gssapi.lo libcurlu_la-curl_memrchr.lo \
- libcurlu_la-curl_multibyte.lo libcurlu_la-curl_ntlm_core.lo \
- libcurlu_la-curl_ntlm_wb.lo libcurlu_la-curl_path.lo \
- libcurlu_la-curl_range.lo libcurlu_la-curl_rtmp.lo \
- libcurlu_la-curl_sasl.lo libcurlu_la-curl_sspi.lo \
- libcurlu_la-curl_threads.lo libcurlu_la-dict.lo \
- libcurlu_la-doh.lo libcurlu_la-dotdot.lo libcurlu_la-dynbuf.lo \
+ libcurlu_la-curl_des.lo libcurlu_la-curl_endian.lo \
+ libcurlu_la-curl_fnmatch.lo libcurlu_la-curl_get_line.lo \
+ libcurlu_la-curl_gethostname.lo libcurlu_la-curl_gssapi.lo \
+ libcurlu_la-curl_memrchr.lo libcurlu_la-curl_multibyte.lo \
+ libcurlu_la-curl_ntlm_core.lo libcurlu_la-curl_ntlm_wb.lo \
+ libcurlu_la-curl_path.lo libcurlu_la-curl_range.lo \
+ libcurlu_la-curl_rtmp.lo libcurlu_la-curl_sasl.lo \
+ libcurlu_la-curl_sspi.lo libcurlu_la-curl_threads.lo \
+ libcurlu_la-dict.lo libcurlu_la-doh.lo libcurlu_la-dynbuf.lo \
libcurlu_la-easy.lo libcurlu_la-easygetopt.lo \
libcurlu_la-easyoptions.lo libcurlu_la-escape.lo \
libcurlu_la-file.lo libcurlu_la-fileinfo.lo \
- libcurlu_la-formdata.lo libcurlu_la-ftp.lo \
- libcurlu_la-ftplistparser.lo libcurlu_la-getenv.lo \
- libcurlu_la-getinfo.lo libcurlu_la-gopher.lo \
- libcurlu_la-hash.lo libcurlu_la-hmac.lo \
- libcurlu_la-hostasyn.lo libcurlu_la-hostcheck.lo \
- libcurlu_la-hostip.lo libcurlu_la-hostip4.lo \
- libcurlu_la-hostip6.lo libcurlu_la-hostsyn.lo \
- libcurlu_la-hsts.lo libcurlu_la-http.lo libcurlu_la-http2.lo \
- libcurlu_la-http_chunks.lo libcurlu_la-http_digest.lo \
- libcurlu_la-http_negotiate.lo libcurlu_la-http_ntlm.lo \
- libcurlu_la-http_proxy.lo libcurlu_la-http_aws_sigv4.lo \
- libcurlu_la-idn_win32.lo libcurlu_la-if2ip.lo \
- libcurlu_la-imap.lo libcurlu_la-inet_ntop.lo \
- libcurlu_la-inet_pton.lo libcurlu_la-krb5.lo \
- libcurlu_la-ldap.lo libcurlu_la-llist.lo libcurlu_la-md4.lo \
- libcurlu_la-md5.lo libcurlu_la-memdebug.lo libcurlu_la-mime.lo \
- libcurlu_la-mprintf.lo libcurlu_la-mqtt.lo \
+ libcurlu_la-fopen.lo libcurlu_la-formdata.lo \
+ libcurlu_la-ftp.lo libcurlu_la-ftplistparser.lo \
+ libcurlu_la-getenv.lo libcurlu_la-getinfo.lo \
+ libcurlu_la-gopher.lo libcurlu_la-h2h3.lo libcurlu_la-hash.lo \
+ libcurlu_la-headers.lo libcurlu_la-hmac.lo \
+ libcurlu_la-hostasyn.lo libcurlu_la-hostip.lo \
+ libcurlu_la-hostip4.lo libcurlu_la-hostip6.lo \
+ libcurlu_la-hostsyn.lo libcurlu_la-hsts.lo libcurlu_la-http.lo \
+ libcurlu_la-http2.lo libcurlu_la-http_chunks.lo \
+ libcurlu_la-http_digest.lo libcurlu_la-http_negotiate.lo \
+ libcurlu_la-http_ntlm.lo libcurlu_la-http_proxy.lo \
+ libcurlu_la-http_aws_sigv4.lo libcurlu_la-idn_win32.lo \
+ libcurlu_la-if2ip.lo libcurlu_la-imap.lo \
+ libcurlu_la-inet_ntop.lo libcurlu_la-inet_pton.lo \
+ libcurlu_la-krb5.lo libcurlu_la-ldap.lo libcurlu_la-llist.lo \
+ libcurlu_la-md4.lo libcurlu_la-md5.lo libcurlu_la-memdebug.lo \
+ libcurlu_la-mime.lo libcurlu_la-mprintf.lo libcurlu_la-mqtt.lo \
libcurlu_la-multi.lo libcurlu_la-netrc.lo \
- libcurlu_la-non-ascii.lo libcurlu_la-nonblock.lo \
+ libcurlu_la-nonblock.lo libcurlu_la-noproxy.lo \
libcurlu_la-openldap.lo libcurlu_la-parsedate.lo \
libcurlu_la-pingpong.lo libcurlu_la-pop3.lo \
libcurlu_la-progress.lo libcurlu_la-psl.lo libcurlu_la-rand.lo \
@@ -330,12 +391,13 @@ am__objects_9 = libcurlu_la-altsvc.lo libcurlu_la-amigaos.lo \
libcurlu_la-strdup.lo libcurlu_la-strerror.lo \
libcurlu_la-strtok.lo libcurlu_la-strtoofft.lo \
libcurlu_la-system_win32.lo libcurlu_la-telnet.lo \
- libcurlu_la-tftp.lo libcurlu_la-timeval.lo \
- libcurlu_la-transfer.lo libcurlu_la-url.lo \
- libcurlu_la-urlapi.lo libcurlu_la-version.lo \
- libcurlu_la-version_win32.lo libcurlu_la-warnless.lo \
- libcurlu_la-wildcard.lo libcurlu_la-x509asn1.lo
-am__objects_10 = vauth/libcurlu_la-cleartext.lo \
+ libcurlu_la-tftp.lo libcurlu_la-timediff.lo \
+ libcurlu_la-timeval.lo libcurlu_la-transfer.lo \
+ libcurlu_la-url.lo libcurlu_la-urlapi.lo \
+ libcurlu_la-version.lo libcurlu_la-version_win32.lo \
+ libcurlu_la-warnless.lo libcurlu_la-wildcard.lo \
+ libcurlu_la-ws.lo
+am__objects_12 = vauth/libcurlu_la-cleartext.lo \
vauth/libcurlu_la-cram.lo vauth/libcurlu_la-digest.lo \
vauth/libcurlu_la-digest_sspi.lo vauth/libcurlu_la-gsasl.lo \
vauth/libcurlu_la-krb5_gssapi.lo \
@@ -343,23 +405,22 @@ am__objects_10 = vauth/libcurlu_la-cleartext.lo \
vauth/libcurlu_la-ntlm_sspi.lo vauth/libcurlu_la-oauth2.lo \
vauth/libcurlu_la-spnego_gssapi.lo \
vauth/libcurlu_la-spnego_sspi.lo vauth/libcurlu_la-vauth.lo
-am__objects_11 = vtls/libcurlu_la-bearssl.lo vtls/libcurlu_la-gskit.lo \
- vtls/libcurlu_la-gtls.lo vtls/libcurlu_la-keylog.lo \
- vtls/libcurlu_la-mbedtls.lo \
- vtls/libcurlu_la-mbedtls_threadlock.lo \
- vtls/libcurlu_la-mesalink.lo vtls/libcurlu_la-nss.lo \
+am__objects_13 = vtls/libcurlu_la-bearssl.lo vtls/libcurlu_la-gskit.lo \
+ vtls/libcurlu_la-gtls.lo vtls/libcurlu_la-hostcheck.lo \
+ vtls/libcurlu_la-keylog.lo vtls/libcurlu_la-mbedtls.lo \
+ vtls/libcurlu_la-mbedtls_threadlock.lo vtls/libcurlu_la-nss.lo \
vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-rustls.lo \
vtls/libcurlu_la-schannel.lo \
vtls/libcurlu_la-schannel_verify.lo \
vtls/libcurlu_la-sectransp.lo vtls/libcurlu_la-vtls.lo \
- vtls/libcurlu_la-wolfssl.lo
-am__objects_12 = vquic/libcurlu_la-ngtcp2.lo \
+ vtls/libcurlu_la-wolfssl.lo vtls/libcurlu_la-x509asn1.lo
+am__objects_14 = vquic/libcurlu_la-msh3.lo vquic/libcurlu_la-ngtcp2.lo \
vquic/libcurlu_la-quiche.lo vquic/libcurlu_la-vquic.lo
-am__objects_13 = vssh/libcurlu_la-libssh.lo \
+am__objects_15 = vssh/libcurlu_la-libssh.lo \
vssh/libcurlu_la-libssh2.lo vssh/libcurlu_la-wolfssh.lo
-am__objects_14 = $(am__objects_9) $(am__objects_10) $(am__objects_11) \
- $(am__objects_12) $(am__objects_13)
-am_libcurlu_la_OBJECTS = $(am__objects_14) $(am__objects_8)
+am__objects_16 = $(am__objects_11) $(am__objects_12) $(am__objects_13) \
+ $(am__objects_14) $(am__objects_15)
+am_libcurlu_la_OBJECTS = $(am__objects_16) $(am__objects_8)
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) \
@@ -392,7 +453,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurl_la-content_encoding.Plo \
./$(DEPDIR)/libcurl_la-cookie.Plo \
./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo \
- ./$(DEPDIR)/libcurl_la-curl_ctype.Plo \
./$(DEPDIR)/libcurl_la-curl_des.Plo \
./$(DEPDIR)/libcurl_la-curl_endian.Plo \
./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo \
@@ -410,7 +470,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurl_la-curl_sspi.Plo \
./$(DEPDIR)/libcurl_la-curl_threads.Plo \
./$(DEPDIR)/libcurl_la-dict.Plo ./$(DEPDIR)/libcurl_la-doh.Plo \
- ./$(DEPDIR)/libcurl_la-dotdot.Plo \
./$(DEPDIR)/libcurl_la-dynbuf.Plo \
./$(DEPDIR)/libcurl_la-easy.Plo \
./$(DEPDIR)/libcurl_la-easygetopt.Plo \
@@ -418,16 +477,18 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurl_la-escape.Plo \
./$(DEPDIR)/libcurl_la-file.Plo \
./$(DEPDIR)/libcurl_la-fileinfo.Plo \
+ ./$(DEPDIR)/libcurl_la-fopen.Plo \
./$(DEPDIR)/libcurl_la-formdata.Plo \
./$(DEPDIR)/libcurl_la-ftp.Plo \
./$(DEPDIR)/libcurl_la-ftplistparser.Plo \
./$(DEPDIR)/libcurl_la-getenv.Plo \
./$(DEPDIR)/libcurl_la-getinfo.Plo \
./$(DEPDIR)/libcurl_la-gopher.Plo \
+ ./$(DEPDIR)/libcurl_la-h2h3.Plo \
./$(DEPDIR)/libcurl_la-hash.Plo \
+ ./$(DEPDIR)/libcurl_la-headers.Plo \
./$(DEPDIR)/libcurl_la-hmac.Plo \
./$(DEPDIR)/libcurl_la-hostasyn.Plo \
- ./$(DEPDIR)/libcurl_la-hostcheck.Plo \
./$(DEPDIR)/libcurl_la-hostip.Plo \
./$(DEPDIR)/libcurl_la-hostip4.Plo \
./$(DEPDIR)/libcurl_la-hostip6.Plo \
@@ -456,8 +517,8 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurl_la-mqtt.Plo \
./$(DEPDIR)/libcurl_la-multi.Plo \
./$(DEPDIR)/libcurl_la-netrc.Plo \
- ./$(DEPDIR)/libcurl_la-non-ascii.Plo \
./$(DEPDIR)/libcurl_la-nonblock.Plo \
+ ./$(DEPDIR)/libcurl_la-noproxy.Plo \
./$(DEPDIR)/libcurl_la-openldap.Plo \
./$(DEPDIR)/libcurl_la-parsedate.Plo \
./$(DEPDIR)/libcurl_la-pingpong.Plo \
@@ -487,6 +548,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurl_la-system_win32.Plo \
./$(DEPDIR)/libcurl_la-telnet.Plo \
./$(DEPDIR)/libcurl_la-tftp.Plo \
+ ./$(DEPDIR)/libcurl_la-timediff.Plo \
./$(DEPDIR)/libcurl_la-timeval.Plo \
./$(DEPDIR)/libcurl_la-transfer.Plo \
./$(DEPDIR)/libcurl_la-url.Plo \
@@ -495,7 +557,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurl_la-version_win32.Plo \
./$(DEPDIR)/libcurl_la-warnless.Plo \
./$(DEPDIR)/libcurl_la-wildcard.Plo \
- ./$(DEPDIR)/libcurl_la-x509asn1.Plo \
+ ./$(DEPDIR)/libcurl_la-ws.Plo \
./$(DEPDIR)/libcurlu_la-altsvc.Plo \
./$(DEPDIR)/libcurlu_la-amigaos.Plo \
./$(DEPDIR)/libcurlu_la-asyn-ares.Plo \
@@ -508,7 +570,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurlu_la-content_encoding.Plo \
./$(DEPDIR)/libcurlu_la-cookie.Plo \
./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo \
- ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo \
./$(DEPDIR)/libcurlu_la-curl_des.Plo \
./$(DEPDIR)/libcurlu_la-curl_endian.Plo \
./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo \
@@ -527,7 +588,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurlu_la-curl_threads.Plo \
./$(DEPDIR)/libcurlu_la-dict.Plo \
./$(DEPDIR)/libcurlu_la-doh.Plo \
- ./$(DEPDIR)/libcurlu_la-dotdot.Plo \
./$(DEPDIR)/libcurlu_la-dynbuf.Plo \
./$(DEPDIR)/libcurlu_la-easy.Plo \
./$(DEPDIR)/libcurlu_la-easygetopt.Plo \
@@ -535,16 +595,18 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurlu_la-escape.Plo \
./$(DEPDIR)/libcurlu_la-file.Plo \
./$(DEPDIR)/libcurlu_la-fileinfo.Plo \
+ ./$(DEPDIR)/libcurlu_la-fopen.Plo \
./$(DEPDIR)/libcurlu_la-formdata.Plo \
./$(DEPDIR)/libcurlu_la-ftp.Plo \
./$(DEPDIR)/libcurlu_la-ftplistparser.Plo \
./$(DEPDIR)/libcurlu_la-getenv.Plo \
./$(DEPDIR)/libcurlu_la-getinfo.Plo \
./$(DEPDIR)/libcurlu_la-gopher.Plo \
+ ./$(DEPDIR)/libcurlu_la-h2h3.Plo \
./$(DEPDIR)/libcurlu_la-hash.Plo \
+ ./$(DEPDIR)/libcurlu_la-headers.Plo \
./$(DEPDIR)/libcurlu_la-hmac.Plo \
./$(DEPDIR)/libcurlu_la-hostasyn.Plo \
- ./$(DEPDIR)/libcurlu_la-hostcheck.Plo \
./$(DEPDIR)/libcurlu_la-hostip.Plo \
./$(DEPDIR)/libcurlu_la-hostip4.Plo \
./$(DEPDIR)/libcurlu_la-hostip6.Plo \
@@ -574,8 +636,8 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurlu_la-mqtt.Plo \
./$(DEPDIR)/libcurlu_la-multi.Plo \
./$(DEPDIR)/libcurlu_la-netrc.Plo \
- ./$(DEPDIR)/libcurlu_la-non-ascii.Plo \
./$(DEPDIR)/libcurlu_la-nonblock.Plo \
+ ./$(DEPDIR)/libcurlu_la-noproxy.Plo \
./$(DEPDIR)/libcurlu_la-openldap.Plo \
./$(DEPDIR)/libcurlu_la-parsedate.Plo \
./$(DEPDIR)/libcurlu_la-pingpong.Plo \
@@ -607,6 +669,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurlu_la-system_win32.Plo \
./$(DEPDIR)/libcurlu_la-telnet.Plo \
./$(DEPDIR)/libcurlu_la-tftp.Plo \
+ ./$(DEPDIR)/libcurlu_la-timediff.Plo \
./$(DEPDIR)/libcurlu_la-timeval.Plo \
./$(DEPDIR)/libcurlu_la-transfer.Plo \
./$(DEPDIR)/libcurlu_la-url.Plo \
@@ -615,7 +678,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurlu_la-version_win32.Plo \
./$(DEPDIR)/libcurlu_la-warnless.Plo \
./$(DEPDIR)/libcurlu_la-wildcard.Plo \
- ./$(DEPDIR)/libcurlu_la-x509asn1.Plo \
+ ./$(DEPDIR)/libcurlu_la-ws.Plo \
vauth/$(DEPDIR)/libcurl_la-cleartext.Plo \
vauth/$(DEPDIR)/libcurl_la-cram.Plo \
vauth/$(DEPDIR)/libcurl_la-digest.Plo \
@@ -642,9 +705,11 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo \
vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo \
vauth/$(DEPDIR)/libcurlu_la-vauth.Plo \
+ vquic/$(DEPDIR)/libcurl_la-msh3.Plo \
vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo \
vquic/$(DEPDIR)/libcurl_la-quiche.Plo \
vquic/$(DEPDIR)/libcurl_la-vquic.Plo \
+ vquic/$(DEPDIR)/libcurlu_la-msh3.Plo \
vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo \
vquic/$(DEPDIR)/libcurlu_la-quiche.Plo \
vquic/$(DEPDIR)/libcurlu_la-vquic.Plo \
@@ -657,10 +722,10 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
vtls/$(DEPDIR)/libcurl_la-bearssl.Plo \
vtls/$(DEPDIR)/libcurl_la-gskit.Plo \
vtls/$(DEPDIR)/libcurl_la-gtls.Plo \
+ vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo \
vtls/$(DEPDIR)/libcurl_la-keylog.Plo \
vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo \
vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo \
- vtls/$(DEPDIR)/libcurl_la-mesalink.Plo \
vtls/$(DEPDIR)/libcurl_la-nss.Plo \
vtls/$(DEPDIR)/libcurl_la-openssl.Plo \
vtls/$(DEPDIR)/libcurl_la-rustls.Plo \
@@ -669,13 +734,14 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
vtls/$(DEPDIR)/libcurl_la-sectransp.Plo \
vtls/$(DEPDIR)/libcurl_la-vtls.Plo \
vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo \
+ vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo \
vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo \
vtls/$(DEPDIR)/libcurlu_la-gskit.Plo \
vtls/$(DEPDIR)/libcurlu_la-gtls.Plo \
+ vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo \
vtls/$(DEPDIR)/libcurlu_la-keylog.Plo \
vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo \
vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo \
- vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo \
vtls/$(DEPDIR)/libcurlu_la-nss.Plo \
vtls/$(DEPDIR)/libcurlu_la-openssl.Plo \
vtls/$(DEPDIR)/libcurlu_la-rustls.Plo \
@@ -683,7 +749,8 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo \
vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo \
vtls/$(DEPDIR)/libcurlu_la-vtls.Plo \
- vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
+ vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo \
+ vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -704,7 +771,7 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libcurl_la_SOURCES) $(libcurlu_la_SOURCES)
-DIST_SOURCES = $(libcurl_la_SOURCES) $(libcurlu_la_SOURCES)
+DIST_SOURCES = $(am__libcurl_la_SOURCES_DIST) $(libcurlu_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -729,8 +796,8 @@ am__define_uniq_tagged_files = \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
- $(srcdir)/curl_config.h.in $(srcdir)/libcurl.vers.in \
- $(top_srcdir)/depcomp
+ $(srcdir)/curl_config.h.in $(srcdir)/libcurl.plist.in \
+ $(srcdir)/libcurl.vers.in $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -777,6 +844,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -794,6 +862,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -853,6 +922,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -871,12 +941,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -943,7 +1014,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -957,7 +1027,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -970,17 +1040,15 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
-EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h \
- config-plan9.h config-riscos.h config-mac.h curl_config.h.in \
- makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \
- makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h \
- config-os400.h setup-os400.h \
- config-tpf.h mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST) \
- firefox-db2pem.sh config-vxworks.h Makefile.vxworks checksrc.pl \
- setup-win32.h .checksrc
+EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h config-plan9.h \
+ config-riscos.h config-mac.h curl_config.h.in makefile.dj config-dos.h \
+ libcurl.plist libcurl.rc config-amigaos.h makefile.amiga config-win32ce.h \
+ config-os400.h setup-os400.h $(CMAKE_DIST) setup-win32.h .checksrc
lib_LTLIBRARIES = libcurl.la
@BUILD_UNITTESTS_FALSE@noinst_LTLIBRARIES =
@@ -994,8 +1062,6 @@ lib_LTLIBRARIES = libcurl.la
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "private" 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
# 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.
@@ -1009,20 +1075,10 @@ lib_LTLIBRARIES = libcurl.la
#
# For the full guide on libcurl ABI rules, see docs/libcurl/ABI
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
- -I$(top_srcdir)/lib $(am__append_1) -DBUILDING_LIBCURL
-VERSIONINFO = -version-info 11:0:7
+ -I$(top_srcdir)/lib -DBUILDING_LIBCURL
+VERSIONINFO = -version-info 12:0:8
AM_LDFLAGS =
AM_CFLAGS =
-libcurl_la_CPPFLAGS_EXTRA = $(am__append_7) $(am__append_8)
-libcurl_la_LDFLAGS_EXTRA = $(am__append_2) $(am__append_3) \
- $(am__append_4) $(am__append_5) $(am__append_6)
-libcurl_la_CFLAGS_EXTRA = $(am__append_9)
-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)
LIB_VAUTH_CFILES = \
vauth/cleartext.c \
vauth/cram.c \
@@ -1047,10 +1103,10 @@ LIB_VTLS_CFILES = \
vtls/bearssl.c \
vtls/gskit.c \
vtls/gtls.c \
+ vtls/hostcheck.c \
vtls/keylog.c \
vtls/mbedtls.c \
vtls/mbedtls_threadlock.c \
- vtls/mesalink.c \
vtls/nss.c \
vtls/openssl.c \
vtls/rustls.c \
@@ -1058,30 +1114,34 @@ LIB_VTLS_CFILES = \
vtls/schannel_verify.c \
vtls/sectransp.c \
vtls/vtls.c \
- vtls/wolfssl.c
+ vtls/wolfssl.c \
+ vtls/x509asn1.c
LIB_VTLS_HFILES = \
vtls/bearssl.h \
vtls/gskit.h \
vtls/gtls.h \
+ vtls/hostcheck.h \
vtls/keylog.h \
vtls/mbedtls.h \
vtls/mbedtls_threadlock.h \
- vtls/mesalink.h \
vtls/nssg.h \
vtls/openssl.h \
vtls/rustls.h \
vtls/schannel.h \
vtls/sectransp.h \
vtls/vtls.h \
- vtls/wolfssl.h
+ vtls/wolfssl.h \
+ vtls/x509asn1.h
LIB_VQUIC_CFILES = \
+ vquic/msh3.c \
vquic/ngtcp2.c \
vquic/quiche.c \
vquic/vquic.c
LIB_VQUIC_HFILES = \
+ vquic/msh3.h \
vquic/ngtcp2.h \
vquic/quiche.h \
vquic/vquic.h
@@ -1107,7 +1167,6 @@ LIB_CFILES = \
content_encoding.c \
cookie.c \
curl_addrinfo.c \
- curl_ctype.c \
curl_des.c \
curl_endian.c \
curl_fnmatch.c \
@@ -1126,7 +1185,6 @@ LIB_CFILES = \
curl_threads.c \
dict.c \
doh.c \
- dotdot.c \
dynbuf.c \
easy.c \
easygetopt.c \
@@ -1134,16 +1192,18 @@ LIB_CFILES = \
escape.c \
file.c \
fileinfo.c \
+ fopen.c \
formdata.c \
ftp.c \
ftplistparser.c \
getenv.c \
getinfo.c \
gopher.c \
+ h2h3.c \
hash.c \
+ headers.c \
hmac.c \
hostasyn.c \
- hostcheck.c \
hostip.c \
hostip4.c \
hostip6.c \
@@ -1173,8 +1233,8 @@ LIB_CFILES = \
mqtt.c \
multi.c \
netrc.c \
- non-ascii.c \
nonblock.c \
+ noproxy.c \
openldap.c \
parsedate.c \
pingpong.c \
@@ -1206,6 +1266,7 @@ LIB_CFILES = \
system_win32.c \
telnet.c \
tftp.c \
+ timediff.c \
timeval.c \
transfer.c \
url.c \
@@ -1214,7 +1275,7 @@ LIB_CFILES = \
version_win32.c \
warnless.c \
wildcard.c \
- x509asn1.c
+ ws.c
LIB_HFILES = \
altsvc.h \
@@ -1259,20 +1320,23 @@ LIB_HFILES = \
curlx.h \
dict.h \
doh.h \
- dotdot.h \
dynbuf.h \
+ easy_lock.h \
easyif.h \
easyoptions.h \
escape.h \
file.h \
fileinfo.h \
+ fopen.h \
formdata.h \
+ functypes.h \
ftp.h \
ftplistparser.h \
getinfo.h \
gopher.h \
+ h2h3.h \
hash.h \
- hostcheck.h \
+ headers.h \
hostip.h \
hsts.h \
http.h \
@@ -1294,8 +1358,8 @@ LIB_HFILES = \
multihandle.h \
multiif.h \
netrc.h \
- non-ascii.h \
nonblock.h \
+ noproxy.h \
parsedate.h \
pingpong.h \
pop3.h \
@@ -1327,6 +1391,7 @@ LIB_HFILES = \
system_win32.h \
telnet.h \
tftp.h \
+ timediff.h \
timeval.h \
transfer.h \
url.h \
@@ -1335,7 +1400,7 @@ LIB_HFILES = \
version_win32.h \
warnless.h \
wildcard.h \
- x509asn1.h
+ ws.h
LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
@@ -1346,8 +1411,18 @@ HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
# Makefile.inc provides the CSOURCES and HHEADERS defines
-libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
+libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS) $(am__append_7)
libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
+libcurl_la_CPPFLAGS_EXTRA = $(am__append_6) $(am__append_8)
+libcurl_la_LDFLAGS_EXTRA = $(am__append_1) $(am__append_2) \
+ $(am__append_3) $(am__append_4) $(am__append_5)
+libcurl_la_CFLAGS_EXTRA = $(am__append_9)
+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)
CHECKSRC = $(CS_$(V))
CS_0 = @echo " RUN " $@;
CS_1 =
@@ -1360,7 +1435,7 @@ all: curl_config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .o .obj .rc
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
@@ -1408,6 +1483,8 @@ distclean-hdr:
-rm -f curl_config.h stamp-h1
libcurl.vers: $(top_builddir)/config.status $(srcdir)/libcurl.vers.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+libcurl.plist: $(top_builddir)/config.status $(srcdir)/libcurl.plist.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
@@ -1498,14 +1575,14 @@ vtls/libcurl_la-gskit.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-gtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-hostcheck.lo: vtls/$(am__dirstamp) \
+ vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-keylog.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mbedtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mbedtls_threadlock.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurl_la-mesalink.lo: vtls/$(am__dirstamp) \
- vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-nss.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-openssl.lo: vtls/$(am__dirstamp) \
@@ -1522,12 +1599,16 @@ vtls/libcurl_la-vtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-wolfssl.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-x509asn1.lo: vtls/$(am__dirstamp) \
+ vtls/$(DEPDIR)/$(am__dirstamp)
vquic/$(am__dirstamp):
@$(MKDIR_P) vquic
@: > vquic/$(am__dirstamp)
vquic/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) vquic/$(DEPDIR)
@: > vquic/$(DEPDIR)/$(am__dirstamp)
+vquic/libcurl_la-msh3.lo: vquic/$(am__dirstamp) \
+ vquic/$(DEPDIR)/$(am__dirstamp)
vquic/libcurl_la-ngtcp2.lo: vquic/$(am__dirstamp) \
vquic/$(DEPDIR)/$(am__dirstamp)
vquic/libcurl_la-quiche.lo: vquic/$(am__dirstamp) \
@@ -1581,14 +1662,14 @@ vtls/libcurlu_la-gskit.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-gtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-hostcheck.lo: vtls/$(am__dirstamp) \
+ vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-keylog.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mbedtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mbedtls_threadlock.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurlu_la-mesalink.lo: vtls/$(am__dirstamp) \
- vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-nss.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-openssl.lo: vtls/$(am__dirstamp) \
@@ -1605,6 +1686,10 @@ vtls/libcurlu_la-vtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-wolfssl.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-x509asn1.lo: vtls/$(am__dirstamp) \
+ vtls/$(DEPDIR)/$(am__dirstamp)
+vquic/libcurlu_la-msh3.lo: vquic/$(am__dirstamp) \
+ vquic/$(DEPDIR)/$(am__dirstamp)
vquic/libcurlu_la-ngtcp2.lo: vquic/$(am__dirstamp) \
vquic/$(DEPDIR)/$(am__dirstamp)
vquic/libcurlu_la-quiche.lo: vquic/$(am__dirstamp) \
@@ -1647,7 +1732,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-content_encoding.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cookie.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ctype.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_des.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_endian.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo@am__quote@ # am--include-marker
@@ -1666,7 +1750,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_threads.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dict.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-doh.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dotdot.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dynbuf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-easy.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-easygetopt.Plo@am__quote@ # am--include-marker
@@ -1674,16 +1757,18 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-escape.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-file.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-fileinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-fopen.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-formdata.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ftp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ftplistparser.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-getenv.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-getinfo.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-gopher.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-h2h3.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hash.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-headers.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hmac.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostasyn.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostip.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostip4.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostip6.Plo@am__quote@ # am--include-marker
@@ -1713,8 +1798,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-mqtt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-multi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-netrc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-non-ascii.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-nonblock.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-noproxy.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-openldap.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-parsedate.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pingpong.Plo@am__quote@ # am--include-marker
@@ -1746,6 +1831,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-system_win32.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-telnet.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-tftp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-timediff.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-timeval.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-transfer.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-url.Plo@am__quote@ # am--include-marker
@@ -1754,7 +1840,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-version_win32.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-warnless.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-wildcard.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-x509asn1.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ws.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-altsvc.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-amigaos.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-ares.Plo@am__quote@ # am--include-marker
@@ -1767,7 +1853,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-content_encoding.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cookie.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ctype.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_des.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_endian.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo@am__quote@ # am--include-marker
@@ -1786,7 +1871,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_threads.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dict.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-doh.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dotdot.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dynbuf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-easy.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-easygetopt.Plo@am__quote@ # am--include-marker
@@ -1794,16 +1878,18 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-escape.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-file.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-fileinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-fopen.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-formdata.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ftp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ftplistparser.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-getenv.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-getinfo.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-gopher.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-h2h3.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hash.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-headers.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hmac.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostasyn.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostip.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostip4.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostip6.Plo@am__quote@ # am--include-marker
@@ -1833,8 +1919,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-mqtt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-multi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-netrc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-non-ascii.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-nonblock.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-noproxy.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-openldap.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-parsedate.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pingpong.Plo@am__quote@ # am--include-marker
@@ -1866,6 +1952,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-system_win32.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-telnet.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-tftp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-timediff.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-timeval.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-transfer.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-url.Plo@am__quote@ # am--include-marker
@@ -1874,7 +1961,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-version_win32.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-warnless.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-wildcard.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ws.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-cleartext.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-cram.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-digest.Plo@am__quote@ # am--include-marker
@@ -1901,9 +1988,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-vauth.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-msh3.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-quiche.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-vquic.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-msh3.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-quiche.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-vquic.Plo@am__quote@ # am--include-marker
@@ -1916,10 +2005,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-bearssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-keylog.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-rustls.Plo@am__quote@ # am--include-marker
@@ -1928,13 +2017,14 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-sectransp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-keylog.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-rustls.Plo@am__quote@ # am--include-marker
@@ -1943,6 +2033,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-vtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@@ -2058,13 +2149,6 @@ libcurl_la-curl_addrinfo.lo: curl_addrinfo.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_addrinfo.lo `test -f 'curl_addrinfo.c' || echo '$(srcdir)/'`curl_addrinfo.c
-libcurl_la-curl_ctype.lo: curl_ctype.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_ctype.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_ctype.Tpo -c -o libcurl_la-curl_ctype.lo `test -f 'curl_ctype.c' || echo '$(srcdir)/'`curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_ctype.Tpo $(DEPDIR)/libcurl_la-curl_ctype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='curl_ctype.c' object='libcurl_la-curl_ctype.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_ctype.lo `test -f 'curl_ctype.c' || echo '$(srcdir)/'`curl_ctype.c
-
libcurl_la-curl_des.lo: curl_des.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_des.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_des.Tpo -c -o libcurl_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_des.Tpo $(DEPDIR)/libcurl_la-curl_des.Plo
@@ -2191,13 +2275,6 @@ libcurl_la-doh.lo: doh.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-doh.lo `test -f 'doh.c' || echo '$(srcdir)/'`doh.c
-libcurl_la-dotdot.lo: dotdot.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-dotdot.lo -MD -MP -MF $(DEPDIR)/libcurl_la-dotdot.Tpo -c -o libcurl_la-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-dotdot.Tpo $(DEPDIR)/libcurl_la-dotdot.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dotdot.c' object='libcurl_la-dotdot.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-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c
-
libcurl_la-dynbuf.lo: dynbuf.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-dynbuf.lo -MD -MP -MF $(DEPDIR)/libcurl_la-dynbuf.Tpo -c -o libcurl_la-dynbuf.lo `test -f 'dynbuf.c' || echo '$(srcdir)/'`dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-dynbuf.Tpo $(DEPDIR)/libcurl_la-dynbuf.Plo
@@ -2247,6 +2324,13 @@ libcurl_la-fileinfo.lo: fileinfo.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-fileinfo.lo `test -f 'fileinfo.c' || echo '$(srcdir)/'`fileinfo.c
+libcurl_la-fopen.lo: fopen.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-fopen.lo -MD -MP -MF $(DEPDIR)/libcurl_la-fopen.Tpo -c -o libcurl_la-fopen.lo `test -f 'fopen.c' || echo '$(srcdir)/'`fopen.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-fopen.Tpo $(DEPDIR)/libcurl_la-fopen.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fopen.c' object='libcurl_la-fopen.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-fopen.lo `test -f 'fopen.c' || echo '$(srcdir)/'`fopen.c
+
libcurl_la-formdata.lo: formdata.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-formdata.lo -MD -MP -MF $(DEPDIR)/libcurl_la-formdata.Tpo -c -o libcurl_la-formdata.lo `test -f 'formdata.c' || echo '$(srcdir)/'`formdata.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-formdata.Tpo $(DEPDIR)/libcurl_la-formdata.Plo
@@ -2289,6 +2373,13 @@ 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
+libcurl_la-h2h3.lo: h2h3.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-h2h3.lo -MD -MP -MF $(DEPDIR)/libcurl_la-h2h3.Tpo -c -o libcurl_la-h2h3.lo `test -f 'h2h3.c' || echo '$(srcdir)/'`h2h3.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-h2h3.Tpo $(DEPDIR)/libcurl_la-h2h3.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='h2h3.c' object='libcurl_la-h2h3.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-h2h3.lo `test -f 'h2h3.c' || echo '$(srcdir)/'`h2h3.c
+
libcurl_la-hash.lo: hash.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-hash.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hash.Tpo -c -o libcurl_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hash.Tpo $(DEPDIR)/libcurl_la-hash.Plo
@@ -2296,6 +2387,13 @@ libcurl_la-hash.lo: hash.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-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+libcurl_la-headers.lo: headers.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-headers.lo -MD -MP -MF $(DEPDIR)/libcurl_la-headers.Tpo -c -o libcurl_la-headers.lo `test -f 'headers.c' || echo '$(srcdir)/'`headers.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-headers.Tpo $(DEPDIR)/libcurl_la-headers.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='headers.c' object='libcurl_la-headers.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-headers.lo `test -f 'headers.c' || echo '$(srcdir)/'`headers.c
+
libcurl_la-hmac.lo: hmac.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-hmac.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hmac.Tpo -c -o libcurl_la-hmac.lo `test -f 'hmac.c' || echo '$(srcdir)/'`hmac.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hmac.Tpo $(DEPDIR)/libcurl_la-hmac.Plo
@@ -2310,13 +2408,6 @@ libcurl_la-hostasyn.lo: hostasyn.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-hostasyn.lo `test -f 'hostasyn.c' || echo '$(srcdir)/'`hostasyn.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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hostcheck.c' object='libcurl_la-hostcheck.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-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
-
libcurl_la-hostip.lo: hostip.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-hostip.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hostip.Tpo -c -o libcurl_la-hostip.lo `test -f 'hostip.c' || echo '$(srcdir)/'`hostip.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hostip.Tpo $(DEPDIR)/libcurl_la-hostip.Plo
@@ -2520,13 +2611,6 @@ libcurl_la-netrc.lo: netrc.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-netrc.lo `test -f 'netrc.c' || echo '$(srcdir)/'`netrc.c
-libcurl_la-non-ascii.lo: non-ascii.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-non-ascii.lo -MD -MP -MF $(DEPDIR)/libcurl_la-non-ascii.Tpo -c -o libcurl_la-non-ascii.lo `test -f 'non-ascii.c' || echo '$(srcdir)/'`non-ascii.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-non-ascii.Tpo $(DEPDIR)/libcurl_la-non-ascii.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='non-ascii.c' object='libcurl_la-non-ascii.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-non-ascii.lo `test -f 'non-ascii.c' || echo '$(srcdir)/'`non-ascii.c
-
libcurl_la-nonblock.lo: nonblock.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-nonblock.lo -MD -MP -MF $(DEPDIR)/libcurl_la-nonblock.Tpo -c -o libcurl_la-nonblock.lo `test -f 'nonblock.c' || echo '$(srcdir)/'`nonblock.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-nonblock.Tpo $(DEPDIR)/libcurl_la-nonblock.Plo
@@ -2534,6 +2618,13 @@ libcurl_la-nonblock.lo: nonblock.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-nonblock.lo `test -f 'nonblock.c' || echo '$(srcdir)/'`nonblock.c
+libcurl_la-noproxy.lo: noproxy.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-noproxy.lo -MD -MP -MF $(DEPDIR)/libcurl_la-noproxy.Tpo -c -o libcurl_la-noproxy.lo `test -f 'noproxy.c' || echo '$(srcdir)/'`noproxy.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-noproxy.Tpo $(DEPDIR)/libcurl_la-noproxy.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='noproxy.c' object='libcurl_la-noproxy.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-noproxy.lo `test -f 'noproxy.c' || echo '$(srcdir)/'`noproxy.c
+
libcurl_la-openldap.lo: openldap.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-openldap.lo -MD -MP -MF $(DEPDIR)/libcurl_la-openldap.Tpo -c -o libcurl_la-openldap.lo `test -f 'openldap.c' || echo '$(srcdir)/'`openldap.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-openldap.Tpo $(DEPDIR)/libcurl_la-openldap.Plo
@@ -2751,6 +2842,13 @@ libcurl_la-tftp.lo: tftp.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-tftp.lo `test -f 'tftp.c' || echo '$(srcdir)/'`tftp.c
+libcurl_la-timediff.lo: timediff.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-timediff.lo -MD -MP -MF $(DEPDIR)/libcurl_la-timediff.Tpo -c -o libcurl_la-timediff.lo `test -f 'timediff.c' || echo '$(srcdir)/'`timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-timediff.Tpo $(DEPDIR)/libcurl_la-timediff.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='timediff.c' object='libcurl_la-timediff.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-timediff.lo `test -f 'timediff.c' || echo '$(srcdir)/'`timediff.c
+
libcurl_la-timeval.lo: timeval.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-timeval.lo -MD -MP -MF $(DEPDIR)/libcurl_la-timeval.Tpo -c -o libcurl_la-timeval.lo `test -f 'timeval.c' || echo '$(srcdir)/'`timeval.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-timeval.Tpo $(DEPDIR)/libcurl_la-timeval.Plo
@@ -2807,12 +2905,12 @@ libcurl_la-wildcard.lo: wildcard.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-wildcard.lo `test -f 'wildcard.c' || echo '$(srcdir)/'`wildcard.c
-libcurl_la-x509asn1.lo: x509asn1.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-x509asn1.lo -MD -MP -MF $(DEPDIR)/libcurl_la-x509asn1.Tpo -c -o libcurl_la-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-x509asn1.Tpo $(DEPDIR)/libcurl_la-x509asn1.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x509asn1.c' object='libcurl_la-x509asn1.lo' libtool=yes @AMDEPBACKSLASH@
+libcurl_la-ws.lo: ws.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-ws.lo -MD -MP -MF $(DEPDIR)/libcurl_la-ws.Tpo -c -o libcurl_la-ws.lo `test -f 'ws.c' || echo '$(srcdir)/'`ws.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-ws.Tpo $(DEPDIR)/libcurl_la-ws.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ws.c' object='libcurl_la-ws.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-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.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 libcurl_la-ws.lo `test -f 'ws.c' || echo '$(srcdir)/'`ws.c
vauth/libcurl_la-cleartext.lo: vauth/cleartext.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 vauth/libcurl_la-cleartext.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-cleartext.Tpo -c -o vauth/libcurl_la-cleartext.lo `test -f 'vauth/cleartext.c' || echo '$(srcdir)/'`vauth/cleartext.c
@@ -2926,6 +3024,13 @@ vtls/libcurl_la-gtls.lo: vtls/gtls.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 vtls/libcurl_la-gtls.lo `test -f 'vtls/gtls.c' || echo '$(srcdir)/'`vtls/gtls.c
+vtls/libcurl_la-hostcheck.lo: vtls/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 vtls/libcurl_la-hostcheck.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-hostcheck.Tpo -c -o vtls/libcurl_la-hostcheck.lo `test -f 'vtls/hostcheck.c' || echo '$(srcdir)/'`vtls/hostcheck.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-hostcheck.Tpo vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/hostcheck.c' object='vtls/libcurl_la-hostcheck.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-hostcheck.lo `test -f 'vtls/hostcheck.c' || echo '$(srcdir)/'`vtls/hostcheck.c
+
vtls/libcurl_la-keylog.lo: vtls/keylog.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-keylog.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-keylog.Tpo -c -o vtls/libcurl_la-keylog.lo `test -f 'vtls/keylog.c' || echo '$(srcdir)/'`vtls/keylog.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-keylog.Tpo vtls/$(DEPDIR)/libcurl_la-keylog.Plo
@@ -2947,13 +3052,6 @@ vtls/libcurl_la-mbedtls_threadlock.lo: vtls/mbedtls_threadlock.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 vtls/libcurl_la-mbedtls_threadlock.lo `test -f 'vtls/mbedtls_threadlock.c' || echo '$(srcdir)/'`vtls/mbedtls_threadlock.c
-vtls/libcurl_la-mesalink.lo: vtls/mesalink.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-mesalink.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-mesalink.Tpo -c -o vtls/libcurl_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-mesalink.Tpo vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/mesalink.c' object='vtls/libcurl_la-mesalink.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-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.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
@@ -3010,6 +3108,20 @@ vtls/libcurl_la-wolfssl.lo: vtls/wolfssl.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 vtls/libcurl_la-wolfssl.lo `test -f 'vtls/wolfssl.c' || echo '$(srcdir)/'`vtls/wolfssl.c
+vtls/libcurl_la-x509asn1.lo: vtls/x509asn1.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-x509asn1.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-x509asn1.Tpo -c -o vtls/libcurl_la-x509asn1.lo `test -f 'vtls/x509asn1.c' || echo '$(srcdir)/'`vtls/x509asn1.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-x509asn1.Tpo vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/x509asn1.c' object='vtls/libcurl_la-x509asn1.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-x509asn1.lo `test -f 'vtls/x509asn1.c' || echo '$(srcdir)/'`vtls/x509asn1.c
+
+vquic/libcurl_la-msh3.lo: vquic/msh3.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 vquic/libcurl_la-msh3.lo -MD -MP -MF vquic/$(DEPDIR)/libcurl_la-msh3.Tpo -c -o vquic/libcurl_la-msh3.lo `test -f 'vquic/msh3.c' || echo '$(srcdir)/'`vquic/msh3.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurl_la-msh3.Tpo vquic/$(DEPDIR)/libcurl_la-msh3.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vquic/msh3.c' object='vquic/libcurl_la-msh3.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 vquic/libcurl_la-msh3.lo `test -f 'vquic/msh3.c' || echo '$(srcdir)/'`vquic/msh3.c
+
vquic/libcurl_la-ngtcp2.lo: vquic/ngtcp2.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 vquic/libcurl_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo -c -o vquic/libcurl_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
@@ -3136,13 +3248,6 @@ libcurlu_la-curl_addrinfo.lo: curl_addrinfo.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_addrinfo.lo `test -f 'curl_addrinfo.c' || echo '$(srcdir)/'`curl_addrinfo.c
-libcurlu_la-curl_ctype.lo: curl_ctype.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_ctype.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_ctype.Tpo -c -o libcurlu_la-curl_ctype.lo `test -f 'curl_ctype.c' || echo '$(srcdir)/'`curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_ctype.Tpo $(DEPDIR)/libcurlu_la-curl_ctype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='curl_ctype.c' object='libcurlu_la-curl_ctype.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_ctype.lo `test -f 'curl_ctype.c' || echo '$(srcdir)/'`curl_ctype.c
-
libcurlu_la-curl_des.lo: curl_des.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_des.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_des.Tpo -c -o libcurlu_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_des.Tpo $(DEPDIR)/libcurlu_la-curl_des.Plo
@@ -3269,13 +3374,6 @@ libcurlu_la-doh.lo: doh.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-doh.lo `test -f 'doh.c' || echo '$(srcdir)/'`doh.c
-libcurlu_la-dotdot.lo: dotdot.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-dotdot.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-dotdot.Tpo -c -o libcurlu_la-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-dotdot.Tpo $(DEPDIR)/libcurlu_la-dotdot.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dotdot.c' object='libcurlu_la-dotdot.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-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c
-
libcurlu_la-dynbuf.lo: dynbuf.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-dynbuf.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-dynbuf.Tpo -c -o libcurlu_la-dynbuf.lo `test -f 'dynbuf.c' || echo '$(srcdir)/'`dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-dynbuf.Tpo $(DEPDIR)/libcurlu_la-dynbuf.Plo
@@ -3325,6 +3423,13 @@ libcurlu_la-fileinfo.lo: fileinfo.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-fileinfo.lo `test -f 'fileinfo.c' || echo '$(srcdir)/'`fileinfo.c
+libcurlu_la-fopen.lo: fopen.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-fopen.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-fopen.Tpo -c -o libcurlu_la-fopen.lo `test -f 'fopen.c' || echo '$(srcdir)/'`fopen.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-fopen.Tpo $(DEPDIR)/libcurlu_la-fopen.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fopen.c' object='libcurlu_la-fopen.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-fopen.lo `test -f 'fopen.c' || echo '$(srcdir)/'`fopen.c
+
libcurlu_la-formdata.lo: formdata.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-formdata.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-formdata.Tpo -c -o libcurlu_la-formdata.lo `test -f 'formdata.c' || echo '$(srcdir)/'`formdata.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-formdata.Tpo $(DEPDIR)/libcurlu_la-formdata.Plo
@@ -3367,6 +3472,13 @@ 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
+libcurlu_la-h2h3.lo: h2h3.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-h2h3.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-h2h3.Tpo -c -o libcurlu_la-h2h3.lo `test -f 'h2h3.c' || echo '$(srcdir)/'`h2h3.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-h2h3.Tpo $(DEPDIR)/libcurlu_la-h2h3.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='h2h3.c' object='libcurlu_la-h2h3.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-h2h3.lo `test -f 'h2h3.c' || echo '$(srcdir)/'`h2h3.c
+
libcurlu_la-hash.lo: hash.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-hash.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hash.Tpo -c -o libcurlu_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hash.Tpo $(DEPDIR)/libcurlu_la-hash.Plo
@@ -3374,6 +3486,13 @@ libcurlu_la-hash.lo: hash.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-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+libcurlu_la-headers.lo: headers.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-headers.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-headers.Tpo -c -o libcurlu_la-headers.lo `test -f 'headers.c' || echo '$(srcdir)/'`headers.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-headers.Tpo $(DEPDIR)/libcurlu_la-headers.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='headers.c' object='libcurlu_la-headers.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-headers.lo `test -f 'headers.c' || echo '$(srcdir)/'`headers.c
+
libcurlu_la-hmac.lo: hmac.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-hmac.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hmac.Tpo -c -o libcurlu_la-hmac.lo `test -f 'hmac.c' || echo '$(srcdir)/'`hmac.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hmac.Tpo $(DEPDIR)/libcurlu_la-hmac.Plo
@@ -3388,13 +3507,6 @@ libcurlu_la-hostasyn.lo: hostasyn.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-hostasyn.lo `test -f 'hostasyn.c' || echo '$(srcdir)/'`hostasyn.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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hostcheck.c' object='libcurlu_la-hostcheck.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-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
-
libcurlu_la-hostip.lo: hostip.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-hostip.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hostip.Tpo -c -o libcurlu_la-hostip.lo `test -f 'hostip.c' || echo '$(srcdir)/'`hostip.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hostip.Tpo $(DEPDIR)/libcurlu_la-hostip.Plo
@@ -3598,13 +3710,6 @@ libcurlu_la-netrc.lo: netrc.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-netrc.lo `test -f 'netrc.c' || echo '$(srcdir)/'`netrc.c
-libcurlu_la-non-ascii.lo: non-ascii.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-non-ascii.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-non-ascii.Tpo -c -o libcurlu_la-non-ascii.lo `test -f 'non-ascii.c' || echo '$(srcdir)/'`non-ascii.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-non-ascii.Tpo $(DEPDIR)/libcurlu_la-non-ascii.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='non-ascii.c' object='libcurlu_la-non-ascii.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-non-ascii.lo `test -f 'non-ascii.c' || echo '$(srcdir)/'`non-ascii.c
-
libcurlu_la-nonblock.lo: nonblock.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-nonblock.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-nonblock.Tpo -c -o libcurlu_la-nonblock.lo `test -f 'nonblock.c' || echo '$(srcdir)/'`nonblock.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-nonblock.Tpo $(DEPDIR)/libcurlu_la-nonblock.Plo
@@ -3612,6 +3717,13 @@ libcurlu_la-nonblock.lo: nonblock.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-nonblock.lo `test -f 'nonblock.c' || echo '$(srcdir)/'`nonblock.c
+libcurlu_la-noproxy.lo: noproxy.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-noproxy.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-noproxy.Tpo -c -o libcurlu_la-noproxy.lo `test -f 'noproxy.c' || echo '$(srcdir)/'`noproxy.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-noproxy.Tpo $(DEPDIR)/libcurlu_la-noproxy.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='noproxy.c' object='libcurlu_la-noproxy.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-noproxy.lo `test -f 'noproxy.c' || echo '$(srcdir)/'`noproxy.c
+
libcurlu_la-openldap.lo: openldap.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-openldap.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-openldap.Tpo -c -o libcurlu_la-openldap.lo `test -f 'openldap.c' || echo '$(srcdir)/'`openldap.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-openldap.Tpo $(DEPDIR)/libcurlu_la-openldap.Plo
@@ -3829,6 +3941,13 @@ libcurlu_la-tftp.lo: tftp.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-tftp.lo `test -f 'tftp.c' || echo '$(srcdir)/'`tftp.c
+libcurlu_la-timediff.lo: timediff.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-timediff.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-timediff.Tpo -c -o libcurlu_la-timediff.lo `test -f 'timediff.c' || echo '$(srcdir)/'`timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-timediff.Tpo $(DEPDIR)/libcurlu_la-timediff.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='timediff.c' object='libcurlu_la-timediff.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-timediff.lo `test -f 'timediff.c' || echo '$(srcdir)/'`timediff.c
+
libcurlu_la-timeval.lo: timeval.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-timeval.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-timeval.Tpo -c -o libcurlu_la-timeval.lo `test -f 'timeval.c' || echo '$(srcdir)/'`timeval.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-timeval.Tpo $(DEPDIR)/libcurlu_la-timeval.Plo
@@ -3885,12 +4004,12 @@ libcurlu_la-wildcard.lo: wildcard.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-wildcard.lo `test -f 'wildcard.c' || echo '$(srcdir)/'`wildcard.c
-libcurlu_la-x509asn1.lo: x509asn1.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-x509asn1.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-x509asn1.Tpo -c -o libcurlu_la-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-x509asn1.Tpo $(DEPDIR)/libcurlu_la-x509asn1.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='x509asn1.c' object='libcurlu_la-x509asn1.lo' libtool=yes @AMDEPBACKSLASH@
+libcurlu_la-ws.lo: ws.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-ws.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-ws.Tpo -c -o libcurlu_la-ws.lo `test -f 'ws.c' || echo '$(srcdir)/'`ws.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-ws.Tpo $(DEPDIR)/libcurlu_la-ws.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ws.c' object='libcurlu_la-ws.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-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.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 libcurlu_la-ws.lo `test -f 'ws.c' || echo '$(srcdir)/'`ws.c
vauth/libcurlu_la-cleartext.lo: vauth/cleartext.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 vauth/libcurlu_la-cleartext.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-cleartext.Tpo -c -o vauth/libcurlu_la-cleartext.lo `test -f 'vauth/cleartext.c' || echo '$(srcdir)/'`vauth/cleartext.c
@@ -4004,6 +4123,13 @@ vtls/libcurlu_la-gtls.lo: vtls/gtls.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 vtls/libcurlu_la-gtls.lo `test -f 'vtls/gtls.c' || echo '$(srcdir)/'`vtls/gtls.c
+vtls/libcurlu_la-hostcheck.lo: vtls/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 vtls/libcurlu_la-hostcheck.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-hostcheck.Tpo -c -o vtls/libcurlu_la-hostcheck.lo `test -f 'vtls/hostcheck.c' || echo '$(srcdir)/'`vtls/hostcheck.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-hostcheck.Tpo vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/hostcheck.c' object='vtls/libcurlu_la-hostcheck.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-hostcheck.lo `test -f 'vtls/hostcheck.c' || echo '$(srcdir)/'`vtls/hostcheck.c
+
vtls/libcurlu_la-keylog.lo: vtls/keylog.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-keylog.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-keylog.Tpo -c -o vtls/libcurlu_la-keylog.lo `test -f 'vtls/keylog.c' || echo '$(srcdir)/'`vtls/keylog.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-keylog.Tpo vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
@@ -4025,13 +4151,6 @@ vtls/libcurlu_la-mbedtls_threadlock.lo: vtls/mbedtls_threadlock.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 vtls/libcurlu_la-mbedtls_threadlock.lo `test -f 'vtls/mbedtls_threadlock.c' || echo '$(srcdir)/'`vtls/mbedtls_threadlock.c
-vtls/libcurlu_la-mesalink.lo: vtls/mesalink.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-mesalink.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-mesalink.Tpo -c -o vtls/libcurlu_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-mesalink.Tpo vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/mesalink.c' object='vtls/libcurlu_la-mesalink.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-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.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
@@ -4088,6 +4207,20 @@ vtls/libcurlu_la-wolfssl.lo: vtls/wolfssl.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 vtls/libcurlu_la-wolfssl.lo `test -f 'vtls/wolfssl.c' || echo '$(srcdir)/'`vtls/wolfssl.c
+vtls/libcurlu_la-x509asn1.lo: vtls/x509asn1.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-x509asn1.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-x509asn1.Tpo -c -o vtls/libcurlu_la-x509asn1.lo `test -f 'vtls/x509asn1.c' || echo '$(srcdir)/'`vtls/x509asn1.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-x509asn1.Tpo vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vtls/x509asn1.c' object='vtls/libcurlu_la-x509asn1.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-x509asn1.lo `test -f 'vtls/x509asn1.c' || echo '$(srcdir)/'`vtls/x509asn1.c
+
+vquic/libcurlu_la-msh3.lo: vquic/msh3.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 vquic/libcurlu_la-msh3.lo -MD -MP -MF vquic/$(DEPDIR)/libcurlu_la-msh3.Tpo -c -o vquic/libcurlu_la-msh3.lo `test -f 'vquic/msh3.c' || echo '$(srcdir)/'`vquic/msh3.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurlu_la-msh3.Tpo vquic/$(DEPDIR)/libcurlu_la-msh3.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vquic/msh3.c' object='vquic/libcurlu_la-msh3.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 vquic/libcurlu_la-msh3.lo `test -f 'vquic/msh3.c' || echo '$(srcdir)/'`vquic/msh3.c
+
vquic/libcurlu_la-ngtcp2.lo: vquic/ngtcp2.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 vquic/libcurlu_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo -c -o vquic/libcurlu_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
@@ -4288,7 +4421,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo
-rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo
-rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-curl_ctype.Plo
-rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo
-rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo
-rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo
@@ -4307,7 +4439,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurl_la-curl_threads.Plo
-rm -f ./$(DEPDIR)/libcurl_la-dict.Plo
-rm -f ./$(DEPDIR)/libcurl_la-doh.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-dotdot.Plo
-rm -f ./$(DEPDIR)/libcurl_la-dynbuf.Plo
-rm -f ./$(DEPDIR)/libcurl_la-easy.Plo
-rm -f ./$(DEPDIR)/libcurl_la-easygetopt.Plo
@@ -4315,16 +4446,18 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurl_la-escape.Plo
-rm -f ./$(DEPDIR)/libcurl_la-file.Plo
-rm -f ./$(DEPDIR)/libcurl_la-fileinfo.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-fopen.Plo
-rm -f ./$(DEPDIR)/libcurl_la-formdata.Plo
-rm -f ./$(DEPDIR)/libcurl_la-ftp.Plo
-rm -f ./$(DEPDIR)/libcurl_la-ftplistparser.Plo
-rm -f ./$(DEPDIR)/libcurl_la-getenv.Plo
-rm -f ./$(DEPDIR)/libcurl_la-getinfo.Plo
-rm -f ./$(DEPDIR)/libcurl_la-gopher.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-h2h3.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hash.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-headers.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hmac.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hostasyn.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-hostcheck.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hostip.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hostip4.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hostip6.Plo
@@ -4354,8 +4487,8 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurl_la-mqtt.Plo
-rm -f ./$(DEPDIR)/libcurl_la-multi.Plo
-rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-non-ascii.Plo
-rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-noproxy.Plo
-rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo
-rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo
-rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo
@@ -4387,6 +4520,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurl_la-system_win32.Plo
-rm -f ./$(DEPDIR)/libcurl_la-telnet.Plo
-rm -f ./$(DEPDIR)/libcurl_la-tftp.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-timediff.Plo
-rm -f ./$(DEPDIR)/libcurl_la-timeval.Plo
-rm -f ./$(DEPDIR)/libcurl_la-transfer.Plo
-rm -f ./$(DEPDIR)/libcurl_la-url.Plo
@@ -4395,7 +4529,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurl_la-version_win32.Plo
-rm -f ./$(DEPDIR)/libcurl_la-warnless.Plo
-rm -f ./$(DEPDIR)/libcurl_la-wildcard.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-x509asn1.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-ws.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-altsvc.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-amigaos.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-asyn-ares.Plo
@@ -4408,7 +4542,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo
@@ -4427,7 +4560,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurlu_la-curl_threads.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-dict.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-doh.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-dotdot.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-dynbuf.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-easy.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-easygetopt.Plo
@@ -4435,16 +4567,18 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurlu_la-escape.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-file.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-fileinfo.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-fopen.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-formdata.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-ftp.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-ftplistparser.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-getenv.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-getinfo.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-gopher.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-h2h3.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hash.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-headers.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hmac.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hostasyn.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-hostcheck.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hostip.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hostip4.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hostip6.Plo
@@ -4474,8 +4608,8 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurlu_la-mqtt.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-non-ascii.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-noproxy.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo
@@ -4507,6 +4641,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurlu_la-system_win32.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-telnet.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-tftp.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-timediff.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-timeval.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-transfer.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-url.Plo
@@ -4515,7 +4650,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurlu_la-version_win32.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-x509asn1.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-ws.Plo
-rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo
-rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo
-rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo
@@ -4542,9 +4677,11 @@ distclean: distclean-am
-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo
-rm -f vauth/$(DEPDIR)/libcurlu_la-vauth.Plo
+ -rm -f vquic/$(DEPDIR)/libcurl_la-msh3.Plo
-rm -f vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
-rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
-rm -f vquic/$(DEPDIR)/libcurl_la-vquic.Plo
+ -rm -f vquic/$(DEPDIR)/libcurlu_la-msh3.Plo
-rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
-rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
-rm -f vquic/$(DEPDIR)/libcurlu_la-vquic.Plo
@@ -4557,10 +4694,10 @@ distclean: distclean-am
-rm -f vtls/$(DEPDIR)/libcurl_la-bearssl.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
+ -rm -f vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo
- -rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-rustls.Plo
@@ -4569,13 +4706,14 @@ distclean: distclean-am
-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
+ -rm -f vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
+ -rm -f vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo
- -rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-rustls.Plo
@@ -4584,6 +4722,7 @@ distclean: distclean-am
-rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
+ -rm -f vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-tags
@@ -4641,7 +4780,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo
-rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo
-rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-curl_ctype.Plo
-rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo
-rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo
-rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo
@@ -4660,7 +4798,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurl_la-curl_threads.Plo
-rm -f ./$(DEPDIR)/libcurl_la-dict.Plo
-rm -f ./$(DEPDIR)/libcurl_la-doh.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-dotdot.Plo
-rm -f ./$(DEPDIR)/libcurl_la-dynbuf.Plo
-rm -f ./$(DEPDIR)/libcurl_la-easy.Plo
-rm -f ./$(DEPDIR)/libcurl_la-easygetopt.Plo
@@ -4668,16 +4805,18 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurl_la-escape.Plo
-rm -f ./$(DEPDIR)/libcurl_la-file.Plo
-rm -f ./$(DEPDIR)/libcurl_la-fileinfo.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-fopen.Plo
-rm -f ./$(DEPDIR)/libcurl_la-formdata.Plo
-rm -f ./$(DEPDIR)/libcurl_la-ftp.Plo
-rm -f ./$(DEPDIR)/libcurl_la-ftplistparser.Plo
-rm -f ./$(DEPDIR)/libcurl_la-getenv.Plo
-rm -f ./$(DEPDIR)/libcurl_la-getinfo.Plo
-rm -f ./$(DEPDIR)/libcurl_la-gopher.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-h2h3.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hash.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-headers.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hmac.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hostasyn.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-hostcheck.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hostip.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hostip4.Plo
-rm -f ./$(DEPDIR)/libcurl_la-hostip6.Plo
@@ -4707,8 +4846,8 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurl_la-mqtt.Plo
-rm -f ./$(DEPDIR)/libcurl_la-multi.Plo
-rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-non-ascii.Plo
-rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-noproxy.Plo
-rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo
-rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo
-rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo
@@ -4740,6 +4879,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurl_la-system_win32.Plo
-rm -f ./$(DEPDIR)/libcurl_la-telnet.Plo
-rm -f ./$(DEPDIR)/libcurl_la-tftp.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-timediff.Plo
-rm -f ./$(DEPDIR)/libcurl_la-timeval.Plo
-rm -f ./$(DEPDIR)/libcurl_la-transfer.Plo
-rm -f ./$(DEPDIR)/libcurl_la-url.Plo
@@ -4748,7 +4888,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurl_la-version_win32.Plo
-rm -f ./$(DEPDIR)/libcurl_la-warnless.Plo
-rm -f ./$(DEPDIR)/libcurl_la-wildcard.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-x509asn1.Plo
+ -rm -f ./$(DEPDIR)/libcurl_la-ws.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-altsvc.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-amigaos.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-asyn-ares.Plo
@@ -4761,7 +4901,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo
@@ -4780,7 +4919,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurlu_la-curl_threads.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-dict.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-doh.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-dotdot.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-dynbuf.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-easy.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-easygetopt.Plo
@@ -4788,16 +4926,18 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurlu_la-escape.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-file.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-fileinfo.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-fopen.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-formdata.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-ftp.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-ftplistparser.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-getenv.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-getinfo.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-gopher.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-h2h3.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hash.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-headers.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hmac.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hostasyn.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-hostcheck.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hostip.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hostip4.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-hostip6.Plo
@@ -4827,8 +4967,8 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurlu_la-mqtt.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-non-ascii.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-noproxy.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo
@@ -4860,6 +5000,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurlu_la-system_win32.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-telnet.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-tftp.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-timediff.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-timeval.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-transfer.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-url.Plo
@@ -4868,7 +5009,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurlu_la-version_win32.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-x509asn1.Plo
+ -rm -f ./$(DEPDIR)/libcurlu_la-ws.Plo
-rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo
-rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo
-rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo
@@ -4895,9 +5036,11 @@ maintainer-clean: maintainer-clean-am
-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo
-rm -f vauth/$(DEPDIR)/libcurlu_la-vauth.Plo
+ -rm -f vquic/$(DEPDIR)/libcurl_la-msh3.Plo
-rm -f vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
-rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
-rm -f vquic/$(DEPDIR)/libcurl_la-vquic.Plo
+ -rm -f vquic/$(DEPDIR)/libcurlu_la-msh3.Plo
-rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
-rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
-rm -f vquic/$(DEPDIR)/libcurlu_la-vquic.Plo
@@ -4910,10 +5053,10 @@ maintainer-clean: maintainer-clean-am
-rm -f vtls/$(DEPDIR)/libcurl_la-bearssl.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
+ -rm -f vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo
- -rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-rustls.Plo
@@ -4922,13 +5065,14 @@ maintainer-clean: maintainer-clean-am
-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
+ -rm -f vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
+ -rm -f vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo
- -rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-rustls.Plo
@@ -4937,6 +5081,7 @@ maintainer-clean: maintainer-clean-am
-rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
-rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
+ -rm -f vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -4975,10 +5120,12 @@ uninstall-am: uninstall-libLTLIBRARIES
.PRECIOUS: Makefile
+@OS_WINDOWS_TRUE@@USE_CPPFLAG_CURL_STATICLIB_FALSE@$(LIB_RCFILES): $(top_srcdir)/include/curl/curlver.h
checksrc:
- $(CHECKSRC)(@PERL@ $(srcdir)/checksrc.pl -D$(srcdir) -W$(srcdir)/curl_config.h \
- $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \
+ -W$(srcdir)/curl_config.h $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] \
+ $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc
@@ -4989,6 +5136,10 @@ tidy:
optiontable:
perl optiontable.pl < $(top_srcdir)/include/curl/curl.h > easyoptions.c
+# Warning is "normal": libtool: error: ignoring unknown tag RC
+@OS_WINDOWS_TRUE@.rc.lo:
+@OS_WINDOWS_TRUE@ $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include $(RCFLAGS) -i $< -o $@
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/lib/Makefile.inc b/lib/Makefile.inc
index 3e9ddec12..b2d2e9e52 100644
--- a/lib/Makefile.inc
+++ b/lib/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
LIB_VAUTH_CFILES = \
@@ -44,10 +46,10 @@ LIB_VTLS_CFILES = \
vtls/bearssl.c \
vtls/gskit.c \
vtls/gtls.c \
+ vtls/hostcheck.c \
vtls/keylog.c \
vtls/mbedtls.c \
vtls/mbedtls_threadlock.c \
- vtls/mesalink.c \
vtls/nss.c \
vtls/openssl.c \
vtls/rustls.c \
@@ -55,30 +57,34 @@ LIB_VTLS_CFILES = \
vtls/schannel_verify.c \
vtls/sectransp.c \
vtls/vtls.c \
- vtls/wolfssl.c
+ vtls/wolfssl.c \
+ vtls/x509asn1.c
LIB_VTLS_HFILES = \
vtls/bearssl.h \
vtls/gskit.h \
vtls/gtls.h \
+ vtls/hostcheck.h \
vtls/keylog.h \
vtls/mbedtls.h \
vtls/mbedtls_threadlock.h \
- vtls/mesalink.h \
vtls/nssg.h \
vtls/openssl.h \
vtls/rustls.h \
vtls/schannel.h \
vtls/sectransp.h \
vtls/vtls.h \
- vtls/wolfssl.h
+ vtls/wolfssl.h \
+ vtls/x509asn1.h
LIB_VQUIC_CFILES = \
+ vquic/msh3.c \
vquic/ngtcp2.c \
vquic/quiche.c \
vquic/vquic.c
LIB_VQUIC_HFILES = \
+ vquic/msh3.h \
vquic/ngtcp2.h \
vquic/quiche.h \
vquic/vquic.h
@@ -104,7 +110,6 @@ LIB_CFILES = \
content_encoding.c \
cookie.c \
curl_addrinfo.c \
- curl_ctype.c \
curl_des.c \
curl_endian.c \
curl_fnmatch.c \
@@ -123,7 +128,6 @@ LIB_CFILES = \
curl_threads.c \
dict.c \
doh.c \
- dotdot.c \
dynbuf.c \
easy.c \
easygetopt.c \
@@ -131,16 +135,18 @@ LIB_CFILES = \
escape.c \
file.c \
fileinfo.c \
+ fopen.c \
formdata.c \
ftp.c \
ftplistparser.c \
getenv.c \
getinfo.c \
gopher.c \
+ h2h3.c \
hash.c \
+ headers.c \
hmac.c \
hostasyn.c \
- hostcheck.c \
hostip.c \
hostip4.c \
hostip6.c \
@@ -170,8 +176,8 @@ LIB_CFILES = \
mqtt.c \
multi.c \
netrc.c \
- non-ascii.c \
nonblock.c \
+ noproxy.c \
openldap.c \
parsedate.c \
pingpong.c \
@@ -203,6 +209,7 @@ LIB_CFILES = \
system_win32.c \
telnet.c \
tftp.c \
+ timediff.c \
timeval.c \
transfer.c \
url.c \
@@ -211,7 +218,7 @@ LIB_CFILES = \
version_win32.c \
warnless.c \
wildcard.c \
- x509asn1.c
+ ws.c
LIB_HFILES = \
altsvc.h \
@@ -256,20 +263,23 @@ LIB_HFILES = \
curlx.h \
dict.h \
doh.h \
- dotdot.h \
dynbuf.h \
+ easy_lock.h \
easyif.h \
easyoptions.h \
escape.h \
file.h \
fileinfo.h \
+ fopen.h \
formdata.h \
+ functypes.h \
ftp.h \
ftplistparser.h \
getinfo.h \
gopher.h \
+ h2h3.h \
hash.h \
- hostcheck.h \
+ headers.h \
hostip.h \
hsts.h \
http.h \
@@ -291,8 +301,8 @@ LIB_HFILES = \
multihandle.h \
multiif.h \
netrc.h \
- non-ascii.h \
nonblock.h \
+ noproxy.h \
parsedate.h \
pingpong.h \
pop3.h \
@@ -324,6 +334,7 @@ LIB_HFILES = \
system_win32.h \
telnet.h \
tftp.h \
+ timediff.h \
timeval.h \
transfer.h \
url.h \
@@ -332,7 +343,7 @@ LIB_HFILES = \
version_win32.h \
warnless.h \
wildcard.h \
- x509asn1.h
+ ws.h
LIB_RCFILES = libcurl.rc
diff --git a/lib/Makefile.m32 b/lib/Makefile.m32
index 2bb208fbe..b8b56f8c9 100644
--- a/lib/Makefile.m32
+++ b/lib/Makefile.m32
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,435 +18,312 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
-###########################################################################
+# Makefile for building curl parts with MinGW and optional features.
#
-## Makefile for building libcurl.a with MingW (GCC-3.2 or later or LLVM/Clang)
-## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
-## brotli (1.0.1), zstd (1.4.5)
-##
-## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
-## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
-##
-## Hint: you can also set environment vars to control the build, f.e.:
-## set ZLIB_PATH=c:/zlib-1.2.8
-## set ZLIB=1
+# Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
+# Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
#
-###########################################################################
+# Set component roots via envvar <feature>_PATH. Also available for
+# customization: CC, RC, AR, CPPFLAGS, LDFLAGS, LIBS, CFLAGS, RCFLAGS,
+# ARCH[=custom], CROSSPREFIX, CURL_LDFLAGS_BIN, CURL_LDFLAGS_LIB, CURL_DLL_SUFFIX,
+# and more for individual components (see below).
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../zlib-1.2.8
-endif
-# Edit the path below to point to the base of your Zstandard sources.
-ifndef ZSTD_PATH
-ZSTD_PATH = ../../zstd-1.4.5
-endif
-# Edit the path below to point to the base of your Brotli sources.
-ifndef BROTLI_PATH
-BROTLI_PATH = ../../brotli-1.0.1
-endif
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-1.0.2a
-endif
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.5.0
-endif
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.4
-endif
-# Edit the path below to point to the base of your libgsasl package.
-ifndef LIBGSASL_PATH
-LIBGSASL_PATH = ../../libgsasl-1.10.0
-endif
-# Edit the path below to point to the base of your libidn2 package.
-ifndef LIBIDN2_PATH
-LIBIDN2_PATH = ../../libidn2-2.0.3
-endif
-# Edit the path below to point to the base of your MS IDN package.
-# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# https://www.microsoft.com/en-us/download/details.aspx?id=734
-ifndef WINIDN_PATH
-WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
-endif
-# Edit the path below to point to the base of your Novell LDAP NDK.
-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-1.0.0
-endif
-# Edit the path below to point to the base of your nghttp3 package.
-ifndef NGHTTP3_PATH
-NGHTTP3_PATH = ../../nghttp3-1.0.0
-endif
-# Edit the path below to point to the base of your ngtcp2 package.
-ifndef NGTCP2_PATH
-NGTCP2_PATH = ../../ngtcp2-1.0.0
-endif
+# This script is reused by 'src' and 'docs/examples' Makefile.m32 scripts.
+# Skip lib-specific parts when called through them.
+ifndef PROOT
+PROOT := ..
-PROOT = ..
+CPPFLAGS += -DBUILDING_LIBCURL
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = $(PROOT)/ares
-endif
+### Sources and targets
-ifeq ($(CURL_CC),)
-CURL_CC := $(CROSSPREFIX)gcc
-endif
-ifeq ($(CURL_AR),)
-CURL_AR := $(CROSSPREFIX)ar
-endif
-ifeq ($(CURL_RANLIB),)
-CURL_RANLIB := $(CROSSPREFIX)ranlib
-endif
+# Provides CSOURCES, HHEADERS, LIB_RCFILES
+include Makefile.inc
-CC = $(CURL_CC)
-CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W
-CFLAGS += -fno-strict-aliasing
-# comment LDFLAGS below to keep debug info
-LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_DLL) -s
-AR = $(CURL_AR)
-RANLIB = $(CURL_RANLIB)
-RC = $(CROSSPREFIX)windres
-RCFLAGS = --include-dir=$(PROOT)/include -DDEBUGBUILD=0 -O coff
-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
+libcurl_dll_LIBRARY := libcurl$(CURL_DLL_SUFFIX).dll
+libcurl_dll_a_LIBRARY := libcurl.dll.a
+libcurl_a_LIBRARY := libcurl.a
-ifeq ($(ARCH),w64)
-CFLAGS += -m64 -D_AMD64_
-LDFLAGS += -m64
-RCFLAGS += -F pe-x86-64
-else
-CFLAGS += -m32
-LDFLAGS += -m32
-RCFLAGS += -F pe-i386
-endif
+TARGETS := $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY)
-# Platform-dependent helper tool macros
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DEL = rm -f $1
-RMDIR = rm -fr $1
-MKDIR = mkdir -p $1
-COPY = -cp -afv $1 $2
-#COPYR = -cp -afr $1/* $2
-COPYR = -rsync -aC $1/* $2
-TOUCH = touch $1
-CAT = cat
-ECHONL = echo ""
-DL = '
-else
-ifeq "$(OS)" "Windows_NT"
-DEL = -del 2>NUL /q /f $(subst /,\,$1)
-RMDIR = -rd 2>NUL /q /s $(subst /,\,$1)
-else
-DEL = -del 2>NUL $(subst /,\,$1)
-RMDIR = -deltree 2>NUL /y $(subst /,\,$1)
-endif
-MKDIR = -md 2>NUL $(subst /,\,$1)
-COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
-COPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
-TOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,,
-CAT = type
-ECHONL = $(ComSpec) /c echo.
+libcurl_a_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CSOURCES))))
+libcurl_a_DEPENDENCIES := $(strip $(CSOURCES) $(HHEADERS))
+libcurl_dll_OBJECTS := $(libcurl_a_OBJECTS)
+libcurl_dll_OBJECTS += $(patsubst %.rc,%.res,$(strip $(LIB_RCFILES)))
+vpath %.c vauth vquic vssh vtls
+
+TOCLEAN := $(libcurl_dll_OBJECTS)
+TOVCLEAN := $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY)
+
+### Local rules
+
+# Keep this at the top to act as the default target.
+all: $(TARGETS)
+
+$(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
+ @$(call DEL, $@)
+ $(AR) rcs $@ $(libcurl_a_OBJECTS)
+
+$(libcurl_dll_LIBRARY): $(libcurl_dll_OBJECTS)
+ $(CC) $(LDFLAGS) -shared $(CURL_LDFLAGS_LIB) -o $@ $(libcurl_dll_OBJECTS) $(LIBS) \
+ -Wl,--output-def,$(@:.dll=.def),--out-implib,$(libcurl_dll_a_LIBRARY)
endif
-########################################################
-## Nothing more to do below this line!
+CPPFLAGS += -I. -I$(PROOT)/include
+RCFLAGS += -I$(PROOT)/include
+
+CC := $(CROSSPREFIX)$(CC)
+AR := $(CROSSPREFIX)$(AR)
+RC ?= $(CROSSPREFIX)windres
-ifneq ($(findstring -dyn,$(CFG)),)
-DYN = 1
+ifneq ($(ARCH),custom)
+ # Set environment var ARCH to your architecture to override auto-detection.
+ ifndef ARCH
+ ifneq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),)
+ ARCH := w64
+ else
+ ARCH := w32
+ endif
+ endif
+ ifeq ($(ARCH),w64)
+ CFLAGS += -m64
+ LDFLAGS += -m64
+ RCFLAGS += --target=pe-x86-64
+ else
+ CFLAGS += -m32
+ LDFLAGS += -m32
+ RCFLAGS += --target=pe-i386
+ endif
endif
-ifneq ($(findstring -ares,$(CFG)),)
-ARES = 1
+
+### Optional features
+
+ifneq ($(findstring -unicode,$(CFG)),)
+ CPPFLAGS += -DUNICODE -D_UNICODE
+ CURL_LDFLAGS_BIN += -municode
endif
+
+# CPPFLAGS below are only necessary when building libcurl via 'lib' (see
+# comments below about exceptions). Always include them anyway to match
+# behavior of other build systems.
+
+# Linker options to exclude for shared mode executables.
+_LDFLAGS :=
+_LIBS :=
+
ifneq ($(findstring -sync,$(CFG)),)
-SYNC = 1
+ CPPFLAGS += -DUSE_SYNC_DNS
+else ifneq ($(findstring -ares,$(CFG)),)
+ LIBCARES_PATH ?= $(PROOT)/../c-ares
+ CPPFLAGS += -DUSE_ARES
+ CPPFLAGS += -I"$(LIBCARES_PATH)/include"
+ _LDFLAGS += -L"$(LIBCARES_PATH)/lib"
+ _LIBS += -lcares
endif
+
ifneq ($(findstring -rtmp,$(CFG)),)
-RTMP = 1
-ZLIB = 1
+ LIBRTMP_PATH ?= $(PROOT)/../librtmp
+ CPPFLAGS += -DUSE_LIBRTMP
+ CPPFLAGS += -I"$(LIBRTMP_PATH)"
+ _LDFLAGS += -L"$(LIBRTMP_PATH)/librtmp"
+ _LIBS += -lrtmp -lwinmm
+ ZLIB := 1
endif
+
ifneq ($(findstring -ssh2,$(CFG)),)
-SSH2 = 1
-ZLIB = 1
+ LIBSSH2_PATH ?= $(PROOT)/../libssh2
+ CPPFLAGS += -DUSE_LIBSSH2
+ CPPFLAGS += -I"$(LIBSSH2_PATH)/include"
+ _LDFLAGS += -L"$(LIBSSH2_PATH)/lib"
+ _LDFLAGS += -L"$(LIBSSH2_PATH)/win32"
+ _LIBS += -lssh2
+else ifneq ($(findstring -libssh,$(CFG)),)
+ LIBSSH_PATH ?= $(PROOT)/../libssh
+ CPPFLAGS += -DUSE_LIBSSH
+ CPPFLAGS += -I"$(LIBSSH_PATH)/include"
+ _LDFLAGS += -L"$(LIBSSH_PATH)/lib"
+ _LIBS += -lssh
+else ifneq ($(findstring -wolfssh,$(CFG)),)
+ WOLFSSH_PATH ?= $(PROOT)/../wolfssh
+ CPPFLAGS += -DUSE_WOLFSSH
+ CPPFLAGS += -I"$(WOLFSSH_PATH)/include"
+ _LDFLAGS += -L"$(WOLFSSH_PATH)/lib"
+ _LIBS += -lwolfssh
endif
+
ifneq ($(findstring -ssl,$(CFG)),)
-SSL = 1
+ OPENSSL_PATH ?= $(PROOT)/../openssl
+ CPPFLAGS += -DUSE_OPENSSL
+ CPPFLAGS += -DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG
+ OPENSSL_INCLUDE ?= $(OPENSSL_PATH)/include
+ OPENSSL_LIBPATH ?= $(OPENSSL_PATH)/lib
+ CPPFLAGS += -I"$(OPENSSL_INCLUDE)"
+ _LDFLAGS += -L"$(OPENSSL_LIBPATH)"
+ OPENSSL_LIBS ?= -lssl -lcrypto
+ _LIBS += $(OPENSSL_LIBS)
+
+ ifneq ($(wildcard $(OPENSSL_INCLUDE)/openssl/aead.h),)
+ OPENSSL := boringssl
+ else
+ # including libressl
+ OPENSSL := openssl
+ endif
+
+ ifneq ($(findstring -srp,$(CFG)),)
+ ifneq ($(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h),)
+ # OpenSSL 1.0.1 and later.
+ CPPFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP
+ endif
+ endif
+ SSLLIBS += 1
+else ifneq ($(findstring -wolfssl,$(CFG)),)
+ WOLFSSL_PATH ?= $(PROOT)/../zlib
+ CPPFLAGS += -DUSE_WOLFSSL
+ CPPFLAGS += -DSIZEOF_LONG_LONG=8
+ CPPFLAGS += -I"$(WOLFSSL_PATH)/include"
+ _LDFLAGS += -L"$(WOLFSSL_PATH)/lib"
+ _LIBS += -lwolfssl
+ OPENSSL := wolfssl
+ SSLLIBS += 1
+endif
+ifneq ($(findstring -mbedtls,$(CFG)),)
+ MBEDTLS_PATH ?= $(PROOT)/../zlib
+ CPPFLAGS += -DUSE_MBEDTLS
+ CPPFLAGS += -I"$(MBEDTLS_PATH)/include"
+ _LDFLAGS += -L"$(MBEDTLS_PATH)/lib"
+ _LIBS += -lmbedtls -lmbedx509 -lmbedcrypto
+ SSLLIBS += 1
+endif
+ifneq ($(findstring -schannel,$(CFG)),)
+ CPPFLAGS += -DUSE_SCHANNEL
+ SSLLIBS += 1
endif
-ifneq ($(findstring -srp,$(CFG)),)
-SRP = 1
+
+ifneq ($(findstring -nghttp2,$(CFG)),)
+ NGHTTP2_PATH ?= $(PROOT)/../nghttp2
+ CPPFLAGS += -DUSE_NGHTTP2
+ CPPFLAGS += -I"$(NGHTTP2_PATH)/include"
+ _LDFLAGS += -L"$(NGHTTP2_PATH)/lib"
+ _LIBS += -lnghttp2
+endif
+
+ifeq ($(findstring -nghttp3,$(CFG))$(findstring -ngtcp2,$(CFG)),-nghttp3-ngtcp2)
+ NGHTTP3_PATH ?= $(PROOT)/../nghttp3
+ CPPFLAGS += -DUSE_NGHTTP3
+ CPPFLAGS += -I"$(NGHTTP3_PATH)/include"
+ _LDFLAGS += -L"$(NGHTTP3_PATH)/lib"
+ _LIBS += -lnghttp3
+
+ NGTCP2_PATH ?= $(PROOT)/../ngtcp2
+ CPPFLAGS += -DUSE_NGTCP2
+ CPPFLAGS += -I"$(NGTCP2_PATH)/include"
+ _LDFLAGS += -L"$(NGTCP2_PATH)/lib"
+ ifneq ($(OPENSSL),)
+ NGTCP2_LIBS ?= -lngtcp2_crypto_$(OPENSSL)
+ endif
+ _LIBS += -lngtcp2 $(NGTCP2_LIBS)
endif
-ifneq ($(findstring -zlib,$(CFG)),)
-ZLIB = 1
+
+ifneq ($(findstring -zlib,$(CFG))$(ZLIB),)
+ ZLIB_PATH ?= $(PROOT)/../zlib
+ # These CPPFLAGS are also required when compiling the curl tool via 'src'.
+ CPPFLAGS += -DHAVE_LIBZ
+ CPPFLAGS += -I"$(ZLIB_PATH)"
+ _LDFLAGS += -L"$(ZLIB_PATH)"
+ _LIBS += -lz
endif
ifneq ($(findstring -zstd,$(CFG)),)
-ZSTD = 1
+ ZSTD_PATH ?= $(PROOT)/../zstd
+ CPPFLAGS += -DHAVE_ZSTD
+ CPPFLAGS += -I"$(ZSTD_PATH)/include"
+ _LDFLAGS += -L"$(ZSTD_PATH)/lib"
+ ZSTD_LIBS ?= -lzstd
+ _LIBS += $(ZSTD_LIBS)
endif
ifneq ($(findstring -brotli,$(CFG)),)
-BROTLI = 1
+ BROTLI_PATH ?= $(PROOT)/../brotli
+ CPPFLAGS += -DHAVE_BROTLI
+ CPPFLAGS += -I"$(BROTLI_PATH)/include"
+ _LDFLAGS += -L"$(BROTLI_PATH)/lib"
+ BROTLI_LIBS ?= -lbrotlidec -lbrotlicommon
+ _LIBS += $(BROTLI_LIBS)
endif
ifneq ($(findstring -gsasl,$(CFG)),)
-GSASL = 1
+ LIBGSASL_PATH ?= $(PROOT)/../gsasl
+ CPPFLAGS += -DUSE_GSASL
+ CPPFLAGS += -I"$(LIBGSASL_PATH)/include"
+ _LDFLAGS += -L"$(LIBGSASL_PATH)/lib"
+ _LIBS += -lgsasl
endif
+
ifneq ($(findstring -idn2,$(CFG)),)
-IDN2 = 1
-endif
-ifneq ($(findstring -winidn,$(CFG)),)
-WINIDN = 1
+ LIBIDN2_PATH ?= $(PROOT)/../libidn2
+ CPPFLAGS += -DUSE_LIBIDN2
+ CPPFLAGS += -I"$(LIBIDN2_PATH)/include"
+ _LDFLAGS += -L"$(LIBIDN2_PATH)/lib"
+ _LIBS += -lidn2
+
+ifneq ($(findstring -psl,$(CFG)),)
+ LIBPSL_PATH ?= $(PROOT)/../libpsl
+ CPPFLAGS += -DUSE_LIBPSL
+ CPPFLAGS += -I"$(LIBPSL_PATH)/include"
+ _LDFLAGS += -L"$(LIBPSL_PATH)/lib"
+ _LIBS += -lpsl
+endif
+else ifneq ($(findstring -winidn,$(CFG)),)
+ CPPFLAGS += -DUSE_WIN32_IDN
+ CPPFLAGS += -DWANT_IDN_PROTOTYPES
+ _LIBS += -lnormaliz
endif
+
ifneq ($(findstring -sspi,$(CFG)),)
-SSPI = 1
-endif
-ifneq ($(findstring -ldaps,$(CFG)),)
-LDAPS = 1
+ CPPFLAGS += -DUSE_WINDOWS_SSPI
endif
ifneq ($(findstring -ipv6,$(CFG)),)
-IPV6 = 1
-endif
-ifneq ($(findstring -schannel,$(CFG))$(findstring -winssl,$(CFG)),)
-SCHANNEL = 1
-SSPI = 1
-endif
-ifneq ($(findstring -nghttp2,$(CFG)),)
-NGHTTP2 = 1
-endif
-ifneq ($(findstring -nghttp3,$(CFG)),)
-NGHTTP3 = 1
+ CPPFLAGS += -DENABLE_IPV6
endif
-ifneq ($(findstring -ngtcp2,$(CFG)),)
-NGTCP2 = 1
-endif
-ifneq ($(findstring -unicode,$(CFG)),)
-UNICODE = 1
+ifneq ($(findstring -ldaps,$(CFG)),)
+ CPPFLAGS += -DHAVE_LDAP_SSL
endif
-# SSH2 and RTMP require an SSL library; assume OpenSSL if none specified
-ifneq ($(SSH2)$(RTMP),)
- ifeq ($(SSL)$(SCHANNEL),)
- SSL = 1
- endif
+ifeq ($(findstring -lldap,$(LIBS)),)
+ _LIBS += -lwldap32
endif
+_LIBS += -lws2_32 -lcrypt32 -lbcrypt
-INCLUDES = -I. -I../include
-CFLAGS += -DBUILDING_LIBCURL
-ifdef SSL
- ifdef SCHANNEL
- CFLAGS += -DCURL_WITH_MULTI_SSL
- endif
-endif
-ifdef UNICODE
- CFLAGS += -DUNICODE -D_UNICODE
+ifneq ($(findstring 11,$(subst $() ,,$(SSLLIBS))),)
+ CPPFLAGS += -DCURL_WITH_MULTI_SSL
endif
-ifdef SYNC
- CFLAGS += -DUSE_SYNC_DNS
-else
- ifdef ARES
- INCLUDES += -I"$(LIBCARES_PATH)"
- CFLAGS += -DUSE_ARES -DCARES_STATICLIB
- DLL_LIBS += -L"$(LIBCARES_PATH)" -lcares
- libcurl_dll_DEPENDENCIES = $(LIBCARES_PATH)/libcares.a
- endif
-endif
-ifdef RTMP
- INCLUDES += -I"$(LIBRTMP_PATH)"
- 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
- DLL_LIBS += -L"$(LIBSSH2_PATH)/win32" -lssh2
- ifdef SCHANNEL
- ifndef DYN
- DLL_LIBS += -lbcrypt -lcrypt32
- endif
- endif
-endif
-ifdef SSL
- ifdef NGHTTP3
- INCLUDES += -I"$(NGHTTP3_PATH)/include"
- CFLAGS += -DUSE_NGHTTP3
- DLL_LIBS += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
- ifdef NGTCP2
- INCLUDES += -I"$(NGTCP2_PATH)/include"
- CFLAGS += -DUSE_NGTCP2
- DLL_LIBS += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
- endif
- endif
-
- ifndef OPENSSL_INCLUDE
- ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
- OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
- endif
- ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
- OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
- endif
- endif
- ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
- $(error Invalid path to OpenSSL package: $(OPENSSL_PATH))
- endif
- ifndef OPENSSL_LIBPATH
- ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
- OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
- OPENSSL_LIBS = -leay32 -lssl32
- endif
- ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
- OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
- OPENSSL_LIBS = -lcrypto -lssl
- endif
- endif
- ifndef DYN
- OPENSSL_LIBS += -lgdi32 -lcrypt32
- endif
- INCLUDES += -I"$(OPENSSL_INCLUDE)"
- CFLAGS += -DUSE_OPENSSL -DHAVE_OPENSSL_PKCS12_H \
- -DOPENSSL_NO_KRB5
- DLL_LIBS += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
- ifdef SRP
- ifeq "$(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h)" "$(OPENSSL_INCLUDE)/openssl/srp.h"
- CFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP
- endif
- endif
-endif
-ifdef SCHANNEL
- CFLAGS += -DUSE_SCHANNEL
- DLL_LIBS += -lcrypt32
+ifndef DYN
+ LDFLAGS += $(_LDFLAGS)
+ LIBS += $(_LIBS)
endif
-ifdef ZLIB
- INCLUDES += -I"$(ZLIB_PATH)"
- CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
- DLL_LIBS += -L"$(ZLIB_PATH)" -lz
-endif
-ifdef ZSTD
- INCLUDES += -I"$(ZSTD_PATH)/include"
- CFLAGS += -DHAVE_ZSTD
- DLL_LIBS += -L"$(ZSTD_PATH)/lib"
- ifdef ZSTD_LIBS
- DLL_LIBS += $(ZSTD_LIBS)
- else
- DLL_LIBS += -lzstd
- endif
-endif
-ifdef BROTLI
- INCLUDES += -I"$(BROTLI_PATH)/include"
- CFLAGS += -DHAVE_BROTLI
- DLL_LIBS += -L"$(BROTLI_PATH)/lib"
- ifdef BROTLI_LIBS
- DLL_LIBS += $(BROTLI_LIBS)
- else
- DLL_LIBS += -lbrotlidec
- endif
-endif
-ifdef GSASL
- INCLUDES += -I"$(LIBGSASL_PATH)/include"
- CFLAGS += -DUSE_GSASL
- DLL_LIBS += -L"$(LIBGSASL_PATH)/lib" -lgsasl
-endif
-ifdef IDN2
- INCLUDES += -I"$(LIBIDN2_PATH)/include"
- CFLAGS += -DUSE_LIBIDN2
- DLL_LIBS += -L"$(LIBIDN2_PATH)/lib" -lidn2
-else
-ifdef WINIDN
- CFLAGS += -DUSE_WIN32_IDN
- CFLAGS += -DWANT_IDN_PROTOTYPES
- DLL_LIBS += -L"$(WINIDN_PATH)" -lnormaliz
-endif
-endif
-ifdef SSPI
- CFLAGS += -DUSE_WINDOWS_SSPI
-endif
-ifdef SPNEGO
- CFLAGS += -DHAVE_SPNEGO
-endif
-ifdef IPV6
- CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
-endif
-ifdef LDAPS
- CFLAGS += -DHAVE_LDAP_SSL
-endif
-ifdef USE_LDAP_NOVELL
- INCLUDES += -I"$(LDAP_SDK)/inc"
- CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
- DLL_LIBS += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
-endif
-ifdef USE_LDAP_OPENLDAP
- INCLUDES += -I"$(LDAP_SDK)/include"
- CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
- DLL_LIBS += -L"$(LDAP_SDK)/lib" -lldap -llber
-endif
-ifndef USE_LDAP_NOVELL
-ifndef USE_LDAP_OPENLDAP
- DLL_LIBS += -lwldap32
-endif
-endif
-DLL_LIBS += -lws2_32
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
+### Global rules
-ifeq ($(CURL_DLL_A_SUFFIX),)
-CURL_DLL_A_SUFFIX := dll
+ifneq ($(findstring /sh,$(SHELL)),)
+DEL = rm -f $1
+COPY = -cp -afv $1 $2
+else
+DEL = -del 2>NUL /q /f $(subst /,\,$1)
+COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
endif
-libcurl_dll_LIBRARY = libcurl$(CURL_DLL_SUFFIX).dll
-libcurl_dll_a_LIBRARY = libcurl$(CURL_DLL_A_SUFFIX).a
-libcurl_a_LIBRARY = libcurl.a
-
-libcurl_a_OBJECTS := $(patsubst %.c,%.o,$(strip $(CSOURCES)))
-libcurl_a_DEPENDENCIES := $(strip $(CSOURCES) $(HHEADERS))
-
-RESOURCE = libcurl.res
-
-
-all: $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY)
-
-$(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
- @$(call DEL, $@)
- $(AR) cru $@ $(libcurl_a_OBJECTS)
- $(RANLIB) $@
- $(STRIP) $@
-
-# remove the last line above to keep debug info
-
-$(libcurl_dll_LIBRARY): $(libcurl_a_OBJECTS) $(RESOURCE) $(libcurl_dll_DEPENDENCIES)
- @$(call DEL, $@)
- $(CC) $(LDFLAGS) -shared -o $@ \
- -Wl,--output-def,$(@:.dll=.def),--out-implib,$(libcurl_dll_a_LIBRARY) \
- $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS)
+all: $(TARGETS)
%.o: %.c
- $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
+ $(CC) -W -Wall $(CFLAGS) $(CPPFLAGS) -c $<
%.res: %.rc
- $(RC) $(RCFLAGS) -i $< -o $@
+ $(RC) -O coff $(RCFLAGS) -i $< -o $@
clean:
- @$(call DEL, $(libcurl_a_OBJECTS) $(RESOURCE))
+ @$(call DEL, $(TOCLEAN))
distclean vclean: clean
- @$(call DEL, $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY))
-
-$(LIBCARES_PATH)/libcares.a:
- $(MAKE) -C $(LIBCARES_PATH) -f Makefile.m32
+ @$(call DEL, $(TARGETS) $(TOVCLEAN))
diff --git a/lib/Makefile.netware b/lib/Makefile.netware
deleted file mode 100644
index 92752128d..000000000
--- a/lib/Makefile.netware
+++ /dev/null
@@ -1,725 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2004 - 2015, 2021, Guenter Knauf
-# Copyright (C) 2001 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-#***************************************************************************
-
-#################################################################
-#
-## Makefile for building libcurl.nlm (NetWare version - gnu make)
-##
-## Use: make -f Makefile.netware
-#
-#################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE = c:/novell
-endif
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../zlib-1.2.8
-endif
-
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-1.0.2a
-endif
-
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.5.0
-endif
-
-# Edit the path below to point to the base of your libidn package.
-ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../libidn-1.18
-endif
-
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-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
-endif
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = ../ares
-endif
-
-ifndef INSTDIR
-INSTDIR = ..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw
-endif
-
-# Edit the vars below to change NLM target settings.
-TARGET = libcurl
-VERSION = $(LIBCURL_VERSION)
-COPYR = Copyright (C) $(LIBCURL_COPYRIGHT_STR)
-DESCR = curl libcurl $(LIBCURL_VERSION_STR) ($(LIBARCH)) - https://curl.se
-MTSAFE = YES
-STACK = 64000
-SCREEN = none
-EXPORTF = $(TARGET).imp
-EXPORTS = @$(EXPORTF)
-
-# Uncomment the next line to enable linking with POSIX semantics.
-# POSIXFL = 1
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to NDEBUG or DEBUG, CURLDEBUG
-ifndef DB
-DB = NDEBUG
-endif
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
- OPT = -O2
- OBJDIR = release
-else
- OPT = -g
- OBJDIR = debug
-endif
-
-# The following lines defines your compiler.
-ifdef CWFolder
- METROWERKS = $(CWFolder)
-endif
-ifdef METROWERKS
- # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support
- MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support
- CC = mwccnlm
-else
- CC = gcc
-endif
-PERL = perl
-# Here you can find a native Win32 binary of the original awk:
-# http://www.gknw.net/development/prgtools/awk-20100523.zip
-AWK = awk
-CP = cp -afv
-MKDIR = mkdir
-# RM = rm -f
-# If you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.net/development/prgtools/mkxdc.zip
-MPKXDC = mkxdc
-
-# LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH))
-LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
-
-# Include the version info retrieved from curlver.h
--include $(OBJDIR)/version.inc
-
-# Global flags for all compilers
-CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
-
-ifeq ($(CC),mwccnlm)
- LD = mwldnlm
- LDFLAGS = -nostdlib $(PRELUDE) $(OBJL) -o $@ -commandfile
- AR = mwldnlm
- ARFLAGS = -nostdlib -type library -o
- LIBEXT = lib
- #RANLIB =
- CFLAGS += -msgstyle gcc -gccinc -inline off -opt nointrinsics -proc 586
- CFLAGS += -relax_pointers
- #CFLAGS += -w on
- ifeq ($(LIBARCH),LIBC)
- ifeq ($(POSIXFL),1)
- PRELUDE = $(NDK_LIBC)/imports/posixpre.o
- else
- PRELUDE = $(NDK_LIBC)/imports/libcpre.o
- endif
- CFLAGS += -align 4
- else
- # PRELUDE = $(NDK_CLIB)/imports/clibpre.o
- # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
- PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
- # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
- CFLAGS += -align 1
- endif
-else
- LD = nlmconv
- LDFLAGS = -T
- AR = ar
- ARFLAGS = -cq
- LIBEXT = a
- RANLIB = ranlib
- CFLAGS += -m32
- CFLAGS += -fno-builtin -fno-strict-aliasing
- ifeq ($(findstring gcc,$(CC)),gcc)
- CFLAGS += -fpcc-struct-return
- endif
- CFLAGS += -Wall # -pedantic
- ifeq ($(LIBARCH),LIBC)
- ifeq ($(POSIXFL),1)
- PRELUDE = $(NDK_LIBC)/imports/posixpre.gcc.o
- else
- PRELUDE = $(NDK_LIBC)/imports/libcpre.gcc.o
- endif
- else
- PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o
- # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
- # http://www.gknw.net/development/mk_nlm/gcc_pre.zip
- # PRELUDE = $(NDK_ROOT)/pre/prelude.o
- CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
- endif
-endif
-
-NDK_ROOT = $(NDKBASE)/ndk
-ifndef NDK_CLIB
-NDK_CLIB = $(NDK_ROOT)/nwsdk
-endif
-ifndef NDK_LIBC
-NDK_LIBC = $(NDK_ROOT)/libc
-endif
-ifndef NDK_LDAP
-NDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
-endif
-CURL_INC = ../include
-CURL_LIB = ../lib
-
-INCLUDES = -I$(CURL_INC) -I$(CURL_LIB)
-
-ifeq ($(findstring -static,$(CFG)),-static)
-LINK_STATIC = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-WITH_ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-WITH_RTMP = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-WITH_SSH2 = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-WITH_SSL = 1
-ifeq ($(findstring -srp,$(CFG)),-srp)
-ifeq "$(wildcard $(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl/srp.h)" "$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl/srp.h"
-WITH_SRP = 1
-endif
-endif
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -idn,$(CFG)),-idn)
-WITH_IDN = 1
-endif
-ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
-WITH_NGHTTP2 = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-ENABLE_IPV6 = 1
-endif
-
-ifdef WITH_ARES
- INCLUDES += -I$(LIBCARES_PATH)
- LDLIBS += $(LIBCARES_PATH)/libcares.$(LIBEXT)
-endif
-ifdef WITH_SSH2
- INCLUDES += -I$(LIBSSH2_PATH)/include
-ifdef LINK_STATIC
- LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT)
-else
- MODULES += libssh2.nlm
- IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp
-endif
-endif
-ifdef WITH_RTMP
- INCLUDES += -I$(LIBRTMP_PATH)
- LDLIBS += $(LIBRTMP_PATH)/librtmp/librtmp.$(LIBEXT)
-endif
-ifdef WITH_SSL
- INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
- LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
- LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
- IMPORTS += GetProcessSwitchCount RunningProcess
- INSTDEP += ca-bundle.crt
-else
-endif
-ifdef WITH_ZLIB
- INCLUDES += -I$(ZLIB_PATH)
- ifdef LINK_STATIC
- LDLIBS += $(ZLIB_PATH)/nw/$(LIBARCH)/libz.$(LIBEXT)
- else
- MODULES += libz.nlm
- IMPORTS += @$(ZLIB_PATH)/nw/$(LIBARCH)/libz.imp
- endif
-endif
-ifdef WITH_IDN
- 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
- # INCLUDES += -I$(NDK_LIBC)/include/nks
- # INCLUDES += -I$(NDK_LIBC)/include/winsock
- CFLAGS += -D_POSIX_SOURCE
-else
- INCLUDES += -I$(NDK_CLIB)/include/nlm
- # INCLUDES += -I$(NDK_CLIB)/include/nlm/obsolete
- # INCLUDES += -I$(NDK_CLIB)/include
-endif
-ifndef DISABLE_LDAP
- INCLUDES += -I$(NDK_LDAP)/$(LIBARCH_L)/inc
-endif
-CFLAGS += $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
- XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
- XDCOPT = -u
-endif
-ifdef XDCOPT
- XDCDATA = $(OBJDIR)/$(TARGET).xdc
-endif
-
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DL = '
-DS = /
-PCT = %
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-else
-DS = \\
-PCT = %%
-endif
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-OBJS := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(notdir $(CSOURCES)))) $(OBJDIR)/nwos.o
-
-OBJL = $(OBJS) $(OBJDIR)/nwlib.o $(LDLIBS)
-
-vpath %.c . vauth vtls
-
-all: lib nlm
-
-nlm: prebuild $(TARGET).nlm
-
-lib: prebuild $(TARGET).$(LIBEXT)
-
-prebuild: $(OBJDIR) $(OBJDIR)/version.inc curl_config.h
-
-$(OBJDIR)/%.o: %.c
-# @echo Compiling $<
- $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR)
- @echo Creating $@
- @$(AWK) -f ../packages/NetWare/get_ver.awk $< > $@
-
-install: $(INSTDIR) all $(INSTDEP)
- @$(CP) $(TARGET).nlm $(INSTDIR)
- @$(CP) $(TARGET).$(LIBEXT) $(INSTDIR)
- @$(CP) ../CHANGES $(INSTDIR)
- @$(CP) ../COPYING $(INSTDIR)
- @$(CP) ../README $(INSTDIR)
- @$(CP) ../RELEASE-NOTES $(INSTDIR)
-ifdef WITH_SSL
- @-$(CP) ca-bundle.crt $(INSTDIR)/ca-bundle.crt
-endif
-
-clean:
- -$(RM) curl_config.h
- -$(RM) -r $(OBJDIR)
-
-distclean vclean: clean
- -$(RM) $(TARGET).$(LIBEXT) $(TARGET).nlm $(TARGET).imp
- -$(RM) certdata.txt ca-bundle.crt
-
-$(OBJDIR) $(INSTDIR):
- @$(MKDIR) $@
-
-$(TARGET).$(LIBEXT): $(OBJS)
- @echo Creating $@
- @-$(RM) $@
- @$(AR) $(ARFLAGS) $@ $^
-ifdef RANLIB
- @$(RANLIB) $@
-endif
-
-$(TARGET).nlm: $(OBJDIR)/$(TARGET).def $(OBJL) $(EXPORTF) $(XDCDATA)
- @echo Linking $@
- @-$(RM) $@
- @$(LD) $(LDFLAGS) $<
-
-$(OBJDIR)/%.xdc: Makefile.netware
- @echo Creating $@
- @$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
- @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
- @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
- @echo $(DL)# All your changes will be lost!!$(DL) >> $@
- @echo $(DL)#$(DL) >> $@
- @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
- @echo $(DL)description "$(DESCR)"$(DL) >> $@
- @echo $(DL)version $(VERSION)$(DL) >> $@
-ifdef NLMTYPE
- @echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
- @echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
- @echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
-else
- @echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifneq ($(DB),NDEBUG)
- @echo $(DL)debug$(DL) >> $@
-endif
- @echo $(DL)threadname "$(TARGET)"$(DL) >> $@
-ifdef XDCDATA
- @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
-endif
- @echo $(DL)flag_on 64$(DL) >> $@
-ifeq ($(LIBARCH),CLIB)
- @echo $(DL)start _Prelude$(DL) >> $@
- @echo $(DL)exit _Stop$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/clib.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/threads.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/socklib.imp$(DL) >> $@
- @echo $(DL)module clib$(DL) >> $@
-ifndef DISABLE_LDAP
- @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
-# @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
- @echo $(DL)module ldapsdk ldapssl$(DL) >> $@
-endif
-else
-ifeq ($(POSIXFL),1)
- @echo $(DL)flag_on 4194304$(DL) >> $@
-endif
- @echo $(DL)pseudopreemption$(DL) >> $@
-ifeq ($(findstring posixpre,$(PRELUDE)),posixpre)
- @echo $(DL)start POSIX_Start$(DL) >> $@
- @echo $(DL)exit POSIX_Stop$(DL) >> $@
- @echo $(DL)check POSIX_CheckUnload$(DL) >> $@
-else
- @echo $(DL)start _LibCPrelude$(DL) >> $@
- @echo $(DL)exit _LibCPostlude$(DL) >> $@
- @echo $(DL)check _LibCCheckUnload$(DL) >> $@
-endif
- @echo $(DL)import @$(NDK_LIBC)/imports/libc.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LIBC)/imports/netware.imp$(DL) >> $@
- @echo $(DL)module libc$(DL) >> $@
-ifndef DISABLE_LDAP
- @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
-# @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
- @echo $(DL)module lldapsdk lldapssl$(DL) >> $@
-endif
-endif
-ifdef MODULES
- @echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
- @echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
- @echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(findstring nlmconv,$(LD)),nlmconv)
- @echo $(DL)input $(PRELUDE)$(DL) >> $@
- @echo $(DL)input $(OBJL)$(DL) >> $@
-#ifdef LDLIBS
-# @echo $(DL)input $(LDLIBS)$(DL) >> $@
-#endif
- @echo $(DL)output $(TARGET).nlm$(DL) >> $@
-endif
-
-curl_config.h: Makefile.netware
- @echo Creating $@
- @echo $(DL)/* $@ for NetWare target.$(DL) > $@
- @echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
- @echo $(DL)** All your changes will be lost!!$(DL) >> $@
- @echo $(DL)*/$(DL) >> $@
- @echo $(DL)#ifndef NETWARE$(DL) >> $@
- @echo $(DL)#error This $(notdir $@) is created for NetWare platform!$(DL) >> $@
- @echo $(DL)#endif$(DL) >> $@
- @echo $(DL)#define VERSION "$(LIBCURL_VERSION_STR)"$(DL) >> $@
- @echo $(DL)#define PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/"$(DL) >> $@
-ifeq ($(LIBARCH),CLIB)
- @echo $(DL)#define OS "i586-pc-clib-NetWare"$(DL) >> $@
- @echo $(DL)#define NETDB_USE_INTERNET 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRICMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRNICMP 1$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG2 char *$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG2 char$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG3 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG6 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_RETV int$(DL) >> $@
- @echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG3 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
- @echo $(DL)#define SIZEOF_SIZE_T 4$(DL) >> $@
- @echo $(DL)#define pressanykey PressAnyKeyToContinue$(DL) >> $@
-else
- @echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
- @echo $(DL)#define HAVE_FTRUNCATE 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETTIMEOFDAY 1$(DL) >> $@
- @echo $(DL)#define HAVE_INTTYPES_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_LONGLONG 1$(DL) >> $@
- @echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRCASECMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRLCAT 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRLCPY 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRTOLL 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_PARAM_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_SELECT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_TERMIOS_H 1$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG2 void *$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG2 void$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG3 size_t$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG6 size_t$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_RETV ssize_t$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG2_IS_VOID 1$(DL) >> $@
- @echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG3 size_t$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_RETV ssize_t$(DL) >> $@
- @echo $(DL)#define SIZEOF_OFF_T 8$(DL) >> $@
- @echo $(DL)#define SIZEOF_SIZE_T 8$(DL) >> $@
- @echo $(DL)#define _LARGEFILE 1$(DL) >> $@
-ifdef ENABLE_IPV6
- @echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@
- @echo $(DL)#define HAVE_AF_INET6 1$(DL) >> $@
- @echo $(DL)#define HAVE_PF_INET6 1$(DL) >> $@
- @echo $(DL)#define HAVE_FREEADDRINFO 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETADDRINFO 1$(DL) >> $@
- @echo $(DL)#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRUCT_ADDRINFO 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRUCT_IN6_ADDR 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRUCT_SOCKADDR_IN6 1$(DL) >> $@
- @echo $(DL)#define SIZEOF_STRUCT_IN6_ADDR 16$(DL) >> $@
-endif
-endif
- @echo $(DL)#define USE_MANUAL 1$(DL) >> $@
- @echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_ERRNO_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_FCNTL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETHOSTBYNAME 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETPROTOBYNAME 1$(DL) >> $@
- @echo $(DL)#define HAVE_GMTIME_R 1$(DL) >> $@
- @echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
- @echo $(DL)#define HAVE_IOCTL 1$(DL) >> $@
- @echo $(DL)#define HAVE_IOCTL_FIONBIO 1$(DL) >> $@
- @echo $(DL)#define HAVE_LL 1$(DL) >> $@
- @echo $(DL)#define HAVE_LOCALE_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_LOCALTIME_R 1$(DL) >> $@
- @echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_RECV 1$(DL) >> $@
- @echo $(DL)#define HAVE_RECVFROM 1$(DL) >> $@
- @echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
- @echo $(DL)#define HAVE_SEND 1$(DL) >> $@
- @echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SETLOCALE 1$(DL) >> $@
- @echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
- @echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SOCKET 1$(DL) >> $@
- @echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRDUP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRFTIME 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRING_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRSTR 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRUCT_TIMEVAL 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_IOCTL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_STAT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_TIME_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_TIME_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_UNAME 1$(DL) >> $@
- @echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
- @echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_WRITEV 1$(DL) >> $@
- @echo $(DL)#define SIZEOF_INT 4$(DL) >> $@
- @echo $(DL)#define SIZEOF_SHORT 2$(DL) >> $@
- @echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
- @echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
- @echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
-ifdef DISABLE_LDAP
- @echo $(DL)#define CURL_DISABLE_LDAP 1$(DL) >> $@
-else
- @echo $(DL)#define CURL_HAS_NOVELL_LDAPSDK 1$(DL) >> $@
-ifndef DISABLE_LDAPS
- @echo $(DL)#define HAVE_LDAP_SSL 1$(DL) >> $@
-endif
- @echo $(DL)#define HAVE_LDAP_SSL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_LDAP_URL_PARSE 1$(DL) >> $@
-endif
-ifdef NW_WINSOCK
- @echo $(DL)#define HAVE_CLOSESOCKET 1$(DL) >> $@
-else
- @echo $(DL)#define USE_BSD_SOCKETS 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_TYPES_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_SOCKET_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_SOCKIO_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_NETDB_H 1$(DL) >> $@
-endif
-ifdef WITH_ARES
- @echo $(DL)#define USE_ARES 1$(DL) >> $@
-endif
-ifdef WITH_ZLIB
- @echo $(DL)#define HAVE_ZLIB_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_LIBZ 1$(DL) >> $@
-endif
-ifdef WITH_SSL
- @echo $(DL)#define USE_OPENSSL 1$(DL) >> $@
- @echo $(DL)#define HAVE_OPENSSL_X509_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_OPENSSL_SSL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_OPENSSL_RSA_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_OPENSSL_PEM_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_OPENSSL_ERR_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_OPENSSL_CRYPTO_H 1$(DL) >> $@
- @echo $(DL)#define OPENSSL_NO_KRB5 1$(DL) >> $@
-ifdef WITH_SRP
- @echo $(DL)#define USE_TLS_SRP 1$(DL) >> $@
-endif
-ifdef WITH_SPNEGO
- @echo $(DL)#define HAVE_SPNEGO 1$(DL) >> $@
-endif
-else
-endif
-ifdef WITH_SSH2
- @echo $(DL)#define USE_LIBSSH2 1$(DL) >> $@
- @echo $(DL)#define HAVE_LIBSSH2_H 1$(DL) >> $@
-endif
-ifdef WITH_IDN
- @echo $(DL)#define HAVE_LIBIDN 1$(DL) >> $@
- @echo $(DL)#define HAVE_TLD_H 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)#define HAVE_VARIADIC_MACROS_C99 1$(DL) >> $@
- @echo $(DL)#endif$(DL) >> $@
-ifdef CABUNDLE
- @echo $(DL)#define CURL_CA_BUNDLE "$(CABUNDLE)"$(DL) >> $@
-endif
-
-$(EXPORTF): $(CURL_INC)/curl/curl.h $(CURL_INC)/curl/easy.h $(CURL_INC)/curl/multi.h $(CURL_INC)/curl/mprintf.h
- @echo Creating $@
- @$(AWK) -f ../packages/NetWare/get_exp.awk $^ > $@
-
-FORCE: ;
-
-info: $(OBJDIR)/version.inc
- @echo Configured to build $(TARGET) with these options:
- @echo libarchitecture: $(LIBARCH)
- @echo curl version: $(LIBCURL_VERSION_STR)
- @echo compiler/linker: $(CC) / $(LD)
-ifdef CABUNDLE
- @echo ca-bundle path: $(CABUNDLE)
-endif
-ifdef WITH_SSL
- @echo SSL support: enabled (OpenSSL)
-else
- @echo SSL support: no
-endif
-ifdef WITH_SRP
- @echo SRP support: enabled
-else
- @echo SRP support: no
-endif
-ifdef WITH_SSH2
- @echo SSH2 support: enabled (libssh2)
-else
- @echo SSH2 support: no
-endif
-ifdef WITH_ZLIB
- @echo zlib support: enabled
-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
- @echo IPv6 support: enabled
-else
- @echo IPv6 support: no
-endif
-
-$(LIBCARES_PATH)/libcares.$(LIBEXT):
- $(MAKE) -C $(LIBCARES_PATH) -f Makefile.netware lib
-
-ca-bundle.crt: mk-ca-bundle.pl
- @echo Creating $@
- @-$(PERL) $< -b -n $@
diff --git a/lib/Makefile.vxworks b/lib/Makefile.vxworks
deleted file mode 100644
index 91f9d6149..000000000
--- a/lib/Makefile.vxworks
+++ /dev/null
@@ -1,198 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-#*****************************************************************************
-#
-#
-#Filename : Makefile.vxworks
-#Description: makefile to be used in order to compile libcurl for VxWoorks 6.3.
-#
-#How to use:
-# 1. Adjust environment variables at the file beginning
-# 2. Open the Command Prompt window and change directory ('cd')
-# into the 'lib' folder
-# 3. Add <CYGWIN>/bin folder to the PATH environment variable
-# For example type 'set PATH=C:/embedded/cygwin/bin;%PATH%'
-# 4. Build the library by typing 'make -f ./Makefile.vxworks'
-# As a result the libcurl.a should be created in the 'lib' folder.
-# To clean package use 'make -f ./Makefile.vxworks clean'
-#Requirements:
-# 1. WinXP machine
-# 2. Full CYGWIN installation (open source) with GNU make version
-# v3.78 or higher
-# 3. WindRiver Workbench with vxWorks 6.3 (commercial)
-#*****************************************************************************
-
-# ----------------------------------------------------------------------
-# Environment
-# ----------------------------------------------------------------------
-
-export WIND_HOME := C:/embedded/Workbench2.5.0.1
-export WIND_BASE := $(WIND_HOME)/vxworks-6.3
-export WIND_HOST_TYPE := x86-win32
-
-# BUILD_TYE:= <debug>|<release> (build with debugging info or optimized)
-BUILD_TYPE := debug
-USER_CFLAGS:=
-
-# directories where to seek for includes and libraries
-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 :=
-ARES_LIB :=
-
-
-# ----------------------------------------------------------------------
-# Compiler
-# ----------------------------------------------------------------------
-
-CC := ccppc
-AR := arppc
-LINK := ccppc
-CFLAGS := -D__GNUC__ -D__ppc__ -msoft-float -fno-builtin -mcpu=604 -mlongcall -DCPU=PPC604 -D_GNU_TOOL -Wall -W -Winline $(USER_CFLAGS)
-LDFLAGS := -nostdlib -Wl,-i -Wl,-X
-INCLUDE_FLAG := -I
-C_DEBUGFLAG := -g
-C_OPTFLAG := -O2
-COMPILE_ONLY_FLAG := -c
-OBJ_EXTENSION := .o
-CC_OBJ_OUTPUT = -o $@
-ARFLAGS := -rc
-LIBS_FLAG := -l
-LIBS_DIRFLAG:= -L
-LD_DEBUGFLAG := $(C_DEBUGFLAG)
-EXECUTE_EXTENSION := .out
-TOOL_CHAIN_BIN := $(WIND_HOME)/gnu/3.4.4-vxworks-6.3/$(WIND_HOST_TYPE)/bin/
-
-# ----------------------------------------------------------------------
-
-# Add -DINET6 if the OS kernel image was built with IPv6 support
-# CFLAGS += -DINET6
-
-# Set up compiler and linker flags for debug or optimization
-ifeq ($(BUILD_TYPE), debug)
-CFLAGS += $(C_DEBUGFLAG)
-LDFLAGS += $(LD_DEBUGFLAG)
-else
-CFLAGS += $(C_OPTFLAG)
-endif
-
-# ----------------------------------------------------------------------
-
-# Main Makefile and possible sub-make files
-MAKEFILES := Makefile.vxworks
-
-# List of external include directories
-#-----
-# IMPORTANT: include OPENSSL directories before system
-# in order to prevent WindRiver OpenSSL to be used.
-#-----
-INCLUDE_DIRS := ../include $(OPENSSL_INC) $(ZLIB_INC) $(ARES_INC) $(WIND_BASE)/target/h $(WIND_BASE)/target/h/wrn/coreip
-
-# List of external libraries and their directories
-LIBS_LIST := .
-LIB_DIRS := .
-ifneq ($(OPENSSL_LIB), )
-LIBS_LIST += crypto ssl
-LIB_DIRS += $(OPENSSL_LIB)
-endif
-ifneq ($(ZLIB_LIB), )
-LIBS_LIST += z
-LIB_DIRS += $(ZLIB_LIB)
-endif
-ifneq ($(ARES_LIB), )
-LIBS_LIST += ares
-LIB_DIRS += $(ARES_LIB)
-endif
-
-# Add include and library directories and libraries
-CFLAGS += $(INCLUDE_DIRS:%=$(INCLUDE_FLAG)%)
-LDFLAGS += $(LIB_DIRS:%=$(LIBS_DIRFLAG)%)
-
-# List of targets to make for libs target
-LIBS_TARGET_LIST := libcurl.a
-
-# List of execuatble applications to make in addition to libs for all target
-EXE_TARGET_LIST :=
-
-# Support for echoing rules
-# If ECHORULES variable was set (for example, using 'make' command line)
-# some shell commands in the rules will be echoed
-ifneq ($(strip $(findstring $(ECHORULES), yes YES 1 true TRUE)),)
-_@_ :=
-else
-_@_ := @
-endif
-
-# Directory to hold compilation intermediate files
-TMP_DIR := tmp
-
-# Get sources and headers to be compiled
-include Makefile.inc
-
-# List of headers
-INCLUDE_FILES := $(HHEADERS)
-INCLUDE_FILES += $(shell find ../include -name \*.h)
-
-# List of sources
-OBJLIST := $(CSOURCES:%.c=$(TMP_DIR)/%$(OBJ_EXTENSION))
-
-
-# ----------------------------------------------------------------------
-
-#### default rule
-# It should be first rule in this file
-.PHONY: default
-default: libcurl.a
-
-#### Compiling C files
-$(TMP_DIR)/%$(OBJ_EXTENSION): %.c $(MAKEFILES)
- @echo Compiling C file $< $(ECHO_STDOUT)
- @[ -d $(@D) ] || mkdir -p $(@D)
- $(_@_) $(TOOL_CHAIN_BIN)$(CC) $(COMPILE_ONLY_FLAG) $(CFLAGS) $< $(CC_OBJ_OUTPUT)
-
-#### Creating library
-$(LIBS_TARGET_LIST): $(INCLUDE_FILES) $(MAKEFILES) $(OBJLIST)
- @echo Creating library $@ $(ECHO_STDOUT)
- $(_@_) [ -d $(@D) ] || mkdir -p $(@D)
- $(_@_) rm -f $@
- $(_@_) $(TOOL_CHAIN_BIN)$(AR) $(ARFLAGS) $@ $(filter %$(OBJ_EXTENSION), $^)
-
-#### Creating application
-$(EXE_TARGET_LIST): $(INCLUDE_FILES) $(MAKEFILES) $(LIBS_TARGET_LIST)
- @echo Creating application $@
- @[ -d $(@D) ] || mkdir -p $(@D)
- $(_@_) $(TOOL_CHAIN_BIN)$(LINK) $(CC_OBJ_OUTPUT) $($(@)_EXE_OBJ_LIST) $(LDFLAGS) $($(@)_EXE_LIBS_NEEDED:%=$(LIBS_FLAG)%) $(LIBS_LIST:%=$(LIBS_FLAG)%) $(USER_LIBS_LIST) $(USER_LIBS_LIST)
-
-#### Master Targets
-libs: $(LIBS_TARGET_LIST)
- @echo All libs made.
-
-all: $(LIBS_TARGET_LIST) $(EXE_TARGET_LIST) $(INCLUDE_TARGET_LIST)
- @echo All targets made.
-
-# Clean up
-.PHONY: clean
-clean:
- $(_@_) rm -rf $(TMP_DIR)
- @echo libcurl was cleaned.
diff --git a/lib/altsvc.c b/lib/altsvc.c
index 36acc3a5e..7bca84015 100644
--- a/lib/altsvc.c
+++ b/lib/altsvc.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,12 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* The Alt-Svc: header is defined in RFC 7838:
- * https://tools.ietf.org/html/rfc7838
+ * https://datatracker.ietf.org/doc/html/rfc7838
*/
#include "curl_setup.h"
@@ -34,7 +36,7 @@
#include "parsedate.h"
#include "sendf.h"
#include "warnless.h"
-#include "rand.h"
+#include "fopen.h"
#include "rename.h"
/* The last 3 #include files should be in this order */
@@ -50,13 +52,7 @@
#define MAX_ALTSVC_ALPNLENSTR "10"
#define MAX_ALTSVC_ALPNLEN 10
-#if defined(USE_QUICHE) && !defined(UNITTESTS)
-#define H3VERSION "h3-29"
-#elif defined(USE_NGTCP2) && !defined(UNITTESTS)
-#define H3VERSION "h3-29"
-#else
#define H3VERSION "h3"
-#endif
static enum alpnid alpn2alpnid(char *name)
{
@@ -100,12 +96,17 @@ static struct altsvc *altsvc_createid(const char *srchost,
unsigned int dstport)
{
struct altsvc *as = calloc(sizeof(struct altsvc), 1);
+ size_t hlen;
if(!as)
return NULL;
-
+ hlen = strlen(srchost);
+ DEBUGASSERT(hlen);
as->src.host = strdup(srchost);
if(!as->src.host)
goto error;
+ if(hlen && (srchost[hlen - 1] == '.'))
+ /* strip off trailing any dot */
+ as->src.host[--hlen] = 0;
as->dst.host = strdup(dsthost);
if(!as->dst.host)
goto error;
@@ -177,10 +178,9 @@ static CURLcode altsvc_add(struct altsvcinfo *asi, char *line)
/*
* Load alt-svc entries from the given file. The text based line-oriented file
- * format is documented here:
- * https://github.com/curl/curl/wiki/QUIC-implementation
+ * format is documented here: https://curl.se/docs/alt-svc.html
*
- * This function only returns error on major problems that prevents alt-svc
+ * This function only returns error on major problems that prevent alt-svc
* handling to work completely. It will ignore individual syntactical errors
* etc.
*/
@@ -264,7 +264,7 @@ struct altsvcinfo *Curl_altsvc_init(void)
/* set default behavior */
asi->flags = CURLALTSVC_H1
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
| CURLALTSVC_H2
#endif
#ifdef ENABLE_QUIC
@@ -329,8 +329,7 @@ CURLcode Curl_altsvc_save(struct Curl_easy *data,
struct Curl_llist_element *n;
CURLcode result = CURLE_OK;
FILE *out;
- char *tempstore;
- unsigned char randsuffix[9];
+ char *tempstore = NULL;
if(!altsvc)
/* no cache activated */
@@ -344,17 +343,8 @@ CURLcode Curl_altsvc_save(struct Curl_easy *data,
/* marked as read-only, no file or zero length file name */
return CURLE_OK;
- if(Curl_rand_hex(data, randsuffix, sizeof(randsuffix)))
- return CURLE_FAILED_INIT;
-
- tempstore = aprintf("%s.%s.tmp", file, randsuffix);
- if(!tempstore)
- return CURLE_OUT_OF_MEMORY;
-
- out = fopen(tempstore, FOPEN_WRITETEXT);
- if(!out)
- result = CURLE_WRITE_ERROR;
- else {
+ result = Curl_fopen(data, file, &out, &tempstore);
+ if(!result) {
fputs("# Your alt-svc cache. https://curl.se/docs/alt-svc.html\n"
"# This file was generated by libcurl! Edit at your own risk.\n",
out);
@@ -366,10 +356,10 @@ CURLcode Curl_altsvc_save(struct Curl_easy *data,
break;
}
fclose(out);
- if(!result && Curl_rename(tempstore, file))
+ if(!result && tempstore && Curl_rename(tempstore, file))
result = CURLE_WRITE_ERROR;
- if(result)
+ if(result && tempstore)
unlink(tempstore);
}
free(tempstore);
@@ -396,6 +386,22 @@ static CURLcode getalnum(const char **ptr, char *alpnbuf, size_t buflen)
return CURLE_OK;
}
+/* hostcompare() returns true if 'host' matches 'check'. The first host
+ * argument may have a trailing dot present that will be ignored.
+ */
+static bool hostcompare(const char *host, const char *check)
+{
+ size_t hlen = strlen(host);
+ size_t clen = strlen(check);
+
+ if(hlen && (host[hlen - 1] == '.'))
+ hlen--;
+ if(hlen != clen)
+ /* they can't match if they have different lengths */
+ return FALSE;
+ return strncasecompare(host, check, hlen);
+}
+
/* altsvc_flush() removes all alternatives for this source origin from the
list */
static void altsvc_flush(struct altsvcinfo *asi, enum alpnid srcalpnid,
@@ -408,7 +414,7 @@ static void altsvc_flush(struct altsvcinfo *asi, enum alpnid srcalpnid,
n = e->next;
if((srcalpnid == as->src.alpnid) &&
(srcport == as->src.port) &&
- strcasecompare(srchost, as->src.host)) {
+ hostcompare(srchost, as->src.host)) {
Curl_llist_remove(&asi->list, e, NULL);
altsvc_free(as);
}
@@ -456,6 +462,7 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
struct altsvc *as;
unsigned short dstport = srcport; /* the same by default */
CURLcode result = getalnum(&p, alpnbuf, sizeof(alpnbuf));
+ size_t entries = 0;
#ifdef CURL_DISABLE_VERBOSE_STRINGS
(void)data;
#endif
@@ -466,11 +473,10 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
DEBUGASSERT(asi);
- /* Flush all cached alternatives for this source origin, if any */
- altsvc_flush(asi, srcalpnid, srchost, srcport);
-
/* "clear" is a magic keyword */
if(strcasecompare(alpnbuf, "clear")) {
+ /* Flush cached alternatives for this source origin */
+ altsvc_flush(asi, srcalpnid, srchost, srcport);
return CURLE_OK;
}
@@ -488,6 +494,7 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
bool quoted = FALSE;
time_t maxage = 24 * 3600; /* default is 24 hours */
bool persist = FALSE;
+ bool valid = TRUE;
p++;
if(*p != ':') {
/* host name starts here */
@@ -497,7 +504,7 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
len = p - hostp;
if(!len || (len >= MAX_ALTSVC_HOSTLEN)) {
infof(data, "Excessive alt-svc host name, ignoring.");
- dstalpnid = ALPN_none;
+ valid = FALSE;
}
else {
memcpy(namebuf, hostp, len);
@@ -514,10 +521,11 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
unsigned long port = strtoul(++p, &end_ptr, 10);
if(port > USHRT_MAX || end_ptr == p || *end_ptr != '\"') {
infof(data, "Unknown alt-svc port number, ignoring.");
- dstalpnid = ALPN_none;
+ valid = FALSE;
}
+ else
+ dstport = curlx_ultous(port);
p = end_ptr;
- dstport = curlx_ultous(port);
}
if(*p++ != '\"')
break;
@@ -569,7 +577,12 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
persist = TRUE;
}
}
- if(dstalpnid) {
+ if(dstalpnid && valid) {
+ if(!entries++)
+ /* Flush cached alternatives for this source origin, if any - when
+ this is the first entry of the line. */
+ altsvc_flush(asi, srcalpnid, srchost, srcport);
+
as = altsvc_createid(srchost, dsthost,
srcalpnid, dstalpnid,
srcport, dstport);
@@ -583,10 +596,6 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
Curl_alpnid2str(dstalpnid));
}
}
- else {
- infof(data, "Unknown alt-svc protocol \"%s\", skipping.",
- alpnbuf);
- }
}
else
break;
@@ -633,7 +642,7 @@ bool Curl_altsvc_lookup(struct altsvcinfo *asi,
continue;
}
if((as->src.alpnid == srcalpnid) &&
- strcasecompare(as->src.host, srchost) &&
+ hostcompare(srchost, as->src.host) &&
(as->src.port == srcport) &&
(versions & as->dst.alpnid)) {
/* match */
diff --git a/lib/altsvc.h b/lib/altsvc.h
index 2ab89e705..2751d272a 100644
--- a/lib/altsvc.h
+++ b/lib/altsvc.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/amigaos.c b/lib/amigaos.c
index 78bb22c7e..e8c2fc02e 100644
--- a/lib/amigaos.c
+++ b/lib/amigaos.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,13 +18,23 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#ifdef __AMIGA__
-# include "amigaos.h"
-# if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)
+
+#include <curl/curl.h>
+
+#include "hostip.h"
+#include "amigaos.h"
+
+#ifdef HAVE_PROTO_BSDSOCKET_H
+# if defined(__amigaos4__)
+# include <bsdsocket/socketbasetags.h>
+# elif !defined(USE_AMISSL)
# include <amitcp/socketbasetags.h>
# endif
# ifdef __libnix__
@@ -36,8 +46,154 @@
#include "curl_memory.h"
#include "memdebug.h"
-#ifdef __AMIGA__
-#if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)
+#ifdef HAVE_PROTO_BSDSOCKET_H
+
+#ifdef __amigaos4__
+/*
+ * AmigaOS 4.x specific code
+ */
+
+/*
+ * hostip4.c - Curl_ipv4_resolve_r() replacement code
+ *
+ * Logic that needs to be considered are the following build cases:
+ * - newlib networking
+ * - clib2 networking
+ * - direct bsdsocket.library networking (usually AmiSSL builds)
+ * Each with the threaded resolver enabled or not.
+ *
+ * With the threaded resolver enabled, try to use gethostbyname_r() where
+ * available, otherwise (re)open bsdsocket.library and fallback to
+ * gethostbyname().
+ */
+
+#include <proto/bsdsocket.h>
+
+static struct SocketIFace *__CurlISocket = NULL;
+static uint32 SocketFeatures = 0;
+
+#define HAVE_BSDSOCKET_GETHOSTBYNAME_R 0x01
+#define HAVE_BSDSOCKET_GETADDRINFO 0x02
+
+CURLcode Curl_amiga_init(void)
+{
+ struct SocketIFace *ISocket;
+ struct Library *base = OpenLibrary("bsdsocket.library", 4);
+
+ if(base) {
+ ISocket = (struct SocketIFace *)GetInterface(base, "main", 1, NULL);
+ if(ISocket) {
+ ULONG enabled = 0;
+
+ SocketBaseTags(SBTM_SETVAL(SBTC_CAN_SHARE_LIBRARY_BASES), TRUE,
+ SBTM_GETREF(SBTC_HAVE_GETHOSTADDR_R_API), (ULONG)&enabled,
+ TAG_DONE);
+
+ if(enabled) {
+ SocketFeatures |= HAVE_BSDSOCKET_GETHOSTBYNAME_R;
+ }
+
+ __CurlISocket = ISocket;
+
+ atexit(Curl_amiga_cleanup);
+
+ return CURLE_OK;
+ }
+ CloseLibrary(base);
+ }
+
+ return CURLE_FAILED_INIT;
+}
+
+void Curl_amiga_cleanup(void)
+{
+ if(__CurlISocket) {
+ struct Library *base = __CurlISocket->Data.LibBase;
+ DropInterface((struct Interface *)__CurlISocket);
+ CloseLibrary(base);
+ __CurlISocket = NULL;
+ }
+}
+
+#ifdef CURLRES_AMIGA
+/*
+ * Because we need to handle the different cases in hostip4.c at run-time,
+ * not at compile-time, based on what was detected in Curl_amiga_init(),
+ * we replace it completely with our own as to not complicate the baseline
+ * code. Assumes malloc/calloc/free are thread safe because Curl_he2ai()
+ * allocates memory also.
+ */
+
+struct Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
+ int port)
+{
+ struct Curl_addrinfo *ai = NULL;
+ struct hostent *h;
+ struct SocketIFace *ISocket = __CurlISocket;
+
+ if(SocketFeatures & HAVE_BSDSOCKET_GETHOSTBYNAME_R) {
+ LONG h_errnop = 0;
+ struct hostent *buf;
+
+ buf = calloc(1, CURL_HOSTENT_SIZE);
+ if(buf) {
+ h = gethostbyname_r((STRPTR)hostname, buf,
+ (char *)buf + sizeof(struct hostent),
+ CURL_HOSTENT_SIZE - sizeof(struct hostent),
+ &h_errnop);
+ if(h) {
+ ai = Curl_he2ai(h, port);
+ }
+ free(buf);
+ }
+ }
+ else {
+ #ifdef CURLRES_THREADED
+ /* gethostbyname() is not thread safe, so we need to reopen bsdsocket
+ * on the thread's context
+ */
+ struct Library *base = OpenLibrary("bsdsocket.library", 4);
+ if(base) {
+ ISocket = (struct SocketIFace *)GetInterface(base, "main", 1, NULL);
+ if(ISocket) {
+ h = gethostbyname((STRPTR)hostname);
+ if(h) {
+ ai = Curl_he2ai(h, port);
+ }
+ DropInterface((struct Interface *)ISocket);
+ }
+ CloseLibrary(base);
+ }
+ #else
+ /* not using threaded resolver - safe to use this as-is */
+ h = gethostbyname(hostname);
+ if(h) {
+ ai = Curl_he2ai(h, port);
+ }
+ #endif
+ }
+
+ return ai;
+}
+#endif /* CURLRES_AMIGA */
+
+#ifdef USE_AMISSL
+int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
+ fd_set *errorfds, struct timeval *timeout)
+{
+ int r = WaitSelect(nfds, readfds, writefds, errorfds, timeout, 0);
+ /* Ensure Ctrl-C signal is actioned */
+ if((r == -1) && (SOCKERRNO == EINTR))
+ raise(SIGINT);
+ return r;
+}
+#endif /* USE_AMISSL */
+
+#elif !defined(USE_AMISSL) /* __amigaos4__ */
+/*
+ * Amiga OS3 specific code
+ */
+
struct Library *SocketBase = NULL;
extern int errno, h_errno;
@@ -47,7 +203,7 @@ void __request(const char *msg);
# define __request(msg) Printf(msg "\n\a")
#endif
-void Curl_amiga_cleanup()
+void Curl_amiga_cleanup(void)
{
if(SocketBase) {
CloseLibrary(SocketBase);
@@ -55,68 +211,36 @@ void Curl_amiga_cleanup()
}
}
-bool Curl_amiga_init()
+CURLcode Curl_amiga_init(void)
{
if(!SocketBase)
SocketBase = OpenLibrary("bsdsocket.library", 4);
if(!SocketBase) {
__request("No TCP/IP Stack running!");
- return FALSE;
+ return CURLE_FAILED_INIT;
}
if(SocketBaseTags(SBTM_SETVAL(SBTC_ERRNOPTR(sizeof(errno))), (ULONG) &errno,
SBTM_SETVAL(SBTC_LOGTAGPTR), (ULONG) "curl",
TAG_DONE)) {
__request("SocketBaseTags ERROR");
- return FALSE;
+ return CURLE_FAILED_INIT;
}
#ifndef __libnix__
atexit(Curl_amiga_cleanup);
#endif
- return TRUE;
+ return CURLE_OK;
}
#ifdef __libnix__
ADD2EXIT(Curl_amiga_cleanup, -50);
#endif
-#endif /* HAVE_PROTO_BSDSOCKET_H */
+#endif /* !USE_AMISSL */
-#ifdef USE_AMISSL
-void Curl_amiga_X509_free(X509 *a)
-{
- X509_free(a);
-}
-
-/* AmiSSL replaces many functions with macros. Curl requires pointer
- * to some of these functions. Thus, we have to encapsulate these macros.
- */
-
-#include "warnless.h"
-
-int (SHA256_Init)(SHA256_CTX *c)
-{
- return SHA256_Init(c);
-};
-
-int (SHA256_Update)(SHA256_CTX *c, const void *data, size_t len)
-{
- return SHA256_Update(c, data, curlx_uztoui(len));
-};
-
-int (SHA256_Final)(unsigned char *md, SHA256_CTX *c)
-{
- return SHA256_Final(md, c);
-};
-
-void (X509_INFO_free)(X509_INFO *a)
-{
- X509_INFO_free(a);
-};
+#endif /* HAVE_PROTO_BSDSOCKET_H */
-#endif /* USE_AMISSL */
#endif /* __AMIGA__ */
-
diff --git a/lib/amigaos.h b/lib/amigaos.h
index 02e5bb546..9abfb59ea 100644
--- a/lib/amigaos.h
+++ b/lib/amigaos.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,25 +20,23 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
-#if defined(__AMIGA__) && defined(HAVE_BSDSOCKET_H) && !defined(USE_AMISSL)
+#if defined(__AMIGA__) && defined(HAVE_PROTO_BSDSOCKET_H) && \
+ (!defined(USE_AMISSL) || defined(__amigaos4__))
-bool Curl_amiga_init();
-void Curl_amiga_cleanup();
+CURLcode Curl_amiga_init(void);
+void Curl_amiga_cleanup(void);
#else
-#define Curl_amiga_init() 1
+#define Curl_amiga_init() CURLE_OK
#define Curl_amiga_cleanup() Curl_nop_stmt
#endif
-#ifdef USE_AMISSL
-#include <openssl/x509v3.h>
-void Curl_amiga_X509_free(X509 *a);
-#endif /* USE_AMISSL */
-
#endif /* HEADER_CURL_AMIGAOS_H */
diff --git a/lib/arpa_telnet.h b/lib/arpa_telnet.h
index cbe31de5a..523f7f51e 100644
--- a/lib/arpa_telnet.h
+++ b/lib/arpa_telnet.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_TELNET
/*
diff --git a/lib/asyn-ares.c b/lib/asyn-ares.c
index fd0bb6c96..33edba139 100644
--- a/lib/asyn-ares.c
+++ b/lib/asyn-ares.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -65,6 +67,7 @@
#include "connect.h"
#include "select.h"
#include "progress.h"
+#include "timediff.h"
# if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \
defined(WIN32)
@@ -112,6 +115,7 @@ struct thread_data {
#ifndef HAVE_CARES_GETADDRINFO
struct curltime happy_eyeballs_dns_time; /* when this timer started, or 0 */
#endif
+ char hostname[1];
};
/* How long we are willing to wait for additional parallel responses after
@@ -249,8 +253,6 @@ void Curl_resolver_kill(struct Curl_easy *data)
*/
static void destroy_async_data(struct Curl_async *async)
{
- free(async->hostname);
-
if(async->tdata) {
struct thread_data *res = async->tdata;
if(res) {
@@ -262,8 +264,6 @@ static void destroy_async_data(struct Curl_async *async)
}
async->tdata = NULL;
}
-
- async->hostname = NULL;
}
/*
@@ -290,7 +290,7 @@ int Curl_resolver_getsock(struct Curl_easy *data,
timeout = ares_timeout((ares_channel)data->state.async.resolver, &maxtime,
&timebuf);
- milli = (timeout->tv_sec * 1000) + (timeout->tv_usec/1000);
+ milli = (long)curlx_tvtoms(timeout);
if(milli == 0)
milli += 10;
Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
@@ -305,7 +305,7 @@ int Curl_resolver_getsock(struct Curl_easy *data,
* 2) wait for the timeout period to check for action on ares' sockets.
* 3) tell ares to act on all the sockets marked as "with action"
*
- * return number of sockets it worked on
+ * return number of sockets it worked on, or -1 on error
*/
static int waitperform(struct Curl_easy *data, timediff_t timeout_ms)
@@ -337,8 +337,11 @@ static int waitperform(struct Curl_easy *data, timediff_t timeout_ms)
break;
}
- if(num)
+ if(num) {
nfds = Curl_poll(pfd, num, timeout_ms);
+ if(nfds < 0)
+ return -1;
+ }
else
nfds = 0;
@@ -375,7 +378,8 @@ CURLcode Curl_resolver_is_resolved(struct Curl_easy *data,
DEBUGASSERT(dns);
*dns = NULL;
- waitperform(data, 0);
+ if(waitperform(data, 0) < 0)
+ return CURLE_UNRECOVERABLE_POLL;
#ifndef HAVE_CARES_GETADDRINFO
/* Now that we've checked for any last minute results above, see if there are
@@ -474,7 +478,8 @@ CURLcode Curl_resolver_wait_resolv(struct Curl_easy *data,
else
timeout_ms = 1000;
- waitperform(data, timeout_ms);
+ if(waitperform(data, timeout_ms) < 0)
+ return CURLE_UNRECOVERABLE_POLL;
result = Curl_resolver_is_resolved(data, entry);
if(result || data->state.async.done)
@@ -741,7 +746,7 @@ static void addrinfo_cb(void *arg, int status, int timeouts,
* Curl_resolver_getaddrinfo() - when using ares
*
* Returns name information about the given hostname and port number. If
- * successful, the 'hostent' is returned and the forth argument will point to
+ * successful, the 'hostent' is returned and the fourth argument will point to
* memory we need to free after use. That memory *MUST* be freed with
* Curl_freeaddrinfo(), nothing else.
*/
@@ -750,25 +755,18 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
int port,
int *waitp)
{
- char *bufp;
-
+ struct thread_data *res = NULL;
+ size_t namelen = strlen(hostname);
*waitp = 0; /* default to synchronous response */
- bufp = strdup(hostname);
- if(bufp) {
- struct thread_data *res = NULL;
- free(data->state.async.hostname);
- data->state.async.hostname = bufp;
+ res = calloc(sizeof(struct thread_data) + namelen, 1);
+ if(res) {
+ strcpy(res->hostname, hostname);
+ data->state.async.hostname = res->hostname;
data->state.async.port = port;
data->state.async.done = FALSE; /* not done */
data->state.async.status = 0; /* clear */
data->state.async.dns = NULL; /* clear */
- res = calloc(sizeof(struct thread_data), 1);
- if(!res) {
- free(data->state.async.hostname);
- data->state.async.hostname = NULL;
- return NULL;
- }
data->state.async.tdata = res;
/* initial status - failed */
@@ -781,13 +779,17 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
int pf = PF_INET;
memset(&hints, 0, sizeof(hints));
#ifdef CURLRES_IPV6
- if(Curl_ipv6works(data))
+ if((data->conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data))
/* The stack seems to be IPv6-enabled */
pf = PF_UNSPEC;
#endif /* CURLRES_IPV6 */
hints.ai_family = pf;
hints.ai_socktype = (data->conn->transport == TRNSPRT_TCP)?
SOCK_STREAM : SOCK_DGRAM;
+ /* Since the service is a numerical one, set the hint flags
+ * accordingly to save a call to getservbyname in inside C-Ares
+ */
+ hints.ai_flags = ARES_AI_NUMERICSERV;
msnprintf(service, sizeof(service), "%d", port);
res->num_pending = 1;
ares_getaddrinfo((ares_channel)data->state.async.resolver, hostname,
@@ -796,7 +798,7 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
#else
#ifdef HAVE_CARES_IPV6
- if(Curl_ipv6works(data)) {
+ if((data->conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data)) {
/* The stack seems to be IPv6-enabled */
res->num_pending = 2;
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
index 149172ad3..8b375eb5e 100644
--- a/lib/asyn-thread.c
+++ b/lib/asyn-thread.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -262,23 +264,28 @@ int init_thread_sync_data(struct thread_data *td,
return 1;
err_exit:
- /* Memory allocation failed */
+#ifndef CURL_DISABLE_SOCKETPAIR
+ if(tsd->sock_pair[0] != CURL_SOCKET_BAD) {
+ sclose(tsd->sock_pair[0]);
+ tsd->sock_pair[0] = CURL_SOCKET_BAD;
+ }
+#endif
destroy_thread_sync_data(tsd);
return 0;
}
-static int getaddrinfo_complete(struct Curl_easy *data)
+static CURLcode getaddrinfo_complete(struct Curl_easy *data)
{
struct thread_sync_data *tsd = conn_thread_sync_data(data);
- int rc;
+ CURLcode result;
- rc = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
+ result = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
/* The tsd->res structure has been copied to async.dns and perhaps the DNS
cache. Set our copy to NULL so destroy_thread_sync_data doesn't free it.
*/
tsd->res = NULL;
- return rc;
+ return result;
}
@@ -700,7 +707,7 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
*waitp = 0; /* default to synchronous response */
#ifdef CURLRES_IPV6
- if(Curl_ipv6works(data))
+ if((data->conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data))
/* The stack seems to be IPv6-enabled */
pf = PF_UNSPEC;
#endif /* CURLRES_IPV6 */
diff --git a/lib/asyn.h b/lib/asyn.h
index 313039582..1aab21aaa 100644
--- a/lib/asyn.h
+++ b/lib/asyn.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -146,7 +148,7 @@ CURLcode Curl_resolver_wait_resolv(struct Curl_easy *data,
* Curl_resolver_getaddrinfo() - when using this resolver
*
* Returns name information about the given hostname and port number. If
- * successful, the 'hostent' is returned and the forth argument will point to
+ * successful, the 'hostent' is returned and the fourth argument will point to
* memory we need to free after use. That memory *MUST* be freed with
* Curl_freeaddrinfo(), nothing else.
*
diff --git a/lib/base64.c b/lib/base64.c
index be6f163dc..52654c2bc 100644
--- a/lib/base64.c
+++ b/lib/base64.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Base64 encoding/decoding */
@@ -34,7 +36,6 @@
#include "urldata.h" /* for the Curl_easy definition */
#include "warnless.h"
#include "curl_base64.h"
-#include "non-ascii.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -42,10 +43,11 @@
#include "memdebug.h"
/* ---- Base64 Encoding/Decoding Table --- */
+/* Padding character string starts at offset 64. */
static const char base64[]=
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
-/* The Base 64 encoding with an URL and filename safe alphabet, RFC 4648
+/* The Base 64 encoding with a URL and filename safe alphabet, RFC 4648
section 5 */
static const char base64url[]=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
@@ -53,25 +55,18 @@ static const char base64url[]=
static size_t decodeQuantum(unsigned char *dest, const char *src)
{
size_t padding = 0;
- const char *s, *p;
+ const char *s;
unsigned long i, x = 0;
for(i = 0, s = src; i < 4; i++, s++) {
if(*s == '=') {
- x = (x << 6);
+ x <<= 6;
padding++;
}
else {
- unsigned long v = 0;
- p = base64;
-
- while(*p && (*p != *s)) {
- v++;
- p++;
- }
-
- if(*p == *s)
- x = (x << 6) + v;
+ const char *p = strchr(base64, *s);
+ if(p)
+ x = (x << 6) + curlx_uztoul(p - base64);
else
return 0;
}
@@ -108,11 +103,11 @@ CURLcode Curl_base64_decode(const char *src,
unsigned char **outptr, size_t *outlen)
{
size_t srclen = 0;
- size_t length = 0;
size_t padding = 0;
size_t i;
size_t numQuantums;
size_t rawlen = 0;
+ const char *padptr;
unsigned char *pos;
unsigned char *newstr;
@@ -125,19 +120,17 @@ CURLcode Curl_base64_decode(const char *src,
return CURLE_BAD_CONTENT_ENCODING;
/* Find the position of any = padding characters */
- while((src[length] != '=') && src[length])
- length++;
-
- /* A maximum of two = padding characters is allowed */
- if(src[length] == '=') {
+ padptr = strchr(src, '=');
+ if(padptr) {
padding++;
- if(src[length + 1] == '=')
+ /* A maximum of two = padding characters is allowed */
+ if(padptr[1] == '=')
padding++;
- }
- /* Check the = padding characters weren't part way through the input */
- if(length + padding != srclen)
- return CURLE_BAD_CONTENT_ENCODING;
+ /* Check the = padding characters weren't part way through the input */
+ if(padptr + padding != src + srclen)
+ return CURLE_BAD_CONTENT_ENCODING;
+ }
/* Calculate the number of quantums */
numQuantums = srclen / 4;
@@ -145,7 +138,7 @@ CURLcode Curl_base64_decode(const char *src,
/* Calculate the size of the decoded string */
rawlen = (numQuantums * 3) - padding;
- /* Allocate our buffer including room for a zero terminator */
+ /* Allocate our buffer including room for a null-terminator */
newstr = malloc(rawlen + 1);
if(!newstr)
return CURLE_OUT_OF_MEMORY;
@@ -176,20 +169,17 @@ CURLcode Curl_base64_decode(const char *src,
}
static CURLcode base64_encode(const char *table64,
- struct Curl_easy *data,
const char *inputbuff, size_t insize,
char **outptr, size_t *outlen)
{
- CURLcode result;
unsigned char ibuf[3];
unsigned char obuf[4];
int i;
int inputparts;
char *output;
char *base64data;
- char *convbuf = NULL;
-
const char *indata = inputbuff;
+ const char *padstr = &table64[64]; /* Point to padding string. */
*outptr = NULL;
*outlen = 0;
@@ -206,20 +196,6 @@ static CURLcode base64_encode(const char *table64,
if(!output)
return CURLE_OUT_OF_MEMORY;
- /*
- * The base64 data needs to be created using the network encoding
- * not the host encoding. And we can't change the actual input
- * so we copy it to a buffer, translate it, and use that instead.
- */
- result = Curl_convert_clone(data, indata, insize, &convbuf);
- if(result) {
- free(output);
- return result;
- }
-
- if(convbuf)
- indata = (char *)convbuf;
-
while(insize > 0) {
for(i = inputparts = 0; i < 3; i++) {
if(insize > 0) {
@@ -241,27 +217,30 @@ static CURLcode base64_encode(const char *table64,
switch(inputparts) {
case 1: /* only one byte read */
- msnprintf(output, 5, "%c%c==",
- table64[obuf[0]],
- table64[obuf[1]]);
+ i = msnprintf(output, 5, "%c%c%s%s",
+ table64[obuf[0]],
+ table64[obuf[1]],
+ padstr,
+ padstr);
break;
case 2: /* two bytes read */
- msnprintf(output, 5, "%c%c%c=",
- table64[obuf[0]],
- table64[obuf[1]],
- table64[obuf[2]]);
+ i = msnprintf(output, 5, "%c%c%c%s",
+ table64[obuf[0]],
+ table64[obuf[1]],
+ table64[obuf[2]],
+ padstr);
break;
default:
- msnprintf(output, 5, "%c%c%c%c",
- table64[obuf[0]],
- table64[obuf[1]],
- table64[obuf[2]],
- table64[obuf[3]]);
+ i = msnprintf(output, 5, "%c%c%c%c",
+ table64[obuf[0]],
+ table64[obuf[1]],
+ table64[obuf[2]],
+ table64[obuf[3]]);
break;
}
- output += 4;
+ output += i;
}
/* Zero terminate */
@@ -270,10 +249,8 @@ static CURLcode base64_encode(const char *table64,
/* Return the pointer to the new data (allocated memory) */
*outptr = base64data;
- free(convbuf);
-
/* Return the length of the new data */
- *outlen = strlen(base64data);
+ *outlen = output - base64data;
return CURLE_OK;
}
@@ -291,15 +268,12 @@ static CURLcode base64_encode(const char *table64,
* 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 Curl_easy *data,
- const char *inputbuff, size_t insize,
+CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
char **outptr, size_t *outlen)
{
- return base64_encode(base64, data, inputbuff, insize, outptr, outlen);
+ return base64_encode(base64, inputbuff, insize, outptr, outlen);
}
/*
@@ -315,15 +289,12 @@ CURLcode Curl_base64_encode(struct Curl_easy *data,
* 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 Curl_easy *data,
- const char *inputbuff, size_t insize,
+CURLcode Curl_base64url_encode(const char *inputbuff, size_t insize,
char **outptr, size_t *outlen)
{
- return base64_encode(base64url, data, inputbuff, insize, outptr, outlen);
+ return base64_encode(base64url, inputbuff, insize, outptr, outlen);
}
#endif /* no users so disabled */
diff --git a/lib/bufref.c b/lib/bufref.c
index b84511e18..91b037431 100644
--- a/lib/bufref.c
+++ b/lib/bufref.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2021 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/bufref.h b/lib/bufref.h
index 25f65d894..96b818b53 100644
--- a/lib/bufref.h
+++ b/lib/bufref.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2021 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/lib/c-hyper.c b/lib/c-hyper.c
index c253cd36e..86abcdb0f 100644
--- a/lib/c-hyper.c
+++ b/lib/c-hyper.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -52,6 +54,7 @@
#include "multiif.h"
#include "progress.h"
#include "content_encoding.h"
+#include "ws.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -142,7 +145,7 @@ static int hyper_each_header(void *userdata,
return HYPER_ITER_BREAK;
}
else {
- if(Curl_dyn_add(&data->state.headerb, "\r\n"))
+ if(Curl_dyn_addn(&data->state.headerb, STRCONST("\r\n")))
return HYPER_ITER_BREAK;
}
len = Curl_dyn_len(&data->state.headerb);
@@ -288,15 +291,13 @@ static CURLcode status_line(struct Curl_easy *data,
len);
if(!data->state.hconnect || !data->set.suppress_connect_headers) {
- writetype = CLIENTWRITE_HEADER;
+ writetype = CLIENTWRITE_HEADER|CLIENTWRITE_STATUS;
if(data->set.include_header)
writetype |= CLIENTWRITE_BODY;
result = Curl_client_write(data, writetype,
Curl_dyn_ptr(&data->state.headerb), len);
- if(result) {
- data->state.hresult = CURLE_ABORTED_BY_CALLBACK;
- return HYPER_ITER_BREAK;
- }
+ if(result)
+ return result;
}
data->info.header_size += (long)len;
data->req.headerbytecount += (long)len;
@@ -416,7 +417,7 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data,
else if(h->endtask == task) {
/* end of transfer */
*done = TRUE;
- infof(data, "hyperstream is done!");
+ infof(data, "hyperstream is done");
if(!k->bodywrites) {
/* hyper doesn't always call the body write callback */
bool stilldone;
@@ -441,6 +442,13 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data,
reasonp = hyper_response_reason_phrase(resp);
reason_len = hyper_response_reason_phrase_len(resp);
+ if(http_status == 417 && data->state.expect100header) {
+ infof(data, "Got 417 while waiting for a 100");
+ data->state.disableexpect = TRUE;
+ data->req.newurl = strdup(data->state.url);
+ Curl_done_sending(data, k);
+ }
+
result = status_line(data, conn,
http_status, http_version, reasonp, reason_len);
if(result)
@@ -464,6 +472,24 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data,
if(result)
break;
+ k->deductheadercount =
+ (100 <= http_status && 199 >= http_status)?k->headerbytecount:0;
+#ifdef USE_WEBSOCKETS
+ if(k->upgr101 == UPGR101_WS) {
+ if(http_status == 101) {
+ /* verify the response */
+ result = Curl_ws_accept(data);
+ if(result)
+ return result;
+ }
+ else {
+ failf(data, "Expected 101, got %u", k->httpcode);
+ result = CURLE_HTTP_RETURNED_ERROR;
+ break;
+ }
+ }
+#endif
+
/* Curl_http_auth_act() checks what authentication methods that are
* available and decides which one (if any) to use. It will set 'newurl'
* if an auth method was picked. */
@@ -685,9 +711,18 @@ static int uploadstreamed(void *userdata, hyper_context *ctx,
data->state.hresult = result;
return HYPER_POLL_ERROR;
}
- if(!fillcount)
- /* done! */
- *chunk = NULL;
+ if(!fillcount) {
+ if((data->req.keepon & KEEP_SEND_PAUSE) != KEEP_SEND_PAUSE)
+ /* done! */
+ *chunk = NULL;
+ else {
+ /* paused, save a waker */
+ if(data->hyp.send_body_waker)
+ hyper_waker_free(data->hyp.send_body_waker);
+ data->hyp.send_body_waker = hyper_context_waker(ctx);
+ return HYPER_POLL_PENDING;
+ }
+ }
else {
hyper_buf *copy = hyper_buf_copy((uint8_t *)data->state.ulbuf, fillcount);
if(copy)
@@ -806,7 +841,7 @@ static void http1xx_cb(void *arg, struct hyper_response *resp)
}
if(data->state.hresult)
- infof(data, "ERROR in 1xx, bail out!");
+ infof(data, "ERROR in 1xx, bail out");
}
/*
@@ -902,10 +937,13 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
result = CURLE_OUT_OF_MEMORY;
goto error;
}
- if(conn->negnpn == CURL_HTTP_VERSION_2) {
+ if(conn->alpn == CURL_HTTP_VERSION_2) {
hyper_clientconn_options_http2(options, 1);
h2 = TRUE;
}
+ hyper_clientconn_options_set_preserve_header_case(options, 1);
+ hyper_clientconn_options_set_preserve_header_order(options, 1);
+ hyper_clientconn_options_http1_allow_multiline_headers(options, 1);
hyper_clientconn_options_exec(options, h->exec);
@@ -951,6 +989,11 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
goto error;
}
}
+ else {
+ if(!h2 && !data->state.disableexpect) {
+ data->state.expect100header = TRUE;
+ }
+ }
if(hyper_request_set_method(req, (uint8_t *)method, strlen(method))) {
failf(data, "error setting method");
@@ -990,10 +1033,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
/* For HTTP/2, we show the Host: header as if we sent it, to make it look
like for HTTP/1 but it isn't actually sent since :authority is then
used. */
- result = Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host,
- strlen(data->state.aptr.host));
- if(result)
- goto error;
+ Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host,
+ strlen(data->state.aptr.host));
}
if(data->state.aptr.proxyuserpwd) {
@@ -1022,7 +1063,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
goto error;
}
- p_accept = Curl_checkheaders(data, "Accept")?NULL:"Accept: */*\r\n";
+ p_accept = Curl_checkheaders(data,
+ STRCONST("Accept"))?NULL:"Accept: */*\r\n";
if(p_accept) {
result = Curl_hyper_header(data, headers, p_accept);
if(result)
@@ -1034,10 +1076,25 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
goto error;
}
+#ifndef CURL_DISABLE_ALTSVC
+ if(conn->bits.altused && !Curl_checkheaders(data, STRCONST("Alt-Used"))) {
+ char *altused = aprintf("Alt-Used: %s:%d\r\n",
+ conn->conn_to_host.name, conn->conn_to_port);
+ if(!altused) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto error;
+ }
+ result = Curl_hyper_header(data, headers, altused);
+ if(result)
+ goto error;
+ free(altused);
+ }
+#endif
+
#ifndef CURL_DISABLE_PROXY
if(conn->bits.httpproxy && !conn->bits.tunnel_proxy &&
- !Curl_checkheaders(data, "Proxy-Connection") &&
- !Curl_checkProxyheaders(data, conn, "Proxy-Connection")) {
+ !Curl_checkheaders(data, STRCONST("Proxy-Connection")) &&
+ !Curl_checkProxyheaders(data, conn, STRCONST("Proxy-Connection"))) {
result = Curl_hyper_header(data, headers, "Proxy-Connection: Keep-Alive");
if(result)
goto error;
@@ -1045,7 +1102,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
#endif
Curl_safefree(data->state.aptr.ref);
- if(data->state.referer && !Curl_checkheaders(data, "Referer")) {
+ if(data->state.referer && !Curl_checkheaders(data, STRCONST("Referer"))) {
data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
if(!data->state.aptr.ref)
result = CURLE_OUT_OF_MEMORY;
@@ -1055,7 +1112,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
goto error;
}
- if(!Curl_checkheaders(data, "Accept-Encoding") &&
+ if(!Curl_checkheaders(data, STRCONST("Accept-Encoding")) &&
data->set.str[STRING_ENCODING]) {
Curl_safefree(data->state.aptr.accept_encoding);
data->state.aptr.accept_encoding =
@@ -1085,6 +1142,9 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
if(result)
goto error;
+ if(!result && conn->handler->protocol&(CURLPROTO_WS|CURLPROTO_WSS))
+ result = Curl_ws_request(data, headers);
+
result = Curl_add_timecondition(data, headers);
if(result)
goto error;
@@ -1097,9 +1157,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
if(result)
goto error;
- result = Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"\r\n", 2);
- if(result)
- goto error;
+ Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"\r\n", 2);
data->req.upload_chunky = FALSE;
sendtask = hyper_clientconn_send(client, req);
diff --git a/lib/c-hyper.h b/lib/c-hyper.h
index d63defeff..70507ad2a 100644
--- a/lib/c-hyper.h
+++ b/lib/c-hyper.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -34,6 +36,7 @@ struct hyptransfer {
const hyper_executor *exec;
hyper_task *endtask;
hyper_waker *exp100_waker;
+ hyper_waker *send_body_waker;
};
size_t Curl_hyper_recv(void *userp, hyper_context *ctx,
diff --git a/lib/config-amigaos.h b/lib/config-amigaos.h
index 842cbc247..b7356c762 100644
--- a/lib/config-amigaos.h
+++ b/lib/config-amigaos.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* ================================================================ */
@@ -31,26 +33,15 @@
#define HAVE_ARPA_INET_H 1
#define HAVE_CLOSESOCKET_CAMEL 1
#define HAVE_ERRNO_H 1
-#define HAVE_INET_ADDR 1
#define HAVE_INTTYPES_H 1
#define HAVE_IOCTLSOCKET_CAMEL 1
#define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1
-#define HAVE_LIBZ 1
#define HAVE_LONGLONG 1
-#define HAVE_MALLOC_H 1
-#define HAVE_MEMORY_H 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_NET_IF_H 1
-#define HAVE_OPENSSL_CRYPTO_H 1
-#define HAVE_OPENSSL_ERR_H 1
-#define HAVE_OPENSSL_PEM_H 1
-#define HAVE_OPENSSL_RSA_H 1
-#define HAVE_OPENSSL_SSL_H 1
-#define HAVE_OPENSSL_X509_H 1
#define HAVE_PWD_H 1
#define HAVE_RAND_EGD 1
-#define HAVE_RAND_STATUS 1
#define HAVE_SELECT 1
#define HAVE_SETJMP_H 1
#define HAVE_SIGNAL 1
@@ -58,11 +49,9 @@
#define HAVE_SOCKET 1
#define HAVE_STRCASECMP 1
#define HAVE_STRDUP 1
-#define HAVE_STRFTIME 1
#define HAVE_STRICMP 1
#define HAVE_STRINGS_H 1
#define HAVE_STRING_H 1
-#define HAVE_STRSTR 1
#define HAVE_STRUCT_TIMEVAL 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_SOCKET_H 1
@@ -71,22 +60,22 @@
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_TIME_H 1
-#define HAVE_UNAME 1
#define HAVE_UNISTD_H 1
#define HAVE_UTIME 1
#define HAVE_UTIME_H 1
#define HAVE_WRITABLE_ARGV 1
-#define HAVE_ZLIB_H 1
#define HAVE_SYS_IOCTL_H 1
#define NEED_MALLOC_H 1
#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
#define SIZEOF_SIZE_T 4
+#ifndef SIZEOF_CURL_OFF_T
+#define SIZEOF_CURL_OFF_T 8
+#endif
+
#define USE_MANUAL 1
-#define USE_OPENSSL 1
#define CURL_DISABLE_LDAP 1
#define OS "AmigaOS"
@@ -98,11 +87,6 @@
#define PACKAGE_TARNAME "curl"
#define PACKAGE_VERSION "-"
#define CURL_CA_BUNDLE "s:curl-ca-bundle.crt"
-
-#define SELECT_TYPE_ARG1 int
-#define SELECT_TYPE_ARG234 (fd_set *)
-#define SELECT_TYPE_ARG5 (struct timeval *)
-
#define STDC_HEADERS 1
#define TIME_WITH_SYS_TIME 1
@@ -131,15 +115,6 @@
#define RECV_TYPE_ARG4 long
#define RECV_TYPE_RETV long
-#define HAVE_RECVFROM 1
-#define RECVFROM_TYPE_ARG1 long
-#define RECVFROM_TYPE_ARG2 char
-#define RECVFROM_TYPE_ARG3 long
-#define RECVFROM_TYPE_ARG4 long
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-#define RECVFROM_TYPE_ARG6 long
-#define RECVFROM_TYPE_RETV long
-
#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
diff --git a/lib/config-dos.h b/lib/config-dos.h
index 6859208ab..8e3c940d9 100644
--- a/lib/config-dos.h
+++ b/lib/config-dos.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
@@ -31,8 +33,6 @@
#define OS "MSDOS/djgpp"
#elif defined(__HIGHC__)
#define OS "MSDOS/HighC"
-#elif defined(__WATCOMC__)
- #define OS "MSDOS/Watcom"
#else
#define OS "MSDOS/?"
#endif
@@ -45,23 +45,19 @@
#define HAVE_FCNTL_H 1
#define HAVE_FREEADDRINFO 1
#define HAVE_GETADDRINFO 1
-#define HAVE_GETPROTOBYNAME 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_IO_H 1
-#define HAVE_IOCTL 1
#define HAVE_IOCTL_FIONBIO 1
#define HAVE_IOCTLSOCKET 1
#define HAVE_IOCTLSOCKET_FIONBIO 1
#define HAVE_LOCALE_H 1
#define HAVE_LONGLONG 1
-#define HAVE_MEMORY_H 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_NETINET_TCP_H 1
#define HAVE_NET_IF_H 1
#define HAVE_PROCESS_H 1
#define HAVE_RECV 1
-#define HAVE_RECVFROM 1
#define HAVE_SELECT 1
#define HAVE_SEND 1
#define HAVE_SETJMP_H 1
@@ -73,7 +69,6 @@
#define HAVE_STRICMP 1
#define HAVE_STRTOLL 1
#define HAVE_STRUCT_TIMEVAL 1
-#define HAVE_STRUCT_IN6_ADDR 1
#define HAVE_SYS_IOCTL_H 1
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_STAT_H 1
@@ -85,14 +80,12 @@
#define SIZEOF_INT 4
#define SIZEOF_LONG 4
-#define SIZEOF_LONG_DOUBLE 16
-#define SIZEOF_SHORT 2
#define SIZEOF_SIZE_T 4
#define SIZEOF_CURL_OFF_T 4
#define STDC_HEADERS 1
#define TIME_WITH_SYS_TIME 1
-/* Qualifiers for send(), recv(), and recvfrom() */
+/* Qualifiers for send() and recv() */
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
@@ -107,32 +100,15 @@
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV int
-#define RECVFROM_TYPE_ARG1 int
-#define RECVFROM_TYPE_ARG2 void
-#define RECVFROM_TYPE_ARG3 int
-#define RECVFROM_TYPE_ARG4 int
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-#define RECVFROM_TYPE_ARG6 int
-#define RECVFROM_TYPE_RETV int
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-
#define BSD
/* CURLDEBUG definition enables memory tracking */
/* #define CURLDEBUG */
-/* USE_ZLIB on cmd-line */
-#ifdef USE_ZLIB
- #define HAVE_ZLIB_H 1
+#ifdef USE_ZLIB /* Deprecated. Use HAVE_LIBZ instead. */
#define HAVE_LIBZ 1
#endif
-/* USE_OPENSSL on cmd-line */
-#ifdef USE_OPENSSL
- #define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
- #define OPENSSL_NO_KRB5 1
-#endif
-
/* to disable LDAP */
#define CURL_DISABLE_LDAP 1
@@ -154,9 +130,6 @@
#define HAVE_TERMIOS_H 1
#define HAVE_VARIADIC_MACROS_GCC 1
-#elif defined(__WATCOMC__)
- #define HAVE_STRCASECMP 1
-
#elif defined(__HIGHC__)
#define HAVE_SYS_TIME_H 1
#define strerror(e) strerror_s_((e))
diff --git a/lib/config-mac.h b/lib/config-mac.h
index 22d32d480..ed07019e6 100644
--- a/lib/config-mac.h
+++ b/lib/config-mac.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* =================================================================== */
@@ -45,7 +47,6 @@
#define HAVE_GETTIMEOFDAY 1
#define HAVE_FCNTL_H 1
#define HAVE_SYS_STAT_H 1
-#define HAVE_ALLOCA_H 1
#define HAVE_STDLIB_H 1
#define HAVE_TIME_H 1
#define HAVE_UTIME_H 1
@@ -57,10 +58,6 @@
#define HAVE_ALARM 1
#define HAVE_FTRUNCATE 1
#define HAVE_UTIME 1
-#define HAVE_SETVBUF 1
-#define HAVE_STRFTIME 1
-#define HAVE_INET_ADDR 1
-#define HAVE_MEMCPY 1
#define HAVE_SELECT 1
#define HAVE_SOCKET 1
#define HAVE_STRUCT_TIMEVAL 1
@@ -74,14 +71,11 @@
#define CURL_DISABLE_LDAP 1
-#define HAVE_RAND_STATUS 1
#define HAVE_RAND_EGD 1
-#define HAVE_IOCTL 1
#define HAVE_IOCTL_FIONBIO 1
#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
#define SIZEOF_SIZE_T 4
#define HAVE_RECV 1
@@ -91,16 +85,6 @@
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV ssize_t
-#define HAVE_RECVFROM 1
-#define RECVFROM_TYPE_ARG1 int
-#define RECVFROM_TYPE_ARG2 void
-#define RECVFROM_TYPE_ARG3 size_t
-#define RECVFROM_TYPE_ARG4 int
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-#define RECVFROM_TYPE_ARG6 int
-#define RECVFROM_TYPE_RETV ssize_t
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-
#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
diff --git a/lib/config-os400.h b/lib/config-os400.h
index d68cb4b18..2eef1a0c1 100644
--- a/lib/config-os400.h
+++ b/lib/config-os400.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* ================================================================ */
@@ -33,9 +35,6 @@
/* Version number of this archive. */
#undef VERSION
-/* Define if you have the getpass function. */
-#undef HAVE_GETPASS
-
/* Define cpu-machine-OS */
#define OS "OS/400"
@@ -55,9 +54,6 @@
/* Define if you need the _REENTRANT define for some functions */
#undef NEED_REENTRANT
-/* Define if you have the Kerberos4 libraries (including -ldes) */
-#undef HAVE_KRB4
-
/* Define if you want to enable IPv6 support */
#define ENABLE_IPV6
@@ -76,9 +72,6 @@
/* Define to 1 if you have the alarm function. */
#define HAVE_ALARM 1
-/* Define if you have the <alloca.h> header file. */
-#undef HAVE_ALLOCA_H
-
/* Define if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H
@@ -97,9 +90,6 @@
/* Define if you have the `gethostname' function. */
#define HAVE_GETHOSTNAME
-/* Define if you have the <getopt.h> header file. */
-#undef HAVE_GETOPT_H
-
/* Define if you have the `getpass_r' function. */
#undef HAVE_GETPASS_R
@@ -109,9 +99,6 @@
/* Define if you have the `getpwuid' function. */
#define HAVE_GETPWUID
-/* Define if you have the `getservbyname' function. */
-#define HAVE_GETSERVBYNAME
-
/* Define to 1 if you have the getsockname function. */
#define HAVE_GETSOCKNAME 1
@@ -121,30 +108,12 @@
/* Define if you have the `timeval' struct. */
#define HAVE_STRUCT_TIMEVAL
-/* Define if you have the `inet_addr' function. */
-#define HAVE_INET_ADDR
-
/* Define if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H
/* Define if you have the <io.h> header file. */
#undef HAVE_IO_H
-/* Define if you have the `krb_get_our_ip_for_realm' function. */
-#undef HAVE_KRB_GET_OUR_IP_FOR_REALM
-
-/* Define if you have the <krb.h> header file. */
-#undef HAVE_KRB_H
-
-/* Define if you have the `nsl' library (-lnsl). */
-#undef HAVE_LIBNSL
-
-/* Define if you have the `resolv' library (-lresolv). */
-#undef HAVE_LIBRESOLV
-
-/* Define if you have the `resolve' library (-lresolve). */
-#undef HAVE_LIBRESOLVE
-
/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET
@@ -160,72 +129,27 @@
/* 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 `localtime_r' function. */
-#define HAVE_LOCALTIME_R
-
-/* Define if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H
-
/* Define if you need the malloc.h header file even with stdlib.h */
/* #define NEED_MALLOC_H 1 */
-/* Define if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
/* Define if you have the <netdb.h> header file. */
#define HAVE_NETDB_H
-/* Define if you have the <netinet/if_ether.h> header file. */
-#undef HAVE_NETINET_IF_ETHER_H
-
/* Define if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H
/* Define if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H
-/* Define if you have the <openssl/crypto.h> header file. */
-#undef HAVE_OPENSSL_CRYPTO_H
-
-/* Define if you have the <openssl/err.h> header file. */
-#undef HAVE_OPENSSL_ERR_H
-
-/* Define if you have the <openssl/pem.h> header file. */
-#undef HAVE_OPENSSL_PEM_H
-
-/* Define if you have the <openssl/rsa.h> header file. */
-#undef HAVE_OPENSSL_RSA_H
-
-/* Define if you have the <openssl/ssl.h> header file. */
-#undef HAVE_OPENSSL_SSL_H
-
-/* Define if you have the <openssl/x509.h> header file. */
-#undef HAVE_OPENSSL_X509_H
-
-/* Define if you have the <pem.h> header file. */
-#undef HAVE_PEM_H
-
/* Define if you have the <pwd.h> header file. */
#define HAVE_PWD_H
/* Define if you have the `RAND_egd' function. */
#undef HAVE_RAND_EGD
-/* Define if you have the `RAND_screen' function. */
-#undef HAVE_RAND_SCREEN
-
-/* Define if you have the `RAND_status' function. */
-#undef HAVE_RAND_STATUS
-
/* Define if you have the `select' function. */
#define HAVE_SELECT
-/* Define if you have the `setvbuf' function. */
-#define HAVE_SETVBUF
-
/* Define if you have the `sigaction' function. */
#define HAVE_SIGACTION
@@ -264,10 +188,6 @@
/* Define if you have the `strdup' function. */
#define HAVE_STRDUP
-
-/* Define if you have the `strftime' function. */
-#define HAVE_STRFTIME
-
/* Define if you have the <strings.h> header file. */
#define HAVE_STRINGS_H
@@ -277,9 +197,6 @@
/* Define if you have the <stropts.h> header file. */
#undef HAVE_STROPTS_H
-/* Define if you have the `strstr' function. */
-#define HAVE_STRSTR
-
/* Define if you have the `strtok_r' function. */
#define HAVE_STRTOK_R
@@ -322,33 +239,21 @@
/* Define if you have the <time.h> header file. */
#define HAVE_TIME_H
-/* Define if you have the `uname' function. */
-#undef HAVE_UNAME
-
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H
-/* Define if you have the <x509.h> header file. */
-#undef HAVE_X509_H
-
/* Name of package */
#undef PACKAGE
/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4
-/* The size of a `long double', as computed by sizeof. */
-#define SIZEOF_LONG_DOUBLE 8
-
/* Define if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG
/* The size of a `long long', as computed by sizeof. */
#define SIZEOF_LONG_LONG 8
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
@@ -358,10 +263,6 @@
/* The size of `curl_off_t', as computed by sizeof. */
#define SIZEOF_CURL_OFF_T 8
-/* Whether long long constants must be suffixed by LL. */
-
-#define HAVE_LL
-
/* Define this if you have struct sockaddr_storage */
#define HAVE_STRUCT_SOCKADDR_STORAGE
@@ -371,7 +272,8 @@
/* Define if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME
-/* Define to enable HTTP3 support (experimental, requires NGTCP2 or QUICHE) */
+/* Define to enable HTTP3 support (experimental, requires NGTCP2, QUICHE or
+ MSH3) */
#undef ENABLE_QUIC
/* Version number of package */
@@ -392,9 +294,6 @@
/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t
-/* Define if you have the ioctl function. */
-#define HAVE_IOCTL
-
/* Define if you have a working ioctl FIONBIO function. */
#define HAVE_IOCTL_FIONBIO
@@ -428,30 +327,6 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
-/* Define if you have the recvfrom function. */
-#define HAVE_RECVFROM
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 int
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
/* Define if you have the send function. */
#define HAVE_SEND
diff --git a/lib/config-plan9.h b/lib/config-plan9.h
index dbe9b82af..49a719c1a 100644
--- a/lib/config-plan9.h
+++ b/lib/config-plan9.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#define BUILDING_LIBCURL 1
@@ -46,7 +48,6 @@
#error not implement
#else
#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
#define SIZEOF_LONG 4
#define SIZEOF_OFF_T 8
#define SIZEOF_CURL_OFF_T 4 /* curl_off_t = timediff_t = int */
@@ -61,23 +62,7 @@
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV int
-#define HAVE_RECVFROM 1
-#define RECVFROM_TYPE_ARG1 int
-#define RECVFROM_TYPE_ARG2 void
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-#define RECVFROM_TYPE_ARG3 int
-#define RECVFROM_TYPE_ARG4 int
-#define RECVFROM_TYPE_ARG5 void
-#define RECVFROM_TYPE_ARG5_IS_VOID 1
-#define RECVFROM_TYPE_ARG6 int
-#define RECVFROM_TYPE_ARG6_IS_VOID 1
-#define RECVFROM_TYPE_RETV int
-
#define HAVE_SELECT 1
-#define SELECT_TYPE_ARG1 int
-#define SELECT_TYPE_ARG234 fd_set *
-#define SELECT_TYPE_ARG5 struct timeval *
-#define SELECT_TYPE_RETV int
#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
@@ -92,7 +77,6 @@
#define HAVE_ASSERT_H 1
#define HAVE_BASENAME 1
#define HAVE_BOOL_T 1
-#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
#define HAVE_ERRNO_H 1
#define HAVE_FCNTL 1
#define HAVE_FCNTL_H 1
@@ -100,23 +84,17 @@
#define HAVE_FTRUNCATE 1
#define HAVE_GETADDRINFO 1
#define HAVE_GETEUID 1
-#define HAVE_GETHOSTBYNAME 1
#define HAVE_GETHOSTNAME 1
#define HAVE_GETPPID 1
-#define HAVE_GETPROTOBYNAME 1
#define HAVE_GETPWUID 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_GMTIME_R 1
-#define HAVE_INET_ADDR 1
#define HAVE_INET_NTOP 1
#define HAVE_INET_PTON 1
#define HAVE_INTTYPES_H 1
-#define HAVE_IOCTL 1
#define HAVE_LIBGEN_H 1
#define HAVE_LIBZ 1
-#define HAVE_LL 1
#define HAVE_LOCALE_H 1
-#define HAVE_LOCALTIME_R 1
#define HAVE_LONGLONG 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
@@ -125,26 +103,14 @@
#define HAVE_SYS_SELECT_H 1
#define USE_OPENSSL 1
-#define HAVE_OPENSSL_CRYPTO_H 1
-#define HAVE_OPENSSL_ERR_H 1
-#define HAVE_OPENSSL_PEM_H 1
-#define HAVE_OPENSSL_PKCS12_H 1
-#define HAVE_OPENSSL_RSA_H 1
-#define HAVE_OPENSSL_SSL_H 1
-#define HAVE_OPENSSL_X509_H 1
#define HAVE_PIPE 1
-#define HAVE_POLL 1
#define HAVE_POLL_FINE 1
#define HAVE_POLL_H 1
#define HAVE_PTHREAD_H 1
-#define HAVE_RAND_STATUS 1
#define HAVE_SETJMP_H 1
#define HAVE_SETLOCALE 1
-#define HAVE_SETSOCKOPT 1
-#define HAVE_SOCK_OPTS 1 /* for /sys/include/ape/sys/socket.h */
-
#define HAVE_SIGACTION 1
#define HAVE_SIGNAL 1
#define HAVE_SIGNAL_H 1
@@ -154,12 +120,10 @@
#define HAVE_SSL_GET_SHUTDOWN 1
#define HAVE_STDBOOL_H 1
#define HAVE_STDINT_H 1
-#define HAVE_STDIO_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRCASECMP 1
#define HAVE_STRDUP 1
#define HAVE_STRING_H 1
-#define HAVE_STRSTR 1
#define HAVE_STRTOK_R 1
#define HAVE_STRTOLL 1
#define HAVE_STRUCT_TIMEVAL 1
@@ -170,21 +134,15 @@
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_UIO_H 1
#define HAVE_SYS_UN_H 1
#define HAVE_TERMIOS_H 1
#define HAVE_TIME_H 1
-#define HAVE_UNAME 1
#define HAVE_UNISTD_H 1
#define HAVE_UTIME 1
#define HAVE_UTIME_H 1
-#define HAVE_WRITEV 1
-
-#define HAVE_ZLIB_H 1
#define HAVE_POSIX_STRERROR_R 1
#define HAVE_STRERROR_R 1
-#define STRERROR_R_TYPE_ARG3 int
#define TIME_WITH_SYS_TIME 1
#define USE_MANUAL 1
diff --git a/lib/config-riscos.h b/lib/config-riscos.h
index 9986b20fb..d6c81f3eb 100644
--- a/lib/config-riscos.h
+++ b/lib/config-riscos.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* ================================================================ */
@@ -32,9 +34,6 @@
/* Version number of this archive. */
#undef VERSION
-/* Define if you have the getpass function. */
-#undef HAVE_GETPASS
-
/* Define cpu-machine-OS */
#define OS "ARM-RISC OS"
@@ -53,9 +52,6 @@
/* Define if you need the _REENTRANT define for some functions */
#undef NEED_REENTRANT
-/* Define if you have the Kerberos4 libraries (including -ldes) */
-#undef HAVE_KRB4
-
/* Define if you want to enable IPv6 support */
#undef ENABLE_IPV6
@@ -77,9 +73,6 @@
/* Define if you have the alarm function. */
#define HAVE_ALARM
-/* Define if you have the <alloca.h> header file. */
-#define HAVE_ALLOCA_H
-
/* Define if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H
@@ -107,117 +100,48 @@
/* Define if you have the `gethostname' function. */
#define HAVE_GETHOSTNAME
-/* Define if you have the <getopt.h> header file. */
-#define HAVE_GETOPT_H
-
/* Define if you have the `getpass_r' function. */
#undef HAVE_GETPASS_R
/* Define if you have the `getpwuid' function. */
#undef HAVE_GETPWUID
-/* Define if you have the `getservbyname' function. */
-#undef HAVE_GETSERVBYNAME
-
/* Define if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY
/* Define if you have the `timeval' struct. */
#define HAVE_STRUCT_TIMEVAL
-/* Define if you have the `inet_addr' function. */
-#undef HAVE_INET_ADDR
-
/* Define if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H
/* Define if you have the <io.h> header file. */
#undef HAVE_IO_H
-/* Define if you have the `krb_get_our_ip_for_realm' function. */
-#undef HAVE_KRB_GET_OUR_IP_FOR_REALM
-
-/* Define if you have the <krb.h> header file. */
-#undef HAVE_KRB_H
-
-/* Define if you have the `nsl' library (-lnsl). */
-#undef HAVE_LIBNSL
-
-/* Define if you have the `resolv' library (-lresolv). */
-#undef HAVE_LIBRESOLV
-
-/* Define if you have the `resolve' library (-lresolve). */
-#undef HAVE_LIBRESOLVE
-
/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET
-/* Define if you have the `ucb' library (-lucb). */
-#undef HAVE_LIBUCB
-
-/* Define if you have the `localtime_r' function. */
-#undef HAVE_LOCALTIME_R
-
-/* Define if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H
-
/* Define if you need the malloc.h header file even with stdlib.h */
/* #define NEED_MALLOC_H 1 */
-/* Define if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
/* Define if you have the <netdb.h> header file. */
#define HAVE_NETDB_H
-/* Define if you have the <netinet/if_ether.h> header file. */
-#undef HAVE_NETINET_IF_ETHER_H
-
/* Define if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H
/* Define if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H
-/* Define if you have the <openssl/crypto.h> header file. */
-#undef HAVE_OPENSSL_CRYPTO_H
-
-/* Define if you have the <openssl/err.h> header file. */
-#undef HAVE_OPENSSL_ERR_H
-
-/* Define if you have the <openssl/pem.h> header file. */
-#undef HAVE_OPENSSL_PEM_H
-
-/* Define if you have the <openssl/rsa.h> header file. */
-#undef HAVE_OPENSSL_RSA_H
-
-/* Define if you have the <openssl/ssl.h> header file. */
-#undef HAVE_OPENSSL_SSL_H
-
-/* Define if you have the <openssl/x509.h> header file. */
-#undef HAVE_OPENSSL_X509_H
-
-/* Define if you have the <pem.h> header file. */
-#undef HAVE_PEM_H
-
/* Define if you have the <pwd.h> header file. */
#undef HAVE_PWD_H
/* Define if you have the `RAND_egd' function. */
#undef HAVE_RAND_EGD
-/* Define if you have the `RAND_screen' function. */
-#undef HAVE_RAND_SCREEN
-
-/* Define if you have the `RAND_status' function. */
-#undef HAVE_RAND_STATUS
-
/* Define if you have the `select' function. */
#define HAVE_SELECT
-/* Define if you have the `setvbuf' function. */
-#undef HAVE_SETVBUF
-
/* Define if you have the `sigaction' function. */
#undef HAVE_SIGACTION
@@ -248,9 +172,6 @@
/* Define if you have the `strdup' function. */
#define HAVE_STRDUP
-/* Define if you have the `strftime' function. */
-#define HAVE_STRFTIME
-
/* Define if you have the `stricmp' function. */
#define HAVE_STRICMP
@@ -260,9 +181,6 @@
/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H
-/* Define if you have the `strstr' function. */
-#define HAVE_STRSTR
-
/* Define if you have the `strtok_r' function. */
#undef HAVE_STRTOK_R
@@ -299,30 +217,18 @@
/* Define if you have the <time.h> header file. */
#undef HAVE_TIME_H
-/* Define if you have the `uname' function. */
-#define HAVE_UNAME
-
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H
-/* Define if you have the <x509.h> header file. */
-#undef HAVE_X509_H
-
/* Name of package */
#undef PACKAGE
/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4
-/* The size of `long double', as computed by sizeof. */
-#undef SIZEOF_LONG_DOUBLE
-
/* The size of `long long', as computed by sizeof. */
#undef SIZEOF_LONG_LONG
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4
@@ -357,9 +263,6 @@
/* Define to `int' if <sys/types.h> does not define. */
#undef ssize_t
-/* Define if you have the ioctl function. */
-#define HAVE_IOCTL
-
/* Define if you have a working ioctl FIONBIO function. */
#define HAVE_IOCTL_FIONBIO
@@ -384,33 +287,6 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV ssize_t
-/* Define 1 if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 int
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 void
-
-/* Define if the type pointed by arg 2 for recvfrom is void. */
-#define RECVFROM_TYPE_ARG2_IS_VOID
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 size_t
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV ssize_t
-
/* Define if you have the send function. */
#define HAVE_SEND 1
diff --git a/lib/config-tpf.h b/lib/config-tpf.h
deleted file mode 100644
index cce06cedd..000000000
--- a/lib/config-tpf.h
+++ /dev/null
@@ -1,680 +0,0 @@
-#ifndef HEADER_CURL_CONFIG_TPF_H
-#define HEADER_CURL_CONFIG_TPF_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* ================================================================ */
-/* Hand crafted config file for TPF */
-/* ================================================================ */
-
-/* ---------------------------------------------------------------- */
-/* FEATURES, FUNCTIONS, and DEFINITIONS */
-/* ---------------------------------------------------------------- */
-
-/* NOTE: Refer also to the .mak file for some of the flags below */
-
-/* to disable cookies support */
-/* #undef CURL_DISABLE_COOKIES */
-
-/* to disable cryptographic authentication */
-/* #undef CURL_DISABLE_CRYPTO_AUTH */
-
-/* to disable DICT */
-/* #undef CURL_DISABLE_DICT */
-
-/* to disable FILE */
-/* #undef CURL_DISABLE_FILE */
-
-/* to disable FTP */
-/* #undef CURL_DISABLE_FTP */
-
-/* to disable HTTP */
-/* #undef CURL_DISABLE_HTTP */
-
-/* to disable LDAP */
-/* #undef CURL_DISABLE_LDAP */
-
-/* to disable TELNET */
-/* #undef CURL_DISABLE_TELNET */
-
-/* to disable TFTP */
-/* #undef CURL_DISABLE_TFTP */
-
-/* to disable verbose strings */
-/* #undef CURL_DISABLE_VERBOSE_STRINGS */
-
-/* lber dynamic library file */
-/* #undef DL_LBER_FILE */
-
-/* ldap dynamic library file */
-/* #undef DL_LDAP_FILE */
-
-/* your Entropy Gathering Daemon socket pathname */
-/* #undef EGD_SOCKET */
-
-/* Define if you want to enable IPv6 support */
-/* #undef ENABLE_IPV6 */
-
-/* Define if struct sockaddr_in6 has the sin6_scope_id member */
-/* #undef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID */
-
-/* Define to 1 if you have the alarm function. */
-#define HAVE_ALARM 1
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have the <arpa/tftp.h> header file. */
-/* #undef HAVE_ARPA_TFTP_H */
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the `basename' function. */
-#define HAVE_BASENAME 1
-
-/* Define to 1 if you have the `closesocket' function. */
-/* #undef HAVE_CLOSESOCKET */
-
-/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
-/* #undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA */
-#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the fcntl function. */
-#define HAVE_FCNTL 1
-
-/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
-#define HAVE_FCNTL_O_NONBLOCK 1
-
-/* Define to 1 if you have the `ftruncate' function. */
-#define HAVE_FTRUNCATE 1
-
-/* Define if getaddrinfo exists and works */
-/* #undef HAVE_GETADDRINFO */
-
-/* Define to 1 if you have the `geteuid' function. */
-#define HAVE_GETEUID 1
-
-/* If you have gethostbyname */
-#define HAVE_GETHOSTBYNAME 1
-
-/* Define to 1 if you have the `gethostbyname_r' function. */
-/* #undef HAVE_GETHOSTBYNAME_R */
-
-/* gethostbyname_r() takes 3 args */
-/* #undef HAVE_GETHOSTBYNAME_R_3 */
-
-/* gethostbyname_r() takes 5 args */
-/* #undef HAVE_GETHOSTBYNAME_R_5 */
-
-/* gethostbyname_r() takes 6 args */
-/* #undef HAVE_GETHOSTBYNAME_R_6 1 */
-
-/* Define to 1 if you have the `getpass_r' function. */
-/* #undef HAVE_GETPASS_R */
-
-/* Define to 1 if you have the `getprotobyname' function. */
-/* #undef HAVE_GETPROTOBYNAME */
-
-/* Define to 1 if you have the `getpwuid' function. */
-#define HAVE_GETPWUID 1
-
-/* Define to 1 if you have the `getrlimit' function. */
-/* #undef HAVE_GETRLIMIT */
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#define HAVE_GETTIMEOFDAY 1
-
-/* we have a glibc-style strerror_r() */
-/* #undef HAVE_GLIBC_STRERROR_R */
-#define HAVE_GLIBC_STRERROR_R 1
-
-/* Define to 1 if you have the `gmtime_r' function. */
-#define HAVE_GMTIME_R 1
-
-/* if you have the gssapi libraries */
-/* #undef HAVE_GSSAPI */
-
-/* if you have the GNU gssapi libraries */
-/* #undef HAVE_GSSGNU */
-
-/* if you have the Heimdal gssapi libraries */
-/* #undef HAVE_GSSHEIMDAL */
-
-/* if you have the MIT gssapi libraries */
-/* #undef HAVE_GSSMIT */
-
-/* Define to 1 if you have the `iconv' functions. */
-#define HAVE_ICONV 1
-
-/* Define to 1 if you have the `idna_strerror' function. */
-/* #undef HAVE_IDNA_STRERROR */
-
-/* Define to 1 if you have the `idn_free' function. */
-/* #undef HAVE_IDN_FREE */
-
-/* Define to 1 if you have the <idn-free.h> header file. */
-/* #undef HAVE_IDN_FREE_H */
-
-/* Define to 1 if you have the `inet_addr' function. */
-#define HAVE_INET_ADDR 1
-
-/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
-/* #undef HAVE_INET_NTOP */
-
-/* Define to 1 if you have a IPv6 capable working inet_pton function. */
-/* #undef HAVE_INET_PTON */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the ioctl function. */
-#define HAVE_IOCTL 1
-
-/* Define to 1 if you have a working ioctl FIONBIO function. */
-#define HAVE_IOCTL_FIONBIO 1
-
-/* Define to 1 if you have the ioctlsocket function. */
-/* #undef HAVE_IOCTLSOCKET */
-
-/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
-/* #undef HAVE_IOCTLSOCKET_FIONBIO */
-
-/* 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. */
-/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
-
-/* 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 <libgen.h> header file. */
-/* #undef HAVE_LIBGEN_H 1 */
-
-/* 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 `socket' library (-lsocket). */
-/* #undef HAVE_LIBSOCKET */
-
-/* if zlib is available */
-/* #undef HAVE_LIBZ */
-
-/* if your compiler supports LL */
-#define HAVE_LL 1
-
-/* Define to 1 if you have the <locale.h> header file. */
-#define HAVE_LOCALE_H 1
-
-/* Define to 1 if you have the `localtime_r' function. */
-#define HAVE_LOCALTIME_R 1
-
-/* Define to 1 if the compiler supports the 'long long' data type. */
-#define HAVE_LONGLONG 1
-
-/* Define to 1 if you need the malloc.h header file even with stdlib.h */
-/* #undef NEED_MALLOC_H */
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#define HAVE_NETDB_H 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-/* undef HAVE_NETINET_TCP_H */
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define if NI_WITHSCOPEID exists and works */
-/* #undef HAVE_NI_WITHSCOPEID */
-
-/* we have no strerror_r() proto */
-/* #undef HAVE_NO_STRERROR_R_DECL */
-
-/* Define to 1 if you have the <openssl/crypto.h> header file. */
-/* #undef HAVE_OPENSSL_CRYPTO_H */
-#define HAVE_OPENSSL_CRYPTO_H 1
-
-/* Define to 1 if you have the <openssl/err.h> header file. */
-/* #undef HAVE_OPENSSL_ERR_H */
-#define HAVE_OPENSSL_ERR_H 1
-
-/* Define to 1 if you have the <openssl/pem.h> header file. */
-/* #undef HAVE_OPENSSL_PEM_H */
-#define HAVE_OPENSSL_PEM_H 1
-
-/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
-/* #undef HAVE_OPENSSL_PKCS12_H */
-#define HAVE_OPENSSL_PKCS12_H 1
-
-/* Define to 1 if you have the <openssl/rsa.h> header file. */
-/* #undef HAVE_OPENSSL_RSA_H */
-#define HAVE_OPENSSL_RSA_H 1
-
-/* Define to 1 if you have the <openssl/ssl.h> header file. */
-/* #undef HAVE_OPENSSL_SSL_H */
-#define HAVE_OPENSSL_SSL_H 1
-
-/* Define to 1 if you have the <openssl/x509.h> header file. */
-/* #undef HAVE_OPENSSL_X509_H */
-#define HAVE_OPENSSL_X509_H 1
-
-/* Define to 1 if you have the <pem.h> header file. */
-/* #undef HAVE_PEM_H */
-#define HAVE_PEM_H 1
-
-/* Define to 1 if you have the `pipe' function. */
-#define HAVE_PIPE 1
-
-/* Define to 1 if you have the `poll' function. */
-/* #undef HAVE_POLL */
-
-/* If you have a fine poll */
-/* #undef HAVE_POLL_FINE */
-
-/* we have a POSIX-style strerror_r() */
-/* #undef HAVE_POSIX_STRERROR_R */
-
-/* Define to 1 if you have the <pwd.h> header file. */
-#define HAVE_PWD_H 1
-
-/* Define to 1 if you have the `RAND_egd' function. */
-/* #undef HAVE_RAND_EGD */
-#define HAVE_RAND_EGD 1
-
-/* Define to 1 if you have the `RAND_screen' function. */
-/* #undef HAVE_RAND_SCREEN */
-
-/* Define to 1 if you have the `RAND_status' function. */
-/* #undef HAVE_RAND_STATUS */
-#define HAVE_RAND_STATUS 1
-
-/* Define to 1 if you have the `select' function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if you have the <setjmp.h> header file. */
-#define HAVE_SETJMP_H 1
-
-/* Define to 1 if you have the `setlocale' function. */
-#define HAVE_SETLOCALE 1
-
-/* Define to 1 if you have the `setrlimit' function. */
-#define HAVE_SETRLIMIT 1
-
-/* Define to 1 if you have the setsockopt function. */
-/* #undef HAVE_SETSOCKOPT */
-
-/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
-/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
-
-/* Define to 1 if you have the `sigaction' function. */
-#define HAVE_SIGACTION 1
-
-/* Define to 1 if you have the `siginterrupt' function. */
-/* #undef HAVE_SIGINTERRUPT */
-
-/* Define to 1 if you have the `signal' function. */
-#define HAVE_SIGNAL 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* If you have sigsetjmp */
-/* #undef HAVE_SIGSETJMP */
-
-/* Define to 1 if you have the `socket' function. */
-#define HAVE_SOCKET 1
-
-/* 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 <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#define HAVE_STRCASECMP 1
-
-/* Define to 1 if you have the `strcmpi' function. */
-/* #undef HAVE_STRCMPI */
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror_r' function. */
-#define HAVE_STRERROR_R 1
-
-/* Define to 1 if you have the `stricmp' function. */
-/* #undef HAVE_STRICMP */
-#define HAVE_STRICMP 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strstr' function. */
-#define HAVE_STRSTR 1
-
-/* Define to 1 if you have the `strtok_r' function. */
-#define HAVE_STRTOK_R 1
-
-/* Define to 1 if you have the `strtoll' function. */
-#define HAVE_STRTOLL 1
-
-/* if struct sockaddr_storage is defined */
-/* #undef HAVE_STRUCT_SOCKADDR_STORAGE */
-
-/* Define this if you have struct timeval */
-#define HAVE_STRUCT_TIMEVAL 1
-
-/* Define to 1 if you have the <sys/filio.h> header file. */
-#define HAVE_SYS_FILIO_H 1
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-/* #undef HAVE_SYS_POLL_H */
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#define HAVE_SYS_RESOURCE_H 1
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#define HAVE_SYS_SELECT_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-/* #undef HAVE_SYS_SOCKIO_H */
-#define HAVE_SYS_SOCKIO_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/utime.h> header file. */
-/* #undef HAVE_SYS_UTIME_H */
-
-/* Define to 1 if you have the <termios.h> header file. */
-/* #undef HAVE_TERMIOS_H */
-
-/* Define to 1 if you have the <termio.h> header file. */
-/* #undef HAVE_TERMIO_H */
-
-/* Define to 1 if you have the <time.h> header file. */
-#define HAVE_TIME_H 1
-
-/* Define to 1 if you have the <tld.h> header file. */
-/* #undef HAVE_TLD_H */
-
-/* Define to 1 if you have the `tld_strerror' function. */
-/* #undef HAVE_TLD_STRERROR */
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `utime' function. */
-#define HAVE_UTIME 1
-
-/* Define to 1 if you have the <utime.h> header file. */
-#define HAVE_UTIME_H 1
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-/* #undef HAVE_WINSOCK2_H */
-
-/* Define this symbol if your OS supports changing the contents of argv */
-/* #undef HAVE_WRITABLE_ARGV */
-
-/* Define to 1 if you have the ws2tcpip.h header file. */
-/* #undef HAVE_WS2TCPIP_H */
-
-/* Define to 1 if you have the <x509.h> header file. */
-/* #undef HAVE_X509_H */
-
-/* if you have the zlib.h header file */
-/* #undef HAVE_ZLIB_H */
-
-/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
-/* #undef NEED_REENTRANT */
-
-/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
-/* #undef NEED_THREAD_SAFE */
-
-/* cpu-machine-OS */
-#define OS "s390x-ibm-tpf"
-
-/* Name of package */
-#define PACKAGE "curl"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT \
- "a suitable curl mailing list => https://curl.se/mail/"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "curl"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "curl -"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "curl"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "-"
-
-/* a suitable file to read random data from */
-/* #undef RANDOM_FILE */
-
-/* Define to the type of arg 1 for `select'. */
-#define SELECT_TYPE_ARG1 int
-
-/* Define to the type of args 2, 3 and 4 for `select'. */
-#define SELECT_TYPE_ARG234 (fd_set *)
-
-/* Define to the type of arg 5 for `select'. */
-#define SELECT_TYPE_ARG5 (struct timeval *)
-
-/* The size of `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of `off_t', as computed by sizeof. */
-#define SIZEOF_OFF_T 8
-
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
-/* Define to the size of `long', as computed by sizeof. */
-#define SIZEOF_LONG 8
-
-/* The size of `size_t', as computed by sizeof. */
-#define SIZEOF_SIZE_T 8
-
-/* The size of `time_t', as computed by sizeof. */
-#define SIZEOF_TIME_T 8
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Define if you want to enable ares support */
-/* #undef USE_ARES */
-
-/* if GnuTLS is enabled */
-/* #undef USE_GNUTLS */
-
-/* If you want to build curl with the built-in manual */
-/* #undef USE_MANUAL */
-
-/* if OpenSSL is in use */
-/* #undef USE_OPENSSL */
-
-/* if SSL is enabled */
-/* #undef USE_OPENSSL */
-
-/* to enable SSPI support */
-/* #undef USE_WINDOWS_SSPI */
-
-/* Version number of package */
-#define VERSION "not-used"
-
-/* Define to avoid automatic inclusion of winsock.h */
-/* #undef WIN32_LEAN_AND_MEAN */
-
-/* Define to 1 if on AIX 3.
- System headers sometimes define this.
- We just want to avoid a redefinition error message. */
-#ifndef _ALL_SOURCE
-/* # undef _ALL_SOURCE */
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* type to use in place of in_addr_t if not defined */
-/* #undef in_addr_t */
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* the signed version of size_t */
-/* #undef ssize_t */
-
-/* Define to 1 if you have the recv function. */
-#define HAVE_RECV 1
-
-/* Define to the type of arg 1 for recv. */
-#define RECV_TYPE_ARG1 int
-
-/* Define to the type of arg 2 for recv. */
-#define RECV_TYPE_ARG2 char *
-
-/* Define to the type of arg 3 for recv. */
-#define RECV_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recv. */
-#define RECV_TYPE_ARG4 int
-
-/* Define to the function return type for recv. */
-#define RECV_TYPE_RETV int
-
-/* Define to 1 if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 int
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
-/* Define to 1 if you have the send function. */
-#define HAVE_SEND 1
-
-/* Define to the type of arg 1 for send. */
-#define SEND_TYPE_ARG1 int
-
-/* Define to the type qualifier of arg 2 for send. */
-#define SEND_QUAL_ARG2 const
-
-/* Define to the type of arg 2 for send. */
-#define SEND_TYPE_ARG2 char *
-
-/* Define to the type of arg 3 for send. */
-#define SEND_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for send. */
-#define SEND_TYPE_ARG4 int
-
-/* Define to the function return type for send. */
-#define SEND_TYPE_RETV int
-
-#define CURL_DOES_CONVERSIONS
-#ifndef CURL_ICONV_CODESET_OF_HOST
-#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
-#endif
-
-
-#endif /* HEADER_CURL_CONFIG_TPF_H */
diff --git a/lib/config-vxworks.h b/lib/config-vxworks.h
deleted file mode 100644
index af1d87345..000000000
--- a/lib/config-vxworks.h
+++ /dev/null
@@ -1,811 +0,0 @@
-#ifndef HEADER_CURL_CONFIG_VXWORKS_H
-#define HEADER_CURL_CONFIG_VXWORKS_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* =============================================================== */
-/* Hand crafted config file for VxWorks */
-/* =============================================================== */
-
-/* Location of default ca bundle */
-/* #undef CURL_CA_BUNDLE */
-
-/* Location of default ca path */
-/* #undef CURL_CA_PATH */
-
-/* to disable cookies support */
-/* #undef CURL_DISABLE_COOKIES */
-
-/* to disable cryptographic authentication */
-/* #undef CURL_DISABLE_CRYPTO_AUTH */
-
-/* to disable DICT */
-/* #undef CURL_DISABLE_DICT */
-
-/* to disable FILE */
-/* #undef CURL_DISABLE_FILE */
-
-/* to disable FTP */
-#define CURL_DISABLE_FTP 1
-
-/* to disable HTTP */
-/* #undef CURL_DISABLE_HTTP */
-
-/* to disable LDAP */
-#define CURL_DISABLE_LDAP 1
-
-/* to disable LDAPS */
-#define CURL_DISABLE_LDAPS 1
-
-/* to disable NTLM authentication */
-#define CURL_DISABLE_NTLM 1
-
-/* to disable proxies */
-/* #undef CURL_DISABLE_PROXY */
-
-/* to disable TELNET */
-#define CURL_DISABLE_TELNET 1
-
-/* to disable TFTP */
-#define CURL_DISABLE_TFTP 1
-
-/* to disable verbose strings */
-/* #undef CURL_DISABLE_VERBOSE_STRINGS */
-
-/* Definition to make a library symbol externally visible. */
-/* #undef CURL_EXTERN_SYMBOL */
-
-/* Use Windows LDAP implementation */
-/* #undef USE_WIN32_LDAP */
-
-/* your Entropy Gathering Daemon socket pathname */
-/* #undef EGD_SOCKET */
-
-/* Define if you want to enable IPv6 support */
-#define ENABLE_IPV6 1
-
-/* Define to 1 if you have the alarm function. */
-#define HAVE_ALARM 1
-
-/* Define to 1 if you have the <alloca.h> header file. */
-#define HAVE_ALLOCA_H 1
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have the <arpa/tftp.h> header file. */
-/* #undef HAVE_ARPA_TFTP_H */
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the `basename' function. */
-/* #undef HAVE_BASENAME */
-
-/* Define to 1 if bool is an available type. */
-#define HAVE_BOOL_T 1
-
-/* Define to 1 if you have the clock_gettime function and monotonic timer. */
-/* #undef HAVE_CLOCK_GETTIME_MONOTONIC */
-
-/* Define to 1 if you have the `closesocket' function. */
-/* #undef HAVE_CLOSESOCKET */
-
-/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
-#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define to 1 if you have the fcntl function. */
-#define HAVE_FCNTL 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
-#define HAVE_FCNTL_O_NONBLOCK 1
-
-/* Define to 1 if you have the freeaddrinfo function. */
-#define HAVE_FREEADDRINFO 1
-
-/* Define to 1 if you have the ftruncate function. */
-#define HAVE_FTRUNCATE 1
-
-/* Define to 1 if you have a working getaddrinfo function. */
-#define HAVE_GETADDRINFO 1
-
-/* Define to 1 if you have the `geteuid' function. */
-/* #undef HAVE_GETEUID */
-
-/* Define to 1 if you have the gethostbyname function. */
-#define HAVE_GETHOSTBYNAME 1
-
-/* Define to 1 if you have the gethostbyname_r function. */
-/* #undef HAVE_GETHOSTBYNAME_R */
-
-/* gethostbyname_r() takes 3 args */
-/* #undef HAVE_GETHOSTBYNAME_R_3 */
-
-/* gethostbyname_r() takes 5 args */
-/* #undef HAVE_GETHOSTBYNAME_R_5 */
-
-/* gethostbyname_r() takes 6 args */
-/* #undef HAVE_GETHOSTBYNAME_R_6 */
-
-/* Define to 1 if you have the gethostname function. */
-#define HAVE_GETHOSTNAME 1
-
-/* Define to 1 if you have a working getifaddrs function. */
-/* #undef HAVE_GETIFADDRS */
-
-/* Define to 1 if you have the `getpass_r' function. */
-/* #undef HAVE_GETPASS_R */
-
-/* Define to 1 if you have the `getppid' function. */
-#define HAVE_GETPPID 1
-
-/* Define to 1 if you have the `getprotobyname' function. */
-#define HAVE_GETPROTOBYNAME 1
-
-/* Define to 1 if you have the `getpwuid' function. */
-/* #undef HAVE_GETPWUID */
-
-/* Define to 1 if you have the `getrlimit' function. */
-#define HAVE_GETRLIMIT 1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-/* #undef HAVE_GETTIMEOFDAY */
-
-/* Define to 1 if you have a working glibc-style strerror_r function. */
-/* #undef HAVE_GLIBC_STRERROR_R */
-
-/* Define to 1 if you have a working gmtime_r function. */
-#define HAVE_GMTIME_R 1
-
-/* if you have the gssapi libraries */
-/* #undef HAVE_GSSAPI */
-
-/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
-/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */
-
-/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
-/* #undef HAVE_GSSAPI_GSSAPI_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 */
-/* #undef HAVE_GSSGNU */
-
-/* if you have the Heimdal gssapi libraries */
-/* #undef HAVE_GSSHEIMDAL */
-
-/* if you have the MIT gssapi libraries */
-/* #undef HAVE_GSSMIT */
-
-/* Define to 1 if you have the `idna_strerror' function. */
-/* #undef HAVE_IDNA_STRERROR */
-
-/* Define to 1 if you have the `idn_free' function. */
-/* #undef HAVE_IDN_FREE */
-
-/* Define to 1 if you have the <idn-free.h> header file. */
-/* #undef HAVE_IDN_FREE_H */
-
-/* Define to 1 if you have the <ifaddrs.h> header file. */
-/* #undef HAVE_IFADDRS_H */
-
-/* Define to 1 if you have the `inet_addr' function. */
-#define HAVE_INET_ADDR 1
-
-/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
-/* #undef HAVE_INET_NTOP */
-
-/* Define to 1 if you have a IPv6 capable working inet_pton function. */
-/* #undef HAVE_INET_PTON */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the ioctl function. */
-#define HAVE_IOCTL 1
-
-/* Define to 1 if you have the ioctlsocket function. */
-/* #undef HAVE_IOCTLSOCKET */
-
-/* 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.
- */
-/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
-
-/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
-/* #undef HAVE_IOCTLSOCKET_FIONBIO */
-
-/* Define to 1 if you have a working ioctl FIONBIO function. */
-#define HAVE_IOCTL_FIONBIO 1
-
-/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
-#define HAVE_IOCTL_SIOCGIFADDR 1
-
-/* Define to 1 if you have the <io.h> header file. */
-#define HAVE_IO_H 1
-
-/* 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 ldapssl.h header file. */
-/* #undef HAVE_LDAPSSL_H */
-
-/* Define to 1 if you have the ldap.h header file. */
-/* #undef HAVE_LDAP_H */
-
-/* Use LDAPS implementation */
-/* #undef HAVE_LDAP_SSL */
-
-/* Define to 1 if you have the ldap_ssl.h header file. */
-/* #undef HAVE_LDAP_SSL_H */
-
-/* Define to 1 if you have the `ldap_url_parse' function. */
-/* #undef HAVE_LDAP_URL_PARSE */
-
-/* Define to 1 if you have the <libgen.h> header file. */
-/* #undef HAVE_LIBGEN_H */
-
-/* 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 `socket' library (-lsocket). */
-/* #undef HAVE_LIBSOCKET */
-
-/* Define to 1 if you have the `ssh2' library (-lssh2). */
-/* #undef HAVE_LIBSSH2 */
-
-/* Define to 1 if you have the <libssh2.h> header file. */
-/* #undef HAVE_LIBSSH2_H */
-
-/* Define to 1 if you have the `libssh2_version' function. */
-/* #undef HAVE_LIBSSH2_VERSION */
-
-/* if zlib is available */
-#define HAVE_LIBZ 1
-
-/* if your compiler supports LL */
-#define HAVE_LL 1
-
-/* Define to 1 if you have the <locale.h> header file. */
-#define HAVE_LOCALE_H 1
-
-/* Define to 1 if you have a working localtime_r function. */
-#define HAVE_LOCALTIME_R 1
-
-/* Define to 1 if the compiler supports the 'long long' data type. */
-#define HAVE_LONGLONG 1
-
-/* Define to 1 if you have the malloc.h header file. */
-#define HAVE_MALLOC_H 1
-
-/* Define to 1 if you have the memory.h header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the MSG_NOSIGNAL flag. */
-/* #undef HAVE_MSG_NOSIGNAL */
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#define HAVE_NETDB_H 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-#define HAVE_NETINET_TCP_H 1
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define to 1 if NI_WITHSCOPEID exists and works. */
-/* #undef HAVE_NI_WITHSCOPEID */
-
-/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE
- */
-/* #undef HAVE_OLD_GSSMIT */
-
-/* Define to 1 if you have the <openssl/crypto.h> header file. */
-#define HAVE_OPENSSL_CRYPTO_H 1
-
-/* Define to 1 if you have the <openssl/err.h> header file. */
-#define HAVE_OPENSSL_ERR_H 1
-
-/* Define to 1 if you have the <openssl/pem.h> header file. */
-#define HAVE_OPENSSL_PEM_H 1
-
-/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
-#define HAVE_OPENSSL_PKCS12_H 1
-
-/* Define to 1 if you have the <openssl/rsa.h> header file. */
-#define HAVE_OPENSSL_RSA_H 1
-
-/* Define to 1 if you have the <openssl/ssl.h> header file. */
-#define HAVE_OPENSSL_SSL_H 1
-
-/* Define to 1 if you have the <openssl/x509.h> header file. */
-#define HAVE_OPENSSL_X509_H 1
-
-/* Define to 1 if you have the <pem.h> header file. */
-/* #undef HAVE_PEM_H */
-
-/* Define to 1 if you have the `pipe' function. */
-#define HAVE_PIPE 1
-
-/* Define to 1 if you have a working poll function. */
-/* #undef HAVE_POLL */
-
-/* If you have a fine poll */
-/* #undef HAVE_POLL_FINE */
-
-/* Define to 1 if you have the <poll.h> header file. */
-/* #undef HAVE_POLL_H */
-
-/* Define to 1 if you have a working POSIX-style strerror_r function. */
-/* #undef HAVE_POSIX_STRERROR_R */
-
-/* Define to 1 if you have the <pwd.h> header file. */
-/* #undef HAVE_PWD_H */
-
-/* Define to 1 if you have the `RAND_egd' function. */
-#define HAVE_RAND_EGD 1
-
-/* Define to 1 if you have the `RAND_screen' function. */
-/* #undef HAVE_RAND_SCREEN */
-
-/* Define to 1 if you have the `RAND_status' function. */
-#define HAVE_RAND_STATUS 1
-
-/* Define to 1 if you have the recv function. */
-#define HAVE_RECV 1
-
-/* Define to 1 if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to 1 if you have the select function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if you have the send function. */
-#define HAVE_SEND 1
-
-/* Define to 1 if you have the <setjmp.h> header file. */
-#define HAVE_SETJMP_H 1
-
-/* Define to 1 if you have the `setlocale' function. */
-#define HAVE_SETLOCALE 1
-
-/* Define to 1 if you have the `setmode' function. */
-#define HAVE_SETMODE 1
-
-/* Define to 1 if you have the `setrlimit' function. */
-#define HAVE_SETRLIMIT 1
-
-/* Define to 1 if you have the setsockopt function. */
-#define HAVE_SETSOCKOPT 1
-
-/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
-/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
-
-/* Define to 1 if you have the sigaction function. */
-#define HAVE_SIGACTION 1
-
-/* Define to 1 if you have the siginterrupt function. */
-#define HAVE_SIGINTERRUPT 1
-
-/* Define to 1 if you have the signal function. */
-#define HAVE_SIGNAL 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define to 1 if you have the sigsetjmp function or macro. */
-/* #undef HAVE_SIGSETJMP */
-
-/* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */
-#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
-
-/* Define to 1 if you have the `socket' function. */
-#define HAVE_SOCKET 1
-
-/* Define to 1 if you have the <ssl.h> header file. */
-/* #undef HAVE_SSL_H */
-
-/* Define to 1 if you have the <stdbool.h> header file. */
-#define HAVE_STDBOOL_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-/* #undef HAVE_STDINT_H */
-
-/* Define to 1 if you have the <stdio.h> header file. */
-#define HAVE_STDIO_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the strcasecmp function. */
-#define HAVE_STRCASECMP 1
-
-/* Define to 1 if you have the strcmpi function. */
-/* #undef HAVE_STRCMPI */
-
-/* Define to 1 if you have the strdup function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the strerror_r function. */
-#define HAVE_STRERROR_R 1
-
-/* Define to 1 if you have the stricmp function. */
-/* #undef HAVE_STRICMP */
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the strncmpi function. */
-/* #undef HAVE_STRNCMPI */
-
-/* Define to 1 if you have the strnicmp function. */
-/* #undef HAVE_STRNICMP */
-
-/* Define to 1 if you have the <stropts.h> header file. */
-/* #undef HAVE_STROPTS_H */
-
-/* Define to 1 if you have the strstr function. */
-#define HAVE_STRSTR 1
-
-/* Define to 1 if you have the strtok_r function. */
-#define HAVE_STRTOK_R 1
-
-/* Define to 1 if you have the strtoll function. */
-/* #undef HAVE_STRTOLL */
-
-/* if struct sockaddr_storage is defined */
-#define HAVE_STRUCT_SOCKADDR_STORAGE 1
-
-/* Define to 1 if you have the timeval struct. */
-#define HAVE_STRUCT_TIMEVAL 1
-
-/* Define to 1 if you have the <sys/filio.h> header file. */
-/* #undef HAVE_SYS_FILIO_H */
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-/* #undef HAVE_SYS_PARAM_H */
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-/* #undef HAVE_SYS_POLL_H */
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#define HAVE_SYS_RESOURCE_H 1
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-/* #undef HAVE_SYS_SELECT_H */
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-/* #undef HAVE_SYS_SOCKIO_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-/* #undef HAVE_SYS_TIME_H */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#define HAVE_SYS_UIO_H 1
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#define HAVE_SYS_UN_H 1
-
-/* Define to 1 if you have the <sys/utime.h> header file. */
-#define HAVE_SYS_UTIME_H 1
-
-/* Define to 1 if you have the <termios.h> header file. */
-#define HAVE_TERMIOS_H 1
-
-/* Define to 1 if you have the <termio.h> header file. */
-#define HAVE_TERMIO_H 1
-
-/* Define to 1 if you have the <time.h> header file. */
-#define HAVE_TIME_H 1
-
-/* Define to 1 if you have the <tld.h> header file. */
-/* #undef HAVE_TLD_H */
-
-/* Define to 1 if you have the `tld_strerror' function. */
-/* #undef HAVE_TLD_STRERROR */
-
-/* Define to 1 if you have the `uname' function. */
-#define HAVE_UNAME 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `utime' function. */
-#define HAVE_UTIME 1
-
-/* Define to 1 if you have the <utime.h> header file. */
-#define HAVE_UTIME_H 1
-
-/* Define to 1 if compiler supports C99 variadic macro style. */
-#define HAVE_VARIADIC_MACROS_C99 1
-
-/* Define to 1 if compiler supports old gcc variadic macro style. */
-#define HAVE_VARIADIC_MACROS_GCC 1
-
-/* Define to 1 if you have a working vxworks-style strerror_r function. */
-#define HAVE_VXWORKS_STRERROR_R 1
-
-/* Define to 1 if you have the winber.h header file. */
-/* #undef HAVE_WINBER_H */
-
-/* Define to 1 if you have the windows.h header file. */
-/* #undef HAVE_WINDOWS_H */
-
-/* Define to 1 if you have the winldap.h header file. */
-/* #undef HAVE_WINLDAP_H */
-
-/* Define to 1 if you have the winsock2.h header file. */
-/* #undef HAVE_WINSOCK2_H */
-
-/* Define this symbol if your OS supports changing the contents of argv */
-#define HAVE_WRITABLE_ARGV 1
-
-/* Define to 1 if you have the writev function. */
-#define HAVE_WRITEV 1
-
-/* Define to 1 if you have the ws2tcpip.h header file. */
-/* #undef HAVE_WS2TCPIP_H */
-
-/* Define to 1 if you have the <x509.h> header file. */
-/* #undef HAVE_X509_H */
-
-/* if you have the zlib.h header file */
-#define HAVE_ZLIB_H 1
-
-/* Define to 1 if you need the lber.h header file even with ldap.h */
-/* #undef NEED_LBER_H */
-
-/* Define to 1 if you need the malloc.h header file even with stdlib.h */
-/* #undef NEED_MALLOC_H */
-
-/* Define to 1 if you need the memory.h header file even with stdlib.h */
-/* #undef NEED_MEMORY_H */
-
-/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
-/* #undef NEED_REENTRANT */
-
-/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
-/* #undef NEED_THREAD_SAFE */
-
-/* Define to 1 if the open function requires three arguments. */
-#define OPEN_NEEDS_ARG3 1
-
-/* cpu-machine-OS */
-#define OS "unknown-unknown-vxworks"
-
-/* Name of package */
-#define PACKAGE "curl"
-
-/* a suitable file to read random data from */
-#define RANDOM_FILE "/dev/urandom"
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 int
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 void
-
-/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 size_t
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
-/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 socklen_t
-
-/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
-/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
-/* Define to the type of arg 1 for recv. */
-#define RECV_TYPE_ARG1 int
-
-/* Define to the type of arg 2 for recv. */
-#define RECV_TYPE_ARG2 void *
-
-/* Define to the type of arg 3 for recv. */
-#define RECV_TYPE_ARG3 size_t
-
-/* Define to the type of arg 4 for recv. */
-#define RECV_TYPE_ARG4 int
-
-/* Define to the function return type for recv. */
-#define RECV_TYPE_RETV int
-
-/* Define to the type qualifier of arg 5 for select. */
-#define SELECT_QUAL_ARG5
-
-/* Define to the type of arg 1 for select. */
-#define SELECT_TYPE_ARG1 int
-
-/* Define to the type of args 2, 3 and 4 for select. */
-#define SELECT_TYPE_ARG234 fd_set *
-
-/* Define to the type of arg 5 for select. */
-#define SELECT_TYPE_ARG5 struct timeval *
-
-/* Define to the function return type for select. */
-#define SELECT_TYPE_RETV int
-
-/* Define to the type qualifier of arg 2 for send. */
-#define SEND_QUAL_ARG2 const
-
-/* Define to the type of arg 1 for send. */
-#define SEND_TYPE_ARG1 int
-
-/* Define to the type of arg 2 for send. */
-#define SEND_TYPE_ARG2 void *
-
-/* Define to the type of arg 3 for send. */
-#define SEND_TYPE_ARG3 size_t
-
-/* Define to the type of arg 4 for send. */
-#define SEND_TYPE_ARG4 int
-
-/* Define to the function return type for send. */
-#define SEND_TYPE_RETV int
-
-/* The size of `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* The size of `off_t', as computed by sizeof. */
-#define SIZEOF_OFF_T 8
-
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
-/* The size of `size_t', as computed by sizeof. */
-#define SIZEOF_SIZE_T 4
-
-/* The size of `time_t', as computed by sizeof. */
-#define SIZEOF_TIME_T 4
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to the type of arg 3 for strerror_r. */
-/* #undef STRERROR_R_TYPE_ARG3 */
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-/* #undef TIME_WITH_SYS_TIME */
-
-/* Define if you want to enable c-ares support */
-/* #undef USE_ARES */
-
-/* if GnuTLS is enabled */
-/* #undef USE_GNUTLS */
-
-/* if libSSH2 is in use */
-/* #undef USE_LIBSSH2 */
-
-/* If you want to build curl with the built-in manual */
-#define USE_MANUAL 1
-
-/* if NSS is enabled */
-/* #undef USE_NSS */
-
-/* if OpenSSL is in use */
-#define USE_OPENSSL 1
-
-/* Define to 1 if you are building a Windows target without large file
- support. */
-/* #undef USE_WIN32_LARGE_FILES */
-
-/* to enable SSPI support */
-/* #undef USE_WINDOWS_SSPI */
-
-/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
-/* #undef USE_YASSLEMUL */
-
-/* Define to avoid automatic inclusion of winsock.h */
-/* #undef WIN32_LEAN_AND_MEAN */
-
-/* Define to 1 if OS is AIX. */
-#ifndef _ALL_SOURCE
-/* # undef _ALL_SOURCE */
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Type to use in place of in_addr_t when system does not provide it. */
-/* #undef in_addr_t */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-/* #undef inline */
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* the signed version of size_t */
-/* #undef ssize_t */
-
-#endif /* HEADER_CURL_CONFIG_VXWORKS_H */
diff --git a/lib/config-win32.h b/lib/config-win32.h
index 89593a815..00e8663d2 100644
--- a/lib/config-win32.h
+++ b/lib/config-win32.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* ================================================================ */
@@ -42,11 +44,6 @@
/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
-/* Define if you have the <getopt.h> header file. */
-#if defined(__MINGW32__) || defined(__POCC__)
-#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
@@ -81,7 +78,8 @@
/* #define HAVE_SSL_H 1 */
/* Define to 1 if you have the <stdbool.h> header file. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1800)
+#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || \
+ defined(__MINGW64_VERSION_MAJOR)
#define HAVE_STDBOOL_H 1
#endif
@@ -124,8 +122,7 @@
#define HAVE_TIME_H 1
/* Define if you have the <unistd.h> header file. */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \
- defined(__POCC__)
+#if defined(__MINGW32__) || defined(__LCC__) || defined(__POCC__)
#define HAVE_UNISTD_H 1
#endif
@@ -142,6 +139,17 @@
#define HAVE_WS2TCPIP_H 1
#endif
+/* Define to 1 if you have the <setjmp.h> header file. */
+#define HAVE_SETJMP_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <libgen.h> header file. */
+#if defined(__MINGW64_VERSION_MAJOR)
+#define HAVE_LIBGEN_H 1
+#endif
+
/* ---------------------------------------------------------------- */
/* OTHER HEADER INFO */
/* ---------------------------------------------------------------- */
@@ -153,7 +161,8 @@
/* #define TIME_WITH_SYS_TIME 1 */
/* Define to 1 if bool is an available type. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1800)
+#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || \
+ defined(__MINGW64_VERSION_MAJOR)
#define HAVE_BOOL_T 1
#endif
@@ -164,11 +173,10 @@
/* Define if you have the closesocket function. */
#define HAVE_CLOSESOCKET 1
-/* Define if you don't have vprintf but do have _doprnt. */
-/* #define HAVE_DOPRNT 1 */
-
/* Define if you have the ftruncate function. */
-/* #define HAVE_FTRUNCATE 1 */
+#if defined(__MINGW64_VERSION_MAJOR)
+#define HAVE_FTRUNCATE 1
+#endif
/* Define to 1 if you have the `getpeername' function. */
#define HAVE_GETPEERNAME 1
@@ -179,37 +187,15 @@
/* Define if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1
-/* Define if you have the getpass function. */
-/* #define HAVE_GETPASS 1 */
-
-/* Define if you have the getservbyname function. */
-#define HAVE_GETSERVBYNAME 1
-
-/* Define if you have the getprotobyname function. */
-#define HAVE_GETPROTOBYNAME
-
/* Define if you have the gettimeofday function. */
/* #define HAVE_GETTIMEOFDAY 1 */
-/* Define if you have the inet_addr function. */
-#define HAVE_INET_ADDR 1
-
/* Define if you have the ioctlsocket function. */
#define HAVE_IOCTLSOCKET 1
/* Define if you have a working ioctlsocket FIONBIO function. */
#define HAVE_IOCTLSOCKET_FIONBIO 1
-/* Define if you have the RAND_screen function when using SSL. */
-#define HAVE_RAND_SCREEN 1
-
-/* Define if you have the `RAND_status' function when using SSL. */
-#define HAVE_RAND_STATUS 1
-
-/* Define if you have the `CRYPTO_cleanup_all_ex_data' function.
- This is present in OpenSSL versions after 0.9.6b */
-#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-
/* Define if you have the select function. */
#define HAVE_SELECT 1
@@ -219,9 +205,6 @@
/* Define if you have the setmode function. */
#define HAVE_SETMODE 1
-/* Define if you have the setvbuf function. */
-#define HAVE_SETVBUF 1
-
/* Define if you have the socket function. */
#define HAVE_SOCKET 1
@@ -233,20 +216,11 @@
/* Define if you have the strdup function. */
#define HAVE_STRDUP 1
-/* Define if you have the strftime function. */
-#define HAVE_STRFTIME 1
-
/* Define if you have the stricmp function. */
#define HAVE_STRICMP 1
-/* Define if you have the strnicmp function. */
-#define HAVE_STRNICMP 1
-
-/* Define if you have the strstr function. */
-#define HAVE_STRSTR 1
-
/* Define if you have the strtoll function. */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__POCC__) || \
+#if defined(__MINGW32__) || defined(__POCC__) || \
(defined(_MSC_VER) && (_MSC_VER >= 1800))
#define HAVE_STRTOLL 1
#endif
@@ -274,30 +248,6 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
-/* Define if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 SOCKET
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
/* Define if you have the send function. */
#define HAVE_SEND 1
@@ -319,6 +269,31 @@
/* Define to the function return type for send. */
#define SEND_TYPE_RETV int
+/* Define to 1 if you have the snprintf function. */
+#if defined(_MSC_VER) && (_MSC_VER >= 1900)
+#define HAVE_SNPRINTF 1
+#endif
+
+#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600 /* Vista */
+/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
+#define HAVE_INET_NTOP 1
+/* Define to 1 if you have a IPv6 capable working inet_pton function. */
+#define HAVE_INET_PTON 1
+#endif
+
+/* Define to 1 if you have the `basename' function. */
+#if defined(__MINGW64_VERSION_MAJOR)
+#define HAVE_BASENAME 1
+#endif
+
+/* Define to 1 if you have the strtok_r function. */
+#if defined(__MINGW64_VERSION_MAJOR)
+#define HAVE_STRTOK_R 1
+#endif
+
+/* Define to 1 if you have the signal function. */
+#define HAVE_SIGNAL 1
+
/* ---------------------------------------------------------------- */
/* TYPEDEF REPLACEMENTS */
/* ---------------------------------------------------------------- */
@@ -328,9 +303,7 @@
/* Define if ssize_t is not an available 'typedefed' type. */
#ifndef _SSIZE_T_DEFINED
-# if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \
- defined(__POCC__) || \
- defined(__MINGW32__)
+# if defined(__POCC__) || defined(__MINGW32__)
# elif defined(_WIN64)
# define _SSIZE_T_DEFINED
# define ssize_t __int64
@@ -347,15 +320,9 @@
/* Define to the size of `int', as computed by sizeof. */
#define SIZEOF_INT 4
-/* Define to the size of `long double', as computed by sizeof. */
-#define SIZEOF_LONG_DOUBLE 16
-
/* Define to the size of `long long', as computed by sizeof. */
/* #define SIZEOF_LONG_LONG 8 */
-/* Define to the size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
/* Define to the size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
@@ -369,6 +336,11 @@
/* Define to the size of `curl_off_t', as computed by sizeof. */
#define SIZEOF_CURL_OFF_T 8
+/* Define to the size of `off_t', as computed by sizeof. */
+#ifndef SIZEOF_OFF_T
+#define SIZEOF_OFF_T 8
+#endif
+
/* ---------------------------------------------------------------- */
/* BSD-style lwIP TCP/IP stack SPECIFIC */
/* ---------------------------------------------------------------- */
@@ -389,7 +361,6 @@
# undef SEND_TYPE_ARG3
# define HAVE_FREEADDRINFO
# define HAVE_GETADDRINFO
-# define HAVE_GETHOSTBYNAME
# define HAVE_GETHOSTBYNAME_R
# define HAVE_GETHOSTBYNAME_R_6
# define LWIP_POSIX_SOCKETS_IO_NAMES 0
@@ -440,7 +411,7 @@
#endif
/* Define if the compiler supports the 'long long' data type. */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || \
+#if defined(__MINGW32__) || \
(defined(_MSC_VER) && (_MSC_VER >= 1310)) || \
(defined(__BORLANDC__) && (__BORLANDC__ >= 0x561))
#define HAVE_LONGLONG 1
@@ -454,9 +425,6 @@
/* mingw-w64, mingw using >= MSVCR80, and visual studio >= 2005 (MSVCR80)
all default to 64-bit time_t unless _USE_32BIT_TIME_T is defined */
-#ifdef __MINGW32__
-# include <_mingw.h>
-#endif
#if defined(__MINGW64_VERSION_MAJOR) || \
(defined(__MINGW32__) && (__MSVCRT_VERSION__ >= 0x0800)) || \
(defined(_MSC_VER) && (_MSC_VER >= 1400))
@@ -583,11 +551,6 @@ Vista
/* Define if struct sockaddr_in6 has the sin6_scope_id member. */
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
-#if defined(HAVE_WINSOCK2_H) && defined(_WIN32_WINNT) && \
- (_WIN32_WINNT >= 0x0600)
-#define HAVE_STRUCT_POLLFD 1
-#endif
-
/* ---------------------------------------------------------------- */
/* LARGE FILE SUPPORT */
/* ---------------------------------------------------------------- */
@@ -604,10 +567,6 @@ Vista
# define USE_WIN32_LARGE_FILES
#endif
-#if defined(__WATCOMC__) && !defined(USE_WIN32_LARGE_FILES)
-# define USE_WIN32_LARGE_FILES
-#endif
-
#if defined(__POCC__)
# undef USE_WIN32_LARGE_FILES
#endif
@@ -616,6 +575,13 @@ Vista
# define USE_WIN32_SMALL_FILES
#endif
+/* Number of bits in a file offset, on hosts where this is settable. */
+#if defined(USE_WIN32_LARGE_FILES) && defined(__MINGW64_VERSION_MAJOR)
+# ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS 64
+# endif
+#endif
+
/* ---------------------------------------------------------------- */
/* DNS RESOLVER SPECIALTY */
/* ---------------------------------------------------------------- */
@@ -641,7 +607,7 @@ Vista
/* LDAP SUPPORT */
/* ---------------------------------------------------------------- */
-#if defined(CURL_HAS_NOVELL_LDAPSDK) || defined(CURL_HAS_MOZILLA_LDAPSDK)
+#if defined(CURL_HAS_NOVELL_LDAPSDK)
#undef USE_WIN32_LDAP
#define HAVE_LDAP_SSL_H 1
#define HAVE_LDAP_URL_PARSE 1
@@ -654,13 +620,6 @@ Vista
#define USE_WIN32_LDAP 1
#endif
-#if defined(__WATCOMC__) && defined(USE_WIN32_LDAP)
-#if __WATCOMC__ < 1280
-#define WINBERAPI __declspec(cdecl)
-#define WINLDAPAPI __declspec(cdecl)
-#endif
-#endif
-
#if defined(__POCC__) && defined(USE_WIN32_LDAP)
# define CURL_DISABLE_LDAP 1
#endif
@@ -678,7 +637,7 @@ Vista
/* ---------------------------------------------------------------- */
/* Define cpu-machine-OS */
-#undef OS
+#if !defined(OS)
#if defined(_M_IX86) || defined(__i386__) /* x86 (MSVC or gcc) */
#define OS "i386-pc-win32"
#elif defined(_M_X64) || defined(__x86_64__) /* x86_64 (MSVC >=2005 or gcc) */
@@ -692,6 +651,7 @@ Vista
#else
#define OS "unknown-pc-win32"
#endif
+#endif
/* Name of package */
#define PACKAGE "curl"
diff --git a/lib/config-win32ce.h b/lib/config-win32ce.h
index 889028b26..308bfe9e0 100644
--- a/lib/config-win32ce.h
+++ b/lib/config-win32ce.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* ================================================================ */
@@ -42,9 +44,6 @@
/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
-/* Define if you have the <getopt.h> header file. */
-/* #define HAVE_GETOPT_H 1 */
-
/* Define if you have the <io.h> header file. */
#define HAVE_IO_H 1
@@ -103,7 +102,7 @@
#define HAVE_TIME_H 1
/* Define if you have the <unistd.h> header file. */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__)
+#if defined(__MINGW32__) || defined(__LCC__)
#define HAVE_UNISTD_H 1
#endif
@@ -133,42 +132,21 @@
/* Define if you have the closesocket function. */
#define HAVE_CLOSESOCKET 1
-/* Define if you don't have vprintf but do have _doprnt. */
-/* #define HAVE_DOPRNT 1 */
-
/* Define if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1
-/* Define if you have the getpass function. */
-/* #define HAVE_GETPASS 1 */
-
-/* Define if you have the getservbyname function. */
-#define HAVE_GETSERVBYNAME 1
-
/* Define if you have the gettimeofday function. */
/* #define HAVE_GETTIMEOFDAY 1 */
-/* Define if you have the inet_addr function. */
-#define HAVE_INET_ADDR 1
-
/* Define if you have the ioctlsocket function. */
#define HAVE_IOCTLSOCKET 1
/* Define if you have a working ioctlsocket FIONBIO function. */
#define HAVE_IOCTLSOCKET_FIONBIO 1
-/* Define if you have the RAND_screen function when using SSL */
-#define HAVE_RAND_SCREEN 1
-
-/* Define if you have the `RAND_status' function when using SSL. */
-#define HAVE_RAND_STATUS 1
-
/* Define if you have the select function. */
#define HAVE_SELECT 1
-/* Define if you have the setvbuf function. */
-#define HAVE_SETVBUF 1
-
/* Define if you have the socket function. */
#define HAVE_SOCKET 1
@@ -178,20 +156,11 @@
/* Define if you have the strdup function. */
/* #define HAVE_STRDUP 1 */
-/* Define if you have the strftime function. */
-/* #define HAVE_STRFTIME 1 */
-
/* Define if you have the stricmp function. */
/* #define HAVE_STRICMP 1 */
-/* Define if you have the strnicmp function. */
-/* #define HAVE_STRNICMP 1 */
-
-/* Define if you have the strstr function. */
-#define HAVE_STRSTR 1
-
/* Define if you have the strtoll function. */
-#if defined(__MINGW32__) || defined(__WATCOMC__)
+#if defined(__MINGW32__)
#define HAVE_STRTOLL 1
#endif
@@ -216,30 +185,6 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
-/* Define if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 SOCKET
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
/* Define if you have the send function. */
#define HAVE_SEND 1
@@ -269,7 +214,7 @@
#define in_addr_t unsigned long
/* Define ssize_t if it is not an available 'typedefed' type */
-#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__)
+#if defined(__POCC__)
#elif defined(_WIN64)
#define ssize_t __int64
#else
@@ -283,15 +228,9 @@
/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4
-/* The size of `long double', as computed by sizeof. */
-#define SIZEOF_LONG_DOUBLE 16
-
/* The size of `long long', as computed by sizeof. */
/* #define SIZEOF_LONG_LONG 8 */
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
/* Define to the size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
diff --git a/lib/conncache.c b/lib/conncache.c
index fec1937f0..a557ac6dc 100644
--- a/lib/conncache.c
+++ b/lib/conncache.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012 - 2016, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -132,13 +134,11 @@ void Curl_conncache_destroy(struct conncache *connc)
}
/* creates a key to find a bundle for this connection */
-static void hashkey(struct connectdata *conn, char *buf,
- size_t len, /* something like 128 is fine */
- const char **hostp)
+static void hashkey(struct connectdata *conn, char *buf, size_t len)
{
const char *hostname;
long port = conn->remote_port;
-
+ DEBUGASSERT(len >= HASHKEY_SIZE);
#ifndef CURL_DISABLE_PROXY
if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
hostname = conn->http_proxy.host.name;
@@ -151,12 +151,12 @@ static void hashkey(struct connectdata *conn, char *buf,
else
hostname = conn->host.name;
- if(hostp)
- /* report back which name we used */
- *hostp = hostname;
-
- /* put the number first so that the hostname gets cut off if too long */
- msnprintf(buf, len, "%ld%s", port, hostname);
+ /* put the numbers first so that the hostname gets cut off if too long */
+#ifdef ENABLE_IPV6
+ msnprintf(buf, len, "%u/%ld/%s", conn->scope_id, port, hostname);
+#else
+ msnprintf(buf, len, "%ld/%s", port, hostname);
+#endif
Curl_strntolower(buf, buf, len);
}
@@ -179,27 +179,24 @@ size_t Curl_conncache_size(struct Curl_easy *data)
struct connectbundle *
Curl_conncache_find_bundle(struct Curl_easy *data,
struct connectdata *conn,
- struct conncache *connc,
- const char **hostp)
+ struct conncache *connc)
{
struct connectbundle *bundle = NULL;
CONNCACHE_LOCK(data);
if(connc) {
char key[HASHKEY_SIZE];
- hashkey(conn, key, sizeof(key), hostp);
+ hashkey(conn, key, sizeof(key));
bundle = Curl_hash_pick(&connc->hash, key, strlen(key));
}
return bundle;
}
-static bool conncache_add_bundle(struct conncache *connc,
- char *key,
- struct connectbundle *bundle)
+static void *conncache_add_bundle(struct conncache *connc,
+ char *key,
+ struct connectbundle *bundle)
{
- void *p = Curl_hash_add(&connc->hash, key, strlen(key), bundle);
-
- return p?TRUE:FALSE;
+ return Curl_hash_add(&connc->hash, key, strlen(key), bundle);
}
static void conncache_remove_bundle(struct conncache *connc,
@@ -235,10 +232,8 @@ CURLcode Curl_conncache_add_conn(struct Curl_easy *data)
DEBUGASSERT(conn);
/* *find_bundle() locks the connection cache */
- bundle = Curl_conncache_find_bundle(data, conn, data->state.conn_cache,
- NULL);
+ bundle = Curl_conncache_find_bundle(data, conn, data->state.conn_cache);
if(!bundle) {
- int rc;
char key[HASHKEY_SIZE];
result = bundle_create(&bundle);
@@ -246,10 +241,9 @@ CURLcode Curl_conncache_add_conn(struct Curl_easy *data)
goto unlock;
}
- hashkey(conn, key, sizeof(key), NULL);
- rc = conncache_add_bundle(data->state.conn_cache, key, bundle);
+ hashkey(conn, key, sizeof(key));
- if(!rc) {
+ if(!conncache_add_bundle(data->state.conn_cache, key, bundle)) {
bundle_destroy(bundle);
result = CURLE_OUT_OF_MEMORY;
goto unlock;
@@ -410,7 +404,7 @@ bool Curl_conncache_return_conn(struct Curl_easy *data,
conn_candidate = Curl_conncache_extract_oldest(data);
if(conn_candidate) {
/* the winner gets the honour of being disconnected */
- (void)Curl_disconnect(data, conn_candidate, /* dead_connection */ FALSE);
+ Curl_disconnect(data, conn_candidate, /* dead_connection */ FALSE);
}
}
@@ -504,7 +498,7 @@ Curl_conncache_extract_oldest(struct Curl_easy *data)
conn = curr->ptr;
if(!CONN_INUSE(conn) && !conn->bits.close &&
- !conn->bits.connect_only) {
+ !conn->connect_only) {
/* Set higher score for the age passed since the connection was used */
score = Curl_timediff(now, conn->lastused);
@@ -535,6 +529,7 @@ void Curl_conncache_close_all_connections(struct conncache *connc)
{
struct connectdata *conn;
char buffer[READBUFFER_MIN + 1];
+ SIGPIPE_VARIABLE(pipe_st);
if(!connc->closure_handle)
return;
connc->closure_handle->state.buffer = buffer;
@@ -542,27 +537,23 @@ void Curl_conncache_close_all_connections(struct conncache *connc)
conn = conncache_find_first_connection(connc);
while(conn) {
- SIGPIPE_VARIABLE(pipe_st);
sigpipe_ignore(connc->closure_handle, &pipe_st);
/* This will remove the connection from the cache */
connclose(conn, "kill all");
Curl_conncache_remove_conn(connc->closure_handle, conn, TRUE);
- (void)Curl_disconnect(connc->closure_handle, conn, FALSE);
+ Curl_disconnect(connc->closure_handle, conn, FALSE);
sigpipe_restore(&pipe_st);
conn = conncache_find_first_connection(connc);
}
connc->closure_handle->state.buffer = NULL;
- if(connc->closure_handle) {
- SIGPIPE_VARIABLE(pipe_st);
- sigpipe_ignore(connc->closure_handle, &pipe_st);
+ sigpipe_ignore(connc->closure_handle, &pipe_st);
- Curl_hostcache_clean(connc->closure_handle,
- connc->closure_handle->dns.hostcache);
- Curl_close(&connc->closure_handle);
- sigpipe_restore(&pipe_st);
- }
+ Curl_hostcache_clean(connc->closure_handle,
+ connc->closure_handle->dns.hostcache);
+ Curl_close(&connc->closure_handle);
+ sigpipe_restore(&pipe_st);
}
#if 0
diff --git a/lib/conncache.h b/lib/conncache.h
index e9c1e32f8..94664bc35 100644
--- a/lib/conncache.h
+++ b/lib/conncache.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2015 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>
*
* This software is licensed as described in the file COPYING, which
@@ -21,6 +21,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -29,6 +31,7 @@
* be shared.
*/
+#include <curl/curl.h>
#include "timeval.h"
struct connectdata;
@@ -87,8 +90,7 @@ void Curl_conncache_destroy(struct conncache *connc);
/* return the correct bundle, to a host or a proxy */
struct connectbundle *Curl_conncache_find_bundle(struct Curl_easy *data,
struct connectdata *conn,
- struct conncache *connc,
- const char **hostp);
+ struct conncache *connc);
/* returns number of connections currently held in the connection cache */
size_t Curl_conncache_size(struct Curl_easy *data);
diff --git a/lib/connect.c b/lib/connect.c
index 5252f9714..ac007c61b 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -74,6 +76,7 @@
#include "warnless.h"
#include "conncache.h"
#include "multihandle.h"
+#include "share.h"
#include "version_win32.h"
#include "quic.h"
#include "socks.h"
@@ -137,6 +140,14 @@ tcpkeepalive(struct Curl_easy *data,
(void *)&optval, sizeof(optval)) < 0) {
infof(data, "Failed to set TCP_KEEPIDLE on fd %d", sockfd);
}
+#elif defined(TCP_KEEPALIVE)
+ /* Mac OS X style */
+ optval = curlx_sltosi(data->set.tcp_keepidle);
+ KEEPALIVE_FACTOR(optval);
+ if(setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPALIVE,
+ (void *)&optval, sizeof(optval)) < 0) {
+ infof(data, "Failed to set TCP_KEEPALIVE on fd %d", sockfd);
+ }
#endif
#ifdef TCP_KEEPINTVL
optval = curlx_sltosi(data->set.tcp_keepintvl);
@@ -146,15 +157,6 @@ tcpkeepalive(struct Curl_easy *data,
infof(data, "Failed to set TCP_KEEPINTVL on fd %d", sockfd);
}
#endif
-#ifdef TCP_KEEPALIVE
- /* Mac OS X style */
- optval = curlx_sltosi(data->set.tcp_keepidle);
- KEEPALIVE_FACTOR(optval);
- if(setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPALIVE,
- (void *)&optval, sizeof(optval)) < 0) {
- infof(data, "Failed to set TCP_KEEPALIVE on fd %d", sockfd);
- }
-#endif
#endif
}
}
@@ -257,6 +259,9 @@ static CURLcode bindlocal(struct Curl_easy *data,
#ifdef IP_BIND_ADDRESS_NO_PORT
int on = 1;
#endif
+#ifndef ENABLE_IPV6
+ (void)scope;
+#endif
/*************************************************************
* Select device to bind socket to
@@ -314,8 +319,11 @@ static CURLcode bindlocal(struct Curl_easy *data,
}
#endif
- switch(Curl_if2ip(af, scope, conn->scope_id, dev,
- myhost, sizeof(myhost))) {
+ switch(Curl_if2ip(af,
+#ifdef ENABLE_IPV6
+ scope, conn->scope_id,
+#endif
+ dev, myhost, sizeof(myhost))) {
case IF2IP_NOT_FOUND:
if(is_interface) {
/* Do not fall back to treating it as a host name */
@@ -464,8 +472,10 @@ static CURLcode bindlocal(struct Curl_easy *data,
}
if(--portnum > 0) {
- infof(data, "Bind to local port %hu failed, trying next", port);
port++; /* try next port */
+ if(port == 0)
+ break;
+ infof(data, "Bind to local port %hu failed, trying next", port - 1);
/* We re-use/clobber the port variable here below */
if(sock->sa_family == AF_INET)
si4->sin_port = ntohs(port);
@@ -615,8 +625,10 @@ void Curl_persistconninfo(struct Curl_easy *data, struct connectdata *conn,
else
data->info.conn_local_ip[0] = 0;
data->info.conn_scheme = conn->handler->scheme;
- data->info.conn_protocol = conn->handler->protocol;
+ /* conn_protocol can only provide "old" protocols */
+ data->info.conn_protocol = (conn->handler->protocol) & CURLPROTO_MASK;
data->info.conn_primary_port = conn->port;
+ data->info.conn_remote_port = conn->remote_port;
data->info.conn_local_port = local_port;
}
@@ -750,11 +762,10 @@ void Curl_updateconninfo(struct Curl_easy *data, struct connectdata *conn,
char local_ip[MAX_IPADR_LEN] = "";
int local_port = -1;
- if(conn->transport == TRNSPRT_TCP) {
- if(!conn->bits.reuse && !conn->bits.tcp_fastopen)
- Curl_conninfo_remote(data, conn, sockfd);
- Curl_conninfo_local(data, sockfd, local_ip, &local_port);
- } /* end of TCP-only section */
+ if(!conn->bits.reuse &&
+ (conn->transport != TRNSPRT_TCP || !conn->bits.tcp_fastopen))
+ Curl_conninfo_remote(data, conn, sockfd);
+ Curl_conninfo_local(data, sockfd, local_ip, &local_port);
/* persist connection info in session handle */
Curl_persistconninfo(data, conn, local_ip, local_port);
@@ -892,6 +903,8 @@ CURLcode Curl_is_connected(struct Curl_easy *data,
conn->tempsock[i] = CURL_SOCKET_BAD;
post_SOCKS(data, conn, sockindex, connected);
connkeep(conn, "HTTP/3 default");
+ if(conn->tempsock[other] != CURL_SOCKET_BAD)
+ Curl_quic_disconnect(data, conn, other);
return CURLE_OK;
}
/* When a QUIC connect attempt fails, the better error explanation is in
@@ -1026,7 +1039,6 @@ CURLcode Curl_is_connected(struct Curl_easy *data,
(conn->tempsock[1] == CURL_SOCKET_BAD)) {
/* no more addresses to try */
const char *hostname;
- char buffer[STRERROR_LEN];
CURLcode failreason = result;
/* if the first address family runs out of addresses to try before the
@@ -1053,11 +1065,7 @@ CURLcode Curl_is_connected(struct Curl_easy *data,
"%" CURL_FORMAT_TIMEDIFF_T " ms: %s",
hostname, conn->port,
Curl_timediff(now, data->progress.t_startsingle),
-#ifdef ENABLE_QUIC
- (conn->transport == TRNSPRT_QUIC) ?
- curl_easy_strerror(result) :
-#endif
- Curl_strerror(error, buffer, sizeof(buffer)));
+ curl_easy_strerror(result));
Curl_quic_disconnect(data, conn, 0);
Curl_quic_disconnect(data, conn, 1);
@@ -1189,6 +1197,7 @@ static CURLcode singleipconnect(struct Curl_easy *data,
#ifdef TCP_FASTOPEN_CONNECT
int optval = 1;
#endif
+ const char *ipmsg;
char buffer[STRERROR_LEN];
curl_socket_t *sockp = &conn->tempsock[tempindex];
*sockp = CURL_SOCKET_BAD;
@@ -1206,7 +1215,13 @@ static CURLcode singleipconnect(struct Curl_easy *data,
Curl_closesocket(data, conn, sockfd);
return CURLE_OK;
}
- infof(data, " Trying %s:%d...", ipaddress, port);
+#ifdef ENABLE_IPV6
+ if(addr.family == AF_INET6)
+ ipmsg = " Trying [%s]:%d...";
+ else
+#endif
+ ipmsg = " Trying %s:%d...";
+ infof(data, ipmsg, ipaddress, port);
#ifdef ENABLE_IPV6
is_tcp = (addr.family == AF_INET || addr.family == AF_INET6) &&
@@ -1481,7 +1496,11 @@ curl_socket_t Curl_getconnectinfo(struct Curl_easy *data,
find.id_tofind = data->state.lastconnect_id;
find.found = NULL;
- Curl_conncache_foreach(data, data->multi_easy?
+ Curl_conncache_foreach(data,
+ data->share && (data->share->specifier
+ & (1<< CURL_LOCK_DATA_CONNECT))?
+ &data->share->conn_cache:
+ data->multi_easy?
&data->multi_easy->conn_cache:
&data->multi->conn_cache, &find, conn_is_conn);
@@ -1589,9 +1608,20 @@ CURLcode Curl_socket(struct Curl_easy *data,
*/
addr->family = ai->ai_family;
- addr->socktype = (conn->transport == TRNSPRT_TCP) ? SOCK_STREAM : SOCK_DGRAM;
- addr->protocol = conn->transport != TRNSPRT_TCP ? IPPROTO_UDP :
- ai->ai_protocol;
+ switch(conn->transport) {
+ case TRNSPRT_TCP:
+ addr->socktype = SOCK_STREAM;
+ addr->protocol = IPPROTO_TCP;
+ break;
+ case TRNSPRT_UNIX:
+ addr->socktype = SOCK_STREAM;
+ addr->protocol = IPPROTO_IP;
+ break;
+ default: /* UDP and QUIC */
+ addr->socktype = SOCK_DGRAM;
+ addr->protocol = IPPROTO_UDP;
+ break;
+ }
addr->addrlen = ai->ai_addrlen;
if(addr->addrlen > sizeof(struct Curl_sockaddr_storage))
@@ -1625,6 +1655,24 @@ CURLcode Curl_socket(struct Curl_easy *data,
if(conn->transport == TRNSPRT_QUIC) {
/* QUIC sockets need to be nonblocking */
(void)curlx_nonblock(*sockfd, TRUE);
+ switch(addr->family) {
+#if defined(__linux__) && defined(IP_MTU_DISCOVER)
+ case AF_INET: {
+ int val = IP_PMTUDISC_DO;
+ (void)setsockopt(*sockfd, IPPROTO_IP, IP_MTU_DISCOVER, &val,
+ sizeof(val));
+ break;
+ }
+#endif
+#if defined(__linux__) && defined(IPV6_MTU_DISCOVER)
+ case AF_INET6: {
+ int val = IPV6_PMTUDISC_DO;
+ (void)setsockopt(*sockfd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &val,
+ sizeof(val));
+ break;
+ }
+#endif
+ }
}
#if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
@@ -1634,20 +1682,6 @@ CURLcode Curl_socket(struct Curl_easy *data,
}
#endif
-#if defined(__linux__) && defined(IP_RECVERR)
- if(addr->socktype == SOCK_DGRAM) {
- int one = 1;
- switch(addr->family) {
- case AF_INET:
- (void)setsockopt(*sockfd, SOL_IP, IP_RECVERR, &one, sizeof(one));
- break;
- case AF_INET6:
- (void)setsockopt(*sockfd, SOL_IPV6, IPV6_RECVERR, &one, sizeof(one));
- break;
- }
- }
-#endif
-
return CURLE_OK;
}
diff --git a/lib/connect.h b/lib/connect.h
index 1a055f58d..582ff0813 100644
--- a/lib/connect.h
+++ b/lib/connect.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/content_encoding.c b/lib/content_encoding.c
index c03637a39..bfc13e254 100644
--- a/lib/content_encoding.c
+++ b/lib/content_encoding.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -26,7 +28,7 @@
#include <curl/curl.h>
#include <stddef.h>
-#ifdef HAVE_ZLIB_H
+#ifdef HAVE_LIBZ
#include <zlib.h>
#endif
@@ -80,8 +82,9 @@ typedef enum {
ZLIB_INIT_GZIP /* initialized in transparent gzip mode */
} zlibInitState;
-/* Writer parameters. */
-struct zlib_params {
+/* Deflate and gzip writer. */
+struct zlib_writer {
+ struct contenc_writer super;
zlibInitState zlib_init; /* zlib init state */
uInt trailerlen; /* Remaining trailer byte count. */
z_stream z; /* State structure for zlib. */
@@ -133,7 +136,7 @@ exit_zlib(struct Curl_easy *data,
}
static CURLcode process_trailer(struct Curl_easy *data,
- struct zlib_params *zp)
+ struct zlib_writer *zp)
{
z_stream *z = &zp->z;
CURLcode result = CURLE_OK;
@@ -160,7 +163,7 @@ static CURLcode inflate_stream(struct Curl_easy *data,
struct contenc_writer *writer,
zlibInitState started)
{
- struct zlib_params *zp = (struct zlib_params *) &writer->params;
+ struct zlib_writer *zp = (struct zlib_writer *) writer;
z_stream *z = &zp->z; /* zlib state structure */
uInt nread = z->avail_in;
Bytef *orig_in = z->next_in;
@@ -263,7 +266,7 @@ static CURLcode inflate_stream(struct Curl_easy *data,
static CURLcode deflate_init_writer(struct Curl_easy *data,
struct contenc_writer *writer)
{
- struct zlib_params *zp = (struct zlib_params *) &writer->params;
+ struct zlib_writer *zp = (struct zlib_writer *) writer;
z_stream *z = &zp->z; /* zlib state structure */
if(!writer->downstream)
@@ -283,7 +286,7 @@ static CURLcode deflate_unencode_write(struct Curl_easy *data,
struct contenc_writer *writer,
const char *buf, size_t nbytes)
{
- struct zlib_params *zp = (struct zlib_params *) &writer->params;
+ struct zlib_writer *zp = (struct zlib_writer *) writer;
z_stream *z = &zp->z; /* zlib state structure */
/* Set the compressed input when this function is called */
@@ -300,7 +303,7 @@ static CURLcode deflate_unencode_write(struct Curl_easy *data,
static void deflate_close_writer(struct Curl_easy *data,
struct contenc_writer *writer)
{
- struct zlib_params *zp = (struct zlib_params *) &writer->params;
+ struct zlib_writer *zp = (struct zlib_writer *) writer;
z_stream *z = &zp->z; /* zlib state structure */
exit_zlib(data, z, &zp->zlib_init, CURLE_OK);
@@ -312,7 +315,7 @@ static const struct content_encoding deflate_encoding = {
deflate_init_writer,
deflate_unencode_write,
deflate_close_writer,
- sizeof(struct zlib_params)
+ sizeof(struct zlib_writer)
};
@@ -320,7 +323,7 @@ static const struct content_encoding deflate_encoding = {
static CURLcode gzip_init_writer(struct Curl_easy *data,
struct contenc_writer *writer)
{
- struct zlib_params *zp = (struct zlib_params *) &writer->params;
+ struct zlib_writer *zp = (struct zlib_writer *) writer;
z_stream *z = &zp->z; /* zlib state structure */
if(!writer->downstream)
@@ -437,7 +440,7 @@ static CURLcode gzip_unencode_write(struct Curl_easy *data,
struct contenc_writer *writer,
const char *buf, size_t nbytes)
{
- struct zlib_params *zp = (struct zlib_params *) &writer->params;
+ struct zlib_writer *zp = (struct zlib_writer *) writer;
z_stream *z = &zp->z; /* zlib state structure */
if(zp->zlib_init == ZLIB_INIT_GZIP) {
@@ -564,7 +567,7 @@ static CURLcode gzip_unencode_write(struct Curl_easy *data,
static void gzip_close_writer(struct Curl_easy *data,
struct contenc_writer *writer)
{
- struct zlib_params *zp = (struct zlib_params *) &writer->params;
+ struct zlib_writer *zp = (struct zlib_writer *) writer;
z_stream *z = &zp->z; /* zlib state structure */
exit_zlib(data, z, &zp->zlib_init, CURLE_OK);
@@ -576,15 +579,16 @@ static const struct content_encoding gzip_encoding = {
gzip_init_writer,
gzip_unencode_write,
gzip_close_writer,
- sizeof(struct zlib_params)
+ sizeof(struct zlib_writer)
};
#endif /* HAVE_LIBZ */
#ifdef HAVE_BROTLI
-/* Writer parameters. */
-struct brotli_params {
+/* Brotli writer. */
+struct brotli_writer {
+ struct contenc_writer super;
BrotliDecoderState *br; /* State structure for brotli. */
};
@@ -629,7 +633,7 @@ static CURLcode brotli_map_error(BrotliDecoderErrorCode be)
static CURLcode brotli_init_writer(struct Curl_easy *data,
struct contenc_writer *writer)
{
- struct brotli_params *bp = (struct brotli_params *) &writer->params;
+ struct brotli_writer *bp = (struct brotli_writer *) writer;
(void) data;
if(!writer->downstream)
@@ -643,7 +647,7 @@ static CURLcode brotli_unencode_write(struct Curl_easy *data,
struct contenc_writer *writer,
const char *buf, size_t nbytes)
{
- struct brotli_params *bp = (struct brotli_params *) &writer->params;
+ struct brotli_writer *bp = (struct brotli_writer *) writer;
const uint8_t *src = (const uint8_t *) buf;
char *decomp;
uint8_t *dst;
@@ -690,7 +694,8 @@ static CURLcode brotli_unencode_write(struct Curl_easy *data,
static void brotli_close_writer(struct Curl_easy *data,
struct contenc_writer *writer)
{
- struct brotli_params *bp = (struct brotli_params *) &writer->params;
+ struct brotli_writer *bp = (struct brotli_writer *) writer;
+
(void) data;
if(bp->br) {
@@ -705,14 +710,15 @@ static const struct content_encoding brotli_encoding = {
brotli_init_writer,
brotli_unencode_write,
brotli_close_writer,
- sizeof(struct brotli_params)
+ sizeof(struct brotli_writer)
};
#endif
#ifdef HAVE_ZSTD
-/* Writer parameters. */
-struct zstd_params {
+/* Zstd writer. */
+struct zstd_writer {
+ struct contenc_writer super;
ZSTD_DStream *zds; /* State structure for zstd. */
void *decomp;
};
@@ -720,7 +726,8 @@ struct zstd_params {
static CURLcode zstd_init_writer(struct Curl_easy *data,
struct contenc_writer *writer)
{
- struct zstd_params *zp = (struct zstd_params *)&writer->params;
+ struct zstd_writer *zp = (struct zstd_writer *) writer;
+
(void)data;
if(!writer->downstream)
@@ -736,7 +743,7 @@ static CURLcode zstd_unencode_write(struct Curl_easy *data,
const char *buf, size_t nbytes)
{
CURLcode result = CURLE_OK;
- struct zstd_params *zp = (struct zstd_params *)&writer->params;
+ struct zstd_writer *zp = (struct zstd_writer *) writer;
ZSTD_inBuffer in;
ZSTD_outBuffer out;
size_t errorCode;
@@ -775,7 +782,8 @@ static CURLcode zstd_unencode_write(struct Curl_easy *data,
static void zstd_close_writer(struct Curl_easy *data,
struct contenc_writer *writer)
{
- struct zstd_params *zp = (struct zstd_params *)&writer->params;
+ struct zstd_writer *zp = (struct zstd_writer *) writer;
+
(void)data;
if(zp->decomp) {
@@ -794,7 +802,7 @@ static const struct content_encoding zstd_encoding = {
zstd_init_writer,
zstd_unencode_write,
zstd_close_writer,
- sizeof(struct zstd_params)
+ sizeof(struct zstd_writer)
};
#endif
@@ -827,7 +835,7 @@ static const struct content_encoding identity_encoding = {
identity_init_writer,
identity_unencode_write,
identity_close_writer,
- 0
+ sizeof(struct contenc_writer)
};
@@ -919,7 +927,7 @@ static const struct content_encoding client_encoding = {
client_init_writer,
client_unencode_write,
client_close_writer,
- 0
+ sizeof(struct contenc_writer)
};
@@ -962,7 +970,7 @@ static const struct content_encoding error_encoding = {
error_init_writer,
error_unencode_write,
error_close_writer,
- 0
+ sizeof(struct contenc_writer)
};
/* Create an unencoding writer stage using the given handler. */
@@ -971,8 +979,10 @@ new_unencoding_writer(struct Curl_easy *data,
const struct content_encoding *handler,
struct contenc_writer *downstream)
{
- size_t sz = offsetof(struct contenc_writer, params) + handler->paramsize;
- struct contenc_writer *writer = (struct contenc_writer *)calloc(1, sz);
+ struct contenc_writer *writer;
+
+ DEBUGASSERT(handler->writersize >= sizeof(struct contenc_writer));
+ writer = (struct contenc_writer *) calloc(1, handler->writersize);
if(writer) {
writer->handler = handler;
@@ -1026,19 +1036,23 @@ static const struct content_encoding *find_encoding(const char *name,
return NULL;
}
+/* allow no more than 5 "chained" compression steps */
+#define MAX_ENCODE_STACK 5
+
/* Set-up the unencoding stack from the Content-Encoding header value.
* See RFC 7231 section 3.1.2.2. */
CURLcode Curl_build_unencoding_stack(struct Curl_easy *data,
const char *enclist, int maybechunked)
{
struct SingleRequest *k = &data->req;
+ int counter = 0;
do {
const char *name;
size_t namelen;
/* Parse a single encoding name. */
- while(ISSPACE(*enclist) || *enclist == ',')
+ while(ISBLANK(*enclist) || *enclist == ',')
enclist++;
name = enclist;
@@ -1066,6 +1080,11 @@ CURLcode Curl_build_unencoding_stack(struct Curl_easy *data,
if(!encoding)
encoding = &error_encoding; /* Defer error at stack use. */
+ if(++counter >= MAX_ENCODE_STACK) {
+ failf(data, "Reject response due to %u content encodings",
+ counter);
+ return CURLE_BAD_CONTENT_ENCODING;
+ }
/* Stack the unencoding stage. */
writer = new_unencoding_writer(data, encoding, k->writer_stack);
if(!writer)
diff --git a/lib/content_encoding.h b/lib/content_encoding.h
index acfd0c27b..3c278cf72 100644
--- a/lib/content_encoding.h
+++ b/lib/content_encoding.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,13 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
struct contenc_writer {
const struct content_encoding *handler; /* Encoding handler. */
struct contenc_writer *downstream; /* Downstream writer. */
- void *params; /* Encoding-specific storage (variable length). */
};
/* Content encoding writer. */
@@ -40,7 +41,7 @@ struct content_encoding {
const char *buf, size_t nbytes);
void (*close_writer)(struct Curl_easy *data,
struct contenc_writer *writer);
- size_t paramsize;
+ size_t writersize;
};
diff --git a/lib/cookie.c b/lib/cookie.c
index d418efa33..8eaedeeb7 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/***
@@ -33,8 +35,9 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
called before any cookies are set.
struct Cookie *Curl_cookie_add(struct Curl_easy *data,
- struct CookieInfo *c, bool httpheader, char *lineptr,
- const char *domain, const char *path);
+ struct CookieInfo *c, bool httpheader, bool noexpire,
+ char *lineptr, const char *domain, const char *path,
+ bool secure);
The 'lineptr' parameter is a full "Set-cookie:" line as
received from a server.
@@ -96,8 +99,8 @@ Example set of cookies:
#include "curl_get_line.h"
#include "curl_memrchr.h"
#include "parsedate.h"
-#include "rand.h"
#include "rename.h"
+#include "fopen.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -427,7 +430,38 @@ static void remove_expired(struct CookieInfo *cookies)
/* Make sure domain contains a dot or is localhost. */
static bool bad_domain(const char *domain)
{
- return !strchr(domain, '.') && !strcasecompare(domain, "localhost");
+ if(strcasecompare(domain, "localhost"))
+ return FALSE;
+ else {
+ /* there must be a dot present, but that dot must not be a trailing dot */
+ char *dot = strchr(domain, '.');
+ if(dot)
+ return dot[1] ? FALSE : TRUE;
+ }
+ return TRUE;
+}
+
+/*
+ RFC 6265 section 4.1.1 says a server should accept this range:
+
+ cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
+
+ But Firefox and Chrome as of June 2022 accept space, comma and double-quotes
+ fine. The prime reason for filtering out control bytes is that some HTTP
+ servers return 400 for requests that contain such.
+*/
+static int invalid_octets(const char *p)
+{
+ /* Reject all bytes \x01 - \x1f (*except* \x09, TAB) + \x7f */
+ static const char badoctets[] = {
+ "\x01\x02\x03\x04\x05\x06\x07\x08\x0a"
+ "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
+ "\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x7f"
+ };
+ size_t len;
+ /* scan for all the octets that are *not* in cookie-octet */
+ len = strcspn(p, badoctets);
+ return (p[len] != '\0');
}
/*
@@ -460,6 +494,8 @@ Curl_cookie_add(struct Curl_easy *data,
struct Cookie *clist;
struct Cookie *co;
struct Cookie *lastc = NULL;
+ struct Cookie *replace_co = NULL;
+ struct Cookie *replace_clist = NULL;
time_t now = time(NULL);
bool replace_old = FALSE;
bool badcookie = FALSE; /* cookies are good by default. mmmmm yummy */
@@ -469,6 +505,10 @@ Curl_cookie_add(struct Curl_easy *data,
(void)data;
#endif
+ DEBUGASSERT(MAX_SET_COOKIE_AMOUNT <= 255); /* counter is an unsigned char */
+ if(data->req.setcookies >= MAX_SET_COOKIE_AMOUNT)
+ return NULL;
+
/* First, alloc and init a new struct for it */
co = calloc(1, sizeof(struct Cookie));
if(!co)
@@ -497,7 +537,7 @@ Curl_cookie_add(struct Curl_easy *data,
do {
/* we have a <what>=<this> pair or a stand-alone word here */
name[0] = what[0] = 0; /* init the buffers */
- if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\r\n=] =%"
+ if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\t\r\n=] =%"
MAX_NAME_TXT "[^;\r\n]",
name, what)) {
/*
@@ -551,6 +591,13 @@ Curl_cookie_add(struct Curl_easy *data,
while(*whatptr && ISBLANK(*whatptr))
whatptr++;
+ /* Reject cookies with a TAB inside the content */
+ if(strchr(whatptr, '\t')) {
+ freecookie(co);
+ infof(data, "cookie contains TAB, dropping");
+ return NULL;
+ }
+
/*
* Check if we have a reserved prefix set before anything else, as we
* otherwise have to test for the prefix in both the cookie name and
@@ -578,6 +625,11 @@ Curl_cookie_add(struct Curl_easy *data,
badcookie = TRUE;
break;
}
+ if(invalid_octets(whatptr) || invalid_octets(name)) {
+ infof(data, "invalid octets in name/value, cookie dropped");
+ badcookie = TRUE;
+ break;
+ }
}
else if(!len) {
/*
@@ -620,7 +672,7 @@ Curl_cookie_add(struct Curl_easy *data,
break;
}
}
- else if(strcasecompare("domain", name)) {
+ else if(strcasecompare("domain", name) && whatptr[0]) {
bool is_ip;
/*
@@ -808,7 +860,7 @@ Curl_cookie_add(struct Curl_easy *data,
freecookie(co);
return NULL;
}
-
+ data->req.setcookies++;
}
else {
/*
@@ -1012,12 +1064,53 @@ Curl_cookie_add(struct Curl_easy *data,
}
#endif
+ /* A non-secure cookie may not overlay an existing secure cookie. */
myhash = cookiehash(co->domain);
clist = c->cookies[myhash];
- replace_old = FALSE;
while(clist) {
if(strcasecompare(clist->name, co->name)) {
/* the names are identical */
+ bool matching_domains = FALSE;
+
+ if(clist->domain && co->domain) {
+ if(strcasecompare(clist->domain, co->domain))
+ /* The domains are identical */
+ matching_domains = TRUE;
+ }
+ else if(!clist->domain && !co->domain)
+ matching_domains = TRUE;
+
+ if(matching_domains && /* the domains were identical */
+ clist->spath && co->spath && /* both have paths */
+ clist->secure && !co->secure && !secure) {
+ size_t cllen;
+ const char *sep;
+
+ /*
+ * A non-secure cookie may not overlay an existing secure cookie.
+ * For an existing cookie "a" with path "/login", refuse a new
+ * cookie "a" with for example path "/login/en", while the path
+ * "/loginhelper" is ok.
+ */
+
+ sep = strchr(clist->spath + 1, '/');
+
+ if(sep)
+ cllen = sep - clist->spath;
+ else
+ cllen = strlen(clist->spath);
+
+ if(strncasecompare(clist->spath, co->spath, cllen)) {
+ infof(data, "cookie '%s' for domain '%s' dropped, would "
+ "overlay an existing cookie", co->name, co->domain);
+ freecookie(co);
+ return NULL;
+ }
+ }
+ }
+
+ if(!replace_co && strcasecompare(clist->name, co->name)) {
+ /* the names are identical */
if(clist->domain && co->domain) {
if(strcasecompare(clist->domain, co->domain) &&
@@ -1032,30 +1125,7 @@ Curl_cookie_add(struct Curl_easy *data,
/* the domains were identical */
if(clist->spath && co->spath) {
- if(clist->secure && !co->secure && !secure) {
- size_t cllen;
- const char *sep;
-
- /*
- * A non-secure cookie may not overlay an existing secure cookie.
- * For an existing cookie "a" with path "/login", refuse a new
- * cookie "a" with for example path "/login/en", while the path
- * "/loginhelper" is ok.
- */
-
- sep = strchr(clist->spath + 1, '/');
-
- if(sep)
- cllen = sep - clist->spath;
- else
- cllen = strlen(clist->spath);
-
- if(strncasecompare(clist->spath, co->spath, cllen)) {
- freecookie(co);
- return NULL;
- }
- }
- else if(strcasecompare(clist->spath, co->spath))
+ if(strcasecompare(clist->spath, co->spath))
replace_old = TRUE;
else
replace_old = FALSE;
@@ -1077,42 +1147,37 @@ Curl_cookie_add(struct Curl_easy *data,
freecookie(co);
return NULL;
}
-
if(replace_old) {
- co->next = clist->next; /* get the next-pointer first */
-
- /* when replacing, creationtime is kept from old */
- co->creationtime = clist->creationtime;
-
- /* then free all the old pointers */
- free(clist->name);
- free(clist->value);
- free(clist->domain);
- free(clist->path);
- free(clist->spath);
- free(clist->expirestr);
- free(clist->version);
- free(clist->maxage);
-
- *clist = *co; /* then store all the new data */
-
- free(co); /* free the newly allocated memory */
- co = clist; /* point to the previous struct instead */
-
- /*
- * We have replaced a cookie, now skip the rest of the list but make
- * sure the 'lastc' pointer is properly set
- */
- do {
- lastc = clist;
- clist = clist->next;
- } while(clist);
- break;
+ replace_co = co;
+ replace_clist = clist;
}
}
lastc = clist;
clist = clist->next;
}
+ if(replace_co) {
+ co = replace_co;
+ clist = replace_clist;
+ co->next = clist->next; /* get the next-pointer first */
+
+ /* when replacing, creationtime is kept from old */
+ co->creationtime = clist->creationtime;
+
+ /* then free all the old pointers */
+ free(clist->name);
+ free(clist->value);
+ free(clist->domain);
+ free(clist->path);
+ free(clist->spath);
+ free(clist->expirestr);
+ free(clist->version);
+ free(clist->maxage);
+
+ *clist = *co; /* then store all the new data */
+
+ free(co); /* free the newly allocated memory */
+ co = clist;
+ }
if(c->running)
/* Only show this when NOT reading the cookies from a file */
@@ -1188,12 +1253,15 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
fp = stdin;
fromfile = FALSE;
}
- else if(file && !*file) {
- /* points to a "" string */
+ else if(!file || !*file) {
+ /* points to an empty string or NULL */
fp = NULL;
}
- else
- fp = file?fopen(file, FOPEN_READTEXT):NULL;
+ else {
+ fp = fopen(file, FOPEN_READTEXT);
+ if(!fp)
+ infof(data, "WARNING: failed to open cookie file \"%s\"", file);
+ }
c->newsession = newsession; /* new session? */
@@ -1227,7 +1295,7 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
*/
remove_expired(c);
- if(fromfile)
+ if(fromfile && fp)
fclose(fp);
}
@@ -1346,7 +1414,8 @@ static struct Cookie *dup_cookie(struct Cookie *src)
*
* It shall only return cookies that haven't expired.
*/
-struct Cookie *Curl_cookie_getlist(struct CookieInfo *c,
+struct Cookie *Curl_cookie_getlist(struct Curl_easy *data,
+ struct CookieInfo *c,
const char *host, const char *path,
bool secure)
{
@@ -1401,6 +1470,11 @@ struct Cookie *Curl_cookie_getlist(struct CookieInfo *c,
mainco = newco;
matches++;
+ if(matches >= MAX_COOKIE_SEND_AMOUNT) {
+ infof(data, "Included max number of cookies (%zu) in request!",
+ matches);
+ break;
+ }
}
else
goto fail;
@@ -1602,20 +1676,9 @@ static CURLcode cookie_output(struct Curl_easy *data,
use_stdout = TRUE;
}
else {
- unsigned char randsuffix[9];
-
- if(Curl_rand_hex(data, randsuffix, sizeof(randsuffix)))
- return 2;
-
- tempstore = aprintf("%s.%s.tmp", filename, randsuffix);
- if(!tempstore)
- return CURLE_OUT_OF_MEMORY;
-
- out = fopen(tempstore, FOPEN_WRITETEXT);
- if(!out) {
- error = CURLE_WRITE_ERROR;
+ error = Curl_fopen(data, filename, &out, &tempstore);
+ if(error)
goto error;
- }
}
fputs("# Netscape HTTP Cookie File\n"
@@ -1662,7 +1725,7 @@ static CURLcode cookie_output(struct Curl_easy *data,
if(!use_stdout) {
fclose(out);
out = NULL;
- if(Curl_rename(tempstore, filename)) {
+ if(tempstore && Curl_rename(tempstore, filename)) {
unlink(tempstore);
error = CURLE_WRITE_ERROR;
goto error;
diff --git a/lib/cookie.h b/lib/cookie.h
index 0ffe08e63..abc0a2e8a 100644
--- a/lib/cookie.h
+++ b/lib/cookie.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -81,10 +83,26 @@ struct CookieInfo {
*/
#define MAX_COOKIE_LINE 5000
-/* This is the maximum length of a cookie name or content we deal with: */
+/* Maximum length of an incoming cookie name or content we deal with. Longer
+ cookies are ignored. */
#define MAX_NAME 4096
#define MAX_NAME_TXT "4095"
+/* Maximum size for an outgoing cookie line libcurl will use in an http
+ request. This is the default maximum length used in some versions of Apache
+ httpd. */
+#define MAX_COOKIE_HEADER_LEN 8190
+
+/* Maximum number of cookies libcurl will send in a single request, even if
+ there might be more cookies that match. One reason to cap the number is to
+ keep the maximum HTTP request within the maximum allowed size. */
+#define MAX_COOKIE_SEND_AMOUNT 150
+
+/* Maximum number of Set-Cookie: lines accepted in a single response. If more
+ such header lines are received, they are ignored. This value must be less
+ than 256 since an unsigned char is used to count. */
+#define MAX_SET_COOKIE_AMOUNT 50
+
struct Curl_easy;
/*
* Add a cookie to the internal list of cookies. The domain and path arguments
@@ -97,7 +115,8 @@ struct Cookie *Curl_cookie_add(struct Curl_easy *data,
const char *domain, const char *path,
bool secure);
-struct Cookie *Curl_cookie_getlist(struct CookieInfo *c, const char *host,
+struct Cookie *Curl_cookie_getlist(struct Curl_easy *data,
+ struct CookieInfo *c, const char *host,
const char *path, bool secure);
void Curl_cookie_freelist(struct Cookie *cookies);
void Curl_cookie_clearall(struct CookieInfo *cookies);
diff --git a/lib/curl_addrinfo.c b/lib/curl_addrinfo.c
index 842fd7fe2..72e778b34 100644
--- a/lib/curl_addrinfo.c
+++ b/lib/curl_addrinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -277,7 +279,7 @@ Curl_he2ai(const struct hostent *he, int port)
for(i = 0; (curr = he->h_addr_list[i]) != NULL; i++) {
size_t ss_size;
- size_t namelen = strlen(he->h_name) + 1; /* include zero termination */
+ size_t namelen = strlen(he->h_name) + 1; /* include null-terminatior */
#ifdef ENABLE_IPV6
if(he->h_addrtype == AF_INET6)
ss_size = sizeof(struct sockaddr_in6);
diff --git a/lib/curl_addrinfo.h b/lib/curl_addrinfo.h
index 73a8c1b33..b778121a7 100644
--- a/lib/curl_addrinfo.h
+++ b/lib/curl_addrinfo.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_base64.h b/lib/curl_base64.h
index d48edc424..85368a163 100644
--- a/lib/curl_base64.h
+++ b/lib/curl_base64.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,15 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
-CURLcode Curl_base64_encode(struct Curl_easy *data,
- const char *inputbuff, size_t insize,
+CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
char **outptr, size_t *outlen);
-CURLcode Curl_base64url_encode(struct Curl_easy *data,
- const char *inputbuff, size_t insize,
+CURLcode Curl_base64url_encode(const char *inputbuff, size_t insize,
char **outptr, size_t *outlen);
-
CURLcode Curl_base64_decode(const char *src,
unsigned char **outptr, size_t *outlen);
diff --git a/lib/curl_config.h.cmake b/lib/curl_config.h.cmake
index d2a0f438c..3ba14923c 100644
--- a/lib/curl_config.h.cmake
+++ b/lib/curl_config.h.cmake
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,12 +18,11 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* lib/curl_config.h.in. Generated somehow by cmake. */
-/* when building libcurl itself */
-#cmakedefine BUILDING_LIBCURL 1
-
/* Location of default ca bundle */
#cmakedefine CURL_CA_BUNDLE "${CURL_CA_BUNDLE}"
@@ -145,9 +144,6 @@
/* Define to 1 if you have the alarm function. */
#cmakedefine HAVE_ALARM 1
-/* Define to 1 if you have the <alloca.h> header file. */
-#cmakedefine HAVE_ALLOCA_H 1
-
/* Define to 1 if you have the <arpa/inet.h> header file. */
#cmakedefine HAVE_ARPA_INET_H 1
@@ -157,6 +153,12 @@
/* Define to 1 if you have the <assert.h> header file. */
#cmakedefine HAVE_ASSERT_H 1
+/* Define to 1 if you have _Atomic support. */
+#cmakedefine HAVE_ATOMIC 1
+
+/* Define to 1 if you have the `fchmod' function. */
+#cmakedefine HAVE_FCHMOD 1
+
/* Define to 1 if you have the `basename' function. */
#cmakedefine HAVE_BASENAME 1
@@ -172,12 +174,6 @@
/* Define to 1 if you have the `closesocket' function. */
#cmakedefine HAVE_CLOSESOCKET 1
-/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
-#cmakedefine HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#cmakedefine HAVE_DLFCN_H 1
-
/* Define to 1 if you have the <errno.h> header file. */
#cmakedefine HAVE_ERRNO_H 1
@@ -199,15 +195,15 @@
/* Define to 1 if you have a working getaddrinfo function. */
#cmakedefine HAVE_GETADDRINFO 1
+/* Define to 1 if the getaddrinfo function is threadsafe. */
+#cmakedefine HAVE_GETADDRINFO_THREADSAFE 1
+
/* Define to 1 if you have the `geteuid' function. */
#cmakedefine HAVE_GETEUID 1
/* Define to 1 if you have the `getppid' function. */
#cmakedefine HAVE_GETPPID 1
-/* Define to 1 if you have the gethostbyname function. */
-#cmakedefine HAVE_GETHOSTBYNAME 1
-
/* Define to 1 if you have the gethostbyname_r function. */
#cmakedefine HAVE_GETHOSTBYNAME_R 1
@@ -232,9 +228,6 @@
/* Define to 1 if you have the `getppid' function. */
#cmakedefine HAVE_GETPPID 1
-/* Define to 1 if you have the `getprotobyname' function. */
-#cmakedefine HAVE_GETPROTOBYNAME 1
-
/* Define to 1 if you have the `getpeername' function. */
#cmakedefine HAVE_GETPEERNAME 1
@@ -286,18 +279,9 @@
/* Define to 1 if you have the `idna_strerror' function. */
#cmakedefine HAVE_IDNA_STRERROR 1
-/* Define to 1 if you have the `idn_free' function. */
-#cmakedefine HAVE_IDN_FREE 1
-
-/* Define to 1 if you have the <idn-free.h> header file. */
-#cmakedefine HAVE_IDN_FREE_H 1
-
/* Define to 1 if you have the <ifaddrs.h> header file. */
#cmakedefine HAVE_IFADDRS_H 1
-/* Define to 1 if you have the `inet_addr' function. */
-#cmakedefine HAVE_INET_ADDR 1
-
/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
#cmakedefine HAVE_INET_NTOP 1
@@ -313,9 +297,6 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H 1
-/* Define to 1 if you have the ioctl function. */
-#cmakedefine HAVE_IOCTL 1
-
/* Define to 1 if you have the ioctlsocket function. */
#cmakedefine HAVE_IOCTLSOCKET 1
@@ -338,21 +319,9 @@
/* Define to 1 if you have the <io.h> header file. */
#cmakedefine HAVE_IO_H 1
-/* if you have the Kerberos4 libraries (including -ldes) */
-#cmakedefine HAVE_KRB4 1
-
-/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
-#cmakedefine HAVE_KRB_GET_OUR_IP_FOR_REALM 1
-
-/* Define to 1 if you have the <krb.h> header file. */
-#cmakedefine HAVE_KRB_H 1
-
/* Define to 1 if you have the lber.h header file. */
#cmakedefine HAVE_LBER_H 1
-/* Define to 1 if you have the ldapssl.h header file. */
-#cmakedefine HAVE_LDAPSSL_H 1
-
/* Define to 1 if you have the ldap.h header file. */
#cmakedefine HAVE_LDAP_H 1
@@ -374,24 +343,12 @@
/* Define to 1 if you have the idn2.h header file. */
#cmakedefine HAVE_IDN2_H 1
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-#cmakedefine HAVE_LIBRESOLV 1
-
-/* Define to 1 if you have the `resolve' library (-lresolve). */
-#cmakedefine HAVE_LIBRESOLVE 1
-
/* Define to 1 if you have the `socket' library (-lsocket). */
#cmakedefine HAVE_LIBSOCKET 1
/* Define to 1 if you have the `ssh2' library (-lssh2). */
#cmakedefine HAVE_LIBSSH2 1
-/* Define to 1 if you have the <libssh2.h> header file. */
-#cmakedefine HAVE_LIBSSH2_H 1
-
-/* Define to 1 if you have the <libssh/libssh.h> header file. */
-#cmakedefine HAVE_LIBSSH_LIBSSH_H 1
-
/* if zlib is available */
#cmakedefine HAVE_LIBZ 1
@@ -401,24 +358,12 @@
/* if zstd is available */
#cmakedefine HAVE_ZSTD 1
-/* if your compiler supports LL */
-#cmakedefine HAVE_LL 1
-
/* Define to 1 if you have the <locale.h> header file. */
#cmakedefine HAVE_LOCALE_H 1
-/* Define to 1 if you have a working localtime_r function. */
-#cmakedefine HAVE_LOCALTIME_R 1
-
/* Define to 1 if the compiler supports the 'long long' data type. */
#cmakedefine HAVE_LONGLONG 1
-/* Define to 1 if you have the malloc.h header file. */
-#cmakedefine HAVE_MALLOC_H 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#cmakedefine HAVE_MEMORY_H 1
-
/* Define to 1 if you have the MSG_NOSIGNAL flag. */
#cmakedefine HAVE_MSG_NOSIGNAL 1
@@ -437,42 +382,12 @@
/* Define to 1 if you have the <net/if.h> header file. */
#cmakedefine HAVE_NET_IF_H 1
-/* Define to 1 if NI_WITHSCOPEID exists and works. */
-#cmakedefine HAVE_NI_WITHSCOPEID 1
-
/* 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. */
-#cmakedefine HAVE_OPENSSL_CRYPTO_H 1
-
-/* Define to 1 if you have the <openssl/err.h> header file. */
-#cmakedefine HAVE_OPENSSL_ERR_H 1
-
-/* Define to 1 if you have the <openssl/pem.h> header file. */
-#cmakedefine HAVE_OPENSSL_PEM_H 1
-
-/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
-#cmakedefine HAVE_OPENSSL_PKCS12_H 1
-
-/* Define to 1 if you have the <openssl/rsa.h> header file. */
-#cmakedefine HAVE_OPENSSL_RSA_H 1
-
-/* Define to 1 if you have the <openssl/ssl.h> header file. */
-#cmakedefine HAVE_OPENSSL_SSL_H 1
-
-/* Define to 1 if you have the <openssl/x509.h> header file. */
-#cmakedefine HAVE_OPENSSL_X509_H 1
-
-/* Define to 1 if you have the <pem.h> header file. */
-#cmakedefine HAVE_PEM_H 1
-
/* Define to 1 if you have the `pipe' function. */
#cmakedefine HAVE_PIPE 1
-/* Define to 1 if you have a working poll function. */
-#cmakedefine HAVE_POLL 1
-
/* If you have a fine poll */
#cmakedefine HAVE_POLL_FINE 1
@@ -491,18 +406,9 @@
/* Define to 1 if you have the `RAND_egd' function. */
#cmakedefine HAVE_RAND_EGD 1
-/* Define to 1 if you have the `RAND_screen' function. */
-#cmakedefine HAVE_RAND_SCREEN 1
-
-/* Define to 1 if you have the `RAND_status' function. */
-#cmakedefine HAVE_RAND_STATUS 1
-
/* Define to 1 if you have the recv function. */
#cmakedefine HAVE_RECV 1
-/* Define to 1 if you have the recvfrom function. */
-#cmakedefine HAVE_RECVFROM 1
-
/* Define to 1 if you have the select function. */
#cmakedefine HAVE_SELECT 1
@@ -530,9 +436,6 @@
/* Define to 1 if you have the `setrlimit' function. */
#cmakedefine HAVE_SETRLIMIT 1
-/* Define to 1 if you have the setsockopt function. */
-#cmakedefine HAVE_SETSOCKOPT 1
-
/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
#cmakedefine HAVE_SETSOCKOPT_SO_NONBLOCK 1
@@ -557,27 +460,27 @@
/* Define to 1 if you have the `socket' function. */
#cmakedefine HAVE_SOCKET 1
+/* Define to 1 if you have the socketpair function. */
+#cmakedefine HAVE_SOCKETPAIR 1
+
/* Define to 1 if you have the <ssl.h> header file. */
#cmakedefine HAVE_SSL_H 1
+/* Define to 1 if you have the <stdatomic.h> header file. */
+#cmakedefine HAVE_STDATOMIC_H 1
+
/* Define to 1 if you have the <stdbool.h> header file. */
#cmakedefine HAVE_STDBOOL_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#cmakedefine HAVE_STDINT_H 1
-/* Define to 1 if you have the <stdio.h> header file. */
-#cmakedefine HAVE_STDIO_H 1
-
/* Define to 1 if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H 1
/* Define to 1 if you have the strcasecmp function. */
#cmakedefine HAVE_STRCASECMP 1
-/* Define to 1 if you have the strcasestr function. */
-#cmakedefine HAVE_STRCASESTR 1
-
/* Define to 1 if you have the strcmpi function. */
#cmakedefine HAVE_STRCMPI 1
@@ -596,18 +499,9 @@
/* Define to 1 if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H 1
-/* Define to 1 if you have the strncmpi function. */
-#cmakedefine HAVE_STRNCMPI 1
-
-/* Define to 1 if you have the strnicmp function. */
-#cmakedefine HAVE_STRNICMP 1
-
/* Define to 1 if you have the <stropts.h> header file. */
#cmakedefine HAVE_STROPTS_H 1
-/* Define to 1 if you have the strstr function. */
-#cmakedefine HAVE_STRSTR 1
-
/* Define to 1 if you have the strtok_r function. */
#cmakedefine HAVE_STRTOK_R 1
@@ -653,9 +547,6 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#cmakedefine HAVE_SYS_TYPES_H 1
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#cmakedefine HAVE_SYS_UIO_H 1
-
/* Define to 1 if you have the <sys/un.h> header file. */
#cmakedefine HAVE_SYS_UN_H 1
@@ -671,15 +562,6 @@
/* Define to 1 if you have the <time.h> header file. */
#cmakedefine HAVE_TIME_H 1
-/* Define to 1 if you have the <tld.h> header file. */
-#cmakedefine HAVE_TLD_H 1
-
-/* Define to 1 if you have the `tld_strerror' function. */
-#cmakedefine HAVE_TLD_STRERROR 1
-
-/* Define to 1 if you have the `uname' function. */
-#cmakedefine HAVE_UNAME 1
-
/* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H 1
@@ -698,9 +580,6 @@
/* Define to 1 if compiler supports old gcc variadic macro style. */
#cmakedefine HAVE_VARIADIC_MACROS_GCC 1
-/* Define to 1 if you have the winber.h header file. */
-#cmakedefine HAVE_WINBER_H 1
-
/* Define to 1 if you have the windows.h header file. */
#cmakedefine HAVE_WINDOWS_H 1
@@ -713,28 +592,12 @@
/* Define this symbol if your OS supports changing the contents of argv */
#cmakedefine HAVE_WRITABLE_ARGV 1
-/* Define to 1 if you have the writev function. */
-#cmakedefine HAVE_WRITEV 1
-
/* Define to 1 if you have the ws2tcpip.h header file. */
#cmakedefine HAVE_WS2TCPIP_H 1
-/* Define to 1 if you have the <x509.h> header file. */
-#cmakedefine HAVE_X509_H 1
-
/* Define if you have the <process.h> header file. */
#cmakedefine HAVE_PROCESS_H 1
-/* if you have the zlib.h header file */
-#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 */
-#cmakedefine NEED_BASENAME_PROTO 1
-
/* Define to 1 if you need the lber.h header file even with ldap.h */
#cmakedefine NEED_LBER_H 1
@@ -768,84 +631,6 @@
/* a suitable file to read random data from */
#cmakedefine RANDOM_FILE "${RANDOM_FILE}"
-/* Define to the type of arg 1 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG1 ${RECVFROM_TYPE_ARG1}
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#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 1
-
-/* Define to the type of arg 3 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG3 ${RECVFROM_TYPE_ARG3}
-
-/* Define to the type of arg 4 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG4 ${RECVFROM_TYPE_ARG4}
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#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 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. */
-#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 type of arg 1 for recv. */
-#cmakedefine RECV_TYPE_ARG1 ${RECV_TYPE_ARG1}
-
-/* Define to the type of arg 2 for recv. */
-#cmakedefine RECV_TYPE_ARG2 ${RECV_TYPE_ARG2}
-
-/* Define to the type of arg 3 for recv. */
-#cmakedefine RECV_TYPE_ARG3 ${RECV_TYPE_ARG3}
-
-/* Define to the type of arg 4 for recv. */
-#cmakedefine RECV_TYPE_ARG4 ${RECV_TYPE_ARG4}
-
-/* Define to the function return type for recv. */
-#cmakedefine RECV_TYPE_RETV ${RECV_TYPE_RETV}
-
-/* Define to the type qualifier of arg 5 for select. */
-#cmakedefine SELECT_QUAL_ARG5 ${SELECT_QUAL_ARG5}
-
-/* Define to the type of arg 1 for select. */
-#cmakedefine SELECT_TYPE_ARG1 ${SELECT_TYPE_ARG1}
-
-/* Define to the type of args 2, 3 and 4 for select. */
-#cmakedefine SELECT_TYPE_ARG234 ${SELECT_TYPE_ARG234}
-
-/* Define to the type of arg 5 for select. */
-#cmakedefine SELECT_TYPE_ARG5 ${SELECT_TYPE_ARG5}
-
-/* Define to the function return type for select. */
-#cmakedefine SELECT_TYPE_RETV ${SELECT_TYPE_RETV}
-
-/* Define to the type qualifier of arg 2 for send. */
-#cmakedefine SEND_QUAL_ARG2 ${SEND_QUAL_ARG2}
-
-/* Define to the type of arg 1 for send. */
-#cmakedefine SEND_TYPE_ARG1 ${SEND_TYPE_ARG1}
-
-/* Define to the type of arg 2 for send. */
-#cmakedefine SEND_TYPE_ARG2 ${SEND_TYPE_ARG2}
-
-/* Define to the type of arg 3 for send. */
-#cmakedefine SEND_TYPE_ARG3 ${SEND_TYPE_ARG3}
-
-/* Define to the type of arg 4 for send. */
-#cmakedefine SEND_TYPE_ARG4 ${SEND_TYPE_ARG4}
-
-/* Define to the function return type for send. */
-#cmakedefine SEND_TYPE_RETV ${SEND_TYPE_RETV}
-
/*
Note: SIZEOF_* variables are fetched with CMake through check_type_size().
As per CMake documentation on CheckTypeSize, C preprocessor code is
@@ -858,9 +643,6 @@
/* The size of `int', as computed by sizeof. */
${SIZEOF_INT_CODE}
-/* The size of `short', as computed by sizeof. */
-${SIZEOF_SHORT_CODE}
-
/* The size of `long', as computed by sizeof. */
${SIZEOF_LONG_CODE}
@@ -879,9 +661,6 @@ ${SIZEOF_TIME_T_CODE}
/* Define to 1 if you have the ANSI C header files. */
#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>. */
#cmakedefine TIME_WITH_SYS_TIME 1
@@ -915,6 +694,9 @@ ${SIZEOF_TIME_T_CODE}
/* if libSSH2 is in use */
#cmakedefine USE_LIBSSH2 1
+/* if libPSL is in use */
+#cmakedefine USE_LIBPSL 1
+
/* If you want to build curl with the built-in manual */
#cmakedefine USE_MANUAL 1
@@ -949,6 +731,9 @@ ${SIZEOF_TIME_T_CODE}
/* Define to 1 if you have the quiche_conn_set_qlog_fd function. */
#cmakedefine HAVE_QUICHE_CONN_SET_QLOG_FD 1
+/* to enable msh3 */
+#cmakedefine USE_MSH3 1
+
/* if Unix domain sockets are enabled */
#cmakedefine USE_UNIX_SOCKETS
@@ -964,9 +749,6 @@ ${SIZEOF_TIME_T_CODE}
/* enable multiple SSL backends */
#cmakedefine CURL_WITH_MULTI_SSL 1
-/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
-#cmakedefine USE_YASSLEMUL 1
-
/* Version number of package */
#cmakedefine VERSION ${VERSION}
@@ -1010,3 +792,6 @@ ${SIZEOF_TIME_T_CODE}
/* to make the compiler know the prototypes of Windows IDN APIs */
#cmakedefine WANT_IDN_PROTOTYPES 1
+
+/* Define to 1 to enable websocket support. */
+#cmakedefine USE_WEBSOCKETS 1
diff --git a/lib/curl_config.h.in b/lib/curl_config.h.in
index 2bce4ecc4..06e1dd252 100644
--- a/lib/curl_config.h.in
+++ b/lib/curl_config.h.in
@@ -42,6 +42,9 @@
/* to disable Gopher */
#undef CURL_DISABLE_GOPHER
+/* disable headers-api */
+#undef CURL_DISABLE_HEADERS_API
+
/* disable alt-svc */
#undef CURL_DISABLE_HSTS
@@ -138,9 +141,6 @@
/* Define to 1 if you have the alarm function. */
#undef HAVE_ALARM
-/* Define to 1 if you have the <alloca.h> header file. */
-#undef HAVE_ALLOCA_H
-
/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H
@@ -150,6 +150,9 @@
/* Define to 1 if you have the <assert.h> header file. */
#undef HAVE_ASSERT_H
+/* Define to 1 if you have _Atomic support. */
+#undef HAVE_ATOMIC
+
/* Define to 1 if you have the basename function. */
#undef HAVE_BASENAME
@@ -199,6 +202,9 @@
/* Define to 1 if you have the <err.h> header file. */
#undef HAVE_ERR_H
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
/* Define to 1 if you have the fcntl function. */
#undef HAVE_FCNTL
@@ -331,9 +337,6 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
-/* Define to 1 if you have the ioctl function. */
-#undef HAVE_IOCTL
-
/* Define to 1 if you have the ioctlsocket function. */
#undef HAVE_IOCTLSOCKET
@@ -347,27 +350,15 @@
/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
#undef HAVE_IOCTLSOCKET_FIONBIO
-/* Define to 1 if you have a working ioctl FIONBIO function. */
-#undef HAVE_IOCTL_FIONBIO
-
-/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
-#undef HAVE_IOCTL_SIOCGIFADDR
-
/* Define to 1 if you have the <io.h> header file. */
#undef HAVE_IO_H
/* Define to 1 if you have the lber.h header file. */
#undef HAVE_LBER_H
-/* Define to 1 if you have the ldapssl.h header file. */
-#undef HAVE_LDAPSSL_H
-
/* Define to 1 if you have the ldap.h header file. */
#undef HAVE_LDAP_H
-/* Define to 1 if you have the `ldap_init_fd' function. */
-#undef HAVE_LDAP_INIT_FD
-
/* Use LDAPS implementation */
#undef HAVE_LDAP_SSL
@@ -398,12 +389,6 @@
/* Define to 1 if you have the `ssh2' library (-lssh2). */
#undef HAVE_LIBSSH2
-/* Define to 1 if you have the <libssh2.h> header file. */
-#undef HAVE_LIBSSH2_H
-
-/* Define to 1 if you have the <libssh/libssh.h> header file. */
-#undef HAVE_LIBSSH_LIBSSH_H
-
/* Define to 1 if you have the `ssl' library (-lssl). */
#undef HAVE_LIBSSL
@@ -419,33 +404,24 @@
/* Define to 1 if you have the <linux/tcp.h> header file. */
#undef HAVE_LINUX_TCP_H
-/* if your compiler supports LL */
-#undef HAVE_LL
-
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
-/* Define to 1 if you have a working localtime_r function. */
-#undef HAVE_LOCALTIME_R
-
/* Define to 1 if the compiler supports the 'long long' data type. */
#undef HAVE_LONGLONG
/* Define to 1 if you have the `mach_absolute_time' function. */
#undef HAVE_MACH_ABSOLUTE_TIME
-/* Define to 1 if you have the malloc.h header file. */
-#undef HAVE_MALLOC_H
-
-/* Define to 1 if you have the memory.h header file. */
-#undef HAVE_MEMORY_H
-
/* Define to 1 if you have the memrchr function or macro. */
#undef HAVE_MEMRCHR
/* Define to 1 if you have the MSG_NOSIGNAL flag. */
#undef HAVE_MSG_NOSIGNAL
+/* Define to 1 if you have the <msh3.h> header file. */
+#undef HAVE_MSH3_H
+
/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
@@ -458,6 +434,9 @@
/* Define to 1 if you have the <netinet/tcp.h> header file. */
#undef HAVE_NETINET_TCP_H
+/* Define to 1 if you have the <netinet/udp.h> header file. */
+#undef HAVE_NETINET_UDP_H
+
/* Define to 1 if you have the <net/if.h> header file. */
#undef HAVE_NET_IF_H
@@ -492,7 +471,8 @@
/* Define to 1 if you have the <openssl/rsa.h> header file. */
#undef HAVE_OPENSSL_RSA_H
-/* if you have the function SRP_Calc_client_key */
+/* if you have the functions SSL_CTX_set_srp_username and
+ SSL_CTX_set_srp_password */
#undef HAVE_OPENSSL_SRP
/* Define to 1 if you have the <openssl/ssl.h> header file. */
@@ -510,9 +490,6 @@
/* if you have the PK11_CreateManagedGenericObject function */
#undef HAVE_PK11_CREATEMANAGEDGENERICOBJECT
-/* Define to 1 if you have a working poll function. */
-#undef HAVE_POLL
-
/* If you have a fine poll */
#undef HAVE_POLL_FINE
@@ -546,12 +523,18 @@
/* Define to 1 if you have the <rsa.h> header file. */
#undef HAVE_RSA_H
+/* Define to 1 if you have the `sched_yield' function. */
+#undef HAVE_SCHED_YIELD
+
/* Define to 1 if you have the select function. */
#undef HAVE_SELECT
/* Define to 1 if you have the send function. */
#undef HAVE_SEND
+/* Define to 1 if you have the `sendmsg' function. */
+#undef HAVE_SENDMSG
+
/* Define to 1 if you have the <setjmp.h> header file. */
#undef HAVE_SETJMP_H
@@ -564,12 +547,6 @@
/* Define to 1 if you have the `setrlimit' function. */
#undef HAVE_SETRLIMIT
-/* Define to 1 if you have the setsockopt function. */
-#undef HAVE_SETSOCKOPT
-
-/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
-#undef HAVE_SETSOCKOPT_SO_NONBLOCK
-
/* Define to 1 if you have the sigaction function. */
#undef HAVE_SIGACTION
@@ -585,6 +562,9 @@
/* Define to 1 if you have the sigsetjmp function or macro. */
#undef HAVE_SIGSETJMP
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
/* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */
#undef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
@@ -603,6 +583,9 @@
/* Define to 1 if you have the <ssl.h> header file. */
#undef HAVE_SSL_H
+/* Define to 1 if you have the <stdatomic.h> header file. */
+#undef HAVE_STDATOMIC_H
+
/* Define to 1 if you have the <stdbool.h> header file. */
#undef HAVE_STDBOOL_H
@@ -636,18 +619,6 @@
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
-/* Define to 1 if you have the strncmpi function. */
-#undef HAVE_STRNCMPI
-
-/* Define to 1 if you have the strnicmp function. */
-#undef HAVE_STRNICMP
-
-/* Define to 1 if you have the <stropts.h> header file. */
-#undef HAVE_STROPTS_H
-
-/* Define to 1 if you have the strstr function. */
-#undef HAVE_STRSTR
-
/* Define to 1 if you have the strtok_r function. */
#undef HAVE_STRTOK_R
@@ -723,9 +694,6 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define to 1 if you have the `usleep' function. */
-#undef HAVE_USLEEP
-
/* Define to 1 if you have the `utime' function. */
#undef HAVE_UTIME
@@ -741,9 +709,6 @@
/* Define to 1 if compiler supports old gcc variadic macro style. */
#undef HAVE_VARIADIC_MACROS_GCC
-/* Define to 1 if you have the winber.h header file. */
-#undef HAVE_WINBER_H
-
/* Define to 1 if you have the wincrypt.h header file. */
#undef HAVE_WINCRYPT_H
@@ -771,18 +736,12 @@
/* Define this symbol if your OS supports changing the contents of argv */
#undef HAVE_WRITABLE_ARGV
-/* Define to 1 if you have the writev function. */
-#undef HAVE_WRITEV
-
/* Define to 1 if you have the ws2tcpip.h header file. */
#undef HAVE_WS2TCPIP_H
/* Define to 1 if you have the <x509.h> header file. */
#undef HAVE_X509_H
-/* if you have the zlib.h header file */
-#undef HAVE_ZLIB_H
-
/* if libzstd is in use */
#undef HAVE_ZSTD
@@ -795,12 +754,6 @@
/* Define to 1 if you need the lber.h header file even with ldap.h */
#undef NEED_LBER_H
-/* Define to 1 if you need the malloc.h header file even with stdlib.h */
-#undef NEED_MALLOC_H
-
-/* Define to 1 if you need the memory.h header file even with stdlib.h */
-#undef NEED_MEMORY_H
-
/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
#undef NEED_REENTRANT
@@ -840,76 +793,25 @@
/* a suitable file to read random data from */
#undef RANDOM_FILE
-/* Define to the type of arg 1 for recv. */
-#undef RECV_TYPE_ARG1
-
-/* Define to the type of arg 2 for recv. */
-#undef RECV_TYPE_ARG2
-
-/* Define to the type of arg 3 for recv. */
-#undef RECV_TYPE_ARG3
-
-/* Define to the type of arg 4 for recv. */
-#undef RECV_TYPE_ARG4
-
-/* Define to the function return type for recv. */
-#undef RECV_TYPE_RETV
-
-/* Define to the type qualifier of arg 5 for select. */
-#undef SELECT_QUAL_ARG5
-
-/* Define to the type of arg 1 for select. */
-#undef SELECT_TYPE_ARG1
-
-/* Define to the type of args 2, 3 and 4 for select. */
-#undef SELECT_TYPE_ARG234
-
-/* Define to the type of arg 5 for select. */
-#undef SELECT_TYPE_ARG5
-
-/* Define to the function return type for select. */
-#undef SELECT_TYPE_RETV
-
-/* Define to the type qualifier of arg 2 for send. */
-#undef SEND_QUAL_ARG2
-
-/* Define to the type of arg 1 for send. */
-#undef SEND_TYPE_ARG1
-
-/* Define to the type of arg 2 for send. */
-#undef SEND_TYPE_ARG2
-
-/* Define to the type of arg 3 for send. */
-#undef SEND_TYPE_ARG3
-
-/* Define to the type of arg 4 for send. */
-#undef SEND_TYPE_ARG4
-
-/* Define to the function return type for send. */
-#undef SEND_TYPE_RETV
-
-/* The number of bytes in type curl_off_t */
+/* Size of curl_off_t in number of bytes */
#undef SIZEOF_CURL_OFF_T
-/* The number of bytes in type int */
+/* Size of int in number of bytes */
#undef SIZEOF_INT
-/* The number of bytes in type long */
+/* Size of long in number of bytes */
#undef SIZEOF_LONG
-/* The number of bytes in type long long */
+/* Size of long long in number of bytes */
#undef SIZEOF_LONG_LONG
-/* The number of bytes in type off_t */
+/* Size of off_t in number of bytes */
#undef SIZEOF_OFF_T
-/* The number of bytes in type short */
-#undef SIZEOF_SHORT
-
-/* The number of bytes in type size_t */
+/* Size of size_t in number of bytes */
#undef SIZEOF_SIZE_T
-/* The number of bytes in type time_t */
+/* Size of time_t in number of bytes */
#undef SIZEOF_TIME_T
/* Define to 1 if all of the C90 standard headers exist (not just the ones
@@ -917,9 +819,6 @@
backward compatibility; new code need not use it. */
#undef STDC_HEADERS
-/* Define to the type of arg 3 for strerror_r. */
-#undef STRERROR_R_TYPE_ARG3
-
/* if AmiSSL is in use */
#undef USE_AMISSL
@@ -959,8 +858,8 @@
/* if mbedTLS is enabled */
#undef USE_MBEDTLS
-/* if MesaLink is enabled */
-#undef USE_MESALINK
+/* if msh3 is in use */
+#undef USE_MSH3
/* if nghttp2 is in use */
#undef USE_NGHTTP2
@@ -977,6 +876,9 @@
/* if ngtcp2_crypto_openssl is in use */
#undef USE_NGTCP2_CRYPTO_OPENSSL
+/* if ngtcp2_crypto_wolfssl is in use */
+#undef USE_NGTCP2_CRYPTO_WOLFSSL
+
/* if NSS is enabled */
#undef USE_NSS
@@ -1010,6 +912,9 @@
/* Use Unix domain sockets */
#undef USE_UNIX_SOCKETS
+/* enable websockets support */
+#undef USE_WEBSOCKETS
+
/* Define to 1 if you are building a Windows target with crypto API support.
*/
#undef USE_WIN32_CRYPTO
diff --git a/lib/curl_ctype.c b/lib/curl_ctype.c
deleted file mode 100644
index d6cd08a07..000000000
--- a/lib/curl_ctype.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under 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"
-
-#ifndef CURL_DOES_CONVERSIONS
-
-#undef _U
-#define _U (1<<0) /* upper case */
-#undef _L
-#define _L (1<<1) /* lower case */
-#undef _N
-#define _N (1<<2) /* decimal numerical digit */
-#undef _S
-#define _S (1<<3) /* space */
-#undef _P
-#define _P (1<<4) /* punctuation */
-#undef _C
-#define _C (1<<5) /* control */
-#undef _X
-#define _X (1<<6) /* hexadecimal letter */
-#undef _B
-#define _B (1<<7) /* blank */
-
-static const unsigned char ascii[128] = {
- _C, _C, _C, _C, _C, _C, _C, _C,
- _C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C,
- _C, _C, _C, _C, _C, _C, _C, _C,
- _C, _C, _C, _C, _C, _C, _C, _C,
- _S|_B, _P, _P, _P, _P, _P, _P, _P,
- _P, _P, _P, _P, _P, _P, _P, _P,
- _N, _N, _N, _N, _N, _N, _N, _N,
- _N, _N, _P, _P, _P, _P, _P, _P,
- _P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U,
- _U, _U, _U, _U, _U, _U, _U, _U,
- _U, _U, _U, _U, _U, _U, _U, _U,
- _U, _U, _U, _P, _P, _P, _P, _P,
- _P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L,
- _L, _L, _L, _L, _L, _L, _L, _L,
- _L, _L, _L, _L, _L, _L, _L, _L,
- _L, _L, _L, _P, _P, _P, _P, _C
-};
-
-int Curl_isspace(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & _S);
-}
-
-int Curl_isdigit(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & _N);
-}
-
-int Curl_isalnum(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & (_N|_U|_L));
-}
-
-int Curl_isxdigit(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & (_N|_X));
-}
-
-int Curl_isgraph(int c)
-{
- if((c < 0) || (c >= 0x80) || (c == ' '))
- return FALSE;
- return (ascii[c] & (_N|_X|_U|_L|_P|_S));
-}
-
-int Curl_isprint(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & (_N|_X|_U|_L|_P|_S));
-}
-
-int Curl_isalpha(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & (_U|_L));
-}
-
-int Curl_isupper(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & (_U));
-}
-
-int Curl_islower(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & (_L));
-}
-
-int Curl_iscntrl(int c)
-{
- if((c < 0) || (c >= 0x80))
- return FALSE;
- return (ascii[c] & (_C));
-}
-
-#endif /* !CURL_DOES_CONVERSIONS */
diff --git a/lib/curl_ctype.h b/lib/curl_ctype.h
index 17dfaa094..dc6b8cab8 100644
--- a/lib/curl_ctype.h
+++ b/lib/curl_ctype.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,62 +20,28 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#ifdef CURL_DOES_CONVERSIONS
-
-/*
- * Uppercase macro versions of ANSI/ISO is*() functions/macros which
- * avoid negative number inputs with argument byte codes > 127.
+ * SPDX-License-Identifier: curl
*
- * For non-ASCII platforms the C library character classification routines
- * are used despite being locale-dependent, because this is better than
- * not to work at all.
- */
-#include <ctype.h>
-
-#define ISSPACE(x) (isspace((int) ((unsigned char)x)))
-#define ISDIGIT(x) (isdigit((int) ((unsigned char)x)))
-#define ISALNUM(x) (isalnum((int) ((unsigned char)x)))
-#define ISXDIGIT(x) (isxdigit((int) ((unsigned char)x)))
-#define ISGRAPH(x) (isgraph((int) ((unsigned char)x)))
-#define ISALPHA(x) (isalpha((int) ((unsigned char)x)))
-#define ISPRINT(x) (isprint((int) ((unsigned char)x)))
-#define ISUPPER(x) (isupper((int) ((unsigned char)x)))
-#define ISLOWER(x) (islower((int) ((unsigned char)x)))
-#define ISCNTRL(x) (iscntrl((int) ((unsigned char)x)))
-#define ISASCII(x) (isascii((int) ((unsigned char)x)))
-
-#else
-
-int Curl_isspace(int c);
-int Curl_isdigit(int c);
-int Curl_isalnum(int c);
-int Curl_isxdigit(int c);
-int Curl_isgraph(int c);
-int Curl_isprint(int c);
-int Curl_isalpha(int c);
-int Curl_isupper(int c);
-int Curl_islower(int c);
-int Curl_iscntrl(int c);
-
-#define ISSPACE(x) (Curl_isspace((int) ((unsigned char)x)))
-#define ISDIGIT(x) (Curl_isdigit((int) ((unsigned char)x)))
-#define ISALNUM(x) (Curl_isalnum((int) ((unsigned char)x)))
-#define ISXDIGIT(x) (Curl_isxdigit((int) ((unsigned char)x)))
-#define ISGRAPH(x) (Curl_isgraph((int) ((unsigned char)x)))
-#define ISALPHA(x) (Curl_isalpha((int) ((unsigned char)x)))
-#define ISPRINT(x) (Curl_isprint((int) ((unsigned char)x)))
-#define ISUPPER(x) (Curl_isupper((int) ((unsigned char)x)))
-#define ISLOWER(x) (Curl_islower((int) ((unsigned char)x)))
-#define ISCNTRL(x) (Curl_iscntrl((int) ((unsigned char)x)))
-#define ISASCII(x) (((x) >= 0) && ((x) <= 0x80))
-
-#endif
+ ***************************************************************************/
-#define ISBLANK(x) (int)((((unsigned char)x) == ' ') || \
- (((unsigned char)x) == '\t'))
+#define ISLOWHEXALHA(x) (((x) >= 'a') && ((x) <= 'f'))
+#define ISUPHEXALHA(x) (((x) >= 'A') && ((x) <= 'F'))
+
+#define ISLOWCNTRL(x) ((x) >= 0 && ((x) <= 0x1f))
+#define IS7F(x) ((x) == 0x7f)
+
+#define ISLOWPRINT(x) (((x) >= 9) && ((x) <= 0x0d))
+
+#define ISPRINT(x) (ISLOWPRINT(x) || (((x) >= ' ') && ((x) <= 0x7e)))
+#define ISGRAPH(x) (ISLOWPRINT(x) || (((x) > ' ') && ((x) <= 0x7e)))
+#define ISCNTRL(x) (ISLOWCNTRL(x) || IS7F(x))
+#define ISALPHA(x) (ISLOWER(x) || ISUPPER(x))
+#define ISXDIGIT(x) (ISDIGIT(x) || ISLOWHEXALHA(x) || ISUPHEXALHA(x))
+#define ISALNUM(x) (ISDIGIT(x) || ISLOWER(x) || ISUPPER(x))
+#define ISUPPER(x) (((x) >= 'A') && ((x) <= 'Z'))
+#define ISLOWER(x) (((x) >= 'a') && ((x) <= 'z'))
+#define ISDIGIT(x) (((x) >= '0') && ((x) <= '9'))
+#define ISBLANK(x) (((x) == ' ') || ((x) == '\t'))
+#define ISSPACE(x) (ISBLANK(x) || (((x) >= 0xa) && ((x) <= 0x0d)))
#endif /* HEADER_CURL_CTYPE_H */
diff --git a/lib/curl_des.c b/lib/curl_des.c
index 76185cbf2..a2bf648c2 100644
--- a/lib/curl_des.c
+++ b/lib/curl_des.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2015 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2015 - 2022, 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
@@ -18,11 +18,18 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
-#if defined(USE_NTLM) && !defined(USE_OPENSSL) && !defined(USE_WOLFSSL)
+#if defined(USE_CURL_NTLM_CORE) && !defined(USE_WOLFSSL) && \
+ (defined(USE_GNUTLS) || \
+ defined(USE_NSS) || \
+ defined(USE_SECTRANSP) || \
+ defined(USE_OS400CRYPTO) || \
+ defined(USE_WIN32_CRYPTO))
#include "curl_des.h"
@@ -34,7 +41,7 @@
*
* The function is a port of the Java based oddParity() function over at:
*
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
*
* Parameters:
*
@@ -60,4 +67,4 @@ void Curl_des_set_odd_parity(unsigned char *bytes, size_t len)
}
}
-#endif /* USE_NTLM && !USE_OPENSSL */
+#endif
diff --git a/lib/curl_des.h b/lib/curl_des.h
index 438706a0d..c1c167471 100644
--- a/lib/curl_des.h
+++ b/lib/curl_des.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2015 - 2020, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2015 - 2022, 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
@@ -20,15 +20,22 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
-#if defined(USE_NTLM) && !defined(USE_OPENSSL)
+#if defined(USE_CURL_NTLM_CORE) && !defined(USE_WOLFSSL) && \
+ (defined(USE_GNUTLS) || \
+ defined(USE_NSS) || \
+ defined(USE_SECTRANSP) || \
+ defined(USE_OS400CRYPTO) || \
+ defined(USE_WIN32_CRYPTO))
/* Applies odd parity to the given byte array */
void Curl_des_set_odd_parity(unsigned char *bytes, size_t length);
-#endif /* USE_NTLM && !USE_OPENSSL */
+#endif
#endif /* HEADER_CURL_DES_H */
diff --git a/lib/curl_endian.c b/lib/curl_endian.c
index ecde74bfb..3cc7734f3 100644
--- a/lib/curl_endian.c
+++ b/lib/curl_endian.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_endian.h b/lib/curl_endian.h
index 4e12d7da4..758d55f2c 100644
--- a/lib/curl_endian.h
+++ b/lib/curl_endian.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Converts a 16-bit integer from little endian */
diff --git a/lib/curl_fnmatch.c b/lib/curl_fnmatch.c
index 4bfa58598..0dd1eb5ef 100644
--- a/lib/curl_fnmatch.c
+++ b/lib/curl_fnmatch.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_fnmatch.h b/lib/curl_fnmatch.h
index 1c80ea779..8324be533 100644
--- a/lib/curl_fnmatch.h
+++ b/lib/curl_fnmatch.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#define CURL_FNMATCH_MATCH 0
diff --git a/lib/curl_get_line.c b/lib/curl_get_line.c
index 8f3b0bd8c..22e3705f4 100644
--- a/lib/curl_get_line.c
+++ b/lib/curl_get_line.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,12 +18,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#if !defined(CURL_DISABLE_COOKIES) || !defined(CURL_DISABLE_ALTSVC) || \
- !defined(CURL_DISABLE_HSTS)
+ !defined(CURL_DISABLE_HSTS) || !defined(CURL_DISABLE_NETRC)
#include "curl_get_line.h"
#include "curl_memory.h"
@@ -31,8 +33,8 @@
#include "memdebug.h"
/*
- * get_line() makes sure to only return complete whole lines that fit in 'len'
- * bytes and end with a newline.
+ * Curl_get_line() makes sure to only return complete whole lines that fit in
+ * 'len' bytes and end with a newline.
*/
char *Curl_get_line(char *buf, int len, FILE *input)
{
diff --git a/lib/curl_get_line.h b/lib/curl_get_line.h
index 597aa09a9..b2a534d00 100644
--- a/lib/curl_get_line.h
+++ b/lib/curl_get_line.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* get_line() makes sure to only return complete whole lines that fit in 'len'
diff --git a/lib/curl_gethostname.c b/lib/curl_gethostname.c
index 2d5ff61cf..4747e938d 100644
--- a/lib/curl_gethostname.c
+++ b/lib/curl_gethostname.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_gethostname.h b/lib/curl_gethostname.h
index 2161c40ac..b7360969a 100644
--- a/lib/curl_gethostname.h
+++ b/lib/curl_gethostname.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Hostname buffer size */
diff --git a/lib/curl_gssapi.c b/lib/curl_gssapi.c
index 8f340562b..01ab48ec3 100644
--- a/lib/curl_gssapi.c
+++ b/lib/curl_gssapi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2011 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -60,7 +62,7 @@ OM_uint32 Curl_gss_init_sec_context(
#ifdef GSS_C_DELEG_POLICY_FLAG
req_flags |= GSS_C_DELEG_POLICY_FLAG;
#else
- infof(data, "warning: support for CURLGSSAPI_DELEGATION_POLICY_FLAG not "
+ infof(data, "WARNING: support for CURLGSSAPI_DELEGATION_POLICY_FLAG not "
"compiled in");
#endif
}
@@ -89,7 +91,7 @@ static size_t display_gss_error(OM_uint32 status, int type,
OM_uint32 maj_stat;
OM_uint32 min_stat;
OM_uint32 msg_ctx = 0;
- gss_buffer_desc status_string;
+ gss_buffer_desc status_string = GSS_C_EMPTY_BUFFER;
do {
maj_stat = gss_display_status(&min_stat,
@@ -98,10 +100,12 @@ static size_t display_gss_error(OM_uint32 status, int type,
GSS_C_NO_OID,
&msg_ctx,
&status_string);
- if(GSS_LOG_BUFFER_LEN > len + status_string.length + 3) {
- len += msnprintf(buf + len, GSS_LOG_BUFFER_LEN - len,
- "%.*s. ", (int)status_string.length,
- (char *)status_string.value);
+ if(maj_stat == GSS_S_COMPLETE && status_string.length > 0) {
+ if(GSS_LOG_BUFFER_LEN > len + status_string.length + 3) {
+ len += msnprintf(buf + len, GSS_LOG_BUFFER_LEN - len,
+ "%.*s. ", (int)status_string.length,
+ (char *)status_string.value);
+ }
}
gss_release_buffer(&min_stat, &status_string);
} while(!GSS_ERROR(maj_stat) && msg_ctx);
diff --git a/lib/curl_gssapi.h b/lib/curl_gssapi.h
index 466d09ed0..b4ed482aa 100644
--- a/lib/curl_gssapi.h
+++ b/lib/curl_gssapi.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_hmac.h b/lib/curl_hmac.h
index 5755655d0..36c0bd62e 100644
--- a/lib/curl_hmac.h
+++ b/lib/curl_hmac.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,10 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_CRYPTO_AUTH
+#include <curl/curl.h>
+
#define HMAC_MD5_LENGTH 16
typedef CURLcode (* HMAC_hinit_func)(void *context);
diff --git a/lib/curl_krb5.h b/lib/curl_krb5.h
index ca0684074..ccd6f10e3 100644
--- a/lib/curl_krb5.h
+++ b/lib/curl_krb5.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
struct Curl_sec_client_mech {
diff --git a/lib/curl_ldap.h b/lib/curl_ldap.h
index 124e18b13..ba3ede426 100644
--- a/lib/curl_ldap.h
+++ b/lib/curl_ldap.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_LDAP
extern const struct Curl_handler Curl_handler_ldap;
diff --git a/lib/curl_md4.h b/lib/curl_md4.h
index f9dafcb53..8049355cf 100644
--- a/lib/curl_md4.h
+++ b/lib/curl_md4.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_md5.h b/lib/curl_md5.h
index b7d7c1f5d..789329654 100644
--- a/lib/curl_md5.h
+++ b/lib/curl_md5.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_CRYPTO_AUTH
diff --git a/lib/curl_memory.h b/lib/curl_memory.h
index 580629063..092fc9f75 100644
--- a/lib/curl_memory.h
+++ b/lib/curl_memory.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/lib/curl_memrchr.c b/lib/curl_memrchr.c
index 0bd845f69..c329a6176 100644
--- a/lib/curl_memrchr.c
+++ b/lib/curl_memrchr.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_memrchr.h b/lib/curl_memrchr.h
index c8394bb43..e7654e1d9 100644
--- a/lib/curl_memrchr.h
+++ b/lib/curl_memrchr.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_multibyte.c b/lib/curl_multibyte.c
index e9d2a8cb8..309dccbfe 100644
--- a/lib/curl_multibyte.c
+++ b/lib/curl_multibyte.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -104,7 +106,7 @@ int curlx_win32_open(const char *filename, int oflag, ...)
#ifdef _UNICODE
if(filename_w) {
result = _wopen(filename_w, oflag, pmode);
- free(filename_w);
+ curlx_unicodefree(filename_w);
}
else
errno = EINVAL;
@@ -124,8 +126,8 @@ FILE *curlx_win32_fopen(const char *filename, const char *mode)
result = _wfopen(filename_w, mode_w);
else
errno = EINVAL;
- free(filename_w);
- free(mode_w);
+ curlx_unicodefree(filename_w);
+ curlx_unicodefree(mode_w);
return result;
#else
return (fopen)(filename, mode);
@@ -143,7 +145,7 @@ int curlx_win32_stat(const char *path, struct_stat *buffer)
#else
result = _wstati64(path_w, buffer);
#endif
- free(path_w);
+ curlx_unicodefree(path_w);
}
else
errno = EINVAL;
@@ -164,7 +166,7 @@ int curlx_win32_access(const char *path, int mode)
wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);
if(path_w) {
result = _waccess(path_w, mode);
- free(path_w);
+ curlx_unicodefree(path_w);
}
else
errno = EINVAL;
diff --git a/lib/curl_multibyte.h b/lib/curl_multibyte.h
index 491155e6a..929714873 100644
--- a/lib/curl_multibyte.h
+++ b/lib/curl_multibyte.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
index ed123d0c1..38e193c18 100644
--- a/lib/curl_ntlm_core.c
+++ b/lib/curl_ntlm_core.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -27,7 +29,7 @@
/*
* NTLM details:
*
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
* https://www.innovation.ch/java/ntlm.html
*/
@@ -58,14 +60,19 @@
#if defined(USE_OPENSSL_DES) || defined(USE_WOLFSSL)
-#ifdef USE_WOLFSSL
-#include <wolfssl/options.h>
-#endif
-
+#if defined(USE_OPENSSL)
# include <openssl/des.h>
# include <openssl/md5.h>
# include <openssl/ssl.h>
# include <openssl/rand.h>
+#else
+# include <wolfssl/options.h>
+# include <wolfssl/openssl/des.h>
+# include <wolfssl/openssl/md5.h>
+# include <wolfssl/openssl/ssl.h>
+# include <wolfssl/openssl/rand.h>
+#endif
+
# if (defined(OPENSSL_VERSION_NUMBER) && \
(OPENSSL_VERSION_NUMBER < 0x00907001L)) && !defined(USE_WOLFSSL)
# define DES_key_schedule des_key_schedule
@@ -108,7 +115,6 @@
#endif
#include "urldata.h"
-#include "non-ascii.h"
#include "strcase.h"
#include "curl_ntlm_core.h"
#include "curl_md5.h"
@@ -402,11 +408,9 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
/*
* Set up lanmanager hashed password
*/
-CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
- const char *password,
+CURLcode Curl_ntlm_core_mk_lm_hash(const char *password,
unsigned char *lmbuffer /* 21 bytes */)
{
- CURLcode result;
unsigned char pw[14];
static const unsigned char magic[] = {
0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 /* i.e. KGS!@#$% */
@@ -416,14 +420,6 @@ CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
Curl_strntoupper((char *)pw, password, len);
memset(&pw[len], 0, 14 - len);
- /*
- * The LanManager hashed password needs to be created using the
- * password in the network encoding not the host encoding.
- */
- result = Curl_convert_to_network(data, (char *)pw, 14);
- if(result)
- return result;
-
{
/* Create LanManager hashed password. */
@@ -455,7 +451,6 @@ CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
return CURLE_OK;
}
-#ifdef USE_NTRESPONSES
static void ascii_to_unicode_le(unsigned char *dest, const char *src,
size_t srclen)
{
@@ -466,7 +461,7 @@ static void ascii_to_unicode_le(unsigned char *dest, const char *src,
}
}
-#if defined(USE_NTLM_V2) && !defined(USE_WINDOWS_SSPI)
+#if !defined(USE_WINDOWS_SSPI)
static void ascii_uppercase_to_unicode_le(unsigned char *dest,
const char *src, size_t srclen)
@@ -478,19 +473,17 @@ static void ascii_uppercase_to_unicode_le(unsigned char *dest,
}
}
-#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
+#endif /* !USE_WINDOWS_SSPI */
/*
* Set up nt hashed passwords
* @unittest: 1600
*/
-CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
- const char *password,
+CURLcode Curl_ntlm_core_mk_nt_hash(const char *password,
unsigned char *ntbuffer /* 21 bytes */)
{
size_t len = strlen(password);
unsigned char *pw;
- CURLcode result;
if(len > SIZE_T_MAX/2) /* avoid integer overflow */
return CURLE_OUT_OF_MEMORY;
pw = len ? malloc(len * 2) : (unsigned char *)strdup("");
@@ -499,22 +492,16 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
ascii_to_unicode_le(pw, password, len);
- /*
- * The NT hashed password needs to be created using the password in the
- * network encoding not the host encoding.
- */
- result = Curl_convert_to_network(data, (char *)pw, len * 2);
- if(!result) {
- /* Create NT hashed password. */
- Curl_md4it(ntbuffer, pw, 2 * len);
- memset(ntbuffer + 16, 0, 21 - 16);
- }
+ /* Create NT hashed password. */
+ Curl_md4it(ntbuffer, pw, 2 * len);
+ memset(ntbuffer + 16, 0, 21 - 16);
+
free(pw);
- return result;
+ return CURLE_OK;
}
-#if defined(USE_NTLM_V2) && !defined(USE_WINDOWS_SSPI)
+#if !defined(USE_WINDOWS_SSPI)
/* Timestamp in tenths of a microsecond since January 1, 1601 00:00:00 UTC. */
struct ms_filetime {
@@ -730,8 +717,6 @@ CURLcode Curl_ntlm_core_mk_lmv2_resp(unsigned char *ntlmv2hash,
return result;
}
-#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
-
-#endif /* USE_NTRESPONSES */
+#endif /* !USE_WINDOWS_SSPI */
#endif /* USE_CURL_NTLM_CORE */
diff --git a/lib/curl_ntlm_core.h b/lib/curl_ntlm_core.h
index 02b39d485..60444c9dc 100644
--- a/lib/curl_ntlm_core.h
+++ b/lib/curl_ntlm_core.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -35,29 +37,13 @@
#define NTLM_NEEDS_NSS_INIT
#endif
-#if defined(USE_OPENSSL) || defined(USE_WOLFSSL)
#ifdef USE_WOLFSSL
# include <wolfssl/options.h>
-#endif
+# include <wolfssl/openssl/ssl.h>
+#elif defined(USE_OPENSSL)
# include <openssl/ssl.h>
#endif
-/* Define USE_NTRESPONSES in order to make the type-3 message include
- * the NT response message. */
-#define USE_NTRESPONSES
-
-/* Define USE_NTLM2SESSION in order to make the type-3 message include the
- NTLM2Session response message, requires USE_NTRESPONSES defined to 1 */
-#if defined(USE_NTRESPONSES)
-#define USE_NTLM2SESSION
-#endif
-
-/* Define USE_NTLM_V2 in order to allow the type-3 message to include the
- LMv2 and NTLMv2 response messages, requires USE_NTRESPONSES defined to 1 */
-#if defined(USE_NTRESPONSES)
-#define USE_NTLM_V2
-#endif
-
/* Helpers to generate function byte arguments in little endian order */
#define SHORTPAIR(x) ((int)((x) & 0xff)), ((int)(((x) >> 8) & 0xff))
#define LONGQUARTET(x) ((int)((x) & 0xff)), ((int)(((x) >> 8) & 0xff)), \
@@ -67,16 +53,13 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
const unsigned char *plaintext,
unsigned char *results);
-CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
- const char *password,
+CURLcode Curl_ntlm_core_mk_lm_hash(const char *password,
unsigned char *lmbuffer /* 21 bytes */);
-#ifdef USE_NTRESPONSES
-CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
- const char *password,
+CURLcode Curl_ntlm_core_mk_nt_hash(const char *password,
unsigned char *ntbuffer /* 21 bytes */);
-#if defined(USE_NTLM_V2) && !defined(USE_WINDOWS_SSPI)
+#if !defined(USE_WINDOWS_SSPI)
CURLcode Curl_hmac_md5(const unsigned char *key, unsigned int keylen,
const unsigned char *data, unsigned int datalen,
@@ -98,9 +81,7 @@ CURLcode Curl_ntlm_core_mk_lmv2_resp(unsigned char *ntlmv2hash,
unsigned char *challenge_server,
unsigned char *lmresp);
-#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
-
-#endif /* USE_NTRESPONSES */
+#endif /* !USE_WINDOWS_SSPI */
#endif /* USE_CURL_NTLM_CORE */
diff --git a/lib/curl_ntlm_wb.c b/lib/curl_ntlm_wb.c
index 5a3bc3c89..33dcf0ce2 100644
--- a/lib/curl_ntlm_wb.c
+++ b/lib/curl_ntlm_wb.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -28,7 +30,7 @@
/*
* NTLM details:
*
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
* https://www.innovation.ch/java/ntlm.html
*/
diff --git a/lib/curl_ntlm_wb.h b/lib/curl_ntlm_wb.h
index 961b56873..1f04db8c3 100644
--- a/lib/curl_ntlm_wb.h
+++ b/lib/curl_ntlm_wb.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_path.c b/lib/curl_path.c
index 65106188c..b55e83047 100644
--- a/lib/curl_path.c
+++ b/lib/curl_path.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl AND ISC
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -40,7 +42,7 @@ CURLcode Curl_getworkingpath(struct Curl_easy *data,
char *working_path;
size_t working_path_len;
CURLcode result =
- Curl_urldecode(data, data->state.up.path, 0, &working_path,
+ Curl_urldecode(data->state.up.path, 0, &working_path,
&working_path_len, REJECT_ZERO);
if(result)
return result;
@@ -120,7 +122,8 @@ CURLcode Curl_get_pathname(const char **cpp, char **path, char *homedir)
bool relativePath = false;
static const char WHITESPACE[] = " \t\r\n";
- if(!*cp) {
+ DEBUGASSERT(homedir);
+ if(!*cp || !homedir) {
*cpp = NULL;
*path = NULL;
return CURLE_QUOTE_ERROR;
diff --git a/lib/curl_path.h b/lib/curl_path.h
index a376bd1d2..98e56eaad 100644
--- a/lib/curl_path.h
+++ b/lib/curl_path.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_printf.h b/lib/curl_printf.h
index 9fa625f10..3823828cd 100644
--- a/lib/curl_printf.h
+++ b/lib/curl_printf.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/lib/curl_range.c b/lib/curl_range.c
index 24bdb3052..dd92d05b3 100644
--- a/lib/curl_range.c
+++ b/lib/curl_range.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -45,7 +47,7 @@ CURLcode Curl_range(struct Curl_easy *data)
from_t = curlx_strtoofft(data->state.range, &ptr, 0, &from);
if(from_t == CURL_OFFT_FLOW)
return CURLE_RANGE_ERROR;
- while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
+ while(*ptr && (ISBLANK(*ptr) || (*ptr == '-')))
ptr++;
to_t = curlx_strtoofft(ptr, &ptr2, 0, &to);
if(to_t == CURL_OFFT_FLOW)
diff --git a/lib/curl_range.h b/lib/curl_range.h
index 0a07baf14..33570abc2 100644
--- a/lib/curl_range.h
+++ b/lib/curl_range.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_rtmp.c b/lib/curl_rtmp.c
index 2fa026796..b0c371041 100644
--- a/lib/curl_rtmp.c
+++ b/lib/curl_rtmp.c
@@ -5,8 +5,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- * Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012, Howard Chu, <hyc@highlandsun.com>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_rtmp.h b/lib/curl_rtmp.h
index f45fa71d1..f856085dc 100644
--- a/lib/curl_rtmp.h
+++ b/lib/curl_rtmp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2010 - 2020, Howard Chu, <hyc@highlandsun.com>
+ * Copyright (C) 2010 - 2022, Howard Chu, <hyc@highlandsun.com>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifdef USE_LIBRTMP
extern const struct Curl_handler Curl_handler_rtmp;
diff --git a/lib/curl_sasl.c b/lib/curl_sasl.c
index 8d39e4f81..9684ee476 100644
--- a/lib/curl_sasl.c
+++ b/lib/curl_sasl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC2195 CRAM-MD5 authentication
* RFC2617 Basic and Digest Access Authentication
* RFC2831 DIGEST-MD5 authentication
@@ -48,7 +50,6 @@
#include "warnless.h"
#include "strtok.h"
#include "sendf.h"
-#include "non-ascii.h" /* included for Curl_convert_... prototypes */
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
@@ -283,8 +284,7 @@ static CURLcode get_server_message(struct SASL *sasl, struct Curl_easy *data,
}
/* Encode the outgoing SASL message. */
-static CURLcode build_message(struct SASL *sasl, struct Curl_easy *data,
- struct bufref *msg)
+static CURLcode build_message(struct SASL *sasl, struct bufref *msg)
{
CURLcode result = CURLE_OK;
@@ -297,7 +297,7 @@ static CURLcode build_message(struct SASL *sasl, struct Curl_easy *data,
char *base64;
size_t base64len;
- result = Curl_base64_encode(data, (const char *) Curl_bufref_ptr(msg),
+ result = Curl_base64_encode((const char *) Curl_bufref_ptr(msg),
Curl_bufref_len(msg), &base64, &base64len);
if(!result)
Curl_bufref_set(msg, base64, base64len, curl_free);
@@ -312,10 +312,10 @@ static CURLcode build_message(struct SASL *sasl, struct Curl_easy *data,
*
* Check if we have enough auth data and capabilities to authenticate.
*/
-bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn)
+bool Curl_sasl_can_authenticate(struct SASL *sasl, struct Curl_easy *data)
{
/* Have credentials been provided? */
- if(conn->bits.user_passwd)
+ if(data->state.aptr.user)
return TRUE;
/* EXTERNAL can authenticate without a user name and/or password */
@@ -367,7 +367,7 @@ CURLcode Curl_sasl_start(struct SASL *sasl, struct Curl_easy *data,
if(force_ir || data->set.sasl_ir)
result = Curl_auth_create_external_message(conn->user, &resp);
}
- else if(conn->bits.user_passwd) {
+ else if(data->state.aptr.user) {
#if defined(USE_KERBEROS5)
if((enabledmechs & SASL_MECH_GSSAPI) && Curl_auth_is_gssapi_supported() &&
Curl_auth_user_contains_domain(conn->user)) {
@@ -494,7 +494,7 @@ CURLcode Curl_sasl_start(struct SASL *sasl, struct Curl_easy *data,
if(!result && mech) {
sasl->curmech = mech;
if(Curl_bufref_ptr(&resp))
- result = build_message(sasl, data, &resp);
+ result = build_message(sasl, &resp);
if(sasl->params->maxirlen &&
strlen(mech) + Curl_bufref_len(&resp) > sasl->params->maxirlen)
@@ -672,7 +672,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
#endif
case SASL_OAUTH2:
- /* Create the authorisation message */
+ /* Create the authorization message */
if(sasl->authused == SASL_MECH_OAUTHBEARER) {
result = Curl_auth_create_oauth_bearer_message(conn->user,
hostname,
@@ -729,7 +729,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
newstate = SASL_CANCEL;
break;
case CURLE_OK:
- result = build_message(sasl, data, &resp);
+ result = build_message(sasl, &resp);
if(!result)
result = sasl->params->contauth(data, sasl->curmech, &resp);
break;
diff --git a/lib/curl_sasl.h b/lib/curl_sasl.h
index 91458c74a..c709d56a6 100644
--- a/lib/curl_sasl.h
+++ b/lib/curl_sasl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <curl/curl.h>
@@ -150,7 +152,7 @@ void Curl_sasl_init(struct SASL *sasl, struct Curl_easy *data,
const struct SASLproto *params);
/* Check if we have enough auth data and capabilities to authenticate */
-bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn);
+bool Curl_sasl_can_authenticate(struct SASL *sasl, struct Curl_easy *data);
/* Calculate the required login details for SASL authentication */
CURLcode Curl_sasl_start(struct SASL *sasl, struct Curl_easy *data,
diff --git a/lib/curl_setup.h b/lib/curl_setup.h
index 61384cdff..ac27b130c 100644
--- a/lib/curl_setup.h
+++ b/lib/curl_setup.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,12 +20,19 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#if defined(BUILDING_LIBCURL) && !defined(CURL_NO_OLDIES)
#define CURL_NO_OLDIES
#endif
+/* define mingw version macros, eg __MINGW{32,64}_{MINOR,MAJOR}_VERSION */
+#ifdef __MINGW32__
+#include <_mingw.h>
+#endif
+
/*
* Disable Visual Studio warnings:
* 4127 "conditional expression is constant"
@@ -101,14 +108,6 @@
# include "config-os400.h"
#endif
-#ifdef TPF
-# include "config-tpf.h"
-#endif
-
-#ifdef __VXWORKS__
-# include "config-vxworks.h"
-#endif
-
#ifdef __PLAN9__
# include "config-plan9.h"
#endif
@@ -159,8 +158,6 @@
/* please, do it beyond the point further indicated in this file. */
/* ================================================================ */
-#include <curl/curl.h>
-
/*
* Disable other protocols when http is the only one desired.
*/
@@ -220,7 +217,7 @@
/* ================================================================ */
/* No system header file shall be included in this file before this */
-/* point. The only allowed ones are those included from curl/system.h */
+/* point. */
/* ================================================================ */
/*
@@ -247,6 +244,8 @@
# include "setup-win32.h"
#endif
+#include <curl/system.h>
+
/*
* Use getaddrinfo to resolve the IPv4 address literal. If the current network
* interface doesn't support IPv4, but supports IPv6, NAT64, and DNS64,
@@ -274,31 +273,42 @@
# include <extra/strdup.h>
#endif
-#ifdef TPF
-# include <strings.h> /* for bzero, strcasecmp, and strncasecmp */
-# include <string.h> /* for strcpy and strlen */
-# include <stdlib.h> /* for rand and srand */
-# include <sys/socket.h> /* for select and ioctl*/
-# include <netdb.h> /* for in_addr_t definition */
-# include <tpf/sysapi.h> /* for tpf_process_signals */
- /* change which select is used for libcurl */
-# define select(a,b,c,d,e) tpf_select_libcurl(a,b,c,d,e)
-#endif
-
-#ifdef __VXWORKS__
-# include <sockLib.h> /* for generic BSD socket functions */
-# include <ioLib.h> /* for basic I/O interface functions */
-#endif
-
#ifdef __AMIGA__
+# ifdef __amigaos4__
+# define __USE_INLINE__
+ /* use our own resolver which uses runtime feature detection */
+# define CURLRES_AMIGA
+ /* getaddrinfo() currently crashes bsdsocket.library, so disable */
+# undef HAVE_GETADDRINFO
+# if !(defined(__NEWLIB__) || \
+ (defined(__CLIB2__) && defined(__THREAD_SAFE)))
+ /* disable threaded resolver with clib2 - requires newlib or clib-ts */
+# undef USE_THREADS_POSIX
+# endif
+# endif
# include <exec/types.h>
# include <exec/execbase.h>
# include <proto/exec.h>
# include <proto/dos.h>
# include <unistd.h>
-# ifdef HAVE_PROTO_BSDSOCKET_H
-# include <proto/bsdsocket.h> /* ensure bsdsocket.library use */
-# define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
+# if defined(HAVE_PROTO_BSDSOCKET_H) && \
+ (!defined(__amigaos4__) || defined(USE_AMISSL))
+ /* use bsdsocket.library directly, instead of libc networking functions */
+# include <proto/bsdsocket.h>
+# ifdef __amigaos4__
+ int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
+ fd_set *errorfds, struct timeval *timeout);
+# define select(a,b,c,d,e) Curl_amiga_select(a,b,c,d,e)
+# else
+# define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
+# endif
+ /* must not use libc's fcntl() on bsdsocket.library sockfds! */
+# undef HAVE_FCNTL
+# undef HAVE_FCNTL_O_NONBLOCK
+# else
+ /* use libc networking and hence close() and fnctl() */
+# undef HAVE_CLOSESOCKET_CAMEL
+# undef HAVE_IOCTLSOCKET_CAMEL
# endif
/*
* In clib2 arpa/inet.h warns that some prototypes may clash
@@ -312,8 +322,10 @@
#include <assert.h>
#endif
-#ifdef __TANDEM /* for nsr-tandem-nsk systems */
-#include <floss.h>
+#ifdef __TANDEM /* for ns*-tandem-nsk systems */
+# if ! defined __LP64
+# include <floss.h> /* FLOSS is only used for 32-bit builds. */
+# endif
#endif
#ifndef STDC_HEADERS /* no standard C headers! */
@@ -580,7 +592,6 @@
/* now undef the stock libc functions just to avoid them being used */
# undef HAVE_GETADDRINFO
# undef HAVE_FREEADDRINFO
-# undef HAVE_GETHOSTBYNAME
#elif defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
# define CURLRES_ASYNCH
# define CURLRES_THREADED
@@ -619,14 +630,6 @@
# endif
#endif
-#ifdef NETWARE
-int netware_init(void);
-#ifndef __NOVELL_LIBC__
-#include <sys/bsdskt.h>
-#include <sys/timeval.h>
-#endif
-#endif
-
#if defined(HAVE_LIBIDN2) && defined(HAVE_IDN2_H) && !defined(USE_WIN32_IDN)
/* The lib and header are present */
#define USE_LIBIDN2
@@ -641,7 +644,7 @@ int netware_init(void);
#if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
defined(USE_MBEDTLS) || \
defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || \
- defined(USE_SECTRANSP) || defined(USE_GSKIT) || defined(USE_MESALINK) || \
+ defined(USE_SECTRANSP) || defined(USE_GSKIT) || \
defined(USE_BEARSSL) || defined(USE_RUSTLS)
#define USE_SSL /* SSL support has been enabled */
#endif
@@ -739,12 +742,12 @@ int netware_init(void);
#define SHUT_RDWR 0x02
#endif
-/* Define S_ISREG if not defined by system headers, f.e. MSVC */
+/* Define S_ISREG if not defined by system headers, e.g. MSVC */
#if !defined(S_ISREG) && defined(S_IFMT) && defined(S_IFREG)
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
-/* Define S_ISDIR if not defined by system headers, f.e. MSVC */
+/* Define S_ISDIR if not defined by system headers, e.g. MSVC */
#if !defined(S_ISDIR) && defined(S_IFMT) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
@@ -804,6 +807,11 @@ endings either CRLF or LF so 't' is appropriate.
#define CURLMAX(x,y) ((x)>(y)?(x):(y))
#define CURLMIN(x,y) ((x)<(y)?(x):(y))
+/* A convenience macro to provide both the string literal and the length of
+ the string literal in one go, useful for functions that take "string,len"
+ as their argument */
+#define STRCONST(x) x,sizeof(x)-1
+
/* Some versions of the Android SDK is missing the declaration */
#if defined(HAVE_GETPWUID_R) && defined(HAVE_DECL_GETPWUID_R_MISSING)
struct passwd;
@@ -821,8 +829,9 @@ int getpwuid_r(uid_t uid, struct passwd *pwd, char *buf,
#define USE_HTTP2
#endif
-#if defined(USE_NGTCP2) || defined(USE_QUICHE)
+#if defined(USE_NGTCP2) || defined(USE_QUICHE) || defined(USE_MSH3)
#define ENABLE_QUIC
+#define USE_HTTP3
#endif
#if defined(USE_UNIX_SOCKETS) && defined(WIN32)
diff --git a/lib/curl_setup_once.h b/lib/curl_setup_once.h
index 38018d23c..f09b00f9f 100644
--- a/lib/curl_setup_once.h
+++ b/lib/curl_setup_once.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
@@ -31,7 +33,6 @@
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
-#include <ctype.h>
#include <time.h>
#ifdef HAVE_ERRNO_H
@@ -86,6 +87,8 @@
#include <sys/socket.h>
#endif
+#include "functypes.h"
+
#ifdef __hpux
# if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL)
# ifdef OLD_APP32_64BIT_OFF_T
@@ -148,20 +151,10 @@ struct timeval {
* SEND_TYPE_RETV must also be defined.
*/
-#if !defined(RECV_TYPE_ARG1) || \
- !defined(RECV_TYPE_ARG2) || \
- !defined(RECV_TYPE_ARG3) || \
- !defined(RECV_TYPE_ARG4) || \
- !defined(RECV_TYPE_RETV)
- /* */
- Error Missing_definition_of_return_and_arguments_types_of_recv
- /* */
-#else
#define sread(x,y,z) (ssize_t)recv((RECV_TYPE_ARG1)(x), \
(RECV_TYPE_ARG2)(y), \
(RECV_TYPE_ARG3)(z), \
(RECV_TYPE_ARG4)(0))
-#endif
#else /* HAVE_RECV */
#ifndef sread
/* */
@@ -178,21 +171,10 @@ struct timeval {
(SEND_TYPE_ARG3)(z))
#elif defined(HAVE_SEND)
-#if !defined(SEND_TYPE_ARG1) || \
- !defined(SEND_QUAL_ARG2) || \
- !defined(SEND_TYPE_ARG2) || \
- !defined(SEND_TYPE_ARG3) || \
- !defined(SEND_TYPE_ARG4) || \
- !defined(SEND_TYPE_RETV)
- /* */
- Error Missing_definition_of_return_and_arguments_types_of_send
- /* */
-#else
#define swrite(x,y,z) (ssize_t)send((SEND_TYPE_ARG1)(x), \
(SEND_QUAL_ARG2 SEND_TYPE_ARG2)(y), \
(SEND_TYPE_ARG3)(z), \
(SEND_TYPE_ARG4)(SEND_4TH_ARG))
-#endif
#else /* HAVE_SEND */
#ifndef swrite
/* */
@@ -202,46 +184,6 @@ struct timeval {
#endif /* HAVE_SEND */
-#if 0
-#if defined(HAVE_RECVFROM)
-/*
- * Currently recvfrom is only used on udp sockets.
- */
-#if !defined(RECVFROM_TYPE_ARG1) || \
- !defined(RECVFROM_TYPE_ARG2) || \
- !defined(RECVFROM_TYPE_ARG3) || \
- !defined(RECVFROM_TYPE_ARG4) || \
- !defined(RECVFROM_TYPE_ARG5) || \
- !defined(RECVFROM_TYPE_ARG6) || \
- !defined(RECVFROM_TYPE_RETV)
- /* */
- Error Missing_definition_of_return_and_arguments_types_of_recvfrom
- /* */
-#else
-#define sreadfrom(s,b,bl,f,fl) (ssize_t)recvfrom((RECVFROM_TYPE_ARG1) (s), \
- (RECVFROM_TYPE_ARG2 *)(b), \
- (RECVFROM_TYPE_ARG3) (bl), \
- (RECVFROM_TYPE_ARG4) (0), \
- (RECVFROM_TYPE_ARG5 *)(f), \
- (RECVFROM_TYPE_ARG6 *)(fl))
-#endif
-#else /* HAVE_RECVFROM */
-#ifndef sreadfrom
- /* */
- Error Missing_definition_of_macro_sreadfrom
- /* */
-#endif
-#endif /* HAVE_RECVFROM */
-
-
-#ifdef RECVFROM_TYPE_ARG6_IS_VOID
-# define RECVFROM_ARG6_T int
-#else
-# define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6
-#endif
-#endif /* if 0 */
-
-
/*
* Function-like macro definition used to close a socket.
*/
@@ -267,9 +209,6 @@ struct timeval {
# define sfcntl fcntl
#endif
-#define TOLOWER(x) (tolower((int) ((unsigned char)x)))
-
-
/*
* 'bool' stuff compatible with HP-UX headers.
*/
@@ -306,6 +245,14 @@ struct timeval {
# define HAVE_BOOL_T
#endif
+/* the type we use for storing a single boolean bit */
+#ifdef _MSC_VER
+typedef bool bit;
+#define BIT(x) bool x
+#else
+typedef unsigned int bit;
+#define BIT(x) bit x:1
+#endif
/*
* Redefine TRUE and FALSE too, to catch current use. With this
diff --git a/lib/curl_sha256.h b/lib/curl_sha256.h
index 55dc30ad7..754c761fb 100644
--- a/lib/curl_sha256.h
+++ b/lib/curl_sha256.h
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2017, Florin Petriuc, <petriuc.florin@gmail.com>
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -21,9 +21,12 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_CRYPTO_AUTH
+#include <curl/curl.h>
#include "curl_hmac.h"
extern const struct HMAC_params Curl_HMAC_SHA256[1];
@@ -32,7 +35,7 @@ extern const struct HMAC_params Curl_HMAC_SHA256[1];
/* SHA256_DIGEST_LENGTH is an enum value in wolfSSL. Need to import it from
* sha.h*/
#include <wolfssl/options.h>
-#include <openssl/sha.h>
+#include <wolfssl/openssl/sha.h>
#else
#define SHA256_DIGEST_LENGTH 32
#endif
diff --git a/lib/curl_sspi.c b/lib/curl_sspi.c
index 339bf549f..33108c48e 100644
--- a/lib/curl_sspi.c
+++ b/lib/curl_sspi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_sspi.h b/lib/curl_sspi.h
index 881384d4e..ad111309c 100644
--- a/lib/curl_sspi.h
+++ b/lib/curl_sspi.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_threads.c b/lib/curl_threads.c
index 414614401..eb8e13608 100644
--- a/lib/curl_threads.c
+++ b/lib/curl_threads.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curl_threads.h b/lib/curl_threads.h
index e10b7a1b0..63392f671 100644
--- a/lib/curl_threads.h
+++ b/lib/curl_threads.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/curlx.h b/lib/curlx.h
index 9f21f60d5..1796afa00 100644
--- a/lib/curlx.h
+++ b/lib/curlx.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/lib/dict.c b/lib/dict.c
index 5d53b8f1f..6f7678f5c 100644
--- a/lib/dict.c
+++ b/lib/dict.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -96,13 +98,13 @@ const struct Curl_handler Curl_handler_dict = {
PROTOPT_NONE | PROTOPT_NOURLQUERY /* flags */
};
-static char *unescape_word(struct Curl_easy *data, const char *inputbuff)
+static char *unescape_word(const char *inputbuff)
{
char *newp = NULL;
char *dictp;
size_t len;
- CURLcode result = Curl_urldecode(data, inputbuff, 0, &newp, &len,
+ CURLcode result = Curl_urldecode(inputbuff, 0, &newp, &len,
REJECT_NADA);
if(!newp || result)
return NULL;
@@ -190,10 +192,6 @@ static CURLcode dict_do(struct Curl_easy *data, bool *done)
*done = TRUE; /* unconditionally */
- if(conn->bits.user_passwd) {
- /* AUTH is missing */
- }
-
if(strncasecompare(path, DICT_MATCH, sizeof(DICT_MATCH)-1) ||
strncasecompare(path, DICT_MATCH2, sizeof(DICT_MATCH2)-1) ||
strncasecompare(path, DICT_MATCH3, sizeof(DICT_MATCH3)-1)) {
@@ -226,7 +224,7 @@ static CURLcode dict_do(struct Curl_easy *data, bool *done)
strategy = (char *)".";
}
- eword = unescape_word(data, word);
+ eword = unescape_word(word);
if(!eword)
return CURLE_OUT_OF_MEMORY;
@@ -274,7 +272,7 @@ static CURLcode dict_do(struct Curl_easy *data, bool *done)
database = (char *)"!";
}
- eword = unescape_word(data, word);
+ eword = unescape_word(word);
if(!eword)
return CURLE_OUT_OF_MEMORY;
diff --git a/lib/dict.h b/lib/dict.h
index 6a6c772d1..b283a0dfc 100644
--- a/lib/dict.h
+++ b/lib/dict.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_DICT
diff --git a/lib/doh.c b/lib/doh.c
index d6a216770..3b1d5d60e 100644
--- a/lib/doh.c
+++ b/lib/doh.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -69,12 +71,6 @@ static const char *doh_strerror(DOHcode code)
}
#endif
-#ifdef DEBUGBUILD
-#define UNITTEST
-#else
-#define UNITTEST static
-#endif
-
/* @unittest 1655
*/
UNITTEST DOHcode doh_encode(const char *host,
@@ -247,12 +243,13 @@ static CURLcode dohprobe(struct Curl_easy *data,
the gcc typecheck helpers */
struct dynbuf *resp = &p->serverdoh;
ERROR_CHECK_SETOPT(CURLOPT_URL, url);
+ ERROR_CHECK_SETOPT(CURLOPT_DEFAULT_PROTOCOL, "https");
ERROR_CHECK_SETOPT(CURLOPT_WRITEFUNCTION, doh_write_cb);
ERROR_CHECK_SETOPT(CURLOPT_WRITEDATA, resp);
ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDS, p->dohbuffer);
ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDSIZE, (long)p->dohlen);
ERROR_CHECK_SETOPT(CURLOPT_HTTPHEADER, headers);
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
ERROR_CHECK_SETOPT(CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
#endif
#ifndef CURLDEBUG
@@ -306,14 +303,6 @@ static CURLcode dohprobe(struct Curl_easy *data,
}
if(data->set.ssl.certinfo)
ERROR_CHECK_SETOPT(CURLOPT_CERTINFO, 1L);
- if(data->set.str[STRING_SSL_RANDOM_FILE]) {
- ERROR_CHECK_SETOPT(CURLOPT_RANDOM_FILE,
- data->set.str[STRING_SSL_RANDOM_FILE]);
- }
- if(data->set.str[STRING_SSL_EGDSOCKET]) {
- ERROR_CHECK_SETOPT(CURLOPT_EGDSOCKET,
- data->set.str[STRING_SSL_EGDSOCKET]);
- }
if(data->set.ssl.fsslctx)
ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_FUNCTION, data->set.ssl.fsslctx);
if(data->set.ssl.fsslctxp)
@@ -407,7 +396,7 @@ struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
goto error;
dohp->pending++;
- if(Curl_ipv6works(data)) {
+ if((conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data)) {
/* create IPv6 DoH request */
result = dohprobe(data, &dohp->probe[DOH_PROBE_SLOT_IPADDR_V6],
DNS_TYPE_AAAA, hostname, data->set.str[STRING_DOH],
@@ -530,7 +519,7 @@ static DOHcode store_cname(const unsigned char *doh,
if(length) {
if(Curl_dyn_len(c)) {
- if(Curl_dyn_add(c, "."))
+ if(Curl_dyn_addn(c, STRCONST(".")))
return DOH_OUT_OF_MEM;
}
if((index + length) > dohlen)
@@ -803,7 +792,7 @@ doh2ai(const struct dohentry *de, const char *hostname, int port)
#endif
CURLcode result = CURLE_OK;
int i;
- size_t hostlen = strlen(hostname) + 1; /* include zero terminator */
+ size_t hostlen = strlen(hostname) + 1; /* include null-terminator */
if(!de)
/* no input == no output! */
@@ -911,7 +900,7 @@ CURLcode Curl_doh_is_resolved(struct Curl_easy *data,
if(!dohp->probe[DOH_PROBE_SLOT_IPADDR_V4].easy &&
!dohp->probe[DOH_PROBE_SLOT_IPADDR_V6].easy) {
failf(data, "Could not DoH-resolve: %s", data->state.async.hostname);
- return data->conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY:
+ return CONN_IS_PROXIED(data->conn)?CURLE_COULDNT_RESOLVE_PROXY:
CURLE_COULDNT_RESOLVE_HOST;
}
else if(!dohp->pending) {
diff --git a/lib/doh.h b/lib/doh.h
index 70e96e012..678e807fe 100644
--- a/lib/doh.h
+++ b/lib/doh.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "urldata.h"
@@ -27,21 +29,6 @@
#ifndef CURL_DISABLE_DOH
-/*
- * Curl_doh() resolve a name using DoH (DNS-over-HTTPS). It resolves a name
- * and returns a 'Curl_addrinfo *' with the address information.
- */
-
-struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
- const char *hostname,
- int port,
- int *waitp);
-
-CURLcode Curl_doh_is_resolved(struct Curl_easy *data,
- struct Curl_dns_entry **dns);
-
-int Curl_doh_getsock(struct connectdata *conn, curl_socket_t *socks);
-
typedef enum {
DOH_OK,
DOH_DNS_BAD_LABEL, /* 1 */
@@ -67,6 +54,38 @@ typedef enum {
DNS_TYPE_DNAME = 39 /* RFC6672 */
} DNStype;
+/* one of these for each DoH request */
+struct dnsprobe {
+ CURL *easy;
+ DNStype dnstype;
+ unsigned char dohbuffer[512];
+ size_t dohlen;
+ struct dynbuf serverdoh;
+};
+
+struct dohdata {
+ struct curl_slist *headers;
+ struct dnsprobe probe[DOH_PROBE_SLOTS];
+ unsigned int pending; /* still outstanding requests */
+ int port;
+ const char *host;
+};
+
+/*
+ * Curl_doh() resolve a name using DoH (DNS-over-HTTPS). It resolves a name
+ * and returns a 'Curl_addrinfo *' with the address information.
+ */
+
+struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
+ const char *hostname,
+ int port,
+ int *waitp);
+
+CURLcode Curl_doh_is_resolved(struct Curl_easy *data,
+ struct Curl_dns_entry **dns);
+
+int Curl_doh_getsock(struct connectdata *conn, curl_socket_t *socks);
+
#define DOH_MAX_ADDR 24
#define DOH_MAX_CNAME 4
diff --git a/lib/dotdot.c b/lib/dotdot.c
deleted file mode 100644
index 3a1435f8e..000000000
--- a/lib/dotdot.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under 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/curl.h>
-
-#include "dotdot.h"
-#include "curl_memory.h"
-
-/* The last #include file should be: */
-#include "memdebug.h"
-
-/*
- * "Remove Dot Segments"
- * https://tools.ietf.org/html/rfc3986#section-5.2.4
- */
-
-/*
- * Curl_dedotdotify()
- * @unittest: 1395
- *
- * This function gets a null-terminated path with dot and dotdot sequences
- * passed in and strips them off according to the rules in RFC 3986 section
- * 5.2.4.
- *
- * The function handles a query part ('?' + stuff) appended but it expects
- * that fragments ('#' + stuff) have already been cut off.
- *
- * RETURNS
- *
- * an allocated dedotdotified output string
- */
-char *Curl_dedotdotify(const char *input)
-{
- size_t inlen = strlen(input);
- char *clone;
- size_t clen = inlen; /* the length of the cloned input */
- char *out = malloc(inlen + 1);
- char *outptr;
- char *orgclone;
- char *queryp;
- if(!out)
- return NULL; /* out of memory */
-
- *out = 0; /* null-terminates, for inputs like "./" */
-
- /* get a cloned copy of the input */
- clone = strdup(input);
- if(!clone) {
- free(out);
- return NULL;
- }
- orgclone = clone;
- outptr = out;
-
- if(!*clone) {
- /* zero length string, return that */
- free(out);
- return clone;
- }
-
- /*
- * To handle query-parts properly, we must find it and remove it during the
- * dotdot-operation and then append it again at the end to the output
- * string.
- */
- queryp = strchr(clone, '?');
- if(queryp)
- *queryp = 0;
-
- do {
-
- /* A. If the input buffer begins with a prefix of "../" or "./", then
- remove that prefix from the input buffer; otherwise, */
-
- if(!strncmp("./", clone, 2)) {
- clone += 2;
- clen -= 2;
- }
- else if(!strncmp("../", clone, 3)) {
- clone += 3;
- clen -= 3;
- }
-
- /* B. if the input buffer begins with a prefix of "/./" or "/.", where
- "." is a complete path segment, then replace that prefix with "/" in
- the input buffer; otherwise, */
- else if(!strncmp("/./", clone, 3)) {
- clone += 2;
- clen -= 2;
- }
- else if(!strcmp("/.", clone)) {
- clone[1]='/';
- clone++;
- clen -= 1;
- }
-
- /* C. if the input buffer begins with a prefix of "/../" or "/..", where
- ".." is a complete path segment, then replace that prefix with "/" in
- the input buffer and remove the last segment and its preceding "/" (if
- any) from the output buffer; otherwise, */
-
- else if(!strncmp("/../", clone, 4)) {
- clone += 3;
- clen -= 3;
- /* remove the last segment from the output buffer */
- while(outptr > out) {
- outptr--;
- if(*outptr == '/')
- break;
- }
- *outptr = 0; /* null-terminate where it stops */
- }
- else if(!strcmp("/..", clone)) {
- clone[2]='/';
- clone += 2;
- clen -= 2;
- /* remove the last segment from the output buffer */
- while(outptr > out) {
- outptr--;
- if(*outptr == '/')
- break;
- }
- *outptr = 0; /* null-terminate where it stops */
- }
-
- /* D. if the input buffer consists only of "." or "..", then remove
- that from the input buffer; otherwise, */
-
- else if(!strcmp(".", clone) || !strcmp("..", clone)) {
- *clone = 0;
- *out = 0;
- }
-
- else {
- /* E. move the first path segment in the input buffer to the end of
- the output buffer, including the initial "/" character (if any) and
- any subsequent characters up to, but not including, the next "/"
- character or the end of the input buffer. */
-
- do {
- *outptr++ = *clone++;
- clen--;
- } while(*clone && (*clone != '/'));
- *outptr = 0;
- }
-
- } while(*clone);
-
- if(queryp) {
- size_t qlen;
- /* There was a query part, append that to the output. The 'clone' string
- may now have been altered so we copy from the original input string
- from the correct index. */
- size_t oindex = queryp - orgclone;
- qlen = strlen(&input[oindex]);
- memcpy(outptr, &input[oindex], qlen + 1); /* include the end zero byte */
- }
-
- free(orgclone);
- return out;
-}
diff --git a/lib/dynbuf.c b/lib/dynbuf.c
index ada7e0ccf..0b1cf9afd 100644
--- a/lib/dynbuf.c
+++ b/lib/dynbuf.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -126,7 +128,6 @@ void Curl_dyn_reset(struct dynbuf *s)
s->leng = 0;
}
-#ifdef USE_NGTCP2
/*
* Specify the size of the tail to keep (number of bytes from the end of the
* buffer). The rest will be dropped.
@@ -151,7 +152,6 @@ CURLcode Curl_dyn_tail(struct dynbuf *s, size_t trail)
return CURLE_OK;
}
-#endif
/*
* Appends a buffer with length.
@@ -253,3 +253,18 @@ size_t Curl_dyn_len(const struct dynbuf *s)
DEBUGASSERT(!s->leng || s->bufr);
return s->leng;
}
+
+/*
+ * Set a new (smaller) length.
+ */
+CURLcode Curl_dyn_setlen(struct dynbuf *s, size_t set)
+{
+ DEBUGASSERT(s);
+ DEBUGASSERT(s->init == DYNINIT);
+ DEBUGASSERT(!s->leng || s->bufr);
+ if(set > s->leng)
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ s->leng = set;
+ s->bufr[s->leng] = 0;
+ return CURLE_OK;
+}
diff --git a/lib/dynbuf.h b/lib/dynbuf.h
index 252411f84..04a728c77 100644
--- a/lib/dynbuf.h
+++ b/lib/dynbuf.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,8 +20,12 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
+#include <curl/curl.h>
+
#ifndef BUILDING_LIBCURL
/* this renames the functions so that the tool code can use the same code
without getting symbol collisions */
@@ -36,12 +40,13 @@
#define Curl_dyn_len(a) curlx_dyn_len(a)
#define Curl_dyn_reset(a) curlx_dyn_reset(a)
#define Curl_dyn_tail(a,b) curlx_dyn_tail(a,b)
+#define Curl_dyn_setlen(a,b) curlx_dyn_setlen(a,b)
#define curlx_dynbuf dynbuf /* for the struct name */
#endif
struct dynbuf {
char *bufr; /* point to a null-terminated allocated buffer */
- size_t leng; /* number of bytes *EXCLUDING* the zero terminator */
+ size_t leng; /* number of bytes *EXCLUDING* the null-terminator */
size_t allc; /* size of the current allocation */
size_t toobig; /* size limit for the buffer */
#ifdef DEBUGBUILD
@@ -61,6 +66,7 @@ CURLcode Curl_dyn_vaddf(struct dynbuf *s, const char *fmt, va_list ap)
WARN_UNUSED_RESULT;
void Curl_dyn_reset(struct dynbuf *s);
CURLcode Curl_dyn_tail(struct dynbuf *s, size_t trail);
+CURLcode Curl_dyn_setlen(struct dynbuf *s, size_t set);
char *Curl_dyn_ptr(const struct dynbuf *s);
unsigned char *Curl_dyn_uptr(const struct dynbuf *s);
size_t Curl_dyn_len(const struct dynbuf *s);
diff --git a/lib/easy.c b/lib/easy.c
index 20293a710..b8ac1ef8a 100644
--- a/lib/easy.c
+++ b/lib/easy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -68,7 +70,6 @@
#include "slist.h"
#include "mime.h"
#include "amigaos.h"
-#include "non-ascii.h"
#include "warnless.h"
#include "multiif.h"
#include "sigpipe.h"
@@ -81,6 +82,8 @@
#include "altsvc.h"
#include "hsts.h"
+#include "easy_lock.h"
+
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
@@ -90,6 +93,19 @@
static unsigned int initialized;
static long init_flags;
+#ifdef GLOBAL_INIT_IS_THREADSAFE
+
+static curl_simple_lock s_lock = CURL_SIMPLE_LOCK_INIT;
+#define global_init_lock() curl_simple_lock_lock(&s_lock)
+#define global_init_unlock() curl_simple_lock_unlock(&s_lock)
+
+#else
+
+#define global_init_lock()
+#define global_init_unlock()
+
+#endif
+
/*
* strdup (and other memory functions) is redefined in complicated
* ways, but at this point it must be defined as the system-supplied strdup
@@ -162,18 +178,12 @@ static CURLcode global_init(long flags, bool memoryfuncs)
#endif
#ifdef __AMIGA__
- if(!Curl_amiga_init()) {
+ if(Curl_amiga_init()) {
DEBUGF(fprintf(stderr, "Error: Curl_amiga_init failed\n"));
goto fail;
}
#endif
-#ifdef NETWARE
- if(netware_init()) {
- DEBUGF(fprintf(stderr, "Warning: LONG namespace not available\n"));
- }
-#endif
-
if(Curl_resolver_global_init()) {
DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));
goto fail;
@@ -214,7 +224,14 @@ static CURLcode global_init(long flags, bool memoryfuncs)
*/
CURLcode curl_global_init(long flags)
{
- return global_init(flags, TRUE);
+ CURLcode result;
+ global_init_lock();
+
+ result = global_init(flags, TRUE);
+
+ global_init_unlock();
+
+ return result;
}
/*
@@ -225,15 +242,20 @@ 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)
{
+ CURLcode result;
+
/* Invalid input, return immediately */
if(!m || !f || !r || !s || !c)
return CURLE_FAILED_INIT;
+ global_init_lock();
+
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++;
+ global_init_unlock();
return CURLE_OK;
}
@@ -246,7 +268,11 @@ CURLcode curl_global_init_mem(long flags, curl_malloc_callback m,
Curl_ccalloc = c;
/* Call the actual init function, but without setting */
- return global_init(flags, FALSE);
+ result = global_init(flags, FALSE);
+
+ global_init_unlock();
+
+ return result;
}
/**
@@ -255,11 +281,17 @@ CURLcode curl_global_init_mem(long flags, curl_malloc_callback m,
*/
void curl_global_cleanup(void)
{
- if(!initialized)
+ global_init_lock();
+
+ if(!initialized) {
+ global_init_unlock();
return;
+ }
- if(--initialized)
+ if(--initialized) {
+ global_init_unlock();
return;
+ }
Curl_ssl_cleanup();
Curl_resolver_global_cleanup();
@@ -280,6 +312,25 @@ void curl_global_cleanup(void)
#endif
init_flags = 0;
+
+ global_init_unlock();
+}
+
+/*
+ * curl_global_sslset() globally initializes the SSL backend to use.
+ */
+CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
+ const curl_ssl_backend ***avail)
+{
+ CURLsslset rc;
+
+ global_init_lock();
+
+ rc = Curl_init_sslset_nolock(id, name, avail);
+
+ global_init_unlock();
+
+ return rc;
}
/*
@@ -292,14 +343,18 @@ struct Curl_easy *curl_easy_init(void)
struct Curl_easy *data;
/* Make sure we inited the global SSL stuff */
+ global_init_lock();
+
if(!initialized) {
- result = curl_global_init(CURL_GLOBAL_DEFAULT);
+ result = global_init(CURL_GLOBAL_DEFAULT, TRUE);
if(result) {
/* something in the global init failed, return nothing */
DEBUGF(fprintf(stderr, "Error: curl_global_init failed\n"));
+ global_init_unlock();
return NULL;
}
}
+ global_init_unlock();
/* We use curl_open() with undefined URL so far */
result = Curl_open(&data);
@@ -514,19 +569,23 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev)
/* wait for activity or timeout */
pollrc = Curl_poll(fds, numfds, ev->ms);
+ if(pollrc < 0)
+ return CURLE_UNRECOVERABLE_POLL;
after = Curl_now();
ev->msbump = FALSE; /* reset here */
- if(0 == pollrc) {
+ if(!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) {
+ else {
+ /* here pollrc is > 0 */
+
/* loop over the monitored sockets to see which ones had activity */
for(i = 0; i< numfds; i++) {
if(fds[i].revents) {
@@ -552,8 +611,6 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev)
}
}
}
- else
- return CURLE_RECV_ERROR;
if(mcode)
return CURLE_URL_MALFORMAT;
@@ -669,7 +726,7 @@ static CURLcode easy_perform(struct Curl_easy *data, bool events)
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);
+ multi = Curl_multi_handle(1, 3, 7);
if(!multi)
return CURLE_OUT_OF_MEMORY;
data->multi_easy = multi;
@@ -845,6 +902,7 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
outcurl->progress.flags = data->progress.flags;
outcurl->progress.callback = data->progress.callback;
+#ifndef CURL_DISABLE_COOKIES
if(data->cookies) {
/* If cookies are enabled in the parent handle, we enable them
in the clone as well! */
@@ -863,6 +921,7 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
if(!outcurl->state.cookielist)
goto fail;
}
+#endif
if(data->state.url) {
outcurl->state.url = strdup(data->state.url);
@@ -885,7 +944,7 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
goto fail;
}
-#ifdef USE_ALTSVC
+#ifndef CURL_DISABLE_ALTSVC
if(data->asi) {
outcurl->asi = Curl_altsvc_init();
if(!outcurl->asi)
@@ -933,8 +992,6 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
}
#endif /* USE_ARES */
- Curl_convert_setup(outcurl);
-
Curl_initinfo(outcurl);
outcurl->magic = CURLEASY_MAGIC_NUMBER;
@@ -946,8 +1003,10 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
fail:
if(outcurl) {
+#ifndef CURL_DISABLE_COOKIES
curl_slist_free_all(outcurl->state.cookielist);
outcurl->state.cookielist = NULL;
+#endif
Curl_safefree(outcurl->state.buffer);
Curl_dyn_free(&outcurl->state.headerb);
Curl_safefree(outcurl->state.url);
@@ -1074,6 +1133,16 @@ CURLcode curl_easy_pause(struct Curl_easy *data, int action)
}
}
+#ifdef USE_HYPER
+ if(!(newstate & KEEP_SEND_PAUSE)) {
+ /* need to wake the send body waker */
+ if(data->hyp.send_body_waker) {
+ hyper_waker_wake(data->hyp.send_body_waker);
+ data->hyp.send_body_waker = NULL;
+ }
+ }
+#endif
+
/* if there's no error and we're not pausing both directions, we want
to have this handle checked soon */
if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
@@ -1102,8 +1171,7 @@ CURLcode curl_easy_pause(struct Curl_easy *data, int action)
}
-static CURLcode easy_connection(struct Curl_easy *data,
- curl_socket_t *sfd,
+static CURLcode easy_connection(struct Curl_easy *data, curl_socket_t *sfd,
struct connectdata **connp)
{
if(!data)
@@ -1111,7 +1179,7 @@ static CURLcode easy_connection(struct Curl_easy *data,
/* only allow these to be called on handles with CURLOPT_CONNECT_ONLY */
if(!data->set.connect_only) {
- failf(data, "CONNECT_ONLY is required!");
+ failf(data, "CONNECT_ONLY is required");
return CURLE_UNSUPPORTED_PROTOCOL;
}
@@ -1148,7 +1216,7 @@ CURLcode curl_easy_recv(struct Curl_easy *data, void *buffer, size_t buflen,
if(!data->conn)
/* on first invoke, the transfer has been detached from the connection and
needs to be reattached */
- Curl_attach_connnection(data, c);
+ Curl_attach_connection(data, c);
*n = 0;
result = Curl_read(data, sfd, buffer, buflen, &n1);
@@ -1162,11 +1230,12 @@ CURLcode curl_easy_recv(struct Curl_easy *data, void *buffer, size_t buflen,
}
/*
- * Sends data over the connected socket. Use after successful
- * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ * Sends data over the connected socket.
+ *
+ * This is the private internal version of curl_easy_send()
*/
-CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
- size_t buflen, size_t *n)
+CURLcode Curl_senddata(struct Curl_easy *data, const void *buffer,
+ size_t buflen, ssize_t *n)
{
curl_socket_t sfd;
CURLcode result;
@@ -1174,9 +1243,6 @@ CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
struct connectdata *c = NULL;
SIGPIPE_VARIABLE(pipe_st);
- if(Curl_is_in_callback(data))
- return CURLE_RECURSIVE_API_CALL;
-
result = easy_connection(data, &sfd, &c);
if(result)
return result;
@@ -1184,7 +1250,7 @@ CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
if(!data->conn)
/* on first invoke, the transfer has been detached from the connection and
needs to be reattached */
- Curl_attach_connnection(data, c);
+ Curl_attach_connection(data, c);
*n = 0;
sigpipe_ignore(data, &pipe_st);
@@ -1198,8 +1264,25 @@ CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
if(!result && !n1)
return CURLE_AGAIN;
- *n = (size_t)n1;
+ *n = n1;
+
+ return result;
+}
+
+/*
+ * Sends data over the connected socket. Use after successful
+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ */
+CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
+ size_t buflen, size_t *n)
+{
+ ssize_t written = 0;
+ CURLcode result;
+ if(Curl_is_in_callback(data))
+ return CURLE_RECURSIVE_API_CALL;
+ result = Curl_senddata(data, buffer, buflen, &written);
+ *n = (size_t)written;
return result;
}
@@ -1218,12 +1301,12 @@ static int conn_upkeep(struct Curl_easy *data,
if(conn->handler->connection_check) {
/* briefly attach the connection to this transfer for the purpose of
checking it */
- Curl_attach_connnection(data, conn);
+ Curl_attach_connection(data, conn);
/* Do a protocol-specific keepalive check on the connection. */
conn->handler->connection_check(data, conn, CONNCHECK_KEEPALIVE);
/* detach the connection again */
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
}
return 0; /* continue iteration */
diff --git a/lib/easy_lock.h b/lib/easy_lock.h
new file mode 100644
index 000000000..d96e56b8d
--- /dev/null
+++ b/lib/easy_lock.h
@@ -0,0 +1,105 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#define GLOBAL_INIT_IS_THREADSAFE
+
+#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600
+
+#ifdef __MINGW32__
+#ifndef __MINGW64_VERSION_MAJOR
+#if (__MINGW32_MAJOR_VERSION < 5) || \
+ (__MINGW32_MAJOR_VERSION == 5 && __MINGW32_MINOR_VERSION == 0)
+/* mingw >= 5.0.1 defines SRWLOCK, and slightly different from MS define */
+typedef PVOID SRWLOCK, *PSRWLOCK;
+#endif
+#endif
+#ifndef SRWLOCK_INIT
+#define SRWLOCK_INIT NULL
+#endif
+#endif /* __MINGW32__ */
+
+#define curl_simple_lock SRWLOCK
+#define CURL_SIMPLE_LOCK_INIT SRWLOCK_INIT
+
+#define curl_simple_lock_lock(m) AcquireSRWLockExclusive(m)
+#define curl_simple_lock_unlock(m) ReleaseSRWLockExclusive(m)
+
+#elif defined(HAVE_ATOMIC) && defined(HAVE_STDATOMIC_H)
+#include <stdatomic.h>
+#if defined(HAVE_SCHED_YIELD)
+#include <sched.h>
+#endif
+
+#define curl_simple_lock atomic_int
+#define CURL_SIMPLE_LOCK_INIT 0
+
+/* a clang-thing */
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+
+#ifndef __INTEL_COMPILER
+/* The Intel compiler tries to look like GCC *and* clang *and* lies in its
+ __has_builtin() function, so override it. */
+
+/* if GCC on i386/x86_64 or if the built-in is present */
+#if ( (defined(__GNUC__) && !defined(__clang__)) && \
+ (defined(__i386__) || defined(__x86_64__))) || \
+ __has_builtin(__builtin_ia32_pause)
+#define HAVE_BUILTIN_IA32_PAUSE
+#endif
+
+#endif
+
+static inline void curl_simple_lock_lock(curl_simple_lock *lock)
+{
+ for(;;) {
+ if(!atomic_exchange_explicit(lock, true, memory_order_acquire))
+ break;
+ /* Reduce cache coherency traffic */
+ while(atomic_load_explicit(lock, memory_order_relaxed)) {
+ /* Reduce load (not mandatory) */
+#ifdef HAVE_BUILTIN_IA32_PAUSE
+ __builtin_ia32_pause();
+#elif defined(__aarch64__)
+ __asm__ volatile("yield" ::: "memory");
+#elif defined(HAVE_SCHED_YIELD)
+ sched_yield();
+#endif
+ }
+ }
+}
+
+static inline void curl_simple_lock_unlock(curl_simple_lock *lock)
+{
+ atomic_store_explicit(lock, false, memory_order_release);
+}
+
+#else
+
+#undef GLOBAL_INIT_IS_THREADSAFE
+
+#endif
diff --git a/lib/easygetopt.c b/lib/easygetopt.c
index 7b2213fb2..a639bb375 100644
--- a/lib/easygetopt.c
+++ b/lib/easygetopt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* ___|___/|_| ______|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/easyif.h b/lib/easyif.h
index 336441828..205382cd0 100644
--- a/lib/easyif.h
+++ b/lib/easyif.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,11 +20,16 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* Prototypes for library-wide functions provided by easy.c
*/
+CURLcode Curl_senddata(struct Curl_easy *data, const void *buffer,
+ size_t buflen, ssize_t *n);
+
#ifdef CURLDEBUG
CURL_EXTERN CURLcode curl_easy_perform_ev(struct Curl_easy *easy);
#endif
diff --git a/lib/easyoptions.c b/lib/easyoptions.c
index 04871ad1e..e59b63af7 100644
--- a/lib/easyoptions.c
+++ b/lib/easyoptions.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* ___|___/|_| ______|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* This source code is generated by optiontable.pl - DO NOT EDIT BY HAND */
@@ -105,7 +107,8 @@ struct curl_easyoption Curl_easyopts[] = {
{"FTP_CREATE_MISSING_DIRS", CURLOPT_FTP_CREATE_MISSING_DIRS,
CURLOT_LONG, 0},
{"FTP_FILEMETHOD", CURLOPT_FTP_FILEMETHOD, CURLOT_VALUES, 0},
- {"FTP_RESPONSE_TIMEOUT", CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOT_LONG, 0},
+ {"FTP_RESPONSE_TIMEOUT", CURLOPT_SERVER_RESPONSE_TIMEOUT,
+ CURLOT_LONG, CURLOT_FLAG_ALIAS},
{"FTP_SKIP_PASV_IP", CURLOPT_FTP_SKIP_PASV_IP, CURLOT_LONG, 0},
{"FTP_SSL", CURLOPT_USE_SSL, CURLOT_VALUES, CURLOT_FLAG_ALIAS},
{"FTP_SSL_CCC", CURLOPT_FTP_SSL_CCC, CURLOT_LONG, 0},
@@ -201,6 +204,7 @@ struct curl_easyoption Curl_easyopts[] = {
{"PROGRESSDATA", CURLOPT_XFERINFODATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
{"PROGRESSFUNCTION", CURLOPT_PROGRESSFUNCTION, CURLOT_FUNCTION, 0},
{"PROTOCOLS", CURLOPT_PROTOCOLS, CURLOT_LONG, 0},
+ {"PROTOCOLS_STR", CURLOPT_PROTOCOLS_STR, CURLOT_STRING, 0},
{"PROXY", CURLOPT_PROXY, CURLOT_STRING, 0},
{"PROXYAUTH", CURLOPT_PROXYAUTH, CURLOT_VALUES, 0},
{"PROXYHEADER", CURLOPT_PROXYHEADER, CURLOT_SLIST, 0},
@@ -243,6 +247,7 @@ struct curl_easyoption Curl_easyopts[] = {
{"READDATA", CURLOPT_READDATA, CURLOT_CBPTR, 0},
{"READFUNCTION", CURLOPT_READFUNCTION, CURLOT_FUNCTION, 0},
{"REDIR_PROTOCOLS", CURLOPT_REDIR_PROTOCOLS, CURLOT_LONG, 0},
+ {"REDIR_PROTOCOLS_STR", CURLOPT_REDIR_PROTOCOLS_STR, CURLOT_STRING, 0},
{"REFERER", CURLOPT_REFERER, CURLOT_STRING, 0},
{"REQUEST_TARGET", CURLOPT_REQUEST_TARGET, CURLOT_STRING, 0},
{"RESOLVE", CURLOPT_RESOLVE, CURLOT_SLIST, 0},
@@ -262,8 +267,8 @@ struct curl_easyoption Curl_easyopts[] = {
{"SASL_IR", CURLOPT_SASL_IR, CURLOT_LONG, 0},
{"SEEKDATA", CURLOPT_SEEKDATA, CURLOT_CBPTR, 0},
{"SEEKFUNCTION", CURLOPT_SEEKFUNCTION, CURLOT_FUNCTION, 0},
- {"SERVER_RESPONSE_TIMEOUT", CURLOPT_FTP_RESPONSE_TIMEOUT,
- CURLOT_LONG, CURLOT_FLAG_ALIAS},
+ {"SERVER_RESPONSE_TIMEOUT", CURLOPT_SERVER_RESPONSE_TIMEOUT,
+ CURLOT_LONG, 0},
{"SERVICE_NAME", CURLOPT_SERVICE_NAME, CURLOT_STRING, 0},
{"SHARE", CURLOPT_SHARE, CURLOT_OBJECT, 0},
{"SOCKOPTDATA", CURLOPT_SOCKOPTDATA, CURLOT_CBPTR, 0},
@@ -273,6 +278,8 @@ struct curl_easyoption Curl_easyopts[] = {
{"SOCKS5_GSSAPI_SERVICE", CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOT_STRING, 0},
{"SSH_AUTH_TYPES", CURLOPT_SSH_AUTH_TYPES, CURLOT_VALUES, 0},
{"SSH_COMPRESSION", CURLOPT_SSH_COMPRESSION, CURLOT_LONG, 0},
+ {"SSH_HOSTKEYDATA", CURLOPT_SSH_HOSTKEYDATA, CURLOT_CBPTR, 0},
+ {"SSH_HOSTKEYFUNCTION", CURLOPT_SSH_HOSTKEYFUNCTION, CURLOT_FUNCTION, 0},
{"SSH_HOST_PUBLIC_KEY_MD5", CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
CURLOT_STRING, 0},
{"SSH_HOST_PUBLIC_KEY_SHA256", CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256,
@@ -347,10 +354,11 @@ struct curl_easyoption Curl_easyopts[] = {
{"WRITEDATA", CURLOPT_WRITEDATA, CURLOT_CBPTR, 0},
{"WRITEFUNCTION", CURLOPT_WRITEFUNCTION, CURLOT_FUNCTION, 0},
{"WRITEHEADER", CURLOPT_HEADERDATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
+ {"WS_OPTIONS", CURLOPT_WS_OPTIONS, CURLOT_LONG, 0},
{"XFERINFODATA", CURLOPT_XFERINFODATA, CURLOT_CBPTR, 0},
{"XFERINFOFUNCTION", CURLOPT_XFERINFOFUNCTION, CURLOT_FUNCTION, 0},
{"XOAUTH2_BEARER", CURLOPT_XOAUTH2_BEARER, CURLOT_STRING, 0},
- {NULL, CURLOPT_LASTENTRY, 0, 0} /* end of table */
+ {NULL, CURLOPT_LASTENTRY, CURLOT_LONG, 0} /* end of table */
};
#ifdef DEBUGBUILD
@@ -360,6 +368,6 @@ struct curl_easyoption Curl_easyopts[] = {
*/
int Curl_easyopts_check(void)
{
- return ((CURLOPT_LASTENTRY%10000) != (315 + 1));
+ return ((CURLOPT_LASTENTRY%10000) != (320 + 1));
}
#endif
diff --git a/lib/easyoptions.h b/lib/easyoptions.h
index 91e11908b..33f816d6b 100644
--- a/lib/easyoptions.h
+++ b/lib/easyoptions.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* should probably go into the public header */
diff --git a/lib/escape.c b/lib/escape.c
index 683b6fc4a..da7e5524f 100644
--- a/lib/escape.c
+++ b/lib/escape.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Escape and unescape URL encoding in strings. The functions return a new
@@ -29,7 +31,6 @@
#include "urldata.h"
#include "warnless.h"
-#include "non-ascii.h"
#include "escape.h"
#include "strdup.h"
/* The last 3 #include files should be in this order */
@@ -39,7 +40,7 @@
/* Portable character check (remember EBCDIC). Do not use isalnum() because
its behavior is altered by the current locale.
- See https://tools.ietf.org/html/rfc3986#section-2.3
+ See https://datatracker.ietf.org/doc/html/rfc3986#section-2.3
*/
bool Curl_isunreserved(unsigned char in)
{
@@ -76,12 +77,15 @@ char *curl_unescape(const char *string, int length)
return curl_easy_unescape(NULL, string, length, NULL);
}
+/* Escapes for URL the given unescaped string of given length.
+ * 'data' is ignored since 7.82.0.
+ */
char *curl_easy_escape(struct Curl_easy *data, const char *string,
int inlength)
{
size_t length;
- CURLcode result;
struct dynbuf d;
+ (void)data;
if(inlength < 0)
return NULL;
@@ -102,16 +106,7 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
}
else {
/* encode it */
- char encoded[4];
- result = Curl_convert_to_network(data, (char *)&in, 1);
- if(result) {
- /* Curl_convert_to_network calls failf if unsuccessful */
- Curl_dyn_free(&d);
- return NULL;
- }
-
- msnprintf(encoded, sizeof(encoded), "%%%02X", in);
- if(Curl_dyn_add(&d, encoded))
+ if(Curl_dyn_addf(&d, "%%%02X", in))
return NULL;
}
string++;
@@ -126,9 +121,6 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
* Returns a pointer to a malloced string in *ostring with length given in
* *olen. If length == 0, the length is assumed to be strlen(string).
*
- * 'data' can be set to NULL but then this function can't convert network
- * data to host for non-ascii.
- *
* ctrl options:
* - REJECT_NADA: accept everything
* - REJECT_CTRL: rejects control characters (byte codes lower than 32) in
@@ -139,8 +131,7 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
* invokes that used TRUE/FALSE (0 and 1).
*/
-CURLcode Curl_urldecode(struct Curl_easy *data,
- const char *string, size_t length,
+CURLcode Curl_urldecode(const char *string, size_t length,
char **ostring, size_t *olen,
enum urlreject ctrl)
{
@@ -148,7 +139,6 @@ CURLcode Curl_urldecode(struct Curl_easy *data,
char *ns;
size_t strindex = 0;
unsigned long hex;
- CURLcode result = CURLE_OK;
DEBUGASSERT(string);
DEBUGASSERT(ctrl >= REJECT_NADA); /* crash on TRUE/FALSE */
@@ -174,15 +164,6 @@ CURLcode Curl_urldecode(struct Curl_easy *data,
in = curlx_ultouc(hex); /* this long is never bigger than 255 anyway */
- if(data) {
- result = Curl_convert_from_network(data, (char *)&in, 1);
- if(result) {
- /* Curl_convert_from_network calls failf if unsuccessful */
- free(ns);
- return result;
- }
- }
-
string += 2;
alloc -= 2;
}
@@ -213,15 +194,17 @@ CURLcode Curl_urldecode(struct Curl_easy *data,
* pointer to a malloced string with length given in *olen.
* If length == 0, the length is assumed to be strlen(string).
* If olen == NULL, no output length is stored.
+ * 'data' is ignored since 7.82.0.
*/
char *curl_easy_unescape(struct Curl_easy *data, const char *string,
int length, int *olen)
{
char *str = NULL;
+ (void)data;
if(length >= 0) {
size_t inputlen = length;
size_t outputlen;
- CURLcode res = Curl_urldecode(data, string, inputlen, &str, &outputlen,
+ CURLcode res = Curl_urldecode(string, inputlen, &str, &outputlen,
REJECT_NADA);
if(res)
return NULL;
diff --git a/lib/escape.h b/lib/escape.h
index 46cb59039..61d4611bf 100644
--- a/lib/escape.h
+++ b/lib/escape.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Escape and unescape URL encoding in strings. The functions return a new
* allocated string or NULL if an error occurred. */
@@ -32,8 +34,7 @@ enum urlreject {
REJECT_ZERO
};
-CURLcode Curl_urldecode(struct Curl_easy *data,
- const char *string, size_t length,
+CURLcode Curl_urldecode(const char *string, size_t length,
char **ostring, size_t *olen,
enum urlreject ctrl);
diff --git a/lib/file.c b/lib/file.c
index 0420db345..d82d57b46 100644
--- a/lib/file.c
+++ b/lib/file.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -69,6 +71,8 @@
#if defined(WIN32) || defined(MSDOS) || defined(__EMX__)
#define DOS_FILESYSTEM 1
+#elif defined(__amigaos4__)
+#define AMIGA_FILESYSTEM 1
#endif
#ifdef OPEN_NEEDS_ARG3
@@ -147,7 +151,7 @@ static CURLcode file_connect(struct Curl_easy *data, bool *done)
#endif
size_t real_path_len;
- CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &real_path,
+ CURLcode result = Curl_urldecode(data->state.up.path, 0, &real_path,
&real_path_len, REJECT_ZERO);
if(result)
return result;
@@ -194,8 +198,33 @@ static CURLcode file_connect(struct Curl_easy *data, bool *done)
return CURLE_URL_MALFORMAT;
}
+ #ifdef AMIGA_FILESYSTEM
+ /*
+ * A leading slash in an AmigaDOS path denotes the parent
+ * directory, and hence we block this as it is relative.
+ * Absolute paths start with 'volumename:', so we check for
+ * this first. Failing that, we treat the path as a real unix
+ * path, but only if the application was compiled with -lunix.
+ */
+ fd = -1;
+ file->path = real_path;
+
+ if(real_path[0] == '/') {
+ extern int __unix_path_semantics;
+ if(strchr(real_path + 1, ':')) {
+ /* Amiga absolute path */
+ fd = open_readonly(real_path + 1, O_RDONLY);
+ file->path++;
+ }
+ else if(__unix_path_semantics) {
+ /* -lunix fallback */
+ fd = open_readonly(real_path, O_RDONLY);
+ }
+ }
+ #else
fd = open_readonly(real_path, O_RDONLY);
file->path = real_path;
+ #endif
#endif
file->freepath = real_path; /* free this when done */
@@ -234,7 +263,7 @@ static CURLcode file_disconnect(struct Curl_easy *data,
{
(void)dead_connection; /* not used */
(void)conn;
- return file_done(data, 0, 0);
+ return file_done(data, CURLE_OK, FALSE);
}
#ifdef DOS_FILESYSTEM
diff --git a/lib/file.h b/lib/file.h
index 338f92e46..826d45380 100644
--- a/lib/file.h
+++ b/lib/file.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
diff --git a/lib/fileinfo.c b/lib/fileinfo.c
index b7e9f0f5e..7bbf24bde 100644
--- a/lib/fileinfo.c
+++ b/lib/fileinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/fileinfo.h b/lib/fileinfo.h
index 5ae23ad4a..5bad718cc 100644
--- a/lib/fileinfo.h
+++ b/lib/fileinfo.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <curl/curl.h>
diff --git a/lib/fopen.c b/lib/fopen.c
new file mode 100644
index 000000000..ad3691ba9
--- /dev/null
+++ b/lib/fopen.c
@@ -0,0 +1,113 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if !defined(CURL_DISABLE_COOKIES) || !defined(CURL_DISABLE_ALTSVC) || \
+ !defined(CURL_DISABLE_HSTS)
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#include "urldata.h"
+#include "rand.h"
+#include "fopen.h"
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+/*
+ * Curl_fopen() opens a file for writing with a temp name, to be renamed
+ * to the final name when completed. If there is an existing file using this
+ * name at the time of the open, this function will clone the mode from that
+ * file. if 'tempname' is non-NULL, it needs a rename after the file is
+ * written.
+ */
+CURLcode Curl_fopen(struct Curl_easy *data, const char *filename,
+ FILE **fh, char **tempname)
+{
+ CURLcode result = CURLE_WRITE_ERROR;
+ unsigned char randsuffix[9];
+ char *tempstore = NULL;
+ struct_stat sb;
+ int fd = -1;
+ *tempname = NULL;
+
+ if(stat(filename, &sb) == -1 || !S_ISREG(sb.st_mode)) {
+ /* a non-regular file, fallback to direct fopen() */
+ *fh = fopen(filename, FOPEN_WRITETEXT);
+ if(*fh)
+ return CURLE_OK;
+ goto fail;
+ }
+
+ result = Curl_rand_hex(data, randsuffix, sizeof(randsuffix));
+ if(result)
+ goto fail;
+
+ tempstore = aprintf("%s.%s.tmp", filename, randsuffix);
+ if(!tempstore) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ result = CURLE_WRITE_ERROR;
+ fd = open(tempstore, O_WRONLY | O_CREAT | O_EXCL, 0600);
+ if(fd == -1)
+ goto fail;
+
+#ifdef HAVE_FCHMOD
+ {
+ struct_stat nsb;
+ if((fstat(fd, &nsb) != -1) &&
+ (nsb.st_uid == sb.st_uid) && (nsb.st_gid == sb.st_gid)) {
+ /* if the user and group are the same, clone the original mode */
+ if(fchmod(fd, sb.st_mode) == -1)
+ goto fail;
+ }
+ }
+#endif
+
+ *fh = fdopen(fd, FOPEN_WRITETEXT);
+ if(!*fh)
+ goto fail;
+
+ *tempname = tempstore;
+ return CURLE_OK;
+
+fail:
+ if(fd != -1) {
+ close(fd);
+ unlink(tempstore);
+ }
+
+ free(tempstore);
+
+ *tempname = NULL;
+ return result;
+}
+
+#endif /* ! disabled */
diff --git a/lib/dotdot.h b/lib/fopen.h
index ac1ea363e..289e55f2a 100644
--- a/lib/dotdot.h
+++ b/lib/fopen.h
@@ -1,5 +1,5 @@
-#ifndef HEADER_CURL_DOTDOT_H
-#define HEADER_CURL_DOTDOT_H
+#ifndef HEADER_CURL_FOPEN_H
+#define HEADER_CURL_FOPEN_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,11 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
-char *Curl_dedotdotify(const char *input);
-#endif /* HEADER_CURL_DOTDOT_H */
+
+CURLcode Curl_fopen(struct Curl_easy *data, const char *filename,
+ FILE **fh, char **tempname);
+
+#endif
diff --git a/lib/formdata.c b/lib/formdata.c
index ac7a0009c..46542b432 100644
--- a/lib/formdata.c
+++ b/lib/formdata.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -33,7 +35,6 @@
#include "urldata.h" /* for struct Curl_easy */
#include "mime.h"
-#include "non-ascii.h"
#include "vtls/vtls.h"
#include "strcase.h"
#include "sendf.h"
@@ -77,10 +78,15 @@ AddHttpPost(char *name, size_t namelength,
struct curl_httppost **last_post)
{
struct curl_httppost *post;
+ if(!namelength && name)
+ namelength = strlen(name);
+ if((bufferlength > LONG_MAX) || (namelength > LONG_MAX))
+ /* avoid overflow in typecasts below */
+ return NULL;
post = calloc(1, sizeof(struct curl_httppost));
if(post) {
post->name = name;
- post->namelength = (long)(name?(namelength?namelength:strlen(name)):0);
+ post->namelength = (long)namelength;
post->contents = value;
post->contentlen = contentslength;
post->buffer = buffer;
@@ -245,8 +251,10 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
}
}
else {
- /* This is not array-state, get next option */
- option = va_arg(params, CURLformoption);
+ /* This is not array-state, get next option. This gets an 'int' with
+ va_arg() because CURLformoption might be a smaller type than int and
+ might cause compiler warnings and wrong behavior. */
+ option = (CURLformoption)va_arg(params, int);
if(CURLFORM_END == option)
break;
}
@@ -269,14 +277,8 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
* Set the Name property.
*/
case CURLFORM_PTRNAME:
-#ifdef CURL_DOES_CONVERSIONS
- /* Treat CURLFORM_PTR like CURLFORM_COPYNAME so that libcurl will copy
- * the data in all cases so that we'll have safe memory for the eventual
- * conversion.
- */
-#else
current_form->flags |= HTTPPOST_PTRNAME; /* fall through */
-#endif
+
/* FALLTHROUGH */
case CURLFORM_COPYNAME:
if(current_form->name)
@@ -901,11 +903,6 @@ CURLcode Curl_getformdata(struct Curl_easy *data,
else
uclen = (size_t)clen;
result = curl_mime_data(part, post->contents, uclen);
-#ifdef CURL_DOES_CONVERSIONS
- /* Convert textual contents now. */
- if(!result && data && part->datasize)
- result = Curl_convert_to_network(data, part->data, part->datasize);
-#endif
}
}
diff --git a/lib/formdata.h b/lib/formdata.h
index 09c6e9c28..c6c6397cd 100644
--- a/lib/formdata.h
+++ b/lib/formdata.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/ftp.c b/lib/ftp.c
index f6921e426..f1a25b23d 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -76,7 +78,6 @@
#include "speedcheck.h"
#include "warnless.h"
#include "http_proxy.h"
-#include "non-ascii.h"
#include "socks.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -515,10 +516,9 @@ static CURLcode AllowServerConnect(struct Curl_easy *data, bool *connected)
}
else {
/* Add timeout to multi handle and break out of the loop */
- if(*connected == FALSE) {
- Curl_expire(data, data->set.accepttimeout > 0 ?
- data->set.accepttimeout: DEFAULT_ACCEPT_TIMEOUT, 0);
- }
+ Curl_expire(data, data->set.accepttimeout ?
+ data->set.accepttimeout: DEFAULT_ACCEPT_TIMEOUT,
+ EXPIRE_FTP_ACCEPT);
}
return result;
@@ -592,7 +592,7 @@ static CURLcode ftp_readresp(struct Curl_easy *data,
* This response code can come at any point so having it treated
* generically is a good idea.
*/
- infof(data, "We got a 421 - timeout!");
+ infof(data, "We got a 421 - timeout");
state(data, FTP_STOP);
return CURLE_OPERATION_TIMEDOUT;
}
@@ -784,8 +784,9 @@ static CURLcode ftp_state_user(struct Curl_easy *data,
&conn->proto.ftpc.pp, "USER %s",
conn->user?conn->user:"");
if(!result) {
+ struct ftp_conn *ftpc = &conn->proto.ftpc;
+ ftpc->ftp_trying_alternative = FALSE;
state(data, FTP_USER);
- data->state.ftp_trying_alternative = FALSE;
}
return result;
}
@@ -1030,8 +1031,11 @@ static CURLcode ftp_state_use_port(struct Curl_easy *data,
if(*addr != '\0') {
/* attempt to get the address of the given interface name */
switch(Curl_if2ip(conn->ip_addr->ai_family,
+#ifdef ENABLE_IPV6
Curl_ipv6_scope(conn->ip_addr->ai_addr),
- conn->scope_id, addr, hbuf, sizeof(hbuf))) {
+ conn->scope_id,
+#endif
+ addr, hbuf, sizeof(hbuf))) {
case IF2IP_NOT_FOUND:
/* not an interface, use the given string as host name instead */
host = addr;
@@ -1163,7 +1167,7 @@ static CURLcode ftp_state_use_port(struct Curl_easy *data,
/* maybe all ports were in use already*/
if(port > port_max) {
- failf(data, "bind() failed, we ran out of ports!");
+ failf(data, "bind() failed, we ran out of ports");
Curl_closesocket(data, conn, portsock);
return CURLE_FTP_PORT_FAILED;
}
@@ -1460,7 +1464,7 @@ static CURLcode ftp_state_list(struct Curl_easy *data)
/* url-decode before evaluation: e.g. paths starting/ending with %2f */
const char *slashPos = NULL;
char *rawPath = NULL;
- result = Curl_urldecode(data, ftp->path, 0, &rawPath, NULL, REJECT_CTRL);
+ result = Curl_urldecode(ftp->path, 0, &rawPath, NULL, REJECT_CTRL);
if(result)
return result;
@@ -2125,9 +2129,11 @@ static CURLcode ftp_state_mdtm_resp(struct Curl_easy *data,
default:
infof(data, "unsupported MDTM reply format");
break;
- case 550: /* "No such file or directory" */
- failf(data, "Given file does not exist");
- result = CURLE_REMOTE_FILE_NOT_FOUND;
+ case 550: /* 550 is used for several different problems, e.g.
+ "No such file or directory" or "Permission denied".
+ It does not mean that the file does not exist at all. */
+ infof(data, "MDTM failed: file does not exist or permission problem,"
+ " continuing");
break;
}
@@ -2620,13 +2626,13 @@ static CURLcode ftp_state_user_resp(struct Curl_easy *data,
(the server denies to log the specified user) */
if(data->set.str[STRING_FTP_ALTERNATIVE_TO_USER] &&
- !data->state.ftp_trying_alternative) {
+ !ftpc->ftp_trying_alternative) {
/* Ok, USER failed. Let's try the supplied command. */
result =
Curl_pp_sendf(data, &ftpc->pp, "%s",
data->set.str[STRING_FTP_ALTERNATIVE_TO_USER]);
if(!result) {
- data->state.ftp_trying_alternative = TRUE;
+ ftpc->ftp_trying_alternative = TRUE;
state(data, FTP_USER);
}
}
@@ -2699,10 +2705,11 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
set a valid level */
Curl_sec_request_prot(conn, data->set.str[STRING_KRB_LEVEL]);
- if(Curl_sec_login(data, conn))
- infof(data, "Logging in with password in cleartext!");
- else
- infof(data, "Authentication successful");
+ if(Curl_sec_login(data, conn)) {
+ failf(data, "secure login failed");
+ return CURLE_WEIRD_SERVER_REPLY;
+ }
+ infof(data, "Authentication successful");
}
#endif
@@ -3247,7 +3254,7 @@ static CURLcode ftp_done(struct Curl_easy *data, CURLcode status,
if(!result)
/* get the url-decoded "raw" path */
- result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen,
+ result = Curl_urldecode(ftp->path, 0, &rawPath, &pathLen,
REJECT_CTRL);
if(result) {
/* We can limp along anyway (and should try to since we may already be in
@@ -3379,7 +3386,7 @@ static CURLcode ftp_done(struct Curl_easy *data, CURLcode status,
(ftp->transfer == PPTRANSFER_BODY)) {
failf(data, "Uploaded unaligned file size (%" CURL_FORMAT_CURL_OFF_T
" out of %" CURL_FORMAT_CURL_OFF_T " bytes)",
- data->req.bytecount, data->state.infilesize);
+ data->req.writebytecount, data->state.infilesize);
result = CURLE_PARTIAL_FILE;
}
}
@@ -3402,7 +3409,7 @@ static CURLcode ftp_done(struct Curl_easy *data, CURLcode status,
else if(!ftpc->dont_check &&
!data->req.bytecount &&
(data->req.size>0)) {
- failf(data, "No data was received!");
+ failf(data, "No data was received");
result = CURLE_FTP_COULDNT_RETR_FILE;
}
}
@@ -3559,8 +3566,10 @@ static CURLcode ftp_do_more(struct Curl_easy *data, int *completep)
bool connected = FALSE;
bool complete = FALSE;
- /* the ftp struct is inited in ftp_connect() */
- struct FTP *ftp = data->req.p.ftp;
+ /* the ftp struct is inited in ftp_connect(). If we are connecting to an HTTP
+ * proxy then the state will not be valid until after that connection is
+ * complete */
+ struct FTP *ftp = NULL;
/* if the second connection isn't done yet, wait for it */
if(!conn->bits.tcpconnect[SECONDARYSOCKET]) {
@@ -3601,6 +3610,9 @@ static CURLcode ftp_do_more(struct Curl_easy *data, int *completep)
return result;
#endif
+ /* Curl_proxy_connect might have moved the protocol state */
+ ftp = data->req.p.ftp;
+
if(ftpc->state) {
/* already in a state so skip the initial commands.
They are only done to kickstart the do_more state */
@@ -4131,9 +4143,11 @@ CURLcode ftp_parse_url_path(struct Curl_easy *data)
ftpc->cwdfail = FALSE;
/* url-decode ftp path before further evaluation */
- result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen, REJECT_CTRL);
- if(result)
+ result = Curl_urldecode(ftp->path, 0, &rawPath, &pathLen, REJECT_CTRL);
+ if(result) {
+ failf(data, "path contains control characters");
return result;
+ }
switch(data->set.ftp_filemethod) {
case FTPFILE_NOCWD: /* fastest, but less standard-compliant */
@@ -4231,7 +4245,7 @@ CURLcode ftp_parse_url_path(struct Curl_easy *data)
if(data->set.upload && !ftpc->file && (ftp->transfer == PPTRANSFER_BODY)) {
/* We need a file name when uploading. Return error! */
- failf(data, "Uploading to a URL without a file name!");
+ failf(data, "Uploading to a URL without a file name");
free(rawPath);
return CURLE_URL_MALFORMAT;
}
diff --git a/lib/ftp.h b/lib/ftp.h
index 1cfdac085..7f6f4328d 100644
--- a/lib/ftp.h
+++ b/lib/ftp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,8 +20,12 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
+#include "curl_setup.h"
+
#include "pingpong.h"
#ifndef CURL_DISABLE_FTP
@@ -149,6 +153,7 @@ 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 */
+ BIT(ftp_trying_alternative);
};
#define DEFAULT_ACCEPT_TIMEOUT 60000 /* milliseconds == one minute */
diff --git a/lib/ftplistparser.c b/lib/ftplistparser.c
index 716ff3817..40f5f3f18 100644
--- a/lib/ftplistparser.c
+++ b/lib/ftplistparser.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/**
@@ -420,7 +422,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
char *endptr = finfo->b_data + 6;
/* here we can deal with directory size, pass the leading
whitespace and then the digits */
- while(ISSPACE(*endptr))
+ while(ISBLANK(*endptr))
endptr++;
while(ISDIGIT(*endptr))
endptr++;
@@ -892,7 +894,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
parser->item_length++;
switch(parser->state.NT.sub.time) {
case PL_WINNT_TIME_PRESPACE:
- if(!ISSPACE(c)) {
+ if(!ISBLANK(c)) {
parser->state.NT.sub.time = PL_WINNT_TIME_TIME;
}
break;
diff --git a/lib/ftplistparser.h b/lib/ftplistparser.h
index e4cd8201d..0a8054341 100644
--- a/lib/ftplistparser.h
+++ b/lib/ftplistparser.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/functypes.h b/lib/functypes.h
new file mode 100644
index 000000000..8891b1d5d
--- /dev/null
+++ b/lib/functypes.h
@@ -0,0 +1,115 @@
+#ifndef HEADER_CURL_FUNCTYPES_H
+#define HEADER_CURL_FUNCTYPES_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+/* defaults:
+
+ ssize_t recv(int, void *, size_t, int);
+ ssize_t send(int, const void *, size_t, int);
+
+ If other argument or return types are needed:
+
+ 1. For systems that run configure or cmake, the alternatives are provided
+ here.
+ 2. For systems with config-*.h files, define them there.
+*/
+
+#ifdef WIN32
+/* int recv(SOCKET, char *, int, int) */
+#define RECV_TYPE_ARG1 SOCKET
+#define RECV_TYPE_ARG2 char *
+#define RECV_TYPE_ARG3 int
+#define RECV_TYPE_RETV int
+
+/* int send(SOCKET, const char *, int, int); */
+#define SEND_TYPE_ARG1 SOCKET
+#define SEND_TYPE_ARG2 char *
+#define SEND_TYPE_ARG3 int
+#define SEND_TYPE_RETV int
+
+#elif defined(__AMIGA__) /* Any AmigaOS flavour */
+
+/* long recv(long, char *, long, long); */
+#define RECV_TYPE_ARG1 long
+#define RECV_TYPE_ARG2 char *
+#define RECV_TYPE_ARG3 long
+#define RECV_TYPE_ARG4 long
+#define RECV_TYPE_RETV long
+
+/* int send(int, const char *, int, int); */
+#define SEND_TYPE_ARG1 int
+#define SEND_TYPE_ARG2 char *
+#define SEND_TYPE_ARG3 int
+#define SEND_TYPE_RETV int
+#endif
+
+
+#ifndef RECV_TYPE_ARG1
+#define RECV_TYPE_ARG1 int
+#endif
+
+#ifndef RECV_TYPE_ARG2
+#define RECV_TYPE_ARG2 void *
+#endif
+
+#ifndef RECV_TYPE_ARG3
+#define RECV_TYPE_ARG3 size_t
+#endif
+
+#ifndef RECV_TYPE_ARG4
+#define RECV_TYPE_ARG4 int
+#endif
+
+#ifndef RECV_TYPE_RETV
+#define RECV_TYPE_RETV ssize_t
+#endif
+
+#ifndef SEND_QUAL_ARG2
+#define SEND_QUAL_ARG2 const
+#endif
+
+#ifndef SEND_TYPE_ARG1
+#define SEND_TYPE_ARG1 int
+#endif
+
+#ifndef SEND_TYPE_ARG2
+#define SEND_TYPE_ARG2 void *
+#endif
+
+#ifndef SEND_TYPE_ARG3
+#define SEND_TYPE_ARG3 size_t
+#endif
+
+#ifndef SEND_TYPE_ARG4
+#define SEND_TYPE_ARG4 int
+#endif
+
+#ifndef SEND_TYPE_RETV
+#define SEND_TYPE_RETV ssize_t
+#endif
+
+#endif /* HEADER_CURL_FUNCTYPES_H */
diff --git a/lib/getenv.c b/lib/getenv.c
index 92c53505c..5f00fd13a 100644
--- a/lib/getenv.c
+++ b/lib/getenv.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/getinfo.c b/lib/getinfo.c
index 9091e6139..c3556b310 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -164,6 +166,20 @@ static CURLcode getinfo_char(struct Curl_easy *data, CURLINFO info,
case CURLINFO_SCHEME:
*param_charp = data->info.conn_scheme;
break;
+ case CURLINFO_CAPATH:
+#ifdef CURL_CA_PATH
+ *param_charp = CURL_CA_PATH;
+#else
+ *param_charp = NULL;
+#endif
+ break;
+ case CURLINFO_CAINFO:
+#ifdef CURL_CA_BUNDLE
+ *param_charp = CURL_CA_BUNDLE;
+#else
+ *param_charp = NULL;
+#endif
+ break;
default:
return CURLE_UNKNOWN_OPTION;
@@ -285,6 +301,7 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info,
/* return if the condition prevented the document to get transferred */
*param_longp = data->info.timecond ? 1L : 0L;
break;
+#ifndef CURL_DISABLE_RTSP
case CURLINFO_RTSP_CLIENT_CSEQ:
*param_longp = data->state.rtsp_next_client_CSeq;
break;
@@ -294,6 +311,7 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info,
case CURLINFO_RTSP_CSEQ_RECV:
*param_longp = data->state.rtsp_CSeq_recv;
break;
+#endif
case CURLINFO_HTTP_VERSION:
switch(data->info.httpversion) {
case 10:
@@ -560,7 +578,7 @@ CURLcode Curl_getinfo(struct Curl_easy *data, CURLINFO info, ...)
CURLcode result = CURLE_UNKNOWN_OPTION;
if(!data)
- return result;
+ return CURLE_BAD_FUNCTION_ARGUMENT;
va_start(arg, info);
diff --git a/lib/getinfo.h b/lib/getinfo.h
index f35d1b4b3..1b5e8c20f 100644
--- a/lib/getinfo.h
+++ b/lib/getinfo.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
CURLcode Curl_getinfo(struct Curl_easy *data, CURLINFO info, ...);
CURLcode Curl_initinfo(struct Curl_easy *data);
diff --git a/lib/gopher.c b/lib/gopher.c
index f61232ff5..01f4bdef0 100644
--- a/lib/gopher.c
+++ b/lib/gopher.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -165,7 +167,7 @@ static CURLcode gopher_do(struct Curl_easy *data, bool *done)
newp += 2;
/* ... and finally unescape */
- result = Curl_urldecode(data, newp, 0, &sel, &len, REJECT_ZERO);
+ result = Curl_urldecode(newp, 0, &sel, &len, REJECT_ZERO);
free(gopherpath);
if(result)
return result;
diff --git a/lib/gopher.h b/lib/gopher.h
index 6b8bd554a..4ea269d2b 100644
--- a/lib/gopher.h
+++ b/lib/gopher.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_GOPHER
diff --git a/lib/h2h3.c b/lib/h2h3.c
new file mode 100644
index 000000000..50254ad0f
--- /dev/null
+++ b/lib/h2h3.c
@@ -0,0 +1,309 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+#include "urldata.h"
+#include "h2h3.h"
+#include "transfer.h"
+#include "sendf.h"
+#include "strcase.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+/*
+ * Curl_pseudo_headers() creates the array with pseudo headers to be
+ * used in a HTTP/2 or HTTP/3 request.
+ */
+
+#if defined(USE_NGHTTP2) || defined(ENABLE_QUIC)
+
+/* Index where :authority header field will appear in request header
+ field list. */
+#define AUTHORITY_DST_IDX 3
+
+/* USHRT_MAX is 65535 == 0xffff */
+#define HEADER_OVERFLOW(x) \
+ (x.namelen > 0xffff || x.valuelen > 0xffff - x.namelen)
+
+/*
+ * Check header memory for the token "trailers".
+ * Parse the tokens as separated by comma and surrounded by whitespace.
+ * Returns TRUE if found or FALSE if not.
+ */
+static bool contains_trailers(const char *p, size_t len)
+{
+ const char *end = p + len;
+ for(;;) {
+ for(; p != end && (*p == ' ' || *p == '\t'); ++p)
+ ;
+ if(p == end || (size_t)(end - p) < sizeof("trailers") - 1)
+ return FALSE;
+ if(strncasecompare("trailers", p, sizeof("trailers") - 1)) {
+ p += sizeof("trailers") - 1;
+ for(; p != end && (*p == ' ' || *p == '\t'); ++p)
+ ;
+ if(p == end || *p == ',')
+ return TRUE;
+ }
+ /* skip to next token */
+ for(; p != end && *p != ','; ++p)
+ ;
+ if(p == end)
+ return FALSE;
+ ++p;
+ }
+}
+
+typedef enum {
+ /* Send header to server */
+ HEADERINST_FORWARD,
+ /* Don't send header to server */
+ HEADERINST_IGNORE,
+ /* Discard header, and replace it with "te: trailers" */
+ HEADERINST_TE_TRAILERS
+} header_instruction;
+
+/* Decides how to treat given header field. */
+static header_instruction inspect_header(const char *name, size_t namelen,
+ const char *value, size_t valuelen) {
+ switch(namelen) {
+ case 2:
+ if(!strncasecompare("te", name, namelen))
+ return HEADERINST_FORWARD;
+
+ return contains_trailers(value, valuelen) ?
+ HEADERINST_TE_TRAILERS : HEADERINST_IGNORE;
+ case 7:
+ return strncasecompare("upgrade", name, namelen) ?
+ HEADERINST_IGNORE : HEADERINST_FORWARD;
+ case 10:
+ return (strncasecompare("connection", name, namelen) ||
+ strncasecompare("keep-alive", name, namelen)) ?
+ HEADERINST_IGNORE : HEADERINST_FORWARD;
+ case 16:
+ return strncasecompare("proxy-connection", name, namelen) ?
+ HEADERINST_IGNORE : HEADERINST_FORWARD;
+ case 17:
+ return strncasecompare("transfer-encoding", name, namelen) ?
+ HEADERINST_IGNORE : HEADERINST_FORWARD;
+ default:
+ return HEADERINST_FORWARD;
+ }
+}
+
+CURLcode Curl_pseudo_headers(struct Curl_easy *data,
+ const char *mem, /* the request */
+ const size_t len /* size of request */,
+ struct h2h3req **hp)
+{
+ struct connectdata *conn = data->conn;
+ size_t nheader = 0;
+ size_t i;
+ size_t authority_idx;
+ char *hdbuf = (char *)mem;
+ char *end, *line_end;
+ struct h2h3pseudo *nva = NULL;
+ struct h2h3req *hreq = NULL;
+ char *vptr;
+
+ /* Calculate number of headers contained in [mem, mem + len). Assumes a
+ correctly generated HTTP header field block. */
+ for(i = 1; i < len; ++i) {
+ if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
+ ++nheader;
+ ++i;
+ }
+ }
+ if(nheader < 2) {
+ goto fail;
+ }
+ /* We counted additional 2 \r\n in the first and last line. We need 3
+ new headers: :method, :path and :scheme. Therefore we need one
+ more space. */
+ nheader += 1;
+ hreq = malloc(sizeof(struct h2h3req) +
+ sizeof(struct h2h3pseudo) * (nheader - 1));
+ if(!hreq) {
+ goto fail;
+ }
+
+ nva = &hreq->header[0];
+
+ /* Extract :method, :path from request line
+ We do line endings with CRLF so checking for CR is enough */
+ line_end = memchr(hdbuf, '\r', len);
+ if(!line_end) {
+ goto fail;
+ }
+
+ /* Method does not contain spaces */
+ end = memchr(hdbuf, ' ', line_end - hdbuf);
+ if(!end || end == hdbuf)
+ goto fail;
+ nva[0].name = H2H3_PSEUDO_METHOD;
+ nva[0].namelen = sizeof(H2H3_PSEUDO_METHOD) - 1;
+ nva[0].value = hdbuf;
+ nva[0].valuelen = (size_t)(end - hdbuf);
+
+ hdbuf = end + 1;
+
+ /* Path may contain spaces so scan backwards */
+ end = NULL;
+ for(i = (size_t)(line_end - hdbuf); i; --i) {
+ if(hdbuf[i - 1] == ' ') {
+ end = &hdbuf[i - 1];
+ break;
+ }
+ }
+ if(!end || end == hdbuf)
+ goto fail;
+ nva[1].name = H2H3_PSEUDO_PATH;
+ nva[1].namelen = sizeof(H2H3_PSEUDO_PATH) - 1;
+ nva[1].value = hdbuf;
+ nva[1].valuelen = (end - hdbuf);
+
+ nva[2].name = H2H3_PSEUDO_SCHEME;
+ nva[2].namelen = sizeof(H2H3_PSEUDO_SCHEME) - 1;
+ vptr = Curl_checkheaders(data, STRCONST(H2H3_PSEUDO_SCHEME));
+ if(vptr) {
+ vptr += sizeof(H2H3_PSEUDO_SCHEME);
+ while(*vptr && ISBLANK(*vptr))
+ vptr++;
+ nva[2].value = vptr;
+ infof(data, "set pseudo header %s to %s", H2H3_PSEUDO_SCHEME, vptr);
+ }
+ else {
+ if(conn->handler->flags & PROTOPT_SSL)
+ nva[2].value = "https";
+ else
+ nva[2].value = "http";
+ }
+ nva[2].valuelen = strlen((char *)nva[2].value);
+
+ authority_idx = 0;
+ i = 3;
+ while(i < nheader) {
+ size_t hlen;
+
+ hdbuf = line_end + 2;
+
+ /* check for next CR, but only within the piece of data left in the given
+ buffer */
+ line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
+ if(!line_end || (line_end == hdbuf))
+ goto fail;
+
+ /* header continuation lines are not supported */
+ if(*hdbuf == ' ' || *hdbuf == '\t')
+ goto fail;
+
+ for(end = hdbuf; end < line_end && *end != ':'; ++end)
+ ;
+ if(end == hdbuf || end == line_end)
+ goto fail;
+ hlen = end - hdbuf;
+
+ if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
+ authority_idx = i;
+ nva[i].name = H2H3_PSEUDO_AUTHORITY;
+ nva[i].namelen = sizeof(H2H3_PSEUDO_AUTHORITY) - 1;
+ }
+ else {
+ nva[i].namelen = (size_t)(end - hdbuf);
+ /* Lower case the header name for HTTP/3 */
+ Curl_strntolower((char *)hdbuf, hdbuf, nva[i].namelen);
+ nva[i].name = hdbuf;
+ }
+ hdbuf = end + 1;
+ while(*hdbuf == ' ' || *hdbuf == '\t')
+ ++hdbuf;
+ end = line_end;
+
+ switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
+ end - hdbuf)) {
+ case HEADERINST_IGNORE:
+ /* skip header fields prohibited by HTTP/2 specification. */
+ --nheader;
+ continue;
+ case HEADERINST_TE_TRAILERS:
+ nva[i].value = "trailers";
+ nva[i].valuelen = sizeof("trailers") - 1;
+ break;
+ default:
+ nva[i].value = hdbuf;
+ nva[i].valuelen = (end - hdbuf);
+ }
+
+ ++i;
+ }
+
+ /* :authority must come before non-pseudo header fields */
+ if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
+ struct h2h3pseudo authority = nva[authority_idx];
+ for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
+ nva[i] = nva[i - 1];
+ }
+ nva[i] = authority;
+ }
+
+ /* Warn stream may be rejected if cumulative length of headers is too
+ large. */
+#define MAX_ACC 60000 /* <64KB to account for some overhead */
+ {
+ size_t acc = 0;
+
+ for(i = 0; i < nheader; ++i) {
+ acc += nva[i].namelen + nva[i].valuelen;
+
+ infof(data, "h2h3 [%.*s: %.*s]",
+ (int)nva[i].namelen, nva[i].name,
+ (int)nva[i].valuelen, nva[i].value);
+ }
+
+ if(acc > MAX_ACC) {
+ infof(data, "http_request: Warning: The cumulative length of all "
+ "headers exceeds %d bytes and that could cause the "
+ "stream to be rejected.", MAX_ACC);
+ }
+ }
+
+ hreq->entries = nheader;
+ *hp = hreq;
+
+ return CURLE_OK;
+
+ fail:
+ free(hreq);
+ return CURLE_OUT_OF_MEMORY;
+}
+
+void Curl_pseudo_free(struct h2h3req *hp)
+{
+ free(hp);
+}
+
+#endif /* USE_NGHTTP2 or HTTP/3 enabled */
diff --git a/lib/h2h3.h b/lib/h2h3.h
new file mode 100644
index 000000000..84caec5d5
--- /dev/null
+++ b/lib/h2h3.h
@@ -0,0 +1,61 @@
+#ifndef HEADER_CURL_H2H3_H
+#define HEADER_CURL_H2H3_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "curl_setup.h"
+
+#define H2H3_PSEUDO_METHOD ":method"
+#define H2H3_PSEUDO_SCHEME ":scheme"
+#define H2H3_PSEUDO_AUTHORITY ":authority"
+#define H2H3_PSEUDO_PATH ":path"
+#define H2H3_PSEUDO_STATUS ":status"
+
+struct h2h3pseudo {
+ const char *name;
+ size_t namelen;
+ const char *value;
+ size_t valuelen;
+};
+
+struct h2h3req {
+ size_t entries;
+ struct h2h3pseudo header[1]; /* the array is allocated to contain entries */
+};
+
+/*
+ * Curl_pseudo_headers() creates the array with pseudo headers to be
+ * used in a HTTP/2 or HTTP/3 request. Returns an allocated struct.
+ * Free it with Curl_pseudo_free().
+ */
+CURLcode Curl_pseudo_headers(struct Curl_easy *data,
+ const char *request,
+ const size_t len,
+ struct h2h3req **hp);
+
+/*
+ * Curl_pseudo_free() frees a h2h3req struct.
+ */
+void Curl_pseudo_free(struct h2h3req *hp);
+
+#endif /* HEADER_CURL_H2H3_H */
diff --git a/lib/hash.c b/lib/hash.c
index 884890694..b6a2a33c7 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/hash.h b/lib/hash.h
index e166916a9..5b59bf111 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/headers.c b/lib/headers.c
new file mode 100644
index 000000000..978c918f4
--- /dev/null
+++ b/lib/headers.c
@@ -0,0 +1,386 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#include "urldata.h"
+#include "strdup.h"
+#include "strcase.h"
+#include "headers.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_HEADERS_API)
+
+/* Generate the curl_header struct for the user. This function MUST assign all
+ struct fields in the output struct. */
+static void copy_header_external(struct Curl_easy *data,
+ struct Curl_header_store *hs,
+ size_t index,
+ size_t amount,
+ struct Curl_llist_element *e,
+ struct curl_header **hout)
+{
+ struct curl_header *h = *hout = &data->state.headerout;
+ h->name = hs->name;
+ h->value = hs->value;
+ h->amount = amount;
+ h->index = index;
+ /* this will randomly OR a reserved bit for the sole purpose of making it
+ impossible for applications to do == comparisons, as that would otherwise
+ be very tempting and then lead to the reserved bits not being reserved
+ anymore. */
+ h->origin = hs->type | (1<<27);
+ h->anchor = e;
+}
+
+/* public API */
+CURLHcode curl_easy_header(CURL *easy,
+ const char *name,
+ size_t nameindex,
+ unsigned int type,
+ int request,
+ struct curl_header **hout)
+{
+ struct Curl_llist_element *e;
+ struct Curl_llist_element *e_pick = NULL;
+ struct Curl_easy *data = easy;
+ size_t match = 0;
+ size_t amount = 0;
+ struct Curl_header_store *hs = NULL;
+ struct Curl_header_store *pick = NULL;
+ if(!name || !hout || !data ||
+ (type > (CURLH_HEADER|CURLH_TRAILER|CURLH_CONNECT|CURLH_1XX|
+ CURLH_PSEUDO)) || !type || (request < -1))
+ return CURLHE_BAD_ARGUMENT;
+ if(!Curl_llist_count(&data->state.httphdrs))
+ return CURLHE_NOHEADERS; /* no headers available */
+ if(request > data->state.requests)
+ return CURLHE_NOREQUEST;
+ if(request == -1)
+ request = data->state.requests;
+
+ /* we need a first round to count amount of this header */
+ for(e = data->state.httphdrs.head; e; e = e->next) {
+ hs = e->ptr;
+ if(strcasecompare(hs->name, name) &&
+ (hs->type & type) &&
+ (hs->request == request)) {
+ amount++;
+ pick = hs;
+ e_pick = e;
+ }
+ }
+ if(!amount)
+ return CURLHE_MISSING;
+ else if(nameindex >= amount)
+ return CURLHE_BADINDEX;
+
+ if(nameindex == amount - 1)
+ /* if the last or only occurrence is what's asked for, then we know it */
+ hs = pick;
+ else {
+ for(e = data->state.httphdrs.head; e; e = e->next) {
+ hs = e->ptr;
+ if(strcasecompare(hs->name, name) &&
+ (hs->type & type) &&
+ (hs->request == request) &&
+ (match++ == nameindex)) {
+ e_pick = e;
+ break;
+ }
+ }
+ if(!e) /* this shouldn't happen */
+ return CURLHE_MISSING;
+ }
+ /* this is the name we want */
+ copy_header_external(data, hs, nameindex, amount, e_pick, hout);
+ return CURLHE_OK;
+}
+
+/* public API */
+struct curl_header *curl_easy_nextheader(CURL *easy,
+ unsigned int type,
+ int request,
+ struct curl_header *prev)
+{
+ struct Curl_easy *data = easy;
+ struct Curl_llist_element *pick;
+ struct Curl_llist_element *e;
+ struct Curl_header_store *hs;
+ struct curl_header *hout;
+ size_t amount = 0;
+ size_t index = 0;
+
+ if(request > data->state.requests)
+ return NULL;
+ if(request == -1)
+ request = data->state.requests;
+
+ if(prev) {
+ pick = prev->anchor;
+ if(!pick)
+ /* something is wrong */
+ return NULL;
+ pick = pick->next;
+ }
+ else
+ pick = data->state.httphdrs.head;
+
+ if(pick) {
+ /* make sure it is the next header of the desired type */
+ do {
+ hs = pick->ptr;
+ if((hs->type & type) && (hs->request == request))
+ break;
+ pick = pick->next;
+ } while(pick);
+ }
+
+ if(!pick)
+ /* no more headers available */
+ return NULL;
+
+ hs = pick->ptr;
+
+ /* count number of occurrences of this name within the mask and figure out
+ the index for the currently selected entry */
+ for(e = data->state.httphdrs.head; e; e = e->next) {
+ struct Curl_header_store *check = e->ptr;
+ if(strcasecompare(hs->name, check->name) &&
+ (check->request == request) &&
+ (check->type & type))
+ amount++;
+ if(e == pick)
+ index = amount - 1;
+ }
+
+ copy_header_external(data, hs, index, amount, pick, &hout);
+ return hout;
+}
+
+static CURLcode namevalue(char *header, size_t hlen, unsigned int type,
+ char **name, char **value)
+{
+ char *end = header + hlen - 1; /* point to the last byte */
+ DEBUGASSERT(hlen);
+ *name = header;
+
+ if(type == CURLH_PSEUDO) {
+ if(*header != ':')
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ header++;
+ }
+
+ /* Find the end of the header name */
+ while(*header && (*header != ':'))
+ ++header;
+
+ if(*header)
+ /* Skip over colon, null it */
+ *header++ = 0;
+ else
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+
+ /* skip all leading space letters */
+ while(*header && ISBLANK(*header))
+ header++;
+
+ *value = header;
+
+ /* skip all trailing space letters */
+ while((end > header) && ISSPACE(*end))
+ *end-- = 0; /* nul terminate */
+ return CURLE_OK;
+}
+
+static CURLcode unfold_value(struct Curl_easy *data, const char *value,
+ size_t vlen) /* length of the incoming header */
+{
+ struct Curl_header_store *hs;
+ struct Curl_header_store *newhs;
+ size_t olen; /* length of the old value */
+ size_t oalloc; /* length of the old name + value + separator */
+ size_t offset;
+ DEBUGASSERT(data->state.prevhead);
+ hs = data->state.prevhead;
+ olen = strlen(hs->value);
+ offset = hs->value - hs->buffer;
+ oalloc = olen + offset + 1;
+
+ /* skip all trailing space letters */
+ while(vlen && ISSPACE(value[vlen - 1]))
+ vlen--;
+
+ /* save only one leading space */
+ while((vlen > 1) && ISBLANK(value[0]) && ISBLANK(value[1])) {
+ vlen--;
+ value++;
+ }
+
+ /* since this header block might move in the realloc below, it needs to
+ first be unlinked from the list and then re-added again after the
+ realloc */
+ Curl_llist_remove(&data->state.httphdrs, &hs->node, NULL);
+
+ /* new size = struct + new value length + old name+value length */
+ newhs = Curl_saferealloc(hs, sizeof(*hs) + vlen + oalloc + 1);
+ if(!newhs)
+ return CURLE_OUT_OF_MEMORY;
+ /* ->name' and ->value point into ->buffer (to keep the header allocation
+ in a single memory block), which now potentially have moved. Adjust
+ them. */
+ newhs->name = newhs->buffer;
+ newhs->value = &newhs->buffer[offset];
+
+ /* put the data at the end of the previous data, not the newline */
+ memcpy(&newhs->value[olen], value, vlen);
+ newhs->value[olen + vlen] = 0; /* null-terminate at newline */
+
+ /* insert this node into the list of headers */
+ Curl_llist_insert_next(&data->state.httphdrs, data->state.httphdrs.tail,
+ newhs, &newhs->node);
+ data->state.prevhead = newhs;
+ return CURLE_OK;
+}
+
+
+/*
+ * Curl_headers_push() gets passed a full HTTP header to store. It gets called
+ * immediately before the header callback. The header is CRLF terminated.
+ */
+CURLcode Curl_headers_push(struct Curl_easy *data, const char *header,
+ unsigned char type)
+{
+ char *value = NULL;
+ char *name = NULL;
+ char *end;
+ size_t hlen; /* length of the incoming header */
+ struct Curl_header_store *hs;
+ CURLcode result = CURLE_OUT_OF_MEMORY;
+
+ if((header[0] == '\r') || (header[0] == '\n'))
+ /* ignore the body separator */
+ return CURLE_OK;
+
+ end = strchr(header, '\r');
+ if(!end) {
+ end = strchr(header, '\n');
+ if(!end)
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ }
+ hlen = end - header + 1;
+
+ if((header[0] == ' ') || (header[0] == '\t')) {
+ if(data->state.prevhead)
+ /* line folding, append value to the previous header's value */
+ return unfold_value(data, header, hlen);
+ else
+ /* can't unfold without a previous header */
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ }
+
+ hs = calloc(1, sizeof(*hs) + hlen);
+ if(!hs)
+ return CURLE_OUT_OF_MEMORY;
+ memcpy(hs->buffer, header, hlen);
+ hs->buffer[hlen] = 0; /* nul terminate */
+
+ result = namevalue(hs->buffer, hlen, type, &name, &value);
+ if(result)
+ goto fail;
+
+ hs->name = name;
+ hs->value = value;
+ hs->type = type;
+ hs->request = data->state.requests;
+
+ /* insert this node into the list of headers */
+ Curl_llist_insert_next(&data->state.httphdrs, data->state.httphdrs.tail,
+ hs, &hs->node);
+ data->state.prevhead = hs;
+ return CURLE_OK;
+ fail:
+ free(hs);
+ return result;
+}
+
+/*
+ * Curl_headers_init(). Init the headers subsystem.
+ */
+static void headers_init(struct Curl_easy *data)
+{
+ Curl_llist_init(&data->state.httphdrs, NULL);
+}
+
+/*
+ * Curl_headers_cleanup(). Free all stored headers and associated memory.
+ */
+CURLcode Curl_headers_cleanup(struct Curl_easy *data)
+{
+ struct Curl_llist_element *e;
+ struct Curl_llist_element *n;
+
+ for(e = data->state.httphdrs.head; e; e = n) {
+ struct Curl_header_store *hs = e->ptr;
+ n = e->next;
+ free(hs);
+ }
+ headers_init(data);
+ return CURLE_OK;
+}
+
+#else /* HTTP-disabled builds below */
+
+CURLHcode curl_easy_header(CURL *easy,
+ const char *name,
+ size_t index,
+ unsigned int origin,
+ int request,
+ struct curl_header **hout)
+{
+ (void)easy;
+ (void)name;
+ (void)index;
+ (void)origin;
+ (void)request;
+ (void)hout;
+ return CURLHE_NOT_BUILT_IN;
+}
+
+struct curl_header *curl_easy_nextheader(CURL *easy,
+ unsigned int type,
+ int request,
+ struct curl_header *prev)
+{
+ (void)easy;
+ (void)type;
+ (void)request;
+ (void)prev;
+ return NULL;
+}
+#endif
diff --git a/lib/headers.h b/lib/headers.h
new file mode 100644
index 000000000..96332dbd0
--- /dev/null
+++ b/lib/headers.h
@@ -0,0 +1,55 @@
+#ifndef HEADER_CURL_HEADER_H
+#define HEADER_CURL_HEADER_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "curl_setup.h"
+
+#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_HEADERS_API)
+
+struct Curl_header_store {
+ struct Curl_llist_element node;
+ char *name; /* points into 'buffer' */
+ char *value; /* points into 'buffer */
+ int request; /* 0 is the first request, then 1.. 2.. */
+ unsigned char type; /* CURLH_* defines */
+ char buffer[1]; /* this is the raw header blob */
+};
+
+/*
+ * Curl_headers_push() gets passed a full header to store.
+ */
+CURLcode Curl_headers_push(struct Curl_easy *data, const char *header,
+ unsigned char type);
+
+/*
+ * Curl_headers_cleanup(). Free all stored headers and associated memory.
+ */
+CURLcode Curl_headers_cleanup(struct Curl_easy *data);
+
+#else
+#define Curl_headers_push(x,y,z) CURLE_OK
+#define Curl_headers_cleanup(x) Curl_nop_stmt
+#endif
+
+#endif /* HEADER_CURL_HEADER_H */
diff --git a/lib/hmac.c b/lib/hmac.c
index 590abe6d2..dfb0db575 100644
--- a/lib/hmac.c
+++ b/lib/hmac.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC2104 Keyed-Hashing for Message Authentication
*
***************************************************************************/
@@ -39,8 +41,8 @@
* Generic HMAC algorithm.
*
* This module computes HMAC digests based on any hash function. Parameters
- * and computing procedures are set-up dynamically at HMAC computation
- * context initialisation.
+ * and computing procedures are set-up dynamically at HMAC computation context
+ * initialization.
*/
static const unsigned char hmac_ipad = 0x36;
diff --git a/lib/hostasyn.c b/lib/hostasyn.c
index f7d99ce9a..0bfbe2ef8 100644
--- a/lib/hostasyn.c
+++ b/lib/hostasyn.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/hostip.c b/lib/hostip.c
index 911d5ed6d..941ecacf4 100644
--- a/lib/hostip.c
+++ b/lib/hostip.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -179,7 +181,7 @@ create_hostcache_id(const char *name, int port, char *ptr, size_t buflen)
len = buflen - 7;
/* store and lower case the name */
while(len--)
- *ptr++ = (char)TOLOWER(*name++);
+ *ptr++ = Curl_raw_tolower(*name++);
msnprintf(ptr, 7, ":%u", port);
}
@@ -295,6 +297,31 @@ static struct Curl_dns_entry *fetch_addr(struct Curl_easy *data,
}
}
+ /* See if the returned entry matches the required resolve mode */
+ if(dns && data->conn->ip_version != CURL_IPRESOLVE_WHATEVER) {
+ int pf = PF_INET;
+ bool found = false;
+ struct Curl_addrinfo *addr = dns->addr;
+
+#ifdef PF_INET6
+ if(data->conn->ip_version == CURL_IPRESOLVE_V6)
+ pf = PF_INET6;
+#endif
+
+ while(addr) {
+ if(addr->ai_family == pf) {
+ found = true;
+ break;
+ }
+ addr = addr->ai_next;
+ }
+
+ if(!found) {
+ infof(data, "Hostname in DNS cache doesn't have needed family, zapped");
+ dns = NULL; /* the memory deallocation is being handled by the hash */
+ Curl_hash_delete(data->dns.hostcache, entry_id, entry_len + 1);
+ }
+ }
return dns;
}
@@ -461,12 +488,12 @@ Curl_cache_addr(struct Curl_easy *data,
}
#ifdef ENABLE_IPV6
-/* return a static IPv6 resolve for 'localhost' */
-static struct Curl_addrinfo *get_localhost6(int port)
+/* return a static IPv6 ::1 for the name */
+static struct Curl_addrinfo *get_localhost6(int port, const char *name)
{
struct Curl_addrinfo *ca;
const size_t ss_size = sizeof(struct sockaddr_in6);
- const size_t hostlen = strlen("localhost");
+ const size_t hostlen = strlen(name);
struct sockaddr_in6 sa6;
unsigned char ipv6[16];
unsigned short port16 = (unsigned short)(port & 0xffff);
@@ -491,19 +518,19 @@ static struct Curl_addrinfo *get_localhost6(int port)
ca->ai_addr = (void *)((char *)ca + sizeof(struct Curl_addrinfo));
memcpy(ca->ai_addr, &sa6, ss_size);
ca->ai_canonname = (char *)ca->ai_addr + ss_size;
- strcpy(ca->ai_canonname, "localhost");
+ strcpy(ca->ai_canonname, name);
return ca;
}
#else
-#define get_localhost6(x) NULL
+#define get_localhost6(x,y) NULL
#endif
-/* return a static IPv4 resolve for 'localhost' */
-static struct Curl_addrinfo *get_localhost(int port)
+/* return a static IPv4 127.0.0.1 for the given name */
+static struct Curl_addrinfo *get_localhost(int port, const char *name)
{
struct Curl_addrinfo *ca;
const size_t ss_size = sizeof(struct sockaddr_in);
- const size_t hostlen = strlen("localhost");
+ const size_t hostlen = strlen(name);
struct sockaddr_in sa;
unsigned int ipv4;
unsigned short port16 = (unsigned short)(port & 0xffff);
@@ -527,8 +554,8 @@ static struct Curl_addrinfo *get_localhost(int port)
ca->ai_addr = (void *)((char *)ca + sizeof(struct Curl_addrinfo));
memcpy(ca->ai_addr, &sa, ss_size);
ca->ai_canonname = (char *)ca->ai_addr + ss_size;
- strcpy(ca->ai_canonname, "localhost");
- ca->ai_next = get_localhost6(port);
+ strcpy(ca->ai_canonname, name);
+ ca->ai_next = get_localhost6(port, name);
return ca;
}
@@ -544,7 +571,11 @@ bool Curl_ipv6works(struct Curl_easy *data)
have the info kept for fast re-use */
DEBUGASSERT(data);
DEBUGASSERT(data->multi);
- return data->multi->ipv6_works;
+ if(data->multi->ipv6_up == IPV6_UNKNOWN) {
+ bool works = Curl_ipv6works(NULL);
+ data->multi->ipv6_up = works ? IPV6_WORKS : IPV6_DEAD;
+ }
+ return data->multi->ipv6_up == IPV6_WORKS;
}
else {
int ipv6_works = -1;
@@ -581,6 +612,17 @@ bool Curl_host_is_ipnum(const char *hostname)
return FALSE;
}
+
+/* return TRUE if 'part' is a case insensitive tail of 'full' */
+static bool tailmatch(const char *full, const char *part)
+{
+ size_t plen = strlen(part);
+ size_t flen = strlen(full);
+ if(plen > flen)
+ return FALSE;
+ return strncasecompare(part, &full[flen - plen], plen);
+}
+
/*
* Curl_resolv() is the main name resolve function within libcurl. It resolves
* a name and returns a pointer to the entry in the 'entry' argument (if one
@@ -716,8 +758,9 @@ enum resolve_t Curl_resolv(struct Curl_easy *data,
if(conn->ip_version == CURL_IPRESOLVE_V6 && !Curl_ipv6works(data))
return CURLRESOLV_ERROR;
- if(strcasecompare(hostname, "localhost"))
- addr = get_localhost(port);
+ if(strcasecompare(hostname, "localhost") ||
+ tailmatch(hostname, ".localhost"))
+ addr = get_localhost(port, hostname);
#ifndef CURL_DISABLE_DOH
else if(allowDOH && data->set.doh && !ipnum)
addr = Curl_doh(data, hostname, port, &respwait);
@@ -945,7 +988,7 @@ clean_up:
less than 1! */
alarm(1);
rc = CURLRESOLV_TIMEDOUT;
- failf(data, "Previous alarm fired off!");
+ failf(data, "Previous alarm fired off");
}
else
alarm((unsigned int)alarm_set);
@@ -991,9 +1034,9 @@ static void freednsentry(void *freethis)
/*
* Curl_init_dnscache() inits a new DNS cache.
*/
-void Curl_init_dnscache(struct Curl_hash *hash)
+void Curl_init_dnscache(struct Curl_hash *hash, int size)
{
- Curl_hash_init(hash, 7, Curl_hash_str, Curl_str_key_compare,
+ Curl_hash_init(hash, size, Curl_hash_str, Curl_str_key_compare,
freednsentry);
}
@@ -1131,7 +1174,7 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
ai = Curl_str2addr(address, port);
if(!ai) {
- infof(data, "Resolve address '%s' found illegal!", address);
+ infof(data, "Resolve address '%s' found illegal", address);
goto err;
}
@@ -1150,7 +1193,7 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
error = false;
err:
if(error) {
- failf(data, "Couldn't parse CURLOPT_RESOLVE entry '%s'!",
+ failf(data, "Couldn't parse CURLOPT_RESOLVE entry '%s'",
hostp->data);
Curl_freeaddrinfo(head);
return CURLE_SETOPT_OPTION_SYNTAX;
@@ -1167,8 +1210,8 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len + 1);
if(dns) {
- infof(data, "RESOLVE %s:%d is - old addresses discarded!",
- hostname, port);
+ infof(data, "RESOLVE %s:%d is - old addresses discarded",
+ hostname, port);
/* delete old entry, there are two reasons for this
1. old entry may have different addresses.
2. even if entry with correct addresses is already in the cache,
@@ -1220,6 +1263,7 @@ CURLcode Curl_resolv_check(struct Curl_easy *data,
struct Curl_dns_entry **dns)
{
#if defined(CURL_DISABLE_DOH) && !defined(CURLRES_ASYNCH)
+ (void)data;
(void)dns;
#endif
#ifndef CURL_DISABLE_DOH
@@ -1267,7 +1311,7 @@ CURLcode Curl_once_resolved(struct Curl_easy *data, bool *protocol_done)
result = Curl_setup_conn(data, protocol_done);
if(result) {
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
Curl_conncache_remove_conn(data, conn, TRUE);
Curl_disconnect(data, conn, TRUE);
}
diff --git a/lib/hostip.h b/lib/hostip.h
index 1db598184..9d3170737 100644
--- a/lib/hostip.h
+++ b/lib/hostip.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -130,7 +132,7 @@ void Curl_resolv_unlock(struct Curl_easy *data,
struct Curl_dns_entry *dns);
/* init a new dns cache */
-void Curl_init_dnscache(struct Curl_hash *hash);
+void Curl_init_dnscache(struct Curl_hash *hash, int hashsize);
/* prune old entries from the DNS cache */
void Curl_hostcache_prune(struct Curl_easy *data);
diff --git a/lib/hostip4.c b/lib/hostip4.c
index 1fd791015..1dd54e879 100644
--- a/lib/hostip4.c
+++ b/lib/hostip4.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -110,7 +112,8 @@ struct Curl_addrinfo *Curl_getaddrinfo(struct Curl_easy *data,
#endif /* CURLRES_SYNCH */
#endif /* CURLRES_IPV4 */
-#if defined(CURLRES_IPV4) && !defined(CURLRES_ARES)
+#if defined(CURLRES_IPV4) && \
+ !defined(CURLRES_ARES) && !defined(CURLRES_AMIGA)
/*
* Curl_ipv4_resolve_r() - ipv4 threadsafe resolver function.
@@ -295,4 +298,5 @@ struct Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
return ai;
}
-#endif /* defined(CURLRES_IPV4) && !defined(CURLRES_ARES) */
+#endif /* defined(CURLRES_IPV4) && !defined(CURLRES_ARES) &&
+ !defined(CURLRES_AMIGA) */
diff --git a/lib/hostip6.c b/lib/hostip6.c
index c2d5f08e3..c62c254c7 100644
--- a/lib/hostip6.c
+++ b/lib/hostip6.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -94,8 +96,8 @@ static void dump_addrinfo(struct connectdata *conn,
* non-ares version).
*
* Returns name information about the given hostname and port number. If
- * successful, the 'addrinfo' is returned and the forth argument will point to
- * memory we need to free after use. That memory *MUST* be freed with
+ * successful, the 'addrinfo' is returned and the fourth argument will point
+ * to memory we need to free after use. That memory *MUST* be freed with
* Curl_freeaddrinfo(), nothing else.
*/
struct Curl_addrinfo *Curl_getaddrinfo(struct Curl_easy *data,
@@ -115,7 +117,7 @@ struct Curl_addrinfo *Curl_getaddrinfo(struct Curl_easy *data,
*waitp = 0; /* synchronous response only */
- if(Curl_ipv6works(data))
+ if((data->conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data))
/* The stack seems to be IPv6-enabled */
pf = PF_UNSPEC;
diff --git a/lib/hostsyn.c b/lib/hostsyn.c
index c00c2744c..ee54363bf 100644
--- a/lib/hostsyn.c
+++ b/lib/hostsyn.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/hsts.c b/lib/hsts.c
index 052dc1157..e3b686ebf 100644
--- a/lib/hsts.c
+++ b/lib/hsts.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,12 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* The Strict-Transport-Security header is defined in RFC 6797:
- * https://tools.ietf.org/html/rfc6797
+ * https://datatracker.ietf.org/doc/html/rfc6797
*/
#include "curl_setup.h"
@@ -35,7 +37,7 @@
#include "sendf.h"
#include "strtoofft.h"
#include "parsedate.h"
-#include "rand.h"
+#include "fopen.h"
#include "rename.h"
#include "strtoofft.h"
@@ -114,16 +116,25 @@ static CURLcode hsts_create(struct hsts *h,
curl_off_t expires)
{
struct stsentry *sts = hsts_entry();
+ char *duphost;
+ size_t hlen;
if(!sts)
return CURLE_OUT_OF_MEMORY;
- sts->expires = expires;
- sts->includeSubDomains = subdomains;
- sts->host = strdup(hostname);
- if(!sts->host) {
+ duphost = strdup(hostname);
+ if(!duphost) {
free(sts);
return CURLE_OUT_OF_MEMORY;
}
+
+ hlen = strlen(duphost);
+ if(duphost[hlen - 1] == '.')
+ /* strip off trailing any dot */
+ duphost[--hlen] = 0;
+
+ sts->host = duphost;
+ sts->expires = expires;
+ sts->includeSubDomains = subdomains;
Curl_llist_insert_next(&h->list, h->list.tail, sts, &sts->node);
return CURLE_OK;
}
@@ -145,7 +156,7 @@ CURLcode Curl_hsts_parse(struct hsts *h, const char *hostname,
return CURLE_OK;
do {
- while(*p && ISSPACE(*p))
+ while(*p && ISBLANK(*p))
p++;
if(Curl_strncasecompare("max-age=", p, 8)) {
bool quoted = FALSE;
@@ -156,7 +167,7 @@ CURLcode Curl_hsts_parse(struct hsts *h, const char *hostname,
return CURLE_BAD_FUNCTION_ARGUMENT;
p += 8;
- while(*p && ISSPACE(*p))
+ while(*p && ISBLANK(*p))
p++;
if(*p == '\"') {
p++;
@@ -189,7 +200,7 @@ CURLcode Curl_hsts_parse(struct hsts *h, const char *hostname,
p++;
}
- while(*p && ISSPACE(*p))
+ while(*p && ISBLANK(*p))
p++;
if(*p == ';')
p++;
@@ -238,10 +249,21 @@ struct stsentry *Curl_hsts(struct hsts *h, const char *hostname,
bool subdomain)
{
if(h) {
+ char buffer[MAX_HSTS_HOSTLEN + 1];
time_t now = time(NULL);
size_t hlen = strlen(hostname);
struct Curl_llist_element *e;
struct Curl_llist_element *n;
+
+ if((hlen > MAX_HSTS_HOSTLEN) || !hlen)
+ return NULL;
+ memcpy(buffer, hostname, hlen);
+ if(hostname[hlen-1] == '.')
+ /* remove the trailing dot */
+ --hlen;
+ buffer[hlen] = 0;
+ hostname = buffer;
+
for(e = h->list.head; e; e = n) {
struct stsentry *sts = e->ptr;
n = e->next;
@@ -334,8 +356,7 @@ CURLcode Curl_hsts_save(struct Curl_easy *data, struct hsts *h,
struct Curl_llist_element *n;
CURLcode result = CURLE_OK;
FILE *out;
- char *tempstore;
- unsigned char randsuffix[9];
+ char *tempstore = NULL;
if(!h)
/* no cache activated */
@@ -349,17 +370,8 @@ CURLcode Curl_hsts_save(struct Curl_easy *data, struct hsts *h,
/* marked as read-only, no file or zero length file name */
goto skipsave;
- if(Curl_rand_hex(data, randsuffix, sizeof(randsuffix)))
- return CURLE_FAILED_INIT;
-
- tempstore = aprintf("%s.%s.tmp", file, randsuffix);
- if(!tempstore)
- return CURLE_OUT_OF_MEMORY;
-
- out = fopen(tempstore, FOPEN_WRITETEXT);
- if(!out)
- result = CURLE_WRITE_ERROR;
- else {
+ result = Curl_fopen(data, file, &out, &tempstore);
+ if(!result) {
fputs("# Your HSTS cache. https://curl.se/docs/hsts.html\n"
"# This file was generated by libcurl! Edit at your own risk.\n",
out);
@@ -371,10 +383,10 @@ CURLcode Curl_hsts_save(struct Curl_easy *data, struct hsts *h,
break;
}
fclose(out);
- if(!result && Curl_rename(tempstore, file))
+ if(!result && tempstore && Curl_rename(tempstore, file))
result = CURLE_WRITE_ERROR;
- if(result)
+ if(result && tempstore)
unlink(tempstore);
}
free(tempstore);
@@ -440,7 +452,7 @@ static CURLcode hsts_pull(struct Curl_easy *data, struct hsts *h)
CURLSTScode sc;
DEBUGASSERT(h);
do {
- char buffer[257];
+ char buffer[MAX_HSTS_HOSTLEN + 1];
struct curl_hstsentry e;
e.name = buffer;
e.namelen = sizeof(buffer)-1;
@@ -474,8 +486,7 @@ static CURLcode hsts_pull(struct Curl_easy *data, struct hsts *h)
/*
* Load the HSTS cache from the given file. The text based line-oriented file
- * format is documented here:
- * https://github.com/curl/curl/wiki/HSTS
+ * format is documented here: https://curl.se/docs/hsts.html
*
* This function only returns error on major problems that prevent hsts
* handling to work completely. It will ignore individual syntactical errors
diff --git a/lib/hsts.h b/lib/hsts.h
index 653c05348..0e36a7756 100644
--- a/lib/hsts.h
+++ b/lib/hsts.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/http.c b/lib/http.c
index f08a343e3..f57859e8b 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -77,12 +79,12 @@
#include "content_encoding.h"
#include "http_proxy.h"
#include "warnless.h"
-#include "non-ascii.h"
#include "http2.h"
#include "connect.h"
#include "strdup.h"
#include "altsvc.h"
#include "hsts.h"
+#include "ws.h"
#include "c-hyper.h"
/* The last 3 #include files should be in this order */
@@ -113,6 +115,10 @@ static int https_getsock(struct Curl_easy *data,
#endif
static CURLcode http_setup_conn(struct Curl_easy *data,
struct connectdata *conn);
+#ifdef USE_WEBSOCKETS
+static CURLcode ws_setup_conn(struct Curl_easy *data,
+ struct connectdata *conn);
+#endif
/*
* HTTP handler interface.
@@ -141,6 +147,32 @@ const struct Curl_handler Curl_handler_http = {
PROTOPT_USERPWDCTRL
};
+#ifdef USE_WEBSOCKETS
+const struct Curl_handler Curl_handler_ws = {
+ "WS", /* scheme */
+ ws_setup_conn, /* setup_connection */
+ Curl_http, /* do_it */
+ Curl_http_done, /* done */
+ ZERO_NULL, /* do_more */
+ Curl_http_connect, /* connect_it */
+ ZERO_NULL, /* connecting */
+ ZERO_NULL, /* doing */
+ ZERO_NULL, /* proto_getsock */
+ http_getsock_do, /* doing_getsock */
+ ZERO_NULL, /* domore_getsock */
+ ZERO_NULL, /* perform_getsock */
+ ZERO_NULL, /* disconnect */
+ ZERO_NULL, /* readwrite */
+ ZERO_NULL, /* connection_check */
+ ZERO_NULL, /* attach connection */
+ PORT_HTTP, /* defport */
+ CURLPROTO_WS, /* protocol */
+ CURLPROTO_HTTP, /* family */
+ PROTOPT_CREDSPERREQUEST | /* flags */
+ PROTOPT_USERPWDCTRL
+};
+#endif
+
#ifdef USE_SSL
/*
* HTTPS handler interface.
@@ -165,11 +197,38 @@ const struct Curl_handler Curl_handler_https = {
PORT_HTTPS, /* defport */
CURLPROTO_HTTPS, /* protocol */
CURLPROTO_HTTP, /* family */
- PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | PROTOPT_ALPN_NPN | /* flags */
+ PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | PROTOPT_ALPN | /* flags */
+ PROTOPT_USERPWDCTRL
+};
+
+#ifdef USE_WEBSOCKETS
+const struct Curl_handler Curl_handler_wss = {
+ "WSS", /* scheme */
+ ws_setup_conn, /* setup_connection */
+ Curl_http, /* do_it */
+ Curl_http_done, /* done */
+ ZERO_NULL, /* do_more */
+ Curl_http_connect, /* connect_it */
+ https_connecting, /* connecting */
+ ZERO_NULL, /* doing */
+ https_getsock, /* proto_getsock */
+ http_getsock_do, /* doing_getsock */
+ ZERO_NULL, /* domore_getsock */
+ ZERO_NULL, /* perform_getsock */
+ ZERO_NULL, /* disconnect */
+ ZERO_NULL, /* readwrite */
+ ZERO_NULL, /* connection_check */
+ ZERO_NULL, /* attach connection */
+ PORT_HTTPS, /* defport */
+ CURLPROTO_WSS, /* protocol */
+ CURLPROTO_HTTP, /* family */
+ PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | /* flags */
PROTOPT_USERPWDCTRL
};
#endif
+#endif
+
static CURLcode http_setup_conn(struct Curl_easy *data,
struct connectdata *conn)
{
@@ -204,6 +263,16 @@ static CURLcode http_setup_conn(struct Curl_easy *data,
return CURLE_OK;
}
+#ifdef USE_WEBSOCKETS
+static CURLcode ws_setup_conn(struct Curl_easy *data,
+ struct connectdata *conn)
+{
+ /* websockets is 1.1 only (for now) */
+ data->state.httpwant = CURL_HTTP_VERSION_1_1;
+ return http_setup_conn(data, conn);
+}
+#endif
+
#ifndef CURL_DISABLE_PROXY
/*
* checkProxyHeaders() checks the linked list of custom proxy headers
@@ -216,10 +285,10 @@ static CURLcode http_setup_conn(struct Curl_easy *data,
*/
char *Curl_checkProxyheaders(struct Curl_easy *data,
const struct connectdata *conn,
- const char *thisheader)
+ const char *thisheader,
+ const size_t thislen)
{
struct curl_slist *head;
- size_t thislen = strlen(thisheader);
for(head = (conn->bits.proxy && data->set.sep_headers) ?
data->set.proxyheaders : data->set.headers;
@@ -233,7 +302,7 @@ char *Curl_checkProxyheaders(struct Curl_easy *data,
}
#else
/* disabled */
-#define Curl_checkProxyheaders(x,y,z) NULL
+#define Curl_checkProxyheaders(x,y,z,a) NULL
#endif
/*
@@ -327,7 +396,7 @@ static CURLcode http_output_basic(struct Curl_easy *data, bool proxy)
if(!out)
return CURLE_OUT_OF_MEMORY;
- result = Curl_base64_encode(data, out, strlen(out), &authorization, &size);
+ result = Curl_base64_encode(out, strlen(out), &authorization, &size);
if(result)
goto fail;
@@ -588,7 +657,7 @@ CURLcode Curl_http_auth_act(struct Curl_easy *data)
if(data->state.authproblem)
return data->set.http_fail_on_error?CURLE_HTTP_RETURNED_ERROR:CURLE_OK;
- if((conn->bits.user_passwd || data->set.str[STRING_BEARER]) &&
+ if((data->state.aptr.user || data->set.str[STRING_BEARER]) &&
((data->req.httpcode == 401) ||
(conn->bits.authneg && data->req.httpcode < 300))) {
pickhost = pickoneauth(&data->state.authhost, authmask);
@@ -667,6 +736,7 @@ output_auth_headers(struct Curl_easy *data,
{
const char *auth = NULL;
CURLcode result = CURLE_OK;
+ (void)conn;
#ifdef CURL_DISABLE_CRYPTO_AUTH
(void)request;
@@ -725,10 +795,10 @@ output_auth_headers(struct Curl_easy *data,
if(
#ifndef CURL_DISABLE_PROXY
(proxy && conn->bits.proxy_user_passwd &&
- !Curl_checkProxyheaders(data, conn, "Proxy-authorization")) ||
+ !Curl_checkProxyheaders(data, conn, STRCONST("Proxy-authorization"))) ||
#endif
- (!proxy && conn->bits.user_passwd &&
- !Curl_checkheaders(data, "Authorization"))) {
+ (!proxy && data->state.aptr.user &&
+ !Curl_checkheaders(data, STRCONST("Authorization")))) {
auth = "Basic";
result = http_output_basic(data, proxy);
if(result)
@@ -742,7 +812,7 @@ output_auth_headers(struct Curl_easy *data,
if(authstatus->picked == CURLAUTH_BEARER) {
/* Bearer */
if((!proxy && data->set.str[STRING_BEARER] &&
- !Curl_checkheaders(data, "Authorization"))) {
+ !Curl_checkheaders(data, STRCONST("Authorization")))) {
auth = "Bearer";
result = http_output_bearer(data);
if(result)
@@ -811,7 +881,7 @@ Curl_http_output_auth(struct Curl_easy *data,
#ifndef CURL_DISABLE_PROXY
(conn->bits.httpproxy && conn->bits.proxy_user_passwd) ||
#endif
- conn->bits.user_passwd || data->set.str[STRING_BEARER])
+ data->state.aptr.user || data->set.str[STRING_BEARER])
/* continue please */;
else {
authhost->done = TRUE;
@@ -847,17 +917,14 @@ Curl_http_output_auth(struct Curl_easy *data,
with it */
authproxy->done = TRUE;
- /* To prevent the user+password to get sent to other than the original
- host due to a location-follow, we do some weirdo checks here */
- if(!data->state.this_is_a_follow ||
+ /* To prevent the user+password to get sent to other than the original host
+ due to a location-follow */
+ if(Curl_auth_allowed_to_host(data)
#ifndef CURL_DISABLE_NETRC
- conn->bits.netrc ||
+ || conn->bits.netrc
#endif
- !data->state.first_host ||
- data->set.allow_auth_to_other_hosts ||
- strcasecompare(data->state.first_host, conn->host.name)) {
+ )
result = output_auth_headers(data, conn, authhost, request, path, FALSE);
- }
else
authhost->done = TRUE;
@@ -1143,7 +1210,7 @@ static bool http_should_fail(struct Curl_easy *data)
** Either we're not authenticating, or we're supposed to
** be authenticating something else. This is an error.
*/
- if((httpcode == 401) && !data->conn->bits.user_passwd)
+ if((httpcode == 401) && !data->state.aptr.user)
return TRUE;
#ifndef CURL_DISABLE_PROXY
if((httpcode == 407) && !data->conn->bits.proxy_user_passwd)
@@ -1251,14 +1318,6 @@ CURLcode Curl_buffer_send(struct dynbuf *in,
DEBUGASSERT(size > (size_t)included_body_bytes);
- result = Curl_convert_to_network(data, ptr, headersize);
- /* Curl_convert_to_network calls failf if unsuccessful */
- if(result) {
- /* conversion failed, free memory and return to the caller */
- Curl_dyn_free(in);
- return result;
- }
-
if((conn->handler->flags & PROTOPT_SSL
#ifndef CURL_DISABLE_PROXY
|| conn->http_proxy.proxytype == CURLPROXY_HTTPS
@@ -1425,18 +1484,22 @@ CURLcode Curl_buffer_send(struct dynbuf *in,
bool
Curl_compareheader(const char *headerline, /* line to check */
const char *header, /* header keyword _with_ colon */
- const char *content) /* content string to find */
+ const size_t hlen, /* len of the keyword in bytes */
+ const char *content, /* content string to find */
+ const size_t clen) /* len of the content in bytes */
{
/* RFC2616, section 4.2 says: "Each header field consists of a name followed
* by a colon (":") and the field value. Field names are case-insensitive.
* The field value MAY be preceded by any amount of LWS, though a single SP
* is preferred." */
- size_t hlen = strlen(header);
- size_t clen;
size_t len;
const char *start;
const char *end;
+ DEBUGASSERT(hlen);
+ DEBUGASSERT(clen);
+ DEBUGASSERT(header);
+ DEBUGASSERT(content);
if(!strncasecompare(headerline, header, hlen))
return FALSE; /* doesn't start with header */
@@ -1460,7 +1523,6 @@ Curl_compareheader(const char *headerline, /* line to check */
}
len = end-start; /* length of the content part of the input line */
- clen = strlen(content); /* length of the word to find */
/* find the content string in the rest of the line */
for(; len >= clen; len--, start++) {
@@ -1509,7 +1571,7 @@ CURLcode Curl_http_connect(struct Curl_easy *data, bool *done)
}
#endif
- if(conn->given->protocol & CURLPROTO_HTTPS) {
+ if(conn->given->flags & PROTOPT_SSL) {
/* perform SSL initialization */
result = https_connecting(data, done);
if(result)
@@ -1546,7 +1608,7 @@ static CURLcode add_haproxy_protocol_header(struct Curl_easy *data)
#ifdef USE_UNIX_SOCKETS
if(data->conn->unix_domain_socket)
/* the buffer is large enough to hold this! */
- result = Curl_dyn_add(&req, "PROXY UNKNOWN\r\n");
+ result = Curl_dyn_addn(&req, STRCONST("PROXY UNKNOWN\r\n"));
else {
#endif
/* Emit the correct prefix for IPv6 */
@@ -1634,6 +1696,7 @@ CURLcode Curl_http_done(struct Curl_easy *data,
Curl_mime_cleanpart(&http->form);
Curl_dyn_reset(&data->state.headerb);
Curl_hyper_done(data);
+ Curl_ws_done(data);
if(status)
return status;
@@ -1713,13 +1776,13 @@ static CURLcode expect100(struct Curl_easy *data,
/* if not doing HTTP 1.0 or version 2, or disabled explicitly, we add an
Expect: 100-continue to the headers which actually speeds up post
operations (as there is one packet coming back from the web server) */
- const char *ptr = Curl_checkheaders(data, "Expect");
+ const char *ptr = Curl_checkheaders(data, STRCONST("Expect"));
if(ptr) {
data->state.expect100header =
- Curl_compareheader(ptr, "Expect:", "100-continue");
+ Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue"));
}
else {
- result = Curl_dyn_add(req, "Expect: 100-continue\r\n");
+ result = Curl_dyn_addn(req, STRCONST("Expect: 100-continue\r\n"));
if(!result)
data->state.expect100header = TRUE;
}
@@ -1772,7 +1835,7 @@ CURLcode Curl_http_compile_trailers(struct curl_slist *trailers,
return result;
}
else
- infof(handle, "Malformatted trailing header ! Skipping trailer.");
+ infof(handle, "Malformatted trailing header, skipping trailer");
trailers = trailers->next;
}
result = Curl_dyn_add(b, endofline_network);
@@ -1867,7 +1930,7 @@ CURLcode Curl_add_custom_headers(struct Curl_easy *data,
ptr = optr;
}
}
- if(ptr) {
+ if(ptr && (ptr != headers->data)) {
/* we require a colon for this to be a true header */
ptr++; /* pass the colon */
@@ -1910,10 +1973,7 @@ CURLcode Curl_add_custom_headers(struct Curl_easy *data,
checkprefix("Cookie:", compare)) &&
/* be careful of sending this potentially sensitive header to
other hosts */
- (data->state.this_is_a_follow &&
- data->state.first_host &&
- !data->set.allow_auth_to_other_hosts &&
- !strcasecompare(data->state.first_host, conn->host.name)))
+ !Curl_auth_allowed_to_host(data))
;
else {
#ifdef USE_HYPER
@@ -1949,6 +2009,7 @@ CURLcode Curl_add_timecondition(struct Curl_easy *data,
CURLcode result;
char datestr[80];
const char *condp;
+ size_t len;
if(data->set.timecondition == CURL_TIMECOND_NONE)
/* no condition was asked for */
@@ -1967,16 +2028,19 @@ CURLcode Curl_add_timecondition(struct Curl_easy *data,
case CURL_TIMECOND_IFMODSINCE:
condp = "If-Modified-Since";
+ len = 17;
break;
case CURL_TIMECOND_IFUNMODSINCE:
condp = "If-Unmodified-Since";
+ len = 19;
break;
case CURL_TIMECOND_LASTMOD:
condp = "Last-Modified";
+ len = 13;
break;
}
- if(Curl_checkheaders(data, condp)) {
+ if(Curl_checkheaders(data, condp, len)) {
/* A custom header was specified; it will be sent instead. */
return CURLE_OK;
}
@@ -2022,7 +2086,7 @@ CURLcode Curl_add_timecondition(struct Curl_easy *data,
void Curl_http_method(struct Curl_easy *data, struct connectdata *conn,
const char **method, Curl_HttpReq *reqp)
{
- Curl_HttpReq httpreq = data->state.httpreq;
+ Curl_HttpReq httpreq = (Curl_HttpReq)data->state.httpreq;
const char *request;
if((conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_FTP)) &&
data->set.upload)
@@ -2065,7 +2129,7 @@ CURLcode Curl_http_useragent(struct Curl_easy *data)
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")) {
+ if(Curl_checkheaders(data, STRCONST("User-Agent"))) {
free(data->state.aptr.uagent);
data->state.aptr.uagent = NULL;
}
@@ -2085,10 +2149,11 @@ CURLcode Curl_http_host(struct Curl_easy *data, struct connectdata *conn)
return CURLE_OUT_OF_MEMORY;
data->state.first_remote_port = conn->remote_port;
+ data->state.first_remote_protocol = conn->handler->protocol;
}
Curl_safefree(data->state.aptr.host);
- ptr = Curl_checkheaders(data, "Host");
+ ptr = Curl_checkheaders(data, STRCONST("Host"));
if(ptr && (!data->state.this_is_a_follow ||
strcasecompare(data->state.first_host, conn->host.name))) {
#if !defined(CURL_DISABLE_COOKIES)
@@ -2140,9 +2205,9 @@ CURLcode Curl_http_host(struct Curl_easy *data, struct connectdata *conn)
[brackets] if the host name is a plain IPv6-address. RFC2732-style. */
const char *host = conn->host.name;
- if(((conn->given->protocol&CURLPROTO_HTTPS) &&
+ if(((conn->given->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS)) &&
(conn->remote_port == PORT_HTTPS)) ||
- ((conn->given->protocol&CURLPROTO_HTTP) &&
+ ((conn->given->protocol&(CURLPROTO_HTTP|CURLPROTO_WS)) &&
(conn->remote_port == PORT_HTTP)) )
/* if(HTTPS on port 443) OR (HTTP on port 80) then don't include
the port number in the host string */
@@ -2305,7 +2370,7 @@ CURLcode Curl_http_body(struct Curl_easy *data, struct connectdata *conn,
#ifndef CURL_DISABLE_MIME
if(http->sendit) {
- const char *cthdr = Curl_checkheaders(data, "Content-Type");
+ const char *cthdr = Curl_checkheaders(data, STRCONST("Content-Type"));
/* Read and seek body only. */
http->sendit->flags |= MIME_BODY_ONLY;
@@ -2330,11 +2395,12 @@ CURLcode Curl_http_body(struct Curl_easy *data, struct connectdata *conn,
}
#endif
- ptr = Curl_checkheaders(data, "Transfer-Encoding");
+ ptr = Curl_checkheaders(data, STRCONST("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");
+ Curl_compareheader(ptr,
+ STRCONST("Transfer-Encoding:"), STRCONST("chunked"));
}
else {
if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
@@ -2394,7 +2460,8 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
http->postsize = data->state.infilesize;
if((http->postsize != -1) && !data->req.upload_chunky &&
- (conn->bits.authneg || !Curl_checkheaders(data, "Content-Length"))) {
+ (conn->bits.authneg ||
+ !Curl_checkheaders(data, STRCONST("Content-Length")))) {
/* only add Content-Length if not uploading chunked */
result = Curl_dyn_addf(r, "Content-Length: %" CURL_FORMAT_CURL_OFF_T
"\r\n", http->postsize);
@@ -2409,7 +2476,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
}
/* end of headers */
- result = Curl_dyn_add(r, "\r\n");
+ result = Curl_dyn_addn(r, STRCONST("\r\n"));
if(result)
return result;
@@ -2434,7 +2501,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
/* This is form posting using mime data. */
if(conn->bits.authneg) {
/* nothing to post! */
- result = Curl_dyn_add(r, "Content-Length: 0\r\n\r\n");
+ result = Curl_dyn_addn(r, STRCONST("Content-Length: 0\r\n\r\n"));
if(result)
return result;
@@ -2454,7 +2521,8 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
we don't upload data chunked, as RFC2616 forbids us to set both
kinds of headers (Transfer-Encoding: chunked and Content-Length) */
if(http->postsize != -1 && !data->req.upload_chunky &&
- (conn->bits.authneg || !Curl_checkheaders(data, "Content-Length"))) {
+ (conn->bits.authneg ||
+ !Curl_checkheaders(data, STRCONST("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_dyn_addf(r,
@@ -2481,10 +2549,10 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
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(data, STRCONST("Expect"));
if(ptr) {
data->state.expect100header =
- Curl_compareheader(ptr, "Expect:", "100-continue");
+ Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue"));
}
else if(http->postsize > EXPECT_100_THRESHOLD || http->postsize < 0) {
result = expect100(data, conn, r);
@@ -2495,7 +2563,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
data->state.expect100header = FALSE;
/* make the request end in a true CRLF */
- result = Curl_dyn_add(r, "\r\n");
+ result = Curl_dyn_addn(r, STRCONST("\r\n"));
if(result)
return result;
@@ -2534,7 +2602,8 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
we don't upload data chunked, as RFC2616 forbids us to set both
kinds of headers (Transfer-Encoding: chunked and Content-Length) */
if((http->postsize != -1) && !data->req.upload_chunky &&
- (conn->bits.authneg || !Curl_checkheaders(data, "Content-Length"))) {
+ (conn->bits.authneg ||
+ !Curl_checkheaders(data, STRCONST("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_dyn_addf(r, "Content-Length: %" CURL_FORMAT_CURL_OFF_T
@@ -2543,9 +2612,9 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
return result;
}
- if(!Curl_checkheaders(data, "Content-Type")) {
- result = Curl_dyn_add(r, "Content-Type: application/"
- "x-www-form-urlencoded\r\n");
+ if(!Curl_checkheaders(data, STRCONST("Content-Type"))) {
+ result = Curl_dyn_addn(r, STRCONST("Content-Type: application/"
+ "x-www-form-urlencoded\r\n"));
if(result)
return result;
}
@@ -2554,10 +2623,10 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
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(data, STRCONST("Expect"));
if(ptr) {
data->state.expect100header =
- Curl_compareheader(ptr, "Expect:", "100-continue");
+ Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue"));
}
else if(http->postsize > EXPECT_100_THRESHOLD || http->postsize < 0) {
result = expect100(data, conn, r);
@@ -2584,7 +2653,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
get the data duplicated with malloc() and family. */
/* end of headers! */
- result = Curl_dyn_add(r, "\r\n");
+ result = Curl_dyn_addn(r, STRCONST("\r\n"));
if(result)
return result;
@@ -2606,12 +2675,12 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
result = Curl_dyn_addn(r, data->set.postfields,
(size_t)http->postsize);
if(!result)
- result = Curl_dyn_add(r, "\r\n");
+ result = Curl_dyn_addn(r, STRCONST("\r\n"));
included_body += 2;
}
}
if(!result) {
- result = Curl_dyn_add(r, "\x30\x0d\x0a\x0d\x0a");
+ result = Curl_dyn_addn(r, STRCONST("\x30\x0d\x0a\x0d\x0a"));
/* 0 CR LF CR LF */
included_body += 5;
}
@@ -2634,7 +2703,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
Curl_pgrsSetUploadSize(data, http->postsize);
/* end of headers! */
- result = Curl_dyn_add(r, "\r\n");
+ result = Curl_dyn_addn(r, STRCONST("\r\n"));
if(result)
return result;
}
@@ -2643,14 +2712,14 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
#endif
{
/* end of headers! */
- result = Curl_dyn_add(r, "\r\n");
+ result = Curl_dyn_addn(r, STRCONST("\r\n"));
if(result)
return result;
if(data->req.upload_chunky && conn->bits.authneg) {
/* Chunky upload is selected and we're negotiating auth still, send
end-of-data only */
- result = Curl_dyn_add(r, (char *)"\x30\x0d\x0a\x0d\x0a");
+ result = Curl_dyn_addn(r, (char *)STRCONST("\x30\x0d\x0a\x0d\x0a"));
/* 0 CR LF CR LF */
if(result)
return result;
@@ -2678,7 +2747,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
break;
default:
- result = Curl_dyn_add(r, "\r\n");
+ result = Curl_dyn_addn(r, STRCONST("\r\n"));
if(result)
return result;
@@ -2687,6 +2756,13 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
FIRSTSOCKET);
if(result)
failf(data, "Failed sending HTTP request");
+#ifdef USE_WEBSOCKETS
+ else if((conn->handler->protocol & (CURLPROTO_WS|CURLPROTO_WSS)) &&
+ !(data->set.connect_only))
+ /* Set up the transfer for two-way since without CONNECT_ONLY set, this
+ request probably wants to send data too post upgrade */
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE, FIRSTSOCKET);
+#endif
else
/* HTTP GET/HEAD download: */
Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE, -1);
@@ -2696,13 +2772,16 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
}
#if !defined(CURL_DISABLE_COOKIES)
+
CURLcode Curl_http_cookies(struct Curl_easy *data,
struct connectdata *conn,
struct dynbuf *r)
{
CURLcode result = CURLE_OK;
char *addcookies = NULL;
- if(data->set.str[STRING_COOKIE] && !Curl_checkheaders(data, "Cookie"))
+ bool linecap = FALSE;
+ if(data->set.str[STRING_COOKIE] &&
+ !Curl_checkheaders(data, STRCONST("Cookie")))
addcookies = data->set.str[STRING_COOKIE];
if(data->cookies || addcookies) {
@@ -2713,12 +2792,12 @@ CURLcode Curl_http_cookies(struct Curl_easy *data,
const char *host = data->state.aptr.cookiehost ?
data->state.aptr.cookiehost : conn->host.name;
const bool secure_context =
- conn->handler->protocol&CURLPROTO_HTTPS ||
+ conn->handler->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS) ||
strcasecompare("localhost", host) ||
!strcmp(host, "127.0.0.1") ||
!strcmp(host, "[::1]") ? TRUE : FALSE;
Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
- co = Curl_cookie_getlist(data->cookies, host, data->state.up.path,
+ co = Curl_cookie_getlist(data, data->cookies, host, data->state.up.path,
secure_context);
Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
}
@@ -2728,10 +2807,17 @@ CURLcode Curl_http_cookies(struct Curl_easy *data,
while(co) {
if(co->value) {
if(0 == count) {
- result = Curl_dyn_add(r, "Cookie: ");
+ result = Curl_dyn_addn(r, STRCONST("Cookie: "));
if(result)
break;
}
+ if((Curl_dyn_len(r) + strlen(co->name) + strlen(co->value) + 1) >=
+ MAX_COOKIE_HEADER_LEN) {
+ infof(data, "Restricted outgoing cookies due to header size, "
+ "'%s' not sent", co->name);
+ linecap = TRUE;
+ break;
+ }
result = Curl_dyn_addf(r, "%s%s=%s", count?"; ":"",
co->name, co->value);
if(result)
@@ -2742,16 +2828,16 @@ CURLcode Curl_http_cookies(struct Curl_easy *data,
}
Curl_cookie_freelist(store);
}
- if(addcookies && !result) {
+ if(addcookies && !result && !linecap) {
if(!count)
- result = Curl_dyn_add(r, "Cookie: ");
+ result = Curl_dyn_addn(r, STRCONST("Cookie: "));
if(!result) {
result = Curl_dyn_addf(r, "%s%s", count?"; ":"", addcookies);
count++;
}
}
if(count && !result)
- result = Curl_dyn_add(r, "\r\n");
+ result = Curl_dyn_addn(r, STRCONST("\r\n"));
if(result)
return result;
@@ -2770,14 +2856,14 @@ CURLcode Curl_http_range(struct Curl_easy *data,
* ones if any such are specified.
*/
if(((httpreq == HTTPREQ_GET) || (httpreq == HTTPREQ_HEAD)) &&
- !Curl_checkheaders(data, "Range")) {
+ !Curl_checkheaders(data, STRCONST("Range"))) {
/* if a line like this was already allocated, free the previous one */
free(data->state.aptr.rangeline);
data->state.aptr.rangeline = aprintf("Range: bytes=%s\r\n",
data->state.range);
}
else if((httpreq == HTTPREQ_POST || httpreq == HTTPREQ_PUT) &&
- !Curl_checkheaders(data, "Content-Range")) {
+ !Curl_checkheaders(data, STRCONST("Content-Range"))) {
/* if a line like this was already allocated, free the previous one */
free(data->state.aptr.rangeline);
@@ -2923,7 +3009,7 @@ CURLcode Curl_http_firstwrite(struct Curl_easy *data,
/* 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");
+ streamclose(conn, "already downloaded");
/* Abort download */
k->keepon &= ~KEEP_RECV;
*done = TRUE;
@@ -2948,10 +3034,10 @@ CURLcode Curl_http_firstwrite(struct Curl_easy *data,
/* 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!");
+ infof(data, "Simulate a HTTP 304 response");
/* we abort the transfer before it is completed == we ruin the
re-use ability. Close the connection */
- connclose(conn, "Simulated 304 handling");
+ streamclose(conn, "Simulated 304 handling");
return CURLE_OK;
}
} /* we have a time condition */
@@ -2962,14 +3048,14 @@ CURLcode Curl_http_firstwrite(struct Curl_easy *data,
#ifdef HAVE_LIBZ
CURLcode Curl_transferencode(struct Curl_easy *data)
{
- if(!Curl_checkheaders(data, "TE") &&
+ if(!Curl_checkheaders(data, STRCONST("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/her 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(data, STRCONST("Connection"));
#define TE_HEADER "TE: gzip\r\n"
Curl_safefree(data->state.aptr.te);
@@ -3019,7 +3105,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
if(conn->transport != TRNSPRT_QUIC) {
if(conn->httpversion < 20) { /* unless the connection is re-used and
already http2 */
- switch(conn->negnpn) {
+ switch(conn->alpn) {
case CURL_HTTP_VERSION_2:
conn->httpversion = 20; /* we know we're on HTTP/2 now */
@@ -3089,13 +3175,13 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
}
Curl_safefree(data->state.aptr.ref);
- if(data->state.referer && !Curl_checkheaders(data, "Referer")) {
+ if(data->state.referer && !Curl_checkheaders(data, STRCONST("Referer"))) {
data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
if(!data->state.aptr.ref)
return CURLE_OUT_OF_MEMORY;
}
- if(!Curl_checkheaders(data, "Accept-Encoding") &&
+ if(!Curl_checkheaders(data, STRCONST("Accept-Encoding")) &&
data->set.str[STRING_ENCODING]) {
Curl_safefree(data->state.aptr.accept_encoding);
data->state.aptr.accept_encoding =
@@ -3117,7 +3203,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
if(result)
return result;
- p_accept = Curl_checkheaders(data, "Accept")?NULL:"Accept: */*\r\n";
+ p_accept = Curl_checkheaders(data,
+ STRCONST("Accept"))?NULL:"Accept: */*\r\n";
result = Curl_http_resume(data, conn, httpreq);
if(result)
@@ -3147,7 +3234,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
}
#ifndef CURL_DISABLE_ALTSVC
- if(conn->bits.altused && !Curl_checkheaders(data, "Alt-Used")) {
+ if(conn->bits.altused && !Curl_checkheaders(data, STRCONST("Alt-Used"))) {
altused = aprintf("Alt-Used: %s:%d\r\n",
conn->conn_to_host.name, conn->conn_to_port);
if(!altused) {
@@ -3194,8 +3281,10 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
#ifndef CURL_DISABLE_PROXY
(conn->bits.httpproxy &&
!conn->bits.tunnel_proxy &&
- !Curl_checkheaders(data, "Proxy-Connection") &&
- !Curl_checkProxyheaders(data, conn, "Proxy-Connection"))?
+ !Curl_checkheaders(data, STRCONST("Proxy-Connection")) &&
+ !Curl_checkProxyheaders(data,
+ conn,
+ STRCONST("Proxy-Connection")))?
"Proxy-Connection: Keep-Alive\r\n":"",
#else
"",
@@ -3228,6 +3317,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
}
result = Curl_http_cookies(data, conn, &req);
+ if(!result && conn->handler->protocol&(CURLPROTO_WS|CURLPROTO_WSS))
+ result = Curl_ws_request(data, &req);
if(!result)
result = Curl_add_timecondition(data, &req);
if(!result)
@@ -3308,20 +3399,6 @@ checkhttpprefix(struct Curl_easy *data,
struct curl_slist *head = data->set.http200aliases;
statusline rc = STATUS_BAD;
statusline onmatch = len >= 5? STATUS_DONE : STATUS_UNKNOWN;
-#ifdef CURL_DOES_CONVERSIONS
- /* convert from the network encoding using a scratch area */
- char *scratch = strdup(s);
- if(!scratch) {
- failf(data, "Failed to allocate memory for conversion!");
- return FALSE; /* can't return CURLE_OUT_OF_MEMORY so return FALSE */
- }
- if(CURLE_OK != Curl_convert_from_network(data, scratch, strlen(s) + 1)) {
- /* Curl_convert_from_network calls failf if unsuccessful */
- free(scratch);
- return FALSE; /* can't return CURLE_foobar so return FALSE */
- }
- s = scratch;
-#endif /* CURL_DOES_CONVERSIONS */
while(head) {
if(checkprefixmax(head->data, s, len)) {
@@ -3334,9 +3411,6 @@ checkhttpprefix(struct Curl_easy *data,
if((rc != STATUS_DONE) && (checkprefixmax("HTTP/", s, len)))
rc = onmatch;
-#ifdef CURL_DOES_CONVERSIONS
- free(scratch);
-#endif /* CURL_DOES_CONVERSIONS */
return rc;
}
@@ -3347,26 +3421,9 @@ checkrtspprefix(struct Curl_easy *data,
{
statusline result = STATUS_BAD;
statusline onmatch = len >= 5? STATUS_DONE : STATUS_UNKNOWN;
-
-#ifdef CURL_DOES_CONVERSIONS
- /* convert from the network encoding using a scratch area */
- char *scratch = strdup(s);
- if(!scratch) {
- failf(data, "Failed to allocate memory for conversion!");
- return FALSE; /* can't return CURLE_OUT_OF_MEMORY so return FALSE */
- }
- if(CURLE_OK != Curl_convert_from_network(data, scratch, strlen(s) + 1)) {
- /* Curl_convert_from_network calls failf if unsuccessful */
- result = FALSE; /* can't return CURLE_foobar so return FALSE */
- }
- else if(checkprefixmax("RTSP/", scratch, len))
- result = onmatch;
- free(scratch);
-#else
(void)data; /* unused */
if(checkprefixmax("RTSP/", s, len))
result = onmatch;
-#endif /* CURL_DOES_CONVERSIONS */
return result;
}
@@ -3412,7 +3469,7 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
return CURLE_FILESIZE_EXCEEDED;
}
streamclose(conn, "overflow content-length");
- infof(data, "Overflow Content-Length: value!");
+ infof(data, "Overflow Content-Length: value");
}
else {
/* negative or just rubbish - bad HTTP */
@@ -3436,7 +3493,9 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
#ifndef CURL_DISABLE_PROXY
else if((conn->httpversion == 10) &&
conn->bits.httpproxy &&
- Curl_compareheader(headp, "Proxy-Connection:", "keep-alive")) {
+ Curl_compareheader(headp,
+ STRCONST("Proxy-Connection:"),
+ STRCONST("keep-alive"))) {
/*
* When a HTTP/1.0 reply comes when using a proxy, the
* 'Proxy-Connection: keep-alive' line tells us the
@@ -3444,21 +3503,25 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
* Default action for 1.0 is to close.
*/
connkeep(conn, "Proxy-Connection keep-alive"); /* don't close */
- infof(data, "HTTP/1.0 proxy connection set to keep alive!");
+ infof(data, "HTTP/1.0 proxy connection set to keep alive");
}
else if((conn->httpversion == 11) &&
conn->bits.httpproxy &&
- Curl_compareheader(headp, "Proxy-Connection:", "close")) {
+ Curl_compareheader(headp,
+ STRCONST("Proxy-Connection:"),
+ STRCONST("close"))) {
/*
* We get a HTTP/1.1 response from a proxy and it says it'll
* close down after this transfer.
*/
connclose(conn, "Proxy-Connection: asked to close after done");
- infof(data, "HTTP/1.1 proxy connection set close!");
+ infof(data, "HTTP/1.1 proxy connection set close");
}
#endif
else if((conn->httpversion == 10) &&
- Curl_compareheader(headp, "Connection:", "keep-alive")) {
+ Curl_compareheader(headp,
+ STRCONST("Connection:"),
+ STRCONST("keep-alive"))) {
/*
* A HTTP/1.0 reply with the 'Connection: keep-alive' line
* tells us the connection will be kept alive for our
@@ -3466,9 +3529,10 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
*
* [RFC2068, section 19.7.1] */
connkeep(conn, "Connection keep-alive");
- infof(data, "HTTP/1.0 connection set to keep alive!");
+ infof(data, "HTTP/1.0 connection set to keep alive");
}
- else if(Curl_compareheader(headp, "Connection:", "close")) {
+ else if(Curl_compareheader(headp,
+ STRCONST("Connection:"), STRCONST("close"))) {
/*
* [RFC 2616, section 8.1.2.1]
* "Connection: close" is HTTP/1.1 language and means that
@@ -3519,15 +3583,15 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
else if(checkprefix("Retry-After:", headp)) {
/* Retry-After = HTTP-date / delay-seconds */
curl_off_t retry_after = 0; /* zero for unknown or "now" */
- time_t date = Curl_getdate_capped(headp + strlen("Retry-After:"));
- if(-1 == date) {
- /* not a date, try it as a decimal number */
- (void)curlx_strtoofft(headp + strlen("Retry-After:"),
- NULL, 10, &retry_after);
+ /* Try it as a decimal number, if it works it is not a date */
+ (void)curlx_strtoofft(headp + strlen("Retry-After:"),
+ NULL, 10, &retry_after);
+ if(!retry_after) {
+ time_t date = Curl_getdate_capped(headp + strlen("Retry-After:"));
+ if(-1 != date)
+ /* convert date to number of seconds into the future */
+ retry_after = date - time(NULL);
}
- else
- /* convert date to number of seconds into the future */
- retry_after = date - time(NULL);
data->info.retry_after = retry_after; /* store it */
}
else if(!k->http_bodyless && checkprefix("Content-Range:", headp)) {
@@ -3539,7 +3603,7 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
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.
+ The fourth means the requested range was unsatisfied.
*/
char *ptr = headp + strlen("Content-Range:");
@@ -3567,7 +3631,7 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
const char *host = data->state.aptr.cookiehost?
data->state.aptr.cookiehost:conn->host.name;
const bool secure_context =
- conn->handler->protocol&CURLPROTO_HTTPS ||
+ conn->handler->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS) ||
strcasecompare("localhost", host) ||
!strcmp(host, "127.0.0.1") ||
!strcmp(host, "[::1]") ? TRUE : FALSE;
@@ -3651,7 +3715,14 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
#ifndef CURL_DISABLE_HSTS
/* If enabled, the header is incoming and this is over HTTPS */
else if(data->hsts && checkprefix("Strict-Transport-Security:", headp) &&
- (conn->handler->flags & PROTOPT_SSL)) {
+ ((conn->handler->flags & PROTOPT_SSL) ||
+#ifdef CURLDEBUG
+ /* allow debug builds to circumvent the HTTPS restriction */
+ getenv("CURL_HSTS_HTTP")
+#else
+ 0
+#endif
+ )) {
CURLcode check =
Curl_hsts_parse(data->hsts, data->state.up.hostname,
headp + strlen("Strict-Transport-Security:"));
@@ -3733,7 +3804,7 @@ CURLcode Curl_http_statusline(struct Curl_easy *data,
connclose(conn, "HTTP/1.0 close after body");
}
else if(conn->httpversion == 20 ||
- (k->upgr101 == UPGR101_REQUESTED && k->httpcode == 101)) {
+ (k->upgr101 == UPGR101_H2 && k->httpcode == 101)) {
DEBUGF(infof(data, "HTTP/2 found, allow multiplexing"));
/* HTTP/2 cannot avoid multiplexing since it is a core functionality
of the protocol */
@@ -3795,6 +3866,34 @@ CURLcode Curl_http_size(struct Curl_easy *data)
return CURLE_OK;
}
+static CURLcode verify_header(struct Curl_easy *data)
+{
+ struct SingleRequest *k = &data->req;
+ const char *header = Curl_dyn_ptr(&data->state.headerb);
+ size_t hlen = Curl_dyn_len(&data->state.headerb);
+ char *ptr = memchr(header, 0x00, hlen);
+ if(ptr) {
+ /* this is bad, bail out */
+ failf(data, "Nul byte in header");
+ return CURLE_WEIRD_SERVER_REPLY;
+ }
+ if(k->headerline < 2)
+ /* the first "header" is the status-line and it has no colon */
+ return CURLE_OK;
+ if(((header[0] == ' ') || (header[0] == '\t')) && k->headerline > 2)
+ /* line folding, can't happen on line 2 */
+ ;
+ else {
+ ptr = memchr(header, ':', hlen);
+ if(!ptr) {
+ /* this is bad, bail out */
+ failf(data, "Header without colon");
+ return CURLE_WEIRD_SERVER_REPLY;
+ }
+ }
+ return CURLE_OK;
+}
+
/*
* Read any HTTP header lines from the server and pass them to the client app.
*/
@@ -3903,21 +4002,10 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
size_t headerlen;
/* Zero-length header line means end of headers! */
-#ifdef CURL_DOES_CONVERSIONS
- if(0x0d == *headp) {
- *headp = '\r'; /* replace with CR in host encoding */
- headp++; /* pass the CR byte */
- }
- if(0x0a == *headp) {
- *headp = '\n'; /* replace with LF in host encoding */
- headp++; /* pass the LF byte */
- }
-#else
if('\r' == *headp)
headp++; /* pass the \r byte */
if('\n' == *headp)
headp++; /* pass the \n byte */
-#endif /* CURL_DOES_CONVERSIONS */
if(100 <= k->httpcode && 199 >= k->httpcode) {
/* "A user agent MAY ignore unexpected 1xx status responses." */
@@ -3942,9 +4030,9 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
break;
case 101:
/* Switching Protocols */
- if(k->upgr101 == UPGR101_REQUESTED) {
+ if(k->upgr101 == UPGR101_H2) {
/* Switching to HTTP/2 */
- infof(data, "Received 101");
+ infof(data, "Received 101, Switching to HTTP/2");
k->upgr101 = UPGR101_RECEIVED;
/* we'll get more headers (HTTP/2 response) */
@@ -3958,8 +4046,21 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
return result;
*nread = 0;
}
+#ifdef USE_WEBSOCKETS
+ else if(k->upgr101 == UPGR101_WS) {
+ /* verify the response */
+ result = Curl_ws_accept(data);
+ if(result)
+ return result;
+ k->header = FALSE; /* no more header to parse! */
+ if(data->set.connect_only) {
+ k->keepon &= ~KEEP_RECV; /* read no more content */
+ *nread = 0;
+ }
+ }
+#endif
else {
- /* Switching to another protocol (e.g. WebSocket) */
+ /* Not switching to another protocol */
k->header = FALSE; /* no more header to parse! */
}
break;
@@ -4028,9 +4129,9 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
/* now, only output this if the header AND body are requested:
*/
- writetype = CLIENTWRITE_HEADER;
- if(data->set.include_header)
- writetype |= CLIENTWRITE_BODY;
+ writetype = CLIENTWRITE_HEADER |
+ (data->set.include_header ? CLIENTWRITE_BODY : 0) |
+ ((k->httpcode/100 == 1) ? CLIENTWRITE_1XX : 0);
headerlen = Curl_dyn_len(&data->state.headerb);
result = Curl_client_write(data, writetype,
@@ -4052,6 +4153,16 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
return CURLE_HTTP_RETURNED_ERROR;
}
+#ifdef USE_WEBSOCKETS
+ /* All non-101 HTTP status codes are bad when wanting to upgrade to
+ websockets */
+ if(data->req.upgr101 == UPGR101_WS) {
+ failf(data, "Refused WebSockets upgrade: %d", k->httpcode);
+ return CURLE_HTTP_RETURNED_ERROR;
+ }
+#endif
+
+
data->req.deductheadercount =
(100 <= k->httpcode && 199 >= k->httpcode)?data->req.headerbytecount:0;
@@ -4127,7 +4238,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
if(conn->bits.rewindaftersend) {
/* We rewind after a complete send, so thus we continue
sending now */
- infof(data, "Keep sending data to get tossed away!");
+ infof(data, "Keep sending data to get tossed away");
k->keepon |= KEEP_SEND;
}
}
@@ -4183,36 +4294,18 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
* Checks for special headers coming up.
*/
+ writetype = CLIENTWRITE_HEADER;
if(!k->headerline++) {
/* This is the first header, it MUST be the error code line
or else we consider this to be the body right away! */
int httpversion_major;
int rtspversion_major;
int nc = 0;
-#ifdef CURL_DOES_CONVERSIONS
-#define HEADER1 scratch
-#define SCRATCHSIZE 21
- CURLcode res;
- char scratch[SCRATCHSIZE + 1]; /* "HTTP/major.minor 123" */
- /* We can't really convert this yet because we don't know if it's the
- 1st header line or the body. So we do a partial conversion into a
- scratch area, leaving the data at 'headp' as-is.
- */
- strncpy(&scratch[0], headp, SCRATCHSIZE);
- scratch[SCRATCHSIZE] = 0; /* null terminate */
- res = Curl_convert_from_network(data,
- &scratch[0],
- SCRATCHSIZE);
- if(res)
- /* Curl_convert_from_network calls failf if unsuccessful */
- return res;
-#else
#define HEADER1 headp /* no conversion needed, just use headp */
-#endif /* CURL_DOES_CONVERSIONS */
if(conn->handler->protocol & PROTO_FAMILY_HTTP) {
/*
- * https://tools.ietf.org/html/rfc7230#section-3.1.2
+ * https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2
*
* The response code is always a three-digit number in HTTP as the spec
* says. We allow any three-digit number here, but we cannot make
@@ -4254,10 +4347,10 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
switch(httpversion) {
case 10:
case 11:
-#if defined(USE_NGHTTP2) || defined(USE_HYPER)
+#ifdef USE_HTTP2
case 20:
#endif
-#if defined(ENABLE_QUIC)
+#ifdef ENABLE_QUIC
case 30:
#endif
conn->httpversion = (unsigned char)httpversion;
@@ -4326,6 +4419,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
result = Curl_http_statusline(data, conn);
if(result)
return result;
+ writetype |= CLIENTWRITE_STATUS;
}
else {
k->header = FALSE; /* this is not a header line */
@@ -4333,8 +4427,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
}
}
- result = Curl_convert_from_network(data, headp, strlen(headp));
- /* Curl_convert_from_network calls failf if unsuccessful */
+ result = verify_header(data);
if(result)
return result;
@@ -4345,10 +4438,10 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
/*
* End of header-checks. Write them to the client.
*/
-
- writetype = CLIENTWRITE_HEADER;
if(data->set.include_header)
writetype |= CLIENTWRITE_BODY;
+ if(k->httpcode/100 == 1)
+ writetype |= CLIENTWRITE_1XX;
Curl_debug(data, CURLINFO_HEADER_IN, headp,
Curl_dyn_len(&data->state.headerb));
diff --git a/lib/http.h b/lib/http.h
index b4aaba2a2..f7cbb3424 100644
--- a/lib/http.h
+++ b/lib/http.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,8 +20,11 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
+#include "ws.h"
typedef enum {
HTTPREQ_GET,
@@ -38,22 +41,38 @@ typedef enum {
#include <nghttp2/nghttp2.h>
#endif
+#if defined(_WIN32) && defined(ENABLE_QUIC)
+#include <stdint.h>
+#endif
+
extern const struct Curl_handler Curl_handler_http;
#ifdef USE_SSL
extern const struct Curl_handler Curl_handler_https;
#endif
+#ifdef USE_WEBSOCKETS
+extern const struct Curl_handler Curl_handler_ws;
+
+#ifdef USE_SSL
+extern const struct Curl_handler Curl_handler_wss;
+#endif
+#endif /* websockets */
+
+
/* 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 */
+ const size_t hlen, /* len of the keyword in bytes */
+ const char *content, /* content string to find */
+ const size_t clen); /* len of the content in bytes */
char *Curl_copy_header_value(const char *header);
char *Curl_checkProxyheaders(struct Curl_easy *data,
const struct connectdata *conn,
- const char *thisheader);
+ const char *thisheader,
+ const size_t thislen);
CURLcode Curl_buffer_send(struct dynbuf *in,
struct Curl_easy *data,
curl_off_t *bytes_written,
@@ -160,6 +179,29 @@ CURLcode Curl_http_auth_act(struct Curl_easy *data);
struct h3out; /* see ngtcp2 */
#endif
+#ifdef USE_MSH3
+#ifdef _WIN32
+#define msh3_lock CRITICAL_SECTION
+#define msh3_lock_initialize(lock) InitializeCriticalSection(lock)
+#define msh3_lock_uninitialize(lock) DeleteCriticalSection(lock)
+#define msh3_lock_acquire(lock) EnterCriticalSection(lock)
+#define msh3_lock_release(lock) LeaveCriticalSection(lock)
+#else /* !_WIN32 */
+#include <pthread.h>
+#define msh3_lock pthread_mutex_t
+#define msh3_lock_initialize(lock) { \
+ pthread_mutexattr_t attr; \
+ pthread_mutexattr_init(&attr); \
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); \
+ pthread_mutex_init(lock, &attr); \
+ pthread_mutexattr_destroy(&attr); \
+}
+#define msh3_lock_uninitialize(lock) pthread_mutex_destroy(lock)
+#define msh3_lock_acquire(lock) pthread_mutex_lock(lock)
+#define msh3_lock_release(lock) pthread_mutex_unlock(lock)
+#endif /* _WIN32 */
+#endif /* USE_MSH3 */
+
/****************************************************************************
* HTTP unique setup
***************************************************************************/
@@ -186,6 +228,10 @@ struct HTTP {
HTTPSEND_BODY /* sending body */
} sending;
+#ifdef USE_WEBSOCKETS
+ struct websocket ws;
+#endif
+
#ifndef CURL_DISABLE_HTTP
struct dynbuf send_buffer; /* used if the request couldn't be sent in one
chunk, points to an allocated send_buffer
@@ -195,13 +241,11 @@ struct HTTP {
/*********** for HTTP/2 we store stream-local data here *************/
int32_t stream_id; /* stream we are interested in */
- bool bodystarted;
/* We store non-final and final response headers here, per-stream */
struct dynbuf header_recvbuf;
size_t nread_header_recvbuf; /* number of bytes in header_recvbuf fed into
upper layer */
struct dynbuf trailer_recvbuf;
- int status_code; /* HTTP status code */
const uint8_t *pausedata; /* pointer to data received in on_data_chunk */
size_t pauselen; /* the number of bytes left in data */
bool close_handled; /* TRUE if stream closure is handled by libcurl */
@@ -212,6 +256,8 @@ struct HTTP {
uint32_t error; /* HTTP/2 stream error code */
#endif
#if defined(USE_NGHTTP2) || defined(USE_NGHTTP3)
+ bool bodystarted;
+ int status_code; /* HTTP status code */
bool closed; /* TRUE on HTTP2 stream close */
char *mem; /* points to a buffer in memory to store received data */
size_t len; /* size of the buffer 'mem' points to */
@@ -225,11 +271,14 @@ struct HTTP {
#endif
#ifdef ENABLE_QUIC
+#ifndef USE_MSH3
/*********** for HTTP/3 we store stream-local data here *************/
int64_t stream3_id; /* stream we are interested in */
+ uint64_t error3; /* HTTP/3 stream error code */
bool firstheader; /* FALSE until headers arrive */
bool firstbody; /* FALSE until body arrives */
bool h3req; /* FALSE until request is issued */
+#endif
bool upload_done;
#endif
#ifdef USE_NGHTTP3
@@ -237,6 +286,21 @@ struct HTTP {
struct h3out *h3out; /* per-stream buffers for upload */
struct dynbuf overflow; /* excess data received during a single Curl_read */
#endif
+#ifdef USE_MSH3
+ struct MSH3_REQUEST *req;
+ msh3_lock recv_lock;
+ /* Receive Buffer (Headers and Data) */
+ uint8_t* recv_buf;
+ size_t recv_buf_alloc;
+ /* Receive Headers */
+ size_t recv_header_len;
+ bool recv_header_complete;
+ /* Receive Data */
+ size_t recv_data_len;
+ bool recv_data_complete;
+ /* General Receive Error */
+ CURLcode recv_error;
+#endif
};
#ifdef USE_NGHTTP2
diff --git a/lib/http2.c b/lib/http2.c
index e74400a4c..b7409b027 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -36,7 +38,10 @@
#include "connect.h"
#include "strtoofft.h"
#include "strdup.h"
+#include "transfer.h"
#include "dynbuf.h"
+#include "h2h3.h"
+#include "headers.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
@@ -64,7 +69,6 @@
#define H2BUGF(x) do { } while(0)
#endif
-
static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
char *mem, size_t len, CURLcode *err);
static bool http2_connisdead(struct Curl_easy *data,
@@ -200,9 +204,9 @@ static bool http2_connisdead(struct Curl_easy *data, struct connectdata *conn)
nread = ((Curl_recv *)httpc->recv_underlying)(
data, FIRSTSOCKET, httpc->inbuf, H2_BUFSIZE, &result);
if(nread != -1) {
- infof(data,
- "%d bytes stray data read before trying h2 connection",
- (int)nread);
+ H2BUGF(infof(data,
+ "%d bytes stray data read before trying h2 connection",
+ (int)nread));
httpc->nread_inbuf = 0;
httpc->inbuflen = nread;
if(h2_process_pending_input(data, httpc, &result) < 0)
@@ -513,7 +517,7 @@ static int set_transfer_url(struct Curl_easy *data,
if(!u)
return 5;
- v = curl_pushheader_byname(hp, ":scheme");
+ v = curl_pushheader_byname(hp, H2H3_PSEUDO_SCHEME);
if(v) {
uc = curl_url_set(u, CURLUPART_SCHEME, v, 0);
if(uc) {
@@ -522,7 +526,7 @@ static int set_transfer_url(struct Curl_easy *data,
}
}
- v = curl_pushheader_byname(hp, ":authority");
+ v = curl_pushheader_byname(hp, H2H3_PSEUDO_AUTHORITY);
if(v) {
uc = curl_url_set(u, CURLUPART_HOST, v, 0);
if(uc) {
@@ -531,7 +535,7 @@ static int set_transfer_url(struct Curl_easy *data,
}
}
- v = curl_pushheader_byname(hp, ":path");
+ v = curl_pushheader_byname(hp, H2H3_PSEUDO_PATH);
if(v) {
uc = curl_url_set(u, CURLUPART_PATH, v, 0);
if(uc) {
@@ -560,7 +564,7 @@ static int push_promise(struct Curl_easy *data,
const nghttp2_push_promise *frame)
{
int rv; /* one of the CURL_PUSH_* defines */
- H2BUGF(infof(data, "PUSH_PROMISE received, stream %u!",
+ H2BUGF(infof(data, "PUSH_PROMISE received, stream %u",
frame->promised_stream_id));
if(data->multi->push_cb) {
struct HTTP *stream;
@@ -580,11 +584,11 @@ static int push_promise(struct Curl_easy *data,
heads.data = data;
heads.frame = frame;
/* ask the application */
- H2BUGF(infof(data, "Got PUSH_PROMISE, ask application!"));
+ H2BUGF(infof(data, "Got PUSH_PROMISE, ask application"));
stream = data->req.p.http;
if(!stream) {
- failf(data, "Internal NULL stream!");
+ failf(data, "Internal NULL stream");
(void)Curl_close(&newhandle);
rv = CURL_PUSH_DENY;
goto fail;
@@ -641,7 +645,7 @@ static int push_promise(struct Curl_easy *data,
frame->promised_stream_id,
newhandle);
if(rv) {
- infof(data, "failed to set user_data for stream %d",
+ infof(data, "failed to set user_data for stream %u",
frame->promised_stream_id);
DEBUGASSERT(0);
rv = CURL_PUSH_DENY;
@@ -651,7 +655,7 @@ static int push_promise(struct Curl_easy *data,
Curl_dyn_init(&newstream->trailer_recvbuf, DYN_H2_TRAILERS);
}
else {
- H2BUGF(infof(data, "Got PUSH_PROMISE, ignore it!"));
+ H2BUGF(infof(data, "Got PUSH_PROMISE, ignore it"));
rv = CURL_PUSH_DENY;
}
fail:
@@ -711,19 +715,19 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
data_s = nghttp2_session_get_stream_user_data(session, stream_id);
if(!data_s) {
H2BUGF(infof(data,
- "No Curl_easy associated with stream: %x",
+ "No Curl_easy associated with stream: %u",
stream_id));
return 0;
}
stream = data_s->req.p.http;
if(!stream) {
- H2BUGF(infof(data_s, "No proto pointer for stream: %x",
+ H2BUGF(infof(data_s, "No proto pointer for stream: %u",
stream_id));
return NGHTTP2_ERR_CALLBACK_FAILURE;
}
- H2BUGF(infof(data_s, "on_frame_recv() header %x stream %x",
+ H2BUGF(infof(data_s, "on_frame_recv() header %x stream %u",
frame->hd.type, stream_id));
switch(frame->hd.type) {
@@ -757,7 +761,7 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
stream->status_code = -1;
}
- result = Curl_dyn_add(&stream->header_recvbuf, "\r\n");
+ result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST("\r\n"));
if(result)
return NGHTTP2_ERR_CALLBACK_FAILURE;
@@ -800,7 +804,7 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
}
break;
default:
- H2BUGF(infof(data_s, "Got frame type %x for stream %u!",
+ H2BUGF(infof(data_s, "Got frame type %x for stream %u",
frame->hd.type, stream_id));
break;
}
@@ -823,10 +827,14 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
/* get the stream from the hash based on Stream ID */
data_s = nghttp2_session_get_stream_user_data(session, stream_id);
- if(!data_s)
- /* Receiving a Stream ID not in the hash should not happen, this is an
- internal error more than anything else! */
- return NGHTTP2_ERR_CALLBACK_FAILURE;
+ if(!data_s) {
+ /* Receiving a Stream ID not in the hash should not happen - unless
+ we have aborted a transfer artificially and there were more data
+ in the pipeline. Silently ignore. */
+ H2BUGF(fprintf(stderr, "Data for stream %u but it doesn't exist\n",
+ stream_id));
+ return 0;
+ }
stream = data_s->req.p.http;
if(!stream)
@@ -907,15 +915,15 @@ static int on_stream_close(nghttp2_session *session, int32_t stream_id,
/* remove the entry from the hash as the stream is now gone */
rv = nghttp2_session_set_stream_user_data(session, stream_id, 0);
if(rv) {
- infof(data_s, "http/2: failed to clear user_data for stream %d!",
+ infof(data_s, "http/2: failed to clear user_data for stream %u",
stream_id);
DEBUGASSERT(0);
}
if(stream_id == httpc->pause_stream_id) {
- H2BUGF(infof(data_s, "Stopped the pause stream!"));
+ H2BUGF(infof(data_s, "Stopped the pause stream"));
httpc->pause_stream_id = 0;
}
- H2BUGF(infof(data_s, "Removed stream %u hash!", stream_id));
+ H2BUGF(infof(data_s, "Removed stream %u hash", stream_id));
stream->stream_id = 0; /* cleared */
}
return 0;
@@ -1000,7 +1008,7 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
stream = data_s->req.p.http;
if(!stream) {
- failf(data_s, "Internal NULL stream!");
+ failf(data_s, "Internal NULL stream");
return NGHTTP2_ERR_CALLBACK_FAILURE;
}
@@ -1009,7 +1017,7 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
if(frame->hd.type == NGHTTP2_PUSH_PROMISE) {
char *h;
- if(!strcmp(":authority", (const char *)name)) {
+ if(!strcmp(H2H3_PSEUDO_AUTHORITY, (const char *)name)) {
/* pseudo headers are lower case */
int rc = 0;
char *check = aprintf("%s:%d", conn->host.name, conn->remote_port);
@@ -1044,6 +1052,12 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
else if(stream->push_headers_used ==
stream->push_headers_alloc) {
char **headp;
+ if(stream->push_headers_alloc > 1000) {
+ /* this is beyond crazy many headers, bail out */
+ failf(data_s, "Too many PUSH_PROMISE headers");
+ Curl_safefree(stream->push_headers);
+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+ }
stream->push_headers_alloc *= 2;
headp = Curl_saferealloc(stream->push_headers,
stream->push_headers_alloc * sizeof(char *));
@@ -1072,22 +1086,27 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
return 0;
}
- if(namelen == sizeof(":status") - 1 &&
- memcmp(":status", name, namelen) == 0) {
+ if(namelen == sizeof(H2H3_PSEUDO_STATUS) - 1 &&
+ memcmp(H2H3_PSEUDO_STATUS, name, namelen) == 0) {
/* nghttp2 guarantees :status is received first and only once, and
value is 3 digits status code, and decode_status_code always
succeeds. */
+ char buffer[32];
stream->status_code = decode_status_code(value, valuelen);
DEBUGASSERT(stream->status_code != -1);
-
- result = Curl_dyn_add(&stream->header_recvbuf, "HTTP/2 ");
+ msnprintf(buffer, sizeof(buffer), H2H3_PSEUDO_STATUS ":%u\r",
+ stream->status_code);
+ result = Curl_headers_push(data_s, buffer, CURLH_PSEUDO);
+ if(result)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST("HTTP/2 "));
if(result)
return NGHTTP2_ERR_CALLBACK_FAILURE;
result = Curl_dyn_addn(&stream->header_recvbuf, value, valuelen);
if(result)
return NGHTTP2_ERR_CALLBACK_FAILURE;
/* the space character after the status code is mandatory */
- result = Curl_dyn_add(&stream->header_recvbuf, " \r\n");
+ result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST(" \r\n"));
if(result)
return NGHTTP2_ERR_CALLBACK_FAILURE;
/* if we receive data for another handle, wake that up */
@@ -1105,13 +1124,13 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
result = Curl_dyn_addn(&stream->header_recvbuf, name, namelen);
if(result)
return NGHTTP2_ERR_CALLBACK_FAILURE;
- result = Curl_dyn_add(&stream->header_recvbuf, ": ");
+ result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST(": "));
if(result)
return NGHTTP2_ERR_CALLBACK_FAILURE;
result = Curl_dyn_addn(&stream->header_recvbuf, value, valuelen);
if(result)
return NGHTTP2_ERR_CALLBACK_FAILURE;
- result = Curl_dyn_add(&stream->header_recvbuf, "\r\n");
+ result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST("\r\n"));
if(result)
return NGHTTP2_ERR_CALLBACK_FAILURE;
/* if we receive data for another handle, wake that up */
@@ -1227,17 +1246,18 @@ void Curl_http2_done(struct Curl_easy *data, bool premature)
!httpc->h2) /* not HTTP/2 ? */
return;
- if(premature) {
+ /* do this before the reset handling, as that might clear ->stream_id */
+ if(http->stream_id == httpc->pause_stream_id) {
+ H2BUGF(infof(data, "DONE the pause stream (%u)", http->stream_id));
+ httpc->pause_stream_id = 0;
+ }
+ if(premature || (!http->closed && http->stream_id)) {
/* RST_STREAM */
set_transfer(httpc, data); /* set the transfer */
+ H2BUGF(infof(data, "RST stream %u", http->stream_id));
if(!nghttp2_submit_rst_stream(httpc->h2, NGHTTP2_FLAG_NONE,
http->stream_id, NGHTTP2_STREAM_CLOSED))
(void)nghttp2_session_send(httpc->h2);
-
- if(http->stream_id == httpc->pause_stream_id) {
- infof(data, "stopped the pause stream!");
- httpc->pause_stream_id = 0;
- }
}
if(data->state.drain)
@@ -1248,7 +1268,7 @@ void Curl_http2_done(struct Curl_easy *data, bool premature)
int rv = nghttp2_session_set_stream_user_data(httpc->h2,
http->stream_id, 0);
if(rv) {
- infof(data, "http/2: failed to clear user_data for stream %d!",
+ infof(data, "http/2: failed to clear user_data for stream %u",
http->stream_id);
DEBUGASSERT(0);
}
@@ -1257,6 +1277,27 @@ void Curl_http2_done(struct Curl_easy *data, bool premature)
}
}
+static int client_new(struct connectdata *conn,
+ nghttp2_session_callbacks *callbacks)
+{
+#if NGHTTP2_VERSION_NUM < 0x013200
+ /* before 1.50.0 */
+ return nghttp2_session_client_new(&conn->proto.httpc.h2, callbacks, conn);
+#else
+ nghttp2_option *o;
+ int rc = nghttp2_option_new(&o);
+ if(rc)
+ return rc;
+ /* turn off RFC 9113 leading and trailing white spaces validation against
+ HTTP field value. */
+ nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation(o, 1);
+ rc = nghttp2_session_client_new2(&conn->proto.httpc.h2, callbacks, conn,
+ o);
+ nghttp2_option_del(o);
+ return rc;
+#endif
+}
+
/*
* Initialize nghttp2 for a Curl connection
*/
@@ -1273,7 +1314,7 @@ static CURLcode http2_init(struct Curl_easy *data, struct connectdata *conn)
rc = nghttp2_session_callbacks_new(&callbacks);
if(rc) {
- failf(data, "Couldn't initialize nghttp2 callbacks!");
+ failf(data, "Couldn't initialize nghttp2 callbacks");
return CURLE_OUT_OF_MEMORY; /* most likely at least */
}
@@ -1297,12 +1338,12 @@ static CURLcode http2_init(struct Curl_easy *data, struct connectdata *conn)
nghttp2_session_callbacks_set_error_callback(callbacks, error_callback);
/* The nghttp2 session is not yet setup, do it */
- rc = nghttp2_session_client_new(&conn->proto.httpc.h2, callbacks, conn);
+ rc = client_new(conn, callbacks);
nghttp2_session_callbacks_del(callbacks);
if(rc) {
- failf(data, "Couldn't initialize nghttp2!");
+ failf(data, "Couldn't initialize nghttp2");
return CURLE_OUT_OF_MEMORY; /* most likely at least */
}
}
@@ -1337,7 +1378,7 @@ CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
}
conn->proto.httpc.binlen = binlen;
- result = Curl_base64url_encode(data, (const char *)binsettings, binlen,
+ result = Curl_base64url_encode((const char *)binsettings, binlen,
&base64, &blen);
if(result) {
Curl_dyn_free(req);
@@ -1351,7 +1392,7 @@ CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
NGHTTP2_CLEARTEXT_PROTO_VERSION_ID, base64);
free(base64);
- k->upgr101 = UPGR101_REQUESTED;
+ k->upgr101 = UPGR101_H2;
return result;
}
@@ -1507,7 +1548,7 @@ static ssize_t http2_handle_stream_close(struct connectdata *conn,
/* Reset to FALSE to prevent infinite loop in readwrite_data function. */
stream->closed = FALSE;
if(stream->error == NGHTTP2_REFUSED_STREAM) {
- H2BUGF(infof(data, "REFUSED_STREAM (%d), try again on a new connection!",
+ H2BUGF(infof(data, "REFUSED_STREAM (%u), try again on a new connection",
stream->stream_id));
connclose(conn, "REFUSED_STREAM"); /* don't use this anymore */
data->state.refused_stream = TRUE;
@@ -1515,7 +1556,7 @@ static ssize_t http2_handle_stream_close(struct connectdata *conn,
return -1;
}
else if(stream->error != NGHTTP2_NO_ERROR) {
- failf(data, "HTTP/2 stream %d was not closed cleanly: %s (err %u)",
+ failf(data, "HTTP/2 stream %u was not closed cleanly: %s (err %u)",
stream->stream_id, nghttp2_http2_strerror(stream->error),
stream->error);
*err = CURLE_HTTP2_STREAM;
@@ -1523,7 +1564,7 @@ static ssize_t http2_handle_stream_close(struct connectdata *conn,
}
if(!stream->bodystarted) {
- failf(data, "HTTP/2 stream %d was closed cleanly, but before getting "
+ failf(data, "HTTP/2 stream %u was closed cleanly, but before getting "
" all response header fields, treated as error",
stream->stream_id);
*err = CURLE_HTTP2_STREAM;
@@ -1666,7 +1707,7 @@ static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
));
if((data->state.drain) && stream->memlen) {
- H2BUGF(infof(data, "http2_recv: DRAIN %zu bytes stream %u!! (%p => %p)",
+ H2BUGF(infof(data, "http2_recv: DRAIN %zu bytes stream %u (%p => %p)",
stream->memlen, stream->stream_id,
stream->mem, mem));
if(mem != stream->mem) {
@@ -1728,7 +1769,7 @@ static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
if(stream->closed)
/* closed overrides paused */
return 0;
- H2BUGF(infof(data, "stream %x is paused, pause id: %x",
+ H2BUGF(infof(data, "stream %u is paused, pause id: %u",
stream->stream_id, httpc->pause_stream_id));
*err = CURLE_AGAIN;
return -1;
@@ -1759,7 +1800,7 @@ static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
/* This will happen when the server or proxy server is SIGKILLed
during data transfer. We should emit an error since our data
received may be incomplete. */
- failf(data, "HTTP/2 stream %d was not closed cleanly before"
+ failf(data, "HTTP/2 stream %u was not closed cleanly before"
" end of the underlying stream",
stream->stream_id);
*err = CURLE_HTTP2_STREAM;
@@ -1816,80 +1857,6 @@ static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
return -1;
}
-/* Index where :authority header field will appear in request header
- field list. */
-#define AUTHORITY_DST_IDX 3
-
-/* USHRT_MAX is 65535 == 0xffff */
-#define HEADER_OVERFLOW(x) \
- (x.namelen > 0xffff || x.valuelen > 0xffff - x.namelen)
-
-/*
- * Check header memory for the token "trailers".
- * Parse the tokens as separated by comma and surrounded by whitespace.
- * Returns TRUE if found or FALSE if not.
- */
-static bool contains_trailers(const char *p, size_t len)
-{
- const char *end = p + len;
- for(;;) {
- for(; p != end && (*p == ' ' || *p == '\t'); ++p)
- ;
- if(p == end || (size_t)(end - p) < sizeof("trailers") - 1)
- return FALSE;
- if(strncasecompare("trailers", p, sizeof("trailers") - 1)) {
- p += sizeof("trailers") - 1;
- for(; p != end && (*p == ' ' || *p == '\t'); ++p)
- ;
- if(p == end || *p == ',')
- return TRUE;
- }
- /* skip to next token */
- for(; p != end && *p != ','; ++p)
- ;
- if(p == end)
- return FALSE;
- ++p;
- }
-}
-
-typedef enum {
- /* Send header to server */
- HEADERINST_FORWARD,
- /* Don't send header to server */
- HEADERINST_IGNORE,
- /* Discard header, and replace it with "te: trailers" */
- HEADERINST_TE_TRAILERS
-} header_instruction;
-
-/* Decides how to treat given header field. */
-static header_instruction inspect_header(const char *name, size_t namelen,
- const char *value, size_t valuelen) {
- switch(namelen) {
- case 2:
- if(!strncasecompare("te", name, namelen))
- return HEADERINST_FORWARD;
-
- return contains_trailers(value, valuelen) ?
- HEADERINST_TE_TRAILERS : HEADERINST_IGNORE;
- case 7:
- return strncasecompare("upgrade", name, namelen) ?
- HEADERINST_IGNORE : HEADERINST_FORWARD;
- case 10:
- return (strncasecompare("connection", name, namelen) ||
- strncasecompare("keep-alive", name, namelen)) ?
- HEADERINST_IGNORE : HEADERINST_FORWARD;
- case 16:
- return strncasecompare("proxy-connection", name, namelen) ?
- HEADERINST_IGNORE : HEADERINST_FORWARD;
- case 17:
- return strncasecompare("transfer-encoding", name, namelen) ?
- HEADERINST_IGNORE : HEADERINST_FORWARD;
- default:
- return HEADERINST_FORWARD;
- }
-}
-
static ssize_t http2_send(struct Curl_easy *data, int sockindex,
const void *mem, size_t len, CURLcode *err)
{
@@ -1904,14 +1871,12 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
struct HTTP *stream = data->req.p.http;
nghttp2_nv *nva = NULL;
size_t nheader;
- size_t i;
- size_t authority_idx;
- char *hdbuf = (char *)mem;
- char *end, *line_end;
nghttp2_data_provider data_prd;
int32_t stream_id;
nghttp2_session *h2 = httpc->h2;
nghttp2_priority_spec pri_spec;
+ CURLcode result;
+ struct h2h3req *hreq;
(void)sockindex;
@@ -1919,7 +1884,7 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
if(stream->stream_id != -1) {
if(stream->close_handled) {
- infof(data, "stream %d closed", stream->stream_id);
+ infof(data, "stream %u closed", stream->stream_id);
*err = CURLE_HTTP2_STREAM;
return -1;
}
@@ -1977,174 +1942,29 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
return 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 = 1; i < len; ++i) {
- if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
- ++nheader;
- ++i;
- }
+ result = Curl_pseudo_headers(data, mem, len, &hreq);
+ if(result) {
+ *err = result;
+ return -1;
}
- if(nheader < 2)
- goto fail;
+ nheader = hreq->entries;
- /* We counted additional 2 \r\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) {
+ Curl_pseudo_free(hreq);
*err = CURLE_OUT_OF_MEMORY;
return -1;
}
-
- /* Extract :method, :path from request line
- We do line endings with CRLF so checking for CR is enough */
- line_end = memchr(hdbuf, '\r', len);
- if(!line_end)
- goto fail;
-
- /* Method does not contain spaces */
- end = memchr(hdbuf, ' ', line_end - hdbuf);
- if(!end || end == hdbuf)
- goto fail;
- nva[0].name = (unsigned char *)":method";
- nva[0].namelen = strlen((char *)nva[0].name);
- nva[0].value = (unsigned char *)hdbuf;
- nva[0].valuelen = (size_t)(end - hdbuf);
- nva[0].flags = NGHTTP2_NV_FLAG_NONE;
- if(HEADER_OVERFLOW(nva[0])) {
- failf(data, "Failed sending HTTP request: Header overflow");
- goto fail;
- }
-
- hdbuf = end + 1;
-
- /* Path may contain spaces so scan backwards */
- end = NULL;
- for(i = (size_t)(line_end - hdbuf); i; --i) {
- if(hdbuf[i - 1] == ' ') {
- end = &hdbuf[i - 1];
- break;
- }
- }
- if(!end || end == hdbuf)
- goto fail;
- nva[1].name = (unsigned char *)":path";
- nva[1].namelen = strlen((char *)nva[1].name);
- nva[1].value = (unsigned char *)hdbuf;
- nva[1].valuelen = (size_t)(end - hdbuf);
- nva[1].flags = NGHTTP2_NV_FLAG_NONE;
- if(HEADER_OVERFLOW(nva[1])) {
- failf(data, "Failed sending HTTP request: Header overflow");
- goto fail;
- }
-
- nva[2].name = (unsigned char *)":scheme";
- nva[2].namelen = 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 = strlen((char *)nva[2].value);
- nva[2].flags = NGHTTP2_NV_FLAG_NONE;
- if(HEADER_OVERFLOW(nva[2])) {
- failf(data, "Failed sending HTTP request: Header overflow");
- goto fail;
- }
-
- authority_idx = 0;
- i = 3;
- while(i < nheader) {
- size_t hlen;
-
- hdbuf = line_end + 2;
-
- /* check for next CR, but only within the piece of data left in the given
- buffer */
- line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
- if(!line_end || (line_end == hdbuf))
- goto fail;
-
- /* header continuation lines are not supported */
- if(*hdbuf == ' ' || *hdbuf == '\t')
- goto fail;
-
- for(end = hdbuf; end < line_end && *end != ':'; ++end)
- ;
- if(end == hdbuf || end == line_end)
- goto fail;
- hlen = end - hdbuf;
-
- if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
- authority_idx = i;
- nva[i].name = (unsigned char *)":authority";
- nva[i].namelen = strlen((char *)nva[i].name);
- }
- else {
- nva[i].namelen = (size_t)(end - hdbuf);
- /* Lower case the header name for HTTP/2 */
- Curl_strntolower((char *)hdbuf, hdbuf, nva[i].namelen);
- nva[i].name = (unsigned char *)hdbuf;
- }
- hdbuf = end + 1;
- while(*hdbuf == ' ' || *hdbuf == '\t')
- ++hdbuf;
- end = line_end;
-
- switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
- end - hdbuf)) {
- case HEADERINST_IGNORE:
- /* skip header fields prohibited by HTTP/2 specification. */
- --nheader;
- continue;
- case HEADERINST_TE_TRAILERS:
- nva[i].value = (uint8_t*)"trailers";
- nva[i].valuelen = sizeof("trailers") - 1;
- break;
- default:
- nva[i].value = (unsigned char *)hdbuf;
- nva[i].valuelen = (size_t)(end - hdbuf);
- }
-
- nva[i].flags = NGHTTP2_NV_FLAG_NONE;
- if(HEADER_OVERFLOW(nva[i])) {
- failf(data, "Failed sending HTTP request: Header overflow");
- goto fail;
- }
- ++i;
- }
-
- /* :authority must come before non-pseudo header fields */
- if(authority_idx && 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;
- }
-
- /* Warn stream may be rejected if cumulative length of headers is too large.
- It appears nghttp2 will not send a header frame larger than 64KB. */
-#define MAX_ACC 60000 /* <64KB to account for some overhead */
- {
- size_t acc = 0;
-
- for(i = 0; i < nheader; ++i) {
- acc += nva[i].namelen + nva[i].valuelen;
-
- H2BUGF(infof(data, "h2 header: %.*s:%.*s",
- nva[i].namelen, nva[i].name,
- nva[i].valuelen, nva[i].value));
- }
-
- if(acc > MAX_ACC) {
- infof(data, "http2_send: Warning: The cumulative length of all "
- "headers exceeds %d bytes and that could cause the "
- "stream to be rejected.", MAX_ACC);
+ else {
+ unsigned int i;
+ for(i = 0; i < nheader; i++) {
+ nva[i].name = (unsigned char *)hreq->header[i].name;
+ nva[i].namelen = hreq->header[i].namelen;
+ nva[i].value = (unsigned char *)hreq->header[i].value;
+ nva[i].valuelen = hreq->header[i].valuelen;
+ nva[i].flags = NGHTTP2_NV_FLAG_NONE;
}
+ Curl_pseudo_free(hreq);
}
h2_pri_spec(data, &pri_spec);
@@ -2177,13 +1997,13 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
if(stream_id < 0) {
H2BUGF(infof(data,
- "http2_send() nghttp2_submit_request error (%s)%d",
+ "http2_send() nghttp2_submit_request error (%s)%u",
nghttp2_strerror(stream_id), stream_id));
*err = CURLE_SEND_ERROR;
return -1;
}
- infof(data, "Using Stream ID: %x (easy handle %p)",
+ infof(data, "Using Stream ID: %u (easy handle %p)",
stream_id, (void *)data);
stream->stream_id = stream_id;
@@ -2213,11 +2033,6 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
nghttp2_session_resume_data(h2, stream->stream_id);
return len;
-
-fail:
- free(nva);
- *err = CURLE_SEND_ERROR;
- return -1;
}
CURLcode Curl_http2_setup(struct Curl_easy *data,
@@ -2271,8 +2086,6 @@ CURLcode Curl_http2_setup(struct Curl_easy *data,
httpc->pause_stream_id = 0;
httpc->drain_total = 0;
- infof(data, "Connection state changed (HTTP/2 confirmed)");
-
return CURLE_OK;
}
@@ -2310,7 +2123,7 @@ CURLcode Curl_http2_switched(struct Curl_easy *data,
stream->stream_id,
data);
if(rv) {
- infof(data, "http/2: failed to set user_data for stream %d!",
+ infof(data, "http/2: failed to set user_data for stream %u",
stream->stream_id);
DEBUGASSERT(0);
}
diff --git a/lib/http2.h b/lib/http2.h
index d6986d97f..f0390596c 100644
--- a/lib/http2.h
+++ b/lib/http2.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/http_aws_sigv4.c b/lib/http_aws_sigv4.c
index 751e5af5f..440eb385f 100644
--- a/lib/http_aws_sigv4.c
+++ b/lib/http_aws_sigv4.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -27,8 +29,6 @@
#include "urldata.h"
#include "strcase.h"
#include "strdup.h"
-#include "vauth/vauth.h"
-#include "vauth/digest.h"
#include "http_aws_sigv4.h"
#include "curl_sha256.h"
#include "transfer.h"
@@ -44,6 +44,8 @@
#include "curl_memory.h"
#include "memdebug.h"
+#include "slist.h"
+
#define HMAC_SHA256(k, kl, d, dl, o) \
do { \
ret = Curl_hmacit(Curl_HMAC_SHA256, \
@@ -51,19 +53,219 @@
(unsigned int)kl, \
(unsigned char *)d, \
(unsigned int)dl, o); \
- if(ret != CURLE_OK) { \
+ if(ret) { \
goto fail; \
} \
} while(0)
+#define TIMESTAMP_SIZE 17
+
static void sha256_to_hex(char *dst, unsigned char *sha, size_t dst_l)
{
int i;
DEBUGASSERT(dst_l >= 65);
for(i = 0; i < 32; ++i) {
- curl_msnprintf(dst + (i * 2), dst_l - (i * 2), "%02x", sha[i]);
+ msnprintf(dst + (i * 2), dst_l - (i * 2), "%02x", sha[i]);
+ }
+}
+
+static char *find_date_hdr(struct Curl_easy *data, const char *sig_hdr)
+{
+ char *tmp = Curl_checkheaders(data, sig_hdr, strlen(sig_hdr));
+
+ if(tmp)
+ return tmp;
+ return Curl_checkheaders(data, STRCONST("Date"));
+}
+
+/* remove whitespace, and lowercase all headers */
+static void trim_headers(struct curl_slist *head)
+{
+ struct curl_slist *l;
+ for(l = head; l; l = l->next) {
+ char *value; /* to read from */
+ char *store;
+ size_t colon = strcspn(l->data, ":");
+ Curl_strntolower(l->data, l->data, colon);
+
+ value = &l->data[colon];
+ if(!*value)
+ continue;
+ ++value;
+ store = value;
+
+ /* skip leading whitespace */
+ while(*value && ISBLANK(*value))
+ value++;
+
+ while(*value) {
+ int space = 0;
+ while(*value && ISBLANK(*value)) {
+ value++;
+ space++;
+ }
+ if(space) {
+ /* replace any number of consecutive whitespace with a single space,
+ unless at the end of the string, then nothing */
+ if(*value)
+ *store++ = ' ';
+ }
+ else
+ *store++ = *value++;
+ }
+ *store = 0; /* null terminate */
+ }
+}
+
+/* maximum lenth for the aws sivg4 parts */
+#define MAX_SIGV4_LEN 64
+#define MAX_SIGV4_LEN_TXT "64"
+
+#define DATE_HDR_KEY_LEN (MAX_SIGV4_LEN + sizeof("X--Date"))
+
+#define MAX_HOST_LEN 255
+/* FQDN + host: */
+#define FULL_HOST_LEN (MAX_HOST_LEN + sizeof("host:"))
+
+/* string been x-PROVIDER-date:TIMESTAMP, I need +1 for ':' */
+#define DATE_FULL_HDR_LEN (DATE_HDR_KEY_LEN + TIMESTAMP_SIZE + 1)
+
+/* timestamp should point to a buffer of at last TIMESTAMP_SIZE bytes */
+static CURLcode make_headers(struct Curl_easy *data,
+ const char *hostname,
+ char *timestamp,
+ char *provider1,
+ char **date_header,
+ struct dynbuf *canonical_headers,
+ struct dynbuf *signed_headers)
+{
+ char date_hdr_key[DATE_HDR_KEY_LEN];
+ char date_full_hdr[DATE_FULL_HDR_LEN];
+ struct curl_slist *head = NULL;
+ struct curl_slist *tmp_head = NULL;
+ CURLcode ret = CURLE_OUT_OF_MEMORY;
+ struct curl_slist *l;
+ int again = 1;
+
+ /* provider1 mid */
+ Curl_strntolower(provider1, provider1, strlen(provider1));
+ provider1[0] = Curl_raw_toupper(provider1[0]);
+
+ msnprintf(date_hdr_key, DATE_HDR_KEY_LEN, "X-%s-Date", provider1);
+
+ /* provider1 lowercase */
+ Curl_strntolower(provider1, provider1, 1); /* first byte only */
+ msnprintf(date_full_hdr, DATE_FULL_HDR_LEN,
+ "x-%s-date:%s", provider1, timestamp);
+
+ if(Curl_checkheaders(data, STRCONST("Host"))) {
+ head = NULL;
+ }
+ else {
+ char full_host[FULL_HOST_LEN + 1];
+
+ if(data->state.aptr.host) {
+ size_t pos;
+
+ if(strlen(data->state.aptr.host) > FULL_HOST_LEN) {
+ ret = CURLE_URL_MALFORMAT;
+ goto fail;
+ }
+ strcpy(full_host, data->state.aptr.host);
+ /* remove /r/n as the separator for canonical request must be '\n' */
+ pos = strcspn(full_host, "\n\r");
+ full_host[pos] = 0;
+ }
+ else {
+ if(strlen(hostname) > MAX_HOST_LEN) {
+ ret = CURLE_URL_MALFORMAT;
+ goto fail;
+ }
+ msnprintf(full_host, FULL_HOST_LEN, "host:%s", hostname);
+ }
+
+ head = curl_slist_append(NULL, full_host);
+ if(!head)
+ goto fail;
+ }
+
+
+ for(l = data->set.headers; l; l = l->next) {
+ tmp_head = curl_slist_append(head, l->data);
+ if(!tmp_head)
+ goto fail;
+ head = tmp_head;
+ }
+
+ trim_headers(head);
+
+ *date_header = find_date_hdr(data, date_hdr_key);
+ if(!*date_header) {
+ tmp_head = curl_slist_append(head, date_full_hdr);
+ if(!tmp_head)
+ goto fail;
+ head = tmp_head;
+ *date_header = curl_maprintf("%s: %s", date_hdr_key, timestamp);
+ }
+ else {
+ char *value;
+
+ *date_header = strdup(*date_header);
+ if(!*date_header)
+ goto fail;
+
+ value = strchr(*date_header, ':');
+ if(!value)
+ goto fail;
+ ++value;
+ while(ISBLANK(*value))
+ ++value;
+ strncpy(timestamp, value, TIMESTAMP_SIZE - 1);
+ timestamp[TIMESTAMP_SIZE - 1] = 0;
+ }
+
+ /* alpha-sort in a case sensitive manner */
+ do {
+ again = 0;
+ for(l = head; l; l = l->next) {
+ struct curl_slist *next = l->next;
+
+ if(next && strcmp(l->data, next->data) > 0) {
+ char *tmp = l->data;
+
+ l->data = next->data;
+ next->data = tmp;
+ again = 1;
+ }
+ }
+ } while(again);
+
+ for(l = head; l; l = l->next) {
+ char *tmp;
+
+ if(Curl_dyn_add(canonical_headers, l->data))
+ goto fail;
+ if(Curl_dyn_add(canonical_headers, "\n"))
+ goto fail;
+
+ tmp = strchr(l->data, ':');
+ if(tmp)
+ *tmp = 0;
+
+ if(l != head) {
+ if(Curl_dyn_add(signed_headers, ";"))
+ goto fail;
+ }
+ if(Curl_dyn_add(signed_headers, l->data))
+ goto fail;
}
+
+ ret = CURLE_OK;
+fail:
+ curl_slist_free_all(head);
+
+ return ret;
}
CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
@@ -71,29 +273,21 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
CURLcode ret = CURLE_OUT_OF_MEMORY;
struct connectdata *conn = data->conn;
size_t len;
- const char *tmp0;
- const char *tmp1;
- char *provider0_low = NULL;
- char *provider0_up = NULL;
- char *provider1_low = NULL;
- char *provider1_mid = NULL;
- char *region = NULL;
- char *service = NULL;
+ const char *arg;
+ char provider0[MAX_SIGV4_LEN + 1]="";
+ char provider1[MAX_SIGV4_LEN + 1]="";
+ char region[MAX_SIGV4_LEN + 1]="";
+ char service[MAX_SIGV4_LEN + 1]="";
const char *hostname = conn->host.name;
-#ifdef DEBUGBUILD
- char *force_timestamp;
-#endif
time_t clock;
struct tm tm;
- char timestamp[17];
+ char timestamp[TIMESTAMP_SIZE];
char date[9];
- const char *content_type = Curl_checkheaders(data, "Content-Type");
- char *canonical_headers = NULL;
- char *signed_headers = NULL;
- Curl_HttpReq httpreq;
- const char *method;
- size_t post_data_len;
- const char *post_data = data->set.postfields ? data->set.postfields : "";
+ struct dynbuf canonical_headers;
+ struct dynbuf signed_headers;
+ char *date_header = NULL;
+ const char *post_data = data->set.postfields;
+ size_t post_data_len = 0;
unsigned char sha_hash[32];
char sha_hex[65];
char *canonical_request = NULL;
@@ -101,20 +295,23 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
char *credential_scope = NULL;
char *str_to_sign = NULL;
const char *user = data->state.aptr.user ? data->state.aptr.user : "";
- const char *passwd = data->state.aptr.passwd ? data->state.aptr.passwd : "";
char *secret = NULL;
- unsigned char tmp_sign0[32] = {0};
- unsigned char tmp_sign1[32] = {0};
+ unsigned char sign0[32] = {0};
+ unsigned char sign1[32] = {0};
char *auth_headers = NULL;
DEBUGASSERT(!proxy);
(void)proxy;
- if(Curl_checkheaders(data, "Authorization")) {
+ if(Curl_checkheaders(data, STRCONST("Authorization"))) {
/* Authorization already present, Bailing out */
return CURLE_OK;
}
+ /* we init thoses buffers here, so goto fail will free initialized dynbuf */
+ Curl_dyn_init(&canonical_headers, CURL_MAX_HTTP_HEADER);
+ Curl_dyn_init(&signed_headers, CURL_MAX_HTTP_HEADER);
+
/*
* Parameters parsing
* Google and Outscale use the same OSC or GOOG,
@@ -122,223 +319,154 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
* AWS is the default because most of non-amazon providers
* are still using aws:amz as a prefix.
*/
- tmp0 = data->set.str[STRING_AWS_SIGV4] ?
+ arg = data->set.str[STRING_AWS_SIGV4] ?
data->set.str[STRING_AWS_SIGV4] : "aws:amz";
- tmp1 = strchr(tmp0, ':');
- len = tmp1 ? (size_t)(tmp1 - tmp0) : strlen(tmp0);
- if(len < 1) {
- infof(data, "first provider can't be empty");
+
+ /* provider1[:provider2[:region[:service]]]
+
+ No string can be longer than N bytes of non-whitespace
+ */
+ (void)sscanf(arg, "%" MAX_SIGV4_LEN_TXT "[^:]"
+ ":%" MAX_SIGV4_LEN_TXT "[^:]"
+ ":%" MAX_SIGV4_LEN_TXT "[^:]"
+ ":%" MAX_SIGV4_LEN_TXT "s",
+ provider0, provider1, region, service);
+ if(!provider0[0]) {
+ failf(data, "first provider can't be empty");
ret = CURLE_BAD_FUNCTION_ARGUMENT;
goto fail;
}
- provider0_low = malloc(len + 1);
- provider0_up = malloc(len + 1);
- if(!provider0_low || !provider0_up) {
- goto fail;
- }
- Curl_strntolower(provider0_low, tmp0, len);
- provider0_low[len] = '\0';
- Curl_strntoupper(provider0_up, tmp0, len);
- provider0_up[len] = '\0';
-
- if(tmp1) {
- tmp0 = tmp1 + 1;
- tmp1 = strchr(tmp0, ':');
- len = tmp1 ? (size_t)(tmp1 - tmp0) : strlen(tmp0);
- if(len < 1) {
- infof(data, "second provider can't be empty");
- ret = CURLE_BAD_FUNCTION_ARGUMENT;
- goto fail;
- }
- provider1_low = malloc(len + 1);
- provider1_mid = malloc(len + 1);
- if(!provider1_low || !provider1_mid) {
- goto fail;
- }
- Curl_strntolower(provider1_low, tmp0, len);
- provider1_low[len] = '\0';
- Curl_strntolower(provider1_mid, tmp0, len);
- provider1_mid[0] = Curl_raw_toupper(provider1_mid[0]);
- provider1_mid[len] = '\0';
-
- if(tmp1) {
- tmp0 = tmp1 + 1;
- tmp1 = strchr(tmp0, ':');
- len = tmp1 ? (size_t)(tmp1 - tmp0) : strlen(tmp0);
- if(len < 1) {
- infof(data, "region can't be empty");
- ret = CURLE_BAD_FUNCTION_ARGUMENT;
- goto fail;
- }
- region = Curl_memdup(tmp0, len + 1);
- if(!region) {
- goto fail;
- }
- region[len] = '\0';
+ else if(!provider1[0])
+ strcpy(provider1, provider0);
- if(tmp1) {
- tmp0 = tmp1 + 1;
- service = strdup(tmp0);
- if(!service) {
- goto fail;
- }
- if(strlen(service) < 1) {
- infof(data, "service can't be empty");
- ret = CURLE_BAD_FUNCTION_ARGUMENT;
- goto fail;
- }
- }
- }
- }
- else {
- provider1_low = Curl_memdup(provider0_low, len + 1);
- provider1_mid = Curl_memdup(provider0_low, len + 1);
- if(!provider1_low || !provider1_mid) {
- goto fail;
- }
- provider1_mid[0] = Curl_raw_toupper(provider1_mid[0]);
- }
-
- if(!service) {
- tmp0 = hostname;
- tmp1 = strchr(tmp0, '.');
- len = tmp1 - tmp0;
- if(!tmp1 || len < 1) {
- infof(data, "service missing in parameters or hostname");
+ if(!service[0]) {
+ char *hostdot = strchr(hostname, '.');
+ if(!hostdot) {
+ failf(data, "service missing in parameters and hostname");
ret = CURLE_URL_MALFORMAT;
goto fail;
}
- service = Curl_memdup(tmp0, len + 1);
- if(!service) {
+ len = hostdot - hostname;
+ if(len > MAX_SIGV4_LEN) {
+ failf(data, "service too long in hostname");
+ ret = CURLE_URL_MALFORMAT;
goto fail;
}
+ strncpy(service, hostname, len);
service[len] = '\0';
- if(!region) {
- tmp0 = tmp1 + 1;
- tmp1 = strchr(tmp0, '.');
- len = tmp1 - tmp0;
- if(!tmp1 || len < 1) {
- infof(data, "region missing in parameters or hostname");
+ if(!region[0]) {
+ const char *reg = hostdot + 1;
+ const char *hostreg = strchr(reg, '.');
+ if(!hostreg) {
+ failf(data, "region missing in parameters and hostname");
ret = CURLE_URL_MALFORMAT;
goto fail;
}
- region = Curl_memdup(tmp0, len + 1);
- if(!region) {
+ len = hostreg - reg;
+ if(len > MAX_SIGV4_LEN) {
+ failf(data, "region too long in hostname");
+ ret = CURLE_URL_MALFORMAT;
goto fail;
}
+ strncpy(region, reg, len);
region[len] = '\0';
}
}
#ifdef DEBUGBUILD
- force_timestamp = getenv("CURL_FORCETIME");
- if(force_timestamp)
- clock = 0;
- else
- time(&clock);
+ {
+ char *force_timestamp = getenv("CURL_FORCETIME");
+ if(force_timestamp)
+ clock = 0;
+ else
+ time(&clock);
+ }
#else
time(&clock);
#endif
ret = Curl_gmtime(clock, &tm);
- if(ret != CURLE_OK) {
+ if(ret) {
goto fail;
}
if(!strftime(timestamp, sizeof(timestamp), "%Y%m%dT%H%M%SZ", &tm)) {
+ ret = CURLE_OUT_OF_MEMORY;
goto fail;
}
+
+ ret = make_headers(data, hostname, timestamp, provider1,
+ &date_header, &canonical_headers, &signed_headers);
+ if(ret)
+ goto fail;
+ ret = CURLE_OUT_OF_MEMORY;
+
memcpy(date, timestamp, sizeof(date));
date[sizeof(date) - 1] = 0;
- if(content_type) {
- content_type = strchr(content_type, ':');
- if(!content_type) {
- ret = CURLE_FAILED_INIT;
- goto fail;
- }
- content_type++;
- /* Skip whitespace now */
- while(*content_type == ' ' || *content_type == '\t')
- ++content_type;
-
- canonical_headers = curl_maprintf("content-type:%s\n"
- "host:%s\n"
- "x-%s-date:%s\n",
- content_type,
- hostname,
- provider1_low, timestamp);
- signed_headers = curl_maprintf("content-type;host;x-%s-date",
- provider1_low);
- }
- else {
- canonical_headers = curl_maprintf("host:%s\n"
- "x-%s-date:%s\n",
- hostname,
- provider1_low, timestamp);
- signed_headers = curl_maprintf("host;x-%s-date", provider1_low);
- }
-
- if(!canonical_headers || !signed_headers) {
- goto fail;
+ if(post_data) {
+ if(data->set.postfieldsize < 0)
+ post_data_len = strlen(post_data);
+ else
+ post_data_len = (size_t)data->set.postfieldsize;
}
-
- if(data->set.postfieldsize < 0)
- post_data_len = strlen(post_data);
- else
- post_data_len = (size_t)data->set.postfieldsize;
if(Curl_sha256it(sha_hash, (const unsigned char *) post_data,
- post_data_len)) {
+ post_data_len))
goto fail;
- }
sha256_to_hex(sha_hex, sha_hash, sizeof(sha_hex));
- Curl_http_method(data, conn, &method, &httpreq);
-
- canonical_request =
- curl_maprintf("%s\n" /* HTTPRequestMethod */
- "%s\n" /* CanonicalURI */
- "%s\n" /* CanonicalQueryString */
- "%s\n" /* CanonicalHeaders */
- "%s\n" /* SignedHeaders */
- "%s", /* HashedRequestPayload in hex */
- method,
- data->state.up.path,
- data->state.up.query ? data->state.up.query : "",
- canonical_headers,
- signed_headers,
- sha_hex);
- if(!canonical_request) {
- goto fail;
+ {
+ Curl_HttpReq httpreq;
+ const char *method;
+
+ Curl_http_method(data, conn, &method, &httpreq);
+
+ canonical_request =
+ curl_maprintf("%s\n" /* HTTPRequestMethod */
+ "%s\n" /* CanonicalURI */
+ "%s\n" /* CanonicalQueryString */
+ "%s\n" /* CanonicalHeaders */
+ "%s\n" /* SignedHeaders */
+ "%s", /* HashedRequestPayload in hex */
+ method,
+ data->state.up.path,
+ data->state.up.query ? data->state.up.query : "",
+ Curl_dyn_ptr(&canonical_headers),
+ Curl_dyn_ptr(&signed_headers),
+ sha_hex);
+ if(!canonical_request)
+ goto fail;
}
- request_type = curl_maprintf("%s4_request", provider0_low);
- if(!request_type) {
+ /* provider 0 lowercase */
+ Curl_strntolower(provider0, provider0, strlen(provider0));
+ request_type = curl_maprintf("%s4_request", provider0);
+ if(!request_type)
goto fail;
- }
credential_scope = curl_maprintf("%s/%s/%s/%s",
date, region, service, request_type);
- if(!credential_scope) {
+ if(!credential_scope)
goto fail;
- }
if(Curl_sha256it(sha_hash, (unsigned char *) canonical_request,
- strlen(canonical_request))) {
+ strlen(canonical_request)))
goto fail;
- }
sha256_to_hex(sha_hex, sha_hash, sizeof(sha_hex));
+ /* provider 0 uppercase */
+ Curl_strntoupper(provider0, provider0, strlen(provider0));
+
/*
- * Google allow to use rsa key instead of HMAC, so this code might change
- * In the future, but for now we support only HMAC version
+ * Google allows using RSA key instead of HMAC, so this code might change
+ * in the future. For now we ony support HMAC.
*/
str_to_sign = curl_maprintf("%s4-HMAC-SHA256\n" /* Algorithm */
"%s\n" /* RequestDateTime */
"%s\n" /* CredentialScope */
"%s", /* HashedCanonicalRequest in hex */
- provider0_up,
+ provider0,
timestamp,
credential_scope,
sha_hex);
@@ -346,36 +474,33 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
goto fail;
}
- secret = curl_maprintf("%s4%s", provider0_up, passwd);
- if(!secret) {
+ /* provider 0 uppercase */
+ secret = curl_maprintf("%s4%s", provider0,
+ data->state.aptr.passwd ?
+ data->state.aptr.passwd : "");
+ if(!secret)
goto fail;
- }
- HMAC_SHA256(secret, strlen(secret),
- date, strlen(date), tmp_sign0);
- HMAC_SHA256(tmp_sign0, sizeof(tmp_sign0),
- region, strlen(region), tmp_sign1);
- HMAC_SHA256(tmp_sign1, sizeof(tmp_sign1),
- service, strlen(service), tmp_sign0);
- HMAC_SHA256(tmp_sign0, sizeof(tmp_sign0),
- request_type, strlen(request_type), tmp_sign1);
- HMAC_SHA256(tmp_sign1, sizeof(tmp_sign1),
- str_to_sign, strlen(str_to_sign), tmp_sign0);
+ HMAC_SHA256(secret, strlen(secret), date, strlen(date), sign0);
+ HMAC_SHA256(sign0, sizeof(sign0), region, strlen(region), sign1);
+ HMAC_SHA256(sign1, sizeof(sign1), service, strlen(service), sign0);
+ HMAC_SHA256(sign0, sizeof(sign0), request_type, strlen(request_type), sign1);
+ HMAC_SHA256(sign1, sizeof(sign1), str_to_sign, strlen(str_to_sign), sign0);
- sha256_to_hex(sha_hex, tmp_sign0, sizeof(sha_hex));
+ sha256_to_hex(sha_hex, sign0, sizeof(sha_hex));
+ /* provider 0 uppercase */
auth_headers = curl_maprintf("Authorization: %s4-HMAC-SHA256 "
"Credential=%s/%s, "
"SignedHeaders=%s, "
"Signature=%s\r\n"
- "X-%s-Date: %s\r\n",
- provider0_up,
+ "%s\r\n",
+ provider0,
user,
credential_scope,
- signed_headers,
+ Curl_dyn_ptr(&signed_headers),
sha_hex,
- provider1_mid,
- timestamp);
+ date_header);
if(!auth_headers) {
goto fail;
}
@@ -386,19 +511,14 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
ret = CURLE_OK;
fail:
- free(provider0_low);
- free(provider0_up);
- free(provider1_low);
- free(provider1_mid);
- free(region);
- free(service);
- free(canonical_headers);
- free(signed_headers);
+ Curl_dyn_free(&canonical_headers);
+ Curl_dyn_free(&signed_headers);
free(canonical_request);
free(request_type);
free(credential_scope);
free(str_to_sign);
free(secret);
+ free(date_header);
return ret;
}
diff --git a/lib/http_aws_sigv4.h b/lib/http_aws_sigv4.h
index 886b31440..85755e937 100644
--- a/lib/http_aws_sigv4.h
+++ b/lib/http_aws_sigv4.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/http_chunks.c b/lib/http_chunks.c
index beb969588..0b836851a 100644
--- a/lib/http_chunks.c
+++ b/lib/http_chunks.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -29,7 +31,6 @@
#include "dynbuf.h"
#include "content_encoding.h"
#include "http.h"
-#include "non-ascii.h" /* for Curl_convert_to_network prototype */
#include "strtoofft.h"
#include "warnless.h"
@@ -74,18 +75,7 @@
*/
-#ifdef CURL_DOES_CONVERSIONS
-/* Check for an ASCII hex digit.
- We avoid the use of ISXDIGIT to accommodate non-ASCII hosts. */
-static bool isxdigit_ascii(char digit)
-{
- return (digit >= 0x30 && digit <= 0x39) /* 0-9 */
- || (digit >= 0x41 && digit <= 0x46) /* A-F */
- || (digit >= 0x61 && digit <= 0x66); /* a-f */
-}
-#else
#define isxdigit_ascii(x) Curl_isxdigit(x)
-#endif
void Curl_httpchunk_init(struct Curl_easy *data)
{
@@ -110,7 +100,7 @@ void Curl_httpchunk_init(struct Curl_easy *data)
CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
char *datap,
ssize_t datalen,
- ssize_t *wrotep,
+ ssize_t *wrote,
CURLcode *extrap)
{
CURLcode result = CURLE_OK;
@@ -119,7 +109,6 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
struct SingleRequest *k = &data->req;
size_t piece;
curl_off_t length = (curl_off_t)datalen;
- size_t *wrote = (size_t *)wrotep;
*wrote = 0; /* nothing's written yet */
@@ -136,7 +125,7 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
while(length) {
switch(ch->state) {
case CHUNK_HEX:
- if(isxdigit_ascii(*datap)) {
+ if(ISXDIGIT(*datap)) {
if(ch->hexindex < CHUNK_MAXNUM_LEN) {
ch->hexbuffer[ch->hexindex] = *datap;
datap++;
@@ -157,14 +146,6 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
/* length and datap are unmodified */
ch->hexbuffer[ch->hexindex] = 0;
- /* convert to host encoding before calling strtoul */
- result = Curl_convert_from_network(data, ch->hexbuffer, ch->hexindex);
- if(result) {
- /* Curl_convert_from_network calls failf if unsuccessful */
- /* Treat it as a bad hex character */
- return CHUNKE_ILLEGAL_HEX;
- }
-
if(curlx_strtoofft(ch->hexbuffer, &endptr, 16, &ch->datasize))
return CHUNKE_ILLEGAL_HEX;
ch->state = CHUNK_LF; /* now wait for the CRLF */
@@ -234,21 +215,16 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
if(tr) {
size_t trlen;
- result = Curl_dyn_add(&conn->trailer, (char *)"\x0d\x0a");
+ result = Curl_dyn_addn(&conn->trailer, (char *)STRCONST("\x0d\x0a"));
if(result)
return CHUNKE_OUT_OF_MEMORY;
tr = Curl_dyn_ptr(&conn->trailer);
trlen = Curl_dyn_len(&conn->trailer);
- /* Convert to host encoding before calling Curl_client_write */
- result = Curl_convert_from_network(data, tr, trlen);
- if(result)
- /* Curl_convert_from_network calls failf if unsuccessful */
- /* Treat it as a bad chunk */
- return CHUNKE_BAD_CHUNK;
-
if(!data->set.http_te_skip) {
- result = Curl_client_write(data, CLIENTWRITE_HEADER, tr, trlen);
+ result = Curl_client_write(data,
+ CLIENTWRITE_HEADER|CLIENTWRITE_TRAILER,
+ tr, trlen);
if(result) {
*extrap = result;
return CHUNKE_PASSTHRU_ERROR;
diff --git a/lib/http_chunks.h b/lib/http_chunks.h
index 741a9a3bc..2cf5507c2 100644
--- a/lib/http_chunks.h
+++ b/lib/http_chunks.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
struct connectdata;
diff --git a/lib/http_digest.c b/lib/http_digest.c
index 34bb5a8e0..a71c6b7cf 100644
--- a/lib/http_digest.c
+++ b/lib/http_digest.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -56,11 +58,11 @@ CURLcode Curl_input_digest(struct Curl_easy *data,
digest = &data->state.digest;
}
- if(!checkprefix("Digest", header) || !ISSPACE(header[6]))
+ if(!checkprefix("Digest", header) || !ISBLANK(header[6]))
return CURLE_BAD_CONTENT_ENCODING;
header += strlen("Digest");
- while(*header && ISSPACE(*header))
+ while(*header && ISBLANK(*header))
header++;
return Curl_auth_decode_digest_http_message(header, digest);
diff --git a/lib/http_digest.h b/lib/http_digest.h
index 89438d1a1..eea90b743 100644
--- a/lib/http_digest.h
+++ b/lib/http_digest.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/http_negotiate.c b/lib/http_negotiate.c
index 5f764dc13..5909f85b0 100644
--- a/lib/http_negotiate.c
+++ b/lib/http_negotiate.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -82,7 +84,7 @@ CURLcode Curl_input_negotiate(struct Curl_easy *data, struct connectdata *conn,
/* Obtain the input token, if any */
header += strlen("Negotiate");
- while(*header && ISSPACE(*header))
+ while(*header && ISBLANK(*header))
header++;
len = strlen(header);
@@ -161,7 +163,7 @@ CURLcode Curl_output_negotiate(struct Curl_easy *data,
return result;
}
- result = Curl_auth_create_spnego_message(data, neg_ctx, &base64, &len);
+ result = Curl_auth_create_spnego_message(neg_ctx, &base64, &len);
if(result)
return result;
diff --git a/lib/http_negotiate.h b/lib/http_negotiate.h
index 2640a3ee0..6e2096c69 100644
--- a/lib/http_negotiate.h
+++ b/lib/http_negotiate.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
diff --git a/lib/http_ntlm.c b/lib/http_ntlm.c
index a6526db9f..5a6a97790 100644
--- a/lib/http_ntlm.c
+++ b/lib/http_ntlm.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -27,7 +29,7 @@
/*
* NTLM details:
*
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
* https://www.innovation.ch/java/ntlm.html
*/
@@ -213,8 +215,7 @@ CURLcode Curl_output_ntlm(struct Curl_easy *data, bool proxy)
ntlm, &ntlmmsg);
if(!result) {
DEBUGASSERT(Curl_bufref_len(&ntlmmsg) != 0);
- result = Curl_base64_encode(data,
- (const char *) Curl_bufref_ptr(&ntlmmsg),
+ result = Curl_base64_encode((const char *) Curl_bufref_ptr(&ntlmmsg),
Curl_bufref_len(&ntlmmsg), &base64, &len);
if(!result) {
free(*allocuserpwd);
@@ -233,8 +234,7 @@ CURLcode Curl_output_ntlm(struct Curl_easy *data, bool proxy)
result = Curl_auth_create_ntlm_type3_message(data, userp, passwdp,
ntlm, &ntlmmsg);
if(!result && Curl_bufref_len(&ntlmmsg)) {
- result = Curl_base64_encode(data,
- (const char *) Curl_bufref_ptr(&ntlmmsg),
+ result = Curl_base64_encode((const char *) Curl_bufref_ptr(&ntlmmsg),
Curl_bufref_len(&ntlmmsg), &base64, &len);
if(!result) {
free(*allocuserpwd);
diff --git a/lib/http_ntlm.h b/lib/http_ntlm.h
index 5b4fa00ba..cec63b82c 100644
--- a/lib/http_ntlm.h
+++ b/lib/http_ntlm.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/http_proxy.c b/lib/http_proxy.c
index e13f485a7..cc20b3a80 100644
--- a/lib/http_proxy.c
+++ b/lib/http_proxy.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -35,7 +37,6 @@
#include "url.h"
#include "select.h"
#include "progress.h"
-#include "non-ascii.h"
#include "connect.h"
#include "curlx.h"
#include "vtls/vtls.h"
@@ -173,7 +174,7 @@ static CURLcode connect_init(struct Curl_easy *data, bool reinit)
s = calloc(1, sizeof(struct http_connect_state));
if(!s)
return CURLE_OUT_OF_MEMORY;
- infof(data, "allocate connect buffer!");
+ infof(data, "allocate connect buffer");
conn->connect_state = s;
Curl_dyn_init(&s->rcvbuf, DYN_PROXY_CONNECT_HEADERS);
@@ -211,17 +212,15 @@ void Curl_connect_done(struct Curl_easy *data)
Curl_dyn_free(&s->rcvbuf);
Curl_dyn_free(&s->req);
- /* restore the protocol pointer, if not already done */
- if(s->prot_save)
- data->req.p.http = s->prot_save;
- s->prot_save = NULL;
+ /* restore the protocol pointer */
+ data->req.p.http = s->prot_save;
data->info.httpcode = 0; /* clear it as it might've been used for the
proxy */
data->req.ignorebody = FALSE;
#ifdef USE_HYPER
data->state.hconnect = FALSE;
#endif
- infof(data, "CONNECT phase completed!");
+ infof(data, "CONNECT phase completed");
}
}
@@ -245,7 +244,7 @@ static CURLcode CONNECT_host(struct Curl_easy *data,
if(!hostheader)
return CURLE_OUT_OF_MEMORY;
- if(!Curl_checkProxyheaders(data, conn, "Host")) {
+ if(!Curl_checkProxyheaders(data, conn, STRCONST("Host"))) {
host = aprintf("Host: %s\r\n", hostheader);
if(!host) {
free(hostheader);
@@ -324,25 +323,29 @@ static CURLcode CONNECT(struct Curl_easy *data,
data->state.aptr.proxyuserpwd?
data->state.aptr.proxyuserpwd:"");
- if(!result && !Curl_checkProxyheaders(data, conn, "User-Agent") &&
+ if(!result && !Curl_checkProxyheaders(data,
+ conn, STRCONST("User-Agent")) &&
data->set.str[STRING_USERAGENT])
result = Curl_dyn_addf(req, "User-Agent: %s\r\n",
data->set.str[STRING_USERAGENT]);
- if(!result && !Curl_checkProxyheaders(data, conn, "Proxy-Connection"))
- result = Curl_dyn_add(req, "Proxy-Connection: Keep-Alive\r\n");
+ if(!result && !Curl_checkProxyheaders(data, conn,
+ STRCONST("Proxy-Connection")))
+ result = Curl_dyn_addn(req,
+ STRCONST("Proxy-Connection: Keep-Alive\r\n"));
if(!result)
result = Curl_add_custom_headers(data, TRUE, req);
if(!result)
/* CRLF terminate the request */
- result = Curl_dyn_add(req, "\r\n");
+ result = Curl_dyn_addn(req, STRCONST("\r\n"));
if(!result) {
/* Send the connect request to the proxy */
result = Curl_buffer_send(req, data, &data->info.request_size, 0,
sockindex);
+ s->headerlines = 0;
}
if(result)
failf(data, "Failed sending CONNECT to proxy");
@@ -388,8 +391,8 @@ static CURLcode CONNECT(struct Curl_easy *data,
if(!result)
/* send to debug callback! */
- result = Curl_debug(data, CURLINFO_HEADER_OUT,
- k->upload_fromhere, bytes_written);
+ Curl_debug(data, CURLINFO_HEADER_OUT,
+ k->upload_fromhere, bytes_written);
s->nsend -= bytes_written;
k->upload_fromhere += bytes_written;
@@ -470,7 +473,7 @@ static CURLcode CONNECT(struct Curl_easy *data,
}
if(Curl_dyn_addn(&s->rcvbuf, &byte, 1)) {
- failf(data, "CONNECT response too large!");
+ failf(data, "CONNECT response too large");
return CURLE_RECV_ERROR;
}
@@ -478,23 +481,18 @@ static CURLcode CONNECT(struct Curl_easy *data,
if(byte != 0x0a)
continue;
+ s->headerlines++;
linep = Curl_dyn_ptr(&s->rcvbuf);
perline = Curl_dyn_len(&s->rcvbuf); /* amount of bytes in this line */
- /* convert from the network encoding */
- result = Curl_convert_from_network(data, linep, perline);
- /* Curl_convert_from_network calls failf if unsuccessful */
- if(result)
- return result;
-
/* output debug if that is requested */
Curl_debug(data, CURLINFO_HEADER_IN, linep, perline);
if(!data->set.suppress_connect_headers) {
/* send the header to the callback */
- int writetype = CLIENTWRITE_HEADER;
- if(data->set.include_header)
- writetype |= CLIENTWRITE_BODY;
+ int writetype = CLIENTWRITE_HEADER | CLIENTWRITE_CONNECT |
+ (data->set.include_header ? CLIENTWRITE_BODY : 0) |
+ (s->headerlines == 1 ? CLIENTWRITE_STATUS : 0);
result = Curl_client_write(data, writetype, linep, perline);
if(result)
@@ -596,7 +594,8 @@ static CURLcode CONNECT(struct Curl_easy *data,
strlen("Content-Length:"), NULL, 10, &s->cl);
}
}
- else if(Curl_compareheader(linep, "Connection:", "close"))
+ else if(Curl_compareheader(linep,
+ STRCONST("Connection:"), STRCONST("close")))
s->close_connection = TRUE;
else if(checkprefix("Transfer-Encoding:", linep)) {
if(k->httpcode/100 == 2) {
@@ -607,14 +606,17 @@ static CURLcode CONNECT(struct Curl_easy *data,
"CONNECT %03d response", k->httpcode);
}
else if(Curl_compareheader(linep,
- "Transfer-Encoding:", "chunked")) {
+ STRCONST("Transfer-Encoding:"),
+ STRCONST("chunked"))) {
infof(data, "CONNECT responded chunked");
s->chunked_encoding = TRUE;
/* init our chunky engine */
Curl_httpchunk_init(data);
}
}
- else if(Curl_compareheader(linep, "Proxy-Connection:", "close"))
+ else if(Curl_compareheader(linep,
+ STRCONST("Proxy-Connection:"),
+ STRCONST("close")))
s->close_connection = TRUE;
else if(2 == sscanf(linep, "HTTP/1.%d %d",
&subversion,
@@ -765,6 +767,9 @@ static CURLcode CONNECT(struct Curl_easy *data,
}
options = hyper_clientconn_options_new();
+ hyper_clientconn_options_set_preserve_header_case(options, 1);
+ hyper_clientconn_options_set_preserve_header_order(options, 1);
+
if(!options) {
failf(data, "Couldn't create hyper client options");
result = CURLE_OUT_OF_MEMORY;
@@ -877,7 +882,7 @@ static CURLcode CONNECT(struct Curl_easy *data,
goto error;
}
- if(!Curl_checkProxyheaders(data, conn, "User-Agent") &&
+ if(!Curl_checkProxyheaders(data, conn, STRCONST("User-Agent")) &&
data->set.str[STRING_USERAGENT]) {
struct dynbuf ua;
Curl_dyn_init(&ua, DYN_HTTP_REQUEST);
@@ -891,7 +896,7 @@ static CURLcode CONNECT(struct Curl_easy *data,
Curl_dyn_free(&ua);
}
- if(!Curl_checkProxyheaders(data, conn, "Proxy-Connection")) {
+ if(!Curl_checkProxyheaders(data, conn, STRCONST("Proxy-Connection"))) {
result = Curl_hyper_header(data, headers,
"Proxy-Connection: Keep-Alive");
if(result)
@@ -962,6 +967,13 @@ static CURLcode CONNECT(struct Curl_easy *data,
break;
}
+ if(conn->bits.close && data->req.newurl) {
+ /* Connection closed by server. Don't use it anymore */
+ Curl_closesocket(data, conn, conn->sock[sockindex]);
+ conn->sock[sockindex] = CURL_SOCKET_BAD;
+ break;
+ }
+
/* 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
* is complete we start over in INIT state */
diff --git a/lib/http_proxy.h b/lib/http_proxy.h
index 2820e1184..1e650ee57 100644
--- a/lib/http_proxy.h
+++ b/lib/http_proxy.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -59,6 +61,7 @@ struct http_connect_state {
struct dynbuf rcvbuf;
struct dynbuf req;
size_t nsend;
+ size_t headerlines;
enum keeponval {
KEEPON_DONE,
KEEPON_CONNECT,
diff --git a/lib/idn_win32.c b/lib/idn_win32.c
index 1d475a4ef..2433d927e 100644
--- a/lib/idn_win32.c
+++ b/lib/idn_win32.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -65,10 +67,10 @@ WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags,
#define IDN_MAX_LENGTH 255
-bool curl_win32_idn_to_ascii(const char *in, char **out);
-bool curl_win32_ascii_to_idn(const char *in, char **out);
+bool Curl_win32_idn_to_ascii(const char *in, char **out);
+bool Curl_win32_ascii_to_idn(const char *in, char **out);
-bool curl_win32_idn_to_ascii(const char *in, char **out)
+bool Curl_win32_idn_to_ascii(const char *in, char **out)
{
bool success = FALSE;
@@ -76,18 +78,22 @@ bool curl_win32_idn_to_ascii(const char *in, char **out)
if(in_w) {
wchar_t punycode[IDN_MAX_LENGTH];
int chars = IdnToAscii(0, in_w, -1, punycode, IDN_MAX_LENGTH);
- free(in_w);
+ curlx_unicodefree(in_w);
if(chars) {
- *out = curlx_convert_wchar_to_UTF8(punycode);
- if(*out)
- success = TRUE;
+ char *mstr = curlx_convert_wchar_to_UTF8(punycode);
+ if(mstr) {
+ *out = strdup(mstr);
+ curlx_unicodefree(mstr);
+ if(*out)
+ success = TRUE;
+ }
}
}
return success;
}
-bool curl_win32_ascii_to_idn(const char *in, char **out)
+bool Curl_win32_ascii_to_idn(const char *in, char **out)
{
bool success = FALSE;
@@ -97,11 +103,15 @@ bool curl_win32_ascii_to_idn(const char *in, char **out)
wchar_t unicode[IDN_MAX_LENGTH];
int chars = IdnToUnicode(0, in_w, curlx_uztosi(in_len),
unicode, IDN_MAX_LENGTH);
- free(in_w);
+ curlx_unicodefree(in_w);
if(chars) {
- *out = curlx_convert_wchar_to_UTF8(unicode);
- if(*out)
- success = TRUE;
+ char *mstr = curlx_convert_wchar_to_UTF8(unicode);
+ if(mstr) {
+ *out = strdup(mstr);
+ curlx_unicodefree(mstr);
+ if(*out)
+ success = TRUE;
+ }
}
}
diff --git a/lib/if2ip.c b/lib/if2ip.c
index 132b3eeee..c29194878 100644
--- a/lib/if2ip.c
+++ b/lib/if2ip.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -60,12 +62,10 @@
/* ------------------------------------------------------------------ */
+#ifdef ENABLE_IPV6
/* 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 *)(void *) sa;
const unsigned char *b = sa6->sin6_addr.s6_addr;
@@ -88,27 +88,25 @@ unsigned int Curl_ipv6_scope(const struct sockaddr *sa)
break;
}
}
-#endif
-
return IPV6_SCOPE_GLOBAL;
}
-
+#endif
#if defined(HAVE_GETIFADDRS)
-if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
- unsigned int local_scope_id, const char *interf,
+if2ip_result_t Curl_if2ip(int af,
+#ifdef ENABLE_IPV6
+ unsigned int remote_scope,
+ unsigned int local_scope_id,
+#endif
+ 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;
-#endif
-
-#if !defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID) || \
- !defined(ENABLE_IPV6)
+#if defined(ENABLE_IPV6) && \
+ !defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
(void) local_scope_id;
#endif
@@ -181,8 +179,12 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
#elif defined(HAVE_IOCTL_SIOCGIFADDR)
-if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
- unsigned int local_scope_id, const char *interf,
+if2ip_result_t Curl_if2ip(int af,
+#ifdef ENABLE_IPV6
+ unsigned int remote_scope,
+ unsigned int local_scope_id,
+#endif
+ const char *interf,
char *buf, int buf_size)
{
struct ifreq req;
@@ -192,8 +194,10 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
size_t len;
const char *r;
+#ifdef ENABLE_IPV6
(void)remote_scope;
(void)local_scope_id;
+#endif
if(!interf || (af != AF_INET))
return IF2IP_NOT_FOUND;
@@ -230,13 +234,19 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
#else
-if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
- unsigned int local_scope_id, const char *interf,
+if2ip_result_t Curl_if2ip(int af,
+#ifdef ENABLE_IPV6
+ unsigned int remote_scope,
+ unsigned int local_scope_id,
+#endif
+ const char *interf,
char *buf, int buf_size)
{
(void) af;
+#ifdef ENABLE_IPV6
(void) remote_scope;
(void) local_scope_id;
+#endif
(void) interf;
(void) buf;
(void) buf_size;
diff --git a/lib/if2ip.h b/lib/if2ip.h
index e074e476d..5d15459e9 100644
--- a/lib/if2ip.h
+++ b/lib/if2ip.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2020, 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -30,7 +32,11 @@
#define IPV6_SCOPE_UNIQUELOCAL 3 /* Unique local */
#define IPV6_SCOPE_NODELOCAL 4 /* Loopback. */
+#ifdef ENABLE_IPV6
unsigned int Curl_ipv6_scope(const struct sockaddr *sa);
+#else
+#define Curl_ipv6_scope(x) 0
+#endif
typedef enum {
IF2IP_NOT_FOUND = 0, /* Interface not found */
@@ -38,8 +44,12 @@ typedef enum {
IF2IP_FOUND = 2 /* The address has been stored in "buf" */
} if2ip_result_t;
-if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
- unsigned int local_scope_id, const char *interf,
+if2ip_result_t Curl_if2ip(int af,
+#ifdef ENABLE_IPV6
+ unsigned int remote_scope,
+ unsigned int local_scope_id,
+#endif
+ const char *interf,
char *buf, int buf_size);
#ifdef __INTERIX
diff --git a/lib/imap.c b/lib/imap.c
index 958ad1456..ffa08bf7a 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC2195 CRAM-MD5 authentication
* RFC2595 Using TLS with IMAP, POP3 and ACAP
* RFC2831 DIGEST-MD5 authentication
@@ -81,6 +83,7 @@
#include "bufref.h"
#include "curl_sasl.h"
#include "warnless.h"
+#include "curl_ctype.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -507,7 +510,7 @@ static CURLcode imap_perform_login(struct Curl_easy *data,
/* Check we have a username and password to authenticate with and end the
connect phase if we don't */
- if(!conn->bits.user_passwd) {
+ if(!data->state.aptr.user) {
state(data, IMAP_STOP);
return result;
@@ -608,7 +611,7 @@ static CURLcode imap_perform_authentication(struct Curl_easy *data,
/* Check if already authenticated OR if there is enough data to authenticate
with and end the connect phase if we don't */
if(imapc->preauth ||
- !Curl_sasl_can_authenticate(&imapc->sasl, conn)) {
+ !Curl_sasl_can_authenticate(&imapc->sasl, data)) {
state(data, IMAP_STOP);
return result;
}
@@ -624,7 +627,7 @@ static CURLcode imap_perform_authentication(struct Curl_easy *data,
result = imap_perform_login(data, conn);
else {
/* Other mechanisms not supported */
- infof(data, "No known authentication mechanisms supported!");
+ infof(data, "No known authentication mechanisms supported");
result = CURLE_LOGIN_DENIED;
}
}
@@ -777,7 +780,7 @@ static CURLcode imap_perform_append(struct Curl_easy *data)
NULL, MIMESTRATEGY_MAIL);
if(!result)
- if(!Curl_checkheaders(data, "Mime-Version"))
+ if(!Curl_checkheaders(data, STRCONST("Mime-Version")))
result = Curl_mime_add_header(&data->set.mimepost.curlheaders,
"Mime-Version: 1.0");
@@ -874,7 +877,7 @@ static CURLcode imap_state_servergreet_resp(struct Curl_easy *data,
/* PREAUTH */
struct imap_conn *imapc = &conn->proto.imapc;
imapc->preauth = TRUE;
- infof(data, "PREAUTH connection, already authenticated!");
+ infof(data, "PREAUTH connection, already authenticated");
}
else if(imapcode != IMAP_RESP_OK) {
failf(data, "Got unexpected imap-server response");
@@ -1883,22 +1886,17 @@ static char *imap_atom(const char *str, bool escape_only)
*/
static bool imap_is_bchar(char ch)
{
+ /* Performing the alnum check with this macro is faster because of ASCII
+ arithmetic */
+ if(ISALNUM(ch))
+ return true;
+
switch(ch) {
/* bchar */
case ':': case '@': case '/':
/* bchar -> achar */
case '&': case '=':
- /* bchar -> achar -> uchar -> unreserved */
- case '0': case '1': case '2': case '3': case '4': case '5': case '6':
- case '7': case '8': case '9':
- case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
- case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
- case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U':
- case 'V': case 'W': case 'X': case 'Y': case 'Z':
- case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g':
- case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
- case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u':
- case 'v': case 'w': case 'x': case 'y': case 'z':
+ /* bchar -> achar -> uchar -> unreserved (without alphanumeric) */
case '-': case '.': case '_': case '~':
/* bchar -> achar -> uchar -> sub-delims-sh */
case '!': case '$': case '\'': case '(': case ')': case '*':
@@ -1986,7 +1984,7 @@ static CURLcode imap_parse_url_path(struct Curl_easy *data)
if(end > begin && end[-1] == '/')
end--;
- result = Curl_urldecode(data, begin, end - begin, &imap->mailbox, NULL,
+ result = Curl_urldecode(begin, end - begin, &imap->mailbox, NULL,
REJECT_CTRL);
if(result)
return result;
@@ -2009,7 +2007,7 @@ static CURLcode imap_parse_url_path(struct Curl_easy *data)
return CURLE_URL_MALFORMAT;
/* Decode the name parameter */
- result = Curl_urldecode(data, begin, ptr - begin, &name, NULL,
+ result = Curl_urldecode(begin, ptr - begin, &name, NULL,
REJECT_CTRL);
if(result)
return result;
@@ -2020,7 +2018,7 @@ static CURLcode imap_parse_url_path(struct Curl_easy *data)
ptr++;
/* Decode the value parameter */
- result = Curl_urldecode(data, begin, ptr - begin, &value, &valuelen,
+ result = Curl_urldecode(begin, ptr - begin, &value, &valuelen,
REJECT_CTRL);
if(result) {
free(name);
@@ -2108,7 +2106,7 @@ static CURLcode imap_parse_custom_request(struct Curl_easy *data)
if(custom) {
/* URL decode the custom request */
- result = Curl_urldecode(data, custom, 0, &imap->custom, NULL, REJECT_CTRL);
+ result = Curl_urldecode(custom, 0, &imap->custom, NULL, REJECT_CTRL);
/* Extract the parameters if specified */
if(!result) {
diff --git a/lib/imap.h b/lib/imap.h
index ef6515d8c..43cc1e98f 100644
--- a/lib/imap.h
+++ b/lib/imap.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "pingpong.h"
diff --git a/lib/inet_ntop.c b/lib/inet_ntop.c
index b5f9b808a..024f8da36 100644
--- a/lib/inet_ntop.c
+++ b/lib/inet_ntop.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 1996-2021 Internet Software Consortium.
+ * Copyright (C) 1996-2022 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -13,6 +13,8 @@
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * SPDX-License-Identifier: ISC
*/
/*
* Original code by Paul Vixie. "curlified" by Gisle Vanem.
diff --git a/lib/inet_ntop.h b/lib/inet_ntop.h
index 067632aae..18fbd8ba3 100644
--- a/lib/inet_ntop.h
+++ b/lib/inet_ntop.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/inet_pton.c b/lib/inet_pton.c
index ada57af28..47fb77834 100644
--- a/lib/inet_pton.c
+++ b/lib/inet_pton.c
@@ -1,6 +1,6 @@
/* This is from the BIND 4.9.4 release, modified to compile by itself */
-/* Copyright (c) 1996 - 2021 by Internet Software Consortium.
+/* Copyright (c) 2003 - 2022 by Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -14,6 +14,8 @@
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
+ *
+ * SPDX-License-Identifier: ISC
*/
#include "curl_setup.h"
diff --git a/lib/inet_pton.h b/lib/inet_pton.h
index ec1237309..92ae93ea1 100644
--- a/lib/inet_pton.h
+++ b/lib/inet_pton.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/krb5.c b/lib/krb5.c
index 5edd34cbd..517491c46 100644
--- a/lib/krb5.c
+++ b/lib/krb5.c
@@ -2,9 +2,11 @@
*
* Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
- * Copyright (c) 2004 - 2021 Daniel Stenberg
+ * Copyright (c) 2004 - 2022 Daniel Stenberg
* All rights reserved.
*
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -47,7 +49,6 @@
#include "sendf.h"
#include "curl_krb5.h"
#include "warnless.h"
-#include "non-ascii.h"
#include "strcase.h"
#include "strdup.h"
@@ -81,11 +82,6 @@ static CURLcode ftpsend(struct Curl_easy *data, struct connectdata *conn,
write_len += 2;
bytes_written = 0;
- result = Curl_convert_to_network(data, s, write_len);
- /* Curl_convert_to_network calls failf if unsuccessful */
- if(result)
- return result;
-
for(;;) {
#ifdef HAVE_GSSAPI
conn->data_prot = PROT_CMD;
@@ -146,11 +142,8 @@ krb5_decode(void *app_data, void *buf, int len,
enc.value = buf;
enc.length = len;
maj = gss_unwrap(&min, *context, &enc, &dec, NULL, NULL);
- if(maj != GSS_S_COMPLETE) {
- if(len >= 4)
- strcpy(buf, "599 ");
+ if(maj != GSS_S_COMPLETE)
return -1;
- }
memcpy(buf, dec.value, dec.length);
len = curlx_uztosi(dec.length);
@@ -298,7 +291,7 @@ krb5_auth(void *app_data, struct Curl_easy *data, struct connectdata *conn)
if(output_buffer.length) {
char *cmd;
- result = Curl_base64_encode(data, (char *)output_buffer.value,
+ result = Curl_base64_encode((char *)output_buffer.value,
output_buffer.length, &p, &base64_sz);
if(result) {
infof(data, "base64-encoding: %s", curl_easy_strerror(result));
@@ -512,6 +505,7 @@ static CURLcode read_data(struct connectdata *conn,
{
int len;
CURLcode result;
+ int nread;
result = socket_read(fd, &len, sizeof(len));
if(result)
@@ -520,7 +514,10 @@ static CURLcode read_data(struct connectdata *conn,
if(len) {
/* only realloc if there was a length */
len = ntohl(len);
- buf->data = Curl_saferealloc(buf->data, len);
+ if(len > CURL_MAX_INPUT_LENGTH)
+ len = 0;
+ else
+ buf->data = Curl_saferealloc(buf->data, len);
}
if(!len || !buf->data)
return CURLE_OUT_OF_MEMORY;
@@ -528,8 +525,11 @@ static CURLcode read_data(struct connectdata *conn,
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);
+ nread = conn->mech->decode(conn->app_data, buf->data, len,
+ conn->data_prot, conn);
+ if(nread < 0)
+ return CURLE_RECV_ERROR;
+ buf->size = (size_t)nread;
buf->index = 0;
return CURLE_OK;
}
@@ -612,7 +612,7 @@ static void do_sec_send(struct Curl_easy *data, struct connectdata *conn,
return; /* error */
if(iscmd) {
- error = Curl_base64_encode(data, buffer, curlx_sitouz(bytes),
+ error = Curl_base64_encode(buffer, curlx_sitouz(bytes),
&cmd_buffer, &cmd_size);
if(error) {
free(buffer);
diff --git a/lib/ldap.c b/lib/ldap.c
index 3154db5cf..b07334904 100644
--- a/lib/ldap.c
+++ b/lib/ldap.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -35,6 +37,18 @@
* OpenLDAP library versions, USE_OPENLDAP shall not be defined.
*/
+/* Wincrypt must be included before anything that could include OpenSSL. */
+#if defined(USE_WIN32_CRYPTO)
+#include <wincrypt.h>
+/* Undefine wincrypt conflicting symbols for BoringSSL. */
+#undef X509_NAME
+#undef X509_EXTENSIONS
+#undef PKCS7_ISSUER_AND_SERIAL
+#undef PKCS7_SIGNER_INFO
+#undef OCSP_REQUEST
+#undef OCSP_RESPONSE
+#endif
+
#ifdef USE_WIN32_LDAP /* Use Windows LDAP implementation. */
# include <winldap.h>
# ifndef LDAP_VENDOR_NAME
@@ -306,8 +320,8 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
rc = _ldap_url_parse(data, conn, &ludp);
#endif
if(rc) {
- failf(data, "LDAP local: %s", ldap_err2string(rc));
- result = CURLE_LDAP_INVALID_URL;
+ failf(data, "Bad LDAP URL: %s", ldap_err2string(rc));
+ result = CURLE_URL_MALFORMAT;
goto quit;
}
@@ -328,7 +342,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
host = conn->host.name;
#endif
- if(conn->bits.user_passwd) {
+ if(data->state.aptr.user) {
user = conn->user;
passwd = conn->passwd;
}
@@ -342,7 +356,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
#ifdef HAVE_LDAP_SSL
#ifdef USE_WIN32_LDAP
/* Win32 LDAP SDK doesn't support insecure mode without CA! */
- server = ldap_sslinit(host, (int)conn->port, 1);
+ server = ldap_sslinit(host, conn->port, 1);
ldap_set_option(server, LDAP_OPT_SSL, LDAP_OPT_ON);
#else
int ldap_option;
@@ -361,7 +375,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
(strcasecompare(data->set.ssl.cert_type, "DER")))
cert_type = LDAPSSL_CERT_FILETYPE_DER;
if(!ldap_ca) {
- failf(data, "LDAP local: ERROR %s CA cert not set!",
+ failf(data, "LDAP local: ERROR %s CA cert not set",
(cert_type == LDAPSSL_CERT_FILETYPE_DER ? "DER" : "PEM"));
result = CURLE_SSL_CERTPROBLEM;
goto quit;
@@ -388,9 +402,9 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
result = CURLE_SSL_CERTPROBLEM;
goto quit;
}
- server = ldapssl_init(host, (int)conn->port, 1);
+ server = ldapssl_init(host, conn->port, 1);
if(!server) {
- failf(data, "LDAP local: Cannot connect to %s:%ld",
+ failf(data, "LDAP local: Cannot connect to %s:%u",
conn->host.dispname, conn->port);
result = CURLE_COULDNT_CONNECT;
goto quit;
@@ -400,12 +414,12 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
/* OpenLDAP SDK supports BASE64 files. */
if((data->set.ssl.cert_type) &&
(!strcasecompare(data->set.ssl.cert_type, "PEM"))) {
- failf(data, "LDAP local: ERROR OpenLDAP only supports PEM cert-type!");
+ failf(data, "LDAP local: ERROR OpenLDAP only supports PEM cert-type");
result = CURLE_SSL_CERTPROBLEM;
goto quit;
}
if(!ldap_ca) {
- failf(data, "LDAP local: ERROR PEM CA cert not set!");
+ failf(data, "LDAP local: ERROR PEM CA cert not set");
result = CURLE_SSL_CERTPROBLEM;
goto quit;
}
@@ -429,9 +443,9 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
result = CURLE_SSL_CERTPROBLEM;
goto quit;
}
- server = ldap_init(host, (int)conn->port);
+ server = ldap_init(host, conn->port);
if(!server) {
- failf(data, "LDAP local: Cannot connect to %s:%ld",
+ failf(data, "LDAP local: Cannot connect to %s:%u",
conn->host.dispname, conn->port);
result = CURLE_COULDNT_CONNECT;
goto quit;
@@ -470,9 +484,9 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
goto quit;
}
else {
- server = ldap_init(host, (int)conn->port);
+ server = ldap_init(host, conn->port);
if(!server) {
- failf(data, "LDAP local: Cannot connect to %s:%ld",
+ failf(data, "LDAP local: Cannot connect to %s:%u",
conn->host.dispname, conn->port);
result = CURLE_COULDNT_CONNECT;
goto quit;
@@ -636,11 +650,8 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
if((attr_len > 7) &&
(strcmp(";binary", (char *) attr + (attr_len - 7)) == 0)) {
/* Binary attribute, encode to base64. */
- result = Curl_base64_encode(data,
- vals[i]->bv_val,
- vals[i]->bv_len,
- &val_b64,
- &val_b64_sz);
+ result = Curl_base64_encode(vals[i]->bv_val, vals[i]->bv_len,
+ &val_b64, &val_b64_sz);
if(result) {
ldap_value_free_len(vals);
FREE_ON_WINLDAP(attr);
@@ -870,7 +881,7 @@ static int _ldap_url_parse2(struct Curl_easy *data,
LDAP_TRACE(("DN '%s'\n", dn));
/* Unescape the DN */
- result = Curl_urldecode(data, dn, 0, &unescaped, NULL, REJECT_ZERO);
+ result = Curl_urldecode(dn, 0, &unescaped, NULL, REJECT_ZERO);
if(result) {
rc = LDAP_NO_MEMORY;
@@ -935,7 +946,7 @@ static int _ldap_url_parse2(struct Curl_easy *data,
LDAP_TRACE(("attr[%zu] '%s'\n", i, attributes[i]));
/* Unescape the attribute */
- result = Curl_urldecode(data, attributes[i], 0, &unescaped, NULL,
+ result = Curl_urldecode(attributes[i], 0, &unescaped, NULL,
REJECT_ZERO);
if(result) {
free(attributes);
@@ -1005,7 +1016,7 @@ static int _ldap_url_parse2(struct Curl_easy *data,
LDAP_TRACE(("filter '%s'\n", filter));
/* Unescape the filter */
- result = Curl_urldecode(data, filter, 0, &unescaped, NULL, REJECT_ZERO);
+ result = Curl_urldecode(filter, 0, &unescaped, NULL, REJECT_ZERO);
if(result) {
rc = LDAP_NO_MEMORY;
diff --git a/lib/libcurl.plist b/lib/libcurl.plist
index 0e5311b5a..fee5827e4 100644
--- a/lib/libcurl.plist
+++ b/lib/libcurl.plist
@@ -15,7 +15,7 @@
<string>se.curl.libcurl</string>
<key>CFBundleVersion</key>
- <string>7.81.0</string>
+ <string>7.86.0-DEV</string>
<key>CFBundleName</key>
<string>libcurl</string>
@@ -27,9 +27,9 @@
<string>????</string>
<key>CFBundleShortVersionString</key>
- <string>libcurl 7.81.0</string>
+ <string>libcurl 7.86.0-DEV</string>
<key>CFBundleGetInfoString</key>
- <string>libcurl.plist 7.81.0</string>
+ <string>libcurl.plist 7.86.0-DEV</string>
</dict>
</plist>
diff --git a/lib/libcurl.plist.in b/lib/libcurl.plist.in
new file mode 100644
index 000000000..d2e6492f6
--- /dev/null
+++ b/lib/libcurl.plist.in
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+
+ <key>CFBundleExecutable</key>
+ <string>curl</string>
+
+ <key>CFBundleIdentifier</key>
+ <string>se.curl.libcurl</string>
+
+ <key>CFBundleVersion</key>
+ <string>@CURL_PLIST_VERSION@</string>
+
+ <key>CFBundleName</key>
+ <string>libcurl</string>
+
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+
+ <key>CFBundleSignature</key>
+ <string>????</string>
+
+ <key>CFBundleShortVersionString</key>
+ <string>libcurl @CURL_PLIST_VERSION@</string>
+
+ <key>CFBundleGetInfoString</key>
+ <string>libcurl.plist @CURL_PLIST_VERSION@</string>
+</dict>
+</plist>
diff --git a/lib/libcurl.rc b/lib/libcurl.rc
index fde6c8cae..23134a710 100644
--- a/lib/libcurl.rc
+++ b/lib/libcurl.rc
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <winver.h>
#include "../include/curl/curlver.h"
diff --git a/lib/llist.c b/lib/llist.c
index e78da7da8..fa2d366cb 100644
--- a/lib/llist.c
+++ b/lib/llist.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/llist.h b/lib/llist.h
index ceae2dd1b..2fcb91ca5 100644
--- a/lib/llist.h
+++ b/lib/llist.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/makefile.amiga b/lib/makefile.amiga
index 698a8f4de..d5c8fe615 100644
--- a/lib/makefile.amiga
+++ b/lib/makefile.amiga
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# libcurl Makefile for AmigaOS ...
@@ -29,7 +31,7 @@ ATCPSDKI= /GG/netinclude
CC = m68k-amigaos-gcc
-CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall
+CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall -DUSE_OPENSSL -DHAVE_LIBZ
include Makefile.inc
OBJS = $(CSOURCES:.c=.o)
diff --git a/lib/makefile.dj b/lib/makefile.dj
index ef1a24a7f..bb95f2bbf 100644
--- a/lib/makefile.dj
+++ b/lib/makefile.dj
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2003 - 2021, Gisle Vanem <gvanem@yahoo.no>.
+# Copyright (C) 2003 - 2022, Gisle Vanem <gvanem@yahoo.no>.
# Copyright (C) 2003 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
#
diff --git a/lib/md4.c b/lib/md4.c
index 117cce4fd..e976fe7bd 100644
--- a/lib/md4.c
+++ b/lib/md4.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -30,7 +32,8 @@
#ifdef USE_OPENSSL
#include <openssl/opensslconf.h>
-#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3)
+#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
+ !defined(USE_AMISSL)
/* OpenSSL 3.0.0 marks the MD4 functions as deprecated */
#define OPENSSL_NO_MD4
#endif
@@ -39,7 +42,7 @@
#ifdef USE_WOLFSSL
#include <wolfssl/options.h>
#ifdef NO_MD4
-#define OPENSSL_NO_MD4
+#define WOLFSSL_NO_MD4
#endif
#endif
@@ -82,9 +85,11 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
md4_digest(ctx, MD4_DIGEST_SIZE, result);
}
-#elif (defined(USE_OPENSSL) || defined(USE_WOLFSSL)) && \
- !defined(OPENSSL_NO_MD4)
/* When OpenSSL or wolfSSL is available, we use their MD4 functions. */
+#elif defined(USE_WOLFSSL) && !defined(WOLFSSL_NO_MD4)
+#include <wolfssl/openssl/md4.h>
+
+#elif defined(USE_OPENSSL) && !defined(OPENSSL_NO_MD4)
#include <openssl/md4.h>
#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
diff --git a/lib/md5.c b/lib/md5.c
index c6923e036..5be639929 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -39,7 +41,7 @@
#endif
#endif /* USE_MBEDTLS */
-#if defined(USE_OPENSSL) && !defined(USE_AMISSL)
+#ifdef USE_OPENSSL
#include <openssl/opensslconf.h>
#if !defined(OPENSSL_NO_MD5) && !defined(OPENSSL_NO_DEPRECATED_3_0)
#define USE_OPENSSL_MD5
@@ -60,22 +62,22 @@
/* The last #include file should be: */
#include "memdebug.h"
-typedef struct md5_ctx MD5_CTX;
+typedef struct md5_ctx my_md5_ctx;
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
{
md5_init(ctx);
return CURLE_OK;
}
-static void MD5_Update(MD5_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
+static void my_md5_update(my_md5_ctx *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
{
md5_update(ctx, inputLen, input);
}
-static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
{
md5_digest(ctx, 16, digest);
}
@@ -83,11 +85,38 @@ static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
#elif defined(USE_OPENSSL_MD5) || defined(USE_WOLFSSL_MD5)
/* When OpenSSL or wolfSSL is available, we use their MD5 functions. */
+#if defined(USE_OPENSSL_MD5)
#include <openssl/md5.h>
+#elif defined(USE_WOLFSSL_MD5)
+#include <wolfssl/openssl/md5.h>
+#endif
+
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
+typedef MD5_CTX my_md5_ctx;
+
+static CURLcode my_md5_init(my_md5_ctx *ctx)
+{
+ if(!MD5_Init(ctx))
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_OK;
+}
+
+static void my_md5_update(my_md5_ctx *ctx,
+ const unsigned char *input,
+ unsigned int len)
+{
+ (void)MD5_Update(ctx, input, len);
+}
+
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
+{
+ (void)MD5_Final(digest, ctx);
+}
+
#elif defined(USE_MBEDTLS)
#include <mbedtls/md5.h>
@@ -97,21 +126,25 @@ static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
/* The last #include file should be: */
#include "memdebug.h"
-typedef mbedtls_md5_context MD5_CTX;
+typedef mbedtls_md5_context my_md5_ctx;
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
{
-#if !defined(HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS)
- (void) mbedtls_md5_starts(ctx);
+#if (MBEDTLS_VERSION_NUMBER >= 0x03000000)
+ if(mbedtls_md5_starts(ctx))
+ return CURLE_OUT_OF_MEMORY;
+#elif defined(HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS)
+ if(mbedtls_md5_starts_ret(ctx))
+ return CURLE_OUT_OF_MEMORY;
#else
- (void) mbedtls_md5_starts_ret(ctx);
+ (void)mbedtls_md5_starts(ctx);
#endif
return CURLE_OK;
}
-static void MD5_Update(MD5_CTX *ctx,
- const unsigned char *data,
- unsigned int length)
+static void my_md5_update(my_md5_ctx *ctx,
+ const unsigned char *data,
+ unsigned int length)
{
#if !defined(HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS)
(void) mbedtls_md5_update(ctx, data, length);
@@ -120,7 +153,7 @@ static void MD5_Update(MD5_CTX *ctx,
#endif
}
-static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
{
#if !defined(HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS)
(void) mbedtls_md5_finish(ctx, digest);
@@ -143,25 +176,27 @@ static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
Declaring the functions as static like this seems to be a bit more
reliable than defining COMMON_DIGEST_FOR_OPENSSL on older cats. */
# include <CommonCrypto/CommonDigest.h>
-# define MD5_CTX CC_MD5_CTX
+# define my_md5_ctx CC_MD5_CTX
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
{
- CC_MD5_Init(ctx);
+ if(!CC_MD5_Init(ctx))
+ return CURLE_OUT_OF_MEMORY;
+
return CURLE_OK;
}
-static void MD5_Update(MD5_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
+static void my_md5_update(my_md5_ctx *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
{
CC_MD5_Update(ctx, input, inputLen);
}
-static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
{
CC_MD5_Final(digest, ctx);
}
@@ -177,25 +212,30 @@ struct md5_ctx {
HCRYPTPROV hCryptProv;
HCRYPTHASH hHash;
};
-typedef struct md5_ctx MD5_CTX;
+typedef struct md5_ctx my_md5_ctx;
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
{
- if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL, PROV_RSA_FULL,
- CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
- CryptCreateHash(ctx->hCryptProv, CALG_MD5, 0, 0, &ctx->hHash);
+ if(!CryptAcquireContext(&ctx->hCryptProv, NULL, NULL, PROV_RSA_FULL,
+ CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
+ return CURLE_OUT_OF_MEMORY;
+
+ if(!CryptCreateHash(ctx->hCryptProv, CALG_MD5, 0, 0, &ctx->hHash)) {
+ CryptReleaseContext(ctx->hCryptProv, 0);
+ return CURLE_OUT_OF_MEMORY;
}
+
return CURLE_OK;
}
-static void MD5_Update(MD5_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
+static void my_md5_update(my_md5_ctx *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
{
CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
}
-static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
{
unsigned long length = 0;
CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
@@ -263,11 +303,12 @@ struct md5_ctx {
unsigned char buffer[64];
MD5_u32plus block[16];
};
-typedef struct md5_ctx MD5_CTX;
+typedef struct md5_ctx my_md5_ctx;
-static CURLcode MD5_Init(MD5_CTX *ctx);
-static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
-static void MD5_Final(unsigned char *result, MD5_CTX *ctx);
+static CURLcode my_md5_init(my_md5_ctx *ctx);
+static void my_md5_update(my_md5_ctx *ctx, const void *data,
+ unsigned long size);
+static void my_md5_final(unsigned char *result, my_md5_ctx *ctx);
/*
* The basic MD5 functions.
@@ -318,7 +359,7 @@ static void MD5_Final(unsigned char *result, MD5_CTX *ctx);
* This processes one or more 64-byte data blocks, but does NOT update
* the bit counters. There are no alignment requirements.
*/
-static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
+static const void *body(my_md5_ctx *ctx, const void *data, unsigned long size)
{
const unsigned char *ptr;
MD5_u32plus a, b, c, d;
@@ -426,7 +467,7 @@ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
return ptr;
}
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
{
ctx->a = 0x67452301;
ctx->b = 0xefcdab89;
@@ -439,7 +480,8 @@ static CURLcode MD5_Init(MD5_CTX *ctx)
return CURLE_OK;
}
-static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
+static void my_md5_update(my_md5_ctx *ctx, const void *data,
+ unsigned long size)
{
MD5_u32plus saved_lo;
unsigned long used;
@@ -474,7 +516,7 @@ static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
memcpy(ctx->buffer, data, size);
}
-static void MD5_Final(unsigned char *result, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *result, my_md5_ctx *ctx)
{
unsigned long used, available;
@@ -530,13 +572,13 @@ static void MD5_Final(unsigned char *result, MD5_CTX *ctx)
const struct HMAC_params Curl_HMAC_MD5[] = {
{
/* Hash initialization function. */
- CURLX_FUNCTION_CAST(HMAC_hinit_func, MD5_Init),
+ CURLX_FUNCTION_CAST(HMAC_hinit_func, my_md5_init),
/* Hash update function. */
- CURLX_FUNCTION_CAST(HMAC_hupdate_func, MD5_Update),
+ CURLX_FUNCTION_CAST(HMAC_hupdate_func, my_md5_update),
/* Hash computation end function. */
- CURLX_FUNCTION_CAST(HMAC_hfinal_func, MD5_Final),
+ CURLX_FUNCTION_CAST(HMAC_hfinal_func, my_md5_final),
/* Size of hash context structure. */
- sizeof(MD5_CTX),
+ sizeof(my_md5_ctx),
/* Maximum key length. */
64,
/* Result size. */
@@ -547,13 +589,13 @@ const struct HMAC_params Curl_HMAC_MD5[] = {
const struct MD5_params Curl_DIGEST_MD5[] = {
{
/* Digest initialization function */
- CURLX_FUNCTION_CAST(Curl_MD5_init_func, MD5_Init),
+ CURLX_FUNCTION_CAST(Curl_MD5_init_func, my_md5_init),
/* Digest update function */
- CURLX_FUNCTION_CAST(Curl_MD5_update_func, MD5_Update),
+ CURLX_FUNCTION_CAST(Curl_MD5_update_func, my_md5_update),
/* Digest computation end function */
- CURLX_FUNCTION_CAST(Curl_MD5_final_func, MD5_Final),
+ CURLX_FUNCTION_CAST(Curl_MD5_final_func, my_md5_final),
/* Size of digest context struct */
- sizeof(MD5_CTX),
+ sizeof(my_md5_ctx),
/* Result size */
16
}
@@ -564,15 +606,17 @@ const struct MD5_params Curl_DIGEST_MD5[] = {
* Returns CURLE_OK on success.
*/
CURLcode Curl_md5it(unsigned char *outbuffer, const unsigned char *input,
- const size_t len)
+ const size_t len)
{
- MD5_CTX ctx;
+ CURLcode result;
+ my_md5_ctx ctx;
- MD5_Init(&ctx);
- MD5_Update(&ctx, input, curlx_uztoui(len));
- MD5_Final(outbuffer, &ctx);
-
- return CURLE_OK;
+ result = my_md5_init(&ctx);
+ if(!result) {
+ my_md5_update(&ctx, input, curlx_uztoui(len));
+ my_md5_final(outbuffer, &ctx);
+ }
+ return result;
}
struct MD5_context *Curl_MD5_init(const struct MD5_params *md5params)
@@ -594,7 +638,11 @@ struct MD5_context *Curl_MD5_init(const struct MD5_params *md5params)
ctxt->md5_hash = md5params;
- (*md5params->md5_init_func)(ctxt->md5_hashctx);
+ if((*md5params->md5_init_func)(ctxt->md5_hashctx)) {
+ free(ctxt->md5_hashctx);
+ free(ctxt);
+ return NULL;
+ }
return ctxt;
}
diff --git a/lib/memdebug.c b/lib/memdebug.c
index 050c5d4b2..15fb49155 100644
--- a/lib/memdebug.c
+++ b/lib/memdebug.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -127,7 +129,8 @@ static bool countcheck(const char *func, int line, const char *source)
return FALSE; /* allow this */
}
-void *curl_dbg_malloc(size_t wantedsize, int line, const char *source)
+ALLOC_FUNC void *curl_dbg_malloc(size_t wantedsize,
+ int line, const char *source)
{
struct memdebug *mem;
size_t size;
@@ -153,8 +156,8 @@ void *curl_dbg_malloc(size_t wantedsize, int line, const char *source)
return (mem ? mem->mem : NULL);
}
-void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
- int line, const char *source)
+ALLOC_FUNC void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
+ int line, const char *source)
{
struct memdebug *mem;
size_t size, user_size;
@@ -181,7 +184,8 @@ void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
return (mem ? mem->mem : NULL);
}
-char *curl_dbg_strdup(const char *str, int line, const char *source)
+ALLOC_FUNC char *curl_dbg_strdup(const char *str,
+ int line, const char *source)
{
char *mem;
size_t len;
@@ -205,7 +209,8 @@ char *curl_dbg_strdup(const char *str, int line, const char *source)
}
#if defined(WIN32) && defined(UNICODE)
-wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line, const char *source)
+ALLOC_FUNC wchar_t *curl_dbg_wcsdup(const wchar_t *str,
+ int line, const char *source)
{
wchar_t *mem;
size_t wsiz, bsiz;
@@ -408,8 +413,8 @@ int curl_dbg_sclose(curl_socket_t sockfd, int line, const char *source)
return res;
}
-FILE *curl_dbg_fopen(const char *file, const char *mode,
- int line, const char *source)
+ALLOC_FUNC FILE *curl_dbg_fopen(const char *file, const char *mode,
+ int line, const char *source)
{
FILE *res = fopen(file, mode);
@@ -420,8 +425,8 @@ FILE *curl_dbg_fopen(const char *file, const char *mode,
return res;
}
-FILE *curl_dbg_fdopen(int filedes, const char *mode,
- int line, const char *source)
+ALLOC_FUNC FILE *curl_dbg_fdopen(int filedes, const char *mode,
+ int line, const char *source)
{
FILE *res = fdopen(filedes, mode);
if(source)
diff --git a/lib/memdebug.h b/lib/memdebug.h
index 8e88cea58..7fc90e83a 100644
--- a/lib/memdebug.h
+++ b/lib/memdebug.h
@@ -8,7 +8,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* 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,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -28,21 +30,44 @@
* as well as the library. Do not mix with library internals!
*/
+#include <curl/curl.h>
+#include "functypes.h"
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+# define ALLOC_FUNC __attribute__((malloc))
+# define ALLOC_SIZE(s) __attribute__((alloc_size(s)))
+# define ALLOC_SIZE2(n, s) __attribute__((alloc_size(n, s)))
+#elif defined(_MSC_VER)
+# define ALLOC_FUNC __declspec(restrict)
+# define ALLOC_SIZE(s)
+# define ALLOC_SIZE2(n, s)
+#else
+# define ALLOC_FUNC
+# define ALLOC_SIZE(s)
+# define ALLOC_SIZE2(n, s)
+#endif
+
#define CURL_MT_LOGFNAME_BUFSIZE 512
extern FILE *curl_dbg_logfile;
/* memory functions */
-CURL_EXTERN void *curl_dbg_malloc(size_t size, int line, const char *source);
-CURL_EXTERN void *curl_dbg_calloc(size_t elements, size_t size, int line,
- const char *source);
-CURL_EXTERN void *curl_dbg_realloc(void *ptr, size_t size, int line,
- const char *source);
+CURL_EXTERN ALLOC_FUNC ALLOC_SIZE(1) void *curl_dbg_malloc(size_t size,
+ int line,
+ const char *source);
+CURL_EXTERN ALLOC_FUNC ALLOC_SIZE2(1, 2) void *curl_dbg_calloc(size_t elements,
+ size_t size, int line, const char *source);
+CURL_EXTERN ALLOC_SIZE(2) void *curl_dbg_realloc(void *ptr,
+ size_t size,
+ int line,
+ const char *source);
CURL_EXTERN void curl_dbg_free(void *ptr, int line, const char *source);
-CURL_EXTERN char *curl_dbg_strdup(const char *str, int line, const char *src);
+CURL_EXTERN ALLOC_FUNC char *curl_dbg_strdup(const char *str, int line,
+ const char *src);
#if defined(WIN32) && defined(UNICODE)
-CURL_EXTERN wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line,
- const char *source);
+CURL_EXTERN ALLOC_FUNC wchar_t *curl_dbg_wcsdup(const wchar_t *str,
+ int line,
+ const char *source);
#endif
CURL_EXTERN void curl_dbg_memdebug(const char *logname);
@@ -77,10 +102,10 @@ CURL_EXTERN RECV_TYPE_RETV curl_dbg_recv(RECV_TYPE_ARG1 sockfd,
const char *source);
/* FILE functions */
-CURL_EXTERN FILE *curl_dbg_fopen(const char *file, const char *mode, int line,
- const char *source);
-CURL_EXTERN FILE *curl_dbg_fdopen(int filedes, const char *mode,
+CURL_EXTERN ALLOC_FUNC FILE *curl_dbg_fopen(const char *file, const char *mode,
int line, const char *source);
+CURL_EXTERN ALLOC_FUNC FILE *curl_dbg_fdopen(int filedes, const char *mode,
+ int line, const char *source);
CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source);
diff --git a/lib/mime.c b/lib/mime.c
index 7783b8990..042141fc8 100644
--- a/lib/mime.c
+++ b/lib/mime.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -25,13 +27,13 @@
#include <curl/curl.h>
#include "mime.h"
-#include "non-ascii.h"
#include "warnless.h"
#include "urldata.h"
#include "sendf.h"
-#if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) || \
- !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP)
+#if !defined(CURL_DISABLE_MIME) && (!defined(CURL_DISABLE_HTTP) || \
+ !defined(CURL_DISABLE_SMTP) || \
+ !defined(CURL_DISABLE_IMAP))
#if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME)
#include <libgen.h>
@@ -315,7 +317,7 @@ static char *escape_string(struct Curl_easy *data,
Curl_dyn_init(&db, CURL_MAX_INPUT_LENGTH);
- for(result = Curl_dyn_add(&db, ""); !result && *src; src++) {
+ for(result = Curl_dyn_addn(&db, STRCONST("")); !result && *src; src++) {
for(p = table; *p && **p != *src; p++)
;
@@ -340,9 +342,9 @@ static char *match_header(struct curl_slist *hdr, const char *lbl, size_t len)
}
/* Get a header from an slist. */
-static char *search_header(struct curl_slist *hdrlist, const char *hdr)
+static char *search_header(struct curl_slist *hdrlist,
+ const char *hdr, size_t len)
{
- size_t len = strlen(hdr);
char *value = NULL;
for(; !value && hdrlist; hdrlist = hdrlist->next)
@@ -506,15 +508,6 @@ static size_t encoder_base64_read(char *buffer, size_t size, bool ateof,
}
}
-#ifdef CURL_DOES_CONVERSIONS
- /* This is now textual data, Convert character codes. */
- if(part->easy && cursize) {
- CURLcode result = Curl_convert_to_network(part->easy, buffer, cursize);
- if(result)
- return READ_ERROR;
- }
-#endif
-
return cursize;
}
@@ -768,7 +761,7 @@ static void mime_file_free(void *ptr)
static size_t readback_bytes(struct mime_state *state,
char *buffer, size_t bufsize,
const char *bytes, size_t numbytes,
- const char *trail)
+ const char *trail, size_t traillen)
{
size_t sz;
size_t offset = curlx_sotouz(state->offset);
@@ -778,13 +771,11 @@ static size_t readback_bytes(struct mime_state *state,
bytes += offset;
}
else {
- size_t tsz = strlen(trail);
-
sz = offset - numbytes;
- if(sz >= tsz)
+ if(sz >= traillen)
return 0;
bytes = trail + sz;
- sz = tsz - sz;
+ sz = traillen - sz;
}
if(sz > bufsize)
@@ -925,9 +916,6 @@ static size_t readback_part(curl_mimepart *part,
char *buffer, size_t bufsize, bool *hasread)
{
size_t cursize = 0;
-#ifdef CURL_DOES_CONVERSIONS
- char *convbuf = buffer;
-#endif
/* Readback from part. */
@@ -956,26 +944,18 @@ static size_t readback_part(curl_mimepart *part,
mimesetstate(&part->state, MIMESTATE_USERHEADERS, part->userheaders);
else {
sz = readback_bytes(&part->state, buffer, bufsize,
- hdr->data, strlen(hdr->data), "\r\n");
+ hdr->data, strlen(hdr->data), STRCONST("\r\n"));
if(!sz)
mimesetstate(&part->state, part->state.state, hdr->next);
}
break;
case MIMESTATE_EOH:
- sz = readback_bytes(&part->state, buffer, bufsize, "\r\n", 2, "");
+ sz = readback_bytes(&part->state, buffer, bufsize, STRCONST("\r\n"),
+ STRCONST(""));
if(!sz)
mimesetstate(&part->state, MIMESTATE_BODY, NULL);
break;
case MIMESTATE_BODY:
-#ifdef CURL_DOES_CONVERSIONS
- if(part->easy && convbuf < buffer) {
- CURLcode result = Curl_convert_to_network(part->easy, convbuf,
- buffer - convbuf);
- if(result)
- return READ_ERROR;
- convbuf = buffer;
- }
-#endif
cleanup_encoder_state(&part->encstate);
mimesetstate(&part->state, MIMESTATE_CONTENT, NULL);
break;
@@ -1012,16 +992,6 @@ static size_t readback_part(curl_mimepart *part,
bufsize -= sz;
}
-#ifdef CURL_DOES_CONVERSIONS
- if(part->easy && convbuf < buffer &&
- part->state.state < MIMESTATE_BODY) {
- CURLcode result = Curl_convert_to_network(part->easy, convbuf,
- buffer - convbuf);
- if(result)
- return READ_ERROR;
- }
-#endif
-
return cursize;
}
@@ -1031,10 +1001,6 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
{
curl_mime *mime = (curl_mime *) instream;
size_t cursize = 0;
-#ifdef CURL_DOES_CONVERSIONS
- char *convbuf = buffer;
-#endif
-
(void) size; /* Always 1. */
while(nitems) {
@@ -1043,9 +1009,6 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
switch(mime->state.state) {
case MIMESTATE_BEGIN:
case MIMESTATE_BODY:
-#ifdef CURL_DOES_CONVERSIONS
- convbuf = buffer;
-#endif
mimesetstate(&mime->state, MIMESTATE_BOUNDARY1, mime->firstpart);
/* The first boundary always follows the header termination empty line,
so is always preceded by a CRLF. We can then spare 2 characters
@@ -1053,23 +1016,19 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
mime->state.offset += 2;
break;
case MIMESTATE_BOUNDARY1:
- sz = readback_bytes(&mime->state, buffer, nitems, "\r\n--", 4, "");
+ sz = readback_bytes(&mime->state, buffer, nitems, STRCONST("\r\n--"),
+ STRCONST(""));
if(!sz)
mimesetstate(&mime->state, MIMESTATE_BOUNDARY2, part);
break;
case MIMESTATE_BOUNDARY2:
- sz = readback_bytes(&mime->state, buffer, nitems, mime->boundary,
- strlen(mime->boundary), part? "\r\n": "--\r\n");
+ if(part)
+ sz = readback_bytes(&mime->state, buffer, nitems, mime->boundary,
+ MIME_BOUNDARY_LEN, STRCONST("\r\n"));
+ else
+ sz = readback_bytes(&mime->state, buffer, nitems, mime->boundary,
+ MIME_BOUNDARY_LEN, STRCONST("--\r\n"));
if(!sz) {
-#ifdef CURL_DOES_CONVERSIONS
- if(mime->easy && convbuf < buffer) {
- CURLcode result = Curl_convert_to_network(mime->easy, convbuf,
- buffer - convbuf);
- if(result)
- return READ_ERROR;
- convbuf = buffer;
- }
-#endif
mimesetstate(&mime->state, MIMESTATE_CONTENT, part);
}
break;
@@ -1086,9 +1045,6 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
case STOP_FILLING:
return cursize? cursize: sz;
case 0:
-#ifdef CURL_DOES_CONVERSIONS
- convbuf = buffer;
-#endif
mimesetstate(&mime->state, MIMESTATE_BOUNDARY1, part->nextpart);
break;
}
@@ -1105,16 +1061,6 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
nitems -= sz;
}
-#ifdef CURL_DOES_CONVERSIONS
- if(mime->easy && convbuf < buffer &&
- mime->state.state <= MIMESTATE_CONTENT) {
- CURLcode result = Curl_convert_to_network(mime->easy, convbuf,
- buffer - convbuf);
- if(result)
- return READ_ERROR;
- }
-#endif
-
return cursize;
}
@@ -1341,8 +1287,9 @@ curl_mime *curl_mime_init(struct Curl_easy *easy)
mime->firstpart = NULL;
mime->lastpart = NULL;
- memset(mime->boundary, '-', 24);
- if(Curl_rand_hex(easy, (unsigned char *) &mime->boundary[24],
+ memset(mime->boundary, '-', MIME_BOUNDARY_DASHES);
+ if(Curl_rand_hex(easy,
+ (unsigned char *) &mime->boundary[MIME_BOUNDARY_DASHES],
MIME_RAND_BOUNDARY_CHARS + 1)) {
/* failed to get random separator, bail out */
free(mime);
@@ -1619,7 +1566,7 @@ CURLcode Curl_mime_set_subparts(curl_mimepart *part,
root = root->parent->parent;
if(subparts == root) {
if(part->easy)
- failf(part->easy, "Can't add itself as a subpart!");
+ failf(part->easy, "Can't add itself as a subpart");
return CURLE_BAD_FUNCTION_ARGUMENT;
}
}
@@ -1675,10 +1622,9 @@ CURLcode Curl_mime_rewind(curl_mimepart *part)
/* Compute header list size. */
static size_t slist_size(struct curl_slist *s,
- size_t overhead, const char *skip)
+ size_t overhead, const char *skip, size_t skiplen)
{
size_t size = 0;
- size_t skiplen = skip? strlen(skip): 0;
for(; s; s = s->next)
if(!skip || !match_header(s, skip, skiplen))
@@ -1696,7 +1642,7 @@ static curl_off_t multipart_size(curl_mime *mime)
if(!mime)
return 0; /* Not present -> empty. */
- boundarysize = 4 + strlen(mime->boundary) + 2;
+ boundarysize = 4 + MIME_BOUNDARY_LEN + 2;
size = boundarysize; /* Final boundary - CRLF after headers. */
for(part = mime->firstpart; part; part = part->nextpart) {
@@ -1727,8 +1673,8 @@ curl_off_t Curl_mime_size(curl_mimepart *part)
if(size >= 0 && !(part->flags & MIME_BODY_ONLY)) {
/* Compute total part size. */
- size += slist_size(part->curlheaders, 2, NULL);
- size += slist_size(part->userheaders, 2, "Content-Type");
+ size += slist_size(part->curlheaders, 2, NULL, 0);
+ size += slist_size(part->userheaders, 2, STRCONST("Content-Type"));
size += 2; /* CRLF after headers. */
}
return size;
@@ -1804,10 +1750,9 @@ const char *Curl_mime_contenttype(const char *filename)
return NULL;
}
-static bool content_type_match(const char *contenttype, const char *target)
+static bool content_type_match(const char *contenttype,
+ const char *target, size_t len)
{
- size_t len = strlen(target);
-
if(contenttype && strncasecompare(contenttype, target, len))
switch(contenttype[len]) {
case '\0':
@@ -1843,7 +1788,7 @@ CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
/* Check if content type is specified. */
customct = part->mimetype;
if(!customct)
- customct = search_header(part->userheaders, "Content-Type");
+ customct = search_header(part->userheaders, STRCONST("Content-Type"));
if(customct)
contenttype = customct;
@@ -1872,12 +1817,12 @@ CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
boundary = mime->boundary;
}
else if(contenttype && !customct &&
- content_type_match(contenttype, "text/plain"))
+ content_type_match(contenttype, STRCONST("text/plain")))
if(strategy == MIMESTRATEGY_MAIL || !part->filename)
contenttype = NULL;
/* Issue content-disposition header only if not already set by caller. */
- if(!search_header(part->userheaders, "Content-Disposition")) {
+ if(!search_header(part->userheaders, STRCONST("Content-Disposition"))) {
if(!disposition)
if(part->filename || part->name ||
(contenttype && !strncasecompare(contenttype, "multipart/", 10)))
@@ -1924,7 +1869,8 @@ CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
}
/* Content-Transfer-Encoding header. */
- if(!search_header(part->userheaders, "Content-Transfer-Encoding")) {
+ if(!search_header(part->userheaders,
+ STRCONST("Content-Transfer-Encoding"))) {
if(part->encoder)
cte = part->encoder->name;
else if(contenttype && strategy == MIMESTRATEGY_MAIL &&
@@ -1948,7 +1894,7 @@ CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
curl_mimepart *subpart;
disposition = NULL;
- if(content_type_match(contenttype, "multipart/form-data"))
+ if(content_type_match(contenttype, STRCONST("multipart/form-data")))
disposition = "form-data";
for(subpart = mime->firstpart; subpart; subpart = subpart->nextpart) {
ret = Curl_mime_prepare_headers(subpart, NULL, disposition, strategy);
@@ -1979,8 +1925,8 @@ void Curl_mime_unpause(curl_mimepart *part)
}
-#else /* !CURL_DISABLE_HTTP && !CURL_DISABLE_MIME ||
- !CURL_DISABLE_SMTP || !CURL_DISABLE_IMAP */
+#else /* !CURL_DISABLE_MIME && (!CURL_DISABLE_HTTP ||
+ !CURL_DISABLE_SMTP || !CURL_DISABLE_IMAP) */
/* Mime not compiled in: define stubs for externally-referenced functions. */
curl_mime *curl_mime_init(CURL *easy)
diff --git a/lib/mime.h b/lib/mime.h
index 56642ae66..bafde29f4 100644
--- a/lib/mime.h
+++ b/lib/mime.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,10 +20,13 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
+#define MIME_BOUNDARY_DASHES 24 /* leading boundary dashes */
#define MIME_RAND_BOUNDARY_CHARS 16 /* Nb. of random boundary chars. */
#define MAX_ENCODED_LINE_LENGTH 76 /* Maximum encoded line length. */
#define ENCODING_BUFFER_SIZE 256 /* Encoding temp buffers size. */
@@ -91,8 +94,8 @@ struct mime_state {
curl_off_t offset; /* State-dependent offset. */
};
-/* minimum buffer size for the boundary string */
-#define MIME_BOUNDARY_LEN (24 + MIME_RAND_BOUNDARY_CHARS + 1)
+/* Boundary string length. */
+#define MIME_BOUNDARY_LEN (MIME_BOUNDARY_DASHES + MIME_RAND_BOUNDARY_CHARS)
/* A mime multipart. */
struct curl_mime {
@@ -100,7 +103,7 @@ struct curl_mime {
curl_mimepart *parent; /* Parent part. */
curl_mimepart *firstpart; /* First part. */
curl_mimepart *lastpart; /* Last part. */
- char boundary[MIME_BOUNDARY_LEN]; /* The part boundary. */
+ char boundary[MIME_BOUNDARY_LEN + 1]; /* The part boundary. */
struct mime_state state; /* Current readback state. */
};
@@ -131,8 +134,9 @@ struct curl_mimepart {
CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...);
-#if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) || \
- !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP)
+#if !defined(CURL_DISABLE_MIME) && (!defined(CURL_DISABLE_HTTP) || \
+ !defined(CURL_DISABLE_SMTP) || \
+ !defined(CURL_DISABLE_IMAP))
/* Prototypes. */
void Curl_mime_initpart(struct curl_mimepart *part, struct Curl_easy *easy);
diff --git a/lib/mk-ca-bundle.vbs b/lib/mk-ca-bundle.vbs
deleted file mode 100755
index 21b4c1967..000000000
--- a/lib/mk-ca-bundle.vbs
+++ /dev/null
@@ -1,431 +0,0 @@
-'***************************************************************************
-'* _ _ ____ _
-'* Project ___| | | | _ \| |
-'* / __| | | | |_) | |
-'* | (__| |_| | _ <| |___
-'* \___|\___/|_| \_\_____|
-'*
-'* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-'*
-'* This software is licensed as described in the file COPYING, which
-'* you should have received as part of this distribution. The terms
-'* are also available at https://curl.se/docs/copyright.html.
-'*
-'* You may opt to use, copy, modify, merge, publish, distribute and/or sell
-'* copies of the Software, and permit persons to whom the Software is
-'* furnished to do so, under the terms of the COPYING file.
-'*
-'* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-'* KIND, either express or implied.
-'*
-'***************************************************************************
-'* Script to fetch certdata.txt from Mozilla.org site and create a
-'* ca-bundle.crt for use with OpenSSL / libcurl / libcurl bindings
-'* Requires WinHttp.WinHttpRequest.5.1 and ADODB.Stream which are part of
-'* W2000 SP3 or later, WXP SP1 or later, W2003 Server SP1 or later.
-'* Hacked by Guenter Knauf
-'***************************************************************************
-Option Explicit
-Const myVersion = "0.4.0"
-
-Const myUrl = "https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt"
-
-Const myOpenSSL = "openssl.exe"
-Dim myUseOpenSSL
-myUseOpenSSL = TRUE ' Flag: TRUE to use OpenSSL. If TRUE and is not
- ' found then a warning is shown before continuing.
-
-Const myCdSavF = TRUE ' Flag: save downloaded data to file certdata.txt
-Const myCaBakF = TRUE ' Flag: backup existing ca-bundle certificate
-Const myAskLiF = TRUE ' Flag: display certdata.txt license agreement
-Const myWrapLe = 76 ' Default length of base64 output lines
-
-' cert info code doesn't work properly with any recent openssl, leave disabled.
-' Also: we want our certificate output by default to be as similar as possible
-' to mk-ca-bundle.pl and setting this TRUE changes the base64 width to
-' OpenSSL's built-in default width, which is not the same as mk-ca-bundle.pl.
-Const myAskTiF = FALSE ' Flag: ask to include certificate text info
-
-'
-'******************* Nothing to configure below! *******************
-'
-Const adTypeBinary = 1
-Const adTypeText = 2
-Const adSaveCreateNotExist = 1
-Const adSaveCreateOverWrite = 2
-Dim objShell, objNetwork, objFSO, objHttp
-Dim myBase, mySelf, myStream, myTmpFh, myCdData, myCdFile
-Dim myCaFile, myTmpName, myBakNum, myOptTxt, i
-Set objNetwork = WScript.CreateObject("WScript.Network")
-Set objShell = WScript.CreateObject("WScript.Shell")
-Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
-Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest.5.1")
-If objHttp Is Nothing Then Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest")
-myBase = Left(WScript.ScriptFullName, InstrRev(WScript.ScriptFullName, "\"))
-mySelf = Left(WScript.ScriptName, InstrRev(WScript.ScriptName, ".") - 1) & " " & myVersion
-
-myCdFile = Mid(myUrl, InstrRev(myUrl, "/") + 1)
-myCaFile = "ca-bundle.crt"
-myTmpName = InputBox("It will take a minute to download and parse the " & _
- "certificate data." & _
- vbLf & vbLf & _
- "Please enter the output filename:", mySelf, myCaFile)
-If (myTmpName = "") Then
- WScript.Quit 1
-End If
-myCaFile = myTmpName
-If (myCdFile = "") Then
- MsgBox("URL does not contain filename!"), vbCritical, mySelf
- WScript.Quit 1
-End If
-
-' Don't use OpenSSL if it's not present.
-If (myUseOpenSSL = TRUE) Then
- Dim errnum
-
- On Error Resume Next
- Call objShell.Run("""" & myOpenSSL & """ version", 0, TRUE)
- errnum = Err.Number
- On Error GoTo 0
-
- If Not (errnum = 0) Then
- myUseOpenSSL = FALSE
- MsgBox("OpenSSL was not found so the certificate bundle will not " & _
- "include the SHA256 hash of the raw certificate data file " & _
- "that was used to generate the certificates in the bundle. " & _
- vbLf & vbLf & _
- "This does not have any effect on the certificate output, " & _
- "so this script will continue." & _
- vbLf & vbLf & _
- "If you want to set a custom location for OpenSSL or disable " & _
- "this message then edit the variables at the start of the " & _
- "script."), vbInformation, mySelf
- End If
-End If
-
-If (myAskTiF = TRUE) And (myUseOpenSSL = TRUE) Then
- If (6 = objShell.PopUp("Do you want to include text information about " & _
- "each certificate?" & vbLf & _
- "(Requires OpenSSL.exe in the current directory " & _
- "or search path)",, _
- mySelf, vbQuestion + vbYesNo + vbDefaultButton2)) Then
- myOptTxt = TRUE
- Else
- myOptTxt = FALSE
- End If
-End If
-
-' Uncomment the line below to ignore SSL invalid cert errors
-' objHttp.Option(4) = 256 + 512 + 4096 + 8192
-objHttp.SetTimeouts 0, 5000, 10000, 10000
-objHttp.Open "GET", myUrl, FALSE
-objHttp.setRequestHeader "User-Agent", WScript.ScriptName & "/" & myVersion
-objHttp.Send ""
-If Not (objHttp.Status = 200) Then
- MsgBox("Failed to download '" & myCdFile & "': " & objHttp.Status & " - " & objHttp.StatusText), vbCritical, mySelf
- WScript.Quit 1
-End If
-' Write received data to file if enabled
-If (myCdSavF = TRUE) Then
- Call SaveBinaryData(myCdFile, objHttp.ResponseBody)
-End If
-' Convert data from ResponseBody instead of using ResponseText because of UTF-8
-myCdData = ConvertBinaryToUTF8(objHttp.ResponseBody)
-Set objHttp = Nothing
-' Backup exitsing ca-bundle certificate file
-If (myCaBakF = TRUE) Then
- If objFSO.FileExists(myCaFile) Then
- Dim myBakFile, b
- b = 1
- myBakFile = myCaFile & ".~" & b & "~"
- While objFSO.FileExists(myBakFile)
- b = b + 1
- myBakFile = myCaFile & ".~" & b & "~"
- Wend
- Set myTmpFh = objFSO.GetFile(myCaFile)
- myTmpFh.Move myBakFile
- End If
-End If
-
-' Process the received data
-Dim myLines, myPattern, myInsideCert, myInsideLicense, myLicenseText, myNumCerts, myNumSkipped
-Dim myLabel, myOctets, myData, myPem, myRev, myUntrusted, j
-myNumSkipped = 0
-myNumCerts = 0
-myData = ""
-myLines = Split(myCdData, vbLf, -1)
-Set myStream = CreateObject("ADODB.Stream")
-myStream.Open
-myStream.Type = adTypeText
-myStream.Charset = "utf-8"
-myStream.WriteText "##" & vbLf & _
- "## Bundle of CA Root Certificates" & vbLf & _
- "##" & vbLf & _
- "## Certificate data from Mozilla as of: " & _
- ConvertDateToString(LocalDateToUTC(Now)) & " GMT" & vbLf & _
- "##" & vbLf & _
- "## This is a bundle of X.509 certificates of public Certificate Authorities" & vbLf & _
- "## (CA). These were automatically extracted from Mozilla's root certificates" & vbLf & _
- "## file (certdata.txt). This file can be found in the mozilla source tree:" & vbLf & _
- "## " & myUrl & vbLf & _
- "##" & vbLf & _
- "## It contains the certificates in PEM format and therefore" & vbLf & _
- "## can be directly used with curl / libcurl / php_curl, or with" & vbLf & _
- "## an Apache+mod_ssl webserver for SSL client authentication." & vbLf & _
- "## Just configure this file as the SSLCACertificateFile." & vbLf & _
- "##" & vbLf & _
- "## Conversion done with mk-ca-bundle.vbs version " & myVersion & "." & vbLf
-If (myCdSavF = TRUE) And (myUseOpenSSL = TRUE) Then
- myStream.WriteText "## SHA256: " & FileSHA256(myCdFile) & vbLf
-End If
-myStream.WriteText "##" & vbLf & vbLf
-
-myStream.WriteText vbLf
-For i = 0 To UBound(myLines)
- If InstrRev(myLines(i), "CKA_LABEL ") Then
- myPattern = "^CKA_LABEL\s+[A-Z0-9]+\s+""(.+?)"""
- myLabel = RegExprFirst(myPattern, myLines(i))
- End If
- If (myInsideCert = TRUE) Then
- If InstrRev(myLines(i), "END") Then
- myInsideCert = FALSE
- While (i < UBound(myLines)) And Not (myLines(i) = "#")
- i = i + 1
- If InstrRev(myLines(i), "CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR") Then
- myUntrusted = FALSE
- End If
- Wend
- If (myUntrusted = TRUE) Then
- myNumSkipped = myNumSkipped + 1
- Else
- myStream.WriteText myLabel & vbLf
- myStream.WriteText String(Len(myLabel), "=") & vbLf
- myPem = "-----BEGIN CERTIFICATE-----" & vbLf & _
- Base64Encode(myData) & vbLf & _
- "-----END CERTIFICATE-----" & vbLf
- If (myOptTxt = FALSE) Then
- myStream.WriteText myPem & vbLf
- Else
- Dim myCmd, myRval, myTmpIn, myTmpOut
- myTmpIn = objFSO.GetSpecialFolder(2).Path & "\" & objFSO.GetTempName
- myTmpOut = objFSO.GetSpecialFolder(2).Path & "\" & objFSO.GetTempName
- Set myTmpFh = objFSO.OpenTextFile(myTmpIn, 2, TRUE)
- myTmpFh.Write myPem
- myTmpFh.Close
- myCmd = """" & myOpenSSL & """ x509 -md5 -fingerprint -text " & _
- "-inform PEM -in " & myTmpIn & " -out " & myTmpOut
- myRval = objShell.Run (myCmd, 0, TRUE)
- objFSO.DeleteFile myTmpIn, TRUE
- If Not (myRval = 0) Then
- MsgBox("Failed to process PEM cert with OpenSSL commandline!"), vbCritical, mySelf
- objFSO.DeleteFile myTmpOut, TRUE
- WScript.Quit 3
- End If
- Set myTmpFh = objFSO.OpenTextFile(myTmpOut, 1)
- myStream.WriteText myTmpFh.ReadAll & vbLf
- myTmpFh.Close
- objFSO.DeleteFile myTmpOut, TRUE
- End If
- myNumCerts = myNumCerts + 1
- End If
- Else
- myOctets = Split(myLines(i), "\")
- For j = 1 To UBound(myOctets)
- myData = myData & Chr(CByte("&o" & myOctets(j)))
- Next
- End If
- End If
- If InstrRev(myLines(i), "CVS_ID ") Then
- myPattern = "^CVS_ID\s+""(.+?)"""
- myRev = RegExprFirst(myPattern, myLines(i))
- myStream.WriteText "# " & myRev & vbLf & vbLf
- End If
- If InstrRev(myLines(i), "CKA_VALUE MULTILINE_OCTAL") Then
- myInsideCert = TRUE
- myUntrusted = TRUE
- myData = ""
- End If
- If InstrRev(myLines(i), "***** BEGIN LICENSE BLOCK *****") Then
- myInsideLicense = TRUE
- End If
- If (myInsideLicense = TRUE) Then
- myStream.WriteText myLines(i) & vbLf
- myLicenseText = myLicenseText & Mid(myLines(i), 2) & vbLf
- End If
- If InstrRev(myLines(i), "***** END LICENSE BLOCK *****") Then
- myInsideLicense = FALSE
- If (myAskLiF = TRUE) Then
- If Not (6 = objShell.PopUp(myLicenseText & vbLf & _
- "Do you agree to the license shown above (required to proceed) ?",, _
- mySelf, vbQuestion + vbYesNo + vbDefaultButton1)) Then
- myStream.Close
- objFSO.DeleteFile myCaFile, TRUE
- WScript.Quit 2
- End If
- End If
- End If
-Next
-
-' To stop the UTF-8 BOM from being written the stream has to be copied and
-' then saved as binary.
-Dim myCopy
-Set myCopy = CreateObject("ADODB.Stream")
-myCopy.Type = adTypeBinary
-myCopy.Open
-myStream.Position = 3 ' Skip UTF-8 BOM
-myStream.CopyTo myCopy
-myCopy.SaveToFile myCaFile, adSaveCreateOverWrite
-myCopy.Close
-myStream.Close
-Set myCopy = Nothing
-Set myStream = Nothing
-
-' Done
-objShell.PopUp "Done (" & myNumCerts & " CA certs processed, " & myNumSkipped & _
- " untrusted skipped).", 20, mySelf, vbInformation
-WScript.Quit 0
-
-Function ConvertBinaryToUTF8(arrBytes)
- Dim objStream
- Set objStream = CreateObject("ADODB.Stream")
- objStream.Open
- objStream.Type = adTypeBinary
- objStream.Write arrBytes
- objStream.Position = 0
- objStream.Type = adTypeText
- objStream.Charset = "utf-8"
- ConvertBinaryToUTF8 = objStream.ReadText
- Set objStream = Nothing
-End Function
-
-Function SaveBinaryData(filename, data)
- Dim objStream
- Set objStream = CreateObject("ADODB.Stream")
- objStream.Type = adTypeBinary
- objStream.Open
- objStream.Write data
- objStream.SaveToFile filename, adSaveCreateOverWrite
- objStream.Close
- Set objStream = Nothing
-End Function
-
-Function RegExprFirst(SearchPattern, TheString)
- Dim objRegExp, Matches ' create variables.
- Set objRegExp = New RegExp ' create a regular expression.
- objRegExp.Pattern = SearchPattern ' sets the search pattern.
- objRegExp.IgnoreCase = TRUE ' set to ignores case.
- objRegExp.Global = TRUE ' set to global search.
- Set Matches = objRegExp.Execute(TheString) ' do the search.
- If (Matches.Count) Then
- RegExprFirst = Matches(0).SubMatches(0) ' return first match.
- Else
- RegExprFirst = ""
- End If
- Set objRegExp = Nothing
-End Function
-
-Function Base64Encode(inData)
- Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
- Dim cOut, sOut, lWrap, I
- lWrap = Int(myWrapLe * 3 / 4)
-
- 'For each group of 3 bytes
- For I = 1 To Len(inData) Step 3
- Dim nGroup, pOut, sGroup
-
- 'Create one long from this 3 bytes.
- nGroup = &H10000 * Asc(Mid(inData, I, 1)) + _
- &H100 * MyASC(Mid(inData, I + 1, 1)) + _
- MyASC(Mid(inData, I + 2, 1))
-
- 'Oct splits the long To 8 groups with 3 bits
- nGroup = Oct(nGroup)
-
- 'Add leading zeros
- nGroup = String(8 - Len(nGroup), "0") & nGroup
-
- 'Convert To base64
- pOut = Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) & _
- Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) & _
- Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) & _
- Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)
-
- 'Add the part To OutPut string
- sOut = sOut + pOut
-
- 'Add a new line For Each myWrapLe chars In dest
- If (I < Len(inData) - 2) Then
- If (I + 2) Mod lWrap = 0 Then sOut = sOut & vbLf
- End If
- Next
- Select Case Len(inData) Mod 3
- Case 1: '8 bit final
- sOut = Left(sOut, Len(sOut) - 2) & "=="
- Case 2: '16 bit final
- sOut = Left(sOut, Len(sOut) - 1) & "="
- End Select
- Base64Encode = sOut
-End Function
-
-Function MyASC(OneChar)
- If OneChar = "" Then MyASC = 0 Else MyASC = Asc(OneChar)
-End Function
-
-' Return the date in the same format as perl to match mk-ca-bundle.pl output:
-' Wed Sep 7 03:12:05 2016
-Function ConvertDateToString(input)
- Dim output
- output = WeekDayName(WeekDay(input), TRUE) & " " & _
- MonthName(Month(input), TRUE) & " "
- If (Len(Day(input)) = 1) Then
- output = output & " "
- End If
- output = output & _
- Day(input) & " " & _
- FormatDateTime(input, vbShortTime) & ":"
- If (Len(Second(input)) = 1) Then
- output = output & "0"
- End If
- output = output & _
- Second(input) & " " & _
- Year(input)
- ConvertDateToString = output
-End Function
-
-' Convert local Date to UTC. Microsoft says:
-' Use Win32_ComputerSystem CurrentTimeZone property, because it automatically
-' adjusts the Time Zone bias for daylight saving time; Win32_Time Zone Bias
-' property does not.
-' https://msdn.microsoft.com/en-us/library/windows/desktop/ms696015.aspx
-Function LocalDateToUTC(localdate)
- Dim item, offset
- For Each item In GetObject("winmgmts:").InstancesOf("Win32_ComputerSystem")
- offset = item.CurrentTimeZone ' the offset in minutes
- Next
- If (offset < 0) Then
- LocalDateToUTC = DateAdd("n", ABS(offset), localdate)
- Else
- LocalDateToUTC = DateAdd("n", -ABS(offset), localdate)
- End If
- 'objShell.PopUp LocalDateToUTC
-End Function
-
-Function FileSHA256(filename)
- Dim cmd, rval, tmpOut, tmpFh
- if (myUseOpenSSL = TRUE) Then
- tmpOut = objFSO.GetSpecialFolder(2).Path & "\" & objFSO.GetTempName
- cmd = """" & myOpenSSL & """ dgst -r -sha256 -out """ & tmpOut & """ """ & filename & """"
- rval = objShell.Run(cmd, 0, TRUE)
- If Not (rval = 0) Then
- MsgBox("Failed to get sha256 of """ & filename & """ with OpenSSL commandline!"), vbCritical, mySelf
- objFSO.DeleteFile tmpOut, TRUE
- WScript.Quit 3
- End If
- Set tmpFh = objFSO.OpenTextFile(tmpOut, 1)
- FileSHA256 = RegExprFirst("^([0-9a-f]{64}) .+", tmpFh.ReadAll)
- tmpFh.Close
- objFSO.DeleteFile tmpOut, TRUE
- Else
- FileSHA256 = ""
- End If
-End Function
diff --git a/lib/mprintf.c b/lib/mprintf.c
index 0fd3afc8a..8a7c17a7f 100644
--- a/lib/mprintf.c
+++ b/lib/mprintf.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1999 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
*
* Purpose:
* A merge of Bjorn Reese's format() function and Daniel's dsprintf()
@@ -65,7 +67,6 @@
*/
#if (defined(__BORLANDC__) && (__BORLANDC__ >= 0x520)) || \
- (defined(__WATCOMC__) && defined(__386__)) || \
(defined(__POCC__) && defined(_MSC_VER)) || \
(defined(_WIN32_WCE)) || \
(defined(__MINGW32__)) || \
@@ -317,6 +318,11 @@ static int dprintf_Pass1(const char *format, struct va_stack *vto,
flags |= FLAGS_PREC;
precision = strtol(fmt, &fmt, 10);
}
+ if((flags & (FLAGS_PREC | FLAGS_PRECPARAM)) ==
+ (FLAGS_PREC | FLAGS_PRECPARAM))
+ /* it is not permitted to use both kinds of precision for the same
+ argument */
+ return 1;
break;
case 'h':
flags |= FLAGS_SHORT;
@@ -593,7 +599,7 @@ static int dprintf_formatf(
/* Do the actual %-code parsing */
if(dprintf_Pass1(format, vto, endpos, ap_save))
- return -1;
+ return 0;
end = &endpos[0]; /* the initial end-position from the list dprintf_Pass1()
created for us */
@@ -830,6 +836,8 @@ static int dprintf_formatf(
}
else if(prec != -1)
len = (size_t)prec;
+ else if(*str == '\0')
+ len = 0;
else
len = strlen(str);
@@ -953,11 +961,22 @@ static int dprintf_formatf(
else
*fptr++ = 'f';
- *fptr = 0; /* and a final zero termination */
+ *fptr = 0; /* and a final null-termination */
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-nonliteral"
+#endif
/* NOTE NOTE NOTE!! Not all sprintf implementations return number of
output characters */
+#ifdef HAVE_SNPRINTF
+ (snprintf)(work, sizeof(work), formatbuf, p->data.dnum);
+#else
(sprintf)(work, formatbuf, p->data.dnum);
+#endif
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
DEBUGASSERT(strlen(work) <= sizeof(work));
for(fptr = work; *fptr; fptr++)
OUTCHAR(*fptr);
@@ -1015,11 +1034,12 @@ int curl_mvsnprintf(char *buffer, size_t maxlength, const char *format,
info.max = maxlength;
retcode = dprintf_formatf(&info, addbyter, format, ap_save);
- if((retcode != -1) && info.max) {
+ if(info.max) {
/* we terminate this with a zero byte */
if(info.max == info.length) {
/* we're at maximum, scrap the last letter */
info.buffer[-1] = 0;
+ DEBUGASSERT(retcode);
retcode--; /* don't count the nul byte */
}
else
@@ -1057,13 +1077,12 @@ extern int Curl_dyn_vprintf(struct dynbuf *dyn,
/* appends the formatted string, returns 0 on success, 1 on error */
int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save)
{
- int retcode;
struct asprintf info;
info.b = dyn;
info.fail = 0;
- retcode = dprintf_formatf(&info, alloc_addbyter, format, ap_save);
- if((-1 == retcode) || info.fail) {
+ (void)dprintf_formatf(&info, alloc_addbyter, format, ap_save);
+ if(info.fail) {
Curl_dyn_free(info.b);
return 1;
}
@@ -1072,15 +1091,14 @@ int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save)
char *curl_mvaprintf(const char *format, va_list ap_save)
{
- int retcode;
struct asprintf info;
struct dynbuf dyn;
info.b = &dyn;
Curl_dyn_init(info.b, DYN_APRINTF);
info.fail = 0;
- retcode = dprintf_formatf(&info, alloc_addbyter, format, ap_save);
- if((-1 == retcode) || info.fail) {
+ (void)dprintf_formatf(&info, alloc_addbyter, format, ap_save);
+ if(info.fail) {
Curl_dyn_free(info.b);
return NULL;
}
diff --git a/lib/mqtt.c b/lib/mqtt.c
index fcd40b41e..4f3d14386 100644
--- a/lib/mqtt.c
+++ b/lib/mqtt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2019, Björn Stenberg, <bjorn@haxx.se>
*
* This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -60,6 +62,8 @@
*/
static CURLcode mqtt_do(struct Curl_easy *data, bool *done);
+static CURLcode mqtt_done(struct Curl_easy *data,
+ CURLcode status, bool premature);
static CURLcode mqtt_doing(struct Curl_easy *data, bool *done);
static int mqtt_getsock(struct Curl_easy *data, struct connectdata *conn,
curl_socket_t *sock);
@@ -74,7 +78,7 @@ const struct Curl_handler Curl_handler_mqtt = {
"MQTT", /* scheme */
mqtt_setup_conn, /* setup_connection */
mqtt_do, /* do_it */
- ZERO_NULL, /* done */
+ mqtt_done, /* done */
ZERO_NULL, /* do_more */
ZERO_NULL, /* connect_it */
ZERO_NULL, /* connecting */
@@ -182,7 +186,7 @@ static int add_passwd(const char *passwd, const size_t plen,
return 0;
}
-/* add user to the CONN packet */
+/* add user to the CONNECT packet */
static int add_user(const char *username, const size_t ulen,
unsigned char *pkt, const size_t start, int remain_pos)
{
@@ -200,7 +204,7 @@ static int add_user(const char *username, const size_t ulen,
return 0;
}
-/* add client ID to the CONN packet */
+/* add client ID to the CONNECT packet */
static int add_client_id(const char *client_id, const size_t client_id_len,
char *pkt, const size_t start)
{
@@ -212,7 +216,7 @@ static int add_client_id(const char *client_id, const size_t client_id_len,
return 0;
}
-/* Set initial values of CONN packet */
+/* Set initial values of CONNECT packet */
static int init_connpack(char *packet, char *remain, int remain_pos)
{
/* Fixed header starts */
@@ -289,7 +293,7 @@ static CURLcode mqtt_connect(struct Curl_easy *data)
return CURLE_OUT_OF_MEMORY;
memset(packet, 0, packetlen);
- /* set initial values for CONN pack */
+ /* set initial values for the CONNECT packet */
pos = init_connpack(packet, remain, remain_pos);
result = Curl_rand_hex(data, (unsigned char *)&client_id[clen],
@@ -344,7 +348,9 @@ end:
static CURLcode mqtt_disconnect(struct Curl_easy *data)
{
CURLcode result = CURLE_OK;
+ struct MQTT *mq = data->req.p.mqtt;
result = mqtt_send(data, (char *)"\xe0\x00", 2);
+ Curl_safefree(mq->sendleftovers);
return result;
}
@@ -383,11 +389,18 @@ static CURLcode mqtt_get_topic(struct Curl_easy *data,
char **topic, size_t *topiclen)
{
char *path = data->state.up.path;
- if(strlen(path) > 1)
- return Curl_urldecode(data, path + 1, 0, topic, topiclen,
- REJECT_NADA);
- failf(data, "No MQTT topic found. Forgot to URL encode it?");
- return CURLE_URL_MALFORMAT;
+ CURLcode result = CURLE_URL_MALFORMAT;
+ if(strlen(path) > 1) {
+ result = Curl_urldecode(path + 1, 0, topic, topiclen, REJECT_NADA);
+ if(!result && (*topiclen > 0xffff)) {
+ failf(data, "Too long MQTT topic");
+ result = CURLE_URL_MALFORMAT;
+ }
+ }
+ else
+ failf(data, "No MQTT topic found. Forgot to URL encode it?");
+
+ return result;
}
static CURLcode mqtt_subscribe(struct Curl_easy *data)
@@ -685,13 +698,23 @@ static CURLcode mqtt_do(struct Curl_easy *data, bool *done)
result = mqtt_connect(data);
if(result) {
- failf(data, "Error %d sending MQTT CONN request", result);
+ failf(data, "Error %d sending MQTT CONNECT request", result);
return result;
}
mqstate(data, MQTT_FIRST, MQTT_CONNACK);
return CURLE_OK;
}
+static CURLcode mqtt_done(struct Curl_easy *data,
+ CURLcode status, bool premature)
+{
+ struct MQTT *mq = data->req.p.mqtt;
+ (void)status;
+ (void)premature;
+ Curl_safefree(mq->sendleftovers);
+ return CURLE_OK;
+}
+
static CURLcode mqtt_doing(struct Curl_easy *data, bool *done)
{
CURLcode result = CURLE_OK;
@@ -719,8 +742,14 @@ static CURLcode mqtt_doing(struct Curl_easy *data, bool *done)
case MQTT_FIRST:
/* Read the initial byte only */
result = Curl_read(data, sockfd, (char *)&mq->firstbyte, 1, &nread);
- if(!nread)
+ if(result)
+ break;
+ else if(!nread) {
+ failf(data, "Connection disconnected");
+ *done = TRUE;
+ result = CURLE_RECV_ERROR;
break;
+ }
Curl_debug(data, CURLINFO_HEADER_IN, (char *)&mq->firstbyte, 1);
/* remember the first byte */
mq->npacket = 0;
diff --git a/lib/mqtt.h b/lib/mqtt.h
index fb52c7232..c400d9b14 100644
--- a/lib/mqtt.h
+++ b/lib/mqtt.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2020, Björn Stenberg, <bjorn@haxx.se>
+ * Copyright (C) 2019 - 2022, Björn Stenberg, <bjorn@haxx.se>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_MQTT
diff --git a/lib/multi.c b/lib/multi.c
index f8dcc63b4..51acba73a 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -43,7 +45,6 @@
#include "multihandle.h"
#include "sigpipe.h"
#include "vtls/vtls.h"
-#include "connect.h"
#include "http_proxy.h"
#include "http2.h"
#include "socketpair.h"
@@ -53,6 +54,22 @@
#include "curl_memory.h"
#include "memdebug.h"
+#ifdef __APPLE__
+
+#define wakeup_write write
+#define wakeup_read read
+#define wakeup_close close
+#define wakeup_create pipe
+
+#else /* __APPLE__ */
+
+#define wakeup_write swrite
+#define wakeup_read sread
+#define wakeup_close sclose
+#define wakeup_create(p) Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, p)
+
+#endif /* __APPLE__ */
+
/*
CURL_SOCKET_HASH_TABLE_SIZE should be a prime number. Increasing it from 97
to 911 takes on a 32-bit machine 4 x 804 = 3211 more bytes. Still, every
@@ -66,6 +83,10 @@
#define CURL_CONNECTION_HASH_SIZE 97
#endif
+#ifndef CURL_DNS_HASH_SIZE
+#define CURL_DNS_HASH_SIZE 71
+#endif
+
#define CURL_MULTI_HANDLE 0x000bab1e
#define GOOD_MULTI_HANDLE(x) \
@@ -118,7 +139,7 @@ static void init_completed(struct Curl_easy *data)
/* Important: reset the conn pointer so that we don't point to memory
that could be freed anytime */
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
Curl_expire_clear(data); /* stop all timers */
}
@@ -370,7 +391,8 @@ static CURLMcode multi_addmsg(struct Curl_multi *multi,
}
struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
- int chashsize) /* connection hash */
+ int chashsize, /* connection hash */
+ int dnssize) /* dns hash */
{
struct Curl_multi *multi = calloc(1, sizeof(struct Curl_multi));
@@ -379,7 +401,7 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
multi->magic = CURL_MULTI_HANDLE;
- Curl_init_dnscache(&multi->hostcache);
+ Curl_init_dnscache(&multi->hostcache, dnssize);
sh_init(&multi->sockhash, hashsize);
@@ -394,7 +416,6 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
/* -1 means it not set by user, use the default value */
multi->maxconnects = -1;
multi->max_concurrent_streams = 100;
- multi->ipv6_works = Curl_ipv6works(NULL);
#ifdef USE_WINSOCK
multi->wsa_event = WSACreateEvent();
@@ -402,14 +423,14 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
goto error;
#else
#ifdef ENABLE_WAKEUP
- if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, multi->wakeup_pair) < 0) {
+ if(wakeup_create(multi->wakeup_pair) < 0) {
multi->wakeup_pair[0] = CURL_SOCKET_BAD;
multi->wakeup_pair[1] = CURL_SOCKET_BAD;
}
else if(curlx_nonblock(multi->wakeup_pair[0], TRUE) < 0 ||
curlx_nonblock(multi->wakeup_pair[1], TRUE) < 0) {
- sclose(multi->wakeup_pair[0]);
- sclose(multi->wakeup_pair[1]);
+ wakeup_close(multi->wakeup_pair[0]);
+ wakeup_close(multi->wakeup_pair[1]);
multi->wakeup_pair[0] = CURL_SOCKET_BAD;
multi->wakeup_pair[1] = CURL_SOCKET_BAD;
}
@@ -433,7 +454,8 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
struct Curl_multi *curl_multi_init(void)
{
return Curl_multi_handle(CURL_SOCKET_HASH_TABLE_SIZE,
- CURL_CONNECTION_HASH_SIZE);
+ CURL_CONNECTION_HASH_SIZE,
+ CURL_DNS_HASH_SIZE);
}
CURLMcode curl_multi_add_handle(struct Curl_multi *multi,
@@ -627,7 +649,7 @@ static CURLcode multi_done(struct Curl_easy *data,
if(CURLE_ABORTED_BY_CALLBACK != result) {
/* avoid this if we already aborted by callback to avoid this calling
another callback */
- CURLcode rc = Curl_pgrsDone(data);
+ int rc = Curl_pgrsDone(data);
if(!result && rc)
result = CURLE_ABORTED_BY_CALLBACK;
}
@@ -635,7 +657,7 @@ static CURLcode multi_done(struct Curl_easy *data,
process_pending_handles(data->multi); /* connection / multiplex */
CONNCACHE_LOCK(data);
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
if(CONN_INUSE(conn)) {
/* Stop if still used. */
CONNCACHE_UNLOCK(data);
@@ -687,16 +709,10 @@ static CURLcode multi_done(struct Curl_easy *data,
#endif
) || conn->bits.close
|| (premature && !(conn->handler->flags & PROTOPT_STREAM))) {
- CURLcode res2;
connclose(conn, "disconnecting");
Curl_conncache_remove_conn(data, conn, FALSE);
CONNCACHE_UNLOCK(data);
- res2 = Curl_disconnect(data, conn, premature);
-
- /* If we had an error already, make sure we return that one. But
- if we got a new error, return that. */
- if(!result && res2)
- result = res2;
+ Curl_disconnect(data, conn, premature);
}
else {
char buffer[256];
@@ -709,14 +725,15 @@ static CURLcode multi_done(struct Curl_easy *data,
conn->bits.conn_to_host ? conn->conn_to_host.dispname :
conn->host.dispname;
/* create string before returning the connection */
+ long connection_id = conn->connection_id;
msnprintf(buffer, sizeof(buffer),
"Connection #%ld to host %s left intact",
- conn->connection_id, host);
+ connection_id, host);
/* the connection is no longer in use by this transfer */
CONNCACHE_UNLOCK(data);
if(Curl_conncache_return_conn(data, conn)) {
/* remember the most recently used connection */
- data->state.lastconnect_id = conn->connection_id;
+ data->state.lastconnect_id = connection_id;
infof(data, "%s", buffer);
}
else
@@ -724,7 +741,6 @@ static CURLcode multi_done(struct Curl_easy *data,
}
Curl_safefree(data->state.buffer);
- Curl_free_request_state(data);
return result;
}
@@ -735,7 +751,7 @@ static int close_connect_only(struct Curl_easy *data,
if(data->state.lastconnect_id != conn->connection_id)
return 0;
- if(!conn->bits.connect_only)
+ if(!conn->connect_only)
return 1;
connclose(conn, "Removing connect-only easy handle");
@@ -830,7 +846,25 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
that vanish with this handle */
/* Remove the association between the connection and the handle */
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
+
+ if(data->set.connect_only && !data->multi_easy) {
+ /* This removes a handle that was part the multi interface that used
+ CONNECT_ONLY, that connection is now left alive but since this handle
+ has bits.close set nothing can use that transfer anymore and it is
+ forbidden from reuse. And this easy handle cannot find the connection
+ anymore once removed from the multi handle
+
+ Better close the connection here, at once.
+ */
+ struct connectdata *c;
+ curl_socket_t s;
+ s = Curl_getconnectinfo(data, &c);
+ if((s != CURL_SOCKET_BAD) && c) {
+ Curl_conncache_remove_conn(data, c, TRUE);
+ Curl_disconnect(data, c, TRUE);
+ }
+ }
if(data->state.lastconnect_id != -1) {
/* Mark any connect-only connection for closure */
@@ -905,12 +939,12 @@ bool Curl_multiplex_wanted(const struct Curl_multi *multi)
}
/*
- * Curl_detach_connnection() removes the given transfer from the connection.
+ * Curl_detach_connection() removes the given transfer from the connection.
*
* This is the only function that should clear data->conn. This will
* occasionally be called with the data->conn pointer already cleared.
*/
-void Curl_detach_connnection(struct Curl_easy *data)
+void Curl_detach_connection(struct Curl_easy *data)
{
struct connectdata *conn = data->conn;
if(conn) {
@@ -922,11 +956,11 @@ void Curl_detach_connnection(struct Curl_easy *data)
}
/*
- * Curl_attach_connnection() attaches this transfer to this connection.
+ * Curl_attach_connection() attaches this transfer to this connection.
*
* This is the only function that should assign data->conn
*/
-void Curl_attach_connnection(struct Curl_easy *data,
+void Curl_attach_connection(struct Curl_easy *data,
struct connectdata *conn)
{
DEBUGASSERT(!data->conn);
@@ -1313,16 +1347,19 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
pollrc = Curl_poll(ufds, nfds, 0); /* just pre-check with WinSock */
else
pollrc = 0;
- if(pollrc <= 0) /* now wait... if not ready during the pre-check above */
- WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, timeout_ms, FALSE);
#else
pollrc = Curl_poll(ufds, nfds, timeout_ms); /* wait... */
#endif
+ if(pollrc < 0)
+ return CURLM_UNRECOVERABLE_POLL;
if(pollrc > 0) {
retcode = pollrc;
#ifdef USE_WINSOCK
}
+ else { /* now wait... if not ready during the pre-check (pollrc == 0) */
+ WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, timeout_ms, FALSE);
+ }
/* With WinSock, we have to run the following section unconditionally
to call WSAEventSelect(fd, event, 0) on all the sockets */
{
@@ -1334,20 +1371,23 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
unsigned r = ufds[curlfds + i].revents;
unsigned short mask = 0;
#ifdef USE_WINSOCK
+ curl_socket_t s = extra_fds[i].fd;
wsa_events.lNetworkEvents = 0;
- if(WSAEnumNetworkEvents(extra_fds[i].fd, NULL, &wsa_events) == 0) {
+ if(WSAEnumNetworkEvents(s, NULL, &wsa_events) == 0) {
if(wsa_events.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE))
mask |= CURL_WAIT_POLLIN;
if(wsa_events.lNetworkEvents & (FD_WRITE|FD_CONNECT|FD_CLOSE))
mask |= CURL_WAIT_POLLOUT;
if(wsa_events.lNetworkEvents & FD_OOB)
mask |= CURL_WAIT_POLLPRI;
- if(ret && pollrc <= 0 && wsa_events.lNetworkEvents)
+ if(ret && !pollrc && wsa_events.lNetworkEvents)
retcode++;
}
- WSAEventSelect(extra_fds[i].fd, multi->wsa_event, 0);
- if(pollrc <= 0)
+ WSAEventSelect(s, multi->wsa_event, 0);
+ if(!pollrc) {
+ extra_fds[i].revents = mask;
continue;
+ }
#endif
if(r & POLLIN)
mask |= CURL_WAIT_POLLIN;
@@ -1370,7 +1410,7 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
if(bitmap & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i))) {
wsa_events.lNetworkEvents = 0;
if(WSAEnumNetworkEvents(sockbunch[i], NULL, &wsa_events) == 0) {
- if(ret && pollrc <= 0 && wsa_events.lNetworkEvents)
+ if(ret && !pollrc && wsa_events.lNetworkEvents)
retcode++;
}
WSAEventSelect(sockbunch[i], multi->wsa_event, 0);
@@ -1397,7 +1437,7 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
data from it until it receives an error (except EINTR).
In normal cases it will get EAGAIN or EWOULDBLOCK
when there is no more data, breaking the loop. */
- nread = sread(multi->wakeup_pair[0], buf, sizeof(buf));
+ nread = wakeup_read(multi->wakeup_pair[0], buf, sizeof(buf));
if(nread <= 0) {
if(nread < 0 && EINTR == SOCKERRNO)
continue;
@@ -1490,7 +1530,7 @@ CURLMcode curl_multi_wakeup(struct Curl_multi *multi)
that will call curl_multi_wait(). If swrite() returns that it
would block, it's considered successful because it means that
previous calls to this function will wake up the poll(). */
- if(swrite(multi->wakeup_pair[1], buf, sizeof(buf)) < 0) {
+ if(wakeup_write(multi->wakeup_pair[1], buf, sizeof(buf)) < 0) {
int err = SOCKERRNO;
int return_success;
#ifdef USE_WINSOCK
@@ -1546,7 +1586,7 @@ CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
/* take this handle to the perform state right away */
multistate(data, MSTATE_PERFORMING);
- Curl_attach_connnection(data, conn);
+ Curl_attach_connection(data, conn);
k->keepon |= KEEP_RECV; /* setup to receive! */
}
return rc;
@@ -1759,6 +1799,10 @@ CURLcode Curl_preconnect(struct Curl_easy *data)
return CURLE_OK;
}
+static void set_in_callback(struct Curl_multi *multi, bool value)
+{
+ multi->in_callback = value;
+}
static CURLMcode multi_runsingle(struct Curl_multi *multi,
struct curltime *nowp,
@@ -1795,7 +1839,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
rc = CURLM_OK;
if(multi_ischanged(multi, TRUE)) {
- DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!"));
+ DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue"));
process_pending_handles(multi); /* multiplexed */
}
@@ -2098,7 +2142,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
}
}
- if(data->set.connect_only) {
+ if(data->set.connect_only == 1) {
/* keep connection open for application to use the socket */
connkeep(data->conn, "CONNECT_ONLY");
multistate(data, MSTATE_DONE);
@@ -2169,8 +2213,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
Curl_posttransfer(data);
drc = multi_done(data, result, FALSE);
- /* When set to retry the connection, we must to go back to
- * the CONNECT state */
+ /* When set to retry the connection, we must go back to the CONNECT
+ * state */
if(newurl) {
if(!drc || (drc == CURLE_SEND_ERROR)) {
follow = FOLLOW_RETRY;
@@ -2382,7 +2426,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
CURLcode ret = Curl_retry_request(data, &newurl);
if(!ret) {
- infof(data, "Downgrades to HTTP/1.1!");
+ infof(data, "Downgrades to HTTP/1.1");
streamclose(data->conn, "Disconnect HTTP/2 for HTTP/1");
data->state.httpwant = CURL_HTTP_VERSION_1_1;
/* clear the error message bit too as we ignore the one we got */
@@ -2560,7 +2604,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
/* This is where we make sure that the conn pointer is reset.
We don't have to do this in every case block above where a
failure is detected */
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
/* remove connection from cache */
Curl_conncache_remove_conn(data, conn, TRUE);
@@ -2722,8 +2766,8 @@ CURLMcode curl_multi_cleanup(struct Curl_multi *multi)
WSACloseEvent(multi->wsa_event);
#else
#ifdef ENABLE_WAKEUP
- sclose(multi->wakeup_pair[0]);
- sclose(multi->wakeup_pair[1]);
+ wakeup_close(multi->wakeup_pair[0]);
+ wakeup_close(multi->wakeup_pair[1]);
#endif
#endif
free(multi);
@@ -2872,8 +2916,10 @@ static CURLMcode singlesocket(struct Curl_multi *multi,
continue;
if(multi->socket_cb) {
+ set_in_callback(multi, TRUE);
rc = multi->socket_cb(data, s, comboaction, multi->socket_userp,
entry->socketp);
+ set_in_callback(multi, FALSE);
if(rc == -1) {
multi->dead = TRUE;
return CURLM_ABORTED_BY_CALLBACK;
@@ -2914,8 +2960,10 @@ static CURLMcode singlesocket(struct Curl_multi *multi,
entry->readers--;
if(!entry->users) {
if(multi->socket_cb) {
+ set_in_callback(multi, TRUE);
rc = multi->socket_cb(data, s, CURL_POLL_REMOVE,
multi->socket_userp, entry->socketp);
+ set_in_callback(multi, FALSE);
if(rc == -1) {
multi->dead = TRUE;
return CURLM_ABORTED_BY_CALLBACK;
@@ -2969,9 +3017,12 @@ void Curl_multi_closed(struct Curl_easy *data, curl_socket_t s)
if(entry) {
int rc = 0;
- if(multi->socket_cb)
+ if(multi->socket_cb) {
+ set_in_callback(multi, TRUE);
rc = multi->socket_cb(data, s, CURL_POLL_REMOVE,
multi->socket_userp, entry->socketp);
+ set_in_callback(multi, FALSE);
+ }
/* now remove it from the socket hash */
sh_delentry(entry, &multi->sockhash, s);
@@ -3343,7 +3394,9 @@ CURLMcode Curl_update_timer(struct Curl_multi *multi)
multi->timer_lastcall = none;
/* there's no timeout now but there was one previously, tell the app to
disable it */
+ set_in_callback(multi, TRUE);
rc = multi->timer_cb(multi, -1, multi->timer_userp);
+ set_in_callback(multi, FALSE);
if(rc == -1) {
multi->dead = TRUE;
return CURLM_ABORTED_BY_CALLBACK;
@@ -3362,7 +3415,9 @@ CURLMcode Curl_update_timer(struct Curl_multi *multi)
multi->timer_lastcall = multi->timetree->key;
+ set_in_callback(multi, TRUE);
rc = multi->timer_cb(multi, timeout_ms, multi->timer_userp);
+ set_in_callback(multi, FALSE);
if(rc == -1) {
multi->dead = TRUE;
return CURLM_ABORTED_BY_CALLBACK;
@@ -3561,9 +3616,6 @@ CURLMcode curl_multi_assign(struct Curl_multi *multi, curl_socket_t s,
{
struct Curl_sh_entry *there = NULL;
- if(multi->in_callback)
- return CURLM_RECURSIVE_API_CALL;
-
there = sh_getentry(&multi->sockhash, s);
if(!there)
diff --git a/lib/multihandle.h b/lib/multihandle.h
index db7f130ef..a997784ea 100644
--- a/lib/multihandle.h
+++ b/lib/multihandle.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "llist.h"
@@ -148,11 +150,13 @@ struct Curl_multi {
0 is used for read, 1 is used for write */
#endif
#endif
- /* multiplexing wanted */
- bool multiplexing;
- bool recheckstate; /* see Curl_multi_connchanged */
+#define IPV6_UNKNOWN 0
+#define IPV6_DEAD 1
+#define IPV6_WORKS 2
+ unsigned char ipv6_up; /* IPV6_* defined */
+ bool multiplexing; /* multiplexing wanted */
+ bool recheckstate; /* see Curl_multi_connchanged */
bool in_callback; /* true while executing a callback */
- bool ipv6_works;
#ifdef USE_OPENSSL
bool ssl_seeded;
#endif
diff --git a/lib/multiif.h b/lib/multiif.h
index f4d0ada8e..0cb9d4f7f 100644
--- a/lib/multiif.h
+++ b/lib/multiif.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -31,17 +33,18 @@ void Curl_expire(struct Curl_easy *data, timediff_t milli, expire_id);
void Curl_expire_clear(struct Curl_easy *data);
void Curl_expire_done(struct Curl_easy *data, expire_id id);
CURLMcode Curl_update_timer(struct Curl_multi *multi) WARN_UNUSED_RESULT;
-void Curl_attach_connnection(struct Curl_easy *data,
+void Curl_attach_connection(struct Curl_easy *data,
struct connectdata *conn);
-void Curl_detach_connnection(struct Curl_easy *data);
+void Curl_detach_connection(struct Curl_easy *data);
bool Curl_multiplex_wanted(const struct Curl_multi *multi);
void Curl_set_in_callback(struct Curl_easy *data, bool value);
bool Curl_is_in_callback(struct Curl_easy *easy);
CURLcode Curl_preconnect(struct Curl_easy *data);
/* Internal version of curl_multi_init() accepts size parameters for the
- socket and connection hashes */
-struct Curl_multi *Curl_multi_handle(int hashsize, int chashsize);
+ socket, connection and dns hashes */
+struct Curl_multi *Curl_multi_handle(int hashsize, int chashsize,
+ int dnssize);
/* the write bits start at bit 16 for the *getsock() bitmap */
#define GETSOCK_WRITEBITSTART 16
diff --git a/lib/netrc.c b/lib/netrc.c
index 0a4ae2cdc..4461b8492 100644
--- a/lib/netrc.c
+++ b/lib/netrc.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -31,6 +33,7 @@
#include "netrc.h"
#include "strtok.h"
#include "strcase.h"
+#include "curl_get_line.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -56,8 +59,6 @@ enum host_lookup_state {
static int parsenetrc(const char *host,
char **loginp,
char **passwordp,
- bool *login_changed,
- bool *password_changed,
char *netrcfile)
{
FILE *file;
@@ -71,31 +72,87 @@ static int parsenetrc(const char *host,
char state_login = 0; /* Found a login keyword */
char state_password = 0; /* Found a password keyword */
- int state_our_login = FALSE; /* With specific_login, found *our* login
- name */
+ int state_our_login = TRUE; /* With specific_login, found *our* login
+ name (or login-less line) */
DEBUGASSERT(netrcfile);
file = fopen(netrcfile, FOPEN_READTEXT);
if(file) {
- char *tok;
- char *tok_buf;
bool done = FALSE;
char netrcbuffer[4096];
int netrcbuffsize = (int)sizeof(netrcbuffer);
- while(!done && fgets(netrcbuffer, netrcbuffsize, file)) {
+ while(!done && Curl_get_line(netrcbuffer, netrcbuffsize, file)) {
+ char *tok;
+ char *tok_end;
+ bool quoted;
if(state == MACDEF) {
if((netrcbuffer[0] == '\n') || (netrcbuffer[0] == '\r'))
state = NOTHING;
else
continue;
}
- tok = strtok_r(netrcbuffer, " \t\n", &tok_buf);
- if(tok && *tok == '#')
- /* treat an initial hash as a comment line */
- continue;
+ tok = netrcbuffer;
while(tok) {
+ while(ISBLANK(*tok))
+ tok++;
+ /* tok is first non-space letter */
+ if(!*tok || (*tok == '#'))
+ /* end of line or the rest is a comment */
+ break;
+
+ /* leading double-quote means quoted string */
+ quoted = (*tok == '\"');
+
+ tok_end = tok;
+ if(!quoted) {
+ while(!ISSPACE(*tok_end))
+ tok_end++;
+ *tok_end = 0;
+ }
+ else {
+ bool escape = FALSE;
+ bool endquote = FALSE;
+ char *store = tok;
+ tok_end++; /* pass the leading quote */
+ while(*tok_end) {
+ char s = *tok_end;
+ if(escape) {
+ escape = FALSE;
+ switch(s) {
+ case 'n':
+ s = '\n';
+ break;
+ case 'r':
+ s = '\r';
+ break;
+ case 't':
+ s = '\t';
+ break;
+ }
+ }
+ else if(s == '\\') {
+ escape = TRUE;
+ tok_end++;
+ continue;
+ }
+ else if(s == '\"') {
+ tok_end++; /* pass the ending quote */
+ endquote = TRUE;
+ break;
+ }
+ *store++ = s;
+ tok_end++;
+ }
+ *store = 0;
+ if(escape || !endquote) {
+ /* bad syntax, get out */
+ retcode = NETRC_FAILED;
+ goto out;
+ }
+ }
+
if((login && *login) && (password && *password)) {
done = TRUE;
break;
@@ -140,9 +197,9 @@ static int parsenetrc(const char *host,
/* we are now parsing sub-keywords concerning "our" host */
if(state_login) {
if(specific_login) {
- state_our_login = strcasecompare(login, tok);
+ state_our_login = !Curl_timestrcmp(login, tok);
}
- else if(!login || strcmp(login, tok)) {
+ else if(!login || Curl_timestrcmp(login, tok)) {
if(login_alloc) {
free(login);
login_alloc = FALSE;
@@ -158,7 +215,7 @@ static int parsenetrc(const char *host,
}
else if(state_password) {
if((state_our_login || !specific_login)
- && (!password || strcmp(password, tok))) {
+ && (!password || Curl_timestrcmp(password, tok))) {
if(password_alloc) {
free(password);
password_alloc = FALSE;
@@ -183,27 +240,22 @@ static int parsenetrc(const char *host,
}
break;
} /* switch (state) */
-
- tok = strtok_r(NULL, " \t\n", &tok_buf);
- } /* while(tok) */
- } /* while fgets() */
+ tok = ++tok_end;
+ }
+ } /* while Curl_get_line() */
out:
if(!retcode) {
/* success */
- *login_changed = FALSE;
- *password_changed = FALSE;
if(login_alloc) {
if(*loginp)
free(*loginp);
*loginp = login;
- *login_changed = TRUE;
}
if(password_alloc) {
if(*passwordp)
free(*passwordp);
*passwordp = password;
- *password_changed = TRUE;
}
}
else {
@@ -224,17 +276,16 @@ static int parsenetrc(const char *host,
* *loginp and *passwordp MUST be allocated if they aren't NULL when passed
* in.
*/
-int Curl_parsenetrc(const char *host,
- char **loginp,
- char **passwordp,
- bool *login_changed,
- bool *password_changed,
+int Curl_parsenetrc(const char *host, char **loginp, char **passwordp,
char *netrcfile)
{
int retcode = 1;
char *filealloc = NULL;
if(!netrcfile) {
+#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
+ char pwbuf[1024];
+#endif
char *home = NULL;
char *homea = curl_getenv("HOME"); /* portable environment reader */
if(homea) {
@@ -243,7 +294,6 @@ int Curl_parsenetrc(const char *host,
}
else {
struct passwd pw, *pw_res;
- char pwbuf[1024];
if(!getpwuid_r(geteuid(), &pw, pwbuf, sizeof(pwbuf), &pw_res)
&& pw_res) {
home = pw.pw_dir;
@@ -256,6 +306,13 @@ int Curl_parsenetrc(const char *host,
if(pw) {
home = pw->pw_dir;
}
+#elif defined(_WIN32)
+ }
+ else {
+ homea = curl_getenv("USERPROFILE");
+ if(homea) {
+ home = homea;
+ }
#endif
}
@@ -268,8 +325,7 @@ int Curl_parsenetrc(const char *host,
free(homea);
return -1;
}
- retcode = parsenetrc(host, loginp, passwordp, login_changed,
- password_changed, filealloc);
+ retcode = parsenetrc(host, loginp, passwordp, filealloc);
free(filealloc);
#ifdef WIN32
if(retcode == NETRC_FILE_MISSING) {
@@ -279,16 +335,14 @@ int Curl_parsenetrc(const char *host,
free(homea);
return -1;
}
- retcode = parsenetrc(host, loginp, passwordp, login_changed,
- password_changed, filealloc);
+ retcode = parsenetrc(host, loginp, passwordp, filealloc);
free(filealloc);
}
#endif
free(homea);
}
else
- retcode = parsenetrc(host, loginp, passwordp, login_changed,
- password_changed, netrcfile);
+ retcode = parsenetrc(host, loginp, passwordp, netrcfile);
return retcode;
}
diff --git a/lib/netrc.h b/lib/netrc.h
index 4938a5916..53d005672 100644
--- a/lib/netrc.h
+++ b/lib/netrc.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,18 +20,16 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#ifndef CURL_DISABLE_NETRC
/* returns -1 on failure, 0 if the host is found, 1 is the host isn't found */
-int Curl_parsenetrc(const char *host,
- char **loginp,
- char **passwordp,
- bool *login_changed,
- bool *password_changed,
- char *filename);
+int Curl_parsenetrc(const char *host, char **loginp,
+ char **passwordp, char *filename);
/* Assume: (*passwordp)[0]=0, host[0] != 0.
* If (*loginp)[0] = 0, search for login and password within a machine
* section in the netrc.
diff --git a/lib/non-ascii.c b/lib/non-ascii.c
deleted file mode 100644
index 3b77ae98d..000000000
--- a/lib/non-ascii.c
+++ /dev/null
@@ -1,336 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under 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 CURL_DOES_CONVERSIONS
-
-#include <curl/curl.h>
-
-#include "non-ascii.h"
-#include "formdata.h"
-#include "sendf.h"
-#include "urldata.h"
-#include "multiif.h"
-#include "strerror.h"
-
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-#ifdef HAVE_ICONV
-#include <iconv.h>
-/* set default codesets for iconv */
-#ifndef CURL_ICONV_CODESET_OF_NETWORK
-#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
-#endif
-#ifndef CURL_ICONV_CODESET_FOR_UTF8
-#define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
-#endif
-#define ICONV_ERROR (size_t)-1
-#endif /* HAVE_ICONV */
-
-/*
- * Curl_convert_clone() returns a malloced copy of the source string (if
- * returning CURLE_OK), with the data converted to network format.
- */
-CURLcode Curl_convert_clone(struct Curl_easy *data,
- const char *indata,
- size_t insize,
- char **outbuf)
-{
- char *convbuf;
- CURLcode result;
-
- convbuf = malloc(insize);
- if(!convbuf)
- return CURLE_OUT_OF_MEMORY;
-
- memcpy(convbuf, indata, insize);
- result = Curl_convert_to_network(data, convbuf, insize);
- if(result) {
- free(convbuf);
- return result;
- }
-
- *outbuf = convbuf; /* return the converted buffer */
-
- return CURLE_OK;
-}
-
-/*
- * Curl_convert_to_network() is an internal function for performing ASCII
- * conversions on non-ASCII platforms. It converts the buffer _in place_.
- */
-CURLcode Curl_convert_to_network(struct Curl_easy *data,
- char *buffer, size_t length)
-{
- if(data && data->set.convtonetwork) {
- /* use translation callback */
- CURLcode result;
- Curl_set_in_callback(data, true);
- result = data->set.convtonetwork(buffer, length);
- Curl_set_in_callback(data, false);
- if(result) {
- failf(data,
- "CURLOPT_CONV_TO_NETWORK_FUNCTION callback returned %d: %s",
- (int)result, curl_easy_strerror(result));
- }
-
- return result;
- }
- else {
-#ifdef HAVE_ICONV
- /* do the translation ourselves */
- iconv_t tmpcd = (iconv_t) -1;
- iconv_t *cd = &tmpcd;
- char *input_ptr, *output_ptr;
- size_t in_bytes, out_bytes, rc;
- char ebuffer[STRERROR_LEN];
-
- /* open an iconv conversion descriptor if necessary */
- if(data)
- cd = &data->outbound_cd;
- if(*cd == (iconv_t)-1) {
- *cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
- CURL_ICONV_CODESET_OF_HOST);
- if(*cd == (iconv_t)-1) {
- failf(data,
- "The iconv_open(\"%s\", \"%s\") call failed with errno %i: %s",
- CURL_ICONV_CODESET_OF_NETWORK,
- CURL_ICONV_CODESET_OF_HOST,
- errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
- return CURLE_CONV_FAILED;
- }
- }
- /* call iconv */
- input_ptr = output_ptr = buffer;
- in_bytes = out_bytes = length;
- rc = iconv(*cd, &input_ptr, &in_bytes,
- &output_ptr, &out_bytes);
- if(!data)
- iconv_close(tmpcd);
- if((rc == ICONV_ERROR) || (in_bytes)) {
- failf(data,
- "The Curl_convert_to_network iconv call failed with errno %i: %s",
- errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
- return CURLE_CONV_FAILED;
- }
-#else
- failf(data, "CURLOPT_CONV_TO_NETWORK_FUNCTION callback required");
- return CURLE_CONV_REQD;
-#endif /* HAVE_ICONV */
- }
-
- return CURLE_OK;
-}
-
-/*
- * Curl_convert_from_network() is an internal function for performing ASCII
- * conversions on non-ASCII platforms. It converts the buffer _in place_.
- */
-CURLcode Curl_convert_from_network(struct Curl_easy *data,
- char *buffer, size_t length)
-{
- if(data && data->set.convfromnetwork) {
- /* use translation callback */
- CURLcode result;
- Curl_set_in_callback(data, true);
- result = data->set.convfromnetwork(buffer, length);
- Curl_set_in_callback(data, false);
- if(result) {
- failf(data,
- "CURLOPT_CONV_FROM_NETWORK_FUNCTION callback returned %d: %s",
- (int)result, curl_easy_strerror(result));
- }
-
- return result;
- }
- else {
-#ifdef HAVE_ICONV
- /* do the translation ourselves */
- iconv_t tmpcd = (iconv_t) -1;
- iconv_t *cd = &tmpcd;
- char *input_ptr, *output_ptr;
- size_t in_bytes, out_bytes, rc;
- char ebuffer[STRERROR_LEN];
-
- /* open an iconv conversion descriptor if necessary */
- if(data)
- cd = &data->inbound_cd;
- if(*cd == (iconv_t)-1) {
- *cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
- CURL_ICONV_CODESET_OF_NETWORK);
- if(*cd == (iconv_t)-1) {
- failf(data,
- "The iconv_open(\"%s\", \"%s\") call failed with errno %i: %s",
- CURL_ICONV_CODESET_OF_HOST,
- CURL_ICONV_CODESET_OF_NETWORK,
- errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
- return CURLE_CONV_FAILED;
- }
- }
- /* call iconv */
- input_ptr = output_ptr = buffer;
- in_bytes = out_bytes = length;
- rc = iconv(*cd, &input_ptr, &in_bytes,
- &output_ptr, &out_bytes);
- if(!data)
- iconv_close(tmpcd);
- if((rc == ICONV_ERROR) || (in_bytes)) {
- failf(data,
- "Curl_convert_from_network iconv call failed with errno %i: %s",
- errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
- return CURLE_CONV_FAILED;
- }
-#else
- failf(data, "CURLOPT_CONV_FROM_NETWORK_FUNCTION callback required");
- return CURLE_CONV_REQD;
-#endif /* HAVE_ICONV */
- }
-
- return CURLE_OK;
-}
-
-/*
- * Curl_convert_from_utf8() is an internal function for performing UTF-8
- * conversions on non-ASCII platforms.
- */
-CURLcode Curl_convert_from_utf8(struct Curl_easy *data,
- char *buffer, size_t length)
-{
- if(data && data->set.convfromutf8) {
- /* use translation callback */
- CURLcode result;
- Curl_set_in_callback(data, true);
- result = data->set.convfromutf8(buffer, length);
- Curl_set_in_callback(data, false);
- if(result) {
- failf(data,
- "CURLOPT_CONV_FROM_UTF8_FUNCTION callback returned %d: %s",
- (int)result, curl_easy_strerror(result));
- }
-
- return result;
- }
- else {
-#ifdef HAVE_ICONV
- /* do the translation ourselves */
- iconv_t tmpcd = (iconv_t) -1;
- iconv_t *cd = &tmpcd;
- char *input_ptr;
- char *output_ptr;
- size_t in_bytes, out_bytes, rc;
- char ebuffer[STRERROR_LEN];
-
- /* open an iconv conversion descriptor if necessary */
- if(data)
- cd = &data->utf8_cd;
- if(*cd == (iconv_t)-1) {
- *cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
- CURL_ICONV_CODESET_FOR_UTF8);
- if(*cd == (iconv_t)-1) {
- failf(data,
- "The iconv_open(\"%s\", \"%s\") call failed with errno %i: %s",
- CURL_ICONV_CODESET_OF_HOST,
- CURL_ICONV_CODESET_FOR_UTF8,
- errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
- return CURLE_CONV_FAILED;
- }
- }
- /* call iconv */
- input_ptr = output_ptr = buffer;
- in_bytes = out_bytes = length;
- rc = iconv(*cd, &input_ptr, &in_bytes,
- &output_ptr, &out_bytes);
- if(!data)
- iconv_close(tmpcd);
- if((rc == ICONV_ERROR) || (in_bytes)) {
- failf(data,
- "The Curl_convert_from_utf8 iconv call failed with errno %i: %s",
- errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
- return CURLE_CONV_FAILED;
- }
- if(output_ptr < input_ptr) {
- /* null terminate the now shorter output string */
- *output_ptr = 0x00;
- }
-#else
- failf(data, "CURLOPT_CONV_FROM_UTF8_FUNCTION callback required");
- return CURLE_CONV_REQD;
-#endif /* HAVE_ICONV */
- }
-
- return CURLE_OK;
-}
-
-/*
- * Init conversion stuff for a Curl_easy
- */
-void Curl_convert_init(struct Curl_easy *data)
-{
-#if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
- /* conversion descriptors for iconv calls */
- data->outbound_cd = (iconv_t)-1;
- data->inbound_cd = (iconv_t)-1;
- data->utf8_cd = (iconv_t)-1;
-#else
- (void)data;
-#endif /* CURL_DOES_CONVERSIONS && HAVE_ICONV */
-}
-
-/*
- * Setup conversion stuff for a Curl_easy
- */
-void Curl_convert_setup(struct Curl_easy *data)
-{
- data->inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
- CURL_ICONV_CODESET_OF_NETWORK);
- data->outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
- CURL_ICONV_CODESET_OF_HOST);
- data->utf8_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
- CURL_ICONV_CODESET_FOR_UTF8);
-}
-
-/*
- * Close conversion stuff for a Curl_easy
- */
-
-void Curl_convert_close(struct Curl_easy *data)
-{
-#ifdef HAVE_ICONV
- /* close iconv conversion descriptors */
- if(data->inbound_cd != (iconv_t)-1) {
- iconv_close(data->inbound_cd);
- }
- if(data->outbound_cd != (iconv_t)-1) {
- iconv_close(data->outbound_cd);
- }
- if(data->utf8_cd != (iconv_t)-1) {
- iconv_close(data->utf8_cd);
- }
-#else
- (void)data;
-#endif /* HAVE_ICONV */
-}
-
-#endif /* CURL_DOES_CONVERSIONS */
diff --git a/lib/non-ascii.h b/lib/non-ascii.h
deleted file mode 100644
index 458e8ef09..000000000
--- a/lib/non-ascii.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef HEADER_CURL_NON_ASCII_H
-#define HEADER_CURL_NON_ASCII_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under 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 CURL_DOES_CONVERSIONS
-
-#include "urldata.h"
-
-/*
- * Curl_convert_clone() returns a malloced copy of the source string (if
- * returning CURLE_OK), with the data converted to network format.
- *
- * If no conversion was needed *outbuf may be NULL.
- */
-CURLcode Curl_convert_clone(struct Curl_easy *data,
- const char *indata,
- size_t insize,
- char **outbuf);
-
-void Curl_convert_init(struct Curl_easy *data);
-void Curl_convert_setup(struct Curl_easy *data);
-void Curl_convert_close(struct Curl_easy *data);
-
-CURLcode Curl_convert_to_network(struct Curl_easy *data,
- char *buffer, size_t length);
-CURLcode Curl_convert_from_network(struct Curl_easy *data,
- char *buffer, size_t length);
-CURLcode Curl_convert_from_utf8(struct Curl_easy *data,
- char *buffer, size_t length);
-#else
-#define Curl_convert_clone(a,b,c,d) ((void)a, CURLE_OK)
-#define Curl_convert_init(x) Curl_nop_stmt
-#define Curl_convert_setup(x) Curl_nop_stmt
-#define Curl_convert_close(x) Curl_nop_stmt
-#define Curl_convert_to_network(a,b,c) ((void)a, CURLE_OK)
-#define Curl_convert_from_network(a,b,c) ((void)a, CURLE_OK)
-#define Curl_convert_from_utf8(a,b,c) ((void)a, CURLE_OK)
-#endif
-
-#endif /* HEADER_CURL_NON_ASCII_H */
diff --git a/lib/nonblock.c b/lib/nonblock.c
index fda2e9ad7..ce73af31c 100644
--- a/lib/nonblock.c
+++ b/lib/nonblock.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -75,7 +77,7 @@ int curlx_nonblock(curl_socket_t sockfd, /* operate on this */
#elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK)
- /* BeOS */
+ /* Orbis OS */
long b = nonblock ? 1L : 0L;
return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
diff --git a/lib/nonblock.h b/lib/nonblock.h
index 761dab4f6..a42f443a4 100644
--- a/lib/nonblock.h
+++ b/lib/nonblock.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <curl/curl.h> /* for curl_socket_t */
diff --git a/lib/noproxy.c b/lib/noproxy.c
new file mode 100644
index 000000000..81f1e0993
--- /dev/null
+++ b/lib/noproxy.c
@@ -0,0 +1,222 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifndef CURL_DISABLE_PROXY
+
+#include "inet_pton.h"
+#include "strcase.h"
+#include "noproxy.h"
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+/*
+ * Curl_cidr4_match() returns TRUE if the given IPv4 address is within the
+ * specified CIDR address range.
+ */
+UNITTEST bool Curl_cidr4_match(const char *ipv4, /* 1.2.3.4 address */
+ const char *network, /* 1.2.3.4 address */
+ unsigned int bits)
+{
+ unsigned int address = 0;
+ unsigned int check = 0;
+
+ if(bits > 32)
+ /* strange input */
+ return FALSE;
+
+ if(1 != Curl_inet_pton(AF_INET, ipv4, &address))
+ return FALSE;
+ if(1 != Curl_inet_pton(AF_INET, network, &check))
+ return FALSE;
+
+ if(bits && (bits != 32)) {
+ unsigned int mask = 0xffffffff << (32 - bits);
+ unsigned int haddr = htonl(address);
+ unsigned int hcheck = htonl(check);
+#if 0
+ fprintf(stderr, "Host %s (%x) network %s (%x) bits %u mask %x => %x\n",
+ ipv4, haddr, network, hcheck, bits, mask,
+ (haddr ^ hcheck) & mask);
+#endif
+ if((haddr ^ hcheck) & mask)
+ return FALSE;
+ return TRUE;
+ }
+ return (address == check);
+}
+
+UNITTEST bool Curl_cidr6_match(const char *ipv6,
+ const char *network,
+ unsigned int bits)
+{
+#ifdef ENABLE_IPV6
+ int bytes;
+ int rest;
+ unsigned char address[16];
+ unsigned char check[16];
+
+ if(!bits)
+ bits = 128;
+
+ bytes = bits/8;
+ rest = bits & 0x07;
+ if(1 != Curl_inet_pton(AF_INET6, ipv6, address))
+ return FALSE;
+ if(1 != Curl_inet_pton(AF_INET6, network, check))
+ return FALSE;
+ if((bytes > 16) || ((bytes == 16) && rest))
+ return FALSE;
+ if(bytes && memcmp(address, check, bytes))
+ return FALSE;
+ if(rest && !((address[bytes] ^ check[bytes]) & (0xff << (8 - rest))))
+ return FALSE;
+
+ return TRUE;
+#else
+ (void)ipv6;
+ (void)network;
+ (void)bits;
+ return FALSE;
+#endif
+}
+
+enum nametype {
+ TYPE_HOST,
+ TYPE_IPV4,
+ TYPE_IPV6
+};
+
+/****************************************************************
+* Checks if the host is in the noproxy list. returns TRUE if it matches and
+* therefore the proxy should NOT be used.
+****************************************************************/
+bool Curl_check_noproxy(const char *name, const char *no_proxy)
+{
+ /* no_proxy=domain1.dom,host.domain2.dom
+ * (a comma-separated list of hosts which should
+ * not be proxied, or an asterisk to override
+ * all proxy variables)
+ */
+ if(no_proxy && no_proxy[0]) {
+ const char *p = no_proxy;
+ size_t namelen;
+ enum nametype type = TYPE_HOST;
+ char hostip[128];
+ if(!strcmp("*", no_proxy))
+ return TRUE;
+
+ /* NO_PROXY was specified and it wasn't just an asterisk */
+
+ if(name[0] == '[') {
+ char *endptr;
+ /* IPv6 numerical address */
+ endptr = strchr(name, ']');
+ if(!endptr)
+ return FALSE;
+ name++;
+ namelen = endptr - name;
+ if(namelen >= sizeof(hostip))
+ return FALSE;
+ memcpy(hostip, name, namelen);
+ hostip[namelen] = 0;
+ name = hostip;
+ type = TYPE_IPV6;
+ }
+ else {
+ unsigned int address;
+ if(1 == Curl_inet_pton(AF_INET, name, &address))
+ type = TYPE_IPV4;
+ namelen = strlen(name);
+ }
+
+ while(*p) {
+ const char *token;
+ size_t tokenlen = 0;
+ bool match = FALSE;
+
+ /* pass blanks */
+ while(*p && ISBLANK(*p))
+ p++;
+
+ token = p;
+ /* pass over the pattern */
+ while(*p && !ISBLANK(*p) && (*p != ',')) {
+ p++;
+ tokenlen++;
+ }
+
+ if(tokenlen) {
+ switch(type) {
+ case TYPE_HOST:
+ if(*token == '.') {
+ ++token;
+ --tokenlen;
+ /* tailmatch */
+ match = (tokenlen <= namelen) &&
+ strncasecompare(token, name + (namelen - tokenlen), namelen);
+ }
+ else
+ match = (tokenlen == namelen) &&
+ strncasecompare(token, name, namelen);
+ break;
+ case TYPE_IPV4:
+ /* FALLTHROUGH */
+ case TYPE_IPV6: {
+ const char *check = token;
+ char *slash = strchr(check, '/');
+ unsigned int bits = 0;
+ char checkip[128];
+ /* if the slash is part of this token, use it */
+ if(slash && (slash < &check[tokenlen])) {
+ bits = atoi(slash + 1);
+ /* copy the check name to a temp buffer */
+ if(tokenlen >= sizeof(checkip))
+ break;
+ memcpy(checkip, check, tokenlen);
+ checkip[ slash - check ] = 0;
+ check = checkip;
+ }
+ if(type == TYPE_IPV6)
+ match = Curl_cidr6_match(name, check, bits);
+ else
+ match = Curl_cidr4_match(name, check, bits);
+ break;
+ }
+ }
+ if(match)
+ return TRUE;
+ } /* if(tokenlen) */
+ while(*p == ',')
+ p++;
+ } /* while(*p) */
+ } /* NO_PROXY was specified and it wasn't just an asterisk */
+
+ return FALSE;
+}
+
+#endif /* CURL_DISABLE_PROXY */
diff --git a/src/tool_convert.h b/lib/noproxy.h
index 59db7646b..8800a2127 100644
--- a/src/tool_convert.h
+++ b/lib/noproxy.h
@@ -1,5 +1,5 @@
-#ifndef HEADER_CURL_TOOL_CONVERT_H
-#define HEADER_CURL_TOOL_CONVERT_H
+#ifndef HEADER_CURL_NOPROXY_H
+#define HEADER_CURL_NOPROXY_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,25 +20,25 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
-#include "tool_setup.h"
-
-#ifdef CURL_DOES_CONVERSIONS
+#include "curl_setup.h"
-#ifdef HAVE_ICONV
+#ifndef CURL_DISABLE_PROXY
-CURLcode convert_to_network(char *buffer, size_t length);
-CURLcode convert_from_network(char *buffer, size_t length);
-void convert_cleanup(void);
+#ifdef DEBUGBUILD
-#endif /* HAVE_ICONV */
-
-char convert_char(curl_infotype infotype, char this_char);
+UNITTEST bool Curl_cidr4_match(const char *ipv4, /* 1.2.3.4 address */
+ const char *network, /* 1.2.3.4 address */
+ unsigned int bits);
+UNITTEST bool Curl_cidr6_match(const char *ipv6,
+ const char *network,
+ unsigned int bits);
+#endif
-#endif /* CURL_DOES_CONVERSIONS */
+bool Curl_check_noproxy(const char *name, const char *no_proxy);
-#if !defined(CURL_DOES_CONVERSIONS) || !defined(HAVE_ICONV)
-#define convert_cleanup() Curl_nop_stmt
#endif
-#endif /* HEADER_CURL_TOOL_CONVERT_H */
+#endif /* HEADER_CURL_NOPROXY_H */
diff --git a/lib/nwlib.c b/lib/nwlib.c
deleted file mode 100644
index 769326892..000000000
--- a/lib/nwlib.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under 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 NETWARE /* Novell NetWare */
-
-#ifdef __NOVELL_LIBC__
-/* For native LibC-based NLM we need to register as a real lib. */
-#include <library.h>
-#include <netware.h>
-#include <screen.h>
-#include <nks/thread.h>
-#include <nks/synch.h>
-
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-struct libthreaddata {
- int _errno;
- void *twentybytes;
-};
-
-struct libdata {
- int x;
- int y;
- int z;
- void *tenbytes;
- NXKey_t perthreadkey; /* if -1, no key obtained... */
- NXMutex_t *lock;
-};
-
-int gLibId = -1;
-void *gLibHandle = (void *) NULL;
-rtag_t gAllocTag = (rtag_t) NULL;
-NXMutex_t *gLibLock = (NXMutex_t *) NULL;
-
-/* internal library function prototypes... */
-int DisposeLibraryData(void *);
-void DisposeThreadData(void *);
-int GetOrSetUpData(int id, struct libdata **data,
- struct libthreaddata **threaddata);
-
-
-int _NonAppStart(void *NLMHandle,
- void *errorScreen,
- const char *cmdLine,
- const char *loadDirPath,
- size_t uninitializedDataLength,
- void *NLMFileHandle,
- int (*readRoutineP)(int conn,
- void *fileHandle, size_t offset,
- size_t nbytes,
- size_t *bytesRead,
- void *buffer),
- size_t customDataOffset,
- size_t customDataSize,
- int messageCount,
- const char **messages)
-{
- NX_LOCK_INFO_ALLOC(liblock, "Per-Application Data Lock", 0);
-
-#ifndef __GNUC__
-#pragma unused(cmdLine)
-#pragma unused(loadDirPath)
-#pragma unused(uninitializedDataLength)
-#pragma unused(NLMFileHandle)
-#pragma unused(readRoutineP)
-#pragma unused(customDataOffset)
-#pragma unused(customDataSize)
-#pragma unused(messageCount)
-#pragma unused(messages)
-#endif
-
- /*
- * Here we process our command line, post errors (to the error screen),
- * perform initializations and anything else we need to do before being able
- * to accept calls into us. If we succeed, we return non-zero and the NetWare
- * Loader will leave us up, otherwise we fail to load and get dumped.
- */
- gAllocTag = AllocateResourceTag(NLMHandle,
- "<library-name> memory allocations",
- AllocSignature);
-
- if(!gAllocTag) {
- OutputToScreen(errorScreen, "Unable to allocate resource tag for "
- "library memory allocations.\n");
- return -1;
- }
-
- gLibId = register_library(DisposeLibraryData);
-
- if(gLibId < -1) {
- OutputToScreen(errorScreen, "Unable to register library with kernel.\n");
- return -1;
- }
-
- gLibHandle = NLMHandle;
-
- gLibLock = NXMutexAlloc(0, 0, &liblock);
-
- if(!gLibLock) {
- OutputToScreen(errorScreen, "Unable to allocate library data lock.\n");
- return -1;
- }
-
- return 0;
-}
-
-/*
- * Here we clean up any resources we allocated. Resource tags is a big part
- * of what we created, but NetWare doesn't ask us to free those.
- */
-void _NonAppStop(void)
-{
- (void) unregister_library(gLibId);
- NXMutexFree(gLibLock);
-}
-
-/*
- * This function cannot be the first in the file for if the file is linked
- * first, then the check-unload function's offset will be nlmname.nlm+0
- * which is how to tell that there isn't one. When the check function is
- * first in the linked objects, it is ambiguous. For this reason, we will
- * put it inside this file after the stop function.
- *
- * Here we check to see if it's alright to ourselves to be unloaded. If not,
- * we return a non-zero value. Right now, there isn't any reason not to allow
- * it.
- */
-int _NonAppCheckUnload(void)
-{
- return 0;
-}
-
-int GetOrSetUpData(int id, struct libdata **appData,
- struct libthreaddata **threadData)
-{
- int err;
- struct libdata *app_data;
- struct libthreaddata *thread_data;
- NXKey_t key;
- NX_LOCK_INFO_ALLOC(liblock, "Application Data Lock", 0);
-
- err = 0;
- thread_data = (struct libthreaddata_t *) NULL;
-
- /*
- * Attempt to get our data for the application calling us. This is where we
- * store whatever application-specific information we need to carry in
- * support of calling applications.
- */
- app_data = (struct libdata *) get_app_data(id);
-
- if(!app_data) {
- /*
- * This application hasn't called us before; set up application AND
- * per-thread data. Of course, just in case a thread from this same
- * application is calling us simultaneously, we better lock our application
- * data-creation mutex. We also need to recheck for data after we acquire
- * the lock because WE might be that other thread that was too late to
- * create the data and the first thread in will have created it.
- */
- NXLock(gLibLock);
-
- app_data = (struct libdata *) get_app_data(id);
- if(!app_data) {
- app_data = calloc(1, sizeof(struct libdata));
-
- if(app_data) {
- app_data->tenbytes = malloc(10);
- app_data->lock = NXMutexAlloc(0, 0, &liblock);
-
- if(!app_data->tenbytes || !app_data->lock) {
- if(app_data->lock)
- NXMutexFree(app_data->lock);
- free(app_data->tenbytes);
- free(app_data);
- app_data = (libdata_t *) NULL;
- err = ENOMEM;
- }
-
- if(app_data) {
- /*
- * Here we burn in the application data that we were trying to get
- * by calling get_app_data(). Next time we call the first function,
- * we'll get this data we're just now setting. We also go on here to
- * establish the per-thread data for the calling thread, something
- * we'll have to do on each application thread the first time
- * it calls us.
- */
- err = set_app_data(gLibId, app_data);
-
- if(err) {
- if(app_data->lock)
- NXMutexFree(app_data->lock);
- free(app_data->tenbytes);
- free(app_data);
- app_data = (libdata_t *) NULL;
- err = ENOMEM;
- }
- else {
- /* create key for thread-specific data... */
- err = NXKeyCreate(DisposeThreadData, (void *) NULL, &key);
-
- if(err) /* (no more keys left?) */
- key = -1;
-
- app_data->perthreadkey = key;
- }
- }
- }
- }
-
- NXUnlock(gLibLock);
- }
-
- if(app_data) {
- key = app_data->perthreadkey;
-
- if(key != -1 /* couldn't create a key? no thread data */
- && !(err = NXKeyGetValue(key, (void **) &thread_data))
- && !thread_data) {
- /*
- * Allocate the per-thread data for the calling thread. Regardless of
- * whether there was already application data or not, this may be the
- * first call by a new thread. The fact that we allocation 20 bytes on
- * a pointer is not very important, this just helps to demonstrate that
- * we can have arbitrarily complex per-thread data.
- */
- thread_data = malloc(sizeof(struct libthreaddata));
-
- if(thread_data) {
- thread_data->_errno = 0;
- thread_data->twentybytes = malloc(20);
-
- if(!thread_data->twentybytes) {
- free(thread_data);
- thread_data = (struct libthreaddata *) NULL;
- err = ENOMEM;
- }
-
- err = NXKeySetValue(key, thread_data);
- if(err) {
- free(thread_data->twentybytes);
- free(thread_data);
- thread_data = (struct libthreaddata *) NULL;
- }
- }
- }
- }
-
- if(appData)
- *appData = app_data;
-
- if(threadData)
- *threadData = thread_data;
-
- return err;
-}
-
-int DisposeLibraryData(void *data)
-{
- if(data) {
- void *tenbytes = ((libdata_t *) data)->tenbytes;
-
- free(tenbytes);
- free(data);
- }
-
- return 0;
-}
-
-void DisposeThreadData(void *data)
-{
- if(data) {
- void *twentybytes = ((struct libthreaddata *) data)->twentybytes;
-
- free(twentybytes);
- free(data);
- }
-}
-
-#else /* __NOVELL_LIBC__ */
-/* For native CLib-based NLM seems we can do a bit more simple. */
-#include <nwthread.h>
-
-int main(void)
-{
- /* initialize any globals here... */
-
- /* do this if any global initializing was done
- SynchronizeStart();
- */
- ExitThread(TSR_THREAD, 0);
- return 0;
-}
-
-#endif /* __NOVELL_LIBC__ */
-
-#else /* NETWARE */
-
-#ifdef __POCC__
-# pragma warn(disable:2024) /* Disable warning #2024: Empty input file */
-#endif
-
-#endif /* NETWARE */
diff --git a/lib/nwos.c b/lib/nwos.c
deleted file mode 100644
index 889403132..000000000
--- a/lib/nwos.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under 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 NETWARE /* Novell NetWare */
-
-#ifdef __NOVELL_LIBC__
-/* For native LibC-based NLM we need to do nothing. */
-int netware_init(void)
-{
- return 0;
-}
-
-#else /* __NOVELL_LIBC__ */
-
-/* For native CLib-based NLM we need to initialize the LONG namespace. */
-#include <nwnspace.h>
-#include <nwthread.h>
-#include <nwadv.h>
-/* Make the CLIB Ctx stuff link */
-#include <netdb.h>
-NETDB_DEFINE_CONTEXT
-/* Make the CLIB Inet stuff link */
-#include <netinet/in.h>
-#include <arpa/inet.h>
-NETINET_DEFINE_CONTEXT
-
-int netware_init(void)
-{
- int rc = 0;
- unsigned int myHandle = GetNLMHandle();
- /* import UnAugmentAsterisk dynamically for NW4.x compatibility */
- void (*pUnAugmentAsterisk)(int) = (void(*)(int))
- ImportSymbol(myHandle, "UnAugmentAsterisk");
- /* import UseAccurateCaseForPaths dynamically for NW3.x compatibility */
- void (*pUseAccurateCaseForPaths)(int) = (void(*)(int))
- ImportSymbol(myHandle, "UseAccurateCaseForPaths");
- if(pUnAugmentAsterisk)
- pUnAugmentAsterisk(1);
- if(pUseAccurateCaseForPaths)
- pUseAccurateCaseForPaths(1);
- UnimportSymbol(myHandle, "UnAugmentAsterisk");
- UnimportSymbol(myHandle, "UseAccurateCaseForPaths");
- /* set long name space */
- if((SetCurrentNameSpace(4) == 255)) {
- rc = 1;
- }
- if((SetTargetNameSpace(4) == 255)) {
- rc = rc + 2;
- }
- return rc;
-}
-
-/* dummy function to satisfy newer prelude */
-int __init_environment(void)
-{
- return 0;
-}
-
-/* dummy function to satisfy newer prelude */
-int __deinit_environment(void)
-{
- return 0;
-}
-
-#endif /* __NOVELL_LIBC__ */
-
-#endif /* NETWARE */
diff --git a/lib/openldap.c b/lib/openldap.c
index 0ffb6a36a..3a93b6728 100644
--- a/lib/openldap.c
+++ b/lib/openldap.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2011 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2010, Howard Chu, <hyc@openldap.org>
*
* This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -46,6 +48,8 @@
#include "curl_ldap.h"
#include "curl_base64.h"
#include "connect.h"
+#include "curl_sasl.h"
+#include "strcase.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
@@ -76,6 +80,8 @@ typedef enum {
OLDAP_SSL, /* Performing SSL handshake. */
OLDAP_STARTTLS, /* STARTTLS request sent. */
OLDAP_TLS, /* Performing TLS handshake. */
+ OLDAP_MECHS, /* Get SASL authentication mechanisms. */
+ OLDAP_SASL, /* SASL binding reply. */
OLDAP_BIND, /* Simple bind reply. */
OLDAP_BINDV2, /* Simple bind reply in protocol version 2. */
OLDAP_LAST /* Never used */
@@ -96,6 +102,13 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done);
static CURLcode oldap_disconnect(struct Curl_easy *data,
struct connectdata *conn, bool dead);
+static CURLcode oldap_perform_auth(struct Curl_easy *data, const char *mech,
+ const struct bufref *initresp);
+static CURLcode oldap_continue_auth(struct Curl_easy *data, const char *mech,
+ const struct bufref *resp);
+static CURLcode oldap_cancel_auth(struct Curl_easy *data, const char *mech);
+static CURLcode oldap_get_message(struct Curl_easy *data, struct bufref *out);
+
static Curl_recv oldap_recv;
/*
@@ -154,10 +167,26 @@ const struct Curl_handler Curl_handler_ldaps = {
};
#endif
+/* SASL parameters for the ldap protocol */
+static const struct SASLproto saslldap = {
+ "ldap", /* The service name */
+ oldap_perform_auth, /* Send authentication command */
+ oldap_continue_auth, /* Send authentication continuation */
+ oldap_cancel_auth, /* Send authentication cancellation */
+ oldap_get_message, /* Get SASL response message */
+ 0, /* Maximum initial response length (no max) */
+ LDAP_SASL_BIND_IN_PROGRESS, /* Code received when continuation is expected */
+ LDAP_SUCCESS, /* Code to receive upon authentication success */
+ SASL_AUTH_NONE, /* Default mechanisms */
+ 0 /* Configuration flags */
+};
+
struct ldapconninfo {
+ struct SASL sasl; /* SASL-related parameters */
LDAP *ld; /* Openldap connection handle. */
Curl_recv *recv; /* For stacking SSL handler */
Curl_send *send;
+ struct berval *servercred; /* SASL data from server. */
ldapstate state; /* Current machine state. */
int proto; /* LDAP_PROTO_TCP/LDAP_PROTO_UDP/LDAP_PROTO_IPC */
int msgid; /* Current message id. */
@@ -184,6 +213,8 @@ static void state(struct Curl_easy *data, ldapstate newstate)
"SSL",
"STARTTLS",
"TLS",
+ "MECHS",
+ "SASL",
"BIND",
"BINDV2",
/* LAST */
@@ -251,6 +282,37 @@ static CURLcode oldap_url_parse(struct Curl_easy *data, LDAPURLDesc **ludp)
return result;
}
+/* Parse the login options. */
+static CURLcode oldap_parse_login_options(struct connectdata *conn)
+{
+ CURLcode result = CURLE_OK;
+ struct ldapconninfo *li = conn->proto.ldapc;
+ const char *ptr = conn->options;
+
+ while(!result && ptr && *ptr) {
+ const char *key = ptr;
+ const char *value;
+
+ while(*ptr && *ptr != '=')
+ ptr++;
+
+ value = ptr + 1;
+
+ while(*ptr && *ptr != ';')
+ ptr++;
+
+ if(checkprefix("AUTH=", key))
+ result = Curl_sasl_parse_url_auth_option(&li->sasl, value, ptr - value);
+ else
+ result = CURLE_SETOPT_OPTION_SYNTAX;
+
+ if(*ptr == ';')
+ ptr++;
+ }
+
+ return result == CURLE_URL_MALFORMAT? CURLE_SETOPT_OPTION_SYNTAX: result;
+}
+
static CURLcode oldap_setup_connection(struct Curl_easy *data,
struct connectdata *conn)
{
@@ -271,14 +333,94 @@ static CURLcode oldap_setup_connection(struct Curl_easy *data,
conn->proto.ldapc = li;
connkeep(conn, "OpenLDAP default");
+ /* Initialize the SASL storage */
+ Curl_sasl_init(&li->sasl, data, &saslldap);
+
/* Clear the TLS upgraded flag */
conn->bits.tls_upgraded = FALSE;
+
+ result = oldap_parse_login_options(conn);
}
}
return result;
}
+/*
+ * Get the SASL authentication challenge from the server credential buffer.
+ */
+static CURLcode oldap_get_message(struct Curl_easy *data, struct bufref *out)
+{
+ struct berval *servercred = data->conn->proto.ldapc->servercred;
+
+ if(!servercred || !servercred->bv_val)
+ return CURLE_WEIRD_SERVER_REPLY;
+ Curl_bufref_set(out, servercred->bv_val, servercred->bv_len, NULL);
+ return CURLE_OK;
+}
+
+/*
+ * Sends an initial SASL bind request to the server.
+ */
+static CURLcode oldap_perform_auth(struct Curl_easy *data, const char *mech,
+ const struct bufref *initresp)
+{
+ struct connectdata *conn = data->conn;
+ struct ldapconninfo *li = conn->proto.ldapc;
+ CURLcode result = CURLE_OK;
+ struct berval cred;
+ struct berval *pcred = &cred;
+ int rc;
+
+ cred.bv_val = (char *) Curl_bufref_ptr(initresp);
+ cred.bv_len = Curl_bufref_len(initresp);
+ if(!cred.bv_val)
+ pcred = NULL;
+ rc = ldap_sasl_bind(li->ld, NULL, mech, pcred, NULL, NULL, &li->msgid);
+ if(rc != LDAP_SUCCESS)
+ result = oldap_map_error(rc, CURLE_LDAP_CANNOT_BIND);
+ return result;
+}
+
+/*
+ * Sends SASL continuation.
+ */
+static CURLcode oldap_continue_auth(struct Curl_easy *data, const char *mech,
+ const struct bufref *resp)
+{
+ struct connectdata *conn = data->conn;
+ struct ldapconninfo *li = conn->proto.ldapc;
+ CURLcode result = CURLE_OK;
+ struct berval cred;
+ struct berval *pcred = &cred;
+ int rc;
+
+ cred.bv_val = (char *) Curl_bufref_ptr(resp);
+ cred.bv_len = Curl_bufref_len(resp);
+ if(!cred.bv_val)
+ pcred = NULL;
+ rc = ldap_sasl_bind(li->ld, NULL, mech, pcred, NULL, NULL, &li->msgid);
+ if(rc != LDAP_SUCCESS)
+ result = oldap_map_error(rc, CURLE_LDAP_CANNOT_BIND);
+ return result;
+}
+
+/*
+ * Sends SASL bind cancellation.
+ */
+static CURLcode oldap_cancel_auth(struct Curl_easy *data, const char *mech)
+{
+ struct ldapconninfo *li = data->conn->proto.ldapc;
+ CURLcode result = CURLE_OK;
+ int rc = ldap_sasl_bind(li->ld, NULL, LDAP_SASL_NULL, NULL, NULL, NULL,
+ &li->msgid);
+
+ (void)mech;
+ if(rc != LDAP_SUCCESS)
+ result = oldap_map_error(rc, CURLE_LDAP_CANNOT_BIND);
+ return result;
+}
+
/* Starts LDAP simple bind. */
static CURLcode oldap_perform_bind(struct Curl_easy *data, ldapstate newstate)
{
@@ -292,7 +434,7 @@ static CURLcode oldap_perform_bind(struct Curl_easy *data, ldapstate newstate)
passwd.bv_val = NULL;
passwd.bv_len = 0;
- if(conn->bits.user_passwd) {
+ if(data->state.aptr.user) {
binddn = conn->user;
passwd.bv_val = conn->passwd;
passwd.bv_len = strlen(passwd.bv_val);
@@ -304,11 +446,45 @@ static CURLcode oldap_perform_bind(struct Curl_easy *data, ldapstate newstate)
state(data, newstate);
else
result = oldap_map_error(rc,
- conn->bits.user_passwd?
+ data->state.aptr.user?
CURLE_LOGIN_DENIED: CURLE_LDAP_CANNOT_BIND);
return result;
}
+/* Query the supported SASL authentication mechanisms. */
+static CURLcode oldap_perform_mechs(struct Curl_easy *data)
+{
+ CURLcode result = CURLE_OK;
+ struct ldapconninfo *li = data->conn->proto.ldapc;
+ int rc;
+ static const char * const supportedSASLMechanisms[] = {
+ "supportedSASLMechanisms",
+ NULL
+ };
+
+ rc = ldap_search_ext(li->ld, "", LDAP_SCOPE_BASE, "(objectclass=*)",
+ (char **) supportedSASLMechanisms, 0,
+ NULL, NULL, NULL, 0, &li->msgid);
+ if(rc == LDAP_SUCCESS)
+ state(data, OLDAP_MECHS);
+ else
+ result = oldap_map_error(rc, CURLE_LOGIN_DENIED);
+ return result;
+}
+
+/* Starts SASL bind. */
+static CURLcode oldap_perform_sasl(struct Curl_easy *data)
+{
+ saslprogress progress = SASL_IDLE;
+ struct ldapconninfo *li = data->conn->proto.ldapc;
+ CURLcode result = Curl_sasl_start(&li->sasl, data, TRUE, &progress);
+
+ state(data, OLDAP_SASL);
+ if(!result && progress != SASL_INPROGRESS)
+ result = CURLE_LOGIN_DENIED;
+ return result;
+}
+
#ifdef USE_SSL
static Sockbuf_IO ldapsb_tls;
@@ -414,11 +590,106 @@ static CURLcode oldap_connect(struct Curl_easy *data, bool *done)
}
#endif
+ if(li->sasl.prefmech != SASL_AUTH_NONE)
+ return oldap_perform_mechs(data);
+
/* Force bind even if anonymous bind is not needed in protocol version 3
to detect missing version 3 support. */
return oldap_perform_bind(data, OLDAP_BIND);
}
+/* Handle the supported SASL mechanisms query response */
+static CURLcode oldap_state_mechs_resp(struct Curl_easy *data,
+ LDAPMessage *msg, int code)
+{
+ struct connectdata *conn = data->conn;
+ struct ldapconninfo *li = conn->proto.ldapc;
+ int rc;
+ BerElement *ber = NULL;
+ CURLcode result = CURLE_OK;
+ struct berval bv, *bvals;
+
+ switch(ldap_msgtype(msg)) {
+ case LDAP_RES_SEARCH_ENTRY:
+ /* Got a list of supported SASL mechanisms. */
+ if(code != LDAP_SUCCESS && code != LDAP_NO_RESULTS_RETURNED)
+ return CURLE_LOGIN_DENIED;
+
+ rc = ldap_get_dn_ber(li->ld, msg, &ber, &bv);
+ if(rc < 0)
+ return oldap_map_error(rc, CURLE_BAD_CONTENT_ENCODING);
+ for(rc = ldap_get_attribute_ber(li->ld, msg, ber, &bv, &bvals);
+ rc == LDAP_SUCCESS;
+ rc = ldap_get_attribute_ber(li->ld, msg, ber, &bv, &bvals)) {
+ int i;
+
+ if(!bv.bv_val)
+ break;
+
+ if(bvals) {
+ for(i = 0; bvals[i].bv_val; i++) {
+ size_t llen;
+ unsigned short mech = Curl_sasl_decode_mech((char *) bvals[i].bv_val,
+ bvals[i].bv_len, &llen);
+ if(bvals[i].bv_len == llen)
+ li->sasl.authmechs |= mech;
+ }
+ ber_memfree(bvals);
+ }
+ }
+ ber_free(ber, 0);
+ break;
+
+ case LDAP_RES_SEARCH_RESULT:
+ switch(code) {
+ case LDAP_SIZELIMIT_EXCEEDED:
+ infof(data, "Too many authentication mechanisms\n");
+ /* FALLTHROUGH */
+ case LDAP_SUCCESS:
+ case LDAP_NO_RESULTS_RETURNED:
+ if(Curl_sasl_can_authenticate(&li->sasl, data))
+ result = oldap_perform_sasl(data);
+ else
+ result = CURLE_LOGIN_DENIED;
+ break;
+ default:
+ result = oldap_map_error(code, CURLE_LOGIN_DENIED);
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+ return result;
+}
+
+/* Handle a SASL bind response. */
+static CURLcode oldap_state_sasl_resp(struct Curl_easy *data,
+ LDAPMessage *msg, int code)
+{
+ struct connectdata *conn = data->conn;
+ struct ldapconninfo *li = conn->proto.ldapc;
+ CURLcode result = CURLE_OK;
+ saslprogress progress;
+ int rc;
+
+ li->servercred = NULL;
+ rc = ldap_parse_sasl_bind_result(li->ld, msg, &li->servercred, 0);
+ if(rc != LDAP_SUCCESS) {
+ failf(data, "LDAP local: sasl ldap_parse_result %s", ldap_err2string(rc));
+ result = oldap_map_error(rc, CURLE_LOGIN_DENIED);
+ }
+ else {
+ result = Curl_sasl_continue(&li->sasl, data, code, &progress);
+ if(!result && progress != SASL_INPROGRESS)
+ state(data, OLDAP_STOP);
+ }
+
+ if(li->servercred)
+ ber_bvfree(li->servercred);
+ return result;
+}
+
/* Handle a simple bind response. */
static CURLcode oldap_state_bind_resp(struct Curl_easy *data, LDAPMessage *msg,
int code)
@@ -459,12 +730,20 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
if(li->state != OLDAP_SSL && li->state != OLDAP_TLS) {
/* Get response to last command. */
rc = ldap_result(li->ld, li->msgid, LDAP_MSG_ONE, &tv, &msg);
- if(!rc)
- return CURLE_OK; /* Timed out. */
- if(rc < 0) {
- failf(data, "LDAP local: connecting ldap_result %s",
- ldap_err2string(rc));
- return oldap_map_error(rc, CURLE_COULDNT_CONNECT);
+ switch(rc) {
+ case 0: /* Timed out. */
+ return CURLE_OK;
+ case LDAP_RES_SEARCH_ENTRY:
+ case LDAP_RES_SEARCH_REFERENCE:
+ break;
+ default:
+ li->msgid = 0; /* Nothing to abandon upon error. */
+ if(rc < 0) {
+ failf(data, "LDAP local: connecting ldap_result %s",
+ ldap_err2string(rc));
+ return oldap_map_error(rc, CURLE_COULDNT_CONNECT);
+ }
+ break;
}
/* Get error code from message. */
@@ -477,11 +756,11 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
}
/* If protocol version 3 is not supported, fallback to version 2. */
- if(code == LDAP_PROTOCOL_ERROR && li->state != OLDAP_BINDV2
+ if(code == LDAP_PROTOCOL_ERROR && li->state != OLDAP_BINDV2 &&
#ifdef USE_SSL
- && (ssl_installed(conn) || data->set.use_ssl <= CURLUSESSL_TRY)
+ (ssl_installed(conn) || data->set.use_ssl <= CURLUSESSL_TRY) &&
#endif
- ) {
+ li->sasl.prefmech == SASL_AUTH_NONE) {
static const int version = LDAP_VERSION2;
ldap_set_option(li->ld, LDAP_OPT_PROTOCOL_VERSION, &version);
@@ -496,13 +775,19 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
#ifdef USE_SSL
case OLDAP_SSL:
result = oldap_ssl_connect(data, OLDAP_SSL);
- if(!result && ssl_installed(conn))
- result = oldap_perform_bind(data, OLDAP_BIND);
+ if(!result && ssl_installed(conn)) {
+ if(li->sasl.prefmech != SASL_AUTH_NONE)
+ result = oldap_perform_mechs(data);
+ else
+ result = oldap_perform_bind(data, OLDAP_BIND);
+ }
break;
case OLDAP_STARTTLS:
if(code != LDAP_SUCCESS) {
if(data->set.use_ssl != CURLUSESSL_TRY)
result = oldap_map_error(code, CURLE_USE_SSL_FAILED);
+ else if(li->sasl.prefmech != SASL_AUTH_NONE)
+ result = oldap_perform_mechs(data);
else
result = oldap_perform_bind(data, OLDAP_BIND);
break;
@@ -514,7 +799,9 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
result = oldap_map_error(code, CURLE_USE_SSL_FAILED);
else if(ssl_installed(conn)) {
conn->bits.tls_upgraded = TRUE;
- if(conn->bits.user_passwd)
+ if(li->sasl.prefmech != SASL_AUTH_NONE)
+ result = oldap_perform_mechs(data);
+ else if(data->state.aptr.user)
result = oldap_perform_bind(data, OLDAP_BIND);
else {
state(data, OLDAP_STOP); /* Version 3 supported: no bind required */
@@ -524,6 +811,12 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
break;
#endif
+ case OLDAP_MECHS:
+ result = oldap_state_mechs_resp(data, msg, code);
+ break;
+ case OLDAP_SASL:
+ result = oldap_state_sasl_resp(data, msg, code);
+ break;
case OLDAP_BIND:
case OLDAP_BINDV2:
result = oldap_state_bind_resp(data, msg, code);
@@ -540,6 +833,10 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
if(*done)
conn->recv[FIRSTSOCKET] = oldap_recv;
+ if(result && li->msgid) {
+ ldap_abandon_ext(li->ld, li->msgid, NULL, NULL);
+ li->msgid = 0;
+ }
return result;
}
@@ -549,6 +846,9 @@ static CURLcode oldap_disconnect(struct Curl_easy *data,
{
struct ldapconninfo *li = conn->proto.ldapc;
(void) dead_connection;
+#ifndef USE_SSL
+ (void)data;
+#endif
if(li) {
if(li->ld) {
@@ -562,6 +862,7 @@ static CURLcode oldap_disconnect(struct Curl_easy *data,
ldap_unbind_ext(li->ld, NULL, NULL);
li->ld = NULL;
}
+ Curl_sasl_cleanup(conn, li->sasl.authused);
conn->proto.ldapc = NULL;
free(li);
}
@@ -632,21 +933,21 @@ static CURLcode oldap_done(struct Curl_easy *data, CURLcode res,
return CURLE_OK;
}
-static CURLcode client_write(struct Curl_easy *data, const char *prefix,
- const char *value, size_t len, const char *suffix)
+static CURLcode client_write(struct Curl_easy *data,
+ const char *prefix, size_t plen,
+ const char *value, size_t len,
+ const char *suffix, size_t slen)
{
CURLcode result = CURLE_OK;
- size_t l;
if(prefix) {
- l = strlen(prefix);
/* If we have a zero-length value and the prefix ends with a space
separator, drop the latter. */
- if(!len && l && prefix[l - 1] == ' ')
- l--;
- result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) prefix, l);
+ if(!len && plen && prefix[plen - 1] == ' ')
+ plen--;
+ result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) prefix, plen);
if(!result)
- data->req.bytecount += l;
+ data->req.bytecount += plen;
}
if(!result && value) {
result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) value, len);
@@ -654,10 +955,9 @@ static CURLcode client_write(struct Curl_easy *data, const char *prefix,
data->req.bytecount += len;
}
if(!result && suffix) {
- l = strlen(suffix);
- result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) suffix, l);
+ result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) suffix, slen);
if(!result)
- data->req.bytecount += l;
+ data->req.bytecount += slen;
}
return result;
}
@@ -734,7 +1034,8 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
break;
}
- result = client_write(data, "DN: ", bv.bv_val, bv.bv_len, "\n");
+ result = client_write(data, STRCONST("DN: "), bv.bv_val, bv.bv_len,
+ STRCONST("\n"));
if(result)
break;
@@ -747,7 +1048,8 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
break;
if(!bvals) {
- result = client_write(data, "\t", bv.bv_val, bv.bv_len, ":\n");
+ result = client_write(data, STRCONST("\t"), bv.bv_val, bv.bv_len,
+ STRCONST(":\n"));
if(result)
break;
continue;
@@ -759,14 +1061,15 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
for(i = 0; bvals[i].bv_val != NULL; i++) {
int binval = 0;
- result = client_write(data, "\t", bv.bv_val, bv.bv_len, ":");
+ result = client_write(data, STRCONST("\t"), bv.bv_val, bv.bv_len,
+ STRCONST(":"));
if(result)
break;
if(!binary) {
/* check for leading or trailing whitespace */
- if(ISSPACE(bvals[i].bv_val[0]) ||
- ISSPACE(bvals[i].bv_val[bvals[i].bv_len - 1]))
+ if(ISBLANK(bvals[i].bv_val[0]) ||
+ ISBLANK(bvals[i].bv_val[bvals[i].bv_len - 1]))
binval = 1;
else {
/* check for unprintable characters */
@@ -784,15 +1087,17 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
/* Binary value, encode to base64. */
if(bvals[i].bv_len)
- result = Curl_base64_encode(data, bvals[i].bv_val, bvals[i].bv_len,
+ result = Curl_base64_encode(bvals[i].bv_val, bvals[i].bv_len,
&val_b64, &val_b64_sz);
if(!result)
- result = client_write(data, ": ", val_b64, val_b64_sz, "\n");
+ result = client_write(data, STRCONST(": "), val_b64, val_b64_sz,
+ STRCONST("\n"));
free(val_b64);
}
else
- result = client_write(data, " ",
- bvals[i].bv_val, bvals[i].bv_len, "\n");
+ result = client_write(data, STRCONST(" "),
+ bvals[i].bv_val, bvals[i].bv_len,
+ STRCONST("\n"));
if(result)
break;
}
@@ -800,7 +1105,7 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
ber_memfree(bvals);
bvals = NULL;
if(!result)
- result = client_write(data, "\n", NULL, 0, NULL);
+ result = client_write(data, STRCONST("\n"), NULL, 0, NULL, 0);
if(result)
break;
}
@@ -808,7 +1113,7 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
ber_free(ber, 0);
if(!result)
- result = client_write(data, "\n", NULL, 0, NULL);
+ result = client_write(data, STRCONST("\n"), NULL, 0, NULL, 0);
if(!result)
result = CURLE_AGAIN;
break;
diff --git a/lib/parsedate.c b/lib/parsedate.c
index 3c38f2c4c..5ed88195f 100644
--- a/lib/parsedate.c
+++ b/lib/parsedate.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
A brief summary of the date string formats this parser groks:
diff --git a/lib/parsedate.h b/lib/parsedate.h
index a99faf9e3..4e4347754 100644
--- a/lib/parsedate.h
+++ b/lib/parsedate.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
extern const char * const Curl_wkday[7];
diff --git a/lib/pingpong.c b/lib/pingpong.c
index 84c7f51de..d4e6be98c 100644
--- a/lib/pingpong.c
+++ b/lib/pingpong.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* 'pingpong' is for generic back-and-forth support functions used by FTP,
* IMAP, POP3, SMTP and whatever more that likes them.
*
@@ -32,7 +34,6 @@
#include "speedcheck.h"
#include "pingpong.h"
#include "multiif.h"
-#include "non-ascii.h"
#include "vtls/vtls.h"
/* The last 3 #include files should be in this order */
@@ -199,11 +200,6 @@ CURLcode Curl_pp_vsendf(struct Curl_easy *data,
s = Curl_dyn_ptr(&pp->sendbuf);
Curl_pp_init(data, pp);
- result = Curl_convert_to_network(data, s, write_len);
- /* Curl_convert_to_network calls failf if unsuccessful */
- if(result)
- return result;
-
#ifdef HAVE_GSSAPI
conn->data_prot = PROT_CMD;
#endif
@@ -299,7 +295,7 @@ CURLcode Curl_pp_readresp(struct Curl_easy *data,
*/
if((ptr + pp->cache_size) > (buf + data->set.buffer_size + 1)) {
failf(data, "cached response data too big to handle");
- return CURLE_RECV_ERROR;
+ return CURLE_WEIRD_SERVER_REPLY;
}
memcpy(ptr, pp->cache, pp->cache_size);
gotbytes = (ssize_t)pp->cache_size;
@@ -324,11 +320,6 @@ CURLcode Curl_pp_readresp(struct Curl_easy *data,
if(result == CURLE_AGAIN)
return CURLE_OK; /* return */
- if(!result && (gotbytes > 0))
- /* convert from the network encoding */
- result = Curl_convert_from_network(data, ptr, gotbytes);
- /* Curl_convert_from_network calls failf if unsuccessful */
-
if(result)
/* Set outer result variable to this error. */
keepon = FALSE;
@@ -339,7 +330,7 @@ CURLcode Curl_pp_readresp(struct Curl_easy *data,
else if(gotbytes <= 0) {
keepon = FALSE;
result = CURLE_RECV_ERROR;
- failf(data, "response reading failed");
+ failf(data, "response reading failed (errno: %d)", SOCKERRNO);
}
else {
/* we got a whole chunk of data, which can be anything from one
@@ -407,7 +398,8 @@ CURLcode Curl_pp_readresp(struct Curl_easy *data,
}
else if(keepon) {
- if((perline == gotbytes) && (gotbytes > data->set.buffer_size/2)) {
+ if((perline == gotbytes) &&
+ (gotbytes > (ssize_t)data->set.buffer_size/2)) {
/* We got an excessive line without newlines and we need to deal
with it. We keep the first bytes of the line then we throw
away the rest. */
diff --git a/lib/pingpong.h b/lib/pingpong.h
index 8f56f3f86..cefae073a 100644
--- a/lib/pingpong.h
+++ b/lib/pingpong.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/pop3.c b/lib/pop3.c
index d4ca67877..3151a3f56 100644
--- a/lib/pop3.c
+++ b/lib/pop3.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC1734 POP3 Authentication
* RFC1939 POP3 protocol
* RFC2195 CRAM-MD5 authentication
@@ -401,7 +403,7 @@ static CURLcode pop3_perform_user(struct Curl_easy *data,
/* Check we have a username and password to authenticate with and end the
connect phase if we don't */
- if(!conn->bits.user_passwd) {
+ if(!data->state.aptr.user) {
state(data, POP3_STOP);
return result;
@@ -435,7 +437,7 @@ static CURLcode pop3_perform_apop(struct Curl_easy *data,
/* Check we have a username and password to authenticate with and end the
connect phase if we don't */
- if(!conn->bits.user_passwd) {
+ if(!data->state.aptr.user) {
state(data, POP3_STOP);
return result;
@@ -545,7 +547,7 @@ static CURLcode pop3_perform_authentication(struct Curl_easy *data,
/* Check we have enough data to authenticate with and end the
connect phase if we don't */
- if(!Curl_sasl_can_authenticate(&pop3c->sasl, conn)) {
+ if(!Curl_sasl_can_authenticate(&pop3c->sasl, data)) {
state(data, POP3_STOP);
return result;
}
@@ -571,7 +573,7 @@ static CURLcode pop3_perform_authentication(struct Curl_easy *data,
result = pop3_perform_user(data, conn);
else {
/* Other mechanisms not supported */
- infof(data, "No known authentication mechanisms supported!");
+ infof(data, "No known authentication mechanisms supported");
result = CURLE_LOGIN_DENIED;
}
}
@@ -924,7 +926,7 @@ static CURLcode pop3_state_command_resp(struct Curl_easy *data,
if(pop3code != '+') {
state(data, POP3_STOP);
- return CURLE_RECV_ERROR;
+ return CURLE_WEIRD_SERVER_REPLY;
}
/* This 'OK' line ends with a CR LF pair which is the two first bytes of the
@@ -1423,7 +1425,7 @@ static CURLcode pop3_parse_url_path(struct Curl_easy *data)
const char *path = &data->state.up.path[1]; /* skip leading path */
/* URL decode the path for the message ID */
- return Curl_urldecode(data, path, 0, &pop3->id, NULL, REJECT_CTRL);
+ return Curl_urldecode(path, 0, &pop3->id, NULL, REJECT_CTRL);
}
/***********************************************************************
@@ -1440,7 +1442,7 @@ static CURLcode pop3_parse_custom_request(struct Curl_easy *data)
/* URL decode the custom request */
if(custom)
- result = Curl_urldecode(data, custom, 0, &pop3->custom, NULL, REJECT_CTRL);
+ result = Curl_urldecode(custom, 0, &pop3->custom, NULL, REJECT_CTRL);
return result;
}
diff --git a/lib/pop3.h b/lib/pop3.h
index 17629ee2d..bb0645f9b 100644
--- a/lib/pop3.h
+++ b/lib/pop3.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2009 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "pingpong.h"
diff --git a/lib/progress.c b/lib/progress.c
index f5ef6bd52..4a1e1daa8 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/progress.h b/lib/progress.h
index ac4ebc098..a12931514 100644
--- a/lib/progress.h
+++ b/lib/progress.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "timeval.h"
diff --git a/lib/psl.c b/lib/psl.c
index e46091863..60c98a4ca 100644
--- a/lib/psl.c
+++ b/lib/psl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/psl.h b/lib/psl.h
index c10367471..34f0a5cae 100644
--- a/lib/psl.h
+++ b/lib/psl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifdef USE_LIBPSL
diff --git a/lib/quic.h b/lib/quic.h
index b030359dd..b35774735 100644
--- a/lib/quic.h
+++ b/lib/quic.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -31,6 +33,9 @@
#ifdef USE_QUICHE
#include "vquic/quiche.h"
#endif
+#ifdef USE_MSH3
+#include "vquic/msh3.h"
+#endif
#include "urldata.h"
@@ -51,6 +56,7 @@ void Curl_quic_done(struct Curl_easy *data, bool premature);
bool Curl_quic_data_pending(const struct Curl_easy *data);
void Curl_quic_disconnect(struct Curl_easy *data,
struct connectdata *conn, int tempindex);
+CURLcode Curl_quic_idle(struct Curl_easy *data);
#else /* ENABLE_QUIC */
#define Curl_quic_done_sending(x)
diff --git a/lib/rand.c b/lib/rand.c
index 8f2c1ba29..2e7e7e823 100644
--- a/lib/rand.c
+++ b/lib/rand.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -36,6 +38,64 @@
#include "curl_memory.h"
#include "memdebug.h"
+#ifdef WIN32
+
+#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+# define HAVE_MINGW_ORIGINAL
+#endif
+
+#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600 && \
+ !defined(HAVE_MINGW_ORIGINAL)
+# define HAVE_WIN_BCRYPTGENRANDOM
+# include <bcrypt.h>
+# ifdef _MSC_VER
+# pragma comment(lib, "bcrypt.lib")
+# endif
+# ifndef BCRYPT_USE_SYSTEM_PREFERRED_RNG
+# define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002
+# endif
+# ifndef STATUS_SUCCESS
+# define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
+# endif
+#elif defined(USE_WIN32_CRYPTO)
+# include <wincrypt.h>
+# ifdef _MSC_VER
+# pragma comment(lib, "advapi32.lib")
+# endif
+#endif
+
+CURLcode Curl_win32_random(unsigned char *entropy, size_t length)
+{
+ memset(entropy, 0, length);
+
+#if defined(HAVE_WIN_BCRYPTGENRANDOM)
+ if(BCryptGenRandom(NULL, entropy, (ULONG)length,
+ BCRYPT_USE_SYSTEM_PREFERRED_RNG) != STATUS_SUCCESS)
+ return CURLE_FAILED_INIT;
+
+ return CURLE_OK;
+#elif defined(USE_WIN32_CRYPTO)
+ {
+ HCRYPTPROV hCryptProv = 0;
+
+ if(!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
+ CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
+ return CURLE_FAILED_INIT;
+
+ if(!CryptGenRandom(hCryptProv, (DWORD)length, entropy)) {
+ CryptReleaseContext(hCryptProv, 0UL);
+ return CURLE_FAILED_INIT;
+ }
+
+ CryptReleaseContext(hCryptProv, 0UL);
+ }
+ return CURLE_OK;
+#else
+ return CURLE_NOT_BUILT_IN;
+#endif
+}
+#endif
+
static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
{
unsigned int r;
@@ -71,7 +131,15 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
/* ---- non-cryptographic version following ---- */
-#ifdef RANDOM_FILE
+#ifdef WIN32
+ if(!seeded) {
+ result = Curl_win32_random((unsigned char *)rnd, sizeof(*rnd));
+ if(result != CURLE_NOT_BUILT_IN)
+ return result;
+ }
+#endif
+
+#if defined(RANDOM_FILE) && !defined(WIN32)
if(!seeded) {
/* if there's a random file to read a seed from, use it */
int fd = open(RANDOM_FILE, O_RDONLY);
@@ -87,7 +155,7 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
if(!seeded) {
struct curltime now = Curl_now();
- infof(data, "WARNING: Using weak random seed");
+ infof(data, "WARNING: using weak random seed");
randseed += (unsigned int)now.tv_usec + (unsigned int)now.tv_sec;
randseed = randseed * 1103515245 + 12345;
randseed = randseed * 1103515245 + 12345;
@@ -106,7 +174,8 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
* 'rndptr' points to.
*
* If libcurl is built without TLS support or with a TLS backend that lacks a
- * proper random API (Gskit or mbedTLS), this function will use "weak" random.
+ * proper random API (rustls, Gskit or mbedTLS), this function will use "weak"
+ * random.
*
* When built *with* TLS support and a backend that offers strong random, it
* will return error if it cannot provide strong random values.
@@ -143,7 +212,7 @@ CURLcode Curl_rand(struct Curl_easy *data, unsigned char *rnd, size_t num)
/*
* Curl_rand_hex() fills the 'rnd' buffer with a given 'num' size with random
- * hexadecimal digits PLUS a zero terminating byte. It must be an odd number
+ * hexadecimal digits PLUS a null-terminating byte. It must be an odd number
* size.
*/
@@ -166,7 +235,7 @@ CURLcode Curl_rand_hex(struct Curl_easy *data, unsigned char *rnd,
/* make sure it fits in the local buffer and that it is an odd number! */
return CURLE_BAD_FUNCTION_ARGUMENT;
- num--; /* save one for zero termination */
+ num--; /* save one for null-termination */
result = Curl_rand(data, buffer, num/2);
if(result)
diff --git a/lib/rand.h b/lib/rand.h
index 02d95d8e6..30fc29615 100644
--- a/lib/rand.h
+++ b/lib/rand.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -40,10 +42,16 @@ CURLcode Curl_rand(struct Curl_easy *data, unsigned char *rnd, size_t num);
/*
* Curl_rand_hex() fills the 'rnd' buffer with a given 'num' size with random
- * hexadecimal digits PLUS a zero terminating byte. It must be an odd number
+ * hexadecimal digits PLUS a null-terminating byte. It must be an odd number
* size.
*/
CURLcode Curl_rand_hex(struct Curl_easy *data, unsigned char *rnd,
size_t num);
+#ifdef WIN32
+/* Random generator shared between the Schannel vtls and Curl_rand*()
+ functions */
+CURLcode Curl_win32_random(unsigned char *entropy, size_t length);
+#endif
+
#endif /* HEADER_CURL_RAND_H */
diff --git a/lib/rename.c b/lib/rename.c
index f858d4369..cfb3699fb 100644
--- a/lib/rename.c
+++ b/lib/rename.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "rename.h"
diff --git a/lib/rename.h b/lib/rename.h
index 534f7471c..9958e2cd2 100644
--- a/lib/rename.h
+++ b/lib/rename.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
int Curl_rename(const char *oldpath, const char *newpath);
diff --git a/lib/rtsp.c b/lib/rtsp.c
index 30fefb9b8..6d3bf97e6 100644
--- a/lib/rtsp.c
+++ b/lib/rtsp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -219,7 +221,7 @@ static CURLcode rtsp_done(struct Curl_easy *data,
httpStatus = Curl_http_done(data, status, premature);
- if(rtsp) {
+ if(rtsp && !status && !httpStatus) {
/* Check the sequence numbers */
long CSeq_sent = rtsp->CSeq_sent;
long CSeq_recv = rtsp->CSeq_recv;
@@ -340,7 +342,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
}
/* Transport Header for SETUP requests */
- p_transport = Curl_checkheaders(data, "Transport");
+ p_transport = Curl_checkheaders(data, STRCONST("Transport"));
if(rtspreq == RTSPREQ_SETUP && !p_transport) {
/* New Transport: setting? */
if(data->set.str[STRING_RTSP_TRANSPORT]) {
@@ -364,11 +366,11 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
/* Accept Headers for DESCRIBE requests */
if(rtspreq == RTSPREQ_DESCRIBE) {
/* Accept Header */
- p_accept = Curl_checkheaders(data, "Accept")?
+ p_accept = Curl_checkheaders(data, STRCONST("Accept"))?
NULL:"Accept: application/sdp\r\n";
/* Accept-Encoding header */
- if(!Curl_checkheaders(data, "Accept-Encoding") &&
+ if(!Curl_checkheaders(data, STRCONST("Accept-Encoding")) &&
data->set.str[STRING_ENCODING]) {
Curl_safefree(data->state.aptr.accept_encoding);
data->state.aptr.accept_encoding =
@@ -385,11 +387,12 @@ static CURLcode rtsp_do(struct Curl_easy *data, 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. */
- if(Curl_checkheaders(data, "User-Agent") && data->state.aptr.uagent) {
+ if(Curl_checkheaders(data, STRCONST("User-Agent")) &&
+ data->state.aptr.uagent) {
Curl_safefree(data->state.aptr.uagent);
data->state.aptr.uagent = NULL;
}
- else if(!Curl_checkheaders(data, "User-Agent") &&
+ else if(!Curl_checkheaders(data, STRCONST("User-Agent")) &&
data->set.str[STRING_USERAGENT]) {
p_uagent = data->state.aptr.uagent;
}
@@ -405,7 +408,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
/* Referrer */
Curl_safefree(data->state.aptr.ref);
- if(data->state.referer && !Curl_checkheaders(data, "Referer"))
+ if(data->state.referer && !Curl_checkheaders(data, STRCONST("Referer")))
data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
else
data->state.aptr.ref = NULL;
@@ -422,7 +425,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
(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(data, STRCONST("Range")) && data->state.range) {
Curl_safefree(data->state.aptr.rangeline);
data->state.aptr.rangeline = aprintf("Range: %s\r\n", data->state.range);
p_range = data->state.aptr.rangeline;
@@ -432,11 +435,11 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
/*
* Sanity check the custom headers
*/
- if(Curl_checkheaders(data, "CSeq")) {
+ if(Curl_checkheaders(data, STRCONST("CSeq"))) {
failf(data, "CSeq cannot be set as a custom header.");
return CURLE_RTSP_CSEQ_ERROR;
}
- if(Curl_checkheaders(data, "Session")) {
+ if(Curl_checkheaders(data, STRCONST("Session"))) {
failf(data, "Session ID cannot be set as a custom header.");
return CURLE_BAD_FUNCTION_ARGUMENT;
}
@@ -523,7 +526,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, 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(!Curl_checkheaders(data, "Content-Length")) {
+ if(!Curl_checkheaders(data, STRCONST("Content-Length"))) {
result =
Curl_dyn_addf(&req_buffer,
"Content-Length: %" CURL_FORMAT_CURL_OFF_T"\r\n",
@@ -534,18 +537,20 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
if(rtspreq == RTSPREQ_SET_PARAMETER ||
rtspreq == RTSPREQ_GET_PARAMETER) {
- if(!Curl_checkheaders(data, "Content-Type")) {
- result = Curl_dyn_addf(&req_buffer,
- "Content-Type: text/parameters\r\n");
+ if(!Curl_checkheaders(data, STRCONST("Content-Type"))) {
+ result = Curl_dyn_addn(&req_buffer,
+ STRCONST("Content-Type: "
+ "text/parameters\r\n"));
if(result)
return result;
}
}
if(rtspreq == RTSPREQ_ANNOUNCE) {
- if(!Curl_checkheaders(data, "Content-Type")) {
- result = Curl_dyn_addf(&req_buffer,
- "Content-Type: application/sdp\r\n");
+ if(!Curl_checkheaders(data, STRCONST("Content-Type"))) {
+ result = Curl_dyn_addn(&req_buffer,
+ STRCONST("Content-Type: "
+ "application/sdp\r\n"));
if(result)
return result;
}
@@ -563,7 +568,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
/* RTSP never allows chunked transfer */
data->req.forbidchunk = TRUE;
/* Finish the request buffer */
- result = Curl_dyn_add(&req_buffer, "\r\n");
+ result = Curl_dyn_addn(&req_buffer, STRCONST("\r\n"));
if(result)
return result;
@@ -789,7 +794,7 @@ CURLcode Curl_rtsp_parseheader(struct Curl_easy *data, char *header)
/* Find the first non-space letter */
start = header + 8;
- while(*start && ISSPACE(*start))
+ while(*start && ISBLANK(*start))
start++;
if(!*start) {
diff --git a/lib/rtsp.h b/lib/rtsp.h
index da11ade04..377c82860 100644
--- a/lib/rtsp.h
+++ b/lib/rtsp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifdef USE_HYPER
#define CURL_DISABLE_RTSP 1
diff --git a/lib/select.c b/lib/select.c
index 70d7ee5c2..2ac074677 100644
--- a/lib/select.c
+++ b/lib/select.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -34,25 +36,16 @@
#error "We can't compile without select() or poll() support."
#endif
-#if defined(__BEOS__) && !defined(__HAIKU__)
-/* BeOS has FD_SET defined in socket.h */
-#include <socket.h>
-#endif
-
#ifdef MSDOS
#include <dos.h> /* delay() */
#endif
-#ifdef __VXWORKS__
-#include <strings.h> /* bzero() in FD_SET */
-#endif
-
#include <curl/curl.h>
#include "urldata.h"
#include "connect.h"
#include "select.h"
-#include "timeval.h"
+#include "timediff.h"
#include "warnless.h"
/*
@@ -102,26 +95,7 @@ int Curl_wait_ms(timediff_t timeout_ms)
#else
{
struct timeval pending_tv;
- timediff_t tv_sec = timeout_ms / 1000;
- timediff_t tv_usec = (timeout_ms % 1000) * 1000; /* max=999999 */
-#ifdef HAVE_SUSECONDS_T
-#if TIMEDIFF_T_MAX > TIME_T_MAX
- /* tv_sec overflow check in case time_t is signed */
- if(tv_sec > TIME_T_MAX)
- tv_sec = TIME_T_MAX;
-#endif
- pending_tv.tv_sec = (time_t)tv_sec;
- pending_tv.tv_usec = (suseconds_t)tv_usec;
-#else
-#if TIMEDIFF_T_MAX > INT_MAX
- /* tv_sec overflow check in case time_t is signed */
- if(tv_sec > INT_MAX)
- tv_sec = INT_MAX;
-#endif
- pending_tv.tv_sec = (int)tv_sec;
- pending_tv.tv_usec = (int)tv_usec;
-#endif
- r = select(0, NULL, NULL, NULL, &pending_tv);
+ r = select(0, NULL, NULL, NULL, curlx_mstotv(&pending_tv, timeout_ms));
}
#endif /* HAVE_POLL_FINE */
#endif /* USE_WINSOCK */
@@ -161,43 +135,7 @@ static int our_select(curl_socket_t maxfd, /* highest socket number */
}
#endif
- ptimeout = &pending_tv;
- if(timeout_ms < 0) {
- ptimeout = NULL;
- }
- else if(timeout_ms > 0) {
- timediff_t tv_sec = timeout_ms / 1000;
- timediff_t tv_usec = (timeout_ms % 1000) * 1000; /* max=999999 */
-#ifdef HAVE_SUSECONDS_T
-#if TIMEDIFF_T_MAX > TIME_T_MAX
- /* tv_sec overflow check in case time_t is signed */
- if(tv_sec > TIME_T_MAX)
- tv_sec = TIME_T_MAX;
-#endif
- pending_tv.tv_sec = (time_t)tv_sec;
- pending_tv.tv_usec = (suseconds_t)tv_usec;
-#elif defined(WIN32) /* maybe also others in the future */
-#if TIMEDIFF_T_MAX > LONG_MAX
- /* tv_sec overflow check on Windows there we know it is long */
- if(tv_sec > LONG_MAX)
- tv_sec = LONG_MAX;
-#endif
- pending_tv.tv_sec = (long)tv_sec;
- pending_tv.tv_usec = (long)tv_usec;
-#else
-#if TIMEDIFF_T_MAX > INT_MAX
- /* tv_sec overflow check in case time_t is signed */
- if(tv_sec > INT_MAX)
- tv_sec = INT_MAX;
-#endif
- pending_tv.tv_sec = (int)tv_sec;
- pending_tv.tv_usec = (int)tv_usec;
-#endif
- }
- else {
- pending_tv.tv_sec = 0;
- pending_tv.tv_usec = 0;
- }
+ ptimeout = curlx_mstotv(&pending_tv, timeout_ms);
#ifdef USE_WINSOCK
/* WinSock select() must not be called with an fd_set that contains zero
@@ -372,8 +310,12 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
else
pending_ms = 0;
r = poll(ufds, nfds, pending_ms);
- if(r <= 0)
+ if(r <= 0) {
+ if((r == -1) && (SOCKERRNO == EINTR))
+ /* make EINTR from select or poll not a "lethal" error */
+ r = 0;
return r;
+ }
for(i = 0; i < nfds; i++) {
if(ufds[i].fd == CURL_SOCKET_BAD)
@@ -416,8 +358,12 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
value).
*/
r = our_select(maxfd, &fds_read, &fds_write, &fds_err, timeout_ms);
- if(r <= 0)
+ if(r <= 0) {
+ if((r == -1) && (SOCKERRNO == EINTR))
+ /* make EINTR from select or poll not a "lethal" error */
+ r = 0;
return r;
+ }
r = 0;
for(i = 0; i < nfds; i++) {
@@ -450,23 +396,3 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
return r;
}
-
-#ifdef TPF
-/*
- * This is a replacement for select() on the TPF platform.
- * It is used whenever libcurl calls select().
- * The call below to tpf_process_signals() is required because
- * TPF's select calls are not signal interruptible.
- *
- * Return values are the same as select's.
- */
-int tpf_select_libcurl(int maxfds, fd_set *reads, fd_set *writes,
- fd_set *excepts, struct timeval *tv)
-{
- int rc;
-
- rc = tpf_select_bsd(maxfds, reads, writes, excepts, tv);
- tpf_process_signals();
- return rc;
-}
-#endif /* TPF */
diff --git a/lib/select.h b/lib/select.h
index 59a571dbb..f2cf8bbd9 100644
--- a/lib/select.h
+++ b/lib/select.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -34,8 +36,7 @@
* Definition of pollfd struct and constants for platforms lacking them.
*/
-#if !defined(HAVE_STRUCT_POLLFD) && \
- !defined(HAVE_SYS_POLL_H) && \
+#if !defined(HAVE_SYS_POLL_H) && \
!defined(HAVE_POLL_H) && \
!defined(POLLIN)
@@ -83,22 +84,11 @@ int Curl_socket_check(curl_socket_t readfd, curl_socket_t readfd2,
int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms);
int Curl_wait_ms(timediff_t timeout_ms);
-#ifdef TPF
-int tpf_select_libcurl(int maxfds, fd_set* reads, fd_set* writes,
- fd_set* excepts, struct timeval *tv);
-#endif
-
-/* TPF sockets are not in range [0..FD_SETSIZE-1], which
- unfortunately makes it impossible for us to easily check if they're valid
-
+/*
With Winsock the valid range is [0..INVALID_SOCKET-1] according to
https://docs.microsoft.com/en-us/windows/win32/winsock/socket-data-type-2
*/
-#if defined(TPF)
-#define VALID_SOCK(x) 1
-#define VERIFY_SOCK(x) Curl_nop_stmt
-#define FDSET_SOCK(x) 1
-#elif defined(USE_WINSOCK)
+#ifdef USE_WINSOCK
#define VALID_SOCK(s) ((s) < INVALID_SOCKET)
#define FDSET_SOCK(x) 1
#define VERIFY_SOCK(x) do { \
diff --git a/lib/sendf.c b/lib/sendf.c
index bcfa27a50..d26b7e7cd 100644
--- a/lib/sendf.c
+++ b/lib/sendf.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -41,18 +43,19 @@
#include "vssh/ssh.h"
#include "easyif.h"
#include "multiif.h"
-#include "non-ascii.h"
#include "strerror.h"
#include "select.h"
#include "strdup.h"
#include "http2.h"
+#include "headers.h"
+#include "ws.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
-#ifdef CURL_DO_LINEEND_CONV
+#if defined(CURL_DO_LINEEND_CONV) && !defined(CURL_DISABLE_FTP)
/*
* convert_lineends() changes CRLF (\r\n) end-of-line markers to a single LF
* (\n), with special processing for CRLF sequences that are split between two
@@ -132,7 +135,7 @@ static size_t convert_lineends(struct Curl_easy *data,
}
return size;
}
-#endif /* CURL_DO_LINEEND_CONV */
+#endif /* CURL_DO_LINEEND_CONV && !CURL_DISABLE_FTP */
#ifdef USE_RECV_BEFORE_SEND_WORKAROUND
bool Curl_recv_has_postponed_data(struct connectdata *conn, int sockindex)
@@ -243,7 +246,7 @@ void Curl_infof(struct Curl_easy *data, const char *fmt, ...)
DEBUGASSERT(!strchr(fmt, '\n'));
if(data && data->set.verbose) {
va_list ap;
- size_t len;
+ int len;
char buffer[MAXINFO + 2];
va_start(ap, fmt);
len = mvsnprintf(buffer, MAXINFO, fmt, ap);
@@ -263,7 +266,7 @@ void Curl_failf(struct Curl_easy *data, const char *fmt, ...)
DEBUGASSERT(!strchr(fmt, '\n'));
if(data->set.verbose || data->set.errorbuffer) {
va_list ap;
- size_t len;
+ int len;
char error[CURL_ERROR_SIZE + 2];
va_start(ap, fmt);
len = mvsnprintf(error, CURL_ERROR_SIZE, fmt, ap);
@@ -494,6 +497,9 @@ static CURLcode pausewrite(struct Curl_easy *data,
}
}
DEBUGASSERT(i < 3);
+ if(i >= 3)
+ /* There are more types to store than what fits: very bad */
+ return CURLE_OUT_OF_MEMORY;
}
else
i = 0;
@@ -529,6 +535,7 @@ static CURLcode chop_write(struct Curl_easy *data,
curl_write_callback writebody = NULL;
char *ptr = optr;
size_t len = olen;
+ void *writebody_ptr = data->set.out;
if(!len)
return CURLE_OK;
@@ -539,8 +546,18 @@ static CURLcode chop_write(struct Curl_easy *data,
return pausewrite(data, type, ptr, len);
/* Determine the callback(s) to use. */
- if(type & CLIENTWRITE_BODY)
+ if(type & CLIENTWRITE_BODY) {
+#ifdef USE_WEBSOCKETS
+ if(conn->handler->protocol & (CURLPROTO_WS|CURLPROTO_WSS)) {
+ struct HTTP *ws = data->req.p.http;
+ writebody = Curl_ws_writecb;
+ ws->ws.data = data;
+ writebody_ptr = ws;
+ }
+ else
+#endif
writebody = data->set.fwrite_func;
+ }
if((type & CLIENTWRITE_HEADER) &&
(data->set.fwrite_header || data->set.writeheader)) {
/*
@@ -558,7 +575,7 @@ static CURLcode chop_write(struct Curl_easy *data,
if(writebody) {
size_t wrote;
Curl_set_in_callback(data, true);
- wrote = writebody(ptr, 1, chunklen, data->set.out);
+ wrote = writebody(ptr, 1, chunklen, writebody_ptr);
Curl_set_in_callback(data, false);
if(CURL_WRITEFUNC_PAUSE == wrote) {
@@ -566,7 +583,7 @@ static CURLcode chop_write(struct Curl_easy *data,
/* 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!");
+ failf(data, "Write callback asked for PAUSE when not supported");
return CURLE_WRITE_ERROR;
}
return pausewrite(data, type, ptr, len);
@@ -581,21 +598,37 @@ static CURLcode chop_write(struct Curl_easy *data,
len -= chunklen;
}
+#ifndef CURL_DISABLE_HTTP
+ /* HTTP header, but not status-line */
+ if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
+ (type & CLIENTWRITE_HEADER) && !(type & CLIENTWRITE_STATUS) ) {
+ unsigned char htype = (unsigned char)
+ (type & CLIENTWRITE_CONNECT ? CURLH_CONNECT :
+ (type & CLIENTWRITE_1XX ? CURLH_1XX :
+ (type & CLIENTWRITE_TRAILER ? CURLH_TRAILER :
+ CURLH_HEADER)));
+ CURLcode result = Curl_headers_push(data, optr, htype);
+ if(result)
+ return result;
+ }
+#endif
+
if(writeheader) {
size_t wrote;
- ptr = optr;
- len = olen;
+
Curl_set_in_callback(data, true);
- wrote = writeheader(ptr, 1, len, data->set.writeheader);
+ wrote = writeheader(optr, 1, olen, data->set.writeheader);
Curl_set_in_callback(data, false);
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) {
+ return pausewrite(data, CLIENTWRITE_HEADER |
+ (type & (CLIENTWRITE_STATUS|CLIENTWRITE_CONNECT|
+ CLIENTWRITE_1XX|CLIENTWRITE_TRAILER)),
+ optr, olen);
+ if(wrote != olen) {
failf(data, "Failed writing header");
return CURLE_WRITE_ERROR;
}
@@ -619,29 +652,15 @@ CURLcode Curl_client_write(struct Curl_easy *data,
char *ptr,
size_t len)
{
- struct connectdata *conn = data->conn;
-
- DEBUGASSERT(!(type & ~CLIENTWRITE_BOTH));
-
- if(!len)
- return CURLE_OK;
-
+#if !defined(CURL_DISABLE_FTP) && defined(CURL_DO_LINEEND_CONV)
/* 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
+ (data->conn->handler->protocol & PROTO_FAMILY_FTP) &&
+ data->conn->proto.ftpc.transfertype == 'A') {
/* convert end-of-line markers */
len = convert_lineends(data, ptr, len);
-#endif /* CURL_DO_LINEEND_CONV */
- }
-
+ }
+#endif
return chop_write(data, type, ptr, len);
}
@@ -709,55 +728,17 @@ CURLcode Curl_read(struct Curl_easy *data, /* transfer */
}
/* return 0 on success */
-int Curl_debug(struct Curl_easy *data, curl_infotype type,
- char *ptr, size_t size)
+void Curl_debug(struct Curl_easy *data, curl_infotype type,
+ char *ptr, size_t size)
{
- int rc = 0;
if(data->set.verbose) {
static const char s_infotype[CURLINFO_END][3] = {
"* ", "< ", "> ", "{ ", "} ", "{ ", "} " };
-
-#ifdef CURL_DOES_CONVERSIONS
- char *buf = NULL;
- size_t conv_size = 0;
-
- switch(type) {
- case CURLINFO_HEADER_OUT:
- buf = Curl_memdup(ptr, size);
- if(!buf)
- return 1;
- conv_size = size;
-
- /* Special processing is needed for this block if it
- * contains both headers and data (separated by CRLFCRLF).
- * We want to convert just the headers, leaving the data as-is.
- */
- if(size > 4) {
- size_t i;
- for(i = 0; i < size-4; i++) {
- if(memcmp(&buf[i], "\x0d\x0a\x0d\x0a", 4) == 0) {
- /* convert everything through this CRLFCRLF but no further */
- conv_size = i + 4;
- break;
- }
- }
- }
-
- Curl_convert_from_network(data, buf, conv_size);
- /* Curl_convert_from_network calls failf if unsuccessful */
- /* we might as well continue even if it fails... */
- ptr = buf; /* switch pointer to use my buffer instead */
- break;
- default:
- /* leave everything else as-is */
- break;
- }
-#endif /* CURL_DOES_CONVERSIONS */
-
if(data->set.fdebug) {
+ bool inCallback = Curl_is_in_callback(data);
Curl_set_in_callback(data, true);
- rc = (*data->set.fdebug)(data, type, ptr, size, data->set.debugdata);
- Curl_set_in_callback(data, false);
+ (void)(*data->set.fdebug)(data, type, ptr, size, data->set.debugdata);
+ Curl_set_in_callback(data, inCallback);
}
else {
switch(type) {
@@ -766,20 +747,10 @@ int Curl_debug(struct Curl_easy *data, curl_infotype type,
case CURLINFO_HEADER_IN:
fwrite(s_infotype[type], 2, 1, data->set.err);
fwrite(ptr, size, 1, data->set.err);
-#ifdef CURL_DOES_CONVERSIONS
- if(size != conv_size) {
- /* we had untranslated data so we need an explicit newline */
- fwrite("\n", 1, 1, data->set.err);
- }
-#endif
break;
default: /* nada */
break;
}
}
-#ifdef CURL_DOES_CONVERSIONS
- free(buf);
-#endif
}
- return rc;
}
diff --git a/lib/sendf.h b/lib/sendf.h
index 108a5e934..7c4c1280a 100644
--- a/lib/sendf.h
+++ b/lib/sendf.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -45,8 +47,12 @@ void Curl_failf(struct Curl_easy *, const char *fmt, ...);
#define failf Curl_failf
-#define CLIENTWRITE_BODY (1<<0)
-#define CLIENTWRITE_HEADER (1<<1)
+#define CLIENTWRITE_BODY (1<<0)
+#define CLIENTWRITE_HEADER (1<<1)
+#define CLIENTWRITE_STATUS (1<<2) /* the first "header" is the status line */
+#define CLIENTWRITE_CONNECT (1<<3) /* a CONNECT response */
+#define CLIENTWRITE_1XX (1<<4) /* a 1xx response */
+#define CLIENTWRITE_TRAILER (1<<5) /* a trailer header */
#define CLIENTWRITE_BOTH (CLIENTWRITE_BODY|CLIENTWRITE_HEADER)
CURLcode Curl_client_write(struct Curl_easy *data, int type, char *ptr,
@@ -83,8 +89,8 @@ CURLcode Curl_write_plain(struct Curl_easy *data,
ssize_t *written);
/* the function used to output verbose information */
-int Curl_debug(struct Curl_easy *data, curl_infotype type,
- char *ptr, size_t size);
+void Curl_debug(struct Curl_easy *data, curl_infotype type,
+ char *ptr, size_t size);
#endif /* HEADER_CURL_SENDF_H */
diff --git a/lib/setopt.c b/lib/setopt.c
index 599ed5d99..5b5975485 100644
--- a/lib/setopt.c
+++ b/lib/setopt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -62,19 +64,12 @@ CURLcode Curl_setstropt(char **charp, const char *s)
Curl_safefree(*charp);
if(s) {
- char *str = strdup(s);
+ if(strlen(s) > CURL_MAX_INPUT_LENGTH)
+ return CURLE_BAD_FUNCTION_ARGUMENT;
- if(str) {
- size_t len = strlen(str);
- if(len > CURL_MAX_INPUT_LENGTH) {
- free(str);
- return CURLE_BAD_FUNCTION_ARGUMENT;
- }
- }
- if(!str)
+ *charp = strdup(s);
+ if(!*charp)
return CURLE_OUT_OF_MEMORY;
-
- *charp = str;
}
return CURLE_OK;
@@ -153,6 +148,40 @@ static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp)
#define C_SSLVERSION_VALUE(x) (x & 0xffff)
#define C_SSLVERSION_MAX_VALUE(x) (x & 0xffff0000)
+static CURLcode protocol2num(const char *str, curl_prot_t *val)
+{
+ if(!str)
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+
+ if(curl_strequal(str, "all")) {
+ *val = ~(curl_prot_t) 0;
+ return CURLE_OK;
+ }
+
+ *val = 0;
+
+ do {
+ const char *token = str;
+ size_t tlen;
+
+ str = strchr(str, ',');
+ tlen = str? (size_t) (str - token): strlen(token);
+ if(tlen) {
+ const struct Curl_handler *h = Curl_builtin_scheme(token, tlen);
+
+ if(!h)
+ return CURLE_UNSUPPORTED_PROTOCOL;
+
+ *val |= h->protocol;
+ }
+ } while(str++);
+
+ if(!*val)
+ /* no protocol listed */
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ return CURLE_OK;
+}
+
/*
* Do not make Curl_vsetopt() static: it is called from
* packages/OS400/ccsidcurl.c.
@@ -170,7 +199,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
arg = va_arg(param, long);
if(arg < -1)
return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.dns_cache_timeout = arg;
+ else if(arg > INT_MAX)
+ arg = INT_MAX;
+
+ data->set.dns_cache_timeout = (int)arg;
break;
case CURLOPT_DNS_USE_GLOBAL_CACHE:
/* deprecated */
@@ -208,19 +240,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
break;
#endif
case CURLOPT_RANDOM_FILE:
- /*
- * This is the path name to a file that contains random data to seed
- * the random SSL stuff with. The file is only used for reading.
- */
- result = Curl_setstropt(&data->set.str[STRING_SSL_RANDOM_FILE],
- va_arg(param, char *));
break;
case CURLOPT_EGDSOCKET:
- /*
- * The Entropy Gathering Daemon socket pathname
- */
- result = Curl_setstropt(&data->set.str[STRING_SSL_EGDSOCKET],
- va_arg(param, char *));
break;
case CURLOPT_MAXCONNECTS:
/*
@@ -323,12 +344,12 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
break;
case CURLOPT_SERVER_RESPONSE_TIMEOUT:
/*
- * Option that specifies how quickly an server response must be obtained
+ * Option that specifies how quickly a server response must be obtained
* before it is considered failure. For pingpong protocols.
*/
arg = va_arg(param, long);
if((arg >= 0) && (arg <= (INT_MAX/1000)))
- data->set.server_response_timeout = arg * 1000;
+ data->set.server_response_timeout = (unsigned int)arg * 1000;
else
return CURLE_BAD_FUNCTION_ARGUMENT;
break;
@@ -358,7 +379,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
arg = va_arg(param, long);
if((arg < CURL_NETRC_IGNORED) || (arg >= CURL_NETRC_LAST))
return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.use_netrc = (enum CURL_NETRC_OPTION)arg;
+ data->set.use_netrc = (unsigned char)arg;
break;
case CURLOPT_NETRC_FILE:
/*
@@ -630,8 +651,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
}
else
data->set.method = HTTPREQ_GET;
+ data->set.upload = FALSE;
break;
+#ifndef CURL_DISABLE_MIME
case CURLOPT_HTTPPOST:
/*
* Set to make us do HTTP POST
@@ -640,6 +663,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
data->set.method = HTTPREQ_POST_FORM;
data->set.opt_no_body = FALSE; /* this is implied */
break;
+#endif
case CURLOPT_AWS_SIGV4:
/*
@@ -655,18 +679,6 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
data->set.httpauth = CURLAUTH_AWS_SIGV4;
break;
- case CURLOPT_MIMEPOST:
- /*
- * Set to make us do MIME/form POST
- */
- result = Curl_mime_set_subparts(&data->set.mimepost,
- va_arg(param, curl_mime *), FALSE);
- if(!result) {
- data->set.method = HTTPREQ_POST_MIME;
- data->set.opt_no_body = FALSE; /* this is implied */
- }
- break;
-
case CURLOPT_REFERER:
/*
* String to set in the HTTP Referer: field.
@@ -688,13 +700,6 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
va_arg(param, char *));
break;
- case CURLOPT_HTTPHEADER:
- /*
- * Set a list with HTTP headers to use (or replace internals with)
- */
- data->set.headers = va_arg(param, struct curl_slist *);
- break;
-
#ifndef CURL_DISABLE_PROXY
case CURLOPT_PROXYHEADER:
/*
@@ -895,7 +900,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
;
else
#endif
-#if !defined(USE_NGHTTP2) && !defined(USE_HYPER)
+#ifndef USE_HTTP2
if(arg >= CURL_HTTP_VERSION_2)
return CURLE_UNSUPPORTED_PROTOCOL;
#else
@@ -932,6 +937,36 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
break;
#endif /* CURL_DISABLE_HTTP */
+#if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_SMTP) || \
+ !defined(CURL_DISABLE_IMAP)
+# if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_MIME)
+ case CURLOPT_HTTPHEADER:
+ /*
+ * Set a list with HTTP headers to use (or replace internals with)
+ */
+ data->set.headers = va_arg(param, struct curl_slist *);
+ break;
+# endif
+
+# ifndef CURL_DISABLE_MIME
+ case CURLOPT_MIMEPOST:
+ /*
+ * Set to make us do MIME POST
+ */
+ result = Curl_mime_set_subparts(&data->set.mimepost,
+ va_arg(param, curl_mime *), FALSE);
+ if(!result) {
+ data->set.method = HTTPREQ_POST_MIME;
+ data->set.opt_no_body = FALSE; /* this is implied */
+ }
+ break;
+
+ case CURLOPT_MIME_OPTIONS:
+ data->set.mime_options = (unsigned int)va_arg(param, long);
+ break;
+# endif
+#endif
+
case CURLOPT_HTTPAUTH:
/*
* Set HTTP Authentication type BITMASK.
@@ -1120,13 +1155,14 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
break;
}
break;
-#endif /* CURL_DISABLE_PROXY */
case CURLOPT_SOCKS5_AUTH:
data->set.socks5auth = va_arg(param, unsigned long);
if(data->set.socks5auth & ~(CURLAUTH_BASIC | CURLAUTH_GSSAPI))
result = CURLE_NOT_BUILT_IN;
break;
+#endif /* CURL_DISABLE_PROXY */
+
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
case CURLOPT_SOCKS5_GSSAPI_NEC:
/*
@@ -1275,7 +1311,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
(arg > CURLFTP_CREATE_DIR_RETRY))
result = CURLE_BAD_FUNCTION_ARGUMENT;
else
- data->set.ftp_create_missing_dirs = (int)arg;
+ data->set.ftp_create_missing_dirs = (unsigned char)arg;
break;
case CURLOPT_READDATA:
/*
@@ -1365,12 +1401,12 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
break;
case CURLOPT_PORT:
/*
- * The port number to use when getting the URL
+ * The port number to use when getting the URL. 0 disables it.
*/
arg = va_arg(param, long);
if((arg < 0) || (arg > 65535))
return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.use_port = arg;
+ data->set.use_port = (unsigned short)arg;
break;
case CURLOPT_TIMEOUT:
/*
@@ -1379,16 +1415,16 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
*/
arg = va_arg(param, long);
if((arg >= 0) && (arg <= (INT_MAX/1000)))
- data->set.timeout = arg * 1000;
+ data->set.timeout = (unsigned int)arg * 1000;
else
return CURLE_BAD_FUNCTION_ARGUMENT;
break;
case CURLOPT_TIMEOUT_MS:
- arg = va_arg(param, long);
- if(arg < 0)
- return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.timeout = arg;
+ uarg = va_arg(param, unsigned long);
+ if(uarg >= UINT_MAX)
+ uarg = UINT_MAX;
+ data->set.timeout = (unsigned int)uarg;
break;
case CURLOPT_CONNECTTIMEOUT:
@@ -1397,27 +1433,29 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
*/
arg = va_arg(param, long);
if((arg >= 0) && (arg <= (INT_MAX/1000)))
- data->set.connecttimeout = arg * 1000;
+ data->set.connecttimeout = (unsigned int)arg * 1000;
else
return CURLE_BAD_FUNCTION_ARGUMENT;
break;
case CURLOPT_CONNECTTIMEOUT_MS:
- arg = va_arg(param, long);
- if(arg < 0)
- return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.connecttimeout = arg;
+ uarg = va_arg(param, unsigned long);
+ if(uarg >= UINT_MAX)
+ uarg = UINT_MAX;
+ data->set.connecttimeout = (unsigned int)uarg;
break;
+#ifndef CURL_DISABLE_FTP
case CURLOPT_ACCEPTTIMEOUT_MS:
/*
- * The maximum time you allow curl to wait for server connect
+ * The maximum time for curl to wait for FTP server connect
*/
- arg = va_arg(param, long);
- if(arg < 0)
- return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.accepttimeout = arg;
+ uarg = va_arg(param, unsigned long);
+ if(uarg >= UINT_MAX)
+ uarg = UINT_MAX;
+ data->set.accepttimeout = (unsigned int)uarg;
break;
+#endif
case CURLOPT_USERPWD:
/*
@@ -1617,13 +1655,9 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
* Set data write callback
*/
data->set.fwrite_func = va_arg(param, curl_write_callback);
- if(!data->set.fwrite_func) {
- data->set.is_fwrite_set = 0;
+ if(!data->set.fwrite_func)
/* When set to NULL, reset to our internal default function */
data->set.fwrite_func = (curl_write_callback)fwrite;
- }
- else
- data->set.is_fwrite_set = 1;
break;
case CURLOPT_READFUNCTION:
/*
@@ -1650,24 +1684,6 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
*/
data->set.seek_client = va_arg(param, void *);
break;
- case CURLOPT_CONV_FROM_NETWORK_FUNCTION:
- /*
- * "Convert from network encoding" callback
- */
- data->set.convfromnetwork = va_arg(param, curl_conv_callback);
- break;
- case CURLOPT_CONV_TO_NETWORK_FUNCTION:
- /*
- * "Convert to network encoding" callback
- */
- data->set.convtonetwork = va_arg(param, curl_conv_callback);
- break;
- case CURLOPT_CONV_FROM_UTF8_FUNCTION:
- /*
- * "Convert from UTF-8 encoding" callback
- */
- data->set.convfromutf8 = va_arg(param, curl_conv_callback);
- break;
case CURLOPT_IOCTLFUNCTION:
/*
* I/O control callback. Might be NULL.
@@ -2189,7 +2205,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
else if(arg < READBUFFER_MIN)
arg = READBUFFER_MIN;
- data->set.buffer_size = arg;
+ data->set.buffer_size = (int)arg;
break;
case CURLOPT_UPLOAD_BUFFERSIZE:
@@ -2317,6 +2333,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
case CURLOPT_SSL_OPTIONS:
arg = va_arg(param, long);
+ data->set.ssl.primary.ssl_options = (unsigned char)(arg & 0xff);
data->set.ssl.enable_beast = !!(arg & CURLSSLOPT_ALLOW_BEAST);
data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
data->set.ssl.no_partialchain = !!(arg & CURLSSLOPT_NO_PARTIALCHAIN);
@@ -2330,6 +2347,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
#ifndef CURL_DISABLE_PROXY
case CURLOPT_PROXY_SSL_OPTIONS:
arg = va_arg(param, long);
+ data->set.proxy_ssl.primary.ssl_options = (unsigned char)(arg & 0xff);
data->set.proxy_ssl.enable_beast = !!(arg & CURLSSLOPT_ALLOW_BEAST);
data->set.proxy_ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
data->set.proxy_ssl.no_partialchain = !!(arg & CURLSSLOPT_NO_PARTIALCHAIN);
@@ -2381,9 +2399,14 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
case CURLOPT_CONNECT_ONLY:
/*
- * No data transfer, set up connection and let application use the socket
+ * No data transfer.
+ * (1) - only do connection
+ * (2) - do first get request but get no content
*/
- data->set.connect_only = (0 != va_arg(param, long)) ? TRUE : FALSE;
+ arg = va_arg(param, long);
+ if(arg > 2)
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ data->set.connect_only = (unsigned char)arg;
break;
case CURLOPT_SOCKOPTFUNCTION:
@@ -2456,7 +2479,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
#ifdef USE_SSH
/* we only include SSH options if explicitly built to support SSH */
case CURLOPT_SSH_AUTH_TYPES:
- data->set.ssh_auth_types = va_arg(param, long);
+ data->set.ssh_auth_types = (unsigned int)va_arg(param, long);
break;
case CURLOPT_SSH_PUBLIC_KEYFILE:
@@ -2499,7 +2522,19 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
result = Curl_setstropt(&data->set.str[STRING_SSH_KNOWNHOSTS],
va_arg(param, char *));
break;
+#ifdef USE_LIBSSH2
+ case CURLOPT_SSH_HOSTKEYFUNCTION:
+ /* the callback to check the hostkey without the knownhost file */
+ data->set.ssh_hostkeyfunc = va_arg(param, curl_sshhostkeycallback);
+ break;
+ case CURLOPT_SSH_HOSTKEYDATA:
+ /*
+ * Custom client data to pass to the SSH keyfunc callback
+ */
+ data->set.ssh_hostkeyfunc_userp = va_arg(param, void *);
+ break;
+#endif
case CURLOPT_SSH_KEYFUNCTION:
/* setting to NULL is fine since the ssh.c functions themselves will
then revert to use the internal default */
@@ -2544,7 +2579,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
arg = va_arg(param, long);
if((arg < 0) || (arg > 0777))
return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.new_file_perms = arg;
+ data->set.new_file_perms = (unsigned int)arg;
break;
case CURLOPT_NEW_DIRECTORY_PERMS:
@@ -2554,10 +2589,11 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
arg = va_arg(param, long);
if((arg < 0) || (arg > 0777))
return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.new_directory_perms = arg;
+ data->set.new_directory_perms = (unsigned int)arg;
break;
#endif
+#ifdef ENABLE_IPV6
case CURLOPT_ADDRESS_SCOPE:
/*
* Use this scope id when using IPv6
@@ -2571,22 +2607,43 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
#endif
data->set.scope_id = (unsigned int)uarg;
break;
+#endif
case CURLOPT_PROTOCOLS:
/* set the bitmask for the protocols that are allowed to be used for the
transfer, which thus helps the app which takes URLs from users or other
external inputs and want to restrict what protocol(s) to deal
with. Defaults to CURLPROTO_ALL. */
- data->set.allowed_protocols = va_arg(param, long);
+ data->set.allowed_protocols = (curl_prot_t)va_arg(param, long);
break;
case CURLOPT_REDIR_PROTOCOLS:
/* set the bitmask for the protocols that libcurl is allowed to follow to,
as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs
to be set in both bitmasks to be allowed to get redirected to. */
- data->set.redir_protocols = va_arg(param, long);
+ data->set.redir_protocols = (curl_prot_t)va_arg(param, long);
break;
+ case CURLOPT_PROTOCOLS_STR: {
+ curl_prot_t prot;
+ argptr = va_arg(param, char *);
+ result = protocol2num(argptr, &prot);
+ if(result)
+ return result;
+ data->set.allowed_protocols = prot;
+ break;
+ }
+
+ case CURLOPT_REDIR_PROTOCOLS_STR: {
+ curl_prot_t prot;
+ argptr = va_arg(param, char *);
+ result = protocol2num(argptr, &prot);
+ if(result)
+ return result;
+ data->set.redir_protocols = prot;
+ break;
+ }
+
case CURLOPT_DEFAULT_PROTOCOL:
/* Set the protocol to use when the URL doesn't include any protocol */
result = Curl_setstropt(&data->set.str[STRING_DEFAULT_PROTOCOL],
@@ -2615,15 +2672,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
break;
#endif
-#if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) || \
- !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP)
- case CURLOPT_MIME_OPTIONS:
- data->set.mime_options = va_arg(param, long);
- break;
-#endif
-
case CURLOPT_SASL_AUTHZID:
- /* Authorisation identity (identity to act as) */
+ /* Authorization identity (identity to act as) */
result = Curl_setstropt(&data->set.str[STRING_SASL_AUTHZID],
va_arg(param, char *));
break;
@@ -2766,49 +2816,52 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
case CURLOPT_TLSAUTH_USERNAME:
result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME],
va_arg(param, char *));
- if(data->set.str[STRING_TLSAUTH_USERNAME] && !data->set.ssl.authtype)
- data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
+ if(data->set.str[STRING_TLSAUTH_USERNAME] &&
+ !data->set.ssl.primary.authtype)
+ data->set.ssl.primary.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
break;
+#ifndef CURL_DISABLE_PROXY
case CURLOPT_PROXY_TLSAUTH_USERNAME:
result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME_PROXY],
va_arg(param, char *));
-#ifndef CURL_DISABLE_PROXY
if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] &&
- !data->set.proxy_ssl.authtype)
- data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
-#endif
+ !data->set.proxy_ssl.primary.authtype)
+ data->set.proxy_ssl.primary.authtype = CURL_TLSAUTH_SRP; /* default to
+ SRP */
break;
+#endif
case CURLOPT_TLSAUTH_PASSWORD:
result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD],
va_arg(param, char *));
- if(data->set.str[STRING_TLSAUTH_USERNAME] && !data->set.ssl.authtype)
- data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
+ if(data->set.str[STRING_TLSAUTH_USERNAME] &&
+ !data->set.ssl.primary.authtype)
+ data->set.ssl.primary.authtype = CURL_TLSAUTH_SRP; /* default */
break;
+#ifndef CURL_DISABLE_PROXY
case CURLOPT_PROXY_TLSAUTH_PASSWORD:
result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD_PROXY],
va_arg(param, char *));
-#ifndef CURL_DISABLE_PROXY
if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] &&
- !data->set.proxy_ssl.authtype)
- data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
-#endif
+ !data->set.proxy_ssl.primary.authtype)
+ data->set.proxy_ssl.primary.authtype = CURL_TLSAUTH_SRP; /* default */
break;
+#endif
case CURLOPT_TLSAUTH_TYPE:
argptr = va_arg(param, char *);
if(!argptr ||
strncasecompare(argptr, "SRP", strlen("SRP")))
- data->set.ssl.authtype = CURL_TLSAUTH_SRP;
+ data->set.ssl.primary.authtype = CURL_TLSAUTH_SRP;
else
- data->set.ssl.authtype = CURL_TLSAUTH_NONE;
+ data->set.ssl.primary.authtype = CURL_TLSAUTH_NONE;
break;
#ifndef CURL_DISABLE_PROXY
case CURLOPT_PROXY_TLSAUTH_TYPE:
argptr = va_arg(param, char *);
if(!argptr ||
strncasecompare(argptr, "SRP", strlen("SRP")))
- data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP;
+ data->set.proxy_ssl.primary.authtype = CURL_TLSAUTH_SRP;
else
- data->set.proxy_ssl.authtype = CURL_TLSAUTH_NONE;
+ data->set.proxy_ssl.primary.authtype = CURL_TLSAUTH_NONE;
break;
#endif
#endif
@@ -2849,13 +2902,17 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
arg = va_arg(param, long);
if(arg < 0)
return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.tcp_keepidle = arg;
+ else if(arg > INT_MAX)
+ arg = INT_MAX;
+ data->set.tcp_keepidle = (int)arg;
break;
case CURLOPT_TCP_KEEPINTVL:
arg = va_arg(param, long);
if(arg < 0)
return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.tcp_keepintvl = arg;
+ else if(arg > INT_MAX)
+ arg = INT_MAX;
+ data->set.tcp_keepintvl = (int)arg;
break;
case CURLOPT_TCP_FASTOPEN:
#if defined(CONNECT_DATA_IDEMPOTENT) || defined(MSG_FASTOPEN) || \
@@ -2866,7 +2923,6 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
#endif
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;
@@ -2922,10 +2978,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
data->set.suppress_connect_headers = (0 != va_arg(param, long))?TRUE:FALSE;
break;
case CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS:
- arg = va_arg(param, long);
- if(arg < 0)
- return CURLE_BAD_FUNCTION_ARGUMENT;
- data->set.happy_eyeballs_timeout = arg;
+ uarg = va_arg(param, unsigned long);
+ if(uarg >= UINT_MAX)
+ uarg = UINT_MAX;
+ data->set.happy_eyeballs_timeout = (unsigned int)uarg;
break;
#ifndef CURL_DISABLE_SHUFFLE_DNS
case CURLOPT_DNS_SHUFFLE_ADDRESSES:
@@ -3042,6 +3098,15 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
case CURLOPT_PREREQDATA:
data->set.prereq_userp = va_arg(param, void *);
break;
+#ifdef USE_WEBSOCKETS
+ case CURLOPT_WS_OPTIONS: {
+ bool raw;
+ arg = va_arg(param, long);
+ raw = (arg & CURLWS_RAW_MODE);
+ data->set.ws_raw_mode = raw;
+ break;
+ }
+#endif
default:
/* unknown tag and its companion, just ignore: */
result = CURLE_UNKNOWN_OPTION;
diff --git a/lib/setopt.h b/lib/setopt.h
index affbfd996..ffc77a71d 100644
--- a/lib/setopt.h
+++ b/lib/setopt.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
CURLcode Curl_setstropt(char **charp, const char *s);
diff --git a/lib/setup-os400.h b/lib/setup-os400.h
index 8c97371e4..6023ca20d 100644
--- a/lib/setup-os400.h
+++ b/lib/setup-os400.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
diff --git a/lib/setup-vms.h b/lib/setup-vms.h
index a6710d907..b570683d7 100644
--- a/lib/setup-vms.h
+++ b/lib/setup-vms.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* */
diff --git a/lib/setup-win32.h b/lib/setup-win32.h
index fa8742f3b..bc5f8efc3 100644
--- a/lib/setup-win32.h
+++ b/lib/setup-win32.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -35,10 +37,21 @@
#ifdef HAVE_WINDOWS_H
# if defined(UNICODE) && !defined(_UNICODE)
-# define _UNICODE
+# error "UNICODE is defined but _UNICODE is not defined"
# endif
# if defined(_UNICODE) && !defined(UNICODE)
-# define UNICODE
+# error "_UNICODE is defined but UNICODE is not defined"
+# endif
+/*
+ * Don't include unneeded stuff in Windows headers to avoid compiler
+ * warnings and macro clashes.
+ * Make sure to define this macro before including any Windows headers.
+ */
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+# endif
+# ifndef NOGDI
+# define NOGDI
# endif
# include <winerror.h>
# include <windows.h>
diff --git a/lib/sha256.c b/lib/sha256.c
index cf7ea4f54..60720f5b1 100644
--- a/lib/sha256.c
+++ b/lib/sha256.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2017, Florin Petriuc, <petriuc.florin@gmail.com>
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -40,7 +42,7 @@
#include <openssl/opensslv.h>
-#if (OPENSSL_VERSION_NUMBER >= 0x0090700fL)
+#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
#define USE_OPENSSL_SHA256
#endif
@@ -69,8 +71,14 @@
#if defined(USE_OPENSSL_SHA256)
-/* When OpenSSL is available we use the SHA256-function from OpenSSL */
+/* When OpenSSL or wolfSSL is available is available we use their
+ * SHA256-functions.
+ */
+#if defined(USE_OPENSSL)
#include <openssl/evp.h>
+#elif defined(USE_WOLFSSL)
+#include <wolfssl/openssl/evp.h>
+#endif
#include "curl_memory.h"
diff --git a/lib/share.c b/lib/share.c
index 403563fdd..1a083e72a 100644
--- a/lib/share.c
+++ b/lib/share.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -39,7 +41,7 @@ curl_share_init(void)
if(share) {
share->magic = CURL_GOOD_SHARE;
share->specifier |= (1<<CURL_LOCK_DATA_SHARE);
- Curl_init_dnscache(&share->hostcache);
+ Curl_init_dnscache(&share->hostcache, 23);
}
return share;
diff --git a/lib/share.h b/lib/share.h
index 222e34ba6..32be41691 100644
--- a/lib/share.h
+++ b/lib/share.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/sigpipe.h b/lib/sigpipe.h
index d6ec5fca3..d12b31764 100644
--- a/lib/sigpipe.h
+++ b/lib/sigpipe.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/slist.c b/lib/slist.c
index 907c203f3..6c80722c7 100644
--- a/lib/slist.c
+++ b/lib/slist.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/slist.h b/lib/slist.h
index 3114259cf..4e5834c90 100644
--- a/lib/slist.h
+++ b/lib/slist.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/lib/smb.c b/lib/smb.c
index fd49cf6aa..a62e85814 100644
--- a/lib/smb.c
+++ b/lib/smb.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2016 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2016 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
*
* This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -32,7 +34,7 @@
#include <process.h>
#ifdef CURL_WINDOWS_APP
#define getpid GetCurrentProcessId
-#elif !defined(MSDOS)
+#elif defined(WIN32)
#define getpid _getpid
#endif
#endif
@@ -262,7 +264,7 @@ static CURLcode smb_connect(struct Curl_easy *data, bool *done)
(void) done;
/* Check we have a username and password to authenticate with */
- if(!conn->bits.user_passwd)
+ if(!data->state.aptr.user)
return CURLE_LOGIN_DENIED;
/* Initialize the connection state */
@@ -299,6 +301,7 @@ static CURLcode smb_connect(struct Curl_easy *data, bool *done)
static CURLcode smb_recv_message(struct Curl_easy *data, void **msg)
{
struct connectdata *conn = data->conn;
+ curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
struct smb_conn *smbc = &conn->proto.smbc;
char *buf = smbc->recv_buf;
ssize_t bytes_read;
@@ -307,7 +310,7 @@ static CURLcode smb_recv_message(struct Curl_easy *data, void **msg)
size_t len = MAX_MESSAGE_SIZE - smbc->got;
CURLcode result;
- result = Curl_read(data, FIRSTSOCKET, buf + smbc->got, len, &bytes_read);
+ result = Curl_read(data, sockfd, buf + smbc->got, len, &bytes_read);
if(result)
return result;
@@ -377,11 +380,12 @@ static CURLcode smb_send(struct Curl_easy *data, ssize_t len,
size_t upload_size)
{
struct connectdata *conn = data->conn;
+ curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
struct smb_conn *smbc = &conn->proto.smbc;
ssize_t bytes_written;
CURLcode result;
- result = Curl_write(data, FIRSTSOCKET, data->state.ulbuf,
+ result = Curl_write(data, sockfd, data->state.ulbuf,
len, &bytes_written);
if(result)
return result;
@@ -399,6 +403,7 @@ static CURLcode smb_send(struct Curl_easy *data, ssize_t len,
static CURLcode smb_flush(struct Curl_easy *data)
{
struct connectdata *conn = data->conn;
+ curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
struct smb_conn *smbc = &conn->proto.smbc;
ssize_t bytes_written;
ssize_t len = smbc->send_size - smbc->sent;
@@ -407,7 +412,7 @@ static CURLcode smb_flush(struct Curl_easy *data)
if(!smbc->send_size)
return CURLE_OK;
- result = Curl_write(data, FIRSTSOCKET,
+ result = Curl_write(data, sockfd,
data->state.ulbuf + smbc->sent,
len, &bytes_written);
if(result)
@@ -459,14 +464,10 @@ static CURLcode smb_send_setup(struct Curl_easy *data)
if(byte_count > sizeof(msg.bytes))
return CURLE_FILESIZE_EXCEEDED;
- Curl_ntlm_core_mk_lm_hash(data, conn->passwd, lm_hash);
+ Curl_ntlm_core_mk_lm_hash(conn->passwd, lm_hash);
Curl_ntlm_core_lm_resp(lm_hash, smbc->challenge, lm);
-#ifdef USE_NTRESPONSES
- Curl_ntlm_core_mk_nt_hash(data, conn->passwd, nt_hash);
+ Curl_ntlm_core_mk_nt_hash(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;
@@ -989,7 +990,7 @@ static CURLcode smb_parse_url_path(struct Curl_easy *data,
char *slash;
/* URL decode the path */
- CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &path, NULL,
+ CURLcode result = Curl_urldecode(data->state.up.path, 0, &path, NULL,
REJECT_CTRL);
if(result)
return result;
diff --git a/lib/smb.h b/lib/smb.h
index 0e3c2ec11..919f3ac14 100644
--- a/lib/smb.h
+++ b/lib/smb.h
@@ -7,8 +7,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* 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,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
enum smb_conn_state {
diff --git a/lib/smtp.c b/lib/smtp.c
index 6c0829378..6ebb41af6 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC1870 SMTP Service Extension for Message Size
* RFC2195 CRAM-MD5 authentication
* RFC2831 DIGEST-MD5 authentication
@@ -492,7 +494,7 @@ static CURLcode smtp_perform_authentication(struct Curl_easy *data)
/* Check we have enough data to authenticate with, and the
server supports authentication, and end the connect phase if not */
if(!smtpc->auth_supported ||
- !Curl_sasl_can_authenticate(&smtpc->sasl, conn)) {
+ !Curl_sasl_can_authenticate(&smtpc->sasl, data)) {
state(data, SMTP_STOP);
return result;
}
@@ -505,7 +507,7 @@ static CURLcode smtp_perform_authentication(struct Curl_easy *data)
state(data, SMTP_AUTH);
else {
/* Other mechanisms not supported */
- infof(data, "No known authentication mechanisms supported!");
+ infof(data, "No known authentication mechanisms supported");
result = CURLE_LOGIN_DENIED;
}
}
@@ -698,7 +700,7 @@ static CURLcode smtp_perform_mail(struct Curl_easy *data)
NULL, MIMESTRATEGY_MAIL);
if(!result)
- if(!Curl_checkheaders(data, "Mime-Version"))
+ if(!Curl_checkheaders(data, STRCONST("Mime-Version")))
result = Curl_mime_add_header(&data->set.mimepost.curlheaders,
"Mime-Version: 1.0");
@@ -1037,7 +1039,7 @@ static CURLcode smtp_state_command_resp(struct Curl_easy *data, int smtpcode,
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;
+ result = CURLE_WEIRD_SERVER_REPLY;
}
else {
/* Temporarily add the LF character back and send as body to the client */
@@ -1182,7 +1184,7 @@ static CURLcode smtp_state_postdata_resp(struct Curl_easy *data,
(void)instate; /* no use for this yet */
if(smtpcode != 250)
- result = CURLE_RECV_ERROR;
+ result = CURLE_WEIRD_SERVER_REPLY;
/* End of DONE phase */
state(data, SMTP_STOP);
@@ -1724,8 +1726,7 @@ static CURLcode smtp_parse_url_path(struct Curl_easy *data)
}
/* URL decode the path and use it as the domain in our EHLO */
- return Curl_urldecode(data, path, 0, &smtpc->domain, NULL,
- REJECT_CTRL);
+ return Curl_urldecode(path, 0, &smtpc->domain, NULL, REJECT_CTRL);
}
/***********************************************************************
@@ -1742,7 +1743,7 @@ static CURLcode smtp_parse_custom_request(struct Curl_easy *data)
/* URL decode the custom request */
if(custom)
- result = Curl_urldecode(data, custom, 0, &smtp->custom, NULL, REJECT_CTRL);
+ result = Curl_urldecode(custom, 0, &smtp->custom, NULL, REJECT_CTRL);
return result;
}
@@ -1819,7 +1820,9 @@ static CURLcode smtp_parse_address(struct Curl_easy *data, const char *fqma,
return result;
}
-CURLcode Curl_smtp_escape_eob(struct Curl_easy *data, const ssize_t nread)
+CURLcode Curl_smtp_escape_eob(struct Curl_easy *data,
+ const ssize_t nread,
+ const ssize_t offset)
{
/* 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
@@ -1841,7 +1844,7 @@ CURLcode Curl_smtp_escape_eob(struct Curl_easy *data, const ssize_t nread)
scratch = newscratch = malloc(2 * data->set.upload_buffer_size);
if(!newscratch) {
- failf(data, "Failed to alloc scratch buffer!");
+ failf(data, "Failed to alloc scratch buffer");
return CURLE_OUT_OF_MEMORY;
}
@@ -1853,7 +1856,9 @@ CURLcode Curl_smtp_escape_eob(struct Curl_easy *data, const ssize_t nread)
/* 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++) {
+ if(offset)
+ memcpy(scratch, data->req.upload_fromhere, offset);
+ for(i = offset, si = offset; i < nread; i++) {
if(SMTP_EOB[smtp->eob] == data->req.upload_fromhere[i]) {
smtp->eob++;
diff --git a/lib/smtp.h b/lib/smtp.h
index 1fe45346e..24c5589e4 100644
--- a/lib/smtp.h
+++ b/lib/smtp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2009 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "pingpong.h"
@@ -91,6 +93,8 @@ extern const struct Curl_handler Curl_handler_smtps;
#define SMTP_EOB_REPL "\x0d\x0a\x2e\x2e"
#define SMTP_EOB_REPL_LEN 4
-CURLcode Curl_smtp_escape_eob(struct Curl_easy *data, const ssize_t nread);
+CURLcode Curl_smtp_escape_eob(struct Curl_easy *data,
+ const ssize_t nread,
+ const ssize_t offset);
#endif /* HEADER_CURL_SMTP_H */
diff --git a/lib/sockaddr.h b/lib/sockaddr.h
index 84c08d9bb..77ec833ee 100644
--- a/lib/sockaddr.h
+++ b/lib/sockaddr.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/socketpair.c b/lib/socketpair.c
index 409d2ad66..0f8798f08 100644
--- a/lib/socketpair.c
+++ b/lib/socketpair.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/socketpair.h b/lib/socketpair.h
index cdcc0b921..de70df673 100644
--- a/lib/socketpair.h
+++ b/lib/socketpair.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,10 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#ifndef HAVE_SOCKETPAIR
+#include <curl/curl.h>
+
int Curl_socketpair(int domain, int type, int protocol,
curl_socket_t socks[2]);
#else
diff --git a/lib/socks.c b/lib/socks.c
index a014aa668..52c29880a 100644
--- a/lib/socks.c
+++ b/lib/socks.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -326,7 +328,7 @@ CURLproxycode Curl_SOCKS4(const char *proxy_user,
if(proxy_user) {
size_t plen = strlen(proxy_user);
if(plen >= (size_t)data->set.buffer_size - 8) {
- failf(data, "Too long SOCKS proxy user name, can't use!");
+ failf(data, "Too long SOCKS proxy user name, can't use");
return CURLPX_LONG_USER;
}
/* copy the proxy name WITH trailing zero */
diff --git a/lib/socks.h b/lib/socks.h
index b0c7f9b26..ff83aa561 100644
--- a/lib/socks.h
+++ b/lib/socks.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -69,7 +71,7 @@ CURLproxycode Curl_SOCKS5(const char *proxy_name,
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
/*
- * This function handles the SOCKS5 GSS-API negotiation and initialisation
+ * This function handles the SOCKS5 GSS-API negotiation and initialization
*/
CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
struct Curl_easy *data);
diff --git a/lib/socks_gssapi.c b/lib/socks_gssapi.c
index 8ef2f8f37..f14099feb 100644
--- a/lib/socks_gssapi.c
+++ b/lib/socks_gssapi.c
@@ -5,8 +5,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- * Copyright (C) 2009, Markus Moeller, <markus_moeller@compuserve.com>
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012, Markus Moeller, <markus_moeller@compuserve.com>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -51,7 +53,7 @@ static int check_gss_err(struct Curl_easy *data,
if(GSS_ERROR(major_status)) {
OM_uint32 maj_stat, min_stat;
OM_uint32 msg_ctx = 0;
- gss_buffer_desc status_string;
+ gss_buffer_desc status_string = GSS_C_EMPTY_BUFFER;
char buf[1024];
size_t len;
diff --git a/lib/socks_sspi.c b/lib/socks_sspi.c
index ffc870346..210a0dfbc 100644
--- a/lib/socks_sspi.c
+++ b/lib/socks_sspi.c
@@ -5,8 +5,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- * Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012, 2011, Markus Moeller, <markus_moeller@compuserve.com>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/speedcheck.c b/lib/speedcheck.c
index 841d256b4..3ddc43d2d 100644
--- a/lib/speedcheck.c
+++ b/lib/speedcheck.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/speedcheck.h b/lib/speedcheck.h
index 1d4c7bfef..cb44eb04e 100644
--- a/lib/speedcheck.h
+++ b/lib/speedcheck.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/splay.c b/lib/splay.c
index bcc079521..33b44aa1c 100644
--- a/lib/splay.c
+++ b/lib/splay.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1997 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1997 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -101,7 +103,7 @@ struct Curl_tree *Curl_splayinsert(struct curltime i,
struct Curl_tree *node)
{
static const struct curltime KEY_NOTUSED = {
- (time_t)-1, (unsigned int)-1
+ ~0, -1
}; /* will *NEVER* appear */
if(!node)
@@ -211,7 +213,7 @@ int Curl_splayremove(struct Curl_tree *t,
struct Curl_tree **newroot)
{
static const struct curltime KEY_NOTUSED = {
- (time_t)-1, (unsigned int)-1
+ ~0, -1
}; /* will *NEVER* appear */
struct Curl_tree *x;
diff --git a/lib/splay.h b/lib/splay.h
index eb9f65f1e..015e2ca52 100644
--- a/lib/splay.h
+++ b/lib/splay.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1997 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1997 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#include "timeval.h"
diff --git a/lib/strcase.c b/lib/strcase.c
index 955e3c79e..09d2a8a96 100644
--- a/lib/strcase.c
+++ b/lib/strcase.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -26,144 +28,60 @@
#include "strcase.h"
-static char raw_tolower(char in);
-
-/* Portable, consistent toupper (remember EBCDIC). Do not use toupper() because
- its behavior is altered by the current locale. */
+/* Mapping table to go from lowercase to uppercase for plain ASCII.*/
+static const unsigned char touppermap[256] = {
+0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 65,
+66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+85, 86, 87, 88, 89, 90, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+246, 247, 248, 249, 250, 251, 252, 253, 254, 255
+};
+
+/* Mapping table to go from uppercase to lowercase for plain ASCII.*/
+static const unsigned char tolowermap[256] = {
+0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95,
+96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
+};
+
+
+/* Portable, consistent toupper. Do not use toupper() because its behavior is
+ altered by the current locale. */
char Curl_raw_toupper(char in)
{
-#if !defined(CURL_DOES_CONVERSIONS)
- if(in >= 'a' && in <= 'z')
- return (char)('A' + in - 'a');
-#else
- switch(in) {
- case 'a':
- return 'A';
- case 'b':
- return 'B';
- case 'c':
- return 'C';
- case 'd':
- return 'D';
- case 'e':
- return 'E';
- case 'f':
- return 'F';
- case 'g':
- return 'G';
- case 'h':
- return 'H';
- case 'i':
- return 'I';
- case 'j':
- return 'J';
- case 'k':
- return 'K';
- case 'l':
- return 'L';
- case 'm':
- return 'M';
- case 'n':
- return 'N';
- case 'o':
- return 'O';
- case 'p':
- return 'P';
- case 'q':
- return 'Q';
- case 'r':
- return 'R';
- case 's':
- return 'S';
- case 't':
- return 'T';
- case 'u':
- return 'U';
- case 'v':
- return 'V';
- case 'w':
- return 'W';
- case 'x':
- return 'X';
- case 'y':
- return 'Y';
- case 'z':
- return 'Z';
- }
-#endif
-
- return in;
+ return touppermap[(unsigned char) in];
}
-/* Portable, consistent tolower (remember EBCDIC). Do not use tolower() because
- its behavior is altered by the current locale. */
-static char raw_tolower(char in)
+/* Portable, consistent tolower. Do not use tolower() because its behavior is
+ altered by the current locale. */
+char Curl_raw_tolower(char in)
{
-#if !defined(CURL_DOES_CONVERSIONS)
- if(in >= 'A' && in <= 'Z')
- return (char)('a' + in - 'A');
-#else
- switch(in) {
- case 'A':
- return 'a';
- case 'B':
- return 'b';
- case 'C':
- return 'c';
- case 'D':
- return 'd';
- case 'E':
- return 'e';
- case 'F':
- return 'f';
- case 'G':
- return 'g';
- case 'H':
- return 'h';
- case 'I':
- return 'i';
- case 'J':
- return 'j';
- case 'K':
- return 'k';
- case 'L':
- return 'l';
- case 'M':
- return 'm';
- case 'N':
- return 'n';
- case 'O':
- return 'o';
- case 'P':
- return 'p';
- case 'Q':
- return 'q';
- case 'R':
- return 'r';
- case 'S':
- return 's';
- case 'T':
- return 't';
- case 'U':
- return 'u';
- case 'V':
- return 'v';
- case 'W':
- return 'w';
- case 'X':
- return 'x';
- case 'Y':
- return 'y';
- case 'Z':
- return 'z';
- }
-#endif
-
- return in;
+ return tolowermap[(unsigned char) in];
}
-
/*
* Curl_strcasecompare() is for doing "raw" case insensitive strings. This is
* meant to be locale independent and only compare strings we know are safe
@@ -171,9 +89,6 @@ static char raw_tolower(char in)
* https://daniel.haxx.se/blog/2008/10/15/strcasecmp-in-turkish/ for some
* further explanation to why this function is necessary.
*
- * The function is capable of comparing a-z case insensitively even for
- * non-ascii.
- *
* @unittest: 1301
*/
@@ -182,14 +97,15 @@ int Curl_strcasecompare(const char *first, const char *second)
while(*first && *second) {
if(Curl_raw_toupper(*first) != Curl_raw_toupper(*second))
/* get out of the loop as soon as they don't match */
- break;
+ return 0;
first++;
second++;
}
- /* we do the comparison here (possibly again), just to make sure that if the
- loop above is skipped because one of the strings reached zero, we must not
- return this as a successful match */
- return (Curl_raw_toupper(*first) == Curl_raw_toupper(*second));
+ /* If we're here either the strings are the same or the length is different.
+ We can just test if the "current" character is non-zero for one and zero
+ for the other. Note that the characters may not be exactly the same even
+ if they match, we only want to compare zero-ness. */
+ return !*first == !*second;
}
int Curl_safe_strcasecompare(const char *first, const char *second)
@@ -247,10 +163,42 @@ void Curl_strntolower(char *dest, const char *src, size_t n)
return;
do {
- *dest++ = raw_tolower(*src);
+ *dest++ = Curl_raw_tolower(*src);
} while(*src++ && --n);
}
+/* Compare case-sensitive NUL-terminated strings, taking care of possible
+ * null pointers. Return true if arguments match.
+ */
+bool Curl_safecmp(char *a, char *b)
+{
+ if(a && b)
+ return !strcmp(a, b);
+ return !a && !b;
+}
+
+/*
+ * Curl_timestrcmp() returns 0 if the two strings are identical. The time this
+ * function spends is a function of the shortest string, not of the contents.
+ */
+int Curl_timestrcmp(const char *a, const char *b)
+{
+ int match = 0;
+ int i = 0;
+
+ if(a && b) {
+ while(1) {
+ match |= a[i]^b[i];
+ if(!a[i] || !b[i])
+ break;
+ i++;
+ }
+ }
+ else
+ return a || b;
+ return match;
+}
+
/* --- public functions --- */
int curl_strequal(const char *first, const char *second)
diff --git a/lib/strcase.h b/lib/strcase.h
index 10dc69881..65a575385 100644
--- a/lib/strcase.h
+++ b/lib/strcase.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <curl/curl.h>
@@ -28,8 +30,9 @@
* Only "raw" case insensitive strings. This is meant to be locale independent
* and only compare strings we know are safe for this.
*
- * The function is capable of comparing a-z case insensitively even for
- * non-ascii.
+ * The function is capable of comparing a-z case insensitively.
+ *
+ * Result is 1 if text matches and 0 if not.
*/
#define strcasecompare(a,b) Curl_strcasecompare(a,b)
@@ -40,12 +43,16 @@ int Curl_safe_strcasecompare(const char *first, const char *second);
int Curl_strncasecompare(const char *first, const char *second, size_t max);
char Curl_raw_toupper(char in);
+char Curl_raw_tolower(char in);
/* checkprefix() is a shorter version of the above, used when the first
- argument is zero-byte terminated */
-#define checkprefix(a,b) curl_strnequal(a,b,strlen(a))
+ argument is the string literal */
+#define checkprefix(a,b) curl_strnequal(b, STRCONST(a))
void Curl_strntoupper(char *dest, const char *src, size_t n);
void Curl_strntolower(char *dest, const char *src, size_t n);
+bool Curl_safecmp(char *a, char *b);
+int Curl_timestrcmp(const char *first, const char *second);
+
#endif /* HEADER_CURL_STRCASE_H */
diff --git a/lib/strdup.c b/lib/strdup.c
index 85cf33b3e..ac22b6dda 100644
--- a/lib/strdup.c
+++ b/lib/strdup.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/strdup.h b/lib/strdup.h
index 8c8a6f20e..fb46808b8 100644
--- a/lib/strdup.h
+++ b/lib/strdup.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/strerror.c b/lib/strerror.c
index 07d73a74b..b9a51e26b 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2004 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2004 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,18 +18,17 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#ifdef HAVE_STRERROR_R
# if (!defined(HAVE_POSIX_STRERROR_R) && \
- !defined(HAVE_GLIBC_STRERROR_R) && \
- !defined(HAVE_VXWORKS_STRERROR_R)) || \
- (defined(HAVE_POSIX_STRERROR_R) && defined(HAVE_VXWORKS_STRERROR_R)) || \
- (defined(HAVE_GLIBC_STRERROR_R) && defined(HAVE_VXWORKS_STRERROR_R)) || \
+ !defined(HAVE_GLIBC_STRERROR_R)) || \
(defined(HAVE_POSIX_STRERROR_R) && defined(HAVE_GLIBC_STRERROR_R))
-# error "strerror_r MUST be either POSIX, glibc or vxworks-style"
+# error "strerror_r MUST be either POSIX, glibc style"
# endif
#endif
@@ -224,9 +223,6 @@ curl_easy_strerror(CURLcode error)
case CURLE_BAD_CONTENT_ENCODING:
return "Unrecognized or bad HTTP Content or Transfer-Encoding";
- case CURLE_LDAP_INVALID_URL:
- return "Invalid LDAP URL";
-
case CURLE_FILESIZE_EXCEEDED:
return "Maximum file size exceeded";
@@ -269,12 +265,6 @@ curl_easy_strerror(CURLcode error)
case CURLE_TFTP_NOSUCHUSER:
return "TFTP: No such user";
- case CURLE_CONV_FAILED:
- return "Conversion failed";
-
- case CURLE_CONV_REQD:
- return "Caller must register CURLOPT_CONV_ callback options";
-
case CURLE_REMOTE_FILE_NOT_FOUND:
return "Remote file not found";
@@ -326,6 +316,9 @@ curl_easy_strerror(CURLcode error)
case CURLE_SSL_CLIENTCERT:
return "SSL Client Certificate required";
+ case CURLE_UNRECOVERABLE_POLL:
+ return "Unrecoverable error in select/poll";
+
/* error codes not used by current libcurl */
case CURLE_OBSOLETE20:
case CURLE_OBSOLETE24:
@@ -337,6 +330,9 @@ curl_easy_strerror(CURLcode error)
case CURLE_OBSOLETE50:
case CURLE_OBSOLETE51:
case CURLE_OBSOLETE57:
+ case CURLE_OBSOLETE62:
+ case CURLE_OBSOLETE75:
+ case CURLE_OBSOLETE76:
case CURL_LAST:
break;
}
@@ -407,6 +403,9 @@ curl_multi_strerror(CURLMcode error)
case CURLM_ABORTED_BY_CALLBACK:
return "Operation was aborted by an application callback";
+ case CURLM_UNRECOVERABLE_POLL:
+ return "Unrecoverable error in select/poll";
+
case CURLM_LAST:
break;
}
@@ -477,7 +476,7 @@ curl_url_strerror(CURLUcode error)
return "Port number was not a decimal number between 0 and 65535";
case CURLUE_UNSUPPORTED_SCHEME:
- return "This libcurl build doesn't support the given URL scheme";
+ return "Unsupported URL scheme";
case CURLUE_URLDECODE:
return "URL decode error, most likely because of rubbish in the input";
@@ -531,7 +530,7 @@ curl_url_strerror(CURLUcode error)
return "Bad file:// URL";
case CURLUE_BAD_SLASHES:
- return "Unsupported number of slashes";
+ return "Unsupported number of slashes following scheme";
case CURLUE_BAD_SCHEME:
return "Bad scheme";
@@ -883,18 +882,6 @@ const char *Curl_strerror(int err, char *buf, size_t buflen)
else
msnprintf(buf, max, "Unknown error %d", 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.
- * The buffer size should be at least NAME_MAX (256)
- */
- {
- char buffer[256];
- if(OK == strerror_r(err, buffer))
- strncpy(buf, buffer, max);
- else
- msnprintf(buf, max, "Unknown error %d", err);
- }
#else
{
/* !checksrc! disable STRERROR 1 */
diff --git a/lib/strerror.h b/lib/strerror.h
index 96a7e27c5..658f16c10 100644
--- a/lib/strerror.h
+++ b/lib/strerror.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "urldata.h"
diff --git a/lib/strtok.c b/lib/strtok.c
index d53e587ab..6120bcc28 100644
--- a/lib/strtok.c
+++ b/lib/strtok.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/strtok.h b/lib/strtok.h
index 831ef0c00..641a3daed 100644
--- a/lib/strtok.h
+++ b/lib/strtok.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#include <stddef.h>
diff --git a/lib/strtoofft.c b/lib/strtoofft.c
index ac87cfc5b..30deb8c05 100644
--- a/lib/strtoofft.c
+++ b/lib/strtoofft.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <errno.h>
@@ -85,7 +87,7 @@ static curl_off_t strtooff(const char *nptr, char **endptr, int base)
/* Skip leading whitespace. */
end = (char *)nptr;
- while(ISSPACE(end[0])) {
+ while(ISBLANK(end[0])) {
end++;
}
@@ -220,9 +222,9 @@ CURLofft curlx_strtoofft(const char *str, char **endp, int base,
errno = 0;
*num = 0; /* clear by default */
- while(*str && ISSPACE(*str))
+ while(*str && ISBLANK(*str))
str++;
- if('-' == *str) {
+ if(('-' == *str) || (ISSPACE(*str))) {
if(endp)
*endp = (char *)str; /* didn't actually move */
return CURL_OFFT_INVAL; /* nothing parsed */
diff --git a/lib/strtoofft.h b/lib/strtoofft.h
index 4d22ba36c..311dae440 100644
--- a/lib/strtoofft.h
+++ b/lib/strtoofft.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/system_win32.c b/lib/system_win32.c
index 9a6dd9cef..bede9c7dc 100644
--- a/lib/system_win32.c
+++ b/lib/system_win32.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2016 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2016 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/system_win32.h b/lib/system_win32.h
index 69e0c812c..167804e3c 100644
--- a/lib/system_win32.h
+++ b/lib/system_win32.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2016 - 2020, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2016 - 2022, 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
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/telnet.c b/lib/telnet.c
index a81bb81c3..923c7f82b 100644
--- a/lib/telnet.c
+++ b/lib/telnet.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -687,7 +689,7 @@ static void printsub(struct Curl_easy *data,
infof(data, "%s", CURL_TELCMD(j));
else
infof(data, "%d", j);
- infof(data, ", not IAC SE!) ");
+ infof(data, ", not IAC SE) ");
}
}
length -= 2;
@@ -781,7 +783,7 @@ static CURLcode check_telnet_options(struct Curl_easy *data)
/* Add the user name as an environment variable if it
was given on the command line */
- if(conn->bits.user_passwd) {
+ if(data->state.aptr.user) {
msnprintf(option_arg, sizeof(option_arg), "USER,%s", conn->user);
beg = curl_slist_append(tn->telnet_vars, option_arg);
if(!beg) {
diff --git a/lib/telnet.h b/lib/telnet.h
index 1427473a9..6dd99b48d 100644
--- a/lib/telnet.h
+++ b/lib/telnet.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_TELNET
extern const struct Curl_handler Curl_handler_telnet;
diff --git a/lib/tftp.c b/lib/tftp.c
index f8c68441c..9e6d9490e 100644
--- a/lib/tftp.c
+++ b/lib/tftp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -327,7 +329,7 @@ static CURLcode tftp_parse_option_ack(struct tftp_state_data *state,
infof(data, "got option=(%s) value=(%s)", option, value);
- if(checkprefix(option, TFTP_OPTION_BLKSIZE)) {
+ if(checkprefix(TFTP_OPTION_BLKSIZE, option)) {
long blksize;
blksize = strtol(value, NULL, 10);
@@ -359,7 +361,7 @@ static CURLcode tftp_parse_option_ack(struct tftp_state_data *state,
infof(data, "%s (%d) %s (%d)", "blksize parsed from OACK",
state->blksize, "requested", state->requested_blksize);
}
- else if(checkprefix(option, TFTP_OPTION_TSIZE)) {
+ else if(checkprefix(TFTP_OPTION_TSIZE, option)) {
long tsize = 0;
tsize = strtol(value, NULL, 10);
@@ -463,7 +465,7 @@ static CURLcode tftp_send_first(struct tftp_state_data *state,
/* As RFC3617 describes the separator slash is not actually part of the
file name so we skip the always-present first letter of the path
string. */
- result = Curl_urldecode(data, &state->data->state.up.path[1], 0,
+ result = Curl_urldecode(&state->data->state.up.path[1], 0,
&filename, NULL, REJECT_ZERO);
if(result)
return result;
diff --git a/lib/tftp.h b/lib/tftp.h
index 4b5bea275..3f1fda638 100644
--- a/lib/tftp.h
+++ b/lib/tftp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef CURL_DISABLE_TFTP
extern const struct Curl_handler Curl_handler_tftp;
diff --git a/lib/timediff.c b/lib/timediff.c
new file mode 100644
index 000000000..c5893187d
--- /dev/null
+++ b/lib/timediff.c
@@ -0,0 +1,88 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "timediff.h"
+
+#include <limits.h>
+
+/*
+ * Converts number of milliseconds into a timeval structure.
+ *
+ * Return values:
+ * NULL IF tv is NULL or ms < 0 (eg. no timeout -> blocking select)
+ * tv with 0 in both fields IF ms == 0 (eg. 0ms timeout -> polling select)
+ * tv with converted fields IF ms > 0 (eg. >0ms timeout -> waiting select)
+ */
+struct timeval *curlx_mstotv(struct timeval *tv, timediff_t ms)
+{
+ if(!tv)
+ return NULL;
+
+ if(ms < 0)
+ return NULL;
+
+ if(ms > 0) {
+ timediff_t tv_sec = ms / 1000;
+ timediff_t tv_usec = (ms % 1000) * 1000; /* max=999999 */
+#ifdef HAVE_SUSECONDS_T
+#if TIMEDIFF_T_MAX > TIME_T_MAX
+ /* tv_sec overflow check in case time_t is signed */
+ if(tv_sec > TIME_T_MAX)
+ tv_sec = TIME_T_MAX;
+#endif
+ tv->tv_sec = (time_t)tv_sec;
+ tv->tv_usec = (suseconds_t)tv_usec;
+#elif defined(WIN32) /* maybe also others in the future */
+#if TIMEDIFF_T_MAX > LONG_MAX
+ /* tv_sec overflow check on Windows there we know it is long */
+ if(tv_sec > LONG_MAX)
+ tv_sec = LONG_MAX;
+#endif
+ tv->tv_sec = (long)tv_sec;
+ tv->tv_usec = (long)tv_usec;
+#else
+#if TIMEDIFF_T_MAX > INT_MAX
+ /* tv_sec overflow check in case time_t is signed */
+ if(tv_sec > INT_MAX)
+ tv_sec = INT_MAX;
+#endif
+ tv->tv_sec = (int)tv_sec;
+ tv->tv_usec = (int)tv_usec;
+#endif
+ }
+ else {
+ tv->tv_sec = 0;
+ tv->tv_usec = 0;
+ }
+
+ return tv;
+}
+
+/*
+ * Converts a timeval structure into number of milliseconds.
+ */
+timediff_t curlx_tvtoms(struct timeval *tv)
+{
+ return (tv->tv_sec*1000) + (timediff_t)(((double)tv->tv_usec)/1000.0);
+}
diff --git a/lib/timediff.h b/lib/timediff.h
new file mode 100644
index 000000000..90e547457
--- /dev/null
+++ b/lib/timediff.h
@@ -0,0 +1,52 @@
+#ifndef HEADER_CURL_TIMEDIFF_H
+#define HEADER_CURL_TIMEDIFF_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+/* Use a larger type even for 32 bit time_t systems so that we can keep
+ microsecond accuracy in it */
+typedef curl_off_t timediff_t;
+#define CURL_FORMAT_TIMEDIFF_T CURL_FORMAT_CURL_OFF_T
+
+#define TIMEDIFF_T_MAX CURL_OFF_T_MAX
+#define TIMEDIFF_T_MIN CURL_OFF_T_MIN
+
+/*
+ * Converts number of milliseconds into a timeval structure.
+ *
+ * Return values:
+ * NULL IF tv is NULL or ms < 0 (eg. no timeout -> blocking select)
+ * tv with 0 in both fields IF ms == 0 (eg. 0ms timeout -> polling select)
+ * tv with converted fields IF ms > 0 (eg. >0ms timeout -> waiting select)
+ */
+struct timeval *curlx_mstotv(struct timeval *tv, timediff_t ms);
+
+/*
+ * Converts a timeval structure into number of milliseconds.
+ */
+timediff_t curlx_tvtoms(struct timeval *tv);
+
+#endif /* HEADER_CURL_TIMEDIFF_H */
diff --git a/lib/timeval.c b/lib/timeval.c
index ca98fe50e..647d7b0fc 100644
--- a/lib/timeval.c
+++ b/lib/timeval.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "timeval.h"
diff --git a/lib/timeval.h b/lib/timeval.h
index 685e72961..8d4fef4e1 100644
--- a/lib/timeval.h
+++ b/lib/timeval.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,17 +20,13 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
-/* Use a larger type even for 32 bit time_t systems so that we can keep
- microsecond accuracy in it */
-typedef curl_off_t timediff_t;
-#define CURL_FORMAT_TIMEDIFF_T CURL_FORMAT_CURL_OFF_T
-
-#define TIMEDIFF_T_MAX CURL_OFF_T_MAX
-#define TIMEDIFF_T_MIN CURL_OFF_T_MIN
+#include "timediff.h"
struct curltime {
time_t tv_sec; /* seconds */
diff --git a/lib/transfer.c b/lib/transfer.c
index 22704fa15..441da7342 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -73,13 +75,13 @@
#include "select.h"
#include "multiif.h"
#include "connect.h"
-#include "non-ascii.h"
#include "http2.h"
#include "mime.h"
#include "strcase.h"
#include "urlapi-int.h"
#include "hsts.h"
#include "setopt.h"
+#include "headers.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -95,10 +97,10 @@
* Returns a pointer to the first matching header or NULL if none matched.
*/
char *Curl_checkheaders(const struct Curl_easy *data,
- const char *thisheader)
+ const char *thisheader,
+ const size_t thislen)
{
struct curl_slist *head;
- size_t thislen = strlen(thisheader);
DEBUGASSERT(thislen);
DEBUGASSERT(thisheader[thislen-1] != ':');
@@ -165,20 +167,6 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
curl_read_callback readfunc = NULL;
void *extra_data = NULL;
-#ifdef CURL_DOES_CONVERSIONS
- bool sending_http_headers = FALSE;
- struct connectdata *conn = data->conn;
-
- if(conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_RTSP)) {
- const struct HTTP *http = data->req.p.http;
-
- 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
-
#ifndef CURL_DISABLE_HTTP
if(data->state.trailers_state == TRAILERS_INITIALIZED) {
struct curl_slist *trailers = NULL;
@@ -216,6 +204,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
}
#endif
+#ifndef CURL_DISABLE_HTTP
/* if we are transmitting trailing data, we don't need to write
a chunk size so we skip this */
if(data->req.upload_chunky &&
@@ -225,7 +214,6 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
data->req.upload_fromhere += (8 + 2); /* 32bit hex + CRLF */
}
-#ifndef CURL_DISABLE_HTTP
if(data->state.trailers_state == TRAILERS_SENDING) {
/* if we're here then that means that we already sent the last empty chunk
but we didn't send a final CR LF, so we sent 0 CR LF. We then start
@@ -260,7 +248,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
/* 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!");
+ failf(data, "Read callback asked for PAUSE when not supported");
return CURLE_READ_ERROR;
}
@@ -281,6 +269,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
return CURLE_READ_ERROR;
}
+#ifndef CURL_DISABLE_HTTP
if(!data->req.forbidchunk && data->req.upload_chunky) {
/* if chunked Transfer-Encoding
* build chunk:
@@ -331,15 +320,12 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
/* always append ASCII CRLF to the data unless
we have a valid trailer callback */
-#ifndef CURL_DISABLE_HTTP
if((nread-hexlen) == 0 &&
data->set.trailer_callback != NULL &&
data->state.trailers_state == TRAILERS_NONE) {
data->state.trailers_state = TRAILERS_INITIALIZED;
}
- else
-#endif
- {
+ else {
memcpy(data->req.upload_fromhere + nread,
endofline_network,
strlen(endofline_network));
@@ -347,27 +333,6 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
}
}
-#ifdef CURL_DOES_CONVERSIONS
- {
- CURLcode result;
- size_t length;
- if(data->state.prefer_ascii)
- /* translate the protocol and data */
- length = nread;
- else
- /* just translate the protocol portion */
- length = hexlen;
- if(length) {
- result = Curl_convert_to_network(data, data->req.upload_fromhere,
- length);
- /* Curl_convert_to_network calls failf if unsuccessful */
- if(result)
- return result;
- }
- }
-#endif /* CURL_DOES_CONVERSIONS */
-
-#ifndef CURL_DISABLE_HTTP
if(data->state.trailers_state == TRAILERS_SENDING &&
!trailers_left(data)) {
Curl_dyn_free(&data->state.trailers_buf);
@@ -379,7 +344,6 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
infof(data, "Signaling end of chunked upload after trailers.");
}
else
-#endif
if((nread - hexlen) == 0 &&
data->state.trailers_state != TRAILERS_INITIALIZED) {
/* mark this as done once this chunk is transferred */
@@ -391,15 +355,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
if(added_crlf)
nread += strlen(endofline_network); /* for the added end of line */
}
-#ifdef CURL_DOES_CONVERSIONS
- else if((data->state.prefer_ascii) && (!sending_http_headers)) {
- CURLcode result;
- result = Curl_convert_to_network(data, data->req.upload_fromhere, nread);
- /* Curl_convert_to_network calls failf if unsuccessful */
- if(result)
- return result;
- }
-#endif /* CURL_DOES_CONVERSIONS */
+#endif
*nreadp = nread;
@@ -503,7 +459,7 @@ static int data_pending(const struct Curl_easy *data)
/* 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)
+#ifdef USE_NGHTTP2
/* For HTTP/2, we may read up everything including response body
with header fields in Curl_http_readwrite_headers. If no
content-length is provided, curl waits for the connection
@@ -583,18 +539,25 @@ static CURLcode readwrite_data(struct Curl_easy *data,
bool is_http2 = ((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
(conn->httpversion == 20));
#endif
+ bool is_http3 =
+#ifdef ENABLE_QUIC
+ ((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
+ (conn->httpversion == 30));
+#else
+ FALSE;
+#endif
if(
#ifdef USE_NGHTTP2
- /* For HTTP/2, read data without caring about the content
- length. This is safe because body in HTTP/2 is always
- segmented thanks to its framing layer. Meanwhile, we have to
- call Curl_read to ensure that http2_handle_stream_close is
- called when we read all incoming bytes for a particular
- stream. */
- !is_http2 &&
+ /* For HTTP/2, read data without caring about the content length. This
+ is safe because body in HTTP/2 is always segmented thanks to its
+ framing layer. Meanwhile, we have to call Curl_read to ensure that
+ http2_handle_stream_close is called when we read all incoming bytes
+ for a particular stream. */
+ !is_http2 &&
#endif
- k->size != -1 && !k->header) {
+ !is_http3 && /* Same reason mentioned above. */
+ k->size != -1 && !k->header) {
/* make sure we don't read too much */
curl_off_t totalleft = k->size - k->bytecount;
if(totalleft < (curl_off_t)bytestoread)
@@ -615,7 +578,7 @@ static CURLcode readwrite_data(struct Curl_easy *data,
else {
/* read nothing but since we wanted nothing we consider this an OK
situation to proceed from */
- DEBUGF(infof(data, "readwrite_data: we're done!"));
+ DEBUGF(infof(data, "readwrite_data: we're done"));
nread = 0;
}
@@ -641,6 +604,9 @@ static CURLcode readwrite_data(struct Curl_easy *data,
DEBUGF(infof(data, "nread == 0, stream closed, bailing"));
else
#endif
+ if(is_http3 && !nread)
+ DEBUGF(infof(data, "nread == 0, stream closed, bailing"));
+ else
DEBUGF(infof(data, "nread <= 0, server closed connection, bailing"));
k->keepon &= ~KEEP_RECV;
break;
@@ -798,7 +764,13 @@ static CURLcode readwrite_data(struct Curl_easy *data,
if(nread < 0) /* this should be unusual */
nread = 0;
- k->keepon &= ~KEEP_RECV; /* we're done reading */
+ /* HTTP/3 over QUIC should keep reading until QUIC connection
+ is closed. In contrast to HTTP/2 which can stop reading
+ from TCP connection, HTTP/3 over QUIC needs ACK from server
+ to ensure stream closure. It should keep reading. */
+ if(!is_http3) {
+ k->keepon &= ~KEEP_RECV; /* we're done reading */
+ }
}
k->bytecount += nread;
@@ -944,6 +916,9 @@ static void win_update_buffer_size(curl_socket_t sockfd)
#define win_update_buffer_size(x)
#endif
+#define curl_upload_refill_watermark(data) \
+ ((ssize_t)((data)->set.upload_buffer_size >> 5))
+
/*
* Send data to upload to the server, when the socket is writable.
*/
@@ -965,13 +940,25 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
do {
curl_off_t nbody;
+ ssize_t offset = 0;
+
+ if(0 != k->upload_present &&
+ k->upload_present < curl_upload_refill_watermark(data) &&
+ !k->upload_chunky &&/*(variable sized chunked header; append not safe)*/
+ !k->upload_done && /*!(k->upload_done once k->upload_present sent)*/
+ !(k->writebytecount + k->upload_present - k->pendingheader ==
+ data->state.infilesize)) {
+ offset = k->upload_present;
+ }
/* only read more data if there's no upload data already
- present in the upload buffer */
- if(0 == k->upload_present) {
+ present in the upload buffer, or if appending to upload buffer */
+ if(0 == k->upload_present || offset) {
result = Curl_get_upload_buffer(data);
if(result)
return result;
+ if(offset && k->upload_fromhere != data->state.ulbuf)
+ memmove(data->state.ulbuf, k->upload_fromhere, offset);
/* init the "upload from here" pointer */
k->upload_fromhere = data->state.ulbuf;
@@ -1004,12 +991,14 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
sending_http_headers = FALSE;
}
- result = Curl_fillreadbuffer(data, data->set.upload_buffer_size,
+ k->upload_fromhere += offset;
+ result = Curl_fillreadbuffer(data, data->set.upload_buffer_size-offset,
&fillcount);
+ k->upload_fromhere -= offset;
if(result)
return result;
- nread = fillcount;
+ nread = offset + fillcount;
}
else
nread = 0; /* we're done uploading/reading */
@@ -1039,7 +1028,7 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
if(!data->state.scratch) {
data->state.scratch = malloc(2 * data->set.upload_buffer_size);
if(!data->state.scratch) {
- failf(data, "Failed to alloc scratch buffer!");
+ failf(data, "Failed to alloc scratch buffer");
return CURLE_OUT_OF_MEMORY;
}
@@ -1051,7 +1040,9 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
* That means the hex values for ASCII CR (0x0d) & LF (0x0a)
* must be used instead of the escape sequences \r & \n.
*/
- for(i = 0, si = 0; i < nread; i++, si++) {
+ if(offset)
+ memcpy(data->state.scratch, k->upload_fromhere, offset);
+ for(i = offset, si = offset; i < nread; i++, si++) {
if(k->upload_fromhere[i] == 0x0a) {
data->state.scratch[si++] = 0x0d;
data->state.scratch[si] = 0x0a;
@@ -1081,12 +1072,12 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
#ifndef CURL_DISABLE_SMTP
if(conn->handler->protocol & PROTO_FAMILY_SMTP) {
- result = Curl_smtp_escape_eob(data, nread);
+ result = Curl_smtp_escape_eob(data, nread, offset);
if(result)
return result;
}
#endif /* CURL_DISABLE_SMTP */
- } /* if 0 == k->upload_present */
+ } /* if 0 == k->upload_present or appended to upload buffer */
else {
/* We have a partial buffer left from a previous "round". Use
that instead of reading more data */
@@ -1197,10 +1188,12 @@ CURLcode Curl_readwrite(struct connectdata *conn,
else
fd_write = CURL_SOCKET_BAD;
+#if defined(USE_HTTP2) || defined(USE_HTTP3)
if(data->state.drain) {
select_res |= CURL_CSELECT_IN;
DEBUGF(infof(data, "Curl_readwrite: forcibly told to drain data"));
}
+#endif
if(!select_res) /* Call for select()/poll() only, if read/write/error
status is not known. */
@@ -1266,6 +1259,14 @@ CURLcode Curl_readwrite(struct connectdata *conn,
infof(data, "Done waiting for 100-continue");
}
}
+
+#ifdef ENABLE_QUIC
+ if(conn->transport == TRNSPRT_QUIC) {
+ result = Curl_quic_idle(data);
+ if(result)
+ return result;
+ }
+#endif
}
if(Curl_pgrsUpdate(data))
@@ -1404,7 +1405,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
if(!data->state.url && !data->set.uh) {
/* we can't do anything without URL */
- failf(data, "No URL set!");
+ failf(data, "No URL set");
return CURLE_URL_MALFORMAT;
}
@@ -1421,7 +1422,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
uc = curl_url_get(data->set.uh,
CURLUPART_URL, &data->set.str[STRING_SET_URL], 0);
if(uc) {
- failf(data, "No URL set!");
+ failf(data, "No URL set");
return CURLE_URL_MALFORMAT;
}
}
@@ -1438,7 +1439,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
if(result)
return result;
- data->state.wildcardmatch = data->set.wildcard_enabled;
+ data->state.requests = 0;
data->state.followlocation = 0; /* reset the location-follow counter */
data->state.this_is_a_follow = FALSE; /* reset this */
data->state.errorbuf = FALSE; /* no error has occurred */
@@ -1460,10 +1461,11 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
else
data->state.infilesize = 0;
+#ifndef CURL_DISABLE_COOKIES
/* If there is a list of cookie files to read, do it now! */
if(data->state.cookielist)
Curl_cookie_loadfiles(data);
-
+#endif
/* If there is a list of host pairs to deal with */
if(data->state.resolve)
result = Curl_loadhostpairs(data);
@@ -1493,6 +1495,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
data->state.authproxy.picked &= data->state.authproxy.want;
#ifndef CURL_DISABLE_FTP
+ data->state.wildcardmatch = data->set.wildcard_enabled;
if(data->state.wildcardmatch) {
struct WildcardData *wc = &data->wildcard;
if(wc->state < CURLWC_INIT) {
@@ -1533,6 +1536,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
data->set.str[STRING_PROXYPASSWORD]);
data->req.headerbytecount = 0;
+ Curl_headers_cleanup(data);
return result;
}
@@ -1577,6 +1581,8 @@ CURLcode Curl_follow(struct Curl_easy *data,
DEBUGASSERT(type != FOLLOW_NONE);
+ if(type != FOLLOW_FAKE)
+ data->state.requests++; /* count all real follows */
if(type == FOLLOW_REDIR) {
if((data->set.maxredirs != -1) &&
(data->state.followlocation >= data->set.maxredirs)) {
@@ -1603,7 +1609,7 @@ CURLcode Curl_follow(struct Curl_easy *data,
data->state.referer_alloc = FALSE;
}
- /* Make a copy of the URL without crenditals and fragment */
+ /* Make a copy of the URL without credentials and fragment */
u = curl_url();
if(!u)
return CURLE_OUT_OF_MEMORY;
@@ -1631,7 +1637,7 @@ CURLcode Curl_follow(struct Curl_easy *data,
if((type != FOLLOW_RETRY) &&
(data->req.httpcode != 401) && (data->req.httpcode != 407) &&
- Curl_is_absolute_url(newurl, NULL, 0))
+ Curl_is_absolute_url(newurl, NULL, 0, FALSE))
/* If this is not redirect due to a 401 or 407 response and an absolute
URL: don't allow a custom port number */
disallowport = TRUE;
@@ -1640,10 +1646,14 @@ CURLcode Curl_follow(struct Curl_easy *data,
uc = curl_url_set(data->state.uh, CURLUPART_URL, newurl,
(type == FOLLOW_FAKE) ? CURLU_NON_SUPPORT_SCHEME :
((type == FOLLOW_REDIR) ? CURLU_URLENCODE : 0) |
- CURLU_ALLOW_SPACE);
+ CURLU_ALLOW_SPACE |
+ (data->set.path_as_is ? CURLU_PATH_AS_IS : 0));
if(uc) {
- if(type != FOLLOW_FAKE)
+ if(type != FOLLOW_FAKE) {
+ failf(data, "The redirect target URL could not be parsed: %s",
+ curl_url_strerror(uc));
return Curl_uc_to_curlcode(uc);
+ }
/* the URL could not be parsed for some reason, but since this is FAKE
mode, just duplicate the field as-is */
@@ -1652,10 +1662,57 @@ CURLcode Curl_follow(struct Curl_easy *data,
return CURLE_OUT_OF_MEMORY;
}
else {
-
uc = curl_url_get(data->state.uh, CURLUPART_URL, &newurl, 0);
if(uc)
return Curl_uc_to_curlcode(uc);
+
+ /* Clear auth if this redirects to a different port number or protocol,
+ unless permitted */
+ if(!data->set.allow_auth_to_other_hosts && (type != FOLLOW_FAKE)) {
+ char *portnum;
+ int port;
+ bool clear = FALSE;
+
+ if(data->set.use_port && data->state.allow_port)
+ /* a custom port is used */
+ port = (int)data->set.use_port;
+ else {
+ uc = curl_url_get(data->state.uh, CURLUPART_PORT, &portnum,
+ CURLU_DEFAULT_PORT);
+ if(uc) {
+ free(newurl);
+ return Curl_uc_to_curlcode(uc);
+ }
+ port = atoi(portnum);
+ free(portnum);
+ }
+ if(port != data->info.conn_remote_port) {
+ infof(data, "Clear auth, redirects to port from %u to %u",
+ data->info.conn_remote_port, port);
+ clear = TRUE;
+ }
+ else {
+ char *scheme;
+ const struct Curl_handler *p;
+ uc = curl_url_get(data->state.uh, CURLUPART_SCHEME, &scheme, 0);
+ if(uc) {
+ free(newurl);
+ return Curl_uc_to_curlcode(uc);
+ }
+
+ p = Curl_builtin_scheme(scheme, CURL_ZERO_TERMINATED);
+ if(p && (p->protocol != data->info.conn_protocol)) {
+ infof(data, "Clear auth, redirects scheme from %s to %s",
+ data->info.conn_scheme, scheme);
+ clear = TRUE;
+ }
+ free(scheme);
+ }
+ if(clear) {
+ Curl_safefree(data->state.aptr.user);
+ Curl_safefree(data->state.aptr.passwd);
+ }
+ }
}
if(type == FOLLOW_FAKE) {
@@ -1807,10 +1864,12 @@ CURLcode Curl_retry_request(struct Curl_easy *data, char **url)
return CURLE_OK;
if((data->req.bytecount + data->req.headerbytecount == 0) &&
- conn->bits.reuse &&
- (!data->set.opt_no_body
- || (conn->handler->protocol & PROTO_FAMILY_HTTP)) &&
- (data->set.rtspreq != RTSPREQ_RECEIVE))
+ conn->bits.reuse &&
+ (!data->set.opt_no_body || (conn->handler->protocol & PROTO_FAMILY_HTTP))
+#ifndef CURL_DISABLE_RTSP
+ && (data->set.rtspreq != RTSPREQ_RECEIVE)
+#endif
+ )
/* We got no data, we attempted to re-use a connection. For HTTP this
can be a retry so we try again regardless if we expected a body.
For other protocols we only try again only if we expected a body.
@@ -1882,11 +1941,14 @@ Curl_setup_transfer(
struct SingleRequest *k = &data->req;
struct connectdata *conn = data->conn;
struct HTTP *http = data->req.p.http;
- bool httpsending = ((conn->handler->protocol&PROTO_FAMILY_HTTP) &&
- (http->sending == HTTPSEND_REQUEST));
+ bool httpsending;
+
DEBUGASSERT(conn != NULL);
DEBUGASSERT((sockindex <= 1) && (sockindex >= -1));
+ httpsending = ((conn->handler->protocol&PROTO_FAMILY_HTTP) &&
+ (http->sending == HTTPSEND_REQUEST));
+
if(conn->bits.multiplex || conn->httpversion == 20 || httpsending) {
/* when multiplexing, the read/write sockets need to be the same! */
conn->sockfd = sockindex == -1 ?
diff --git a/lib/transfer.h b/lib/transfer.h
index 0fa3d55e8..65fe68e81 100644
--- a/lib/transfer.h
+++ b/lib/transfer.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,11 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#define Curl_headersep(x) ((((x)==':') || ((x)==';')))
char *Curl_checkheaders(const struct Curl_easy *data,
- const char *thisheader);
+ const char *thisheader,
+ const size_t thislen);
void Curl_init_CONNECT(struct Curl_easy *data);
diff --git a/lib/url.c b/lib/url.c
index 9f1013554..be5ffca2d 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -71,10 +73,11 @@
#endif
#elif defined(USE_WIN32_IDN)
-/* prototype for curl_win32_idn_to_ascii() */
-bool curl_win32_idn_to_ascii(const char *in, char **out);
+/* prototype for Curl_win32_idn_to_ascii() */
+bool Curl_win32_idn_to_ascii(const char *in, char **out);
#endif /* USE_LIBIDN2 */
+#include "doh.h"
#include "urldata.h"
#include "netrc.h"
@@ -99,11 +102,11 @@ bool curl_win32_idn_to_ascii(const char *in, char **out);
#include "easyif.h"
#include "speedcheck.h"
#include "warnless.h"
-#include "non-ascii.h"
#include "getinfo.h"
#include "urlapi-int.h"
#include "system_win32.h"
#include "hsts.h"
+#include "noproxy.h"
/* And now for the protocols */
#include "ftp.h"
@@ -126,26 +129,17 @@ bool curl_win32_idn_to_ascii(const char *in, char **out);
#include "http_proxy.h"
#include "conncache.h"
#include "multihandle.h"
-#include "dotdot.h"
#include "strdup.h"
#include "setopt.h"
#include "altsvc.h"
#include "dynbuf.h"
+#include "headers.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
-/* Count of the backend ssl objects to allocate */
-#ifdef USE_SSL
-# ifndef CURL_DISABLE_PROXY
-# define SSL_BACKEND_CNT 4
-# else
-# define SSL_BACKEND_CNT 2
-# endif
-#endif
-
static void conn_free(struct connectdata *conn);
/* Some parts of the code (e.g. chunked encoding) assume this buffer has at
@@ -156,6 +150,13 @@ static void conn_free(struct connectdata *conn);
# error READBUFFER_SIZE is too small
#endif
+#ifdef USE_UNIX_SOCKETS
+#define UNIX_SOCKET_PREFIX "localhost"
+#endif
+
+/* Reject URLs exceeding this length */
+#define MAX_URL_LEN 0xffff
+
/*
* get_protocol_family()
*
@@ -167,7 +168,7 @@ static void conn_free(struct connectdata *conn);
*
* Returns the family as a single bit protocol identifier.
*/
-static unsigned int get_protocol_family(const struct Curl_handler *h)
+static curl_prot_t get_protocol_family(const struct Curl_handler *h)
{
DEBUGASSERT(h);
DEBUGASSERT(h->family);
@@ -191,6 +192,16 @@ static const struct Curl_handler * const protocols[] = {
&Curl_handler_http,
#endif
+#ifdef USE_WEBSOCKETS
+#if defined(USE_SSL) && !defined(CURL_DISABLE_HTTP)
+ &Curl_handler_wss,
+#endif
+
+#ifndef CURL_DISABLE_HTTP
+ &Curl_handler_ws,
+#endif
+#endif
+
#ifndef CURL_DISABLE_FTP
&Curl_handler_ftp,
#endif
@@ -381,7 +392,7 @@ CURLcode Curl_close(struct Curl_easy **datap)
/* Detach connection if any is left. This should not be normal, but can be
the case for example with CONNECT_ONLY + recv/send (test 556) */
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
m = data->multi;
if(m)
/* This handle is still part of a multi handle, take care of this first
@@ -442,10 +453,10 @@ CURLcode Curl_close(struct Curl_easy **datap)
Curl_safefree(data->info.wouldredirect);
/* this destroys the channel and we cannot use it anymore after this */
+ Curl_resolver_cancel(data);
Curl_resolver_cleanup(data->state.async.resolver);
Curl_http2_cleanup_dependencies(data);
- Curl_convert_close(data);
/* No longer a dirty share, if it exists */
if(data->share) {
@@ -481,6 +492,7 @@ CURLcode Curl_close(struct Curl_easy **datap)
/* destruct wildcard structures if it is needed */
Curl_wildcard_dtor(&data->wildcard);
Curl_freeset(data);
+ Curl_headers_cleanup(data);
free(data);
return CURLE_OK;
}
@@ -504,22 +516,18 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
/* use fread as default function to read input */
set->fread_func_set = (curl_read_callback)fread;
set->is_fread_set = 0;
- set->is_fwrite_set = 0;
set->seek_func = ZERO_NULL;
set->seek_client = ZERO_NULL;
- /* conversion callbacks for non-ASCII hosts */
- set->convfromnetwork = ZERO_NULL;
- set->convtonetwork = ZERO_NULL;
- set->convfromutf8 = ZERO_NULL;
-
set->filesize = -1; /* we don't know the size */
set->postfieldsize = -1; /* unknown size */
set->maxredirs = -1; /* allow any amount by default */
set->method = HTTPREQ_GET; /* Default HTTP request */
+#ifndef CURL_DISABLE_RTSP
set->rtspreq = RTSPREQ_OPTIONS; /* Default RTSP request */
+#endif
#ifndef CURL_DISABLE_FTP
set->ftp_use_epsv = TRUE; /* FTP defaults to EPSV operations */
set->ftp_use_eprt = TRUE; /* FTP defaults to EPRT operations */
@@ -535,10 +543,12 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
set->proxyport = 0;
set->proxytype = CURLPROXY_HTTP; /* defaults to HTTP proxy */
set->httpauth = CURLAUTH_BASIC; /* defaults to basic */
- set->proxyauth = CURLAUTH_BASIC; /* defaults to basic */
+#ifndef CURL_DISABLE_PROXY
+ set->proxyauth = CURLAUTH_BASIC; /* defaults to basic */
/* SOCKS5 proxy auth defaults to username/password + GSS-API */
set->socks5auth = CURLAUTH_BASIC | CURLAUTH_GSSAPI;
+#endif
/* make libcurl quiet by default: */
set->hide_progress = TRUE; /* CURLOPT_NOPROGRESS changes these */
@@ -556,10 +566,10 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
set->ssl.primary.verifypeer = TRUE;
set->ssl.primary.verifyhost = TRUE;
#ifdef USE_TLS_SRP
- set->ssl.authtype = CURL_TLSAUTH_NONE;
+ set->ssl.primary.authtype = CURL_TLSAUTH_NONE;
#endif
- set->ssh_auth_types = CURLSSH_AUTH_DEFAULT; /* defaults to any auth
- type */
+ /* defaults to any auth type */
+ set->ssh_auth_types = CURLSSH_AUTH_DEFAULT;
set->ssl.primary.sessionid = TRUE; /* session ID caching enabled by
default */
#ifndef CURL_DISABLE_PROXY
@@ -568,11 +578,7 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
set->new_file_perms = 0644; /* Default permissions */
set->new_directory_perms = 0755; /* Default permissions */
-
- /* for the *protocols fields we don't use the CURLPROTO_ALL convenience
- 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->allowed_protocols = (curl_prot_t) CURLPROTO_ALL;
set->redir_protocols = CURLPROTO_HTTP | CURLPROTO_HTTPS | CURLPROTO_FTP |
CURLPROTO_FTPS;
@@ -612,29 +618,30 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
#endif
}
+#ifndef CURL_DISABLE_FTP
set->wildcard_enabled = FALSE;
set->chunk_bgn = ZERO_NULL;
set->chunk_end = ZERO_NULL;
+ set->fnmatch = ZERO_NULL;
+#endif
set->tcp_keepalive = FALSE;
set->tcp_keepintvl = 60;
set->tcp_keepidle = 60;
set->tcp_fastopen = FALSE;
set->tcp_nodelay = TRUE;
- set->ssl_enable_npn = TRUE;
set->ssl_enable_alpn = TRUE;
set->expect_100_timeout = 1000L; /* Wait for a second by default. */
set->sep_headers = TRUE; /* separated header lists by default */
set->buffer_size = READBUFFER_SIZE;
set->upload_buffer_size = UPLOADBUFFER_DEFAULT;
set->happy_eyeballs_timeout = CURL_HET_DEFAULT;
- set->fnmatch = ZERO_NULL;
set->upkeep_interval_ms = CURL_UPKEEP_INTERVAL_DEFAULT;
set->maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */
set->maxage_conn = 118;
set->maxlifetime_conn = 0;
set->http09_allowed = FALSE;
set->httpwant =
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
CURL_HTTP_VERSION_2TLS
#else
CURL_HTTP_VERSION_1_1
@@ -677,7 +684,6 @@ CURLcode Curl_open(struct Curl_easy **curl)
result = Curl_init_userdefined(data);
if(!result) {
Curl_dyn_init(&data->state.headerb, CURL_MAX_HTTP_HEADER);
- Curl_convert_init(data);
Curl_initinfo(data);
/* most recent connection is not yet defined */
@@ -745,22 +751,15 @@ static void conn_shutdown(struct Curl_easy *data, struct connectdata *conn)
DEBUGASSERT(data);
infof(data, "Closing connection %ld", conn->connection_id);
-#ifndef USE_HYPER
- if(conn->connect_state && conn->connect_state->prot_save) {
- /* If this was closed with a CONNECT in progress, cleanup this temporary
- struct arrangement */
- data->req.p.http = NULL;
- Curl_safefree(conn->connect_state->prot_save);
- }
-#endif
-
/* possible left-overs from the async name resolvers */
Curl_resolver_cancel(data);
/* close the SSL stuff before we close any sockets since they will/may
write to the sockets */
Curl_ssl_close(data, conn, FIRSTSOCKET);
+#ifndef CURL_DISABLE_FTP
Curl_ssl_close(data, conn, SECONDARYSOCKET);
+#endif
/* close possibly still open sockets */
if(CURL_SOCKET_BAD != conn->sock[SECONDARYSOCKET])
@@ -794,6 +793,7 @@ static void conn_free(struct connectdata *conn)
Curl_safefree(conn->passwd);
Curl_safefree(conn->sasl_authzid);
Curl_safefree(conn->options);
+ Curl_safefree(conn->oauth_bearer);
Curl_dyn_free(&conn->trailer);
Curl_safefree(conn->host.rawalloc); /* host name buffer */
Curl_safefree(conn->conn_to_host.rawalloc); /* host name buffer */
@@ -830,8 +830,8 @@ static void conn_free(struct connectdata *conn)
*
*/
-CURLcode Curl_disconnect(struct Curl_easy *data,
- struct connectdata *conn, bool dead_connection)
+void Curl_disconnect(struct Curl_easy *data,
+ struct connectdata *conn, bool dead_connection)
{
/* there must be a connection to close */
DEBUGASSERT(conn);
@@ -851,7 +851,7 @@ CURLcode Curl_disconnect(struct Curl_easy *data,
*/
if(CONN_INUSE(conn) && !dead_connection) {
DEBUGF(infof(data, "Curl_disconnect when inuse: %zu", CONN_INUSE(conn)));
- return CURLE_OK;
+ return;
}
if(conn->dns_entry) {
@@ -865,13 +865,13 @@ CURLcode Curl_disconnect(struct Curl_easy *data,
/* Cleanup NEGOTIATE connection-related data */
Curl_http_auth_cleanup_negotiate(conn);
- if(conn->bits.connect_only)
+ if(conn->connect_only)
/* treat the connection as dead in CONNECT_ONLY situations */
dead_connection = TRUE;
/* temporarily attach the connection to this transfer handle for the
disconnect and shutdown */
- Curl_attach_connnection(data, conn);
+ Curl_attach_connection(data, conn);
if(conn->handler->disconnect)
/* This is set if protocol-specific cleanups should be made */
@@ -880,10 +880,9 @@ CURLcode Curl_disconnect(struct Curl_easy *data,
conn_shutdown(data, conn);
/* detach it again */
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
conn_free(conn);
- return CURLE_OK;
}
/*
@@ -949,20 +948,12 @@ socks_proxy_info_matches(const struct proxy_info *data,
/* the user information is case-sensitive
or at least it is not defined as case-insensitive
- see https://tools.ietf.org/html/rfc3986#section-3.2.1 */
- if(!data->user != !needle->user)
- return FALSE;
- /* curl_strequal does a case insentive comparison, so do not use it here! */
- if(data->user &&
- needle->user &&
- strcmp(data->user, needle->user) != 0)
- return FALSE;
- if(!data->passwd != !needle->passwd)
- return FALSE;
- /* curl_strequal does a case insentive comparison, so do not use it here! */
- if(data->passwd &&
- needle->passwd &&
- strcmp(data->passwd, needle->passwd) != 0)
+ see https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.1 */
+
+ /* curl_strequal does a case insensitive comparison,
+ so do not use it here! */
+ if(Curl_timestrcmp(data->user, needle->user) ||
+ Curl_timestrcmp(data->passwd, needle->passwd))
return FALSE;
return TRUE;
}
@@ -1033,12 +1024,12 @@ static bool extract_if_dead(struct connectdata *conn,
/* briefly attach the connection to this transfer for the purpose of
checking it */
- Curl_attach_connnection(data, conn);
+ Curl_attach_connection(data, conn);
state = conn->handler->connection_check(data, conn, CONNCHECK_ISDEAD);
dead = (state & CONNRESULT_DEAD);
/* detach the connection again */
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
}
else {
@@ -1047,7 +1038,7 @@ static bool extract_if_dead(struct connectdata *conn,
}
if(dead) {
- infof(data, "Connection %ld seems to be dead!", conn->connection_id);
+ infof(data, "Connection %ld seems to be dead", conn->connection_id);
Curl_conncache_remove_conn(data, conn, FALSE);
return TRUE;
}
@@ -1105,7 +1096,7 @@ static void prune_dead_connections(struct Curl_easy *data)
Curl_conncache_remove_conn(data, prune.extracted, TRUE);
/* disconnect it */
- (void)Curl_disconnect(data, prune.extracted, TRUE);
+ Curl_disconnect(data, prune.extracted, TRUE);
}
CONNCACHE_LOCK(data);
data->state.conn_cache->last_cleanup = now;
@@ -1113,6 +1104,17 @@ static void prune_dead_connections(struct Curl_easy *data)
}
}
+#ifdef USE_SSH
+static bool ssh_config_matches(struct connectdata *one,
+ struct connectdata *two)
+{
+ return (Curl_safecmp(one->proto.sshc.rsa, two->proto.sshc.rsa) &&
+ Curl_safecmp(one->proto.sshc.rsa_pub, two->proto.sshc.rsa_pub));
+}
+#else
+#define ssh_config_matches(x,y) FALSE
+#endif
+
/*
* Given one filled in connection struct (named needle), this function should
* detect if there already is one that has all the significant details
@@ -1136,7 +1138,6 @@ ConnectionExists(struct Curl_easy *data,
bool foundPendingCandidate = FALSE;
bool canmultiplex = IsMultiplexingPossible(data, needle);
struct connectbundle *bundle;
- const char *hostbundle;
#ifdef USE_NTLM
bool wantNTLMhttp = ((data->state.authhost.want &
@@ -1157,15 +1158,14 @@ ConnectionExists(struct Curl_easy *data,
/* Look up the bundle with all the connections to this particular host.
Locks the connection cache, beware of early returns! */
- bundle = Curl_conncache_find_bundle(data, needle, data->state.conn_cache,
- &hostbundle);
+ bundle = Curl_conncache_find_bundle(data, needle, data->state.conn_cache);
if(bundle) {
/* Max pipe length is zero (unlimited) for multiplexed connections */
struct Curl_llist_element *curr;
- infof(data, "Found bundle for host %s: %p [%s]",
- hostbundle, (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ?
- "can multiplex" : "serially"));
+ infof(data, "Found bundle for host: %p [%s]",
+ (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ?
+ "can multiplex" : "serially"));
/* We can't multiplex if we don't know anything about the server */
if(canmultiplex) {
@@ -1182,11 +1182,11 @@ ConnectionExists(struct Curl_easy *data,
}
if((bundle->multiuse == BUNDLE_MULTIPLEX) &&
!Curl_multiplex_wanted(data->multi)) {
- infof(data, "Could multiplex, but not asked to!");
+ infof(data, "Could multiplex, but not asked to");
canmultiplex = FALSE;
}
if(bundle->multiuse == BUNDLE_NO_MULTIUSE) {
- infof(data, "Can not multiplex, even if we wanted to!");
+ infof(data, "Can not multiplex, even if we wanted to");
canmultiplex = FALSE;
}
}
@@ -1203,13 +1203,13 @@ ConnectionExists(struct Curl_easy *data,
check = curr->ptr;
curr = curr->next;
- if(check->bits.connect_only || check->bits.close)
+ if(check->connect_only || check->bits.close)
/* connect-only or to-be-closed connections will not be reused */
continue;
if(extract_if_dead(check, data)) {
/* disconnect it */
- (void)Curl_disconnect(data, check, TRUE);
+ Curl_disconnect(data, check, TRUE);
continue;
}
@@ -1355,8 +1355,10 @@ ConnectionExists(struct Curl_easy *data,
if(!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) {
/* This protocol requires credentials per connection,
so verify that we're using the same name and password as well */
- if(strcmp(needle->user, check->user) ||
- strcmp(needle->passwd, check->passwd)) {
+ if(Curl_timestrcmp(needle->user, check->user) ||
+ Curl_timestrcmp(needle->passwd, check->passwd) ||
+ Curl_timestrcmp(needle->sasl_authzid, check->sasl_authzid) ||
+ Curl_timestrcmp(needle->oauth_bearer, check->oauth_bearer)) {
/* one of them was different */
continue;
}
@@ -1369,6 +1371,11 @@ ConnectionExists(struct Curl_easy *data,
(data->state.httpwant < CURL_HTTP_VERSION_2_0))
continue;
+ if(get_protocol_family(needle->handler) == PROTO_FAMILY_SSH) {
+ if(!ssh_config_matches(needle, check))
+ continue;
+ }
+
if((needle->handler->flags&PROTOPT_SSL)
#ifndef CURL_DISABLE_PROXY
|| !needle->bits.httpproxy || needle->bits.tunnel_proxy
@@ -1427,8 +1434,8 @@ ConnectionExists(struct Curl_easy *data,
possible. (Especially we must not reuse the same connection if
partway through a handshake!) */
if(wantNTLMhttp) {
- if(strcmp(needle->user, check->user) ||
- strcmp(needle->passwd, check->passwd)) {
+ if(Curl_timestrcmp(needle->user, check->user) ||
+ Curl_timestrcmp(needle->passwd, check->passwd)) {
/* we prefer a credential match, but this is at least a connection
that can be reused and "upgraded" to NTLM */
@@ -1450,8 +1457,10 @@ ConnectionExists(struct Curl_easy *data,
if(!check->http_proxy.user || !check->http_proxy.passwd)
continue;
- if(strcmp(needle->http_proxy.user, check->http_proxy.user) ||
- strcmp(needle->http_proxy.passwd, check->http_proxy.passwd))
+ if(Curl_timestrcmp(needle->http_proxy.user,
+ check->http_proxy.user) ||
+ Curl_timestrcmp(needle->http_proxy.passwd,
+ check->http_proxy.passwd))
continue;
}
else if(check->proxy_ntlm_state != NTLMSTATE_NONE) {
@@ -1507,7 +1516,7 @@ ConnectionExists(struct Curl_easy *data,
#endif
/* When not multiplexed, we have a match here! */
chosen = check;
- infof(data, "Multiplexed connection found!");
+ infof(data, "Multiplexed connection found");
break;
}
else {
@@ -1521,7 +1530,7 @@ ConnectionExists(struct Curl_easy *data,
if(chosen) {
/* mark it as used before releasing the lock */
- Curl_attach_connnection(data, chosen);
+ Curl_attach_connection(data, chosen);
CONNCACHE_UNLOCK(data);
*usethis = chosen;
return TRUE; /* yes, we found one to use! */
@@ -1575,20 +1584,6 @@ bool Curl_is_ASCII_name(const char *hostname)
}
/*
- * Strip single trailing dot in the hostname,
- * primarily for SNI and http host header.
- */
-static void strip_trailing_dot(struct hostname *host)
-{
- size_t len;
- if(!host || !host->name)
- return;
- len = strlen(host->name);
- if(len && (host->name[len-1] == '.'))
- host->name[len-1] = 0;
-}
-
-/*
* Perform any necessary IDN conversion of hostname
*/
CURLcode Curl_idnconvert_hostname(struct Curl_easy *data,
@@ -1637,7 +1632,7 @@ CURLcode Curl_idnconvert_hostname(struct Curl_easy *data,
#elif defined(USE_WIN32_IDN)
char *ace_hostname = NULL;
- if(curl_win32_idn_to_ascii(host->name, &ace_hostname)) {
+ if(Curl_win32_idn_to_ascii(host->name, &ace_hostname)) {
host->encalloc = ace_hostname;
/* change the name pointer to point to the encoded hostname */
host->name = host->encalloc;
@@ -1668,7 +1663,7 @@ void Curl_free_idnconverted_hostname(struct hostname *host)
}
#elif defined(USE_WIN32_IDN)
free(host->encalloc); /* must be freed with free() since this was
- allocated by curl_win32_idn_to_ascii */
+ allocated by Curl_win32_idn_to_ascii */
host->encalloc = NULL;
#else
(void)host;
@@ -1690,18 +1685,35 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
Note that these backend pointers can be swapped by vtls (eg ssl backend
data becomes proxy backend data). */
{
- size_t sslsize = Curl_ssl->sizeof_ssl_backend_data;
- char *ssl = calloc(SSL_BACKEND_CNT, sslsize);
+ size_t onesize = Curl_ssl->sizeof_ssl_backend_data;
+ size_t totalsize = onesize;
+ char *ssl;
+
+#ifndef CURL_DISABLE_FTP
+ totalsize *= 2;
+#endif
+#ifndef CURL_DISABLE_PROXY
+ totalsize *= 2;
+#endif
+
+ ssl = calloc(1, totalsize);
if(!ssl) {
free(conn);
return NULL;
}
conn->ssl_extra = ssl;
- conn->ssl[0].backend = (void *)ssl;
- conn->ssl[1].backend = (void *)(ssl + sslsize);
+ conn->ssl[FIRSTSOCKET].backend = (void *)ssl;
+#ifndef CURL_DISABLE_FTP
+ ssl += onesize;
+ conn->ssl[SECONDARYSOCKET].backend = (void *)ssl;
+#endif
#ifndef CURL_DISABLE_PROXY
- conn->proxy_ssl[0].backend = (void *)(ssl + 2 * sslsize);
- conn->proxy_ssl[1].backend = (void *)(ssl + 3 * sslsize);
+ ssl += onesize;
+ conn->proxy_ssl[FIRSTSOCKET].backend = (void *)ssl;
+#ifndef CURL_DISABLE_FTP
+ ssl += onesize;
+ conn->proxy_ssl[SECONDARYSOCKET].backend = (void *)ssl;
+#endif
#endif
}
#endif
@@ -1761,7 +1773,6 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
conn->bits.tunnel_proxy = data->set.tunnel_thru_httpproxy;
#endif /* CURL_DISABLE_PROXY */
- conn->bits.user_passwd = (data->state.aptr.user) ? TRUE : FALSE;
#ifndef CURL_DISABLE_FTP
conn->bits.ftp_use_epsv = data->set.ftp_use_epsv;
conn->bits.ftp_use_eprt = data->set.ftp_use_eprt;
@@ -1769,14 +1780,16 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
conn->ssl_config.verifystatus = data->set.ssl.primary.verifystatus;
conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer;
conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost;
+ conn->ssl_config.ssl_options = data->set.ssl.primary.ssl_options;
#ifndef CURL_DISABLE_PROXY
conn->proxy_ssl_config.verifystatus =
data->set.proxy_ssl.primary.verifystatus;
conn->proxy_ssl_config.verifypeer = data->set.proxy_ssl.primary.verifypeer;
conn->proxy_ssl_config.verifyhost = data->set.proxy_ssl.primary.verifyhost;
+ conn->proxy_ssl_config.ssl_options = data->set.proxy_ssl.primary.ssl_options;
#endif
conn->ip_version = data->set.ipver;
- conn->bits.connect_only = data->set.connect_only;
+ conn->connect_only = data->set.connect_only;
conn->transport = TRNSPRT_TCP; /* most of them are TCP streams */
#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
@@ -1820,15 +1833,18 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
}
/* returns the handler if the given scheme is built-in */
-const struct Curl_handler *Curl_builtin_scheme(const char *scheme)
+const struct Curl_handler *Curl_builtin_scheme(const char *scheme,
+ size_t schemelen)
{
const struct Curl_handler * const *pp;
const struct Curl_handler *p;
/* Scan protocol handler table and match against 'scheme'. The handler may
be changed later when the protocol specific setup function is called. */
+ if(schemelen == CURL_ZERO_TERMINATED)
+ schemelen = strlen(scheme);
for(pp = protocols; (p = *pp) != NULL; pp++)
- if(strcasecompare(p->scheme, scheme))
- /* Protocol found in table. Check if allowed */
+ if(strncasecompare(p->scheme, scheme, schemelen) && !p->scheme[schemelen])
+ /* Protocol found in table. */
return p;
return NULL; /* not found */
}
@@ -1838,7 +1854,8 @@ static CURLcode findprotocol(struct Curl_easy *data,
struct connectdata *conn,
const char *protostr)
{
- const struct Curl_handler *p = Curl_builtin_scheme(protostr);
+ const struct Curl_handler *p = Curl_builtin_scheme(protostr,
+ CURL_ZERO_TERMINATED);
if(p && /* Protocol found in table. Check if allowed */
(data->set.allowed_protocols & p->protocol)) {
@@ -1882,6 +1899,7 @@ CURLcode Curl_uc_to_curlcode(CURLUcode uc)
}
}
+#ifdef ENABLE_IPV6
/*
* If the URL was set with an IPv6 numerical address with a zone id part, set
* the scope_id based on that!
@@ -1931,6 +1949,9 @@ static void zonefrom_url(CURLU *uh, struct Curl_easy *data,
free(zoneid);
}
}
+#else
+#define zonefrom_url(a,b,c) Curl_nop_stmt
+#endif
/*
* Parse URL and fill in the relevant members of the connection struct.
@@ -1958,7 +1979,7 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
return CURLE_OUT_OF_MEMORY;
if(data->set.str[STRING_DEFAULT_PROTOCOL] &&
- !Curl_is_absolute_url(data->state.url, NULL, 0)) {
+ !Curl_is_absolute_url(data->state.url, NULL, 0, TRUE)) {
char *url = aprintf("%s://%s", data->set.str[STRING_DEFAULT_PROTOCOL],
data->state.url);
if(!url)
@@ -2002,10 +2023,60 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
if(!strcasecompare("file", data->state.up.scheme))
return CURLE_OUT_OF_MEMORY;
}
+ else if(strlen(data->state.up.hostname) > MAX_URL_LEN) {
+ failf(data, "Too long host name (maximum is %d)", MAX_URL_LEN);
+ return CURLE_URL_MALFORMAT;
+ }
+ hostname = data->state.up.hostname;
+
+ if(hostname && hostname[0] == '[') {
+ /* This looks like an IPv6 address literal. See if there is an address
+ scope. */
+ size_t hlen;
+ conn->bits.ipv6_ip = TRUE;
+ /* cut off the brackets! */
+ hostname++;
+ hlen = strlen(hostname);
+ hostname[hlen - 1] = 0;
+
+ zonefrom_url(uh, data, conn);
+ }
+
+ /* make sure the connect struct gets its own copy of the host name */
+ conn->host.rawalloc = strdup(hostname ? hostname : "");
+ if(!conn->host.rawalloc)
+ return CURLE_OUT_OF_MEMORY;
+ conn->host.name = conn->host.rawalloc;
+
+ /*************************************************************
+ * IDN-convert the hostnames
+ *************************************************************/
+ result = Curl_idnconvert_hostname(data, &conn->host);
+ if(result)
+ return result;
+ if(conn->bits.conn_to_host) {
+ result = Curl_idnconvert_hostname(data, &conn->conn_to_host);
+ if(result)
+ return result;
+ }
+#ifndef CURL_DISABLE_PROXY
+ if(conn->bits.httpproxy) {
+ result = Curl_idnconvert_hostname(data, &conn->http_proxy.host);
+ if(result)
+ return result;
+ }
+ if(conn->bits.socksproxy) {
+ result = Curl_idnconvert_hostname(data, &conn->socks_proxy.host);
+ if(result)
+ return result;
+ }
+#endif
#ifndef CURL_DISABLE_HSTS
+ /* HSTS upgrade */
if(data->hsts && strcasecompare("http", data->state.up.scheme)) {
- if(Curl_hsts(data->hsts, data->state.up.hostname, TRUE)) {
+ /* This MUST use the IDN decoded name */
+ if(Curl_hsts(data->hsts, conn->host.name, TRUE)) {
char *url;
Curl_safefree(data->state.up.scheme);
uc = curl_url_set(uh, CURLUPART_SCHEME, "https", 0);
@@ -2038,45 +2109,47 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
* User name and password set with their own options override the
* credentials possibly set in the URL.
*/
- if(!data->state.aptr.user) {
- /* we don't use the URL API's URL decoder option here since it rejects
- control codes and we want to allow them for some schemes in the user
- and password fields */
- uc = curl_url_get(uh, CURLUPART_USER, &data->state.up.user, 0);
+ if(!data->state.aptr.passwd) {
+ uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0);
if(!uc) {
char *decoded;
- result = Curl_urldecode(NULL, data->state.up.user, 0, &decoded, NULL,
+ result = Curl_urldecode(data->state.up.password, 0, &decoded, NULL,
conn->handler->flags&PROTOPT_USERPWDCTRL ?
REJECT_ZERO : REJECT_CTRL);
if(result)
return result;
- conn->user = decoded;
- conn->bits.user_passwd = TRUE;
- result = Curl_setstropt(&data->state.aptr.user, decoded);
+ conn->passwd = decoded;
+ result = Curl_setstropt(&data->state.aptr.passwd, decoded);
if(result)
return result;
}
- else if(uc != CURLUE_NO_USER)
+ else if(uc != CURLUE_NO_PASSWORD)
return Curl_uc_to_curlcode(uc);
}
- if(!data->state.aptr.passwd) {
- uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0);
+ if(!data->set.str[STRING_USERNAME]) {
+ /* we don't use the URL API's URL decoder option here since it rejects
+ control codes and we want to allow them for some schemes in the user
+ and password fields */
+ uc = curl_url_get(uh, CURLUPART_USER, &data->state.up.user, 0);
if(!uc) {
char *decoded;
- result = Curl_urldecode(NULL, data->state.up.password, 0, &decoded, NULL,
+ result = Curl_urldecode(data->state.up.user, 0, &decoded, NULL,
conn->handler->flags&PROTOPT_USERPWDCTRL ?
REJECT_ZERO : REJECT_CTRL);
if(result)
return result;
- conn->passwd = decoded;
- conn->bits.user_passwd = TRUE;
- result = Curl_setstropt(&data->state.aptr.passwd, decoded);
- if(result)
- return result;
+ conn->user = decoded;
+ result = Curl_setstropt(&data->state.aptr.user, decoded);
}
- else if(uc != CURLUE_NO_PASSWORD)
+ else if(uc != CURLUE_NO_USER)
return Curl_uc_to_curlcode(uc);
+ else if(data->state.aptr.passwd) {
+ /* no user was set but a password, set a blank user */
+ result = Curl_setstropt(&data->state.aptr.user, "");
+ }
+ if(result)
+ return result;
}
uc = curl_url_get(uh, CURLUPART_OPTIONS, &data->state.up.options,
@@ -2089,7 +2162,8 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
else if(uc != CURLUE_NO_OPTIONS)
return Curl_uc_to_curlcode(uc);
- uc = curl_url_get(uh, CURLUPART_PATH, &data->state.up.path, 0);
+ uc = curl_url_get(uh, CURLUPART_PATH, &data->state.up.path,
+ CURLU_URLENCODE);
if(uc)
return Curl_uc_to_curlcode(uc);
@@ -2103,34 +2177,16 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
unsigned long port = strtoul(data->state.up.port, NULL, 10);
conn->port = conn->remote_port =
(data->set.use_port && data->state.allow_port) ?
- (int)data->set.use_port : curlx_ultous(port);
+ data->set.use_port : curlx_ultous(port);
}
(void)curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0);
- hostname = data->state.up.hostname;
- if(hostname && hostname[0] == '[') {
- /* This looks like an IPv6 address literal. See if there is an address
- scope. */
- size_t hlen;
- conn->bits.ipv6_ip = TRUE;
- /* cut off the brackets! */
- hostname++;
- hlen = strlen(hostname);
- hostname[hlen - 1] = 0;
-
- zonefrom_url(uh, data, conn);
- }
-
- /* make sure the connect struct gets its own copy of the host name */
- conn->host.rawalloc = strdup(hostname ? hostname : "");
- if(!conn->host.rawalloc)
- return CURLE_OUT_OF_MEMORY;
- conn->host.name = conn->host.rawalloc;
-
+#ifdef ENABLE_IPV6
if(data->set.scope_id)
/* Override any scope that was set above. */
conn->scope_id = data->set.scope_id;
+#endif
return CURLE_OK;
}
@@ -2223,83 +2279,6 @@ void Curl_free_request_state(struct Curl_easy *data)
#ifndef CURL_DISABLE_PROXY
-/****************************************************************
-* Checks if the host is in the noproxy list. returns true if it matches
-* and therefore the proxy should NOT be used.
-****************************************************************/
-static bool check_noproxy(const char *name, const char *no_proxy)
-{
- /* no_proxy=domain1.dom,host.domain2.dom
- * (a comma-separated list of hosts which should
- * not be proxied, or an asterisk to override
- * all proxy variables)
- */
- if(no_proxy && no_proxy[0]) {
- size_t tok_start;
- size_t tok_end;
- const char *separator = ", ";
- size_t no_proxy_len;
- size_t namelen;
- char *endptr;
- if(strcasecompare("*", no_proxy)) {
- return TRUE;
- }
-
- /* NO_PROXY was specified and it wasn't just an asterisk */
-
- no_proxy_len = strlen(no_proxy);
- if(name[0] == '[') {
- /* IPv6 numerical address */
- endptr = strchr(name, ']');
- if(!endptr)
- return FALSE;
- name++;
- namelen = endptr - name;
- }
- else
- namelen = strlen(name);
-
- for(tok_start = 0; tok_start < no_proxy_len; tok_start = tok_end + 1) {
- while(tok_start < no_proxy_len &&
- strchr(separator, no_proxy[tok_start]) != NULL) {
- /* Look for the beginning of the token. */
- ++tok_start;
- }
-
- if(tok_start == no_proxy_len)
- break; /* It was all trailing separator chars, no more tokens. */
-
- for(tok_end = tok_start; tok_end < no_proxy_len &&
- strchr(separator, no_proxy[tok_end]) == NULL; ++tok_end)
- /* Look for the end of the token. */
- ;
-
- /* To match previous behavior, where it was necessary to specify
- * ".local.com" to prevent matching "notlocal.com", we will leave
- * the '.' off.
- */
- if(no_proxy[tok_start] == '.')
- ++tok_start;
-
- if((tok_end - tok_start) <= namelen) {
- /* Match the last part of the name to the domain we are checking. */
- const char *checkn = name + namelen - (tok_end - tok_start);
- if(strncasecompare(no_proxy + tok_start, checkn,
- tok_end - tok_start)) {
- if((tok_end - tok_start) == namelen || *(checkn - 1) == '.') {
- /* We either have an exact match, or the previous character is a .
- * so it is within the same domain, so no proxy for this host.
- */
- return TRUE;
- }
- }
- } /* if((tok_end - tok_start) <= namelen) */
- } /* for(tok_start = 0; tok_start < no_proxy_len;
- tok_start = tok_end + 1) */
- } /* NO_PROXY was specified and it wasn't just an asterisk */
-
- return FALSE;
-}
#ifndef CURL_DISABLE_HTTP
/****************************************************************
@@ -2339,7 +2318,7 @@ static char *detect_proxy(struct Curl_easy *data,
/* Now, build <protocol>_proxy and check for such a one to use */
while(*protop)
- *envp++ = (char)tolower((int)*protop++);
+ *envp++ = Curl_raw_tolower(*protop++);
/* append _proxy */
strcpy(envp, "_proxy");
@@ -2397,13 +2376,18 @@ static CURLcode parse_proxy(struct Curl_easy *data,
int port = -1;
char *proxyuser = NULL;
char *proxypasswd = NULL;
- char *host;
+ char *host = NULL;
bool sockstype;
CURLUcode uc;
struct proxy_info *proxyinfo;
CURLU *uhp = curl_url();
CURLcode result = CURLE_OK;
char *scheme = NULL;
+#ifdef USE_UNIX_SOCKETS
+ char *path = NULL;
+ bool is_unix_proxy = FALSE;
+#endif
+
if(!uhp) {
result = CURLE_OUT_OF_MEMORY;
@@ -2528,21 +2512,54 @@ static CURLcode parse_proxy(struct Curl_easy *data,
result = CURLE_OUT_OF_MEMORY;
goto error;
}
- Curl_safefree(proxyinfo->host.rawalloc);
- proxyinfo->host.rawalloc = host;
- if(host[0] == '[') {
- /* this is a numerical IPv6, strip off the brackets */
- size_t len = strlen(host);
- host[len-1] = 0; /* clear the trailing bracket */
- host++;
- zonefrom_url(uhp, data, conn);
+#ifdef USE_UNIX_SOCKETS
+ if(sockstype && strcasecompare(UNIX_SOCKET_PREFIX, host)) {
+ uc = curl_url_get(uhp, CURLUPART_PATH, &path, CURLU_URLDECODE);
+ if(uc) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto error;
+ }
+ /* path will be "/", if no path was was found */
+ if(strcmp("/", path)) {
+ is_unix_proxy = TRUE;
+ free(host);
+ host = aprintf(UNIX_SOCKET_PREFIX"%s", path);
+ if(!host) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto error;
+ }
+ Curl_safefree(proxyinfo->host.rawalloc);
+ proxyinfo->host.rawalloc = host;
+ proxyinfo->host.name = host;
+ host = NULL;
+ }
+ }
+
+ if(!is_unix_proxy) {
+#endif
+ Curl_safefree(proxyinfo->host.rawalloc);
+ proxyinfo->host.rawalloc = host;
+ if(host[0] == '[') {
+ /* this is a numerical IPv6, strip off the brackets */
+ size_t len = strlen(host);
+ host[len-1] = 0; /* clear the trailing bracket */
+ host++;
+ zonefrom_url(uhp, data, conn);
+ }
+ proxyinfo->host.name = host;
+ host = NULL;
+#ifdef USE_UNIX_SOCKETS
}
- proxyinfo->host.name = host;
+#endif
error:
free(proxyuser);
free(proxypasswd);
+ free(host);
free(scheme);
+#ifdef USE_UNIX_SOCKETS
+ free(path);
+#endif
curl_url_cleanup(uhp);
return result;
}
@@ -2560,14 +2577,14 @@ static CURLcode parse_proxy_auth(struct Curl_easy *data,
CURLcode result = CURLE_OK;
if(proxyuser) {
- result = Curl_urldecode(data, proxyuser, 0, &conn->http_proxy.user, NULL,
+ result = Curl_urldecode(proxyuser, 0, &conn->http_proxy.user, NULL,
REJECT_ZERO);
if(!result)
result = Curl_setstropt(&data->state.aptr.proxyuser,
conn->http_proxy.user);
}
if(!result && proxypasswd) {
- result = Curl_urldecode(data, proxypasswd, 0, &conn->http_proxy.passwd,
+ result = Curl_urldecode(proxypasswd, 0, &conn->http_proxy.passwd,
NULL, REJECT_ZERO);
if(!result)
result = Curl_setstropt(&data->state.aptr.proxypasswd,
@@ -2630,8 +2647,8 @@ static CURLcode create_conn_helper_init_proxy(struct Curl_easy *data,
}
}
- if(check_noproxy(conn->host.name, data->set.str[STRING_NOPROXY] ?
- data->set.str[STRING_NOPROXY] : no_proxy)) {
+ if(Curl_check_noproxy(conn->host.name, data->set.str[STRING_NOPROXY] ?
+ data->set.str[STRING_NOPROXY] : no_proxy)) {
Curl_safefree(proxy);
Curl_safefree(socksproxy);
}
@@ -2669,16 +2686,16 @@ static CURLcode create_conn_helper_init_proxy(struct Curl_easy *data,
* connection that may exist registered to the same proxy host.
***********************************************************************/
if(proxy || socksproxy) {
+ curl_proxytype ptype = (curl_proxytype)conn->http_proxy.proxytype;
if(proxy) {
- result = parse_proxy(data, conn, proxy, conn->http_proxy.proxytype);
+ result = parse_proxy(data, conn, proxy, ptype);
Curl_safefree(proxy); /* parse_proxy copies the proxy string */
if(result)
goto out;
}
if(socksproxy) {
- result = parse_proxy(data, conn, socksproxy,
- conn->socks_proxy.proxytype);
+ result = parse_proxy(data, conn, socksproxy, ptype);
/* parse_proxy copies the socks proxy string */
Curl_safefree(socksproxy);
if(result)
@@ -2828,15 +2845,15 @@ CURLcode Curl_parse_login_details(const char *login, const size_t len,
(psep && psep > osep ? (size_t)(psep - osep) :
(size_t)(login + len - osep)) - 1 : 0);
- /* Allocate the user portion buffer */
- if(userp && ulen) {
+ /* Allocate the user portion buffer, which can be zero length */
+ if(userp) {
ubuf = malloc(ulen + 1);
if(!ubuf)
result = CURLE_OUT_OF_MEMORY;
}
/* Allocate the password portion buffer */
- if(!result && passwdp && plen) {
+ if(!result && passwdp && psep) {
pbuf = malloc(plen + 1);
if(!pbuf) {
free(ubuf);
@@ -2899,7 +2916,7 @@ static CURLcode parse_remote_port(struct Curl_easy *data,
/* if set, we use this instead of the port possibly given in the URL */
char portbuf[16];
CURLUcode uc;
- conn->remote_port = (unsigned short)data->set.use_port;
+ conn->remote_port = data->set.use_port;
msnprintf(portbuf, sizeof(portbuf), "%d", conn->remote_port);
uc = curl_url_set(data->state.uh, CURLUPART_PORT, portbuf, 0);
if(uc)
@@ -2921,14 +2938,6 @@ static CURLcode override_login(struct Curl_easy *data,
char **passwdp = &conn->passwd;
char **optionsp = &conn->options;
-#ifndef CURL_DISABLE_NETRC
- if(data->set.use_netrc == CURL_NETRC_REQUIRED && conn->bits.user_passwd) {
- Curl_safefree(*userp);
- Curl_safefree(*passwdp);
- conn->bits.user_passwd = FALSE; /* disable user+password */
- }
-#endif
-
if(data->set.str[STRING_OPTIONS]) {
free(*optionsp);
*optionsp = strdup(data->set.str[STRING_OPTIONS]);
@@ -2937,38 +2946,62 @@ static CURLcode override_login(struct Curl_easy *data,
}
#ifndef CURL_DISABLE_NETRC
+ if(data->set.use_netrc == CURL_NETRC_REQUIRED) {
+ Curl_safefree(*userp);
+ Curl_safefree(*passwdp);
+ }
conn->bits.netrc = FALSE;
if(data->set.use_netrc && !data->set.str[STRING_USERNAME]) {
- bool netrc_user_changed = FALSE;
- bool netrc_passwd_changed = FALSE;
int ret;
+ bool url_provided = FALSE;
+
+ if(data->state.aptr.user) {
+ /* there was a user name in the URL. Use the URL decoded version */
+ userp = &data->state.aptr.user;
+ url_provided = TRUE;
+ }
ret = Curl_parsenetrc(conn->host.name,
userp, passwdp,
- &netrc_user_changed, &netrc_passwd_changed,
data->set.str[STRING_NETRC_FILE]);
if(ret > 0) {
infof(data, "Couldn't find host %s in the %s file; using defaults",
conn->host.name, data->set.str[STRING_NETRC_FILE]);
}
else if(ret < 0) {
- return CURLE_OUT_OF_MEMORY;
+ failf(data, ".netrc parser error");
+ return CURLE_READ_ERROR;
}
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
different host or similar. */
conn->bits.netrc = TRUE;
- conn->bits.user_passwd = TRUE; /* enable user+password */
+ }
+ if(url_provided) {
+ Curl_safefree(conn->user);
+ conn->user = strdup(*userp);
+ if(!conn->user)
+ return CURLE_OUT_OF_MEMORY;
+ }
+ /* no user was set but a password, set a blank user */
+ if(userp && !*userp && *passwdp) {
+ *userp = strdup("");
+ if(!*userp)
+ return CURLE_OUT_OF_MEMORY;
}
}
#endif
/* for updated strings, we update them in the URL */
if(*userp) {
- CURLcode result = Curl_setstropt(&data->state.aptr.user, *userp);
- if(result)
- return result;
+ CURLcode result;
+ if(data->state.aptr.user != *userp) {
+ /* nothing to do then */
+ result = Curl_setstropt(&data->state.aptr.user, *userp);
+ if(result)
+ return result;
+ }
}
if(data->state.aptr.user) {
uc = curl_url_set(data->state.uh, CURLUPART_USER, data->state.aptr.user,
@@ -2981,7 +3014,6 @@ static CURLcode override_login(struct Curl_easy *data,
return CURLE_OUT_OF_MEMORY;
}
}
-
if(*passwdp) {
CURLcode result = Curl_setstropt(&data->state.aptr.passwd, *passwdp);
if(result)
@@ -3005,14 +3037,15 @@ static CURLcode override_login(struct Curl_easy *data,
/*
* Set the login details so they're available in the connection
*/
-static CURLcode set_login(struct connectdata *conn)
+static CURLcode set_login(struct Curl_easy *data,
+ struct connectdata *conn)
{
CURLcode result = CURLE_OK;
const char *setuser = CURL_DEFAULT_USER;
const char *setpasswd = CURL_DEFAULT_PASSWORD;
/* If our protocol needs a password and we have none, use the defaults */
- if((conn->handler->flags & PROTOPT_NEEDSPWD) && !conn->bits.user_passwd)
+ if((conn->handler->flags & PROTOPT_NEEDSPWD) && !data->state.aptr.user)
;
else {
setuser = "";
@@ -3098,7 +3131,7 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data,
* name nor a numeric can legally start with a bracket.
*/
#else
- failf(data, "Use of IPv6 in *_CONNECT_TO without IPv6 support built-in!");
+ failf(data, "Use of IPv6 in *_CONNECT_TO without IPv6 support built-in");
result = CURLE_NOT_BUILT_IN;
goto error;
#endif
@@ -3269,16 +3302,16 @@ static CURLcode parse_connect_to_slist(struct Curl_easy *data,
bool hit;
struct altsvc *as;
const int allowed_versions = ( ALPN_h1
-#ifdef USE_NGHTTP2
- | ALPN_h2
+#ifdef USE_HTTP2
+ | ALPN_h2
#endif
#ifdef ENABLE_QUIC
- | ALPN_h3
+ | ALPN_h3
#endif
) & data->asi->flags;
host = conn->host.rawalloc;
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
/* with h2 support, check that first */
srcalpnid = ALPN_h2;
hit = Curl_altsvc_lookup(data->asi,
@@ -3331,131 +3364,166 @@ static CURLcode parse_connect_to_slist(struct Curl_easy *data,
return result;
}
-/*************************************************************
- * Resolve the address of the server or proxy
- *************************************************************/
-static CURLcode resolve_server(struct Curl_easy *data,
- struct connectdata *conn,
- bool *async)
+#ifdef USE_UNIX_SOCKETS
+static CURLcode resolve_unix(struct Curl_easy *data,
+ struct connectdata *conn,
+ char *unix_path)
{
- CURLcode result = CURLE_OK;
+ struct Curl_dns_entry *hostaddr = NULL;
+ bool longpath = FALSE;
+
+ DEBUGASSERT(unix_path);
+ DEBUGASSERT(conn->dns_entry == NULL);
+
+ /* 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. */
+ hostaddr = calloc(1, sizeof(struct Curl_dns_entry));
+ if(!hostaddr)
+ return CURLE_OUT_OF_MEMORY;
+
+ hostaddr->addr = Curl_unix2addr(unix_path, &longpath,
+ conn->bits.abstract_unix_socket);
+ if(!hostaddr->addr) {
+ if(longpath)
+ /* Long paths are not supported for now */
+ failf(data, "Unix socket path too long: '%s'", unix_path);
+ free(hostaddr);
+ return longpath ? CURLE_COULDNT_RESOLVE_HOST : CURLE_OUT_OF_MEMORY;
+ }
+
+ hostaddr->inuse++;
+ conn->dns_entry = hostaddr;
+ return CURLE_OK;
+}
+#endif
+
+#ifndef CURL_DISABLE_PROXY
+static CURLcode resolve_proxy(struct Curl_easy *data,
+ struct connectdata *conn,
+ bool *async)
+{
+ struct Curl_dns_entry *hostaddr = NULL;
+ struct hostname *host;
timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);
+ int rc;
- DEBUGASSERT(conn);
- DEBUGASSERT(data);
- /*************************************************************
- * Resolve the name of the server or proxy
- *************************************************************/
- if(conn->bits.reuse)
- /* We're reusing the connection - no need to resolve anything, and
- idnconvert_hostname() was called already in create_conn() for the re-use
- case. */
- *async = FALSE;
+ DEBUGASSERT(conn->dns_entry == NULL);
- else {
- /* this is a fresh connect */
- int rc;
- struct Curl_dns_entry *hostaddr = NULL;
+ host = conn->bits.socksproxy ? &conn->socks_proxy.host :
+ &conn->http_proxy.host;
-#ifdef USE_UNIX_SOCKETS
- if(conn->unix_domain_socket) {
- /* 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 = conn->unix_domain_socket;
-
- hostaddr = calloc(1, sizeof(struct Curl_dns_entry));
- if(!hostaddr)
- result = CURLE_OUT_OF_MEMORY;
- else {
- bool longpath = FALSE;
- hostaddr->addr = Curl_unix2addr(path, &longpath,
- conn->bits.abstract_unix_socket);
- if(hostaddr->addr)
- hostaddr->inuse++;
- else {
- /* Long paths are not supported for now */
- if(longpath) {
- 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
+ conn->hostname_resolve = strdup(host->name);
+ if(!conn->hostname_resolve)
+ return CURLE_OUT_OF_MEMORY;
+
+ rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
+ &hostaddr, timeout_ms);
+ conn->dns_entry = hostaddr;
+ if(rc == CURLRESOLV_PENDING)
+ *async = TRUE;
+ else if(rc == CURLRESOLV_TIMEDOUT)
+ return CURLE_OPERATION_TIMEDOUT;
+ else if(!hostaddr) {
+ failf(data, "Couldn't resolve proxy '%s'", host->dispname);
+ return CURLE_COULDNT_RESOLVE_PROXY;
+ }
+
+ return CURLE_OK;
+}
#endif
- if(!conn->bits.proxy) {
- struct hostname *connhost;
- if(conn->bits.conn_to_host)
- connhost = &conn->conn_to_host;
- else
- connhost = &conn->host;
+static CURLcode resolve_host(struct Curl_easy *data,
+ struct connectdata *conn,
+ bool *async)
+{
+ struct Curl_dns_entry *hostaddr = NULL;
+ struct hostname *connhost;
+ timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);
+ int rc;
- /* 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->bits.conn_to_port)
- conn->port = conn->conn_to_port;
- else
- conn->port = conn->remote_port;
+ DEBUGASSERT(conn->dns_entry == NULL);
- /* Resolve target host right on */
- conn->hostname_resolve = strdup(connhost->name);
- if(!conn->hostname_resolve)
- return CURLE_OUT_OF_MEMORY;
- rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
- &hostaddr, timeout_ms);
- if(rc == CURLRESOLV_PENDING)
- *async = TRUE;
-
- else if(rc == CURLRESOLV_TIMEDOUT) {
- failf(data, "Failed to resolve host '%s' with timeout after %ld ms",
- connhost->dispname,
- Curl_timediff(Curl_now(), data->progress.t_startsingle));
- result = CURLE_OPERATION_TIMEDOUT;
- }
- else if(!hostaddr) {
- failf(data, "Could not resolve host: %s", connhost->dispname);
- result = CURLE_COULDNT_RESOLVE_HOST;
- /* don't return yet, we need to clean up the timeout first */
- }
- }
-#ifndef CURL_DISABLE_PROXY
- else {
- /* This is a proxy that hasn't been resolved yet. */
+ connhost = conn->bits.conn_to_host ? &conn->conn_to_host : &conn->host;
- struct hostname * const host = conn->bits.socksproxy ?
- &conn->socks_proxy.host : &conn->http_proxy.host;
+ /* 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. */
+ conn->port = conn->bits.conn_to_port ? conn->conn_to_port :
+ conn->remote_port;
- /* resolve proxy */
- conn->hostname_resolve = strdup(host->name);
- if(!conn->hostname_resolve)
- return CURLE_OUT_OF_MEMORY;
- rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
- &hostaddr, timeout_ms);
+ /* Resolve target host right on */
+ conn->hostname_resolve = strdup(connhost->name);
+ if(!conn->hostname_resolve)
+ return CURLE_OUT_OF_MEMORY;
- if(rc == CURLRESOLV_PENDING)
- *async = TRUE;
+ rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
+ &hostaddr, timeout_ms);
+ conn->dns_entry = hostaddr;
+ if(rc == CURLRESOLV_PENDING)
+ *async = TRUE;
+ else if(rc == CURLRESOLV_TIMEDOUT) {
+ failf(data, "Failed to resolve host '%s' with timeout after %ld ms",
+ connhost->dispname,
+ Curl_timediff(Curl_now(), data->progress.t_startsingle));
+ return CURLE_OPERATION_TIMEDOUT;
+ }
+ else if(!hostaddr) {
+ failf(data, "Could not resolve host: %s", connhost->dispname);
+ return CURLE_COULDNT_RESOLVE_HOST;
+ }
- else if(rc == CURLRESOLV_TIMEDOUT)
- result = CURLE_OPERATION_TIMEDOUT;
+ return CURLE_OK;
+}
- else if(!hostaddr) {
- failf(data, "Couldn't resolve proxy '%s'", host->dispname);
- result = CURLE_COULDNT_RESOLVE_PROXY;
- /* don't return yet, we need to clean up the timeout first */
- }
- }
+/* Perform a fresh resolve */
+static CURLcode resolve_fresh(struct Curl_easy *data,
+ struct connectdata *conn,
+ bool *async)
+{
+#ifdef USE_UNIX_SOCKETS
+ char *unix_path = conn->unix_domain_socket;
+
+#ifndef CURL_DISABLE_PROXY
+ if(!unix_path && conn->socks_proxy.host.name &&
+ !strncmp(UNIX_SOCKET_PREFIX"/",
+ conn->socks_proxy.host.name, sizeof(UNIX_SOCKET_PREFIX)))
+ unix_path = conn->socks_proxy.host.name + sizeof(UNIX_SOCKET_PREFIX) - 1;
#endif
- DEBUGASSERT(conn->dns_entry == NULL);
- conn->dns_entry = hostaddr;
+
+ if(unix_path) {
+ conn->transport = TRNSPRT_UNIX;
+ return resolve_unix(data, conn, unix_path);
}
+#endif
- return result;
+#ifndef CURL_DISABLE_PROXY
+ if(CONN_IS_PROXIED(conn))
+ return resolve_proxy(data, conn, async);
+#endif
+
+ return resolve_host(data, conn, async);
+}
+
+/*************************************************************
+ * Resolve the address of the server or proxy
+ *************************************************************/
+static CURLcode resolve_server(struct Curl_easy *data,
+ struct connectdata *conn,
+ bool *async)
+{
+ DEBUGASSERT(conn);
+ DEBUGASSERT(data);
+
+ /* Resolve the name of the server or proxy */
+ if(conn->bits.reuse) {
+ /* We're reusing the connection - no need to resolve anything, and
+ idnconvert_hostname() was called already in create_conn() for the re-use
+ case. */
+ *async = FALSE;
+ return CURLE_OK;
+ }
+
+ return resolve_fresh(data, conn, async);
}
/*
@@ -3472,22 +3540,10 @@ static void reuse_conn(struct Curl_easy *data,
**established** from the primary socket to a remote address. */
char local_ip[MAX_IPADR_LEN] = "";
int local_port = -1;
-#ifndef CURL_DISABLE_PROXY
- Curl_free_idnconverted_hostname(&old_conn->http_proxy.host);
- Curl_free_idnconverted_hostname(&old_conn->socks_proxy.host);
-
- free(old_conn->http_proxy.host.rawalloc);
- free(old_conn->socks_proxy.host.rawalloc);
- Curl_free_primary_ssl_config(&old_conn->proxy_ssl_config);
-#endif
- /* free the SSL config struct from this connection struct as this was
- allocated in vain and is targeted for destruction */
- Curl_free_primary_ssl_config(&old_conn->ssl_config);
/* get the user+password information from the old_conn struct since it may
* be new for this request even when we re-use an existing connection */
- conn->bits.user_passwd = old_conn->bits.user_passwd;
- if(conn->bits.user_passwd) {
+ if(old_conn->user) {
/* use the new user name and password though */
Curl_safefree(conn->user);
Curl_safefree(conn->passwd);
@@ -3514,20 +3570,17 @@ static void reuse_conn(struct Curl_easy *data,
old_conn->http_proxy.passwd = NULL;
old_conn->socks_proxy.passwd = NULL;
}
- Curl_safefree(old_conn->http_proxy.user);
- Curl_safefree(old_conn->socks_proxy.user);
- Curl_safefree(old_conn->http_proxy.passwd);
- Curl_safefree(old_conn->socks_proxy.passwd);
#endif
- /* host can change, when doing keepalive with a proxy or if the case is
- different this time etc */
Curl_free_idnconverted_hostname(&conn->host);
Curl_free_idnconverted_hostname(&conn->conn_to_host);
Curl_safefree(conn->host.rawalloc);
Curl_safefree(conn->conn_to_host.rawalloc);
conn->host = old_conn->host;
+ old_conn->host.rawalloc = NULL;
+ old_conn->host.encalloc = NULL;
conn->conn_to_host = old_conn->conn_to_host;
+ old_conn->conn_to_host.rawalloc = NULL;
conn->conn_to_port = old_conn->conn_to_port;
conn->remote_port = old_conn->remote_port;
Curl_safefree(conn->hostname_resolve);
@@ -3547,15 +3600,7 @@ static void reuse_conn(struct Curl_easy *data,
/* re-use init */
conn->bits.reuse = TRUE; /* yes, we're re-using here */
- Curl_safefree(old_conn->user);
- Curl_safefree(old_conn->passwd);
- Curl_safefree(old_conn->options);
- Curl_safefree(old_conn->localdev);
- Curl_llist_destroy(&old_conn->easyq, NULL);
-
-#ifdef USE_UNIX_SOCKETS
- Curl_safefree(old_conn->unix_domain_socket);
-#endif
+ conn_free(old_conn);
}
/**
@@ -3626,6 +3671,14 @@ static CURLcode create_conn(struct Curl_easy *data,
}
}
+ if(data->set.str[STRING_BEARER]) {
+ conn->oauth_bearer = strdup(data->set.str[STRING_BEARER]);
+ if(!conn->oauth_bearer) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto out;
+ }
+ }
+
#ifdef USE_UNIX_SOCKETS
if(data->set.str[STRING_UNIX_SOCKET_PATH]) {
conn->unix_domain_socket = strdup(data->set.str[STRING_UNIX_SOCKET_PATH]);
@@ -3665,7 +3718,7 @@ static CURLcode create_conn(struct Curl_easy *data,
if(result)
goto out;
- result = set_login(conn); /* default credentials */
+ result = set_login(data, conn); /* default credentials */
if(result)
goto out;
@@ -3677,29 +3730,6 @@ static CURLcode create_conn(struct Curl_easy *data,
if(result)
goto out;
- /*************************************************************
- * IDN-convert the hostnames
- *************************************************************/
- result = Curl_idnconvert_hostname(data, &conn->host);
- if(result)
- goto out;
- if(conn->bits.conn_to_host) {
- result = Curl_idnconvert_hostname(data, &conn->conn_to_host);
- if(result)
- goto out;
- }
-#ifndef CURL_DISABLE_PROXY
- if(conn->bits.httpproxy) {
- result = Curl_idnconvert_hostname(data, &conn->http_proxy.host);
- if(result)
- goto out;
- }
- if(conn->bits.socksproxy) {
- result = Curl_idnconvert_hostname(data, &conn->socks_proxy.host);
- if(result)
- goto out;
- }
-#endif
/*************************************************************
* Check whether the host and the "connect to host" are equal.
@@ -3759,7 +3789,7 @@ static CURLcode create_conn(struct Curl_easy *data,
if(!result) {
conn->bits.tcpconnect[FIRSTSOCKET] = TRUE; /* we are "connected */
- Curl_attach_connnection(data, conn);
+ Curl_attach_connection(data, conn);
result = Curl_conncache_add_conn(data);
if(result)
goto out;
@@ -3797,8 +3827,6 @@ static CURLcode create_conn(struct Curl_easy *data,
data->set.ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE];
data->set.ssl.primary.issuercert = data->set.str[STRING_SSL_ISSUERCERT];
data->set.ssl.primary.issuercert_blob = data->set.blobs[BLOB_SSL_ISSUERCERT];
- data->set.ssl.primary.random_file = data->set.str[STRING_SSL_RANDOM_FILE];
- data->set.ssl.primary.egdsocket = data->set.str[STRING_SSL_EGDSOCKET];
data->set.ssl.primary.cipher_list =
data->set.str[STRING_SSL_CIPHER_LIST];
data->set.ssl.primary.cipher_list13 =
@@ -3812,9 +3840,6 @@ static CURLcode create_conn(struct Curl_easy *data,
#ifndef CURL_DISABLE_PROXY
data->set.proxy_ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH_PROXY];
data->set.proxy_ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE_PROXY];
- data->set.proxy_ssl.primary.random_file =
- data->set.str[STRING_SSL_RANDOM_FILE];
- data->set.proxy_ssl.primary.egdsocket = data->set.str[STRING_SSL_EGDSOCKET];
data->set.proxy_ssl.primary.cipher_list =
data->set.str[STRING_SSL_CIPHER_LIST_PROXY];
data->set.proxy_ssl.primary.cipher_list13 =
@@ -3828,7 +3853,8 @@ static CURLcode create_conn(struct Curl_easy *data,
data->set.str[STRING_SSL_ISSUERCERT_PROXY];
data->set.proxy_ssl.primary.issuercert_blob =
data->set.blobs[BLOB_SSL_ISSUERCERT_PROXY];
- data->set.proxy_ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE_PROXY];
+ data->set.proxy_ssl.primary.CRLfile =
+ data->set.str[STRING_SSL_CRLFILE_PROXY];
data->set.proxy_ssl.cert_type = data->set.str[STRING_CERT_TYPE_PROXY];
data->set.proxy_ssl.key = data->set.str[STRING_KEY_PROXY];
data->set.proxy_ssl.key_type = data->set.str[STRING_KEY_TYPE_PROXY];
@@ -3836,18 +3862,20 @@ static CURLcode create_conn(struct Curl_easy *data,
data->set.proxy_ssl.primary.clientcert = data->set.str[STRING_CERT_PROXY];
data->set.proxy_ssl.key_blob = data->set.blobs[BLOB_KEY_PROXY];
#endif
- data->set.ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE];
+ data->set.ssl.primary.CRLfile = data->set.str[STRING_SSL_CRLFILE];
data->set.ssl.cert_type = data->set.str[STRING_CERT_TYPE];
data->set.ssl.key = data->set.str[STRING_KEY];
data->set.ssl.key_type = data->set.str[STRING_KEY_TYPE];
data->set.ssl.key_passwd = data->set.str[STRING_KEY_PASSWD];
data->set.ssl.primary.clientcert = data->set.str[STRING_CERT];
#ifdef USE_TLS_SRP
- data->set.ssl.username = data->set.str[STRING_TLSAUTH_USERNAME];
- data->set.ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD];
+ data->set.ssl.primary.username = data->set.str[STRING_TLSAUTH_USERNAME];
+ data->set.ssl.primary.password = data->set.str[STRING_TLSAUTH_PASSWORD];
#ifndef CURL_DISABLE_PROXY
- data->set.proxy_ssl.username = data->set.str[STRING_TLSAUTH_USERNAME_PROXY];
- data->set.proxy_ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD_PROXY];
+ data->set.proxy_ssl.primary.username =
+ data->set.str[STRING_TLSAUTH_USERNAME_PROXY];
+ data->set.proxy_ssl.primary.password =
+ data->set.str[STRING_TLSAUTH_PASSWORD_PROXY];
#endif
#endif
data->set.ssl.key_blob = data->set.blobs[BLOB_KEY];
@@ -3894,22 +3922,18 @@ static CURLcode create_conn(struct Curl_easy *data,
* allocated before we can move along and use the previously existing one.
*/
reuse_conn(data, conn, conn_temp);
-#ifdef USE_SSL
- free(conn->ssl_extra);
-#endif
- free(conn); /* we don't need this anymore */
conn = conn_temp;
*in_connect = conn;
#ifndef CURL_DISABLE_PROXY
- infof(data, "Re-using existing connection! (#%ld) with %s %s",
+ infof(data, "Re-using existing connection #%ld with %s %s",
conn->connection_id,
conn->bits.proxy?"proxy":"host",
conn->socks_proxy.host.name ? conn->socks_proxy.host.dispname :
conn->http_proxy.host.name ? conn->http_proxy.host.dispname :
conn->host.dispname);
#else
- infof(data, "Re-using existing connection! (#%ld) with host %s",
+ infof(data, "Re-using existing connection #%ld with host %s",
conn->connection_id, conn->host.dispname);
#endif
}
@@ -3918,13 +3942,11 @@ static CURLcode create_conn(struct Curl_easy *data,
be able to do that if we have reached the limit of how many
connections we are allowed to open. */
- if(conn->handler->flags & PROTOPT_ALPN_NPN) {
+ if(conn->handler->flags & PROTOPT_ALPN) {
/* The protocol wants it, so set the bits if enabled in the easy handle
(default) */
if(data->set.ssl_enable_alpn)
conn->bits.tls_enable_alpn = TRUE;
- if(data->set.ssl_enable_npn)
- conn->bits.tls_enable_npn = TRUE;
}
if(waitpipe)
@@ -3933,10 +3955,8 @@ static CURLcode create_conn(struct Curl_easy *data,
connections_available = FALSE;
else {
/* this gets a lock on the conncache */
- const char *bundlehost;
struct connectbundle *bundle =
- Curl_conncache_find_bundle(data, conn, data->state.conn_cache,
- &bundlehost);
+ Curl_conncache_find_bundle(data, conn, data->state.conn_cache);
if(max_host_connections > 0 && bundle &&
(bundle->num_connections >= max_host_connections)) {
@@ -3947,10 +3967,10 @@ static CURLcode create_conn(struct Curl_easy *data,
CONNCACHE_UNLOCK(data);
if(conn_candidate)
- (void)Curl_disconnect(data, conn_candidate, FALSE);
+ Curl_disconnect(data, conn_candidate, FALSE);
else {
- infof(data, "No more connections allowed to host %s: %zu",
- bundlehost, max_host_connections);
+ infof(data, "No more connections allowed to host: %zu",
+ max_host_connections);
connections_available = FALSE;
}
}
@@ -3967,7 +3987,7 @@ static CURLcode create_conn(struct Curl_easy *data,
/* The cache is full. Let's see if we can kill a connection. */
conn_candidate = Curl_conncache_extract_oldest(data);
if(conn_candidate)
- (void)Curl_disconnect(data, conn_candidate, FALSE);
+ Curl_disconnect(data, conn_candidate, FALSE);
else {
infof(data, "No connections available in cache");
connections_available = FALSE;
@@ -3988,7 +4008,7 @@ static CURLcode create_conn(struct Curl_easy *data,
* This is a brand new connection, so let's store it in the connection
* cache of ours!
*/
- Curl_attach_connnection(data, conn);
+ Curl_attach_connection(data, conn);
result = Curl_conncache_add_conn(data);
if(result)
goto out;
@@ -4000,14 +4020,14 @@ static CURLcode create_conn(struct Curl_easy *data,
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!");
+ infof(data, "NTLM picked AND auth done set, clear picked");
data->state.authhost.picked = CURLAUTH_NONE;
data->state.authhost.done = FALSE;
}
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!");
+ infof(data, "NTLM-proxy picked AND auth done set, clear picked");
data->state.authproxy.picked = CURLAUTH_NONE;
data->state.authproxy.done = FALSE;
}
@@ -4038,17 +4058,6 @@ static CURLcode create_conn(struct Curl_easy *data,
*************************************************************/
result = resolve_server(data, conn, async);
- /* Strip trailing dots. resolve_server copied the name. */
- strip_trailing_dot(&conn->host);
-#ifndef CURL_DISABLE_PROXY
- if(conn->bits.httpproxy)
- strip_trailing_dot(&conn->http_proxy.host);
- if(conn->bits.socksproxy)
- strip_trailing_dot(&conn->socks_proxy.host);
-#endif
- if(conn->bits.conn_to_host)
- strip_trailing_dot(&conn->conn_to_host);
-
out:
return result;
}
@@ -4146,7 +4155,7 @@ CURLcode Curl_connect(struct Curl_easy *data,
else if(result && conn) {
/* We're not allowed to return failure with memory left allocated in the
connectdata struct, free those here */
- Curl_detach_connnection(data);
+ Curl_detach_connection(data);
Curl_conncache_remove_conn(data, conn, TRUE);
Curl_disconnect(data, conn, TRUE);
}
diff --git a/lib/url.h b/lib/url.h
index 929fc60f2..ba4270d52 100644
--- a/lib/url.h
+++ b/lib/url.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -35,8 +37,8 @@ void Curl_freeset(struct Curl_easy *data);
CURLcode Curl_uc_to_curlcode(CURLUcode uc);
CURLcode Curl_close(struct Curl_easy **datap); /* opposite of curl_open() */
CURLcode Curl_connect(struct Curl_easy *, bool *async, bool *protocol_connect);
-CURLcode Curl_disconnect(struct Curl_easy *data,
- struct connectdata *, bool dead_connection);
+void Curl_disconnect(struct Curl_easy *data,
+ struct connectdata *, bool dead_connection);
CURLcode Curl_setup_conn(struct Curl_easy *data,
bool *protocol_done);
void Curl_free_request_state(struct Curl_easy *data);
@@ -44,7 +46,8 @@ CURLcode Curl_parse_login_details(const char *login, const size_t len,
char **userptr, char **passwdptr,
char **optionsptr);
-const struct Curl_handler *Curl_builtin_scheme(const char *scheme);
+const struct Curl_handler *Curl_builtin_scheme(const char *scheme,
+ size_t schemelen);
bool Curl_is_ASCII_name(const char *hostname);
CURLcode Curl_idnconvert_hostname(struct Curl_easy *data,
diff --git a/lib/urlapi-int.h b/lib/urlapi-int.h
index bd6b60175..43a83ef6e 100644
--- a/lib/urlapi-int.h
+++ b/lib/urlapi-int.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,13 +20,17 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
-bool Curl_is_absolute_url(const char *url, char *scheme, size_t buflen);
+size_t Curl_is_absolute_url(const char *url, char *buf, size_t buflen,
+ bool guess_scheme);
#ifdef DEBUGBUILD
-CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname, bool);
+CURLUcode Curl_parse_port(struct Curl_URL *u, struct dynbuf *host,
+ bool has_scheme);
#endif
#endif /* HEADER_CURL_URLAPI_INT_H */
diff --git a/lib/urlapi.c b/lib/urlapi.c
index d29aeb238..7dac81c85 100644
--- a/lib/urlapi.c
+++ b/lib/urlapi.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -25,12 +27,12 @@
#include "urldata.h"
#include "urlapi-int.h"
#include "strcase.h"
-#include "dotdot.h"
#include "url.h"
#include "escape.h"
#include "curl_ctype.h"
#include "inet_pton.h"
#include "inet_ntop.h"
+#include "strdup.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -66,9 +68,6 @@ struct Curl_URL {
char *path;
char *query;
char *fragment;
-
- char *scratch; /* temporary scratch area */
- char *temppath; /* temporary path pointer */
long portnum; /* the numerical version */
};
@@ -86,18 +85,6 @@ static void free_urlhandle(struct Curl_URL *u)
free(u->path);
free(u->query);
free(u->fragment);
- free(u->scratch);
- free(u->temppath);
-}
-
-/* move the full contents of one handle onto another and
- free the original */
-static void mv_urlhandle(struct Curl_URL *from,
- struct Curl_URL *to)
-{
- free_urlhandle(to);
- *to = *from;
- free(from);
}
/*
@@ -129,91 +116,50 @@ static const char *find_host_sep(const char *url)
}
/*
- * Decide in an encoding-independent manner whether a character in an
- * URL must be escaped. The same criterion must be used in strlen_url()
- * and strcpy_url().
+ * Decide in an encoding-independent manner whether a character in a URL must
+ * be escaped. This is used in urlencode_str().
*/
static bool urlchar_needs_escaping(int c)
{
return !(ISCNTRL(c) || ISSPACE(c) || ISGRAPH(c));
}
-/*
- * strlen_url() returns the length of the given URL if the spaces within the
- * URL were properly URL encoded.
- * URL encoding should be skipped for host names, otherwise IDN resolution
- * will fail.
- */
-static size_t strlen_url(const char *url, bool relative)
-{
- const unsigned char *ptr;
- size_t newlen = 0;
- bool left = TRUE; /* left side of the ? */
- const unsigned char *host_sep = (const unsigned char *) url;
-
- if(!relative)
- host_sep = (const unsigned char *) find_host_sep(url);
-
- for(ptr = (unsigned char *)url; *ptr; ptr++) {
-
- if(ptr < host_sep) {
- ++newlen;
- continue;
- }
-
- if(*ptr == ' ') {
- if(left)
- newlen += 3;
- else
- newlen++;
- continue;
- }
-
- if (*ptr == '?')
- left = FALSE;
-
- if(urlchar_needs_escaping(*ptr))
- newlen += 2;
-
- newlen++;
- }
-
- return newlen;
-}
-
-/* strcpy_url() copies a url to a output buffer and URL-encodes the spaces in
- * the source URL accordingly.
+/* urlencode_str() writes data into an output dynbuf and URL-encodes the
+ * spaces in the source URL accordingly.
+ *
* URL encoding should be skipped for host names, otherwise IDN resolution
* will fail.
*/
-static void strcpy_url(char *output, const char *url, bool relative)
+static CURLUcode urlencode_str(struct dynbuf *o, const char *url,
+ size_t len, bool relative,
+ bool query)
{
/* we must add this with whitespace-replacing */
- bool left = TRUE;
+ bool left = !query;
const unsigned char *iptr;
- char *optr = output;
const unsigned char *host_sep = (const unsigned char *) url;
if(!relative)
host_sep = (const unsigned char *) find_host_sep(url);
for(iptr = (unsigned char *)url; /* read from here */
- *iptr; /* until zero byte */
- iptr++) {
+ len; iptr++, len--) {
if(iptr < host_sep) {
- *optr++ = *iptr;
+ if(Curl_dyn_addn(o, iptr, 1))
+ return CURLUE_OUT_OF_MEMORY;
continue;
}
if(*iptr == ' ') {
if(left) {
- *optr++='%'; /* add a '%' */
- *optr++='2'; /* add a '2' */
- *optr++='0'; /* add a '0' */
+ if(Curl_dyn_addn(o, "%20", 3))
+ return CURLUE_OUT_OF_MEMORY;
+ }
+ else {
+ if(Curl_dyn_addn(o, "+", 1))
+ return CURLUE_OUT_OF_MEMORY;
}
- else
- *optr++='+'; /* add a '+' here */
continue;
}
@@ -221,31 +167,37 @@ static void strcpy_url(char *output, const char *url, bool relative)
left = FALSE;
if(urlchar_needs_escaping(*iptr)) {
- msnprintf(optr, 4, "%%%02x", *iptr);
- optr += 3;
+ if(Curl_dyn_addf(o, "%%%02x", *iptr))
+ return CURLUE_OUT_OF_MEMORY;
+ }
+ else {
+ if(Curl_dyn_addn(o, iptr, 1))
+ return CURLUE_OUT_OF_MEMORY;
}
- else
- *optr++ = *iptr;
}
- *optr = 0; /* null-terminate output buffer */
+ return CURLUE_OK;
}
/*
- * Returns true if the given URL is absolute (as opposed to relative). Returns
- * the scheme in the buffer if TRUE and 'buf' is non-NULL. The buflen must
- * be larger than MAX_SCHEME_LEN if buf is set.
+ * Returns the length of the scheme if the given URL is absolute (as opposed
+ * to relative). Stores the scheme in the buffer if TRUE and 'buf' is
+ * non-NULL. The buflen must be larger than MAX_SCHEME_LEN if buf is set.
+ *
+ * If 'guess_scheme' is TRUE, it means the URL might be provided without
+ * scheme.
*/
-bool Curl_is_absolute_url(const char *url, char *buf, size_t buflen)
+size_t Curl_is_absolute_url(const char *url, char *buf, size_t buflen,
+ bool guess_scheme)
{
- size_t i;
+ int i;
DEBUGASSERT(!buf || (buflen > MAX_SCHEME_LEN));
(void)buflen; /* only used in debug-builds */
if(buf)
buf[0] = 0; /* always leave a defined value in buf */
#ifdef WIN32
- if(STARTS_WITH_DRIVE_PREFIX(url))
- return FALSE;
+ if(guess_scheme && STARTS_WITH_DRIVE_PREFIX(url))
+ return 0;
#endif
for(i = 0; i < MAX_SCHEME_LEN; ++i) {
char s = url[i];
@@ -258,16 +210,22 @@ bool Curl_is_absolute_url(const char *url, char *buf, size_t buflen)
break;
}
}
- if(i && (url[i] == ':') && (url[i + 1] == '/')) {
+ if(i && (url[i] == ':') && ((url[i + 1] == '/') || !guess_scheme)) {
+ /* If this does not guess scheme, the scheme always ends with the colon so
+ that this also detects data: URLs etc. In guessing mode, data: could
+ be the host name "data" with a specified port number. */
+
+ /* the length of the scheme is the name part only */
+ size_t len = i;
if(buf) {
buf[i] = 0;
while(i--) {
- buf[i] = (char)TOLOWER(url[i]);
+ buf[i] = Curl_raw_tolower(url[i]);
}
}
- return TRUE;
+ return len;
}
- return FALSE;
+ return 0;
}
/*
@@ -275,34 +233,26 @@ bool Curl_is_absolute_url(const char *url, char *buf, size_t buflen)
* URL-encodes any spaces.
* The returned pointer must be freed by the caller unless NULL
* (returns NULL on out of memory).
+ *
+ * Note that this function destroys the 'base' string.
*/
-static char *concat_url(const char *base, const char *relurl)
+static char *concat_url(char *base, const char *relurl)
{
/***
TRY to append this new path to the old URL
to the right of the host part. Oh crap, this is doomed to cause
problems in the future...
*/
- char *newest;
+ struct dynbuf newest;
char *protsep;
char *pathsep;
- size_t newlen;
bool host_changed = FALSE;
-
const char *useurl = relurl;
- size_t urllen;
-
- /* we must make our own copy of the URL to play with, as it may
- point to read-only data */
- char *url_clone = strdup(base);
-
- if(!url_clone)
- return NULL; /* skip out of this NOW */
/* protsep points to the start of the host name */
- protsep = strstr(url_clone, "//");
+ protsep = strstr(base, "//");
if(!protsep)
- protsep = url_clone;
+ protsep = base;
else
protsep += 2; /* pass the slashes */
@@ -395,38 +345,24 @@ static char *concat_url(const char *base, const char *relurl)
}
}
- /* If the new part contains a space, this is a mighty stupid redirect
- but we still make an effort to do "right". To the left of a '?'
- letter we replace each space with %20 while it is replaced with '+'
- on the right side of the '?' letter.
- */
- newlen = strlen_url(useurl, !host_changed);
-
- urllen = strlen(url_clone);
-
- newest = malloc(urllen + 1 + /* possible slash */
- newlen + 1 /* zero byte */);
-
- if(!newest) {
- free(url_clone); /* don't leak this */
- return NULL;
- }
+ Curl_dyn_init(&newest, CURL_MAX_INPUT_LENGTH);
/* copy over the root url part */
- memcpy(newest, url_clone, urllen);
+ if(Curl_dyn_add(&newest, base))
+ return NULL;
/* check if we need to append a slash */
if(('/' == useurl[0]) || (protsep && !*protsep) || ('?' == useurl[0]))
;
- else
- newest[urllen++]='/';
+ else {
+ if(Curl_dyn_addn(&newest, "/", 1))
+ return NULL;
+ }
/* then append the new piece on the right side */
- strcpy_url(&newest[urllen], useurl, !host_changed);
+ urlencode_str(&newest, useurl, strlen(useurl), !host_changed, FALSE);
- free(url_clone);
-
- return newest;
+ return Curl_dyn_ptr(&newest);
}
/* scan for byte values < 31 or 127 */
@@ -460,7 +396,7 @@ static bool junkscan(const char *part, unsigned int flags)
*
*/
static CURLUcode parse_hostname_login(struct Curl_URL *u,
- char **hostname,
+ struct dynbuf *host,
unsigned int flags)
{
CURLUcode result = CURLUE_OK;
@@ -470,27 +406,31 @@ static CURLUcode parse_hostname_login(struct Curl_URL *u,
char *optionsp = NULL;
const struct Curl_handler *h = NULL;
- /* At this point, we're hoping all the other special cases have
- * been taken care of, so conn->host.name is at most
- * [user[:password][;options]]@]hostname
+ /* At this point, we assume all the other special cases have been taken
+ * care of, so the host is at most
+ *
+ * [user[:password][;options]]@]hostname
*
* We need somewhere to put the embedded details, so do that first.
*/
- char *ptr = strchr(*hostname, '@');
- char *login = *hostname;
+ char *login = Curl_dyn_ptr(host);
+ char *ptr;
+
+ DEBUGASSERT(login);
+ ptr = strchr(login, '@');
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 */
- *hostname = ++ptr;
+ ptr++;
/* if this is a known scheme, get some details */
if(u->scheme)
- h = Curl_builtin_scheme(u->scheme);
+ h = Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED);
/* We could use the login information in the URL so extract it. Only parse
options if the handler says we should. Note that 'h' might be NULL! */
@@ -532,6 +472,10 @@ static CURLUcode parse_hostname_login(struct Curl_URL *u,
u->options = optionsp;
}
+ /* move the name to the start of the host buffer */
+ if(Curl_dyn_tail(host, strlen(ptr)))
+ return CURLUE_OUT_OF_MEMORY;
+
return CURLUE_OK;
out:
@@ -545,13 +489,13 @@ static CURLUcode parse_hostname_login(struct Curl_URL *u,
return result;
}
-UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
+UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, struct dynbuf *host,
bool has_scheme)
{
char *portptr = NULL;
char endbracket;
int len;
-
+ char *hostname = Curl_dyn_ptr(host);
/*
* Find the end of an IPv6 address, either on the ']' ending bracket or
* a percent-encoded zone index.
@@ -588,6 +532,7 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
char *rest;
long port;
char portbuf[7];
+ size_t keep = portptr - hostname;
/* 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
@@ -596,15 +541,15 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
Don't do it if the URL has no scheme, to make something that looks like
a scheme not work!
*/
- if(!portptr[1]) {
- *portptr = '\0';
+ Curl_dyn_setlen(host, keep);
+ portptr++;
+ if(!*portptr)
return has_scheme ? CURLUE_OK : CURLUE_BAD_PORT_NUMBER;
- }
- if(!ISDIGIT(portptr[1]))
+ if(!ISDIGIT(*portptr))
return CURLUE_BAD_PORT_NUMBER;
- port = strtol(portptr + 1, &rest, 10); /* Port number must be decimal */
+ port = strtol(portptr, &rest, 10); /* Port number must be decimal */
if(port > 0xffff)
return CURLUE_BAD_PORT_NUMBER;
@@ -612,7 +557,6 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
if(rest[0])
return CURLUE_BAD_PORT_NUMBER;
- *portptr++ = '\0'; /* cut off the name there */
*rest = 0;
/* generate a new port number string to get rid of leading zeroes etc */
msnprintf(portbuf, sizeof(portbuf), "%ld", port);
@@ -625,12 +569,15 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
return CURLUE_OK;
}
-static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)
+static CURLUcode hostname_check(struct Curl_URL *u, char *hostname,
+ size_t hlen) /* length of hostname */
{
size_t len;
- size_t hlen = strlen(hostname);
+ DEBUGASSERT(hostname);
- if(hostname[0] == '[') {
+ if(!hostname[0])
+ return CURLUE_NO_HOST;
+ else if(hostname[0] == '[') {
const char *l = "0123456789abcdefABCDEF:.";
if(hlen < 4) /* '[::]' is the shortest possible valid string */
return CURLUE_BAD_IPV6;
@@ -688,14 +635,12 @@ static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)
#endif
}
else {
- /* letters from the second string is not ok */
- len = strcspn(hostname, " \r\n");
+ /* letters from the second string are not ok */
+ len = strcspn(hostname, " \r\n\t/:#?!@{}[]\\$\'\"^`*<>=;,");
if(hlen != len)
/* hostname with bad content */
return CURLUE_BAD_HOSTNAME;
}
- if(!hostname[0])
- return CURLUE_NO_HOST;
return CURLUE_OK;
}
@@ -789,80 +734,230 @@ static bool ipv4_normalize(const char *hostname, char *outp, size_t olen)
return TRUE;
}
-/* return strdup'ed version in 'outp', possibly percent decoded */
-static CURLUcode decode_host(char *hostname, char **outp)
+/* if necessary, replace the host content with a URL decoded version */
+static CURLUcode decode_host(struct dynbuf *host)
{
char *per = NULL;
- if(hostname[0] != '[')
+ const char *hostname = Curl_dyn_ptr(host);
+ if(hostname[0] == '[')
/* only decode if not an ipv6 numerical */
- per = strchr(hostname, '%');
- if(!per) {
- *outp = strdup(hostname);
- if(!*outp)
- return CURLUE_OUT_OF_MEMORY;
- }
+ return CURLUE_OK;
+ per = strchr(hostname, '%');
+ if(!per)
+ /* nothing to decode */
+ return CURLUE_OK;
else {
- /* might be encoded */
+ /* encoded */
size_t dlen;
- CURLcode result = Curl_urldecode(NULL, hostname, 0,
- outp, &dlen, REJECT_CTRL);
+ char *decoded;
+ CURLcode result = Curl_urldecode(hostname, 0, &decoded, &dlen,
+ REJECT_CTRL);
if(result)
return CURLUE_BAD_HOSTNAME;
+ Curl_dyn_reset(host);
+ result = Curl_dyn_addn(host, decoded, dlen);
+ free(decoded);
+ if(result)
+ return CURLUE_OUT_OF_MEMORY;
}
return CURLUE_OK;
}
-static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
+/*
+ * "Remove Dot Segments"
+ * https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4
+ */
+
+/*
+ * dedotdotify()
+ * @unittest: 1395
+ *
+ * This function gets a null-terminated path with dot and dotdot sequences
+ * passed in and strips them off according to the rules in RFC 3986 section
+ * 5.2.4.
+ *
+ * The function handles a query part ('?' + stuff) appended but it expects
+ * that fragments ('#' + stuff) have already been cut off.
+ *
+ * RETURNS
+ *
+ * an allocated dedotdotified output string
+ */
+UNITTEST char *dedotdotify(const char *input, size_t clen);
+UNITTEST char *dedotdotify(const char *input, size_t clen)
{
- char *path;
- bool path_alloced = FALSE;
+ char *out = malloc(clen + 1);
+ char *outptr;
+ const char *orginput = input;
+ char *queryp;
+ if(!out)
+ return NULL; /* out of memory */
+
+ *out = 0; /* null-terminates, for inputs like "./" */
+ outptr = out;
+
+ if(!*input)
+ /* zero length input string, return that */
+ return out;
+
+ /*
+ * To handle query-parts properly, we must find it and remove it during the
+ * dotdot-operation and then append it again at the end to the output
+ * string.
+ */
+ queryp = strchr(input, '?');
+
+ do {
+ bool dotdot = TRUE;
+ if(*input == '.') {
+ /* A. If the input buffer begins with a prefix of "../" or "./", then
+ remove that prefix from the input buffer; otherwise, */
+
+ if(!strncmp("./", input, 2)) {
+ input += 2;
+ clen -= 2;
+ }
+ else if(!strncmp("../", input, 3)) {
+ input += 3;
+ clen -= 3;
+ }
+ /* D. if the input buffer consists only of "." or "..", then remove
+ that from the input buffer; otherwise, */
+
+ else if(!strcmp(".", input) || !strcmp("..", input) ||
+ !strncmp(".?", input, 2) || !strncmp("..?", input, 3)) {
+ *out = 0;
+ break;
+ }
+ else
+ dotdot = FALSE;
+ }
+ else if(*input == '/') {
+ /* B. if the input buffer begins with a prefix of "/./" or "/.", where
+ "." is a complete path segment, then replace that prefix with "/" in
+ the input buffer; otherwise, */
+ if(!strncmp("/./", input, 3)) {
+ input += 2;
+ clen -= 2;
+ }
+ else if(!strcmp("/.", input) || !strncmp("/.?", input, 3)) {
+ *outptr++ = '/';
+ *outptr = 0;
+ break;
+ }
+
+ /* C. if the input buffer begins with a prefix of "/../" or "/..",
+ where ".." is a complete path segment, then replace that prefix with
+ "/" in the input buffer and remove the last segment and its
+ preceding "/" (if any) from the output buffer; otherwise, */
+
+ else if(!strncmp("/../", input, 4)) {
+ input += 3;
+ clen -= 3;
+ /* remove the last segment from the output buffer */
+ while(outptr > out) {
+ outptr--;
+ if(*outptr == '/')
+ break;
+ }
+ *outptr = 0; /* null-terminate where it stops */
+ }
+ else if(!strcmp("/..", input) || !strncmp("/..?", input, 4)) {
+ /* remove the last segment from the output buffer */
+ while(outptr > out) {
+ outptr--;
+ if(*outptr == '/')
+ break;
+ }
+ *outptr++ = '/';
+ *outptr = 0; /* null-terminate where it stops */
+ break;
+ }
+ else
+ dotdot = FALSE;
+ }
+ else
+ dotdot = FALSE;
+
+ if(!dotdot) {
+ /* E. move the first path segment in the input buffer to the end of
+ the output buffer, including the initial "/" character (if any) and
+ any subsequent characters up to, but not including, the next "/"
+ character or the end of the input buffer. */
+
+ do {
+ *outptr++ = *input++;
+ clen--;
+ } while(*input && (*input != '/') && (*input != '?'));
+ *outptr = 0;
+ }
+
+ /* continue until end of input string OR, if there is a terminating
+ query part, stop there */
+ } while(*input && (!queryp || (input < queryp)));
+
+ if(queryp) {
+ size_t qlen;
+ /* There was a query part, append that to the output. */
+ size_t oindex = queryp - orginput;
+ qlen = strlen(&orginput[oindex]);
+ memcpy(outptr, &orginput[oindex], qlen + 1); /* include zero byte */
+ }
+
+ return out;
+}
+
+static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags)
+{
+ const char *path;
+ size_t pathlen;
bool uncpath = FALSE;
- char *hostname;
char *query = NULL;
char *fragment = NULL;
- CURLUcode result;
- bool url_has_scheme = FALSE;
char schemebuf[MAX_SCHEME_LEN + 1];
const char *schemep = NULL;
size_t schemelen = 0;
size_t urllen;
+ CURLUcode result = CURLUE_OK;
+ size_t fraglen = 0;
+ struct dynbuf host;
DEBUGASSERT(url);
+ Curl_dyn_init(&host, CURL_MAX_INPUT_LENGTH);
+
/*************************************************************
* Parse the URL.
************************************************************/
/* allocate scratch area */
urllen = strlen(url);
- if(urllen > CURL_MAX_INPUT_LENGTH)
+ if(urllen > CURL_MAX_INPUT_LENGTH) {
/* excessive input length */
- return CURLUE_MALFORMED_INPUT;
-
- path = u->scratch = malloc(urllen * 2 + 2);
- if(!path)
- return CURLUE_OUT_OF_MEMORY;
-
- hostname = &path[urllen + 1];
- hostname[0] = 0;
-
- if(Curl_is_absolute_url(url, schemebuf, sizeof(schemebuf))) {
- url_has_scheme = TRUE;
- schemelen = strlen(schemebuf);
+ result = CURLUE_MALFORMED_INPUT;
+ goto fail;
}
+ schemelen = Curl_is_absolute_url(url, schemebuf, sizeof(schemebuf),
+ flags & (CURLU_GUESS_SCHEME|
+ CURLU_DEFAULT_SCHEME));
+
/* handle the file: scheme */
- if(url_has_scheme && !strcmp(schemebuf, "file")) {
- if(urllen <= 6)
+ if(schemelen && !strcmp(schemebuf, "file")) {
+ if(urllen <= 6) {
/* file:/ is not enough to actually be a complete file: URL */
- return CURLUE_BAD_FILE_URL;
+ result = CURLUE_BAD_FILE_URL;
+ goto fail;
+ }
/* path has been allocated large enough to hold this */
- strcpy(path, &url[5]);
+ path = (char *)&url[5];
- u->scheme = strdup("file");
- if(!u->scheme)
- return CURLUE_OUT_OF_MEMORY;
+ schemep = u->scheme = strdup("file");
+ if(!u->scheme) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
/* Extra handling URLs with an authority component (i.e. that start with
* "file://")
@@ -872,7 +967,7 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
*/
if(path[0] == '/' && path[1] == '/') {
/* swallow the two slashes */
- char *ptr = &path[2];
+ const char *ptr = &path[2];
/*
* According to RFC 8089, a file: URL can be reliably dereferenced if:
@@ -908,13 +1003,17 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
chars, and the delimiting slash character must be appended to the
host name */
path = strpbrk(ptr, "/\\:*?\"<>|");
- if(!path || *path != '/')
- return CURLUE_BAD_FILE_URL;
+ if(!path || *path != '/') {
+ result = CURLUE_BAD_FILE_URL;
+ goto fail;
+ }
len = path - ptr;
if(len) {
- memcpy(hostname, ptr, len);
- hostname[len] = 0;
+ if(Curl_dyn_addn(&host, ptr, len)) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
uncpath = TRUE;
}
@@ -922,7 +1021,8 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
#else
/* Invalid file://hostname/, expected localhost or 127.0.0.1 or
none */
- return CURLUE_BAD_FILE_URL;
+ result = CURLUE_BAD_FILE_URL;
+ goto fail;
#endif
}
}
@@ -931,7 +1031,8 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
}
if(!uncpath)
- hostname = NULL; /* no host for file: URLs by default */
+ /* no host for file: URLs by default */
+ Curl_dyn_reset(&host);
#if !defined(MSDOS) && !defined(WIN32) && !defined(__CYGWIN__)
/* Don't allow Windows drive letters when not in Windows.
@@ -939,13 +1040,14 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
if(('/' == path[0] && STARTS_WITH_URL_DRIVE_PREFIX(&path[1])) ||
STARTS_WITH_URL_DRIVE_PREFIX(path)) {
/* File drive letters are only accepted in MSDOS/Windows */
- return CURLUE_BAD_FILE_URL;
+ result = CURLUE_BAD_FILE_URL;
+ goto fail;
}
#else
/* If the path starts with a slash and a drive letter, ditch the slash */
if('/' == path[0] && STARTS_WITH_URL_DRIVE_PREFIX(&path[1])) {
/* This cannot be done with strcpy, as the memory chunks overlap! */
- memmove(path, &path[1], strlen(&path[1]) + 1);
+ path++;
}
#endif
@@ -955,32 +1057,39 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
const char *p;
const char *hostp;
size_t len;
- path[0] = 0;
- if(url_has_scheme) {
+ if(schemelen) {
int i = 0;
p = &url[schemelen + 1];
while(p && (*p == '/') && (i < 4)) {
p++;
i++;
}
- if((i < 1) || (i>3))
- /* less than one or more than three slashes */
- return CURLUE_BAD_SLASHES;
schemep = schemebuf;
- if(!Curl_builtin_scheme(schemep) &&
- !(flags & CURLU_NON_SUPPORT_SCHEME))
- return CURLUE_UNSUPPORTED_SCHEME;
+ if(!Curl_builtin_scheme(schemep, CURL_ZERO_TERMINATED) &&
+ !(flags & CURLU_NON_SUPPORT_SCHEME)) {
+ result = CURLUE_UNSUPPORTED_SCHEME;
+ goto fail;
+ }
- if(junkscan(schemep, flags))
- return CURLUE_BAD_SCHEME;
+ if((i < 1) || (i>3)) {
+ /* less than one or more than three slashes */
+ result = CURLUE_BAD_SLASHES;
+ goto fail;
+ }
+ if(junkscan(schemep, flags)) {
+ result = CURLUE_BAD_SCHEME;
+ goto fail;
+ }
}
else {
/* no scheme! */
- if(!(flags & (CURLU_DEFAULT_SCHEME|CURLU_GUESS_SCHEME)))
- return CURLUE_BAD_SCHEME;
+ if(!(flags & (CURLU_DEFAULT_SCHEME|CURLU_GUESS_SCHEME))) {
+ result = CURLUE_BAD_SCHEME;
+ goto fail;
+ }
if(flags & CURLU_DEFAULT_SCHEME)
schemep = DEFAULT_SCHEME;
@@ -997,124 +1106,169 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
len = p - hostp;
if(len) {
- memcpy(hostname, hostp, len);
- hostname[len] = 0;
+ if(Curl_dyn_addn(&host, hostp, len)) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
}
else {
- if(!(flags & CURLU_NO_AUTHORITY))
- return CURLUE_NO_HOST;
+ if(!(flags & CURLU_NO_AUTHORITY)) {
+ result = CURLUE_NO_HOST;
+ goto fail;
+ }
}
- len = strlen(p);
- memcpy(path, p, len);
- path[len] = 0;
+ path = (char *)p;
if(schemep) {
u->scheme = strdup(schemep);
- if(!u->scheme)
- return CURLUE_OUT_OF_MEMORY;
+ if(!u->scheme) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
}
}
- if((flags & CURLU_URLENCODE) && path[0]) {
- /* worst case output length is 3x the original! */
- char *newp = malloc(strlen(path) * 3);
- if(!newp)
- return CURLUE_OUT_OF_MEMORY;
- path_alloced = TRUE;
- strcpy_url(newp, path, TRUE); /* consider it relative */
- u->temppath = path = newp;
- }
-
fragment = strchr(path, '#');
if(fragment) {
- *fragment++ = 0;
- if(junkscan(fragment, flags))
- return CURLUE_BAD_FRAGMENT;
- if(fragment[0]) {
- u->fragment = strdup(fragment);
- if(!u->fragment)
- return CURLUE_OUT_OF_MEMORY;
+ fraglen = strlen(fragment);
+ if(fraglen > 1) {
+ /* skip the leading '#' in the copy but include the terminating null */
+ u->fragment = Curl_memdup(fragment + 1, fraglen);
+ if(!u->fragment) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ if(junkscan(u->fragment, flags)) {
+ result = CURLUE_BAD_FRAGMENT;
+ goto fail;
+ }
}
}
query = strchr(path, '?');
- if(query) {
- *query++ = 0;
- if(junkscan(query, flags))
- return CURLUE_BAD_QUERY;
- /* done even if the query part is a blank string */
- u->query = strdup(query);
- if(!u->query)
- return CURLUE_OUT_OF_MEMORY;
- }
+ if(query && (!fragment || (query < fragment))) {
+ size_t qlen = strlen(query) - fraglen; /* includes '?' */
+ pathlen = strlen(path) - qlen - fraglen;
+ if(qlen > 1) {
+ if(qlen && (flags & CURLU_URLENCODE)) {
+ struct dynbuf enc;
+ Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+ /* skip the leading question mark */
+ if(urlencode_str(&enc, query + 1, qlen - 1, TRUE, TRUE)) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
+ u->query = Curl_dyn_ptr(&enc);
+ }
+ else {
+ u->query = Curl_memdup(query + 1, qlen);
+ if(!u->query) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
+ u->query[qlen - 1] = 0;
+ }
- if(junkscan(path, flags))
- return CURLUE_BAD_PATH;
+ if(junkscan(u->query, flags)) {
+ result = CURLUE_BAD_QUERY;
+ goto fail;
+ }
+ }
+ else {
+ /* single byte query */
+ u->query = strdup("");
+ if(!u->query) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
+ }
+ }
+ else
+ pathlen = strlen(path) - fraglen;
+
+ if(pathlen && (flags & CURLU_URLENCODE)) {
+ struct dynbuf enc;
+ Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+ if(urlencode_str(&enc, path, pathlen, TRUE, FALSE)) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
+ pathlen = Curl_dyn_len(&enc);
+ path = u->path = Curl_dyn_ptr(&enc);
+ }
- if(!path[0])
- /* if there's no path left set, unset */
+ if(!pathlen) {
+ /* there is no path left, unset */
path = NULL;
+ }
else {
+ if(!u->path) {
+ u->path = Curl_memdup(path, pathlen + 1);
+ if(!u->path) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
+ u->path[pathlen] = 0;
+ path = u->path;
+ }
+ else if(flags & CURLU_URLENCODE)
+ /* it might have encoded more than just the path so cut it */
+ u->path[pathlen] = 0;
+
+ if(junkscan(u->path, flags)) {
+ result = CURLUE_BAD_PATH;
+ goto fail;
+ }
+
if(!(flags & CURLU_PATH_AS_IS)) {
/* remove ../ and ./ sequences according to RFC3986 */
- char *newp = Curl_dedotdotify(path);
- if(!newp)
- return CURLUE_OUT_OF_MEMORY;
-
- if(strcmp(newp, path)) {
- /* if we got a new version */
- if(path_alloced)
- Curl_safefree(u->temppath);
- u->temppath = path = newp;
- path_alloced = TRUE;
+ char *newp = dedotdotify((char *)path, pathlen);
+ if(!newp) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
}
- else
- free(newp);
+ free(u->path);
+ u->path = newp;
}
-
- u->path = path_alloced?path:strdup(path);
- if(!u->path)
- return CURLUE_OUT_OF_MEMORY;
- u->temppath = NULL; /* used now */
}
- if(hostname) {
+ if(Curl_dyn_len(&host)) {
char normalized_ipv4[sizeof("255.255.255.255") + 1];
/*
* Parse the login details and strip them out of the host name.
*/
- result = parse_hostname_login(u, &hostname, flags);
- if(result)
- return result;
-
- result = Curl_parse_port(u, hostname, url_has_scheme);
+ result = parse_hostname_login(u, &host, flags);
+ if(!result)
+ result = Curl_parse_port(u, &host, schemelen);
if(result)
- return result;
+ goto fail;
- if(junkscan(hostname, flags))
- return CURLUE_BAD_HOSTNAME;
+ if(junkscan(Curl_dyn_ptr(&host), flags)) {
+ result = CURLUE_BAD_HOSTNAME;
+ goto fail;
+ }
- if(0 == strlen(hostname) && (flags & CURLU_NO_AUTHORITY)) {
- /* Skip hostname check, it's allowed to be empty. */
- u->host = strdup("");
+ if(ipv4_normalize(Curl_dyn_ptr(&host),
+ normalized_ipv4, sizeof(normalized_ipv4))) {
+ Curl_dyn_reset(&host);
+ if(Curl_dyn_add(&host, normalized_ipv4)) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
}
else {
- if(ipv4_normalize(hostname, normalized_ipv4, sizeof(normalized_ipv4)))
- u->host = strdup(normalized_ipv4);
- else {
- result = decode_host(hostname, &u->host);
- if(result)
- return result;
- result = hostname_check(u, u->host);
- if(result)
- return result;
- }
+ result = decode_host(&host);
+ if(!result)
+ result = hostname_check(u, Curl_dyn_ptr(&host), Curl_dyn_len(&host));
+ if(result)
+ goto fail;
}
- if(!u->host)
- return CURLUE_OUT_OF_MEMORY;
+
if((flags & CURLU_GUESS_SCHEME) && !schemep) {
+ const char *hostname = Curl_dyn_ptr(&host);
/* legacy curl-style guess based on host name */
if(checkprefix("ftp.", hostname))
schemep = "ftp";
@@ -1132,26 +1286,42 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
schemep = "http";
u->scheme = strdup(schemep);
- if(!u->scheme)
- return CURLUE_OUT_OF_MEMORY;
+ if(!u->scheme) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
+ }
+ }
+ }
+ else if(flags & CURLU_NO_AUTHORITY) {
+ /* allowed to be empty. */
+ if(Curl_dyn_add(&host, "")) {
+ result = CURLUE_OUT_OF_MEMORY;
+ goto fail;
}
}
- Curl_safefree(u->scratch);
- Curl_safefree(u->temppath);
+ u->host = Curl_dyn_ptr(&host);
- return CURLUE_OK;
+ return result;
+ fail:
+ Curl_dyn_free(&host);
+ free_urlhandle(u);
+ return result;
}
/*
- * Parse the URL and set the relevant members of the Curl_URL struct.
+ * Parse the URL and, if successful, replace everything in the Curl_URL struct.
*/
-static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags)
+static CURLUcode parseurl_and_replace(const char *url, CURLU *u,
+ unsigned int flags)
{
- CURLUcode result = seturl(url, u, flags);
- if(result) {
+ CURLUcode result;
+ CURLU tmpurl;
+ memset(&tmpurl, 0, sizeof(tmpurl));
+ result = parseurl(url, &tmpurl, flags);
+ if(!result) {
free_urlhandle(u);
- memset(u, 0, sizeof(struct Curl_URL));
+ *u = tmpurl;
}
return result;
}
@@ -1251,7 +1421,7 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
/* there's no stored port number, but asked to deliver
a default one for the scheme */
const struct Curl_handler *h =
- Curl_builtin_scheme(u->scheme);
+ Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED);
if(h) {
msnprintf(portbuf, sizeof(portbuf), "%u", h->defport);
ptr = portbuf;
@@ -1261,7 +1431,7 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
/* there is a stored port number, but ask to inhibit if
it matches the default one for the scheme */
const struct Curl_handler *h =
- Curl_builtin_scheme(u->scheme);
+ Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED);
if(h && (h->defport == u->portnum) &&
(flags & CURLU_NO_DEFAULT_PORT))
ptr = NULL;
@@ -1307,7 +1477,7 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
else
return CURLUE_NO_SCHEME;
- h = Curl_builtin_scheme(scheme);
+ h = Curl_builtin_scheme(scheme, CURL_ZERO_TERMINATED);
if(!port && (flags & CURLU_DEFAULT_PORT)) {
/* there's no stored port number, but asked to deliver
a default one for the scheme */
@@ -1330,14 +1500,13 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
if(u->host[0] == '[') {
if(u->zoneid) {
/* make it '[ host %25 zoneid ]' */
+ struct dynbuf enc;
size_t hostlen = strlen(u->host);
- size_t alen = hostlen + 3 + strlen(u->zoneid) + 1;
- allochost = malloc(alen);
- if(!allochost)
+ Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+ if(Curl_dyn_addf(&enc, "%.*s%%25%s]", (int)hostlen - 1, u->host,
+ u->zoneid))
return CURLUE_OUT_OF_MEMORY;
- memcpy(allochost, u->host, hostlen - 1);
- msnprintf(&allochost[hostlen - 1], alen - hostlen + 1,
- "%%25%s]", u->zoneid);
+ allochost = Curl_dyn_ptr(&enc);
}
}
else if(urlencode) {
@@ -1348,32 +1517,32 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
else {
/* only encode '%' in output host name */
char *host = u->host;
- size_t pcount = 0;
+ bool percent = FALSE;
/* first, count number of percents present in the name */
while(*host) {
- if(*host == '%')
- pcount++;
+ if(*host == '%') {
+ percent = TRUE;
+ break;
+ }
host++;
}
- /* if there were percents, encode the host name */
- if(pcount) {
- size_t hostlen = strlen(u->host);
- size_t alen = hostlen + 2 * pcount + 1;
- char *o = allochost = malloc(alen);
- if(!allochost)
- return CURLUE_OUT_OF_MEMORY;
-
+ /* if there were percent(s), encode the host name */
+ if(percent) {
+ struct dynbuf enc;
+ CURLcode result;
+ Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
host = u->host;
while(*host) {
- if(*host == '%') {
- memcpy(o, "%25", 3);
- o += 3;
- host++;
- continue;
- }
- *o++ = *host++;
+ if(*host == '%')
+ result = Curl_dyn_addn(&enc, "%25", 3);
+ else
+ result = Curl_dyn_addn(&enc, host, 1);
+ if(result)
+ return CURLUE_OUT_OF_MEMORY;
+ host++;
}
- *o = '\0';
+ free(u->host);
+ u->host = Curl_dyn_ptr(&enc);
}
}
@@ -1406,13 +1575,15 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
break;
}
if(ptr) {
- *part = strdup(ptr);
+ size_t partlen = strlen(ptr);
+ size_t i = 0;
+ *part = Curl_memdup(ptr, partlen + 1);
if(!*part)
return CURLUE_OUT_OF_MEMORY;
if(plusdecode) {
/* convert + to space */
- char *plus;
- for(plus = *part; *plus; ++plus) {
+ char *plus = *part;
+ for(i = 0; i < partlen; ++plus, i++) {
if(*plus == '+')
*plus = ' ';
}
@@ -1422,15 +1593,25 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
size_t dlen;
/* this unconditional rejection of control bytes is documented
API behavior */
- CURLcode res = Curl_urldecode(NULL, *part, 0, &decoded, &dlen,
- REJECT_CTRL);
+ CURLcode res = Curl_urldecode(*part, 0, &decoded, &dlen, REJECT_CTRL);
free(*part);
if(res) {
*part = NULL;
return CURLUE_URLDECODE;
}
*part = decoded;
+ partlen = dlen;
}
+ if(urlencode) {
+ struct dynbuf enc;
+ Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+ if(urlencode_str(&enc, *part, partlen, TRUE,
+ what == CURLUPART_QUERY))
+ return CURLUE_OUT_OF_MEMORY;
+ free(*part);
+ *part = Curl_dyn_ptr(&enc);
+ }
+
return CURLUE_OK;
}
else
@@ -1492,6 +1673,10 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
if(storep && *storep) {
Curl_safefree(*storep);
}
+ else if(!storep) {
+ free_urlhandle(u);
+ memset(u, 0, sizeof(struct Curl_URL));
+ }
return CURLUE_OK;
}
@@ -1502,7 +1687,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
return CURLUE_BAD_SCHEME;
if(!(flags & CURLU_NON_SUPPORT_SCHEME) &&
/* verify that it is a fine scheme */
- !Curl_builtin_scheme(part))
+ !Curl_builtin_scheme(part, CURL_ZERO_TERMINATED))
return CURLUE_UNSUPPORTED_SCHEME;
storep = &u->scheme;
urlencode = FALSE; /* never */
@@ -1564,52 +1749,26 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
CURLUcode result;
char *oldurl;
char *redired_url;
- CURLU *handle2;
- if(Curl_is_absolute_url(part, NULL, 0)) {
- handle2 = curl_url();
- if(!handle2)
- return CURLUE_OUT_OF_MEMORY;
- result = parseurl(part, handle2, flags);
- if(!result)
- mv_urlhandle(handle2, u);
- else
- curl_url_cleanup(handle2);
- return result;
- }
- /* extract the full "old" URL to do the redirect on */
- result = curl_url_get(u, CURLUPART_URL, &oldurl, flags);
- if(result) {
- /* couldn't get the old URL, just use the new! */
- handle2 = curl_url();
- if(!handle2)
- return CURLUE_OUT_OF_MEMORY;
- result = parseurl(part, handle2, flags);
- if(!result)
- mv_urlhandle(handle2, u);
- else
- curl_url_cleanup(handle2);
- return result;
+ /* if the new thing is absolute or the old one is not
+ * (we could not get an absolute url in 'oldurl'),
+ * then replace the existing with the new. */
+ if(Curl_is_absolute_url(part, NULL, 0,
+ flags & (CURLU_GUESS_SCHEME|
+ CURLU_DEFAULT_SCHEME))
+ || curl_url_get(u, CURLUPART_URL, &oldurl, flags)) {
+ return parseurl_and_replace(part, u, flags);
}
- /* apply the relative part to create a new URL */
+ /* apply the relative part to create a new URL
+ * and replace the existing one with it. */
redired_url = concat_url(oldurl, part);
free(oldurl);
if(!redired_url)
return CURLUE_OUT_OF_MEMORY;
- /* now parse the new URL */
- handle2 = curl_url();
- if(!handle2) {
- free(redired_url);
- return CURLUE_OUT_OF_MEMORY;
- }
- result = parseurl(redired_url, handle2, flags);
+ result = parseurl_and_replace(redired_url, u, flags);
free(redired_url);
- if(!result)
- mv_urlhandle(handle2, u);
- else
- curl_url_cleanup(handle2);
return result;
}
default:
@@ -1626,14 +1785,16 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
if(urlencode) {
const unsigned char *i;
- char *o;
- char *enc = malloc(nalloc * 3 + 1); /* for worst case! */
- if(!enc)
- return CURLUE_OUT_OF_MEMORY;
- for(i = (const unsigned char *)part, o = enc; *i; i++) {
+ struct dynbuf enc;
+
+ Curl_dyn_init(&enc, nalloc * 3 + 1);
+
+ for(i = (const unsigned char *)part; *i; i++) {
+ CURLcode result;
if((*i == ' ') && plusencode) {
- *o = '+';
- o++;
+ result = Curl_dyn_addn(&enc, "+", 1);
+ if(result)
+ return CURLUE_OUT_OF_MEMORY;
}
else if(Curl_isunreserved(*i) ||
((*i == '/') && urlskipslash) ||
@@ -1641,16 +1802,17 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
if((*i == '=') && equalsencode)
/* only skip the first equals sign */
equalsencode = FALSE;
- *o = *i;
- o++;
+ result = Curl_dyn_addn(&enc, i, 1);
+ if(result)
+ return CURLUE_OUT_OF_MEMORY;
}
else {
- msnprintf(o, 4, "%%%02x", *i);
- o += 3;
+ result = Curl_dyn_addf(&enc, "%%%02x", *i);
+ if(result)
+ return CURLUE_OUT_OF_MEMORY;
}
}
- *o = 0; /* null-terminate */
- newp = enc;
+ newp = Curl_dyn_ptr(&enc);
}
else {
char *p;
@@ -1662,8 +1824,8 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
/* make sure percent encoded are lower case */
if((*p == '%') && ISXDIGIT(p[1]) && ISXDIGIT(p[2]) &&
(ISUPPER(p[1]) || ISUPPER(p[2]))) {
- p[1] = (char)TOLOWER(p[1]);
- p[2] = (char)TOLOWER(p[2]);
+ p[1] = Curl_raw_tolower(p[1]);
+ p[2] = Curl_raw_tolower(p[2]);
p += 3;
}
else
@@ -1672,34 +1834,41 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
}
if(appendquery) {
- /* Append the string onto the old query. Add a '&' separator if none is
- present at the end of the exsting query already */
+ /* Append the 'newp' string onto the old query. Add a '&' separator if
+ none is present at the end of the existing query already */
+
size_t querylen = u->query ? strlen(u->query) : 0;
bool addamperand = querylen && (u->query[querylen -1] != '&');
if(querylen) {
- size_t newplen = strlen(newp);
- char *p = malloc(querylen + addamperand + newplen + 1);
- if(!p) {
- free((char *)newp);
- return CURLUE_OUT_OF_MEMORY;
+ struct dynbuf enc;
+ Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+
+ if(Curl_dyn_addn(&enc, u->query, querylen)) /* add original query */
+ goto nomem;
+
+ if(addamperand) {
+ if(Curl_dyn_addn(&enc, "&", 1))
+ goto nomem;
}
- strcpy(p, u->query); /* original query */
- if(addamperand)
- p[querylen] = '&'; /* ampersand */
- strcpy(&p[querylen + addamperand], newp); /* new suffix */
+ if(Curl_dyn_add(&enc, newp))
+ goto nomem;
free((char *)newp);
free(*storep);
- *storep = p;
+ *storep = Curl_dyn_ptr(&enc);
return CURLUE_OK;
+ nomem:
+ free((char *)newp);
+ return CURLUE_OUT_OF_MEMORY;
}
}
if(what == CURLUPART_HOST) {
- if(0 == strlen(newp) && (flags & CURLU_NO_AUTHORITY)) {
+ size_t n = strlen(newp);
+ if(!n && (flags & CURLU_NO_AUTHORITY)) {
/* Skip hostname check, it's allowed to be empty. */
}
else {
- if(hostname_check(u, (char *)newp)) {
+ if(hostname_check(u, (char *)newp, n)) {
free((char *)newp);
return CURLUE_BAD_HOSTNAME;
}
diff --git a/lib/urldata.h b/lib/urldata.h
index cc9c88870..1d430b5e8 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* This file is for lib internal stuff */
@@ -51,6 +53,33 @@
#define PORT_GOPHER 70
#define PORT_MQTT 1883
+#ifdef USE_WEBSOCKETS
+/* CURLPROTO_GOPHERS (29) is the highest publicly used protocol bit number,
+ * the rest are internal information. If we use higher bits we only do this on
+ * platforms that have a >= 64 bit type and then we use such a type for the
+ * protocol fields in the protocol handler.
+ */
+#define CURLPROTO_WS (1<<30)
+#define CURLPROTO_WSS ((curl_prot_t)1<<31)
+#else
+#define CURLPROTO_WS 0
+#define CURLPROTO_WSS 0
+#endif
+
+/* This should be undefined once we need bit 32 or higher */
+#define PROTO_TYPE_SMALL
+
+#ifndef PROTO_TYPE_SMALL
+typedef curl_off_t curl_prot_t;
+#else
+typedef unsigned int curl_prot_t;
+#endif
+
+/* This mask is for all the old protocols that are provided and defined in the
+ public header and shall exclude protocols added since which are not exposed
+ in the API */
+#define CURLPROTO_MASK (0x3ffffff)
+
#define DICT_MATCH "/MATCH:"
#define DICT_MATCH2 "/M:"
#define DICT_MATCH3 "/FIND:"
@@ -64,7 +93,8 @@
/* 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_HTTP (CURLPROTO_HTTP|CURLPROTO_HTTPS|CURLPROTO_WS| \
+ CURLPROTO_WSS)
#define PROTO_FAMILY_FTP (CURLPROTO_FTP|CURLPROTO_FTPS)
#define PROTO_FAMILY_POP3 (CURLPROTO_POP3|CURLPROTO_POP3S)
#define PROTO_FAMILY_SMB (CURLPROTO_SMB|CURLPROTO_SMBS)
@@ -155,10 +185,10 @@ typedef CURLcode (*Curl_datastream)(struct Curl_easy *data,
# endif
#endif
-#ifdef HAVE_LIBSSH2_H
+#ifdef USE_LIBSSH2
#include <libssh2.h>
#include <libssh2_sftp.h>
-#endif /* HAVE_LIBSSH2_H */
+#endif /* USE_LIBSSH2 */
#define READBUFFER_SIZE CURL_MAX_WRITE_SIZE
#define READBUFFER_MAX CURL_MAX_READ_SIZE
@@ -180,15 +210,6 @@ typedef CURLcode (*Curl_datastream)(struct Curl_easy *data,
#define GOOD_EASY_HANDLE(x) \
((x) && ((x)->magic == CURLEASY_MAGIC_NUMBER))
-/* the type we use for storing a single boolean bit */
-#ifdef _MSC_VER
-typedef bool bit;
-#define BIT(x) bool x
-#else
-typedef unsigned int bit;
-#define BIT(x) bit x:1
-#endif
-
#ifdef HAVE_GSSAPI
/* Types needed for krb5-ftp connections */
struct krb5buffer {
@@ -248,15 +269,20 @@ struct ssl_primary_config {
char *CAfile; /* certificate to verify peer against */
char *issuercert; /* optional issuer certificate filename */
char *clientcert;
- char *random_file; /* path to file containing "random" data */
- char *egdsocket; /* path to file containing the EGD daemon socket */
char *cipher_list; /* list of ciphers to use */
char *cipher_list13; /* list of TLS 1.3 cipher suites to use */
char *pinned_key;
+ char *CRLfile; /* CRL to check certificate revocation */
struct curl_blob *cert_blob;
struct curl_blob *ca_info_blob;
struct curl_blob *issuercert_blob;
+#ifdef USE_TLS_SRP
+ char *username; /* TLS username (for, e.g., SRP) */
+ char *password; /* TLS password (for, e.g., SRP) */
+ enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
+#endif
char *curves; /* list of curves to use */
+ unsigned char ssl_options; /* the CURLOPT_SSL_OPTIONS bitmask */
BIT(verifypeer); /* set TRUE if this is desired */
BIT(verifyhost); /* set TRUE if CN/SAN must match hostname */
BIT(verifystatus); /* set TRUE if certificate status must be checked */
@@ -266,7 +292,6 @@ struct ssl_primary_config {
struct ssl_config_data {
struct ssl_primary_config primary;
long certverifyresult; /* result from the certificate verification */
- char *CRLfile; /* CRL to check certificate revocation */
curl_ssl_ctx_callback fsslctx; /* function to initialize ssl ctx */
void *fsslctxp; /* parameter for call back */
char *cert_type; /* format for certificate (default: PEM)*/
@@ -274,11 +299,6 @@ struct ssl_config_data {
struct curl_blob *key_blob;
char *key_type; /* format for private key (default: PEM) */
char *key_passwd; /* plain text private key password */
-#ifdef USE_TLS_SRP
- char *username; /* TLS username (for, e.g., SRP) */
- char *password; /* TLS password (for, e.g., SRP) */
- enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
-#endif
BIT(certinfo); /* gather lots of certificate info */
BIT(falsestart);
BIT(enable_beast); /* allow this flaw for interoperability's sake*/
@@ -326,11 +346,11 @@ struct digestdata {
char *nonce;
char *cnonce;
char *realm;
- int algo;
char *opaque;
char *qop;
char *algorithm;
int nc; /* nonce count */
+ unsigned char algo;
BIT(stale); /* set true for re-negotiation */
BIT(userhash);
#endif
@@ -352,10 +372,6 @@ typedef enum {
GSS_AUTHSUCC
} curlnegotiate;
-#if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
-#include <iconv.h>
-#endif
-
/* Struct used for GSSAPI (Kerberos V5) authentication */
#if defined(USE_KERBEROS5)
struct kerberos5data {
@@ -450,6 +466,11 @@ struct negotiatedata {
};
#endif
+#ifdef CURL_DISABLE_PROXY
+#define CONN_IS_PROXIED(x) 0
+#else
+#define CONN_IS_PROXIED(x) x->bits.proxy
+#endif
/*
* Boolean values that concerns this connection.
@@ -470,6 +491,7 @@ struct ConnectBits {
BIT(proxy_connect_closed); /* TRUE if a proxy disconnected the connection
in a CONNECT request with auth, so that
libcurl should reconnect and continue. */
+ BIT(proxy); /* if set, this transfer is done through a proxy - any type */
#endif
/* always modify bits.close with the connclose() and connkeep() macros! */
BIT(close); /* if set, we close the connection after this request */
@@ -479,8 +501,6 @@ struct ConnectBits {
that overrides the host in the URL */
BIT(conn_to_port); /* if set, this connection has a "connect to port"
that overrides the port in the URL (remote port) */
- BIT(proxy); /* if set, this transfer is done through a proxy - any type */
- BIT(user_passwd); /* do we use user+password for this connection? */
BIT(ipv6_ip); /* we communicate with a remote site specified with pure IPv6
IP address */
BIT(ipv6); /* we communicate with a site using an IPv6 address */
@@ -515,9 +535,7 @@ struct ConnectBits {
connection */
BIT(multiplex); /* connection is multiplexed */
BIT(tcp_fastopen); /* use TCP Fast Open */
- BIT(tls_enable_npn); /* TLS NPN extension? */
BIT(tls_enable_alpn); /* TLS ALPN extension? */
- BIT(connect_only);
#ifndef CURL_DISABLE_DOH
BIT(doh);
#endif
@@ -562,7 +580,7 @@ struct Curl_async {
struct Curl_dns_entry *dns;
struct thread_data *tdata;
void *resolver; /* resolver state, if it is used in the URL state -
- ares_channel f.e. */
+ ares_channel e.g. */
int port;
int status; /* if done is TRUE, this is the status from the callback */
BIT(done); /* set TRUE when the lookup is complete */
@@ -583,8 +601,9 @@ enum expect100 {
enum upgrade101 {
UPGR101_INIT, /* default state */
- UPGR101_REQUESTED, /* upgrade requested */
- UPGR101_RECEIVED, /* response received */
+ UPGR101_WS, /* upgrade to WebSockets requested */
+ UPGR101_H2, /* upgrade to HTTP/2 requested */
+ UPGR101_RECEIVED, /* 101 response received */
UPGR101_WORKING /* talking upgraded protocol */
};
@@ -606,23 +625,6 @@ enum doh_slots {
DOH_PROBE_SLOTS
};
-/* one of these for each DoH request */
-struct dnsprobe {
- CURL *easy;
- int dnstype;
- unsigned char dohbuffer[512];
- size_t dohlen;
- struct dynbuf serverdoh;
-};
-
-struct dohdata {
- struct curl_slist *headers;
- struct dnsprobe probe[DOH_PROBE_SLOTS];
- unsigned int pending; /* still outstanding requests */
- int port;
- const char *host;
-};
-
/*
* Request specific data in the easy handle (Curl_easy). Previously,
* these members were on the connectdata struct but since a conn struct may
@@ -706,6 +708,7 @@ struct SingleRequest {
#ifndef CURL_DISABLE_DOH
struct dohdata *doh; /* DoH specific data for this request */
#endif
+ unsigned char setcookies;
BIT(header); /* incoming data has HTTP header */
BIT(content_range); /* set TRUE if Content-Range: was found */
BIT(upload_done); /* set to TRUE when doing chunked transfer-encoding
@@ -803,10 +806,10 @@ struct Curl_handler {
void (*attach)(struct Curl_easy *data, struct connectdata *conn);
int defport; /* Default port. */
- unsigned int protocol; /* See CURLPROTO_* - this needs to be the single
- specific protocol bit */
- unsigned int family; /* single bit for protocol family; basically the
- non-TLS name of the protocol this is */
+ curl_prot_t protocol; /* See CURLPROTO_* - this needs to be the single
+ specific protocol bit */
+ curl_prot_t family; /* single bit for protocol family; basically the
+ non-TLS name of the protocol this is */
unsigned int flags; /* Extra particular characteristics, see PROTOPT_* */
};
@@ -827,7 +830,7 @@ struct Curl_handler {
url query strings (?foo=bar) ! */
#define PROTOPT_CREDSPERREQUEST (1<<7) /* requires login credentials per
request instead of per connection */
-#define PROTOPT_ALPN_NPN (1<<8) /* set ALPN and/or NPN for this */
+#define PROTOPT_ALPN (1<<8) /* set ALPN for this */
#define PROTOPT_STREAM (1<<9) /* a protocol with individual logical streams */
#define PROTOPT_URLOPTIONS (1<<10) /* allow options part in the userinfo field
of the URL */
@@ -863,7 +866,8 @@ struct postponed_data {
struct proxy_info {
struct hostname host;
long port;
- curl_proxytype proxytype; /* what kind of proxy that is in use */
+ unsigned char proxytype; /* curl_proxytype: what kind of proxy that is in
+ use */
char *user; /* proxy user name string, allocated */
char *passwd; /* proxy password string, allocated */
};
@@ -902,6 +906,11 @@ struct connstate {
unsigned char *outp; /* send from this pointer */
};
+#define TRNSPRT_TCP 3
+#define TRNSPRT_UDP 4
+#define TRNSPRT_QUIC 5
+#define TRNSPRT_UNIX 6
+
/*
* The connectdata struct contains all fields and variables that should be
* unique for an entire connection.
@@ -940,14 +949,6 @@ struct connectdata {
struct Curl_addrinfo *ip_addr;
struct Curl_addrinfo *tempaddr[2]; /* for happy eyeballs */
- unsigned int scope_id; /* Scope id for IPv6 */
-
- enum {
- TRNSPRT_TCP = 3,
- TRNSPRT_UDP = 4,
- TRNSPRT_QUIC = 5
- } transport;
-
#ifdef ENABLE_QUIC
struct quicsocket hequic[2]; /* two, for happy eyeballs! */
struct quicsocket *quic;
@@ -962,13 +963,6 @@ struct connectdata {
struct proxy_info socks_proxy;
struct proxy_info http_proxy;
#endif
- int port; /* which port to use locally - to connect to */
- int remote_port; /* the remote port, not the proxy port! */
- int conn_to_port; /* the remote port to connect to. valid only if
- bits.conn_to_port is set */
- unsigned short secondary_port; /* secondary socket remote port to connect to
- (ftp) */
-
/* 'primary_ip' and 'primary_port' get filled with peer's numerical
ip address and port number whenever an outgoing connection is
*attempted* from the primary socket to a remote address. When more
@@ -977,13 +971,11 @@ struct connectdata {
these are updated with data which comes directly from the socket. */
char primary_ip[MAX_IPADR_LEN];
- unsigned char ip_version; /* copied from the Curl_easy at creation time */
-
char *user; /* user name string, allocated */
char *passwd; /* password string, allocated */
char *options; /* options string, allocated */
- char *sasl_authzid; /* authorisation identity string, allocated */
- unsigned char httpversion; /* the HTTP version*10 reported by the server */
+ char *sasl_authzid; /* authorization identity string, allocated */
+ char *oauth_bearer; /* OAUTH2 bearer, allocated */
struct curltime now; /* "current" time */
struct curltime created; /* creation time */
struct curltime lastused; /* when returned to the connection cache */
@@ -1010,8 +1002,6 @@ struct connectdata {
#endif
struct ConnectBits bits; /* various state-flags for this connection */
- /* The field below gets set in Curl_connecthost */
- int num_addr; /* number of addresses to try to connect to */
/* connecttime: when connect() is called on the current IP address. Used to
be able to track when to move on to try next IP - but only when the multi
interface is used. */
@@ -1039,9 +1029,9 @@ struct connectdata {
#ifdef HAVE_GSSAPI
BIT(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;
+ unsigned char command_prot; /* enum protection_level */
+ unsigned char data_prot; /* enum protection_level */
+ unsigned char request_data_prot; /* enum protection_level */
size_t buffer_size;
struct krb5buffer in_buffer;
void *app_data;
@@ -1088,18 +1078,38 @@ struct connectdata {
struct dynbuf trailer;
union {
+#ifndef CURL_DISABLE_FTP
struct ftp_conn ftpc;
+#endif
+#ifndef CURL_DISABLE_HTTP
struct http_conn httpc;
+#endif
+#ifdef USE_SSH
struct ssh_conn sshc;
+#endif
+#ifndef CURL_DISABLE_TFTP
struct tftp_state_data *tftpc;
+#endif
+#ifndef CURL_DISABLE_IMAP
struct imap_conn imapc;
+#endif
+#ifndef CURL_DISABLE_POP3
struct pop3_conn pop3c;
+#endif
+#ifndef CURL_DISABLE_SMTP
struct smtp_conn smtpc;
+#endif
+#ifndef CURL_DISABLE_RTSP
struct rtsp_conn rtspc;
+#endif
+#ifndef CURL_DISABLE_SMB
struct smb_conn smbc;
+#endif
void *rtmp;
struct ldapconninfo *ldapc;
+#ifndef CURL_DISABLE_MQTT
struct mqtt_conn mqtt;
+#endif
} proto;
struct http_connect_state *connect_state; /* for HTTP CONNECT */
@@ -1120,12 +1130,27 @@ struct connectdata {
int localportrange;
int cselect_bits; /* bitmask of socket events */
int waitfor; /* current READ/WRITE bits to wait for */
- int negnpn; /* APLN or NPN TLS negotiated protocol, CURL_HTTP_VERSION* */
-
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
int socks5_gssapi_enctype;
#endif
+ /* The field below gets set in Curl_connecthost */
+ int num_addr; /* number of addresses to try to connect to */
+ int port; /* which port to use locally - to connect to */
+ int remote_port; /* the remote port, not the proxy port! */
+ int conn_to_port; /* the remote port to connect to. valid only if
+ bits.conn_to_port is set */
+#ifdef ENABLE_IPV6
+ unsigned int scope_id; /* Scope id for IPv6 */
+#endif
unsigned short localport;
+ unsigned short secondary_port; /* secondary socket remote port to connect to
+ (ftp) */
+ unsigned char alpn; /* APLN TLS negotiated protocol, a CURL_HTTP_VERSION*
+ value */
+ unsigned char transport; /* one of the TRNSPRT_* defines */
+ unsigned char ip_version; /* copied from the Curl_easy at creation time */
+ unsigned char httpversion; /* the HTTP version*10 reported by the server */
+ unsigned char connect_only;
};
/* The end of connectdata. */
@@ -1158,7 +1183,11 @@ struct PureInfo {
reused, in the connection cache. */
char conn_primary_ip[MAX_IPADR_LEN];
- int conn_primary_port;
+ int conn_primary_port; /* this is the destination port to the connection,
+ which might have been a proxy */
+ int conn_remote_port; /* this is the "remote port", which is the port
+ number of the used URL, independent of proxy or
+ not */
char conn_local_ip[MAX_IPADR_LEN];
int conn_local_port;
const char *conn_scheme;
@@ -1281,6 +1310,7 @@ typedef enum {
EXPIRE_TIMEOUT,
EXPIRE_TOOFAST,
EXPIRE_QUIC,
+ EXPIRE_FTP_ACCEPT,
EXPIRE_LAST /* not an actual timer, used as a marker only */
} expire_id;
@@ -1327,14 +1357,16 @@ struct UrlState {
char *ulbuf; /* allocated upload buffer or NULL */
curl_off_t current_speed; /* the ProgressShow() function sets this,
bytes / second */
- char *first_host; /* host name of the first (not followed) request.
- if set, this should be the host name that we will
- sent authorization to, no else. Used to make Location:
- following not keep sending user+password... This is
- strdup() data.
- */
+
+ /* host name, port number and protocol of the first (not followed) request.
+ if set, this should be the host name that we will sent authorization to,
+ no else. Used to make Location: following not keep sending user+password.
+ This is strdup()ed data. */
+ char *first_host;
+ int first_remote_port;
+ curl_prot_t first_remote_protocol;
+
int retrycount; /* number of retries on a new connection */
- int first_remote_port; /* remote port of the first (not followed) request */
struct Curl_ssl_session *session; /* array of 'max_ssl_sessions' size */
long sessionage; /* number of the most recent session */
struct tempbuf tempwrite[3]; /* BOTH, HEADER, BODY */
@@ -1342,13 +1374,15 @@ struct UrlState {
int os_errno; /* filled in with errno whenever an error occurs */
char *scratch; /* huge buffer[set.buffer_size*2] for upload CRLF replacing */
long followlocation; /* redirect counter */
+ int requests; /* request counter: redirects + authentication retakes */
#ifdef HAVE_SIGNAL
/* storage for the previous bag^H^H^HSIGPIPE signal handler :-) */
void (*prev_signal)(int sig);
#endif
+#ifndef CURL_DISABLE_CRYPTO_AUTH
struct digestdata digest; /* state data for host Digest auth */
struct digestdata proxydigest; /* state data for proxy Digest auth */
-
+#endif
struct auth authhost; /* auth details for host */
struct auth authproxy; /* auth details for proxy */
#ifdef USE_CURL_ASYNC
@@ -1364,7 +1398,7 @@ struct UrlState {
struct Curl_llist timeoutlist; /* list of pending timeouts */
struct time_node expires[EXPIRE_LAST]; /* nodes for each expire type */
- /* a place to store the most recently set FTP entrypath */
+ /* a place to store the most recently set (S)FTP entrypath */
char *most_recent_ftp_entrypath;
unsigned char httpwant; /* when non-zero, a specific HTTP version requested
to be used in the library's request(s) */
@@ -1383,39 +1417,49 @@ struct UrlState {
this syntax. */
curl_off_t resume_from; /* continue [ftp] transfer from here */
+#ifndef CURL_DISABLE_RTSP
/* This RTSP state information survives requests and connections */
long rtsp_next_client_CSeq; /* the session's next client CSeq */
long rtsp_next_server_CSeq; /* the session's next server CSeq */
long rtsp_CSeq_recv; /* most recent CSeq received */
+#endif
curl_off_t infilesize; /* size of file to upload, -1 means unknown.
Copied from set.filesize at start of operation */
-
+#if defined(USE_HTTP2) || defined(USE_HTTP3)
size_t drain; /* Increased when this stream has data to read, even if its
socket is not necessarily is readable. Decreased when
checked. */
+#endif
curl_read_callback fread_func; /* read callback/function */
void *in; /* CURLOPT_READDATA */
-
+#ifdef USE_HTTP2
struct Curl_easy *stream_depends_on;
int stream_weight;
+#endif
CURLU *uh; /* URL handle for the current parsed URL */
struct urlpieces up;
- Curl_HttpReq httpreq; /* what kind of HTTP request (if any) is this */
+ unsigned char httpreq; /* Curl_HttpReq; what kind of HTTP request (if any)
+ is this */
char *url; /* work URL, copied from UserDefined */
char *referer; /* referer string */
+#ifndef CURL_DISABLE_COOKIES
struct curl_slist *cookielist; /* list of cookie files set by
curl_easy_setopt(COOKIEFILE) calls */
+#endif
struct curl_slist *resolve; /* set to point to the set.resolve list when
this should be dealt with in pretransfer */
#ifndef CURL_DISABLE_HTTP
size_t trailers_bytes_sent;
struct dynbuf trailers_buf; /* a buffer containing the compiled trailing
headers */
-#endif
+ struct Curl_llist httphdrs; /* received headers */
+ struct curl_header headerout; /* for external purposes */
+ struct Curl_header_store *prevhead; /* the latest added header */
trailers_state trailers_state; /* whether we are sending trailers
- and what stage are we at */
+ and what stage are we at */
+#endif
#ifdef USE_HYPER
bool hconnect; /* set if a CONNECT request */
CURLcode hresult; /* used to pass return codes back from hyper callbacks */
@@ -1459,7 +1503,6 @@ struct UrlState {
is always set TRUE when curl_easy_perform() is called. */
BIT(authproblem); /* TRUE if there's some problem authenticating */
/* set after initial USER failure, to prevent an authentication loop */
- BIT(ftp_trying_alternative);
BIT(wildcardmatch); /* enable wildcard matching */
BIT(expect100header); /* TRUE if we added Expect: 100-continue */
BIT(disableexpect); /* TRUE if Expect: is disabled due to a previous
@@ -1536,8 +1579,6 @@ enum dupstring {
STRING_SSL_CIPHER_LIST_PROXY, /* list of ciphers to use */
STRING_SSL_CIPHER13_LIST, /* list of TLS 1.3 ciphers to use */
STRING_SSL_CIPHER13_LIST_PROXY, /* list of TLS 1.3 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_USERAGENT, /* User-Agent string */
STRING_SSL_CRLFILE, /* crl file to check certificate */
STRING_SSL_CRLFILE_PROXY, /* crl file to check certificate */
@@ -1620,16 +1661,15 @@ struct UserDefined {
void *out; /* CURLOPT_WRITEDATA */
void *in_set; /* CURLOPT_READDATA */
void *writeheader; /* write the header to this if non-NULL */
- void *rtp_out; /* write RTP to this if non-NULL */
- long use_port; /* which port to use (when not using default) */
+ unsigned short use_port; /* which port to use (when not using default) */
unsigned long httpauth; /* kind of HTTP authentication to use (bitmask) */
unsigned long proxyauth; /* kind of proxy authentication to use (bitmask) */
+#ifndef CURL_DISABLE_PROXY
unsigned long socks5auth;/* kind of SOCKS5 authentication to use (bitmask) */
+#endif
long maxredirs; /* maximum no. of http(s) redirects to follow, set to -1
for infinity */
- int keep_post; /* keep POSTs as POSTs after a 30x request; each
- bit represents a request, from 301 to 303 */
void *postfields; /* if POST, set the fields' values here */
curl_seek_callback seek_func; /* function that seeks the input */
curl_off_t postfieldsize; /* if POST, this might have a size to use instead
@@ -1659,13 +1699,6 @@ struct UserDefined {
void *prereq_userp; /* pre-initial request user data */
void *seek_client; /* pointer to pass to the seek callback */
- /* the 3 curl_conv_callback functions below are used on non-ASCII hosts */
- /* function to convert from the network encoding: */
- curl_conv_callback convfromnetwork;
- /* function to convert to the network encoding: */
- curl_conv_callback convtonetwork;
- /* function to convert from UTF-8 encoding: */
- curl_conv_callback convfromutf8;
#ifndef CURL_DISABLE_HSTS
curl_hstsread_callback hsts_read;
void *hsts_read_userp;
@@ -1674,16 +1707,17 @@ struct UserDefined {
#endif
void *progress_client; /* pointer to pass to the progress callback */
void *ioctl_client; /* pointer to pass to the ioctl callback */
- long timeout; /* in milliseconds, 0 means no timeout */
- long connecttimeout; /* in milliseconds, 0 means no timeout */
- long accepttimeout; /* in milliseconds, 0 means no timeout */
- long happy_eyeballs_timeout; /* in milliseconds, 0 is a valid value */
- long server_response_timeout; /* in milliseconds, 0 means no timeout */
+ unsigned int timeout; /* ms, 0 means no timeout */
+ unsigned int connecttimeout; /* ms, 0 means no timeout */
+ unsigned int happy_eyeballs_timeout; /* ms, 0 is a valid value */
+ unsigned int server_response_timeout; /* ms, 0 means no timeout */
long maxage_conn; /* in seconds, max idle time to allow a connection that
is to be reused */
long maxlifetime_conn; /* in seconds, max time since creation to allow a
connection that is to be reused */
+#ifndef CURL_DISABLE_TFTP
long tftp_blksize; /* in bytes, 0 means use default */
+#endif
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 */
@@ -1703,15 +1737,17 @@ struct UserDefined {
the transfer on source host */
struct curl_slist *source_postquote; /* in 3rd party transfer mode - after
the transfer on source host */
+#ifndef CURL_DISABLE_TELNET
struct curl_slist *telnet_options; /* linked list of telnet options */
+#endif
struct curl_slist *resolve; /* list of names to add/remove from
DNS cache */
struct curl_slist *connect_to; /* list of host:port mappings to override
the hostname and port to connect to */
- curl_TimeCond timecondition; /* kind of time/date comparison */
- curl_proxytype proxytype; /* what kind of proxy that is in use */
time_t timevalue; /* what time to compare with */
- Curl_HttpReq method; /* what kind of HTTP request (if any) is this */
+ unsigned char timecondition; /* kind of time comparison: curl_TimeCond */
+ unsigned char proxytype; /* what kind of proxy: curl_proxytype */
+ unsigned char method; /* what kind of HTTP request: Curl_HttpReq */
unsigned char httpwant; /* when non-zero, a specific HTTP version requested
to be used in the library's request(s) */
struct ssl_config_data ssl; /* user defined SSL stuff */
@@ -1719,8 +1755,8 @@ struct UserDefined {
struct ssl_config_data proxy_ssl; /* user defined SSL stuff for proxy */
#endif
struct ssl_general_config general_ssl; /* general user defined SSL stuff */
- long dns_cache_timeout; /* DNS cache timeout */
- long buffer_size; /* size of receive buffer to use */
+ int dns_cache_timeout; /* DNS cache timeout (seconds) */
+ unsigned int buffer_size; /* size of receive buffer to use */
unsigned int upload_buffer_size; /* size of upload buffer to use,
keep it >= CURL_MAX_WRITE_SIZE */
void *private_data; /* application-private data */
@@ -1729,34 +1765,46 @@ struct UserDefined {
file 0 - whatever, 1 - v2, 2 - v6 */
curl_off_t max_filesize; /* Maximum file size to download */
#ifndef CURL_DISABLE_FTP
- curl_ftpfile ftp_filemethod; /* how to get to a file when FTP is used */
- curl_ftpauth ftpsslauth; /* what AUTH XXX to be attempted */
- curl_ftpccc ftp_ccc; /* FTP CCC options */
+ unsigned char ftp_filemethod; /* how to get to a file: curl_ftpfile */
+ unsigned char ftpsslauth; /* what AUTH XXX to try: curl_ftpauth */
+ unsigned char ftp_ccc; /* FTP CCC options: curl_ftpccc */
+ unsigned int accepttimeout; /* in milliseconds, 0 means no timeout */
#endif
- int ftp_create_missing_dirs; /* 1 - create directories that don't exist
- 2 - the same but also allow MKD to fail once
- */
+ /* Desppie the name ftp_create_missing_dirs is for FTP(S) and SFTP
+ 1 - create directories that don't exist
+ 2 - the same but also allow MKD to fail once
+ */
+ unsigned char ftp_create_missing_dirs;
+#ifdef USE_LIBSSH2
+ curl_sshhostkeycallback ssh_hostkeyfunc; /* hostkey check callback */
+ void *ssh_hostkeyfunc_userp; /* custom pointer to callback */
+#endif
+
curl_sshkeycallback ssh_keyfunc; /* key matching callback */
void *ssh_keyfunc_userp; /* custom pointer to callback */
#ifndef CURL_DISABLE_NETRC
- enum CURL_NETRC_OPTION
- use_netrc; /* defined in include/curl.h */
+ unsigned char use_netrc; /* enum CURL_NETRC_OPTION values */
#endif
curl_usessl use_ssl; /* if AUTH TLS is to be attempted etc, for FTP or
IMAP or POP3 or others! */
- long new_file_perms; /* Permissions to use when creating remote files */
- long new_directory_perms; /* Permissions to use when creating remote dirs */
- long ssh_auth_types; /* allowed SSH auth types */
+ unsigned int new_file_perms; /* when creating remote files */
+ unsigned int new_directory_perms; /* when creating remote dirs */
+ int ssh_auth_types; /* allowed SSH auth types */
char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */
struct curl_blob *blobs[BLOB_LAST];
+#ifdef ENABLE_IPV6
unsigned int scope_id; /* Scope id for IPv6 */
- long allowed_protocols;
- long redir_protocols;
- long mime_options; /* Mime option flags. */
- struct curl_slist *mail_rcpt; /* linked list of mail recipients */
+#endif
+ curl_prot_t allowed_protocols;
+ curl_prot_t redir_protocols;
+ unsigned int mime_options; /* Mime option flags. */
+
+#ifndef CURL_DISABLE_RTSP
+ void *rtp_out; /* write RTP to this if non-NULL */
/* Common RTSP header options */
Curl_RtspReq rtspreq; /* RTSP request type */
- long rtspversion; /* like httpversion, for RTSP */
+#endif
+#ifndef CURL_DISABLE_FTP
curl_chunk_bgn_callback chunk_bgn; /* called before part of transfer
starts */
curl_chunk_end_callback chunk_end; /* called after part transferring
@@ -1764,38 +1812,48 @@ struct UserDefined {
curl_fnmatch_callback fnmatch; /* callback to decide which file corresponds
to pattern (e.g. if WILDCARDMATCH is on) */
void *fnmatch_data;
-
+#endif
long gssapi_delegation; /* GSS-API credential delegation, see the
documentation of CURLOPT_GSSAPI_DELEGATION */
- long tcp_keepidle; /* seconds in idle before sending keepalive probe */
- long tcp_keepintvl; /* seconds between TCP keepalive probes */
+ int tcp_keepidle; /* seconds in idle before sending keepalive probe */
+ int tcp_keepintvl; /* seconds between TCP keepalive probes */
size_t maxconnects; /* Max idle connections in the connection cache */
long expect_100_timeout; /* in milliseconds */
+#ifdef USE_HTTP2
struct Curl_easy *stream_depends_on;
int stream_weight;
struct Curl_http2_dep *stream_dependents;
-
+#endif
curl_resolver_start_callback resolver_start; /* optional callback called
before resolver start */
void *resolver_start_client; /* pointer to pass to resolver start callback */
long upkeep_interval_ms; /* Time between calls for connection upkeep. */
multidone_func fmultidone;
+#ifndef CURL_DISABLE_DOH
struct Curl_easy *dohfor; /* this is a DoH request for that transfer */
+#endif
CURLU *uh; /* URL handle for the current parsed URL */
void *trailer_data; /* pointer to pass to trailer data callback */
curl_trailer_callback trailer_callback; /* trailing data callback */
+ char keep_post; /* keep POSTs as POSTs after a 30x request; each
+ bit represents a request, from 301 to 303 */
+#ifndef CURL_DISABLE_SMTP
+ struct curl_slist *mail_rcpt; /* linked list of mail recipients */
+ BIT(mail_rcpt_allowfails); /* allow RCPT TO command to fail for some
+ recipients */
+#endif
+ unsigned char connect_only; /* make connection/request, then let
+ application use the socket */
BIT(is_fread_set); /* has read callback been set to non-NULL? */
- BIT(is_fwrite_set); /* has write callback been set to non-NULL? */
- BIT(free_referer); /* set TRUE if 'referer' points to a string we
- allocated */
+#ifndef CURL_DISABLE_TFTP
BIT(tftp_no_options); /* do not send TFTP options requests */
+#endif
BIT(sep_headers); /* handle host and proxy headers separately */
BIT(cookiesession); /* new cookie session? */
BIT(crlf); /* convert crlf on ftp upload(?) */
- BIT(strip_path_slash); /* strip off initial slash from path */
BIT(ssh_compression); /* enable SSH compression */
/* Here follows boolean settings that define how to behave during
@@ -1813,6 +1871,7 @@ struct UserDefined {
BIT(ftp_use_pret); /* if PRET is to be used before PASV or not */
BIT(ftp_skip_ip); /* skip the IP address the FTP server passes on to
us */
+ BIT(wildcard_enabled); /* enable wildcard matching */
#endif
BIT(hide_progress); /* don't use the progress meter */
BIT(http_fail_on_error); /* fail on HTTP error codes >= 400 */
@@ -1833,7 +1892,6 @@ struct UserDefined {
BIT(no_signal); /* do not use any signal/alarm handler */
BIT(tcp_nodelay); /* whether to enable TCP_NODELAY or not */
BIT(ignorecl); /* ignore content length */
- BIT(connect_only); /* make connection, let application use the socket */
BIT(http_te_skip); /* pass the raw body data to the user, even when
transfer-encoded (chunked, compressed) */
BIT(http_ce_skip); /* pass the raw body data to the user, even when
@@ -1844,10 +1902,8 @@ struct UserDefined {
BIT(socks5_gssapi_nec); /* Flag to support NEC SOCKS5 server */
#endif
BIT(sasl_ir); /* Enable/disable SASL initial response */
- BIT(wildcard_enabled); /* enable wildcard matching */
BIT(tcp_keepalive); /* use TCP keepalives */
BIT(tcp_fastopen); /* use TCP Fast Open */
- BIT(ssl_enable_npn); /* TLS NPN extension? */
BIT(ssl_enable_alpn);/* TLS ALPN extension? */
BIT(path_as_is); /* allow dotdots? */
BIT(pipewait); /* wait for multiplex status before starting a new
@@ -1867,8 +1923,9 @@ struct UserDefined {
BIT(doh_verifystatus); /* DoH certificate status verification */
#endif
BIT(http09_allowed); /* allow HTTP/0.9 responses */
- BIT(mail_rcpt_allowfails); /* allow RCPT TO command to fail for some
- recipients */
+#ifdef USE_WEBSOCKETS
+ BIT(ws_raw_mode);
+#endif
};
struct Names {
@@ -1930,10 +1987,12 @@ struct Curl_easy {
#endif
struct SingleRequest req; /* Request-specific data */
struct UserDefined set; /* values set by the libcurl user */
+#ifndef CURL_DISABLE_COOKIES
struct CookieInfo *cookies; /* the cookies, read from files and servers.
NOTE that the 'cookie' field in the
UserDefined struct defines if the "engine"
is to be used or not. */
+#endif
#ifndef CURL_DISABLE_HSTS
struct hsts *hsts;
#endif
@@ -1949,11 +2008,6 @@ struct Curl_easy {
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 */
- iconv_t utf8_cd; /* for translating to UTF8 */
-#endif /* CURL_DOES_CONVERSIONS && HAVE_ICONV */
#ifdef USE_HYPER
struct hyptransfer hyp;
#endif
diff --git a/lib/vauth/cleartext.c b/lib/vauth/cleartext.c
index d17e16f10..b82b17146 100644
--- a/lib/vauth/cleartext.c
+++ b/lib/vauth/cleartext.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC4616 PLAIN authentication
* Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
*
diff --git a/lib/vauth/cram.c b/lib/vauth/cram.c
index 9ddb0ac37..475d31b8d 100644
--- a/lib/vauth/cram.c
+++ b/lib/vauth/cram.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC2195 CRAM-MD5 authentication
*
***************************************************************************/
diff --git a/lib/vauth/digest.c b/lib/vauth/digest.c
index d8aac66bd..f945e8b6c 100644
--- a/lib/vauth/digest.c
+++ b/lib/vauth/digest.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC2831 DIGEST-MD5 authentication
* RFC7616 DIGEST-SHA256, DIGEST-SHA512-256 authentication
*
@@ -40,7 +42,6 @@
#include "warnless.h"
#include "strtok.h"
#include "strcase.h"
-#include "non-ascii.h" /* included for Curl_convert_... prototypes */
#include "curl_printf.h"
#include "rand.h"
@@ -48,6 +49,15 @@
#include "curl_memory.h"
#include "memdebug.h"
+#define SESSION_ALGO 1 /* for algos with this bit set */
+
+#define ALGO_MD5 0
+#define ALGO_MD5SESS (ALGO_MD5 | SESSION_ALGO)
+#define ALGO_SHA256 2
+#define ALGO_SHA256SESS (ALGO_SHA256 | SESSION_ALGO)
+#define ALGO_SHA512_256 4
+#define ALGO_SHA512_256SESS (ALGO_SHA512_256 | SESSION_ALGO)
+
#if !defined(USE_WINDOWS_SSPI)
#define DIGEST_QOP_VALUE_AUTH (1 << 0)
#define DIGEST_QOP_VALUE_AUTH_INT (1 << 1)
@@ -56,20 +66,7 @@
#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"
-
-/* 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) \
- do { \
- result = Curl_convert_to_network(a, b, strlen(b)); \
- if(result) { \
- free(b); \
- return result; \
- } \
- } while(0)
-#endif /* !USE_WINDOWS_SSPI */
+#endif
bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
const char **endptr)
@@ -93,44 +90,50 @@ bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
}
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;
+ if(!escape) {
+ switch(*str) {
+ case '\\':
+ if(starts_with_quote) {
+ /* the start of an escaped quote */
+ escape = TRUE;
+ 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 '\"':
- if(!escape && starts_with_quote) {
+ case '\r':
+ case '\n':
/* end of string */
+ if(starts_with_quote)
+ return FALSE; /* No closing quote */
c = 0;
continue;
+
+ case '\"':
+ if(starts_with_quote) {
+ /* end of string */
+ c = 0;
+ continue;
+ }
+ else
+ return FALSE;
+ break;
}
- break;
}
escape = FALSE;
*content++ = *str;
}
+ if(escape)
+ return FALSE; /* No character after backslash */
*content = 0;
*endptr = str;
@@ -379,7 +382,7 @@ CURLcode Curl_auth_create_digest_md5_message(struct Curl_easy *data,
if(!(qop_values & DIGEST_QOP_VALUE_AUTH))
return CURLE_BAD_CONTENT_ENCODING;
- /* Generate 32 random hex chars, 32 bytes + 1 zero termination */
+ /* Generate 32 random hex chars, 32 bytes + 1 null-termination */
result = Curl_rand_hex(data, (unsigned char *)cnonce, sizeof(cnonce));
if(result)
return result;
@@ -518,7 +521,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
char content[DIGEST_MAX_CONTENT_LENGTH];
/* Pass all additional spaces here */
- while(*chlg && ISSPACE(*chlg))
+ while(*chlg && ISBLANK(*chlg))
chlg++;
/* Extract a value=content pair */
@@ -557,6 +560,9 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
token = strtok_r(tmp, ",", &tok_buf);
while(token) {
+ /* Pass additional spaces here */
+ while(*token && ISBLANK(*token))
+ token++;
if(strcasecompare(token, DIGEST_QOP_VALUE_STRING_AUTH)) {
foundAuth = TRUE;
}
@@ -589,17 +595,17 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
return CURLE_OUT_OF_MEMORY;
if(strcasecompare(content, "MD5-sess"))
- digest->algo = CURLDIGESTALGO_MD5SESS;
+ digest->algo = ALGO_MD5SESS;
else if(strcasecompare(content, "MD5"))
- digest->algo = CURLDIGESTALGO_MD5;
+ digest->algo = ALGO_MD5;
else if(strcasecompare(content, "SHA-256"))
- digest->algo = CURLDIGESTALGO_SHA256;
+ digest->algo = ALGO_SHA256;
else if(strcasecompare(content, "SHA-256-SESS"))
- digest->algo = CURLDIGESTALGO_SHA256SESS;
+ digest->algo = ALGO_SHA256SESS;
else if(strcasecompare(content, "SHA-512-256"))
- digest->algo = CURLDIGESTALGO_SHA512_256;
+ digest->algo = ALGO_SHA512_256;
else if(strcasecompare(content, "SHA-512-256-SESS"))
- digest->algo = CURLDIGESTALGO_SHA512_256SESS;
+ digest->algo = ALGO_SHA512_256SESS;
else
return CURLE_BAD_CONTENT_ENCODING;
}
@@ -616,7 +622,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
break; /* We're done here */
/* Pass all additional spaces here */
- while(*chlg && ISSPACE(*chlg))
+ while(*chlg && ISBLANK(*chlg))
chlg++;
/* Allow the list to be comma-separated */
@@ -634,6 +640,10 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
if(!digest->nonce)
return CURLE_BAD_CONTENT_ENCODING;
+ /* "<algo>-sess" protocol versions require "auth" or "auth-int" qop */
+ if(!digest->qop && (digest->algo & SESSION_ALGO))
+ return CURLE_BAD_CONTENT_ENCODING;
+
return CURLE_OK;
}
@@ -678,6 +688,8 @@ static CURLcode auth_create_digest_http_message(
char *cnonce = NULL;
size_t cnonce_sz = 0;
char *userp_quoted;
+ char *realm_quoted;
+ char *nonce_quoted;
char *response = NULL;
char *hashthis = NULL;
char *tmp = NULL;
@@ -692,7 +704,7 @@ static CURLcode auth_create_digest_http_message(
if(result)
return result;
- result = Curl_base64_encode(data, cnoncebuf, strlen(cnoncebuf),
+ result = Curl_base64_encode(cnoncebuf, strlen(cnoncebuf),
&cnonce, &cnonce_sz);
if(result)
return result;
@@ -701,11 +713,10 @@ static CURLcode auth_create_digest_http_message(
}
if(digest->userhash) {
- hashthis = aprintf("%s:%s", userp, digest->realm);
+ hashthis = aprintf("%s:%s", userp, digest->realm ? digest->realm : "");
if(!hashthis)
return CURLE_OUT_OF_MEMORY;
- CURL_OUTPUT_DIGEST_CONV(data, hashthis);
hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
free(hashthis);
convert_to_ascii(hashbuf, (unsigned char *)userh);
@@ -722,24 +733,21 @@ static CURLcode auth_create_digest_http_message(
unq(nonce-value) ":" unq(cnonce-value)
*/
- hashthis = aprintf("%s:%s:%s", userp, digest->realm, passwdp);
+ hashthis = aprintf("%s:%s:%s", userp, digest->realm ? digest->realm : "",
+ passwdp);
if(!hashthis)
return CURLE_OUT_OF_MEMORY;
- CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */
hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
free(hashthis);
convert_to_ascii(hashbuf, ha1);
- if(digest->algo == CURLDIGESTALGO_MD5SESS ||
- digest->algo == CURLDIGESTALGO_SHA256SESS ||
- digest->algo == CURLDIGESTALGO_SHA512_256SESS) {
+ if(digest->algo & SESSION_ALGO) {
/* 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 */
hash(hashbuf, (unsigned char *) tmp, strlen(tmp));
free(tmp);
convert_to_ascii(hashbuf, ha1);
@@ -778,7 +786,6 @@ static CURLcode auth_create_digest_http_message(
if(!hashthis)
return CURLE_OUT_OF_MEMORY;
- CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */
hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
free(hashthis);
convert_to_ascii(hashbuf, ha2);
@@ -794,7 +801,6 @@ static CURLcode auth_create_digest_http_message(
if(!hashthis)
return CURLE_OUT_OF_MEMORY;
- CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */
hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
free(hashthis);
convert_to_ascii(hashbuf, request_digest);
@@ -805,16 +811,33 @@ static CURLcode auth_create_digest_http_message(
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
+ the user will need double quotes and backslashes within it escaped.
+ realm, nonce, and opaque will need backslashes as well as they were
+ de-escaped when copied from request header. 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
characters.
*/
userp_quoted = auth_digest_string_quoted(digest->userhash ? userh : userp);
if(!userp_quoted)
return CURLE_OUT_OF_MEMORY;
+ if(digest->realm)
+ realm_quoted = auth_digest_string_quoted(digest->realm);
+ else {
+ realm_quoted = malloc(1);
+ if(realm_quoted)
+ realm_quoted[0] = 0;
+ }
+ if(!realm_quoted) {
+ free(userp_quoted);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ nonce_quoted = auth_digest_string_quoted(digest->nonce);
+ if(!nonce_quoted) {
+ free(realm_quoted);
+ free(userp_quoted);
+ return CURLE_OUT_OF_MEMORY;
+ }
if(digest->qop) {
response = aprintf("username=\"%s\", "
@@ -826,18 +849,16 @@ static CURLcode auth_create_digest_http_message(
"qop=%s, "
"response=\"%s\"",
userp_quoted,
- digest->realm,
- digest->nonce,
+ realm_quoted,
+ nonce_quoted,
uripath,
digest->cnonce,
digest->nc,
digest->qop,
request_digest);
- if(strcasecompare(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 */
+ /* Increment nonce-count to use another nc value for the next request */
+ digest->nc++;
}
else {
response = aprintf("username=\"%s\", "
@@ -846,20 +867,29 @@ static CURLcode auth_create_digest_http_message(
"uri=\"%s\", "
"response=\"%s\"",
userp_quoted,
- digest->realm,
- digest->nonce,
+ realm_quoted,
+ nonce_quoted,
uripath,
request_digest);
}
+ free(nonce_quoted);
+ free(realm_quoted);
free(userp_quoted);
if(!response)
return CURLE_OUT_OF_MEMORY;
/* Add the optional fields */
if(digest->opaque) {
+ char *opaque_quoted;
/* Append the opaque */
- tmp = aprintf("%s, opaque=\"%s\"", response, digest->opaque);
+ opaque_quoted = auth_digest_string_quoted(digest->opaque);
+ if(!opaque_quoted) {
+ free(response);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ tmp = aprintf("%s, opaque=\"%s\"", response, opaque_quoted);
free(response);
+ free(opaque_quoted);
if(!tmp)
return CURLE_OUT_OF_MEMORY;
@@ -921,28 +951,18 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data,
struct digestdata *digest,
char **outptr, size_t *outlen)
{
- switch(digest->algo) {
- case CURLDIGESTALGO_MD5:
- case CURLDIGESTALGO_MD5SESS:
+ if(digest->algo <= ALGO_MD5SESS)
return auth_create_digest_http_message(data, userp, passwdp,
request, uripath, digest,
outptr, outlen,
auth_digest_md5_to_ascii,
Curl_md5it);
-
- case CURLDIGESTALGO_SHA256:
- case CURLDIGESTALGO_SHA256SESS:
- case CURLDIGESTALGO_SHA512_256:
- case CURLDIGESTALGO_SHA512_256SESS:
- return auth_create_digest_http_message(data, userp, passwdp,
- request, uripath, digest,
- outptr, outlen,
- auth_digest_sha256_to_ascii,
- Curl_sha256it);
-
- default:
- return CURLE_UNSUPPORTED_PROTOCOL;
- }
+ DEBUGASSERT(digest->algo <= ALGO_SHA512_256SESS);
+ return auth_create_digest_http_message(data, userp, passwdp,
+ request, uripath, digest,
+ outptr, outlen,
+ auth_digest_sha256_to_ascii,
+ Curl_sha256it);
}
/*
@@ -965,7 +985,7 @@ void Curl_auth_digest_cleanup(struct digestdata *digest)
Curl_safefree(digest->algorithm);
digest->nc = 0;
- digest->algo = CURLDIGESTALGO_MD5; /* default algorithm */
+ digest->algo = ALGO_MD5; /* default algorithm */
digest->stale = FALSE; /* default means normal, not stale */
digest->userhash = FALSE;
}
diff --git a/lib/vauth/digest.h b/lib/vauth/digest.h
index ee373cd82..d785bdd91 100644
--- a/lib/vauth/digest.h
+++ b/lib/vauth/digest.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <curl/curl.h>
@@ -29,15 +31,6 @@
#define DIGEST_MAX_VALUE_LENGTH 256
#define DIGEST_MAX_CONTENT_LENGTH 1024
-enum {
- CURLDIGESTALGO_MD5,
- CURLDIGESTALGO_MD5SESS,
- CURLDIGESTALGO_SHA256,
- CURLDIGESTALGO_SHA256SESS,
- CURLDIGESTALGO_SHA512_256,
- CURLDIGESTALGO_SHA512_256SESS
-};
-
/* This is used to extract the realm from a challenge message */
bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
const char **endptr);
diff --git a/lib/vauth/digest_sspi.c b/lib/vauth/digest_sspi.c
index 94f8f8c0d..89a9db52c 100644
--- a/lib/vauth/digest_sspi.c
+++ b/lib/vauth/digest_sspi.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2014 - 2016, Steve Holme, <steve_holme@hotmail.com>.
- * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2015 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC2831 DIGEST-MD5 authentication
*
***************************************************************************/
@@ -257,7 +259,7 @@ CURLcode Curl_override_sspi_http_realm(const char *chlg,
char content[DIGEST_MAX_CONTENT_LENGTH];
/* Pass all additional spaces here */
- while(*chlg && ISSPACE(*chlg))
+ while(*chlg && ISBLANK(*chlg))
chlg++;
/* Extract a value=content pair */
@@ -290,7 +292,7 @@ CURLcode Curl_override_sspi_http_realm(const char *chlg,
break; /* We're done here */
/* Pass all additional spaces here */
- while(*chlg && ISSPACE(*chlg))
+ while(*chlg && ISBLANK(*chlg))
chlg++;
/* Allow the list to be comma-separated */
@@ -331,7 +333,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
char value[DIGEST_MAX_VALUE_LENGTH];
char content[DIGEST_MAX_CONTENT_LENGTH];
- while(*p && ISSPACE(*p))
+ while(*p && ISBLANK(*p))
p++;
if(!Curl_auth_digest_get_pair(p, value, content, &p))
@@ -343,7 +345,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
break;
}
- while(*p && ISSPACE(*p))
+ while(*p && ISBLANK(*p))
p++;
if(',' == *p)
@@ -429,8 +431,8 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data,
has changed then delete that context. */
if((userp && !digest->user) || (!userp && digest->user) ||
(passwdp && !digest->passwd) || (!passwdp && digest->passwd) ||
- (userp && digest->user && strcmp(userp, digest->user)) ||
- (passwdp && digest->passwd && strcmp(passwdp, digest->passwd))) {
+ (userp && digest->user && Curl_timestrcmp(userp, digest->user)) ||
+ (passwdp && digest->passwd && Curl_timestrcmp(passwdp, digest->passwd))) {
if(digest->http_context) {
s_pSecFn->DeleteSecurityContext(digest->http_context);
Curl_safefree(digest->http_context);
diff --git a/lib/vauth/gsasl.c b/lib/vauth/gsasl.c
index 40fef53c9..a73c64443 100644
--- a/lib/vauth/gsasl.c
+++ b/lib/vauth/gsasl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Simon Josefsson, <simon@josefsson.org>, et al.
+ * Copyright (C) 2020 - 2022, Simon Josefsson, <simon@josefsson.org>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC5802 SCRAM-SHA-1 authentication
*
***************************************************************************/
@@ -34,7 +36,8 @@
#include <gsasl.h>
-/* The last #include files should be: */
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
diff --git a/lib/vauth/krb5_gssapi.c b/lib/vauth/krb5_gssapi.c
index 67d43bd56..bac78049d 100644
--- a/lib/vauth/krb5_gssapi.c
+++ b/lib/vauth/krb5_gssapi.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2014 - 2019, Steve Holme, <steve_holme@hotmail.com>.
- * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2015 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
*
***************************************************************************/
diff --git a/lib/vauth/krb5_sspi.c b/lib/vauth/krb5_sspi.c
index c652fd736..895b4a193 100644
--- a/lib/vauth/krb5_sspi.c
+++ b/lib/vauth/krb5_sspi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2014 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
*
***************************************************************************/
diff --git a/lib/vauth/ntlm.c b/lib/vauth/ntlm.c
index 04f6590ac..c10fa6caa 100644
--- a/lib/vauth/ntlm.c
+++ b/lib/vauth/ntlm.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -27,14 +29,13 @@
/*
* NTLM details:
*
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
* https://www.innovation.ch/java/ntlm.html
*/
#define DEBUG_ME 0
#include "urldata.h"
-#include "non-ascii.h"
#include "sendf.h"
#include "curl_ntlm_core.h"
#include "curl_gethostname.h"
@@ -63,6 +64,10 @@
/* "NTLMSSP" signature is always in ASCII regardless of the platform */
#define NTLMSSP_SIGNATURE "\x4e\x54\x4c\x4d\x53\x53\x50"
+/* The fixed host name we provide, in order to not leak our real local host
+ name. Copy the name used by Firefox. */
+#define NTLM_HOSTNAME "WORKSTATION"
+
#if DEBUG_ME
# define DEBUG_OUT(x) x
static void ntlm_print_flags(FILE *handle, unsigned long flags)
@@ -383,12 +388,6 @@ CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
/* Clean up any former leftovers and initialise to defaults */
Curl_auth_cleanup_ntlm(ntlm);
-#if defined(USE_NTRESPONSES) && \
- (defined(USE_NTLM2SESSION) || defined(USE_NTLM_V2))
-#define NTLM2FLAG NTLMFLAG_NEGOTIATE_NTLM2_KEY
-#else
-#define NTLM2FLAG 0
-#endif
ntlmbuf = aprintf(NTLMSSP_SIGNATURE "%c"
"\x01%c%c%c" /* 32-bit type = 1 */
"%c%c%c%c" /* 32-bit NTLM flag field */
@@ -408,7 +407,7 @@ CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
LONGQUARTET(NTLMFLAG_NEGOTIATE_OEM |
NTLMFLAG_REQUEST_TARGET |
NTLMFLAG_NEGOTIATE_NTLM_KEY |
- NTLM2FLAG |
+ NTLMFLAG_NEGOTIATE_NTLM2_KEY |
NTLMFLAG_NEGOTIATE_ALWAYS_SIGN),
SHORTPAIR(domlen),
SHORTPAIR(domlen),
@@ -433,18 +432,18 @@ CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
LONGQUARTET(NTLMFLAG_NEGOTIATE_OEM |
NTLMFLAG_REQUEST_TARGET |
NTLMFLAG_NEGOTIATE_NTLM_KEY |
- NTLM2FLAG |
+ NTLMFLAG_NEGOTIATE_NTLM2_KEY |
NTLMFLAG_NEGOTIATE_ALWAYS_SIGN),
NTLMFLAG_NEGOTIATE_OEM |
NTLMFLAG_REQUEST_TARGET |
NTLMFLAG_NEGOTIATE_NTLM_KEY |
- NTLM2FLAG |
+ NTLMFLAG_NEGOTIATE_NTLM2_KEY |
NTLMFLAG_NEGOTIATE_ALWAYS_SIGN);
ntlm_print_flags(stderr,
NTLMFLAG_NEGOTIATE_OEM |
NTLMFLAG_REQUEST_TARGET |
NTLMFLAG_NEGOTIATE_NTLM_KEY |
- NTLM2FLAG |
+ NTLMFLAG_NEGOTIATE_NTLM2_KEY |
NTLMFLAG_NEGOTIATE_ALWAYS_SIGN);
fprintf(stderr, "\n****\n");
});
@@ -498,13 +497,11 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
unsigned char ntlmbuf[NTLM_BUFSIZE];
int lmrespoff;
unsigned char lmresp[24]; /* fixed-size */
-#ifdef USE_NTRESPONSES
int ntrespoff;
unsigned int ntresplen = 24;
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] = "";
const char *user;
@@ -530,22 +527,22 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
userlen = strlen(user);
+#ifndef NTLM_HOSTNAME
/* Get the machine's un-qualified host name as NTLM doesn't like the fully
qualified domain name */
if(Curl_gethostname(host, sizeof(host))) {
- infof(data, "gethostname() failed, continuing without!");
+ infof(data, "gethostname() failed, continuing without");
hostlen = 0;
}
else {
hostlen = strlen(host);
}
+#else
+ (void)msnprintf(host, sizeof(host), "%s", NTLM_HOSTNAME);
+ hostlen = sizeof(NTLM_HOSTNAME)-1;
+#endif
-#if defined(USE_NTRESPONSES) && \
- (defined(USE_NTLM2SESSION) || defined(USE_NTLM_V2))
- /* We don't support NTLM2 or extended security if we don't have
- USE_NTRESPONSES */
if(ntlm->flags & NTLMFLAG_NEGOTIATE_NTLM2_KEY) {
-# if defined(USE_NTLM_V2)
unsigned char ntbuffer[0x18];
unsigned char entropy[8];
unsigned char ntlmv2hash[0x18];
@@ -558,7 +555,7 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
if(result)
return result;
- result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+ result = Curl_ntlm_core_mk_nt_hash(passwdp, ntbuffer);
if(result)
return result;
@@ -580,67 +577,21 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
return result;
ptr_ntresp = ntlmv2resp;
-# else /* defined(USE_NTLM_V2) */
- unsigned char ntbuffer[0x18];
- unsigned char tmp[0x18];
- unsigned char md5sum[MD5_DIGEST_LEN];
- unsigned char entropy[8];
-
- /* NTLM version 1 with extended security. */
-
- /* Need to create 8 bytes random data */
- result = Curl_rand(data, entropy, 8);
- if(result)
- return result;
-
- /* 8 bytes random data as challenge in lmresp */
- memcpy(lmresp, entropy, 8);
-
- /* Pad with zeros */
- memset(lmresp + 8, 0, 0x10);
-
- /* Fill tmp with challenge(nonce?) + entropy */
- memcpy(tmp, &ntlm->nonce[0], 8);
- memcpy(tmp + 8, entropy, 8);
-
- result = Curl_md5it(md5sum, tmp, 16);
- if(result)
- return result;
-
- /* 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 */
- 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 */
- /* NTLM v2 session security is a misnomer because it is not NTLM v2.
- It is NTLM v1 using the extended session security that is also
- in NTLM v2 */
-# endif /* defined(USE_NTLM_V2) */
}
- else
-#endif
- {
+ else {
-#ifdef USE_NTRESPONSES
unsigned char ntbuffer[0x18];
-#endif
unsigned char lmbuffer[0x18];
/* NTLM version 1 */
-#ifdef USE_NTRESPONSES
- result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+ result = Curl_ntlm_core_mk_nt_hash(passwdp, ntbuffer);
if(result)
return result;
Curl_ntlm_core_lm_resp(ntbuffer, &ntlm->nonce[0], ntresp);
-#endif
- result = Curl_ntlm_core_mk_lm_hash(data, passwdp, lmbuffer);
+ result = Curl_ntlm_core_mk_lm_hash(passwdp, lmbuffer);
if(result)
return result;
@@ -649,7 +600,7 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
/* A safer but less compatible alternative is:
* Curl_ntlm_core_lm_resp(ntbuffer, &ntlm->nonce[0], lmresp);
- * See https://davenport.sourceforge.io/ntlm.html#ntlmVersion2 */
+ * See https://davenport.sourceforge.net/ntlm.html#ntlmVersion2 */
}
if(unicode) {
@@ -659,12 +610,8 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
}
lmrespoff = 64; /* size of the message header */
-#ifdef USE_NTRESPONSES
ntrespoff = lmrespoff + 0x18;
domoff = ntrespoff + ntresplen;
-#else
- domoff = lmrespoff + 0x18;
-#endif
useroff = domoff + domlen;
hostoff = useroff + userlen;
@@ -711,7 +658,7 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
/* LanManager response */
/* NT response */
- 0, /* zero termination */
+ 0, /* null-termination */
0, 0, 0, /* type-3 long, the 24 upper bits */
SHORTPAIR(0x18), /* LanManager response length, twice */
@@ -719,17 +666,11 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
SHORTPAIR(lmrespoff),
0x0, 0x0,
-#ifdef USE_NTRESPONSES
SHORTPAIR(ntresplen), /* NT-response length, twice */
SHORTPAIR(ntresplen),
SHORTPAIR(ntrespoff),
0x0, 0x0,
-#else
- 0x0, 0x0,
- 0x0, 0x0,
- 0x0, 0x0,
- 0x0, 0x0,
-#endif
+
SHORTPAIR(domlen),
SHORTPAIR(domlen),
SHORTPAIR(domoff),
@@ -766,7 +707,6 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
ntlm_print_hex(stderr, (char *)&ntlmbuf[lmrespoff], 0x18);
});
-#ifdef USE_NTRESPONSES
/* ntresplen + size should not be risking an integer overflow here */
if(ntresplen + size > sizeof(ntlmbuf)) {
failf(data, "incoming NTLM message too big");
@@ -783,8 +723,6 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
free(ntlmv2resp);/* Free the dynamic buffer allocated for NTLMv2 */
-#endif
-
DEBUG_OUT({
fprintf(stderr, "\n flags=0x%02.2x%02.2x%02.2x%02.2x 0x%08.8x ",
LONGQUARTET(ntlm->flags), ntlm->flags);
@@ -823,12 +761,6 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
size += hostlen;
- /* Convert domain, user, and host to ASCII but leave the rest as-is */
- result = Curl_convert_to_network(data, (char *)&ntlmbuf[domoff],
- size - domoff);
- if(result)
- return CURLE_CONV_FAILED;
-
/* Return the binary blob. */
result = Curl_bufref_memdup(out, ntlmbuf, size);
diff --git a/lib/vauth/ntlm.h b/lib/vauth/ntlm.h
index 8ec23ad4f..4dfda5545 100644
--- a/lib/vauth/ntlm.h
+++ b/lib/vauth/ntlm.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -32,7 +34,8 @@
/* Stuff only required for curl_ntlm_msgs.c */
#ifdef BUILDING_CURL_NTLM_MSGS_C
-/* Flag bits definitions based on https://davenport.sourceforge.io/ntlm.html */
+/* Flag bits definitions based on
+ https://davenport.sourceforge.net/ntlm.html */
#define NTLMFLAG_NEGOTIATE_UNICODE (1<<0)
/* Indicates that Unicode strings are supported for use in security buffer
diff --git a/lib/vauth/ntlm_sspi.c b/lib/vauth/ntlm_sspi.c
index 3e39dad31..193576aca 100644
--- a/lib/vauth/ntlm_sspi.c
+++ b/lib/vauth/ntlm_sspi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vauth/oauth2.c b/lib/vauth/oauth2.c
index a5f16a0bf..1604b303e 100644
--- a/lib/vauth/oauth2.c
+++ b/lib/vauth/oauth2.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC6749 OAuth 2.0 Authorization Framework
*
***************************************************************************/
diff --git a/lib/vauth/spnego_gssapi.c b/lib/vauth/spnego_gssapi.c
index 8e8932bd0..25dff967d 100644
--- a/lib/vauth/spnego_gssapi.c
+++ b/lib/vauth/spnego_gssapi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC4178 Simple and Protected GSS-API Negotiation Mechanism
*
***************************************************************************/
@@ -204,16 +206,14 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
*
* Returns CURLE_OK on success.
*/
-CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data,
- struct negotiatedata *nego,
+CURLcode Curl_auth_create_spnego_message(struct negotiatedata *nego,
char **outptr, size_t *outlen)
{
CURLcode result;
OM_uint32 minor_status;
/* Base64 encode the already generated response */
- result = Curl_base64_encode(data,
- nego->output_token.value,
+ result = Curl_base64_encode(nego->output_token.value,
nego->output_token.length,
outptr, outlen);
diff --git a/lib/vauth/spnego_sspi.c b/lib/vauth/spnego_sspi.c
index 68bb17da5..d845caca6 100644
--- a/lib/vauth/spnego_sspi.c
+++ b/lib/vauth/spnego_sspi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
* RFC4178 Simple and Protected GSS-API Negotiation Mechanism
*
***************************************************************************/
@@ -301,27 +303,19 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
*
* Returns CURLE_OK on success.
*/
-CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data,
- struct negotiatedata *nego,
+CURLcode Curl_auth_create_spnego_message(struct negotiatedata *nego,
char **outptr, size_t *outlen)
{
- CURLcode result;
-
/* Base64 encode the already generated response */
- result = Curl_base64_encode(data,
- (const char *) nego->output_token,
- nego->output_token_length,
- outptr, outlen);
-
- if(result)
- return result;
-
- if(!*outptr || !*outlen) {
+ CURLcode result = Curl_base64_encode((const char *) nego->output_token,
+ nego->output_token_length, outptr,
+ outlen);
+ if(!result && (!*outptr || !*outlen)) {
free(*outptr);
- return CURLE_REMOTE_ACCESS_DENIED;
+ result = CURLE_REMOTE_ACCESS_DENIED;
}
- return CURLE_OK;
+ return result;
}
/*
diff --git a/lib/vauth/vauth.c b/lib/vauth/vauth.c
index 3624fb0c4..58fe05139 100644
--- a/lib/vauth/vauth.c
+++ b/lib/vauth/vauth.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2014 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -25,6 +27,8 @@
#include <curl/curl.h>
#include "vauth.h"
+#include "urldata.h"
+#include "strcase.h"
#include "curl_multibyte.h"
#include "curl_printf.h"
@@ -142,3 +146,18 @@ bool Curl_auth_user_contains_domain(const char *user)
return valid;
}
+
+/*
+ * Curl_auth_ollowed_to_host() tells if authentication, cookies or other
+ * "sensitive data" can (still) be sent to this host.
+ */
+bool Curl_auth_allowed_to_host(struct Curl_easy *data)
+{
+ struct connectdata *conn = data->conn;
+ return (!data->state.this_is_a_follow ||
+ data->set.allow_auth_to_other_hosts ||
+ (data->state.first_host &&
+ strcasecompare(data->state.first_host, conn->host.name) &&
+ (data->state.first_remote_port == conn->remote_port) &&
+ (data->state.first_remote_protocol == conn->handler->protocol)));
+}
diff --git a/lib/vauth/vauth.h b/lib/vauth/vauth.h
index 47a7c0bc8..af27f01df 100644
--- a/lib/vauth/vauth.h
+++ b/lib/vauth/vauth.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2014 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2022, 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
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <curl/curl.h>
@@ -52,6 +54,12 @@ struct gsasldata;
#define GSS_ERROR(status) ((status) & 0x80000000)
#endif
+/*
+ * Curl_auth_allowed_to_host() tells if authentication, cookies or other
+ * "sensitive data" can (still) be sent to this host.
+ */
+bool Curl_auth_allowed_to_host(struct Curl_easy *data);
+
/* This is used to build a SPN string */
#if !defined(USE_WINDOWS_SSPI)
char *Curl_auth_build_spn(const char *service, const char *host,
@@ -219,11 +227,10 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
/* This is used to generate a base64 encoded SPNEGO (Negotiate) response
message */
-CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data,
- struct negotiatedata *nego,
+CURLcode Curl_auth_create_spnego_message(struct negotiatedata *nego,
char **outptr, size_t *outlen);
-/* This is used to clean up the SPNEGO specifiec data */
+/* This is used to clean up the SPNEGO specific data */
void Curl_auth_cleanup_spnego(struct negotiatedata *nego);
#endif /* USE_SPNEGO */
diff --git a/lib/version.c b/lib/version.c
index c84ef85fb..f71f49e09 100644
--- a/lib/version.c
+++ b/lib/version.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -29,6 +31,7 @@
#include "vssh/ssh.h"
#include "quic.h"
#include "curl_printf.h"
+#include "easy_lock.h"
#ifdef USE_ARES
# if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \
@@ -46,15 +49,11 @@
#include <libpsl.h>
#endif
-#if defined(HAVE_ICONV) && defined(CURL_DOES_CONVERSIONS)
-#include <iconv.h>
-#endif
-
#ifdef USE_LIBRTMP
#include <librtmp/rtmp.h>
#endif
-#ifdef HAVE_ZLIB_H
+#ifdef HAVE_LIBZ
#include <zlib.h>
#endif
@@ -106,7 +105,7 @@ static void zstd_version(char *buf, size_t bufsz)
* zeros in the data.
*/
-#define VERSION_PARTS 17 /* number of substrings we can concatenate */
+#define VERSION_PARTS 16 /* number of substrings we can concatenate */
char *curl_version(void)
{
@@ -135,9 +134,6 @@ char *curl_version(void)
#ifdef USE_LIBPSL
char psl_version[40];
#endif
-#if defined(HAVE_ICONV) && defined(CURL_DOES_CONVERSIONS)
- char iconv_version[40]="iconv";
-#endif
#ifdef USE_SSH
char ssh_version[40];
#endif
@@ -206,15 +202,7 @@ char *curl_version(void)
msnprintf(psl_version, sizeof(psl_version), "libpsl/%s", psl_get_version());
src[i++] = psl_version;
#endif
-#if defined(HAVE_ICONV) && defined(CURL_DOES_CONVERSIONS)
-#ifdef _LIBICONV_VERSION
- msnprintf(iconv_version, sizeof(iconv_version), "iconv/%d.%d",
- _LIBICONV_VERSION >> 8, _LIBICONV_VERSION & 255);
-#else
- /* version unknown, let the default stand */
-#endif /* _LIBICONV_VERSION */
- src[i++] = iconv_version;
-#endif
+
#ifdef USE_SSH
Curl_ssh_version(ssh_version, sizeof(ssh_version));
src[i++] = ssh_version;
@@ -350,6 +338,11 @@ static const char * const protocols[] = {
#endif
#ifdef USE_LIBRTMP
"rtmp",
+ "rtmpe",
+ "rtmps",
+ "rtmpt",
+ "rtmpte",
+ "rtmpts",
#endif
#ifndef CURL_DISABLE_RTSP
"rtsp",
@@ -379,6 +372,12 @@ static const char * const protocols[] = {
#ifndef CURL_DISABLE_TFTP
"tftp",
#endif
+#ifdef USE_WEBSOCKETS
+ "ws",
+#endif
+#if defined(USE_SSL) && defined(USE_WEBSOCKETS)
+ "wss",
+#endif
NULL
};
@@ -433,9 +432,6 @@ static curl_version_info_data version_info = {
#if defined(WIN32) && defined(UNICODE) && defined(_UNICODE)
| CURL_VERSION_UNICODE
#endif
-#if defined(CURL_DOES_CONVERSIONS)
- | CURL_VERSION_CONV
-#endif
#if defined(USE_TLS_SRP)
| CURL_VERSION_TLSAUTH_SRP
#endif
@@ -469,6 +465,9 @@ static curl_version_info_data version_info = {
#if defined(USE_GSASL)
| CURL_VERSION_GSASL
#endif
+#if defined(GLOBAL_INIT_IS_THREADSAFE)
+ | CURL_VERSION_THREADSAFE
+#endif
,
NULL, /* ssl_version */
0, /* ssl_version_num, this is kept at zero */
@@ -551,15 +550,6 @@ curl_version_info_data *curl_version_info(CURLversion stamp)
version_info.features |= CURL_VERSION_IDN;
#endif
-#if defined(HAVE_ICONV) && defined(CURL_DOES_CONVERSIONS)
-#ifdef _LIBICONV_VERSION
- version_info.iconv_ver_num = _LIBICONV_VERSION;
-#else
- /* version unknown */
- version_info.iconv_ver_num = -1;
-#endif /* _LIBICONV_VERSION */
-#endif
-
#if defined(USE_SSH)
Curl_ssh_version(ssh_buffer, sizeof(ssh_buffer));
version_info.libssh_version = ssh_buffer;
diff --git a/lib/version_win32.c b/lib/version_win32.c
index 79a2aa6ab..e8f14f9df 100644
--- a/lib/version_win32.c
+++ b/lib/version_win32.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2016 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2016 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -76,6 +78,8 @@ bool curlx_verify_windows_version(const unsigned int majorVersion,
bool matched = FALSE;
#if defined(CURL_WINDOWS_APP)
+ (void)buildVersion;
+
/* We have no way to determine the Windows version from Windows apps,
so let's assume we're running on the target Windows version. */
const WORD fullVersion = MAKEWORD(minorVersion, majorVersion);
diff --git a/lib/version_win32.h b/lib/version_win32.h
index 38af87fa0..7a9a6a14f 100644
--- a/lib/version_win32.h
+++ b/lib/version_win32.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2016 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2016 - 2022, 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
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vquic/msh3.c b/lib/vquic/msh3.c
new file mode 100644
index 000000000..c3e58e726
--- /dev/null
+++ b/lib/vquic/msh3.c
@@ -0,0 +1,527 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef USE_MSH3
+
+#include "urldata.h"
+#include "timeval.h"
+#include "multiif.h"
+#include "sendf.h"
+#include "connect.h"
+#include "h2h3.h"
+#include "msh3.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+/* #define DEBUG_HTTP3 1 */
+#ifdef DEBUG_HTTP3
+#define H3BUGF(x) x
+#else
+#define H3BUGF(x) do { } while(0)
+#endif
+
+#define MSH3_REQ_INIT_BUF_LEN 8192
+
+static CURLcode msh3_do_it(struct Curl_easy *data, bool *done);
+static int msh3_getsock(struct Curl_easy *data,
+ struct connectdata *conn, curl_socket_t *socks);
+static CURLcode msh3_disconnect(struct Curl_easy *data,
+ struct connectdata *conn,
+ bool dead_connection);
+static unsigned int msh3_conncheck(struct Curl_easy *data,
+ struct connectdata *conn,
+ unsigned int checks_to_perform);
+static Curl_recv msh3_stream_recv;
+static Curl_send msh3_stream_send;
+static void MSH3_CALL msh3_header_received(MSH3_REQUEST *Request,
+ void *IfContext,
+ const MSH3_HEADER *Header);
+static void MSH3_CALL msh3_data_received(MSH3_REQUEST *Request,
+ void *IfContext, uint32_t Length,
+ const uint8_t *Data);
+static void MSH3_CALL msh3_complete(MSH3_REQUEST *Request, void *IfContext,
+ bool Aborted, uint64_t AbortError);
+static void MSH3_CALL msh3_shutdown(MSH3_REQUEST *Request, void *IfContext);
+
+static const struct Curl_handler msh3_curl_handler_http3 = {
+ "HTTPS", /* scheme */
+ ZERO_NULL, /* setup_connection */
+ msh3_do_it, /* do_it */
+ Curl_http_done, /* done */
+ ZERO_NULL, /* do_more */
+ ZERO_NULL, /* connect_it */
+ ZERO_NULL, /* connecting */
+ ZERO_NULL, /* doing */
+ msh3_getsock, /* proto_getsock */
+ msh3_getsock, /* doing_getsock */
+ ZERO_NULL, /* domore_getsock */
+ msh3_getsock, /* perform_getsock */
+ msh3_disconnect, /* disconnect */
+ ZERO_NULL, /* readwrite */
+ msh3_conncheck, /* connection_check */
+ ZERO_NULL, /* attach connection */
+ PORT_HTTP, /* defport */
+ CURLPROTO_HTTPS, /* protocol */
+ CURLPROTO_HTTP, /* family */
+ PROTOPT_SSL | PROTOPT_STREAM /* flags */
+};
+
+static const MSH3_REQUEST_IF msh3_request_if = {
+ msh3_header_received,
+ msh3_data_received,
+ msh3_complete,
+ msh3_shutdown
+};
+
+void Curl_quic_ver(char *p, size_t len)
+{
+ uint32_t v[4];
+ MsH3Version(v);
+ (void)msnprintf(p, len, "msh3/%d.%d.%d.%d", v[0], v[1], v[2], v[3]);
+}
+
+CURLcode Curl_quic_connect(struct Curl_easy *data,
+ struct connectdata *conn,
+ curl_socket_t sockfd,
+ int sockindex,
+ const struct sockaddr *addr,
+ socklen_t addrlen)
+{
+ struct quicsocket *qs = &conn->hequic[sockindex];
+ bool insecure = !conn->ssl_config.verifypeer;
+ memset(qs, 0, sizeof(*qs));
+
+ (void)sockfd;
+ (void)addr; /* TODO - Pass address along */
+ (void)addrlen;
+
+ H3BUGF(infof(data, "creating new api/connection"));
+
+ qs->api = MsH3ApiOpen();
+ if(!qs->api) {
+ failf(data, "can't create msh3 api");
+ return CURLE_FAILED_INIT;
+ }
+
+ qs->conn = MsH3ConnectionOpen(qs->api,
+ conn->host.name,
+ (uint16_t)conn->remote_port,
+ insecure);
+ if(!qs->conn) {
+ failf(data, "can't create msh3 connection");
+ if(qs->api) {
+ MsH3ApiClose(qs->api);
+ }
+ return CURLE_FAILED_INIT;
+ }
+
+ return CURLE_OK;
+}
+
+CURLcode Curl_quic_is_connected(struct Curl_easy *data,
+ struct connectdata *conn,
+ int sockindex,
+ bool *connected)
+{
+ struct quicsocket *qs = &conn->hequic[sockindex];
+ MSH3_CONNECTION_STATE state;
+
+ state = MsH3ConnectionGetState(qs->conn, false);
+ if(state == MSH3_CONN_HANDSHAKE_FAILED || state == MSH3_CONN_DISCONNECTED) {
+ failf(data, "failed to connect, state=%u", (uint32_t)state);
+ return CURLE_COULDNT_CONNECT;
+ }
+
+ if(state == MSH3_CONN_CONNECTED) {
+ H3BUGF(infof(data, "connection connected"));
+ *connected = true;
+ conn->quic = qs;
+ conn->recv[sockindex] = msh3_stream_recv;
+ conn->send[sockindex] = msh3_stream_send;
+ conn->handler = &msh3_curl_handler_http3;
+ conn->bits.multiplex = TRUE; /* at least potentially multiplexed */
+ conn->httpversion = 30;
+ conn->bundle->multiuse = BUNDLE_MULTIPLEX;
+ /* TODO - Clean up other happy-eyeballs connection(s)? */
+ }
+
+ return CURLE_OK;
+}
+
+static int msh3_getsock(struct Curl_easy *data,
+ struct connectdata *conn, curl_socket_t *socks)
+{
+ struct HTTP *stream = data->req.p.http;
+ int bitmap = GETSOCK_BLANK;
+
+ socks[0] = conn->sock[FIRSTSOCKET];
+
+ if(stream->recv_error) {
+ bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
+ data->state.drain++;
+ }
+ else if(stream->recv_header_len || stream->recv_data_len) {
+ bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
+ data->state.drain++;
+ }
+
+ H3BUGF(infof(data, "msh3_getsock %u", (uint32_t)data->state.drain));
+
+ return bitmap;
+}
+
+static CURLcode msh3_do_it(struct Curl_easy *data, bool *done)
+{
+ struct HTTP *stream = data->req.p.http;
+ H3BUGF(infof(data, "msh3_do_it"));
+ stream->recv_buf = malloc(MSH3_REQ_INIT_BUF_LEN);
+ if(!stream->recv_buf) {
+ return CURLE_OUT_OF_MEMORY;
+ }
+ stream->req = ZERO_NULL;
+ msh3_lock_initialize(&stream->recv_lock);
+ stream->recv_buf_alloc = MSH3_REQ_INIT_BUF_LEN;
+ stream->recv_header_len = 0;
+ stream->recv_header_complete = false;
+ stream->recv_data_len = 0;
+ stream->recv_data_complete = false;
+ stream->recv_error = CURLE_OK;
+ return Curl_http(data, done);
+}
+
+static unsigned int msh3_conncheck(struct Curl_easy *data,
+ struct connectdata *conn,
+ unsigned int checks_to_perform)
+{
+ (void)data;
+ (void)conn;
+ (void)checks_to_perform;
+ H3BUGF(infof(data, "msh3_conncheck"));
+ return CONNRESULT_NONE;
+}
+
+static void disconnect(struct quicsocket *qs)
+{
+ if(qs->conn) {
+ MsH3ConnectionClose(qs->conn);
+ qs->conn = ZERO_NULL;
+ }
+ if(qs->api) {
+ MsH3ApiClose(qs->api);
+ qs->api = ZERO_NULL;
+ }
+}
+
+static CURLcode msh3_disconnect(struct Curl_easy *data,
+ struct connectdata *conn, bool dead_connection)
+{
+ (void)data;
+ (void)dead_connection;
+ H3BUGF(infof(data, "disconnecting (msh3)"));
+ disconnect(conn->quic);
+ return CURLE_OK;
+}
+
+void Curl_quic_disconnect(struct Curl_easy *data, struct connectdata *conn,
+ int tempindex)
+{
+ (void)data;
+ if(conn->transport == TRNSPRT_QUIC) {
+ H3BUGF(infof(data, "disconnecting QUIC index %u", tempindex));
+ disconnect(&conn->hequic[tempindex]);
+ }
+}
+
+/* Requires stream->recv_lock to be held */
+static bool msh3request_ensure_room(struct HTTP *stream, size_t len)
+{
+ uint8_t *new_recv_buf;
+ const size_t cur_recv_len = stream->recv_header_len + stream->recv_data_len;
+ if(cur_recv_len + len > stream->recv_buf_alloc) {
+ size_t new_recv_buf_alloc_len = stream->recv_buf_alloc;
+ do {
+ new_recv_buf_alloc_len <<= 1; /* TODO - handle overflow */
+ } while(cur_recv_len + len > new_recv_buf_alloc_len);
+ new_recv_buf = malloc(new_recv_buf_alloc_len);
+ if(!new_recv_buf) {
+ return false;
+ }
+ if(cur_recv_len) {
+ memcpy(new_recv_buf, stream->recv_buf, cur_recv_len);
+ }
+ stream->recv_buf_alloc = new_recv_buf_alloc_len;
+ free(stream->recv_buf);
+ stream->recv_buf = new_recv_buf;
+ }
+ return true;
+}
+
+static void MSH3_CALL msh3_header_received(MSH3_REQUEST *Request,
+ void *IfContext,
+ const MSH3_HEADER *Header)
+{
+ struct HTTP *stream = IfContext;
+ size_t total_len;
+ (void)Request;
+
+ if(stream->recv_header_complete) {
+ H3BUGF(printf("* ignoring header after data\n"));
+ return;
+ }
+
+ msh3_lock_acquire(&stream->recv_lock);
+
+ if((Header->NameLength == 7) &&
+ !strncmp(H2H3_PSEUDO_STATUS, (char *)Header->Name, 7)) {
+ total_len = 9 + Header->ValueLength;
+ if(!msh3request_ensure_room(stream, total_len)) {
+ /* TODO - handle error */
+ goto release_lock;
+ }
+ msnprintf((char *)stream->recv_buf + stream->recv_header_len,
+ stream->recv_buf_alloc - stream->recv_header_len,
+ "HTTP/3 %.*s\n", (int)Header->ValueLength, Header->Value);
+ }
+ else {
+ total_len = Header->NameLength + 4 + Header->ValueLength;
+ if(!msh3request_ensure_room(stream, total_len)) {
+ /* TODO - handle error */
+ goto release_lock;
+ }
+ msnprintf((char *)stream->recv_buf + stream->recv_header_len,
+ stream->recv_buf_alloc - stream->recv_header_len,
+ "%.*s: %.*s\n",
+ (int)Header->NameLength, Header->Name,
+ (int)Header->ValueLength, Header->Value);
+ }
+
+ stream->recv_header_len += total_len - 1; /* don't include null-terminator */
+
+release_lock:
+ msh3_lock_release(&stream->recv_lock);
+}
+
+static void MSH3_CALL msh3_data_received(MSH3_REQUEST *Request,
+ void *IfContext, uint32_t Length,
+ const uint8_t *Data)
+{
+ struct HTTP *stream = IfContext;
+ size_t cur_recv_len = stream->recv_header_len + stream->recv_data_len;
+ (void)Request;
+ H3BUGF(printf("* msh3_data_received %u. %zu buffered, %zu allocated\n",
+ Length, cur_recv_len, stream->recv_buf_alloc));
+ msh3_lock_acquire(&stream->recv_lock);
+ if(!stream->recv_header_complete) {
+ H3BUGF(printf("* Headers complete!\n"));
+ if(!msh3request_ensure_room(stream, 2)) {
+ /* TODO - handle error */
+ goto release_lock;
+ }
+ stream->recv_buf[stream->recv_header_len++] = '\r';
+ stream->recv_buf[stream->recv_header_len++] = '\n';
+ stream->recv_header_complete = true;
+ cur_recv_len += 2;
+ }
+ if(!msh3request_ensure_room(stream, Length)) {
+ /* TODO - handle error */
+ goto release_lock;
+ }
+ memcpy(stream->recv_buf + cur_recv_len, Data, Length);
+ stream->recv_data_len += (size_t)Length;
+release_lock:
+ msh3_lock_release(&stream->recv_lock);
+}
+
+static void MSH3_CALL msh3_complete(MSH3_REQUEST *Request, void *IfContext,
+ bool Aborted, uint64_t AbortError)
+{
+ struct HTTP *stream = IfContext;
+ (void)Request;
+ (void)AbortError;
+ H3BUGF(printf("* msh3_complete, aborted=%s\n", Aborted ? "true" : "false"));
+ msh3_lock_acquire(&stream->recv_lock);
+ if(Aborted) {
+ stream->recv_error = CURLE_HTTP3; /* TODO - how do we pass AbortError? */
+ }
+ stream->recv_header_complete = true;
+ stream->recv_data_complete = true;
+ msh3_lock_release(&stream->recv_lock);
+}
+
+static void MSH3_CALL msh3_shutdown(MSH3_REQUEST *Request, void *IfContext)
+{
+ struct HTTP *stream = IfContext;
+ (void)Request;
+ (void)stream;
+}
+
+static ssize_t msh3_stream_send(struct Curl_easy *data,
+ int sockindex,
+ const void *mem,
+ size_t len,
+ CURLcode *curlcode)
+{
+ struct connectdata *conn = data->conn;
+ struct HTTP *stream = data->req.p.http;
+ struct quicsocket *qs = conn->quic;
+ struct h2h3req *hreq;
+
+ (void)sockindex;
+ /* Sizes must match for cast below to work" */
+ DEBUGASSERT(sizeof(MSH3_HEADER) == sizeof(struct h2h3pseudo));
+
+ H3BUGF(infof(data, "msh3_stream_send %zu", len));
+
+ if(!stream->req) {
+ *curlcode = Curl_pseudo_headers(data, mem, len, &hreq);
+ if(*curlcode) {
+ failf(data, "Curl_pseudo_headers failed");
+ return -1;
+ }
+ H3BUGF(infof(data, "starting request with %zu headers", hreq->entries));
+ stream->req = MsH3RequestOpen(qs->conn, &msh3_request_if, stream,
+ (MSH3_HEADER*)hreq->header, hreq->entries);
+ Curl_pseudo_free(hreq);
+ if(!stream->req) {
+ failf(data, "request open failed");
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+ }
+ *curlcode = CURLE_OK;
+ return len;
+ }
+ H3BUGF(infof(data, "send %zd body bytes on request %p", len,
+ (void *)stream->req));
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+}
+
+static ssize_t msh3_stream_recv(struct Curl_easy *data,
+ int sockindex,
+ char *buf,
+ size_t buffersize,
+ CURLcode *curlcode)
+{
+ struct HTTP *stream = data->req.p.http;
+ size_t outsize = 0;
+ (void)sockindex;
+ H3BUGF(infof(data, "msh3_stream_recv %zu", buffersize));
+
+ if(stream->recv_error) {
+ failf(data, "request aborted");
+ *curlcode = stream->recv_error;
+ return -1;
+ }
+
+ msh3_lock_acquire(&stream->recv_lock);
+
+ if(stream->recv_header_len) {
+ outsize = buffersize;
+ if(stream->recv_header_len < outsize) {
+ outsize = stream->recv_header_len;
+ }
+ memcpy(buf, stream->recv_buf, outsize);
+ if(outsize < stream->recv_header_len + stream->recv_data_len) {
+ memmove(stream->recv_buf, stream->recv_buf + outsize,
+ stream->recv_header_len + stream->recv_data_len - outsize);
+ }
+ stream->recv_header_len -= outsize;
+ H3BUGF(infof(data, "returned %zu bytes of headers", outsize));
+ }
+ else if(stream->recv_data_len) {
+ outsize = buffersize;
+ if(stream->recv_data_len < outsize) {
+ outsize = stream->recv_data_len;
+ }
+ memcpy(buf, stream->recv_buf, outsize);
+ if(outsize < stream->recv_data_len) {
+ memmove(stream->recv_buf, stream->recv_buf + outsize,
+ stream->recv_data_len - outsize);
+ }
+ stream->recv_data_len -= outsize;
+ H3BUGF(infof(data, "returned %zu bytes of data", outsize));
+ }
+ else if(stream->recv_data_complete) {
+ H3BUGF(infof(data, "receive complete"));
+ }
+
+ msh3_lock_release(&stream->recv_lock);
+
+ return (ssize_t)outsize;
+}
+
+CURLcode Curl_quic_done_sending(struct Curl_easy *data)
+{
+ struct connectdata *conn = data->conn;
+ H3BUGF(infof(data, "Curl_quic_done_sending"));
+ if(conn->handler == &msh3_curl_handler_http3) {
+ struct HTTP *stream = data->req.p.http;
+ stream->upload_done = TRUE;
+ }
+
+ return CURLE_OK;
+}
+
+void Curl_quic_done(struct Curl_easy *data, bool premature)
+{
+ struct HTTP *stream = data->req.p.http;
+ (void)premature;
+ H3BUGF(infof(data, "Curl_quic_done"));
+ if(stream) {
+ if(stream->recv_buf) {
+ Curl_safefree(stream->recv_buf);
+ msh3_lock_uninitialize(&stream->recv_lock);
+ }
+ if(stream->req) {
+ MsH3RequestClose(stream->req);
+ stream->req = ZERO_NULL;
+ }
+ }
+}
+
+bool Curl_quic_data_pending(const struct Curl_easy *data)
+{
+ struct HTTP *stream = data->req.p.http;
+ H3BUGF(infof((struct Curl_easy *)data, "Curl_quic_data_pending"));
+ return stream->recv_header_len || stream->recv_data_len;
+}
+
+/*
+ * Called from transfer.c:Curl_readwrite when neither HTTP level read
+ * nor write is performed. It is a good place to handle timer expiry
+ * for QUIC transport.
+ */
+CURLcode Curl_quic_idle(struct Curl_easy *data)
+{
+ (void)data;
+ H3BUGF(infof(data, "Curl_quic_idle"));
+ return CURLE_OK;
+}
+
+#endif /* USE_MSH3 */
diff --git a/lib/vtls/mesalink.h b/lib/vquic/msh3.h
index 03f520c1d..ce884d92d 100644
--- a/lib/vtls/mesalink.h
+++ b/lib/vquic/msh3.h
@@ -1,5 +1,5 @@
-#ifndef HEADER_CURL_MESALINK_H
-#define HEADER_CURL_MESALINK_H
+#ifndef HEADER_CURL_VQUIC_MSH3_H
+#define HEADER_CURL_VQUIC_MSH3_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,8 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com>
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -21,12 +20,21 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
+
#include "curl_setup.h"
-#ifdef USE_MESALINK
+#ifdef USE_MSH3
+
+#include <msh3.h>
+
+struct quicsocket {
+ MSH3_API* api;
+ MSH3_CONNECTION* conn;
+};
-extern const struct Curl_ssl Curl_ssl_mesalink;
+#endif /* USE_MSQUIC */
-#endif /* USE_MESALINK */
-#endif /* HEADER_CURL_MESALINK_H */
+#endif /* HEADER_CURL_VQUIC_MSH3_H */
diff --git a/lib/vquic/ngtcp2.c b/lib/vquic/ngtcp2.c
index 1596049b7..097cca44b 100644
--- a/lib/vquic/ngtcp2.c
+++ b/lib/vquic/ngtcp2.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,21 +18,29 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#ifdef USE_NGTCP2
#include <ngtcp2/ngtcp2.h>
-#include <ngtcp2/ngtcp2_crypto.h>
#include <nghttp3/nghttp3.h>
#ifdef USE_OPENSSL
#include <openssl/err.h>
+#ifdef OPENSSL_IS_BORINGSSL
+#include <ngtcp2/ngtcp2_crypto_boringssl.h>
+#else
#include <ngtcp2/ngtcp2_crypto_openssl.h>
+#endif
#include "vtls/openssl.h"
#elif defined(USE_GNUTLS)
#include <ngtcp2/ngtcp2_crypto_gnutls.h>
#include "vtls/gtls.h"
+#elif defined(USE_WOLFSSL)
+#include <ngtcp2/ngtcp2_crypto_wolfssl.h>
+#include "vtls/wolfssl.h"
#endif
#include "urldata.h"
#include "sendf.h"
@@ -45,7 +53,9 @@
#include "strerror.h"
#include "dynbuf.h"
#include "vquic.h"
+#include "h2h3.h"
#include "vtls/keylog.h"
+#include "vtls/vtls.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -71,7 +81,7 @@
* the far end, then start over at index 0 again.
*/
-#define H3_SEND_SIZE (20*1024)
+#define H3_SEND_SIZE (256*1024)
struct h3out {
uint8_t buf[H3_SEND_SIZE];
size_t used; /* number of bytes used in the buffer */
@@ -81,7 +91,7 @@ struct h3out {
#define QUIC_MAX_STREAMS (256*1024)
#define QUIC_MAX_DATA (1*1024*1024)
-#define QUIC_IDLE_TIMEOUT 60000 /* milliseconds */
+#define QUIC_IDLE_TIMEOUT (60*NGTCP2_SECONDS)
#ifdef USE_OPENSSL
#define QUIC_CIPHERS \
@@ -94,17 +104,32 @@ struct h3out {
"+CHACHA20-POLY1305:+AES-128-CCM:-GROUP-ALL:+GROUP-SECP256R1:" \
"+GROUP-X25519:+GROUP-SECP384R1:+GROUP-SECP521R1:" \
"%DISABLE_TLS13_COMPAT_MODE"
+#elif defined(USE_WOLFSSL)
+#define QUIC_CIPHERS \
+ "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_" \
+ "POLY1305_SHA256:TLS_AES_128_CCM_SHA256"
+#define QUIC_GROUPS "P-256:P-384:P-521"
#endif
+/* ngtcp2 default congestion controller does not perform pacing. Limit
+ the maximum packet burst to MAX_PKT_BURST packets. */
+#define MAX_PKT_BURST 10
+
static CURLcode ng_process_ingress(struct Curl_easy *data,
curl_socket_t sockfd,
struct quicsocket *qs);
static CURLcode ng_flush_egress(struct Curl_easy *data, int sockfd,
struct quicsocket *qs);
static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
- size_t datalen, void *user_data,
+ uint64_t datalen, void *user_data,
void *stream_user_data);
+static ngtcp2_conn *get_conn(ngtcp2_crypto_conn_ref *conn_ref)
+{
+ struct quicsocket *qs = conn_ref->user_data;
+ return qs->qconn;
+}
+
static ngtcp2_tstamp timestamp(void)
{
struct curltime ct = Curl_now();
@@ -185,90 +210,44 @@ static int keylog_callback(gnutls_session_t session, const char *label,
Curl_tls_keylog_write(label, crandom.data, secret->data, secret->size);
return 0;
}
-#endif
-
-static int init_ngh3_conn(struct quicsocket *qs);
-
-static int write_client_handshake(struct quicsocket *qs,
- ngtcp2_crypto_level level,
- const uint8_t *data, size_t len)
-{
- int rv;
-
- rv = ngtcp2_conn_submit_crypto_data(qs->qconn, level, data, len);
- if(rv) {
- H3BUGF(fprintf(stderr, "write_client_handshake failed\n"));
- }
- assert(0 == rv);
-
- return 1;
-}
-
-#ifdef USE_OPENSSL
-static int quic_set_encryption_secrets(SSL *ssl,
- OSSL_ENCRYPTION_LEVEL ossl_level,
- const uint8_t *rx_secret,
- const uint8_t *tx_secret,
- size_t secretlen)
-{
- struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
- int level = ngtcp2_crypto_openssl_from_ossl_encryption_level(ossl_level);
-
- if(ngtcp2_crypto_derive_and_install_rx_key(
- qs->qconn, NULL, NULL, NULL, level, rx_secret, secretlen) != 0)
- return 0;
-
- if(ngtcp2_crypto_derive_and_install_tx_key(
- qs->qconn, NULL, NULL, NULL, level, tx_secret, secretlen) != 0)
- return 0;
-
- if(level == NGTCP2_CRYPTO_LEVEL_APPLICATION) {
- if(init_ngh3_conn(qs) != CURLE_OK)
- return 0;
- }
-
- return 1;
-}
-
-static int quic_add_handshake_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,
- const uint8_t *data, size_t len)
-{
- struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
- ngtcp2_crypto_level level =
- ngtcp2_crypto_openssl_from_ossl_encryption_level(ossl_level);
-
- return write_client_handshake(qs, level, data, len);
-}
-
-static int quic_flush_flight(SSL *ssl)
+#elif defined(USE_WOLFSSL)
+#if defined(HAVE_SECRET_CALLBACK)
+static void keylog_callback(const WOLFSSL *ssl, const char *line)
{
(void)ssl;
- return 1;
-}
-
-static int quic_send_alert(SSL *ssl, enum ssl_encryption_level_t level,
- uint8_t alert)
-{
- struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
- (void)level;
-
- qs->tls_alert = alert;
- return 1;
+ Curl_tls_keylog_write_line(line);
}
+#endif
+#endif
-static SSL_QUIC_METHOD quic_method = {quic_set_encryption_secrets,
- quic_add_handshake_data,
- quic_flush_flight, quic_send_alert};
+static int init_ngh3_conn(struct quicsocket *qs);
+#ifdef USE_OPENSSL
static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
{
+ struct connectdata *conn = data->conn;
SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method());
- SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_3_VERSION);
- SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_3_VERSION);
+#ifdef OPENSSL_IS_BORINGSSL
+ if(ngtcp2_crypto_boringssl_configure_client_context(ssl_ctx) != 0) {
+ failf(data, "ngtcp2_crypto_boringssl_configure_client_context failed");
+ return NULL;
+ }
+#else
+ if(ngtcp2_crypto_openssl_configure_client_context(ssl_ctx) != 0) {
+ failf(data, "ngtcp2_crypto_openssl_configure_client_context failed");
+ return NULL;
+ }
+#endif
SSL_CTX_set_default_verify_paths(ssl_ctx);
+#ifdef OPENSSL_IS_BORINGSSL
+ if(SSL_CTX_set1_curves_list(ssl_ctx, QUIC_GROUPS) != 1) {
+ failf(data, "SSL_CTX_set1_curves_list failed");
+ return NULL;
+ }
+#else
if(SSL_CTX_set_ciphersuites(ssl_ctx, QUIC_CIPHERS) != 1) {
char error_buffer[256];
ERR_error_string_n(ERR_get_error(), error_buffer, sizeof(error_buffer));
@@ -280,8 +259,7 @@ static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
failf(data, "SSL_CTX_set1_groups_list failed");
return NULL;
}
-
- SSL_CTX_set_quic_method(ssl_ctx, &quic_method);
+#endif
/* Open the file if a TLS or QUIC backend has not done this before. */
Curl_tls_keylog_open();
@@ -289,12 +267,11 @@ static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
SSL_CTX_set_keylog_callback(ssl_ctx, keylog_callback);
}
- {
- struct connectdata *conn = data->conn;
+ if(conn->ssl_config.verifypeer) {
const char * const ssl_cafile = conn->ssl_config.CAfile;
const char * const ssl_capath = conn->ssl_config.CApath;
- if(conn->ssl_config.verifypeer) {
+ if(ssl_cafile || ssl_capath) {
SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
/* tell OpenSSL where to find CA certificates that are used to verify
the server's certificate. */
@@ -309,10 +286,36 @@ static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
infof(data, " CAfile: %s", ssl_cafile ? ssl_cafile : "none");
infof(data, " CApath: %s", ssl_capath ? ssl_capath : "none");
}
+#ifdef CURL_CA_FALLBACK
+ else {
+ /* verifying the peer without any CA certificates won't work so
+ use openssl's built-in default as fallback */
+ SSL_CTX_set_default_verify_paths(ssl_ctx);
+ }
+#endif
}
return ssl_ctx;
}
+static CURLcode quic_set_client_cert(struct Curl_easy *data,
+ struct quicsocket *qs)
+{
+ struct connectdata *conn = data->conn;
+ SSL_CTX *ssl_ctx = qs->sslctx;
+ char *const ssl_cert = SSL_SET_OPTION(primary.clientcert);
+ const struct curl_blob *ssl_cert_blob = SSL_SET_OPTION(primary.cert_blob);
+ const char *const ssl_cert_type = SSL_SET_OPTION(cert_type);
+
+ if(ssl_cert || ssl_cert_blob || ssl_cert_type) {
+ return Curl_ossl_set_client_cert(
+ data, ssl_ctx, ssl_cert, ssl_cert_blob, ssl_cert_type,
+ SSL_SET_OPTION(key), SSL_SET_OPTION(key_blob),
+ SSL_SET_OPTION(key_type), SSL_SET_OPTION(key_passwd));
+ }
+
+ return CURLE_OK;
+}
+
/** SSL callbacks ***/
static int quic_init_ssl(struct quicsocket *qs)
@@ -325,7 +328,7 @@ static int quic_init_ssl(struct quicsocket *qs)
DEBUGASSERT(!qs->ssl);
qs->ssl = SSL_new(qs->sslctx);
- SSL_set_app_data(qs->ssl, qs);
+ SSL_set_app_data(qs->ssl, &qs->conn_ref);
SSL_set_connect_state(qs->ssl);
SSL_set_quic_use_legacy_codepoint(qs->ssl, 0);
@@ -339,107 +342,6 @@ static int quic_init_ssl(struct quicsocket *qs)
return 0;
}
#elif defined(USE_GNUTLS)
-static int secret_func(gnutls_session_t ssl,
- gnutls_record_encryption_level_t gtls_level,
- const void *rx_secret,
- const void *tx_secret, size_t secretlen)
-{
- struct quicsocket *qs = gnutls_session_get_ptr(ssl);
- int level =
- ngtcp2_crypto_gnutls_from_gnutls_record_encryption_level(gtls_level);
-
- if(level != NGTCP2_CRYPTO_LEVEL_EARLY &&
- ngtcp2_crypto_derive_and_install_rx_key(
- qs->qconn, NULL, NULL, NULL, level, rx_secret, secretlen) != 0)
- return 0;
-
- if(ngtcp2_crypto_derive_and_install_tx_key(
- qs->qconn, NULL, NULL, NULL, level, tx_secret, secretlen) != 0)
- return 0;
-
- if(level == NGTCP2_CRYPTO_LEVEL_APPLICATION) {
- if(init_ngh3_conn(qs) != CURLE_OK)
- return -1;
- }
-
- return 0;
-}
-
-static int read_func(gnutls_session_t ssl,
- gnutls_record_encryption_level_t gtls_level,
- gnutls_handshake_description_t htype, const void *data,
- size_t len)
-{
- struct quicsocket *qs = gnutls_session_get_ptr(ssl);
- ngtcp2_crypto_level level =
- ngtcp2_crypto_gnutls_from_gnutls_record_encryption_level(gtls_level);
- int rv;
-
- if(htype == GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC)
- return 0;
-
- rv = write_client_handshake(qs, level, data, len);
- if(rv == 0)
- return -1;
-
- return 0;
-}
-
-static int alert_read_func(gnutls_session_t ssl,
- gnutls_record_encryption_level_t gtls_level,
- gnutls_alert_level_t alert_level,
- gnutls_alert_description_t alert_desc)
-{
- struct quicsocket *qs = gnutls_session_get_ptr(ssl);
- (void)gtls_level;
- (void)alert_level;
-
- qs->tls_alert = alert_desc;
- return 1;
-}
-
-static int tp_recv_func(gnutls_session_t ssl, const uint8_t *data,
- size_t data_size)
-{
- struct quicsocket *qs = gnutls_session_get_ptr(ssl);
- ngtcp2_transport_params params;
-
- if(ngtcp2_decode_transport_params(
- &params, NGTCP2_TRANSPORT_PARAMS_TYPE_ENCRYPTED_EXTENSIONS,
- data, data_size) != 0)
- return -1;
-
- if(ngtcp2_conn_set_remote_transport_params(qs->qconn, &params) != 0)
- return -1;
-
- return 0;
-}
-
-static int tp_send_func(gnutls_session_t ssl, gnutls_buffer_t extdata)
-{
- struct quicsocket *qs = gnutls_session_get_ptr(ssl);
- uint8_t paramsbuf[64];
- ngtcp2_transport_params params;
- ssize_t nwrite;
- int rc;
-
- ngtcp2_conn_get_local_transport_params(qs->qconn, &params);
- nwrite = ngtcp2_encode_transport_params(
- paramsbuf, sizeof(paramsbuf), NGTCP2_TRANSPORT_PARAMS_TYPE_CLIENT_HELLO,
- &params);
- if(nwrite < 0) {
- H3BUGF(fprintf(stderr, "ngtcp2_encode_transport_params: %s\n",
- ngtcp2_strerror((int)nwrite)));
- return -1;
- }
-
- rc = gnutls_buffer_append_data(extdata, paramsbuf, nwrite);
- if(rc < 0)
- return rc;
-
- return (int)nwrite;
-}
-
static int quic_init_ssl(struct quicsocket *qs)
{
gnutls_datum_t alpn[2];
@@ -450,26 +352,17 @@ static int quic_init_ssl(struct quicsocket *qs)
DEBUGASSERT(!qs->ssl);
gnutls_init(&qs->ssl, GNUTLS_CLIENT);
- gnutls_session_set_ptr(qs->ssl, qs);
+ gnutls_session_set_ptr(qs->ssl, &qs->conn_ref);
- rc = gnutls_priority_set_direct(qs->ssl, QUIC_PRIORITY, NULL);
- if(rc < 0) {
- H3BUGF(fprintf(stderr, "gnutls_priority_set_direct failed: %s\n",
- gnutls_strerror(rc)));
+ if(ngtcp2_crypto_gnutls_configure_client_session(qs->ssl) != 0) {
+ H3BUGF(fprintf(stderr,
+ "ngtcp2_crypto_gnutls_configure_client_session failed\n"));
return 1;
}
- gnutls_handshake_set_secret_function(qs->ssl, secret_func);
- gnutls_handshake_set_read_function(qs->ssl, read_func);
- gnutls_alert_set_read_function(qs->ssl, alert_read_func);
-
- rc = gnutls_session_ext_register(qs->ssl, "QUIC Transport Parameters",
- NGTCP2_TLSEXT_QUIC_TRANSPORT_PARAMETERS_V1, GNUTLS_EXT_TLS,
- tp_recv_func, tp_send_func, NULL, NULL, NULL,
- GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO |
- GNUTLS_EXT_FLAG_EE);
+ rc = gnutls_priority_set_direct(qs->ssl, QUIC_PRIORITY, NULL);
if(rc < 0) {
- H3BUGF(fprintf(stderr, "gnutls_session_ext_register failed: %s\n",
+ H3BUGF(fprintf(stderr, "gnutls_priority_set_direct failed: %s\n",
gnutls_strerror(rc)));
return 1;
}
@@ -518,7 +411,105 @@ static int quic_init_ssl(struct quicsocket *qs)
gnutls_server_name_set(qs->ssl, GNUTLS_NAME_DNS, hostname, strlen(hostname));
return 0;
}
+#elif defined(USE_WOLFSSL)
+
+static WOLFSSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
+{
+ struct connectdata *conn = data->conn;
+ WOLFSSL_CTX *ssl_ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method());
+
+ if(ngtcp2_crypto_wolfssl_configure_client_context(ssl_ctx) != 0) {
+ failf(data, "ngtcp2_crypto_wolfssl_configure_client_context failed");
+ return NULL;
+ }
+
+ wolfSSL_CTX_set_default_verify_paths(ssl_ctx);
+
+ if(wolfSSL_CTX_set_cipher_list(ssl_ctx, QUIC_CIPHERS) != 1) {
+ char error_buffer[256];
+ ERR_error_string_n(ERR_get_error(), error_buffer, sizeof(error_buffer));
+ failf(data, "SSL_CTX_set_ciphersuites: %s", error_buffer);
+ return NULL;
+ }
+
+ if(wolfSSL_CTX_set1_groups_list(ssl_ctx, (char *)QUIC_GROUPS) != 1) {
+ failf(data, "SSL_CTX_set1_groups_list failed");
+ return NULL;
+ }
+
+ /* Open the file if a TLS or QUIC backend has not done this before. */
+ Curl_tls_keylog_open();
+ if(Curl_tls_keylog_enabled()) {
+#if defined(HAVE_SECRET_CALLBACK)
+ wolfSSL_CTX_set_keylog_callback(ssl_ctx, keylog_callback);
+#else
+ failf(data, "wolfSSL was built without keylog callback");
+ return NULL;
#endif
+ }
+
+ if(conn->ssl_config.verifypeer) {
+ const char * const ssl_cafile = conn->ssl_config.CAfile;
+ const char * const ssl_capath = conn->ssl_config.CApath;
+
+ if(ssl_cafile || ssl_capath) {
+ wolfSSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
+ /* tell wolfSSL where to find CA certificates that are used to verify
+ the server's certificate. */
+ if(!wolfSSL_CTX_load_verify_locations(ssl_ctx, ssl_cafile, ssl_capath)) {
+ /* Fail if we insist on successfully verifying the server. */
+ failf(data, "error setting certificate verify locations:"
+ " CAfile: %s CApath: %s",
+ ssl_cafile ? ssl_cafile : "none",
+ ssl_capath ? ssl_capath : "none");
+ return NULL;
+ }
+ infof(data, " CAfile: %s", ssl_cafile ? ssl_cafile : "none");
+ infof(data, " CApath: %s", ssl_capath ? ssl_capath : "none");
+ }
+#ifdef CURL_CA_FALLBACK
+ else {
+ /* verifying the peer without any CA certificates won't work so
+ use wolfssl's built-in default as fallback */
+ wolfSSL_CTX_set_default_verify_paths(ssl_ctx);
+ }
+#endif
+ }
+ else {
+ wolfSSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_NONE, NULL);
+ }
+
+ return ssl_ctx;
+}
+
+/** SSL callbacks ***/
+
+static int quic_init_ssl(struct quicsocket *qs)
+{
+ const uint8_t *alpn = NULL;
+ size_t alpnlen = 0;
+ /* this will need some attention when HTTPS proxy over QUIC get fixed */
+ const char * const hostname = qs->conn->host.name;
+
+ DEBUGASSERT(!qs->ssl);
+ qs->ssl = SSL_new(qs->sslctx);
+
+ wolfSSL_set_app_data(qs->ssl, &qs->conn_ref);
+ wolfSSL_set_connect_state(qs->ssl);
+ wolfSSL_set_quic_use_legacy_codepoint(qs->ssl, 0);
+
+ alpn = (const uint8_t *)H3_ALPN_H3_29 H3_ALPN_H3;
+ alpnlen = sizeof(H3_ALPN_H3_29) - 1 + sizeof(H3_ALPN_H3) - 1;
+ if(alpn)
+ wolfSSL_set_alpn_protos(qs->ssl, alpn, (int)alpnlen);
+
+ /* set SNI */
+ wolfSSL_UseSNI(qs->ssl, WOLFSSL_SNI_HOST_NAME,
+ hostname, (unsigned short)strlen(hostname));
+
+ return 0;
+}
+#endif /* defined(USE_WOLFSSL) */
static int cb_handshake_completed(ngtcp2_conn *tconn, void *user_data)
{
@@ -543,7 +534,7 @@ static int cb_recv_stream_data(ngtcp2_conn *tconn, uint32_t flags,
void *user_data, void *stream_user_data)
{
struct quicsocket *qs = (struct quicsocket *)user_data;
- ssize_t nconsumed;
+ nghttp3_ssize nconsumed;
int fin = (flags & NGTCP2_STREAM_DATA_FLAG_FIN) ? 1 : 0;
(void)offset;
(void)stream_user_data;
@@ -551,6 +542,9 @@ static int cb_recv_stream_data(ngtcp2_conn *tconn, uint32_t flags,
nconsumed =
nghttp3_conn_read_stream(qs->h3conn, stream_id, buf, buflen, fin);
if(nconsumed < 0) {
+ ngtcp2_connection_close_error_set_application_error(
+ &qs->last_error, nghttp3_err_infer_quic_app_error_code((int)nconsumed),
+ NULL, 0);
return NGTCP2_ERR_CALLBACK_FAILURE;
}
@@ -601,6 +595,8 @@ static int cb_stream_close(ngtcp2_conn *tconn, uint32_t flags,
rv = nghttp3_conn_close_stream(qs->h3conn, stream_id,
app_error_code);
if(rv) {
+ ngtcp2_connection_close_error_set_application_error(
+ &qs->last_error, nghttp3_err_infer_quic_app_error_code(rv), NULL, 0);
return NGTCP2_ERR_CALLBACK_FAILURE;
}
@@ -707,6 +703,23 @@ static int cb_get_new_connection_id(ngtcp2_conn *tconn, ngtcp2_cid *cid,
return 0;
}
+static int cb_recv_rx_key(ngtcp2_conn *tconn, ngtcp2_crypto_level level,
+ void *user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ (void)tconn;
+
+ if(level != NGTCP2_CRYPTO_LEVEL_APPLICATION) {
+ return 0;
+ }
+
+ if(init_ngh3_conn(qs) != CURLE_OK) {
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ }
+
+ return 0;
+}
+
static ngtcp2_callbacks ng_callbacks = {
ngtcp2_crypto_client_initial_cb,
NULL, /* recv_client_initial */
@@ -743,7 +756,11 @@ static ngtcp2_callbacks ng_callbacks = {
NULL, /* ack_datagram */
NULL, /* lost_datagram */
ngtcp2_crypto_get_path_challenge_data_cb,
- cb_stream_stop_sending
+ cb_stream_stop_sending,
+ NULL, /* version_negotiation */
+ cb_recv_rx_key,
+ NULL, /* recv_tx_key */
+ NULL, /* early_data_rejected */
};
/*
@@ -785,6 +802,14 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
qs->sslctx = quic_ssl_ctx(data);
if(!qs->sslctx)
return CURLE_QUIC_CONNECT_ERROR;
+
+ result = quic_set_client_cert(data, qs);
+ if(result)
+ return result;
+#elif defined(USE_WOLFSSL)
+ qs->sslctx = quic_ssl_ctx(data);
+ if(!qs->sslctx)
+ return CURLE_QUIC_CONNECT_ERROR;
#endif
if(quic_init_ssl(qs))
@@ -822,6 +847,29 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
ngtcp2_conn_set_tls_native_handle(qs->qconn, qs->ssl);
+ ngtcp2_connection_close_error_default(&qs->last_error);
+
+#if defined(__linux__) && defined(UDP_SEGMENT) && defined(HAVE_SENDMSG)
+ qs->no_gso = FALSE;
+#else
+ qs->no_gso = TRUE;
+#endif
+
+ qs->num_blocked_pkt = 0;
+ qs->num_blocked_pkt_sent = 0;
+ memset(&qs->blocked_pkt, 0, sizeof(qs->blocked_pkt));
+
+ qs->pktbuflen = NGTCP2_MAX_PMTUD_UDP_PAYLOAD_SIZE * MAX_PKT_BURST;
+ qs->pktbuf = malloc(qs->pktbuflen);
+ if(!qs->pktbuf) {
+ ngtcp2_conn_del(qs->qconn);
+ qs->qconn = NULL;
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ qs->conn_ref.get_conn = get_conn;
+ qs->conn_ref.user_data = qs;
+
return CURLE_OK;
}
@@ -841,6 +889,8 @@ static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
{
struct SingleRequest *k = &data->req;
int bitmap = GETSOCK_BLANK;
+ struct HTTP *stream = data->req.p.http;
+ struct quicsocket *qs = conn->quic;
socks[0] = conn->sock[FIRSTSOCKET];
@@ -849,7 +899,11 @@ static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
/* we're still uploading or the HTTP/2 layer wants to send data */
- if((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND)
+ if((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND &&
+ (!stream->h3out || stream->h3out->used < H3_SEND_SIZE) &&
+ ngtcp2_conn_get_cwnd_left(qs->qconn) &&
+ ngtcp2_conn_get_max_data_left(qs->qconn) &&
+ nghttp3_conn_is_stream_writable(qs->h3conn, stream->stream3_id))
bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
return bitmap;
@@ -857,8 +911,22 @@ static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
static void qs_disconnect(struct quicsocket *qs)
{
+ char buffer[NGTCP2_MAX_UDP_PAYLOAD_SIZE];
+ ngtcp2_tstamp ts;
+ ngtcp2_ssize rc;
+
if(!qs->conn) /* already closed */
return;
+ ts = timestamp();
+ rc = ngtcp2_conn_write_connection_close(qs->qconn, NULL, /* path */
+ NULL, /* pkt_info */
+ (uint8_t *)buffer, sizeof(buffer),
+ &qs->last_error, ts);
+ if(rc > 0) {
+ while((send(qs->conn->sock[FIRSTSOCKET], buffer, rc, 0) == -1) &&
+ SOCKERRNO == EINTR);
+ }
+
qs->conn = NULL;
if(qs->qlogfd != -1) {
close(qs->qlogfd);
@@ -869,6 +937,8 @@ static void qs_disconnect(struct quicsocket *qs)
SSL_free(qs->ssl);
#elif defined(USE_GNUTLS)
gnutls_deinit(qs->ssl);
+#elif defined(USE_WOLFSSL)
+ wolfSSL_free(qs->ssl);
#endif
qs->ssl = NULL;
#ifdef USE_GNUTLS
@@ -877,10 +947,13 @@ static void qs_disconnect(struct quicsocket *qs)
qs->cred = NULL;
}
#endif
+ free(qs->pktbuf);
nghttp3_conn_del(qs->h3conn);
ngtcp2_conn_del(qs->qconn);
#ifdef USE_OPENSSL
SSL_CTX_free(qs->sslctx);
+#elif defined(USE_WOLFSSL)
+ wolfSSL_CTX_free(qs->sslctx);
#endif
}
@@ -949,6 +1022,7 @@ static int cb_h3_stream_close(nghttp3_conn *conn, int64_t stream_id,
H3BUGF(infof(data, "cb_h3_stream_close CALLED"));
stream->closed = TRUE;
+ stream->error3 = app_error_code;
Curl_expire(data, 0, EXPIRE_QUIC);
/* make sure that ngh3_stream_recv is called again to complete the transfer
even if there are no more packets to be received from the server. */
@@ -1043,7 +1117,7 @@ static int decode_status_code(const uint8_t *value, size_t len)
}
static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
- void *user_data, void *stream_user_data)
+ int fin, void *user_data, void *stream_user_data)
{
struct Curl_easy *data = stream_user_data;
struct HTTP *stream = data->req.p.http;
@@ -1051,6 +1125,7 @@ static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
(void)conn;
(void)stream_id;
(void)user_data;
+ (void)fin;
/* add a CRLF only if we've received some headers */
if(stream->firstheader) {
@@ -1059,6 +1134,10 @@ static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
return -1;
}
}
+
+ if(stream->status_code / 100 != 1) {
+ stream->bodystarted = TRUE;
+ }
return 0;
}
@@ -1078,13 +1157,13 @@ static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
(void)flags;
(void)user_data;
- if(h3name.len == sizeof(":status") - 1 &&
- !memcmp(":status", h3name.base, h3name.len)) {
+ if(token == NGHTTP3_QPACK_TOKEN__STATUS) {
char line[14]; /* status line is always 13 characters long */
size_t ncopy;
- int status = decode_status_code(h3val.base, h3val.len);
- DEBUGASSERT(status != -1);
- ncopy = msnprintf(line, sizeof(line), "HTTP/3 %03d \r\n", status);
+ stream->status_code = decode_status_code(h3val.base, h3val.len);
+ DEBUGASSERT(stream->status_code != -1);
+ ncopy = msnprintf(line, sizeof(line), "HTTP/3 %03d \r\n",
+ stream->status_code);
result = write_data(stream, line, ncopy);
if(result) {
return -1;
@@ -1114,16 +1193,36 @@ static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
return 0;
}
-static int cb_h3_send_stop_sending(nghttp3_conn *conn, int64_t stream_id,
- uint64_t app_error_code,
- void *user_data,
- void *stream_user_data)
+static int cb_h3_stop_sending(nghttp3_conn *conn, int64_t stream_id,
+ uint64_t app_error_code, void *user_data,
+ void *stream_user_data)
{
+ struct quicsocket *qs = user_data;
+ int rv;
+ (void)conn;
+ (void)stream_user_data;
+
+ rv = ngtcp2_conn_shutdown_stream_read(qs->qconn, stream_id, app_error_code);
+ if(rv && rv != NGTCP2_ERR_STREAM_NOT_FOUND) {
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ }
+
+ return 0;
+}
+
+static int cb_h3_reset_stream(nghttp3_conn *conn, int64_t stream_id,
+ uint64_t app_error_code, void *user_data,
+ void *stream_user_data) {
+ struct quicsocket *qs = user_data;
+ int rv;
(void)conn;
- (void)stream_id;
- (void)app_error_code;
- (void)user_data;
(void)stream_user_data;
+
+ rv = ngtcp2_conn_shutdown_stream_write(qs->qconn, stream_id, app_error_code);
+ if(rv && rv != NGTCP2_ERR_STREAM_NOT_FOUND) {
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ }
+
return 0;
}
@@ -1138,9 +1237,9 @@ static nghttp3_callbacks ngh3_callbacks = {
NULL, /* begin_trailers */
cb_h3_recv_header,
NULL, /* end_trailers */
- cb_h3_send_stop_sending,
+ cb_h3_stop_sending,
NULL, /* end_stream */
- NULL, /* reset_stream */
+ cb_h3_reset_stream,
NULL /* shutdown */
};
@@ -1218,6 +1317,8 @@ static size_t drain_overflow_buffer(struct HTTP *stream)
if(ncopy != overlen)
/* make the buffer only keep the tail */
(void)Curl_dyn_tail(&stream->overflow, overlen - ncopy);
+ else
+ Curl_dyn_reset(&stream->overflow);
}
return ncopy;
}
@@ -1274,6 +1375,24 @@ static ssize_t ngh3_stream_recv(struct Curl_easy *data,
}
if(stream->closed) {
+ if(stream->error3 != NGHTTP3_H3_NO_ERROR) {
+ failf(data,
+ "HTTP/3 stream %" PRId64 " was not closed cleanly: (err %" PRIu64
+ ")",
+ stream->stream3_id, stream->error3);
+ *curlcode = CURLE_HTTP3;
+ return -1;
+ }
+
+ if(!stream->bodystarted) {
+ failf(data,
+ "HTTP/3 stream %" PRId64 " was closed cleanly, but before getting"
+ " all response header fields, treated as error",
+ stream->stream3_id);
+ *curlcode = CURLE_HTTP3;
+ return -1;
+ }
+
*curlcode = CURLE_OK;
return 0;
}
@@ -1285,7 +1404,7 @@ static ssize_t ngh3_stream_recv(struct Curl_easy *data,
/* this amount of data has now been acked on this stream */
static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
- size_t datalen, void *user_data,
+ uint64_t datalen, void *user_data,
void *stream_user_data)
{
struct Curl_easy *data = stream_user_data;
@@ -1309,10 +1428,10 @@ static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
return 0;
}
-static ssize_t cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
- nghttp3_vec *vec, size_t veccnt,
- uint32_t *pflags, void *user_data,
- void *stream_user_data)
+static nghttp3_ssize cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
+ nghttp3_vec *vec, size_t veccnt,
+ uint32_t *pflags, void *user_data,
+ void *stream_user_data)
{
struct Curl_easy *data = stream_user_data;
size_t nread;
@@ -1329,6 +1448,10 @@ static ssize_t cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
return 1;
}
+ if(stream->upload_len && H3_SEND_SIZE <= stream->h3out->used) {
+ return NGHTTP3_ERR_WOULDBLOCK;
+ }
+
nread = CURLMIN(stream->upload_len, H3_SEND_SIZE - stream->h3out->used);
if(nread > 0) {
/* nghttp3 wants us to hold on to the data until it tells us it is okay to
@@ -1363,7 +1486,7 @@ static ssize_t cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
}
if(stream->upload_done && !stream->upload_len &&
(stream->upload_left <= 0)) {
- H3BUGF(infof(data, "!!!!!!!!! cb_h3_readfunction sets EOF"));
+ H3BUGF(infof(data, "cb_h3_readfunction sets EOF"));
*pflags = NGHTTP3_DATA_FLAG_EOF;
return nread ? 1 : 0;
}
@@ -1383,16 +1506,13 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
struct connectdata *conn = data->conn;
struct HTTP *stream = data->req.p.http;
size_t nheader;
- size_t i;
- size_t authority_idx;
- char *hdbuf = (char *)mem;
- char *end, *line_end;
struct quicsocket *qs = conn->quic;
CURLcode result = CURLE_OK;
nghttp3_nv *nva = NULL;
int64_t stream3_id;
int rc;
struct h3out *h3out = NULL;
+ struct h2h3req *hreq = NULL;
rc = ngtcp2_conn_open_bidi_stream(qs->qconn, &stream3_id, NULL);
if(rc) {
@@ -1405,158 +1525,24 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
stream->h3req = TRUE; /* senf off! */
Curl_dyn_init(&stream->overflow, CURL_MAX_READ_SIZE);
- /* Calculate number of headers contained in [mem, mem + len). Assumes a
- correctly generated HTTP header field block. */
- nheader = 0;
- for(i = 1; i < len; ++i) {
- if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
- ++nheader;
- ++i;
- }
- }
- if(nheader < 2)
+ result = Curl_pseudo_headers(data, mem, len, &hreq);
+ if(result)
goto fail;
+ nheader = hreq->entries;
- /* We counted additional 2 \r\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(nghttp3_nv) * nheader);
if(!nva) {
result = CURLE_OUT_OF_MEMORY;
goto fail;
}
-
- /* Extract :method, :path from request line
- We do line endings with CRLF so checking for CR is enough */
- line_end = memchr(hdbuf, '\r', len);
- if(!line_end) {
- result = CURLE_BAD_FUNCTION_ARGUMENT; /* internal error */
- goto fail;
- }
-
- /* Method does not contain spaces */
- end = memchr(hdbuf, ' ', line_end - hdbuf);
- if(!end || end == hdbuf)
- goto fail;
- nva[0].name = (unsigned char *)":method";
- nva[0].namelen = strlen((char *)nva[0].name);
- nva[0].value = (unsigned char *)hdbuf;
- nva[0].valuelen = (size_t)(end - hdbuf);
- nva[0].flags = NGHTTP3_NV_FLAG_NONE;
-
- hdbuf = end + 1;
-
- /* Path may contain spaces so scan backwards */
- end = NULL;
- for(i = (size_t)(line_end - hdbuf); i; --i) {
- if(hdbuf[i - 1] == ' ') {
- end = &hdbuf[i - 1];
- break;
- }
- }
- if(!end || end == hdbuf)
- goto fail;
- nva[1].name = (unsigned char *)":path";
- nva[1].namelen = strlen((char *)nva[1].name);
- nva[1].value = (unsigned char *)hdbuf;
- nva[1].valuelen = (size_t)(end - hdbuf);
- nva[1].flags = NGHTTP3_NV_FLAG_NONE;
-
- nva[2].name = (unsigned char *)":scheme";
- nva[2].namelen = 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 = strlen((char *)nva[2].value);
- nva[2].flags = NGHTTP3_NV_FLAG_NONE;
-
-
- authority_idx = 0;
- i = 3;
- while(i < nheader) {
- size_t hlen;
-
- hdbuf = line_end + 2;
-
- /* check for next CR, but only within the piece of data left in the given
- buffer */
- line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
- if(!line_end || (line_end == hdbuf))
- goto fail;
-
- /* header continuation lines are not supported */
- if(*hdbuf == ' ' || *hdbuf == '\t')
- goto fail;
-
- for(end = hdbuf; end < line_end && *end != ':'; ++end)
- ;
- if(end == hdbuf || end == line_end)
- goto fail;
- hlen = end - hdbuf;
-
- if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
- authority_idx = i;
- nva[i].name = (unsigned char *)":authority";
- nva[i].namelen = strlen((char *)nva[i].name);
- }
- else {
- nva[i].namelen = (size_t)(end - hdbuf);
- /* Lower case the header name for HTTP/3 */
- Curl_strntolower((char *)hdbuf, hdbuf, nva[i].namelen);
- nva[i].name = (unsigned char *)hdbuf;
- }
- nva[i].flags = NGHTTP3_NV_FLAG_NONE;
- hdbuf = end + 1;
- while(*hdbuf == ' ' || *hdbuf == '\t')
- ++hdbuf;
- end = line_end;
-
-#if 0 /* This should probably go in more or less like this */
- switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
- end - hdbuf)) {
- case HEADERINST_IGNORE:
- /* skip header fields prohibited by HTTP/2 specification. */
- --nheader;
- continue;
- case HEADERINST_TE_TRAILERS:
- nva[i].value = (uint8_t*)"trailers";
- nva[i].value_len = sizeof("trailers") - 1;
- break;
- default:
- nva[i].value = (unsigned char *)hdbuf;
- nva[i].value_len = (size_t)(end - hdbuf);
- }
-#endif
- nva[i].value = (unsigned char *)hdbuf;
- nva[i].valuelen = (size_t)(end - hdbuf);
- nva[i].flags = NGHTTP3_NV_FLAG_NONE;
-
- ++i;
- }
-
- /* :authority must come before non-pseudo header fields */
- if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
- nghttp3_nv authority = nva[authority_idx];
- for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
- nva[i] = nva[i - 1];
- }
- nva[i] = authority;
- }
-
- /* Warn stream may be rejected if cumulative length of headers is too
- large. */
-#define MAX_ACC 60000 /* <64KB to account for some overhead */
- {
- size_t acc = 0;
- for(i = 0; i < nheader; ++i)
- acc += nva[i].namelen + nva[i].valuelen;
-
- if(acc > MAX_ACC) {
- infof(data, "http_request: Warning: The cumulative length of all "
- "headers exceeds %d bytes and that could cause the "
- "stream to be rejected.", MAX_ACC);
+ else {
+ unsigned int i;
+ for(i = 0; i < nheader; i++) {
+ nva[i].name = (unsigned char *)hreq->header[i].name;
+ nva[i].namelen = hreq->header[i].namelen;
+ nva[i].value = (unsigned char *)hreq->header[i].value;
+ nva[i].valuelen = hreq->header[i].valuelen;
+ nva[i].flags = NGHTTP3_NV_FLAG_NONE;
}
}
@@ -1605,10 +1591,12 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
infof(data, "Using HTTP/3 Stream ID: %x (easy handle %p)",
stream3_id, (void *)data);
+ Curl_pseudo_free(hreq);
return CURLE_OK;
fail:
free(nva);
+ Curl_pseudo_free(hreq);
return result;
}
static ssize_t ngh3_stream_send(struct Curl_easy *data,
@@ -1617,18 +1605,26 @@ static ssize_t ngh3_stream_send(struct Curl_easy *data,
size_t len,
CURLcode *curlcode)
{
- ssize_t sent;
+ ssize_t sent = 0;
struct connectdata *conn = data->conn;
struct quicsocket *qs = conn->quic;
curl_socket_t sockfd = conn->sock[sockindex];
struct HTTP *stream = data->req.p.http;
+ if(stream->closed) {
+ *curlcode = CURLE_HTTP3;
+ return -1;
+ }
+
if(!stream->h3req) {
CURLcode result = http_request(data, mem, len);
if(result) {
*curlcode = CURLE_SEND_ERROR;
return -1;
}
+ /* Assume that mem of length len only includes HTTP/1.1 style
+ header fields. In other words, it does not contain request
+ body. */
sent = len;
}
else {
@@ -1638,7 +1634,6 @@ static ssize_t ngh3_stream_send(struct Curl_easy *data,
stream->upload_mem = mem;
stream->upload_len = len;
(void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
- sent = len;
}
else {
*curlcode = CURLE_AGAIN;
@@ -1653,8 +1648,20 @@ static ssize_t ngh3_stream_send(struct Curl_easy *data,
/* Reset post upload buffer after resumed. */
if(stream->upload_mem) {
+ if(data->set.postfields) {
+ sent = len;
+ }
+ else {
+ sent = len - stream->upload_len;
+ }
+
stream->upload_mem = NULL;
stream->upload_len = 0;
+
+ if(sent == 0) {
+ *curlcode = CURLE_AGAIN;
+ return -1;
+ }
}
*curlcode = CURLE_OK;
@@ -1676,7 +1683,6 @@ static CURLcode ng_has_connected(struct Curl_easy *data,
if(conn->ssl_config.verifyhost) {
#ifdef USE_OPENSSL
X509 *server_cert;
- CURLcode result;
server_cert = SSL_get_peer_certificate(conn->quic->ssl);
if(!server_cert) {
return CURLE_PEER_FAILED_VERIFICATION;
@@ -1686,12 +1692,23 @@ static CURLcode ng_has_connected(struct Curl_easy *data,
if(result)
return result;
infof(data, "Verified certificate just fine");
-#else
+#elif defined(USE_GNUTLS)
result = Curl_gtls_verifyserver(data, conn, conn->quic->ssl, FIRSTSOCKET);
+#elif defined(USE_WOLFSSL)
+ char *snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
+ if(!snihost ||
+ (wolfSSL_check_domain_name(conn->quic->ssl, snihost) == SSL_FAILURE))
+ return CURLE_PEER_FAILED_VERIFICATION;
+ infof(data, "Verified certificate just fine");
#endif
}
else
infof(data, "Skipped certificate verification");
+#ifdef USE_OPENSSL
+ if(data->set.ssl.certinfo)
+ /* asked to gather certificate info */
+ (void)Curl_ossl_certchain(data, conn->quic->ssl);
+#endif
return result;
}
@@ -1764,7 +1781,17 @@ static CURLcode ng_process_ingress(struct Curl_easy *data,
rv = ngtcp2_conn_read_pkt(qs->qconn, &path, &pi, buf, recvd, ts);
if(rv) {
- /* TODO Send CONNECTION_CLOSE if possible */
+ if(!qs->last_error.error_code) {
+ if(rv == NGTCP2_ERR_CRYPTO) {
+ ngtcp2_connection_close_error_set_transport_error_tls_alert(
+ &qs->last_error, ngtcp2_conn_get_tls_alert(qs->qconn), NULL, 0);
+ }
+ else {
+ ngtcp2_connection_close_error_set_transport_error_liberr(
+ &qs->last_error, rv, NULL, 0);
+ }
+ }
+
if(rv == NGTCP2_ERR_CRYPTO)
/* this is a "TLS problem", but a failed certificate verification
is a common reason for this */
@@ -1776,33 +1803,231 @@ static CURLcode ng_process_ingress(struct Curl_easy *data,
return CURLE_OK;
}
+static CURLcode do_sendmsg(size_t *sent, struct Curl_easy *data, int sockfd,
+ struct quicsocket *qs, const uint8_t *pkt,
+ size_t pktlen, size_t gsolen);
+
+static CURLcode send_packet_no_gso(size_t *psent, struct Curl_easy *data,
+ int sockfd, struct quicsocket *qs,
+ const uint8_t *pkt, size_t pktlen,
+ size_t gsolen)
+{
+ const uint8_t *p, *end = pkt + pktlen;
+ size_t sent;
+
+ *psent = 0;
+
+ for(p = pkt; p < end; p += gsolen) {
+ size_t len = CURLMIN(gsolen, (size_t)(end - p));
+ CURLcode curlcode = do_sendmsg(&sent, data, sockfd, qs, p, len, len);
+ if(curlcode != CURLE_OK) {
+ return curlcode;
+ }
+ *psent += sent;
+ }
+
+ return CURLE_OK;
+}
+
+static CURLcode do_sendmsg(size_t *psent, struct Curl_easy *data, int sockfd,
+ struct quicsocket *qs, const uint8_t *pkt,
+ size_t pktlen, size_t gsolen)
+{
+#ifdef HAVE_SENDMSG
+ struct iovec msg_iov;
+ struct msghdr msg = {0};
+ ssize_t sent;
+#if defined(__linux__) && defined(UDP_SEGMENT)
+ uint8_t msg_ctrl[32];
+ struct cmsghdr *cm;
+#endif
+
+ *psent = 0;
+ msg_iov.iov_base = (uint8_t *)pkt;
+ msg_iov.iov_len = pktlen;
+ msg.msg_iov = &msg_iov;
+ msg.msg_iovlen = 1;
+
+#if defined(__linux__) && defined(UDP_SEGMENT)
+ if(pktlen > gsolen) {
+ /* Only set this, when we need it. macOS, for example,
+ * does not seem to like a msg_control of length 0. */
+ msg.msg_control = msg_ctrl;
+ assert(sizeof(msg_ctrl) >= CMSG_SPACE(sizeof(uint16_t)));
+ msg.msg_controllen = CMSG_SPACE(sizeof(uint16_t));
+ cm = CMSG_FIRSTHDR(&msg);
+ cm->cmsg_level = SOL_UDP;
+ cm->cmsg_type = UDP_SEGMENT;
+ cm->cmsg_len = CMSG_LEN(sizeof(uint16_t));
+ *(uint16_t *)(void *)CMSG_DATA(cm) = gsolen & 0xffff;
+ }
+#endif
+
+
+ while((sent = sendmsg(sockfd, &msg, 0)) == -1 && SOCKERRNO == EINTR)
+ ;
+
+ if(sent == -1) {
+ switch(SOCKERRNO) {
+ case EAGAIN:
+#if EAGAIN != EWOULDBLOCK
+ case EWOULDBLOCK:
+#endif
+ return CURLE_AGAIN;
+ case EMSGSIZE:
+ /* UDP datagram is too large; caused by PMTUD. Just let it be lost. */
+ break;
+ case EIO:
+ if(pktlen > gsolen) {
+ /* GSO failure */
+ failf(data, "sendmsg() returned %zd (errno %d); disable GSO", sent,
+ SOCKERRNO);
+ qs->no_gso = TRUE;
+ return send_packet_no_gso(psent, data, sockfd, qs, pkt, pktlen,
+ gsolen);
+ }
+ /* FALLTHROUGH */
+ default:
+ failf(data, "sendmsg() returned %zd (errno %d)", sent, SOCKERRNO);
+ return CURLE_SEND_ERROR;
+ }
+ }
+ else {
+ assert(pktlen == (size_t)sent);
+ }
+#else
+ ssize_t sent;
+ (void)qs;
+ (void)gsolen;
+
+ *psent = 0;
+
+ while((sent = send(sockfd, (const char *)pkt, pktlen, 0)) == -1 &&
+ SOCKERRNO == EINTR)
+ ;
+
+ if(sent == -1) {
+ if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
+ return CURLE_AGAIN;
+ }
+ else {
+ failf(data, "send() returned %zd (errno %d)", sent, SOCKERRNO);
+ if(SOCKERRNO != EMSGSIZE) {
+ return CURLE_SEND_ERROR;
+ }
+ /* UDP datagram is too large; caused by PMTUD. Just let it be
+ lost. */
+ }
+ }
+#endif
+
+ *psent = pktlen;
+
+ return CURLE_OK;
+}
+
+static CURLcode send_packet(size_t *psent, struct Curl_easy *data, int sockfd,
+ struct quicsocket *qs, const uint8_t *pkt,
+ size_t pktlen, size_t gsolen)
+{
+ if(qs->no_gso && pktlen > gsolen) {
+ return send_packet_no_gso(psent, data, sockfd, qs, pkt, pktlen, gsolen);
+ }
+
+ return do_sendmsg(psent, data, sockfd, qs, pkt, pktlen, gsolen);
+}
+
+static void push_blocked_pkt(struct quicsocket *qs, const uint8_t *pkt,
+ size_t pktlen, size_t gsolen)
+{
+ struct blocked_pkt *blkpkt;
+
+ assert(qs->num_blocked_pkt <
+ sizeof(qs->blocked_pkt) / sizeof(qs->blocked_pkt[0]));
+
+ blkpkt = &qs->blocked_pkt[qs->num_blocked_pkt++];
+
+ blkpkt->pkt = pkt;
+ blkpkt->pktlen = pktlen;
+ blkpkt->gsolen = gsolen;
+}
+
+static CURLcode send_blocked_pkt(struct Curl_easy *data, int sockfd,
+ struct quicsocket *qs)
+{
+ size_t sent;
+ CURLcode curlcode;
+ struct blocked_pkt *blkpkt;
+
+ for(; qs->num_blocked_pkt_sent < qs->num_blocked_pkt;
+ ++qs->num_blocked_pkt_sent) {
+ blkpkt = &qs->blocked_pkt[qs->num_blocked_pkt_sent];
+ curlcode = send_packet(&sent, data, sockfd, qs, blkpkt->pkt,
+ blkpkt->pktlen, blkpkt->gsolen);
+
+ if(curlcode) {
+ if(curlcode == CURLE_AGAIN) {
+ blkpkt->pkt += sent;
+ blkpkt->pktlen -= sent;
+ }
+ return curlcode;
+ }
+ }
+
+ qs->num_blocked_pkt = 0;
+ qs->num_blocked_pkt_sent = 0;
+
+ return CURLE_OK;
+}
+
static CURLcode ng_flush_egress(struct Curl_easy *data,
int sockfd,
struct quicsocket *qs)
{
int rv;
- ssize_t sent;
- ssize_t outlen;
- uint8_t out[NGTCP2_MAX_UDP_PAYLOAD_SIZE];
+ size_t sent;
+ ngtcp2_ssize outlen;
+ uint8_t *outpos = qs->pktbuf;
+ size_t max_udp_payload_size =
+ ngtcp2_conn_get_max_tx_udp_payload_size(qs->qconn);
+ size_t path_max_udp_payload_size =
+ ngtcp2_conn_get_path_max_tx_udp_payload_size(qs->qconn);
+ size_t max_pktcnt =
+ CURLMIN(MAX_PKT_BURST, qs->pktbuflen / max_udp_payload_size);
+ size_t pktcnt = 0;
+ size_t gsolen;
ngtcp2_path_storage ps;
ngtcp2_tstamp ts = timestamp();
- struct sockaddr_storage remote_addr;
ngtcp2_tstamp expiry;
ngtcp2_duration timeout;
int64_t stream_id;
- ssize_t veccnt;
+ nghttp3_ssize veccnt;
int fin;
nghttp3_vec vec[16];
- ssize_t ndatalen;
+ ngtcp2_ssize ndatalen;
uint32_t flags;
+ CURLcode curlcode;
rv = ngtcp2_conn_handle_expiry(qs->qconn, ts);
if(rv) {
failf(data, "ngtcp2_conn_handle_expiry returned error: %s",
ngtcp2_strerror(rv));
+ ngtcp2_connection_close_error_set_transport_error_liberr(&qs->last_error,
+ rv, NULL, 0);
return CURLE_SEND_ERROR;
}
+ if(qs->num_blocked_pkt) {
+ curlcode = send_blocked_pkt(data, sockfd, qs);
+ if(curlcode) {
+ if(curlcode == CURLE_AGAIN) {
+ Curl_expire(data, 1, EXPIRE_QUIC);
+ return CURLE_OK;
+ }
+ return curlcode;
+ }
+ }
+
ngtcp2_path_storage_zero(&ps);
for(;;) {
@@ -1816,39 +2041,45 @@ static CURLcode ng_flush_egress(struct Curl_easy *data,
if(veccnt < 0) {
failf(data, "nghttp3_conn_writev_stream returned error: %s",
nghttp3_strerror((int)veccnt));
+ ngtcp2_connection_close_error_set_application_error(
+ &qs->last_error,
+ nghttp3_err_infer_quic_app_error_code((int)veccnt), NULL, 0);
return CURLE_SEND_ERROR;
}
}
flags = NGTCP2_WRITE_STREAM_FLAG_MORE |
(fin ? NGTCP2_WRITE_STREAM_FLAG_FIN : 0);
- outlen = ngtcp2_conn_writev_stream(qs->qconn, &ps.path, NULL, out,
- sizeof(out),
+ outlen = ngtcp2_conn_writev_stream(qs->qconn, &ps.path, NULL, outpos,
+ max_udp_payload_size,
&ndatalen, flags, stream_id,
(const ngtcp2_vec *)vec, veccnt, ts);
if(outlen == 0) {
+ if(outpos != qs->pktbuf) {
+ curlcode = send_packet(&sent, data, sockfd, qs, qs->pktbuf,
+ outpos - qs->pktbuf, gsolen);
+ if(curlcode) {
+ if(curlcode == CURLE_AGAIN) {
+ push_blocked_pkt(qs, qs->pktbuf + sent, outpos - qs->pktbuf - sent,
+ gsolen);
+ Curl_expire(data, 1, EXPIRE_QUIC);
+ return CURLE_OK;
+ }
+ return curlcode;
+ }
+ }
+
break;
}
if(outlen < 0) {
switch(outlen) {
case NGTCP2_ERR_STREAM_DATA_BLOCKED:
assert(ndatalen == -1);
- rv = nghttp3_conn_block_stream(qs->h3conn, stream_id);
- if(rv) {
- failf(data, "nghttp3_conn_block_stream returned error: %s\n",
- nghttp3_strerror(rv));
- return CURLE_SEND_ERROR;
- }
+ nghttp3_conn_block_stream(qs->h3conn, stream_id);
continue;
case NGTCP2_ERR_STREAM_SHUT_WR:
assert(ndatalen == -1);
- rv = nghttp3_conn_shutdown_stream_write(qs->h3conn, stream_id);
- if(rv) {
- failf(data,
- "nghttp3_conn_shutdown_stream_write returned error: %s\n",
- nghttp3_strerror(rv));
- return CURLE_SEND_ERROR;
- }
+ nghttp3_conn_shutdown_stream_write(qs->h3conn, stream_id);
continue;
case NGTCP2_ERR_WRITE_MORE:
assert(ndatalen >= 0);
@@ -1863,6 +2094,8 @@ static CURLcode ng_flush_egress(struct Curl_easy *data,
assert(ndatalen == -1);
failf(data, "ngtcp2_conn_writev_stream returned error: %s",
ngtcp2_strerror((int)outlen));
+ ngtcp2_connection_close_error_set_transport_error_liberr(
+ &qs->last_error, (int)outlen, NULL, 0);
return CURLE_SEND_ERROR;
}
}
@@ -1875,31 +2108,74 @@ static CURLcode ng_flush_egress(struct Curl_easy *data,
}
}
- memcpy(&remote_addr, ps.path.remote.addr, ps.path.remote.addrlen);
- while((sent = send(sockfd, (const char *)out, outlen, 0)) == -1 &&
- SOCKERRNO == EINTR)
- ;
+ outpos += outlen;
- if(sent == -1) {
- if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
- /* TODO Cache packet */
- break;
+ if(pktcnt == 0) {
+ gsolen = outlen;
+ }
+ else if((size_t)outlen > gsolen ||
+ (gsolen > path_max_udp_payload_size &&
+ (size_t)outlen != gsolen)) {
+ /* Packet larger than path_max_udp_payload_size is PMTUD probe
+ packet and it might not be sent because of EMSGSIZE. Send
+ them separately to minimize the loss. */
+ curlcode = send_packet(&sent, data, sockfd, qs, qs->pktbuf,
+ outpos - outlen - qs->pktbuf, gsolen);
+ if(curlcode) {
+ if(curlcode == CURLE_AGAIN) {
+ push_blocked_pkt(qs, qs->pktbuf + sent,
+ outpos - outlen - qs->pktbuf - sent, gsolen);
+ push_blocked_pkt(qs, outpos - outlen, outlen, outlen);
+ Curl_expire(data, 1, EXPIRE_QUIC);
+ return CURLE_OK;
+ }
+ return curlcode;
}
- else {
- failf(data, "send() returned %zd (errno %d)", sent,
- SOCKERRNO);
- return CURLE_SEND_ERROR;
+ curlcode = send_packet(&sent, data, sockfd, qs, outpos - outlen, outlen,
+ outlen);
+ if(curlcode) {
+ if(curlcode == CURLE_AGAIN) {
+ assert(0 == sent);
+ push_blocked_pkt(qs, outpos - outlen, outlen, outlen);
+ Curl_expire(data, 1, EXPIRE_QUIC);
+ return CURLE_OK;
+ }
+ return curlcode;
+ }
+
+ pktcnt = 0;
+ outpos = qs->pktbuf;
+ continue;
+ }
+
+ if(++pktcnt >= max_pktcnt || (size_t)outlen < gsolen) {
+ curlcode = send_packet(&sent, data, sockfd, qs, qs->pktbuf,
+ outpos - qs->pktbuf, gsolen);
+ if(curlcode) {
+ if(curlcode == CURLE_AGAIN) {
+ push_blocked_pkt(qs, qs->pktbuf + sent, outpos - qs->pktbuf - sent,
+ gsolen);
+ Curl_expire(data, 1, EXPIRE_QUIC);
+ return CURLE_OK;
+ }
+ return curlcode;
}
+
+ pktcnt = 0;
+ outpos = qs->pktbuf;
}
}
expiry = ngtcp2_conn_get_expiry(qs->qconn);
if(expiry != UINT64_MAX) {
if(expiry <= ts) {
- timeout = NGTCP2_MILLISECONDS;
+ timeout = 0;
}
else {
timeout = expiry - ts;
+ if(timeout % NGTCP2_MILLISECONDS) {
+ timeout += NGTCP2_MILLISECONDS;
+ }
}
Curl_expire(data, timeout / NGTCP2_MILLISECONDS, EXPIRE_QUIC);
}
@@ -1935,6 +2211,7 @@ void Curl_quic_done(struct Curl_easy *data, bool premature)
/* only for HTTP/3 transfers */
struct HTTP *stream = data->req.p.http;
Curl_dyn_free(&stream->overflow);
+ free(stream->h3out);
}
}
@@ -1952,4 +2229,26 @@ bool Curl_quic_data_pending(const struct Curl_easy *data)
return Curl_dyn_len(&stream->overflow) > 0;
}
+/*
+ * Called from transfer.c:Curl_readwrite when neither HTTP level read
+ * nor write is performed. It is a good place to handle timer expiry
+ * for QUIC transport.
+ */
+CURLcode Curl_quic_idle(struct Curl_easy *data)
+{
+ struct connectdata *conn = data->conn;
+ curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
+ struct quicsocket *qs = conn->quic;
+
+ if(ngtcp2_conn_get_expiry(qs->qconn) > timestamp()) {
+ return CURLE_OK;
+ }
+
+ if(ng_flush_egress(data, sockfd, qs)) {
+ return CURLE_SEND_ERROR;
+ }
+
+ return CURLE_OK;
+}
+
#endif
diff --git a/lib/vquic/ngtcp2.h b/lib/vquic/ngtcp2.h
index 501453042..6539f5fef 100644
--- a/lib/vquic/ngtcp2.h
+++ b/lib/vquic/ngtcp2.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,20 +20,36 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#ifdef USE_NGTCP2
-#include <ngtcp2/ngtcp2.h>
+#ifdef HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+
+#include <ngtcp2/ngtcp2_crypto.h>
#include <nghttp3/nghttp3.h>
#ifdef USE_OPENSSL
#include <openssl/ssl.h>
#elif defined(USE_GNUTLS)
#include <gnutls/gnutls.h>
+#elif defined(USE_WOLFSSL)
+#include <wolfssl/options.h>
+#include <wolfssl/ssl.h>
+#include <wolfssl/quic.h>
#endif
+struct blocked_pkt {
+ const uint8_t *pkt;
+ size_t pktlen;
+ size_t gsolen;
+};
+
struct quicsocket {
struct connectdata *conn; /* point back to the connection */
ngtcp2_conn *qconn;
@@ -42,17 +58,29 @@ struct quicsocket {
uint32_t version;
ngtcp2_settings settings;
ngtcp2_transport_params transport_params;
+ ngtcp2_connection_close_error last_error;
+ ngtcp2_crypto_conn_ref conn_ref;
#ifdef USE_OPENSSL
SSL_CTX *sslctx;
SSL *ssl;
#elif defined(USE_GNUTLS)
gnutls_certificate_credentials_t cred;
gnutls_session_t ssl;
+#elif defined(USE_WOLFSSL)
+ WOLFSSL_CTX *sslctx;
+ WOLFSSL *ssl;
#endif
- /* the last TLS alert description generated by the local endpoint */
- uint8_t tls_alert;
struct sockaddr_storage local_addr;
socklen_t local_addrlen;
+ bool no_gso;
+ uint8_t *pktbuf;
+ size_t pktbuflen;
+ /* the number of entries in blocked_pkt */
+ size_t num_blocked_pkt;
+ /* the number of processed entries in blocked_pkt */
+ size_t num_blocked_pkt_sent;
+ /* the packets blocked by sendmsg (EAGAIN or EWOULDBLOCK) */
+ struct blocked_pkt blocked_pkt[2];
nghttp3_conn *h3conn;
nghttp3_settings h3settings;
diff --git a/lib/vquic/quiche.c b/lib/vquic/quiche.c
index f7577605c..a52a7e8e2 100644
--- a/lib/vquic/quiche.c
+++ b/lib/vquic/quiche.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -25,6 +27,7 @@
#ifdef USE_QUICHE
#include <quiche.h>
#include <openssl/err.h>
+#include <openssl/ssl.h>
#include "urldata.h"
#include "sendf.h"
#include "strdup.h"
@@ -35,6 +38,10 @@
#include "connect.h"
#include "strerror.h"
#include "vquic.h"
+#include "transfer.h"
+#include "h2h3.h"
+#include "vtls/openssl.h"
+#include "vtls/keylog.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -172,6 +179,76 @@ static void quiche_debug_log(const char *line, void *argp)
}
#endif
+static void keylog_callback(const SSL *ssl, const char *line)
+{
+ (void)ssl;
+ Curl_tls_keylog_write_line(line);
+}
+
+static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
+{
+ SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method());
+
+ SSL_CTX_set_alpn_protos(ssl_ctx,
+ (const uint8_t *)QUICHE_H3_APPLICATION_PROTOCOL,
+ sizeof(QUICHE_H3_APPLICATION_PROTOCOL) - 1);
+
+ SSL_CTX_set_default_verify_paths(ssl_ctx);
+
+ /* Open the file if a TLS or QUIC backend has not done this before. */
+ Curl_tls_keylog_open();
+ if(Curl_tls_keylog_enabled()) {
+ SSL_CTX_set_keylog_callback(ssl_ctx, keylog_callback);
+ }
+
+ {
+ struct connectdata *conn = data->conn;
+ if(conn->ssl_config.verifypeer) {
+ const char * const ssl_cafile = conn->ssl_config.CAfile;
+ const char * const ssl_capath = conn->ssl_config.CApath;
+ if(ssl_cafile || ssl_capath) {
+ SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
+ /* tell OpenSSL where to find CA certificates that are used to verify
+ the server's certificate. */
+ if(!SSL_CTX_load_verify_locations(ssl_ctx, ssl_cafile, ssl_capath)) {
+ /* Fail if we insist on successfully verifying the server. */
+ failf(data, "error setting certificate verify locations:"
+ " CAfile: %s CApath: %s",
+ ssl_cafile ? ssl_cafile : "none",
+ ssl_capath ? ssl_capath : "none");
+ return NULL;
+ }
+ infof(data, " CAfile: %s", ssl_cafile ? ssl_cafile : "none");
+ infof(data, " CApath: %s", ssl_capath ? ssl_capath : "none");
+ }
+#ifdef CURL_CA_FALLBACK
+ else {
+ /* verifying the peer without any CA certificates won't work so
+ use openssl's built-in default as fallback */
+ SSL_CTX_set_default_verify_paths(ssl_ctx);
+ }
+#endif
+ }
+ }
+ return ssl_ctx;
+}
+
+static int quic_init_ssl(struct quicsocket *qs, struct connectdata *conn)
+{
+ /* this will need some attention when HTTPS proxy over QUIC get fixed */
+ const char * const hostname = conn->host.name;
+
+ DEBUGASSERT(!qs->ssl);
+ qs->ssl = SSL_new(qs->sslctx);
+
+ SSL_set_app_data(qs->ssl, qs);
+
+ /* set SNI */
+ SSL_set_tlsext_host_name(qs->ssl, hostname);
+ return 0;
+}
+
+
CURLcode Curl_quic_connect(struct Curl_easy *data,
struct connectdata *conn, curl_socket_t sockfd,
int sockindex,
@@ -179,9 +256,9 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
{
CURLcode result;
struct quicsocket *qs = &conn->hequic[sockindex];
- char *keylog_file = NULL;
char ipbuf[40];
int port;
+ int rv;
#ifdef DEBUG_QUICHE
/* initialize debug log callback only once */
@@ -216,25 +293,33 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
sizeof(QUICHE_H3_APPLICATION_PROTOCOL)
- 1);
+ qs->sslctx = quic_ssl_ctx(data);
+ if(!qs->sslctx)
+ return CURLE_QUIC_CONNECT_ERROR;
+
+ if(quic_init_ssl(qs, conn))
+ return CURLE_QUIC_CONNECT_ERROR;
+
result = Curl_rand(data, qs->scid, sizeof(qs->scid));
if(result)
return result;
- keylog_file = getenv("SSLKEYLOGFILE");
-
- if(keylog_file)
- quiche_config_log_keys(qs->cfg);
-
- qs->conn = quiche_connect(conn->host.name, (const uint8_t *) qs->scid,
- sizeof(qs->scid), addr, addrlen, qs->cfg);
+ qs->local_addrlen = sizeof(qs->local_addr);
+ rv = getsockname(sockfd, (struct sockaddr *)&qs->local_addr,
+ &qs->local_addrlen);
+ if(rv == -1)
+ return CURLE_QUIC_CONNECT_ERROR;
+
+ qs->conn = quiche_conn_new_with_tls((const uint8_t *) qs->scid,
+ sizeof(qs->scid), NULL, 0,
+ (struct sockaddr *)&qs->local_addr,
+ qs->local_addrlen, addr, addrlen,
+ qs->cfg, qs->ssl, false);
if(!qs->conn) {
failf(data, "can't create quiche connection");
return CURLE_OUT_OF_MEMORY;
}
- if(keylog_file)
- quiche_conn_set_keylog_path(qs->conn, keylog_file);
-
/* Known to not work on Windows */
#if !defined(WIN32) && defined(HAVE_QUICHE_CONN_SET_QLOG_FD)
{
@@ -284,7 +369,8 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
return CURLE_OK;
}
-static CURLcode quiche_has_connected(struct connectdata *conn,
+static CURLcode quiche_has_connected(struct Curl_easy *data,
+ struct connectdata *conn,
int sockindex,
int tempindex)
{
@@ -298,6 +384,21 @@ static CURLcode quiche_has_connected(struct connectdata *conn,
conn->httpversion = 30;
conn->bundle->multiuse = BUNDLE_MULTIPLEX;
+ if(conn->ssl_config.verifyhost) {
+ X509 *server_cert;
+ server_cert = SSL_get_peer_certificate(qs->ssl);
+ if(!server_cert) {
+ return CURLE_PEER_FAILED_VERIFICATION;
+ }
+ result = Curl_ossl_verifyhost(data, conn, server_cert);
+ X509_free(server_cert);
+ if(result)
+ return result;
+ infof(data, "Verified certificate just fine");
+ }
+ else
+ infof(data, "Skipped certificate verification");
+
qs->h3config = quiche_h3_config_new();
if(!qs->h3config)
return CURLE_OUT_OF_MEMORY;
@@ -315,6 +416,10 @@ static CURLcode quiche_has_connected(struct connectdata *conn,
qs->cfg = NULL;
qs->conn = NULL;
}
+ if(data->set.ssl.certinfo)
+ /* asked to gather certificate info */
+ (void)Curl_ossl_certchain(data, qs->ssl);
+
return CURLE_OK;
fail:
quiche_h3_config_free(qs->h3config);
@@ -344,8 +449,8 @@ CURLcode Curl_quic_is_connected(struct Curl_easy *data,
if(quiche_conn_is_established(qs->conn)) {
*done = TRUE;
- result = quiche_has_connected(conn, 0, sockindex);
- DEBUGF(infof(data, "quiche established connection!"));
+ result = quiche_has_connected(data, conn, 0, sockindex);
+ DEBUGF(infof(data, "quiche established connection"));
}
return result;
@@ -386,13 +491,26 @@ static CURLcode process_ingress(struct Curl_easy *data, int sockfd,
recv_info.from = (struct sockaddr *) &from;
recv_info.from_len = from_len;
+ recv_info.to = (struct sockaddr *) &qs->local_addr;
+ recv_info.to_len = qs->local_addrlen;
recvd = quiche_conn_recv(qs->conn, buf, recvd, &recv_info);
if(recvd == QUICHE_ERR_DONE)
break;
if(recvd < 0) {
+ if(QUICHE_ERR_TLS_FAIL == recvd) {
+ long verify_ok = SSL_get_verify_result(qs->ssl);
+ if(verify_ok != X509_V_OK) {
+ failf(data, "SSL certificate problem: %s",
+ X509_verify_cert_error_string(verify_ok));
+
+ return CURLE_PEER_FAILED_VERIFICATION;
+ }
+ }
+
failf(data, "quiche_conn_recv() == %zd", recvd);
+
return CURLE_RECV_ERROR;
}
} while(1);
@@ -451,7 +569,7 @@ static int cb_each_header(uint8_t *name, size_t name_len,
struct h3h1header *headers = (struct h3h1header *)argp;
size_t olen = 0;
- if((name_len == 7) && !strncmp(":status", (char *)name, 7)) {
+ if((name_len == 7) && !strncmp(H2H3_PSEUDO_STATUS, (char *)name, 7)) {
msnprintf(headers->dest,
headers->destlen, "HTTP/3 %.*s\n",
(int) value_len, value);
@@ -496,6 +614,19 @@ static ssize_t h3_stream_recv(struct Curl_easy *data,
return -1;
}
+ if(qs->h3_recving) {
+ /* body receiving state */
+ rcode = quiche_h3_recv_body(qs->h3c, qs->conn, stream->stream3_id,
+ (unsigned char *)buf, buffersize);
+ if(rcode <= 0) {
+ recvd = -1;
+ qs->h3_recving = FALSE;
+ /* fall through into the while loop below */
+ }
+ else
+ recvd = rcode;
+ }
+
while(recvd < 0) {
int64_t s = quiche_h3_conn_poll(qs->h3c, qs->conn, &ev);
if(s < 0)
@@ -537,9 +668,15 @@ static ssize_t h3_stream_recv(struct Curl_easy *data,
recvd = -1;
break;
}
+ qs->h3_recving = TRUE;
recvd += rcode;
break;
+ case QUICHE_H3_EVENT_RESET:
+ streamclose(conn, "Stream reset");
+ *curlcode = CURLE_PARTIAL_FILE;
+ return -1;
+
case QUICHE_H3_EVENT_FINISHED:
streamclose(conn, "End of stream");
recvd = 0; /* end of stream */
@@ -585,10 +722,12 @@ static ssize_t h3_stream_send(struct Curl_easy *data,
sent = len;
}
else {
- H3BUGF(infof(data, "Pass on %zd body bytes to quiche", len));
sent = quiche_h3_send_body(qs->h3c, qs->conn, stream->stream3_id,
(uint8_t *)mem, len, FALSE);
- if(sent < 0) {
+ if(sent == QUICHE_H3_ERR_DONE) {
+ sent = 0;
+ }
+ else if(sent < 0) {
*curlcode = CURLE_SEND_ERROR;
return -1;
}
@@ -618,175 +757,34 @@ void Curl_quic_ver(char *p, size_t len)
static CURLcode http_request(struct Curl_easy *data, const void *mem,
size_t len)
{
- /*
- */
struct connectdata *conn = data->conn;
struct HTTP *stream = data->req.p.http;
size_t nheader;
- size_t i;
- size_t authority_idx;
- char *hdbuf = (char *)mem;
- char *end, *line_end;
int64_t stream3_id;
quiche_h3_header *nva = NULL;
struct quicsocket *qs = conn->quic;
CURLcode result = CURLE_OK;
+ struct h2h3req *hreq = NULL;
stream->h3req = TRUE; /* senf off! */
- /* Calculate number of headers contained in [mem, mem + len). Assumes a
- correctly generated HTTP header field block. */
- nheader = 0;
- for(i = 1; i < len; ++i) {
- if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
- ++nheader;
- ++i;
- }
- }
- if(nheader < 2)
+ result = Curl_pseudo_headers(data, mem, len, &hreq);
+ if(result)
goto fail;
+ nheader = hreq->entries;
- /* We counted additional 2 \r\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(quiche_h3_header) * nheader);
if(!nva) {
result = CURLE_OUT_OF_MEMORY;
goto fail;
}
-
- /* Extract :method, :path from request line
- We do line endings with CRLF so checking for CR is enough */
- line_end = memchr(hdbuf, '\r', len);
- if(!line_end) {
- result = CURLE_BAD_FUNCTION_ARGUMENT; /* internal error */
- goto fail;
- }
-
- /* Method does not contain spaces */
- end = memchr(hdbuf, ' ', line_end - hdbuf);
- if(!end || end == hdbuf)
- goto fail;
- nva[0].name = (unsigned char *)":method";
- nva[0].name_len = strlen((char *)nva[0].name);
- nva[0].value = (unsigned char *)hdbuf;
- nva[0].value_len = (size_t)(end - hdbuf);
-
- hdbuf = end + 1;
-
- /* Path may contain spaces so scan backwards */
- end = NULL;
- for(i = (size_t)(line_end - hdbuf); i; --i) {
- if(hdbuf[i - 1] == ' ') {
- end = &hdbuf[i - 1];
- break;
- }
- }
- if(!end || end == hdbuf)
- goto fail;
- nva[1].name = (unsigned char *)":path";
- nva[1].name_len = strlen((char *)nva[1].name);
- nva[1].value = (unsigned char *)hdbuf;
- nva[1].value_len = (size_t)(end - hdbuf);
-
- nva[2].name = (unsigned char *)":scheme";
- nva[2].name_len = 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].value_len = strlen((char *)nva[2].value);
-
-
- authority_idx = 0;
- i = 3;
- while(i < nheader) {
- size_t hlen;
-
- hdbuf = line_end + 2;
-
- /* check for next CR, but only within the piece of data left in the given
- buffer */
- line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
- if(!line_end || (line_end == hdbuf))
- goto fail;
-
- /* header continuation lines are not supported */
- if(*hdbuf == ' ' || *hdbuf == '\t')
- goto fail;
-
- for(end = hdbuf; end < line_end && *end != ':'; ++end)
- ;
- if(end == hdbuf || end == line_end)
- goto fail;
- hlen = end - hdbuf;
-
- if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
- authority_idx = i;
- nva[i].name = (unsigned char *)":authority";
- nva[i].name_len = strlen((char *)nva[i].name);
- }
- else {
- nva[i].name_len = (size_t)(end - hdbuf);
- /* Lower case the header name for HTTP/3 */
- Curl_strntolower((char *)hdbuf, hdbuf, nva[i].name_len);
- nva[i].name = (unsigned char *)hdbuf;
- }
- hdbuf = end + 1;
- while(*hdbuf == ' ' || *hdbuf == '\t')
- ++hdbuf;
- end = line_end;
-
-#if 0 /* This should probably go in more or less like this */
- switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
- end - hdbuf)) {
- case HEADERINST_IGNORE:
- /* skip header fields prohibited by HTTP/2 specification. */
- --nheader;
- continue;
- case HEADERINST_TE_TRAILERS:
- nva[i].value = (uint8_t*)"trailers";
- nva[i].value_len = sizeof("trailers") - 1;
- break;
- default:
- nva[i].value = (unsigned char *)hdbuf;
- nva[i].value_len = (size_t)(end - hdbuf);
- }
-#endif
- nva[i].value = (unsigned char *)hdbuf;
- nva[i].value_len = (size_t)(end - hdbuf);
-
- ++i;
- }
-
- /* :authority must come before non-pseudo header fields */
- if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
- quiche_h3_header authority = nva[authority_idx];
- for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
- nva[i] = nva[i - 1];
- }
- nva[i] = authority;
- }
-
- /* Warn stream may be rejected if cumulative length of headers is too
- large. */
-#define MAX_ACC 60000 /* <64KB to account for some overhead */
- {
- size_t acc = 0;
-
- for(i = 0; i < nheader; ++i) {
- acc += nva[i].name_len + nva[i].value_len;
-
- H3BUGF(infof(data, "h3 [%.*s: %.*s]",
- nva[i].name_len, nva[i].name,
- nva[i].value_len, nva[i].value));
- }
-
- if(acc > MAX_ACC) {
- infof(data, "http_request: Warning: The cumulative length of all "
- "headers exceeds %d bytes and that could cause the "
- "stream to be rejected.", MAX_ACC);
+ else {
+ unsigned int i;
+ for(i = 0; i < nheader; i++) {
+ nva[i].name = (unsigned char *)hreq->header[i].name;
+ nva[i].name_len = hreq->header[i].namelen;
+ nva[i].value = (unsigned char *)hreq->header[i].value;
+ nva[i].value_len = hreq->header[i].valuelen;
}
}
@@ -808,7 +806,7 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
(uint8_t *)data->set.postfields,
stream->upload_left, TRUE);
if(sent <= 0) {
- failf(data, "quiche_h3_send_body failed!");
+ failf(data, "quiche_h3_send_body failed");
result = CURLE_SEND_ERROR;
}
stream->upload_left = 0; /* nothing left to send */
@@ -833,10 +831,12 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
stream3_id, (void *)data);
stream->stream3_id = stream3_id;
+ Curl_pseudo_free(hreq);
return CURLE_OK;
fail:
free(nva);
+ Curl_pseudo_free(hreq);
return result;
}
@@ -881,4 +881,15 @@ bool Curl_quic_data_pending(const struct Curl_easy *data)
return FALSE;
}
+/*
+ * Called from transfer.c:Curl_readwrite when neither HTTP level read
+ * nor write is performed. It is a good place to handle timer expiry
+ * for QUIC transport.
+ */
+CURLcode Curl_quic_idle(struct Curl_easy *data)
+{
+ (void)data;
+ return CURLE_OK;
+}
+
#endif
diff --git a/lib/vquic/quiche.h b/lib/vquic/quiche.h
index d311e9988..2da65f5f4 100644
--- a/lib/vquic/quiche.h
+++ b/lib/vquic/quiche.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -27,6 +29,7 @@
#ifdef USE_QUICHE
#include <quiche.h>
+#include <openssl/ssl.h>
struct quic_handshake {
char *buf; /* pointer to the buffer */
@@ -43,6 +46,11 @@ struct quicsocket {
uint8_t scid[QUICHE_MAX_CONN_ID_LEN];
curl_socket_t sockfd;
uint32_t version;
+ SSL_CTX *sslctx;
+ SSL *ssl;
+ bool h3_recving; /* TRUE when in h3-body-reading state */
+ struct sockaddr_storage local_addr;
+ socklen_t local_addrlen;
};
#endif
diff --git a/lib/vquic/vquic.c b/lib/vquic/vquic.c
index 7c0cc6df2..e52a4f301 100644
--- a/lib/vquic/vquic.c
+++ b/lib/vquic/vquic.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -67,7 +69,7 @@ CURLcode Curl_qlogdir(struct Curl_easy *data,
result = Curl_dyn_add(&fname, hex);
}
if(!result)
- result = Curl_dyn_add(&fname, ".qlog");
+ result = Curl_dyn_add(&fname, ".sqlog");
if(!result) {
int qlogfd = open(Curl_dyn_ptr(&fname), QLOGMODE,
diff --git a/lib/vquic/vquic.h b/lib/vquic/vquic.h
index eb8a893d9..8f599a8f4 100644
--- a/lib/vquic/vquic.h
+++ b/lib/vquic/vquic.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vssh/libssh.c b/lib/vssh/libssh.c
index 3e317e87c..0105e4079 100644
--- a/lib/vssh/libssh.c
+++ b/lib/vssh/libssh.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2017 - 2021 Red Hat, Inc.
+ * Copyright (C) 2017 - 2022 Red Hat, Inc.
*
* Authors: Nikos Mavrogiannopoulos, Tomas Mraz, Stanislav Zidek,
* Robert Kolcun, Andreas Schneider
@@ -21,6 +21,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -32,10 +34,6 @@
#include <libssh/libssh.h>
#include <libssh/sftp.h>
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
@@ -81,18 +79,29 @@
#include "multiif.h"
#include "select.h"
#include "warnless.h"
+#include "curl_path.h"
-/* for permission and open flags */
-#include <sys/types.h>
+#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
+#ifdef HAVE_FCNTL_H
#include <fcntl.h>
+#endif
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
-#include "curl_path.h"
+
+/* in 0.10.0 or later, ignore deprecated warnings */
+#if defined(__GNUC__) && \
+ (LIBSSH_VERSION_MINOR >= 10) || \
+ (LIBSSH_VERSION_MAJOR > 0)
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
/* A recent macro provided by libssh. Or make our own. */
#ifndef SSH_STRING_FREE_CHAR
@@ -105,6 +114,14 @@
} while(0)
#endif
+/* These stat values may not be the same as the user's S_IFMT / S_IFLNK */
+#ifndef SSH_S_IFMT
+#define SSH_S_IFMT 00170000
+#endif
+#ifndef SSH_S_IFLNK
+#define SSH_S_IFLNK 0120000
+#endif
+
/* Local functions: */
static CURLcode myssh_connect(struct Curl_easy *data, bool *done);
static CURLcode myssh_multi_statemach(struct Curl_easy *data,
@@ -946,10 +963,9 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
rc = sftp_init(sshc->sftp_session);
if(rc != SSH_OK) {
- rc = sftp_get_error(sshc->sftp_session);
failf(data, "Failure initializing sftp session: %s",
ssh_get_error(sshc->ssh_session));
- MOVE_TO_ERROR_STATE(sftp_error_to_CURLE(rc));
+ MOVE_TO_ERROR_STATE(sftp_error_to_CURLE(SSH_FX_FAILURE));
break;
}
state(data, SSH_SFTP_REALPATH);
@@ -1468,8 +1484,8 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
memcpy(sshc->readdir_line, sshc->readdir_longentry,
sshc->readdir_currLen);
if((sshc->readdir_attrs->flags & SSH_FILEXFER_ATTR_PERMISSIONS) &&
- ((sshc->readdir_attrs->permissions & S_IFMT) ==
- S_IFLNK)) {
+ ((sshc->readdir_attrs->permissions & SSH_S_IFMT) ==
+ SSH_S_IFLNK)) {
sshc->readdir_linkPath = aprintf("%s%s", protop->path,
sshc->readdir_filename);
@@ -1650,7 +1666,7 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
if(from_t == CURL_OFFT_FLOW) {
return CURLE_RANGE_ERROR;
}
- while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
+ while(*ptr && (ISBLANK(*ptr) || (*ptr == '-')))
ptr++;
to_t = curlx_strtoofft(ptr, &ptr2, 0, &to);
if(to_t == CURL_OFFT_FLOW) {
@@ -1962,6 +1978,13 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
}
ssh_disconnect(sshc->ssh_session);
+ if(!ssh_version(SSH_VERSION_INT(0, 10, 0))) {
+ /* conn->sock[FIRSTSOCKET] is closed by ssh_disconnect behind our back,
+ explicitly mark it as closed with the memdebug macro. This libssh
+ bug is fixed in 0.10.0. */
+ fake_sclose(conn->sock[FIRSTSOCKET]);
+ conn->sock[FIRSTSOCKET] = CURL_SOCKET_BAD;
+ }
SSH_STRING_FREE_CHAR(sshc->homedir);
data->state.most_recent_ftp_entrypath = NULL;
@@ -2055,6 +2078,9 @@ static int myssh_getsock(struct Curl_easy *data,
if(conn->waitfor & KEEP_SEND)
bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
+ if(!conn->waitfor)
+ bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
+
return bitmap;
}
@@ -2687,7 +2713,7 @@ static void sftp_quote(struct Curl_easy *data)
*/
cp = strchr(cmd, ' ');
if(!cp) {
- failf(data, "Syntax error in SFTP command. Supply parameter(s)!");
+ failf(data, "Syntax error in SFTP command. Supply parameter(s)");
state(data, SSH_SFTP_CLOSE);
sshc->nextstate = SSH_NO_STATE;
sshc->actualcode = CURLE_QUOTE_ERROR;
@@ -2891,32 +2917,33 @@ static void sftp_quote_stat(struct Curl_easy *data)
}
sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_UIDGID;
}
- else if(strncasecompare(cmd, "atime", 5)) {
+ else if(strncasecompare(cmd, "atime", 5) ||
+ strncasecompare(cmd, "mtime", 5)) {
time_t date = Curl_getdate_capped(sshc->quote_path1);
+ bool fail = FALSE;
if(date == -1) {
- Curl_safefree(sshc->quote_path1);
- Curl_safefree(sshc->quote_path2);
- failf(data, "Syntax error: incorrect access date format");
- state(data, SSH_SFTP_CLOSE);
- sshc->nextstate = SSH_NO_STATE;
- sshc->actualcode = CURLE_QUOTE_ERROR;
- return;
+ failf(data, "incorrect date format for %.*s", 5, cmd);
+ fail = TRUE;
}
- sshc->quote_attrs->atime = (uint32_t)date;
- sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_ACMODTIME;
- }
- else if(strncasecompare(cmd, "mtime", 5)) {
- time_t date = Curl_getdate_capped(sshc->quote_path1);
- if(date == -1) {
+#if SIZEOF_TIME_T > 4
+ else if(date > 0xffffffff) {
+ failf(data, "date overflow");
+ fail = TRUE; /* avoid setting a capped time */
+ }
+#endif
+ if(fail) {
Curl_safefree(sshc->quote_path1);
Curl_safefree(sshc->quote_path2);
- failf(data, "Syntax error: incorrect modification date format");
state(data, SSH_SFTP_CLOSE);
sshc->nextstate = SSH_NO_STATE;
sshc->actualcode = CURLE_QUOTE_ERROR;
return;
}
- sshc->quote_attrs->mtime = (uint32_t)date;
+ if(strncasecompare(cmd, "atime", 5))
+ sshc->quote_attrs->atime = (uint32_t)date;
+ else /* mtime */
+ sshc->quote_attrs->mtime = (uint32_t)date;
+
sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_ACMODTIME;
}
@@ -2941,7 +2968,7 @@ void Curl_ssh_cleanup(void)
void Curl_ssh_version(char *buffer, size_t buflen)
{
- (void)msnprintf(buffer, buflen, "libssh/%s", CURL_LIBSSH_VERSION);
+ (void)msnprintf(buffer, buflen, "libssh/%s", ssh_version(0));
}
#endif /* USE_LIBSSH */
diff --git a/lib/vssh/libssh2.c b/lib/vssh/libssh2.c
index 581bc1be8..5a2c0f8bb 100644
--- a/lib/vssh/libssh2.c
+++ b/lib/vssh/libssh2.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* #define CURL_LIBSSH2_DEBUG */
@@ -433,11 +435,49 @@ static int sshkeycallback(struct Curl_easy *easy,
* libssh2 1.2.8 fixed the problem with 32bit ints used for sockets on win64.
*/
#ifdef HAVE_LIBSSH2_SESSION_HANDSHAKE
-#define libssh2_session_startup(x,y) libssh2_session_handshake(x,y)
+#define session_startup(x,y) libssh2_session_handshake(x, y)
+#else
+#define session_startup(x,y) libssh2_session_startup(x, (int)y)
+#endif
+static int convert_ssh2_keytype(int sshkeytype)
+{
+ int keytype = CURLKHTYPE_UNKNOWN;
+ switch(sshkeytype) {
+ case LIBSSH2_HOSTKEY_TYPE_RSA:
+ keytype = CURLKHTYPE_RSA;
+ break;
+ case LIBSSH2_HOSTKEY_TYPE_DSS:
+ keytype = CURLKHTYPE_DSS;
+ break;
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_256
+ case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
+ keytype = CURLKHTYPE_ECDSA;
+ break;
#endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_384
+ case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
+ keytype = CURLKHTYPE_ECDSA;
+ break;
+#endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_521
+ case LIBSSH2_HOSTKEY_TYPE_ECDSA_521:
+ keytype = CURLKHTYPE_ECDSA;
+ break;
+#endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ED25519
+ case LIBSSH2_HOSTKEY_TYPE_ED25519:
+ keytype = CURLKHTYPE_ED25519;
+ break;
+#endif
+ }
+ return keytype;
+}
static CURLcode ssh_knownhost(struct Curl_easy *data)
{
+ int sshkeytype = 0;
+ size_t keylen = 0;
+ int rc = 0;
CURLcode result = CURLE_OK;
#ifdef HAVE_LIBSSH2_KNOWNHOST_API
@@ -446,11 +486,8 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
struct connectdata *conn = data->conn;
struct ssh_conn *sshc = &conn->proto.sshc;
struct libssh2_knownhost *host = NULL;
- int rc;
- int keytype;
- size_t keylen;
const char *remotekey = libssh2_session_hostkey(sshc->ssh_session,
- &keylen, &keytype);
+ &keylen, &sshkeytype);
int keycheck = LIBSSH2_KNOWNHOST_CHECK_FAILURE;
int keybit = 0;
@@ -462,12 +499,12 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
*/
enum curl_khmatch keymatch;
curl_sshkeycallback func =
- data->set.ssh_keyfunc?data->set.ssh_keyfunc:sshkeycallback;
+ data->set.ssh_keyfunc ? data->set.ssh_keyfunc : sshkeycallback;
struct curl_khkey knownkey;
struct curl_khkey *knownkeyp = NULL;
struct curl_khkey foundkey;
- switch(keytype) {
+ switch(sshkeytype) {
case LIBSSH2_HOSTKEY_TYPE_RSA:
keybit = LIBSSH2_KNOWNHOST_KEY_SSHRSA;
break;
@@ -495,7 +532,7 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
break;
#endif
default:
- infof(data, "unsupported key type, can't check knownhosts!");
+ infof(data, "unsupported key type, can't check knownhosts");
keybit = 0;
break;
}
@@ -531,16 +568,14 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
if(keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH) {
knownkey.key = host->key;
knownkey.len = 0;
- knownkey.keytype = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
- CURLKHTYPE_RSA : CURLKHTYPE_DSS;
+ knownkey.keytype = convert_ssh2_keytype(sshkeytype);
knownkeyp = &knownkey;
}
/* setup 'foundkey' */
foundkey.key = remotekey;
foundkey.len = keylen;
- foundkey.keytype = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
- CURLKHTYPE_RSA : CURLKHTYPE_DSS;
+ foundkey.keytype = convert_ssh2_keytype(sshkeytype);
/*
* if any of the LIBSSH2_KNOWNHOST_CHECK_* defines and the
@@ -590,7 +625,7 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
LIBSSH2_KNOWNHOST_KEYENC_RAW|
keybit, NULL);
if(addrc)
- infof(data, "Warning adding the known host %s failed!",
+ infof(data, "WARNING: adding the known host %s failed",
conn->host.name);
else if(rc == CURLKHSTAT_FINE_ADD_TO_FILE ||
rc == CURLKHSTAT_FINE_REPLACE) {
@@ -601,7 +636,7 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
data->set.str[STRING_SSH_KNOWNHOSTS],
LIBSSH2_KNOWNHOST_FILE_OPENSSH);
if(wrc) {
- infof(data, "Warning, writing %s failed!",
+ infof(data, "WARNING: writing %s failed",
data->set.str[STRING_SSH_KNOWNHOSTS]);
}
}
@@ -637,7 +672,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
#ifdef LIBSSH2_HOSTKEY_HASH_SHA256
/* The fingerprint points to static storage (!), don't free() it. */
fingerprint = libssh2_hostkey_hash(sshc->ssh_session,
- LIBSSH2_HOSTKEY_HASH_SHA256);
+ LIBSSH2_HOSTKEY_HASH_SHA256);
#else
const char *hostkey;
size_t len = 0;
@@ -652,8 +687,8 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
if(!fingerprint) {
failf(data,
- "Denied establishing ssh session: sha256 fingerprint "
- "not available");
+ "Denied establishing ssh session: sha256 fingerprint "
+ "not available");
state(data, SSH_SESSION_FREE);
sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
return sshc->actualcode;
@@ -661,7 +696,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
/* The length of fingerprint is 32 bytes for SHA256.
* See libssh2_hostkey_hash documentation. */
- if(Curl_base64_encode(data, fingerprint, 32, &fingerprint_b64,
+ if(Curl_base64_encode(fingerprint, 32, &fingerprint_b64,
&fingerprint_b64_len) != CURLE_OK) {
state(data, SSH_SESSION_FREE);
sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
@@ -692,12 +727,12 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
* against a known fingerprint, if available.
*/
if((pub_pos != b64_pos) ||
- Curl_strncasecompare(fingerprint_b64, pubkey_sha256, pub_pos) != 1) {
+ strncmp(fingerprint_b64, pubkey_sha256, pub_pos)) {
free(fingerprint_b64);
failf(data,
- "Denied establishing ssh session: mismatch sha256 fingerprint. "
- "Remote %s is not equal to %s", fingerprint_b64, pubkey_sha256);
+ "Denied establishing ssh session: mismatch sha256 fingerprint. "
+ "Remote %s is not equal to %s", fingerprint_b64, pubkey_sha256);
state(data, SSH_SESSION_FREE);
sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
return sshc->actualcode;
@@ -705,7 +740,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
free(fingerprint_b64);
- infof(data, "SHA256 checksum match!");
+ infof(data, "SHA256 checksum match");
}
if(pubkey_md5) {
@@ -713,7 +748,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
const char *fingerprint = NULL;
fingerprint = libssh2_hostkey_hash(sshc->ssh_session,
- LIBSSH2_HOSTKEY_HASH_MD5);
+ LIBSSH2_HOSTKEY_HASH_MD5);
if(fingerprint) {
/* The fingerprint points to static storage (!), don't free() it. */
@@ -725,31 +760,52 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
infof(data, "SSH MD5 fingerprint: %s", md5buffer);
}
- /* Before we authenticate we check the hostkey's MD5 fingerprint
- * against a known fingerprint, if available.
- */
- if(pubkey_md5 && strlen(pubkey_md5) == 32) {
- if(!fingerprint || !strcasecompare(md5buffer, pubkey_md5)) {
- if(fingerprint) {
- failf(data,
+ /* This does NOT verify the length of 'pubkey_md5' separately, which will
+ make the comparison below fail unless it is exactly 32 characters */
+ if(!fingerprint || !strcasecompare(md5buffer, pubkey_md5)) {
+ if(fingerprint) {
+ failf(data,
"Denied establishing ssh session: mismatch md5 fingerprint. "
"Remote %s is not equal to %s", md5buffer, pubkey_md5);
- }
- else {
- failf(data,
+ }
+ else {
+ failf(data,
"Denied establishing ssh session: md5 fingerprint "
"not available");
- }
- state(data, SSH_SESSION_FREE);
- sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
- return sshc->actualcode;
}
- infof(data, "MD5 checksum match!");
+ state(data, SSH_SESSION_FREE);
+ sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
+ return sshc->actualcode;
}
+ infof(data, "MD5 checksum match");
}
if(!pubkey_md5 && !pubkey_sha256) {
- return ssh_knownhost(data);
+ if(data->set.ssh_hostkeyfunc) {
+ size_t keylen = 0;
+ int sshkeytype = 0;
+ int rc = 0;
+ /* we handle the process to the callback*/
+ const char *remotekey = libssh2_session_hostkey(sshc->ssh_session,
+ &keylen, &sshkeytype);
+ if(remotekey) {
+ int keytype = convert_ssh2_keytype(sshkeytype);
+ Curl_set_in_callback(data, true);
+ rc = data->set.ssh_hostkeyfunc(data->set.ssh_hostkeyfunc_userp,
+ keytype, remotekey, keylen);
+ Curl_set_in_callback(data, false);
+ if(rc!= CURLKHMATCH_OK) {
+ state(data, SSH_SESSION_FREE);
+ }
+ }
+ else {
+ state(data, SSH_SESSION_FREE);
+ }
+ return CURLE_OK;
+ }
+ else {
+ return ssh_knownhost(data);
+ }
}
else {
/* as we already matched, we skip the check for known hosts */
@@ -932,7 +988,7 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
/* FALLTHROUGH */
case SSH_S_STARTUP:
- rc = libssh2_session_startup(sshc->ssh_session, (int)sock);
+ rc = session_startup(sshc->ssh_session, sock);
if(rc == LIBSSH2_ERROR_EAGAIN) {
break;
}
@@ -1468,7 +1524,7 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
*/
cp = strchr(cmd, ' ');
if(!cp) {
- failf(data, "Syntax error command '%s'. Missing parameter!",
+ failf(data, "Syntax error command '%s', missing parameter",
cmd);
state(data, SSH_SFTP_CLOSE);
sshc->nextstate = SSH_NO_STATE;
@@ -1699,32 +1755,35 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
break;
}
}
- else if(strncasecompare(cmd, "atime", 5)) {
+ else if(strncasecompare(cmd, "atime", 5) ||
+ strncasecompare(cmd, "mtime", 5)) {
time_t date = Curl_getdate_capped(sshc->quote_path1);
+ bool fail = FALSE;
+
if(date == -1) {
- Curl_safefree(sshc->quote_path1);
- Curl_safefree(sshc->quote_path2);
- failf(data, "Syntax error: incorrect access date format");
- state(data, SSH_SFTP_CLOSE);
- sshc->nextstate = SSH_NO_STATE;
- sshc->actualcode = CURLE_QUOTE_ERROR;
- break;
+ failf(data, "incorrect date format for %.*s", 5, cmd);
+ fail = TRUE;
}
- sshp->quote_attrs.atime = (unsigned long)date;
- sshp->quote_attrs.flags = LIBSSH2_SFTP_ATTR_ACMODTIME;
- }
- else if(strncasecompare(cmd, "mtime", 5)) {
- time_t date = Curl_getdate_capped(sshc->quote_path1);
- if(date == -1) {
+#if SIZEOF_TIME_T > SIZEOF_LONG
+ if(date > 0xffffffff) {
+ /* if 'long' can't old >32bit, this date cannot be sent */
+ failf(data, "date overflow");
+ fail = TRUE;
+ }
+#endif
+ if(fail) {
Curl_safefree(sshc->quote_path1);
Curl_safefree(sshc->quote_path2);
- failf(data, "Syntax error: incorrect modification date format");
state(data, SSH_SFTP_CLOSE);
sshc->nextstate = SSH_NO_STATE;
sshc->actualcode = CURLE_QUOTE_ERROR;
break;
}
- sshp->quote_attrs.mtime = (unsigned long)date;
+ if(strncasecompare(cmd, "atime", 5))
+ sshp->quote_attrs.atime = (unsigned long)date;
+ else /* mtime */
+ sshp->quote_attrs.mtime = (unsigned long)date;
+
sshp->quote_attrs.flags = LIBSSH2_SFTP_ATTR_ACMODTIME;
}
@@ -2279,7 +2338,8 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
((sshp->readdir_attrs.permissions & LIBSSH2_SFTP_S_IFMT) ==
LIBSSH2_SFTP_S_IFLNK)) {
Curl_dyn_init(&sshp->readdir_link, PATH_MAX);
- result = Curl_dyn_add(&sshp->readdir_link, sshp->path);
+ result = Curl_dyn_addf(&sshp->readdir_link, "%s%s", sshp->path,
+ sshp->readdir_filename);
state(data, SSH_SFTP_READDIR_LINK);
if(!result)
break;
@@ -2446,7 +2506,7 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
from_t = curlx_strtoofft(data->state.range, &ptr, 0, &from);
if(from_t == CURL_OFFT_FLOW)
return CURLE_RANGE_ERROR;
- while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
+ while(*ptr && (ISBLANK(*ptr) || (*ptr == '-')))
ptr++;
to_t = curlx_strtoofft(ptr, &ptr2, 0, &to);
if(to_t == CURL_OFFT_FLOW)
@@ -3227,7 +3287,7 @@ static CURLcode ssh_connect(struct Curl_easy *data, bool *done)
sshrecv.recvptr = ssh_tls_recv;
sshsend.sendptr = ssh_tls_send;
- infof(data, "Uses HTTPS proxy!");
+ infof(data, "Uses HTTPS proxy");
/*
Setup libssh2 callbacks to make it read/write TLS from the socket.
diff --git a/lib/vssh/ssh.h b/lib/vssh/ssh.h
index 7972081ec..13bb8aa2d 100644
--- a/lib/vssh/ssh.h
+++ b/lib/vssh/ssh.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,14 +20,16 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
-#if defined(HAVE_LIBSSH2_H)
+#if defined(USE_LIBSSH2)
#include <libssh2.h>
#include <libssh2_sftp.h>
-#elif defined(HAVE_LIBSSH_LIBSSH_H)
+#elif defined(USE_LIBSSH)
#include <libssh/libssh.h>
#include <libssh/sftp.h>
#elif defined(USE_WOLFSSH)
@@ -131,8 +133,8 @@ struct ssh_conn {
/* common */
const char *passphrase; /* pass-phrase to use */
- char *rsa_pub; /* path name */
- char *rsa; /* path name */
+ char *rsa_pub; /* strdup'ed public key file */
+ char *rsa; /* strdup'ed private key file */
bool authed; /* the connection has been authenticated fine */
bool acceptfail; /* used by the SFTP_QUOTE (continue if
quote command fails) */
@@ -209,11 +211,7 @@ struct ssh_conn {
#endif /* USE_LIBSSH */
};
-#if defined(USE_LIBSSH)
-
-#define CURL_LIBSSH_VERSION ssh_version(0)
-
-#elif defined(USE_LIBSSH2)
+#if defined(USE_LIBSSH2)
/* Feature detection based on version numbers to better work with
non-configure platforms */
diff --git a/lib/vssh/wolfssh.c b/lib/vssh/wolfssh.c
index 5b4cde91b..c2f85f3fe 100644
--- a/lib/vssh/wolfssh.c
+++ b/lib/vssh/wolfssh.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -469,7 +471,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
state(data, SSH_STOP);
return CURLE_SSH;
}
- infof(data, "wolfssh connected!");
+ infof(data, "wolfssh connected");
state(data, SSH_STOP);
break;
case SSH_STOP:
@@ -490,7 +492,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
return CURLE_OK;
}
else if(rc == WS_SUCCESS) {
- infof(data, "wolfssh SFTP connected!");
+ infof(data, "wolfssh SFTP connected");
state(data, SSH_SFTP_REALPATH);
}
else {
@@ -519,7 +521,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
else {
memcpy(sshc->homedir, name->fName, name->fSz);
sshc->homedir[name->fSz] = 0;
- infof(data, "wolfssh SFTP realpath succeeded!");
+ infof(data, "wolfssh SFTP realpath succeeded");
}
wolfSSH_SFTPNAME_list_free(name);
state(data, SSH_STOP);
@@ -617,7 +619,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
return CURLE_OK;
}
else if(rc == WS_SUCCESS) {
- infof(data, "wolfssh SFTP open succeeded!");
+ infof(data, "wolfssh SFTP open succeeded");
}
else {
failf(data, "wolfssh SFTP upload open failed: %d", rc);
@@ -728,7 +730,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
return CURLE_OK;
}
else if(rc == WS_SUCCESS) {
- infof(data, "wolfssh SFTP open succeeded!");
+ infof(data, "wolfssh SFTP open succeeded");
state(data, SSH_SFTP_DOWNLOAD_STAT);
return CURLE_OK;
}
@@ -754,7 +756,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
return CURLE_OK;
}
else if(rc == WS_SUCCESS) {
- infof(data, "wolfssh STAT succeeded!");
+ infof(data, "wolfssh STAT succeeded");
}
else {
failf(data, "wolfssh SFTP open failed: %d", rc);
diff --git a/lib/vtls/bearssl.c b/lib/vtls/bearssl.c
index 9b772d064..1221ce8c8 100644
--- a/lib/vtls/bearssl.c
+++ b/lib/vtls/bearssl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2021, Michael Forney, <mforney@mforney.org>
+ * Copyright (C) 2019 - 2022, Michael Forney, <mforney@mforney.org>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -35,12 +37,15 @@
#include "multiif.h"
#include "curl_printf.h"
#include "curl_memory.h"
+#include "strcase.h"
struct x509_context {
const br_x509_class *vtable;
br_x509_minimal_context minimal;
+ br_x509_decoder_context decoder;
bool verifyhost;
bool verifypeer;
+ int cert_num;
};
struct ssl_backend_data {
@@ -71,9 +76,9 @@ struct cafile_parser {
#define CAFILE_SOURCE_PATH 1
#define CAFILE_SOURCE_BLOB 2
struct cafile_source {
- const int type;
- const char * const data;
- const size_t len;
+ int type;
+ const char *data;
+ size_t len;
};
static void append_dn(void *ctx, const void *buf, size_t len)
@@ -159,6 +164,18 @@ static CURLcode load_cafile(struct cafile_source *source,
if(strcmp(name, "CERTIFICATE") && strcmp(name, "X509 CERTIFICATE"))
break;
br_x509_decoder_init(&ca.xc, append_dn, &ca);
+ ca.in_cert = TRUE;
+ ca.dn_len = 0;
+ break;
+ case BR_PEM_END_OBJ:
+ if(!ca.in_cert)
+ break;
+ ca.in_cert = FALSE;
+ if(br_x509_decoder_last_error(&ca.xc)) {
+ ca.err = CURLE_SSL_CACERT_BADFILE;
+ goto fail;
+ }
+ /* add trust anchor */
if(ca.anchors_len == SIZE_MAX / sizeof(ca.anchors[0])) {
ca.err = CURLE_OUT_OF_MEMORY;
goto fail;
@@ -172,19 +189,8 @@ static CURLcode load_cafile(struct cafile_source *source,
}
ca.anchors = new_anchors;
ca.anchors_len = new_anchors_len;
- ca.in_cert = TRUE;
- ca.dn_len = 0;
ta = &ca.anchors[ca.anchors_len - 1];
ta->dn.data = NULL;
- break;
- case BR_PEM_END_OBJ:
- if(!ca.in_cert)
- break;
- ca.in_cert = FALSE;
- if(br_x509_decoder_last_error(&ca.xc)) {
- ca.err = CURLE_SSL_CACERT_BADFILE;
- goto fail;
- }
ta->flags = 0;
if(br_x509_decoder_isCA(&ca.xc))
ta->flags |= BR_X509_TA_CA;
@@ -238,6 +244,8 @@ static CURLcode load_cafile(struct cafile_source *source,
} while(source->type != CAFILE_SOURCE_BLOB);
if(fp && ferror(fp))
ca.err = CURLE_READ_ERROR;
+ else if(ca.in_cert)
+ ca.err = CURLE_SSL_CACERT_BADFILE;
fail:
if(fp)
@@ -260,6 +268,11 @@ static void x509_start_chain(const br_x509_class **ctx,
{
struct x509_context *x509 = (struct x509_context *)ctx;
+ if(!x509->verifypeer) {
+ x509->cert_num = 0;
+ return;
+ }
+
if(!x509->verifyhost)
server_name = NULL;
x509->minimal.vtable->start_chain(&x509->minimal.vtable, server_name);
@@ -269,6 +282,13 @@ static void x509_start_cert(const br_x509_class **ctx, uint32_t length)
{
struct x509_context *x509 = (struct x509_context *)ctx;
+ if(!x509->verifypeer) {
+ /* Only decode the first cert in the chain to obtain the public key */
+ if(x509->cert_num == 0)
+ br_x509_decoder_init(&x509->decoder, NULL, NULL);
+ return;
+ }
+
x509->minimal.vtable->start_cert(&x509->minimal.vtable, length);
}
@@ -277,6 +297,12 @@ static void x509_append(const br_x509_class **ctx, const unsigned char *buf,
{
struct x509_context *x509 = (struct x509_context *)ctx;
+ if(!x509->verifypeer) {
+ if(x509->cert_num == 0)
+ br_x509_decoder_push(&x509->decoder, buf, len);
+ return;
+ }
+
x509->minimal.vtable->append(&x509->minimal.vtable, buf, len);
}
@@ -284,21 +310,23 @@ static void x509_end_cert(const br_x509_class **ctx)
{
struct x509_context *x509 = (struct x509_context *)ctx;
+ if(!x509->verifypeer) {
+ x509->cert_num++;
+ return;
+ }
+
x509->minimal.vtable->end_cert(&x509->minimal.vtable);
}
static unsigned x509_end_chain(const br_x509_class **ctx)
{
struct x509_context *x509 = (struct x509_context *)ctx;
- unsigned err;
- err = x509->minimal.vtable->end_chain(&x509->minimal.vtable);
- if(err && !x509->verifypeer) {
- /* ignore any X.509 errors */
- err = BR_ERR_OK;
+ if(!x509->verifypeer) {
+ return br_x509_decoder_last_error(&x509->decoder);
}
- return err;
+ return x509->minimal.vtable->end_chain(&x509->minimal.vtable);
}
static const br_x509_pkey *x509_get_pkey(const br_x509_class *const *ctx,
@@ -306,6 +334,15 @@ static const br_x509_pkey *x509_get_pkey(const br_x509_class *const *ctx,
{
struct x509_context *x509 = (struct x509_context *)ctx;
+ if(!x509->verifypeer) {
+ /* Nothing in the chain is verified, just return the public key of the
+ first certificate and allow its usage for both TLS_RSA_* and
+ TLS_ECDHE_* */
+ if(usages)
+ *usages = BR_KEYTYPE_KEYX | BR_KEYTYPE_SIGN;
+ return br_x509_decoder_get_pkey(&x509->decoder);
+ }
+
return x509->minimal.vtable->get_pkey(&x509->minimal.vtable, usages);
}
@@ -319,6 +356,216 @@ static const br_x509_class x509_vtable = {
x509_get_pkey
};
+struct st_cipher {
+ const char *name; /* Cipher suite IANA name. It starts with "TLS_" prefix */
+ const char *alias_name; /* Alias name is the same as OpenSSL cipher name */
+ uint16_t num; /* BearSSL cipher suite */
+};
+
+/* Macro to initialize st_cipher data structure */
+#define CIPHER_DEF(num, alias) { #num, alias, BR_##num }
+
+static const struct st_cipher ciphertable[] = {
+ /* RFC 2246 TLS 1.0 */
+ CIPHER_DEF(TLS_RSA_WITH_3DES_EDE_CBC_SHA, /* 0x000A */
+ "DES-CBC3-SHA"),
+
+ /* RFC 3268 TLS 1.0 AES */
+ CIPHER_DEF(TLS_RSA_WITH_AES_128_CBC_SHA, /* 0x002F */
+ "AES128-SHA"),
+ CIPHER_DEF(TLS_RSA_WITH_AES_256_CBC_SHA, /* 0x0035 */
+ "AES256-SHA"),
+
+ /* RFC 5246 TLS 1.2 */
+ CIPHER_DEF(TLS_RSA_WITH_AES_128_CBC_SHA256, /* 0x003C */
+ "AES128-SHA256"),
+ CIPHER_DEF(TLS_RSA_WITH_AES_256_CBC_SHA256, /* 0x003D */
+ "AES256-SHA256"),
+
+ /* RFC 5288 TLS 1.2 AES GCM */
+ CIPHER_DEF(TLS_RSA_WITH_AES_128_GCM_SHA256, /* 0x009C */
+ "AES128-GCM-SHA256"),
+ CIPHER_DEF(TLS_RSA_WITH_AES_256_GCM_SHA384, /* 0x009D */
+ "AES256-GCM-SHA384"),
+
+ /* RFC 4492 TLS 1.0 ECC */
+ CIPHER_DEF(TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, /* 0xC003 */
+ "ECDH-ECDSA-DES-CBC3-SHA"),
+ CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, /* 0xC004 */
+ "ECDH-ECDSA-AES128-SHA"),
+ CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, /* 0xC005 */
+ "ECDH-ECDSA-AES256-SHA"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, /* 0xC008 */
+ "ECDHE-ECDSA-DES-CBC3-SHA"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, /* 0xC009 */
+ "ECDHE-ECDSA-AES128-SHA"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, /* 0xC00A */
+ "ECDHE-ECDSA-AES256-SHA"),
+ CIPHER_DEF(TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, /* 0xC00D */
+ "ECDH-RSA-DES-CBC3-SHA"),
+ CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, /* 0xC00E */
+ "ECDH-RSA-AES128-SHA"),
+ CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, /* 0xC00F */
+ "ECDH-RSA-AES256-SHA"),
+ CIPHER_DEF(TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, /* 0xC012 */
+ "ECDHE-RSA-DES-CBC3-SHA"),
+ CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, /* 0xC013 */
+ "ECDHE-RSA-AES128-SHA"),
+ CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, /* 0xC014 */
+ "ECDHE-RSA-AES256-SHA"),
+
+ /* RFC 5289 TLS 1.2 ECC HMAC SHA256/384 */
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, /* 0xC023 */
+ "ECDHE-ECDSA-AES128-SHA256"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, /* 0xC024 */
+ "ECDHE-ECDSA-AES256-SHA384"),
+ CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, /* 0xC025 */
+ "ECDH-ECDSA-AES128-SHA256"),
+ CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, /* 0xC026 */
+ "ECDH-ECDSA-AES256-SHA384"),
+ CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, /* 0xC027 */
+ "ECDHE-RSA-AES128-SHA256"),
+ CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, /* 0xC028 */
+ "ECDHE-RSA-AES256-SHA384"),
+ CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, /* 0xC029 */
+ "ECDH-RSA-AES128-SHA256"),
+ CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, /* 0xC02A */
+ "ECDH-RSA-AES256-SHA384"),
+
+ /* RFC 5289 TLS 1.2 GCM */
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, /* 0xC02B */
+ "ECDHE-ECDSA-AES128-GCM-SHA256"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, /* 0xC02C */
+ "ECDHE-ECDSA-AES256-GCM-SHA384"),
+ CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, /* 0xC02D */
+ "ECDH-ECDSA-AES128-GCM-SHA256"),
+ CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, /* 0xC02E */
+ "ECDH-ECDSA-AES256-GCM-SHA384"),
+ CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, /* 0xC02F */
+ "ECDHE-RSA-AES128-GCM-SHA256"),
+ CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, /* 0xC030 */
+ "ECDHE-RSA-AES256-GCM-SHA384"),
+ CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, /* 0xC031 */
+ "ECDH-RSA-AES128-GCM-SHA256"),
+ CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, /* 0xC032 */
+ "ECDH-RSA-AES256-GCM-SHA384"),
+#ifdef BR_TLS_RSA_WITH_AES_128_CCM
+
+ /* RFC 6655 TLS 1.2 CCM
+ Supported since BearSSL 0.6 */
+ CIPHER_DEF(TLS_RSA_WITH_AES_128_CCM, /* 0xC09C */
+ "AES128-CCM"),
+ CIPHER_DEF(TLS_RSA_WITH_AES_256_CCM, /* 0xC09D */
+ "AES256-CCM"),
+ CIPHER_DEF(TLS_RSA_WITH_AES_128_CCM_8, /* 0xC0A0 */
+ "AES128-CCM8"),
+ CIPHER_DEF(TLS_RSA_WITH_AES_256_CCM_8, /* 0xC0A1 */
+ "AES256-CCM8"),
+
+ /* RFC 7251 TLS 1.2 ECC CCM
+ Supported since BearSSL 0.6 */
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_CCM, /* 0xC0AC */
+ "ECDHE-ECDSA-AES128-CCM"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_CCM, /* 0xC0AD */
+ "ECDHE-ECDSA-AES256-CCM"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, /* 0xC0AE */
+ "ECDHE-ECDSA-AES128-CCM8"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8, /* 0xC0AF */
+ "ECDHE-ECDSA-AES256-CCM8"),
+#endif
+
+ /* RFC 7905 TLS 1.2 ChaCha20-Poly1305
+ Supported since BearSSL 0.2 */
+ CIPHER_DEF(TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, /* 0xCCA8 */
+ "ECDHE-RSA-CHACHA20-POLY1305"),
+ CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, /* 0xCCA9 */
+ "ECDHE-ECDSA-CHACHA20-POLY1305"),
+};
+
+#define NUM_OF_CIPHERS (sizeof(ciphertable) / sizeof(ciphertable[0]))
+#define CIPHER_NAME_BUF_LEN 64
+
+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 bearssl_set_selected_ciphers(struct Curl_easy *data,
+ br_ssl_engine_context *ssl_eng,
+ const char *ciphers)
+{
+ uint16_t selected_ciphers[NUM_OF_CIPHERS];
+ size_t selected_count = 0;
+ char cipher_name[CIPHER_NAME_BUF_LEN];
+ const char *cipher_start = ciphers;
+ const char *cipher_end;
+ size_t i, j;
+
+ if(!cipher_start)
+ return CURLE_SSL_CIPHER;
+
+ while(true) {
+ /* Extract the next cipher name from the ciphers string */
+ while(is_separator(*cipher_start))
+ ++cipher_start;
+ if(*cipher_start == '\0')
+ break;
+ cipher_end = cipher_start;
+ while(*cipher_end != '\0' && !is_separator(*cipher_end))
+ ++cipher_end;
+ j = cipher_end - cipher_start < CIPHER_NAME_BUF_LEN - 1 ?
+ cipher_end - cipher_start : CIPHER_NAME_BUF_LEN - 1;
+ strncpy(cipher_name, cipher_start, j);
+ cipher_name[j] = '\0';
+ cipher_start = cipher_end;
+
+ /* Lookup the cipher name in the table of available ciphers. If the cipher
+ name starts with "TLS_" we do the lookup by IANA name. Otherwise, we try
+ to match cipher name by an (OpenSSL) alias. */
+ if(strncasecompare(cipher_name, "TLS_", 4)) {
+ for(i = 0; i < NUM_OF_CIPHERS &&
+ !strcasecompare(cipher_name, ciphertable[i].name); ++i);
+ }
+ else {
+ for(i = 0; i < NUM_OF_CIPHERS &&
+ !strcasecompare(cipher_name, ciphertable[i].alias_name); ++i);
+ }
+ if(i == NUM_OF_CIPHERS) {
+ infof(data, "BearSSL: unknown cipher in list: %s", cipher_name);
+ continue;
+ }
+
+ /* No duplicates allowed */
+ for(j = 0; j < selected_count &&
+ selected_ciphers[j] != ciphertable[i].num; j++);
+ if(j < selected_count) {
+ infof(data, "BearSSL: duplicate cipher in list: %s", cipher_name);
+ continue;
+ }
+
+ DEBUGASSERT(selected_count < NUM_OF_CIPHERS);
+ selected_ciphers[selected_count] = ciphertable[i].num;
+ ++selected_count;
+ }
+
+ if(selected_count == 0) {
+ failf(data, "BearSSL: no supported cipher in list");
+ return CURLE_SSL_CIPHER;
+ }
+
+ br_ssl_engine_set_suites(ssl_eng, selected_ciphers, selected_count);
+ return CURLE_OK;
+}
+
static CURLcode bearssl_connect_step1(struct Curl_easy *data,
struct connectdata *conn, int sockindex)
{
@@ -339,6 +586,8 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
struct in_addr addr;
#endif
+ DEBUGASSERT(backend);
+
switch(SSL_CONN_CONFIG(version)) {
case CURL_SSLVERSION_SSLv2:
failf(data, "BearSSL does not support SSLv2");
@@ -369,11 +618,11 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
}
if(ca_info_blob) {
- struct cafile_source source = {
- CAFILE_SOURCE_BLOB,
- ca_info_blob->data,
- ca_info_blob->len,
- };
+ struct cafile_source source;
+ source.type = CAFILE_SOURCE_BLOB;
+ source.data = ca_info_blob->data;
+ source.len = ca_info_blob->len;
+
ret = load_cafile(&source, &backend->anchors, &backend->anchors_len);
if(ret != CURLE_OK) {
if(verifypeer) {
@@ -386,11 +635,11 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
}
if(ssl_cafile) {
- struct cafile_source source = {
- CAFILE_SOURCE_PATH,
- ssl_cafile,
- 0,
- };
+ struct cafile_source source;
+ source.type = CAFILE_SOURCE_PATH;
+ source.data = ssl_cafile;
+ source.len = 0;
+
ret = load_cafile(&source, &backend->anchors, &backend->anchors_len);
if(ret != CURLE_OK) {
if(verifypeer) {
@@ -410,6 +659,15 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
br_ssl_engine_set_buffer(&backend->ctx.eng, backend->buf,
sizeof(backend->buf), 1);
+ if(SSL_CONN_CONFIG(cipher_list)) {
+ /* Override the ciphers as specified. For the default cipher list see the
+ BearSSL source code of br_ssl_client_init_full() */
+ ret = bearssl_set_selected_ciphers(data, &backend->ctx.eng,
+ SSL_CONN_CONFIG(cipher_list));
+ if(ret)
+ return ret;
+ }
+
/* initialize X.509 context */
backend->x509.vtable = &x509_vtable;
backend->x509.verifypeer = verifypeer;
@@ -442,12 +700,12 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
#endif
) {
backend->protocols[cur++] = ALPN_H2;
- infof(data, "ALPN, offering %s", ALPN_H2);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
}
#endif
backend->protocols[cur++] = ALPN_HTTP_1_1;
- infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
br_ssl_engine_set_protocol_names(&backend->ctx.eng,
backend->protocols, cur);
@@ -465,8 +723,28 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
}
hostname = NULL;
}
+ else {
+ char *snihost = Curl_ssl_snihost(data, hostname, NULL);
+ if(!snihost) {
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ hostname = snihost;
+ }
- if(!br_ssl_client_reset(&backend->ctx, hostname, 0))
+ /* give application a chance to interfere with SSL set up. */
+ if(data->set.ssl.fsslctx) {
+ Curl_set_in_callback(data, true);
+ ret = (*data->set.ssl.fsslctx)(data, &backend->ctx,
+ data->set.ssl.fsslctxp);
+ Curl_set_in_callback(data, false);
+ if(ret) {
+ failf(data, "BearSSL: error signaled by ssl ctx callback");
+ return ret;
+ }
+ }
+
+ if(!br_ssl_client_reset(&backend->ctx, hostname, 1))
return CURLE_FAILED_INIT;
backend->active = TRUE;
@@ -488,6 +766,8 @@ static CURLcode bearssl_run_until(struct Curl_easy *data,
ssize_t ret;
int err;
+ DEBUGASSERT(backend);
+
for(;;) {
state = br_ssl_engine_current_state(&backend->ctx.eng);
if(state & BR_SSL_CLOSED) {
@@ -560,6 +840,8 @@ static CURLcode bearssl_connect_step2(struct Curl_easy *data,
struct ssl_backend_data *backend = connssl->backend;
CURLcode ret;
+ DEBUGASSERT(backend);
+
ret = bearssl_run_until(data, conn, sockindex,
BR_SSL_SENDAPP | BR_SSL_RECVAPP);
if(ret == CURLE_AGAIN)
@@ -582,28 +864,29 @@ static CURLcode bearssl_connect_step3(struct Curl_easy *data,
CURLcode ret;
DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
+ DEBUGASSERT(backend);
if(conn->bits.tls_enable_alpn) {
const char *protocol;
protocol = br_ssl_engine_get_selected_protocol(&backend->ctx.eng);
if(protocol) {
- infof(data, "ALPN, server accepted to use %s", protocol);
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_1STR, protocol);
#ifdef USE_HTTP2
if(!strcmp(protocol, ALPN_H2))
- conn->negnpn = CURL_HTTP_VERSION_2;
+ conn->alpn = CURL_HTTP_VERSION_2;
else
#endif
if(!strcmp(protocol, ALPN_HTTP_1_1))
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ conn->alpn = CURL_HTTP_VERSION_1_1;
else
infof(data, "ALPN, unrecognized protocol %s", protocol);
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
else
- infof(data, "ALPN, server did not agree to a protocol");
+ infof(data, VTLS_INFOF_NO_ALPN);
}
if(SSL_SET_OPTION(primary.sessionid)) {
@@ -647,6 +930,8 @@ static ssize_t bearssl_send(struct Curl_easy *data, int sockindex,
unsigned char *app;
size_t applen;
+ DEBUGASSERT(backend);
+
for(;;) {
*err = bearssl_run_until(data, conn, sockindex, BR_SSL_SENDAPP);
if (*err != CURLE_OK)
@@ -680,6 +965,8 @@ static ssize_t bearssl_recv(struct Curl_easy *data, int sockindex,
unsigned char *app;
size_t applen;
+ DEBUGASSERT(backend);
+
*err = bearssl_run_until(data, conn, sockindex, BR_SSL_RECVAPP);
if(*err != CURLE_OK)
return -1;
@@ -805,6 +1092,7 @@ static bool bearssl_data_pending(const struct connectdata *conn,
{
const struct ssl_connect_data *connssl = &conn->ssl[connindex];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
return br_ssl_engine_current_state(&backend->ctx.eng) & BR_SSL_RECVAPP;
}
@@ -854,6 +1142,7 @@ static void *bearssl_get_internals(struct ssl_connect_data *connssl,
CURLINFO info UNUSED_PARAM)
{
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
return &backend->ctx;
}
@@ -864,6 +1153,8 @@ static void bearssl_close(struct Curl_easy *data,
struct ssl_backend_data *backend = connssl->backend;
size_t i;
+ DEBUGASSERT(backend);
+
if(backend->active) {
br_ssl_engine_close(&backend->ctx.eng);
(void)bearssl_run_until(data, conn, sockindex, BR_SSL_CLOSED);
@@ -893,7 +1184,7 @@ static CURLcode bearssl_sha256sum(const unsigned char *input,
const struct Curl_ssl Curl_ssl_bearssl = {
{ CURLSSLBACKEND_BEARSSL, "bearssl" }, /* info */
- SSLSUPP_CAINFO_BLOB,
+ SSLSUPP_CAINFO_BLOB | SSLSUPP_SSL_CTX,
sizeof(struct ssl_backend_data),
Curl_none_init, /* init */
diff --git a/lib/vtls/bearssl.h b/lib/vtls/bearssl.h
index d72b7d0e2..512535996 100644
--- a/lib/vtls/bearssl.h
+++ b/lib/vtls/bearssl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2020, Michael Forney, <mforney@mforney.org>
+ * Copyright (C) 2019 - 2022, Michael Forney, <mforney@mforney.org>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vtls/gskit.c b/lib/vtls/gskit.c
index e451f6aeb..4ee4edea6 100644
--- a/lib/vtls/gskit.c
+++ b/lib/vtls/gskit.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -28,6 +30,7 @@
#include <qsoasync.h>
#undef HAVE_SOCKETPAIR /* because the native one isn't good enough */
#include "socketpair.h"
+#include "strerror.h"
/* Some symbols are undefined/unsupported on OS400 versions < V7R1. */
#ifndef GSK_SSL_EXTN_SERVERNAME_REQUEST
@@ -73,6 +76,7 @@
#include "connect.h" /* for the connect timeout */
#include "select.h"
#include "strcase.h"
+#include "timediff.h"
#include "x509asn1.h"
#include "curl_printf.h"
@@ -247,10 +251,10 @@ static CURLcode set_enum(struct Curl_easy *data, gsk_handle h,
static CURLcode set_buffer(struct Curl_easy *data, gsk_handle h,
- GSK_BUF_ID id, const char *buffer, bool unsupported_ok)
+ GSK_BUF_ID id, const char *buf, bool unsupported_ok)
{
char buffer[STRERROR_LEN];
- int rc = gsk_attribute_set_buffer(h, id, buffer, 0);
+ int rc = gsk_attribute_set_buffer(h, id, buf, 0);
switch(rc) {
case GSK_OK:
@@ -291,27 +295,6 @@ static CURLcode set_numeric(struct Curl_easy *data,
}
-static CURLcode set_callback(struct Curl_easy *data,
- gsk_handle h, GSK_CALLBACK_ID id, void *info)
-{
- char buffer[STRERROR_LEN];
- 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",
- Curl_strerror(errno, buffer, sizeof(buffer)));
- break;
- default:
- failf(data, "gsk_attribute_set_callback(): %s", gsk_strerror(rc));
- break;
- }
- return CURLE_SSL_CONNECT_ERROR;
-}
-
-
static CURLcode set_ciphers(struct Curl_easy *data,
gsk_handle h, unsigned int *protoflags)
{
@@ -448,8 +431,7 @@ static CURLcode set_ciphers(struct Curl_easy *data,
static int gskit_init(void)
{
- /* No initialisation needed. */
-
+ /* No initialization needed. */
return 1;
}
@@ -513,6 +495,8 @@ static void cancel_async_handshake(struct connectdata *conn, int sockindex)
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
Qso_OverlappedIO_t cstat;
+ DEBUGASSERT(BACKEND);
+
if(QsoCancelOperation(conn->sock[sockindex], 0) > 0)
QsoWaitForIOCompletion(BACKEND->iocport, &cstat, (struct timeval *) NULL);
}
@@ -520,6 +504,7 @@ static void cancel_async_handshake(struct connectdata *conn, int sockindex)
static void close_async_handshake(struct ssl_connect_data *connssl)
{
+ DEBUGASSERT(BACKEND);
QsoDestroyIOCompletionPort(BACKEND->iocport);
BACKEND->iocport = -1;
}
@@ -530,36 +515,36 @@ static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
#ifndef CURL_DISABLE_PROXY
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_connect_data *connproxyssl = &conn->proxy_ssl[sockindex];
- fd_set fds_read;
- fd_set fds_write;
+ struct pollfd fds[2];
int n;
int m;
int i;
int ret = 0;
char buf[CURL_MAX_WRITE_SIZE];
+ DEBUGASSERT(BACKEND);
+ DEBUGASSERT(connproxyssl->backend);
+
if(!connssl->use || !connproxyssl->use)
return 0; /* No SSL over SSL: OK. */
- FD_ZERO(&fds_read);
- FD_ZERO(&fds_write);
- n = -1;
+ n = 1;
+ fds[0].fd = BACKEND->remotefd;
+ fds[1].fd = conn->sock[sockindex];
+
if(directions & SOS_READ) {
- FD_SET(BACKEND->remotefd, &fds_write);
- n = BACKEND->remotefd;
+ fds[0].events |= POLLOUT;
}
if(directions & SOS_WRITE) {
- FD_SET(BACKEND->remotefd, &fds_read);
- n = BACKEND->remotefd;
- FD_SET(conn->sock[sockindex], &fds_write);
- if(n < conn->sock[sockindex])
- n = conn->sock[sockindex];
+ n = 2;
+ fds[0].events |= POLLIN;
+ fds[1].events |= POLLOUT;
}
- i = Curl_select(n + 1, &fds_read, &fds_write, NULL, 0);
+ i = Curl_poll(fds, n, 0);
if(i < 0)
return -1; /* Select error. */
- if(FD_ISSET(BACKEND->remotefd, &fds_write)) {
+ if(fds[0].revents & POLLOUT) {
/* Try getting data from HTTPS proxy and pipe it upstream. */
n = 0;
i = gsk_secure_soc_read(connproxyssl->backend->handle,
@@ -581,8 +566,7 @@ static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
}
}
- if(FD_ISSET(BACKEND->remotefd, &fds_read) &&
- FD_ISSET(conn->sock[sockindex], &fds_write)) {
+ if((fds[0].revents & POLLIN) && (fds[1].revents & POLLOUT)) {
/* Pipe data to HTTPS proxy. */
n = read(BACKEND->remotefd, buf, sizeof(buf));
if(n < 0)
@@ -605,6 +589,7 @@ static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
static void close_one(struct ssl_connect_data *connssl, struct Curl_easy *data,
struct connectdata *conn, int sockindex)
{
+ DEBUGASSERT(BACKEND);
if(BACKEND->handle) {
gskit_status(data, gsk_secure_soc_close(&BACKEND->handle),
"gsk_secure_soc_close()", 0);
@@ -636,6 +621,8 @@ static ssize_t gskit_send(struct Curl_easy *data, int sockindex,
CURLcode cc = CURLE_SEND_ERROR;
int written;
+ DEBUGASSERT(BACKEND);
+
if(pipe_ssloverssl(conn, sockindex, SOS_WRITE) >= 0) {
cc = gskit_status(data,
gsk_secure_soc_write(BACKEND->handle,
@@ -661,6 +648,8 @@ static ssize_t gskit_recv(struct Curl_easy *data, int num, char *buf,
int nread;
CURLcode cc = CURLE_RECV_ERROR;
+ DEBUGASSERT(BACKEND);
+
if(pipe_ssloverssl(conn, num, SOS_READ) >= 0) {
int buffsize = buffersize > (size_t) INT_MAX? INT_MAX: (int) buffersize;
cc = gskit_status(data, gsk_secure_soc_read(BACKEND->handle,
@@ -734,6 +723,7 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
#endif
/* Create SSL environment, start (preferably asynchronous) handshake. */
+ DEBUGASSERT(BACKEND);
BACKEND->handle = (gsk_handle) NULL;
BACKEND->iocport = -1;
@@ -787,13 +777,13 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
BACKEND->localfd = sockpair[0];
BACKEND->remotefd = sockpair[1];
setsockopt(BACKEND->localfd, SOL_SOCKET, SO_RCVBUF,
- (void *) sobufsize, sizeof(sobufsize));
+ (void *) &sobufsize, sizeof(sobufsize));
setsockopt(BACKEND->remotefd, SOL_SOCKET, SO_RCVBUF,
- (void *) sobufsize, sizeof(sobufsize));
+ (void *) &sobufsize, sizeof(sobufsize));
setsockopt(BACKEND->localfd, SOL_SOCKET, SO_SNDBUF,
- (void *) sobufsize, sizeof(sobufsize));
+ (void *) &sobufsize, sizeof(sobufsize));
setsockopt(BACKEND->remotefd, SOL_SOCKET, SO_SNDBUF,
- (void *) sobufsize, sizeof(sobufsize));
+ (void *) &sobufsize, sizeof(sobufsize));
curlx_nonblock(BACKEND->localfd, TRUE);
curlx_nonblock(BACKEND->remotefd, TRUE);
}
@@ -830,8 +820,13 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
/* Process SNI. Ignore if not supported (on OS400 < V7R1). */
if(sni) {
+ char *snihost = Curl_ssl_snihost(data, sni, NULL);
+ if(!snihost) {
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
result = set_buffer(data, BACKEND->handle,
- GSK_SSL_EXTN_SERVERNAME_REQUEST, sni, TRUE);
+ GSK_SSL_EXTN_SERVERNAME_REQUEST, snihost, TRUE);
if(result == CURLE_UNSUPPORTED_PROTOCOL)
result = CURLE_OK;
}
@@ -958,14 +953,16 @@ static CURLcode gskit_connect_step2(struct Curl_easy *data,
CURLcode result;
/* Poll or wait for end of SSL asynchronous handshake. */
+ DEBUGASSERT(BACKEND);
for(;;) {
timediff_t timeout_ms = nonblocking? 0: Curl_timeleft(data, NULL, TRUE);
+ stmv.tv_sec = 0;
+ stmv.tv_usec = 0;
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(BACKEND->iocport, &cstat, &stmv)) {
+ switch(QsoWaitForIOCompletion(BACKEND->iocport, &cstat,
+ curlx_mstotv(&stmv, timeout_ms))) {
case 1: /* Operation complete. */
break;
case -1: /* An error occurred: handshake still in progress. */
@@ -1014,6 +1011,7 @@ static CURLcode gskit_connect_step3(struct Curl_easy *data,
CURLcode result;
/* SSL handshake done: gather certificate info and verify host. */
+ DEBUGASSERT(BACKEND);
if(gskit_status(data, gsk_attribute_get_cert_info(BACKEND->handle,
GSK_PARTNER_CERT_INFO,
@@ -1070,15 +1068,16 @@ static CURLcode gskit_connect_step3(struct Curl_easy *data,
/* Check pinned public key. */
ptr = SSL_PINNED_PUB_KEY();
if(!result && ptr) {
- curl_X509certificate x509;
- curl_asn1Element *p;
+ struct Curl_X509certificate x509;
+ struct Curl_asn1Element *p;
+ memset(&x509, 0, sizeof(x509));
if(Curl_parseX509(&x509, cert, certend))
return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
p = &x509.subjectPublicKeyInfo;
result = Curl_pin_peer_pubkey(data, ptr, p->header, p->end - p->header);
if(result) {
- failf(data, "SSL: public key does not match pinned public key!");
+ failf(data, "SSL: public key does not match pinned public key");
return result;
}
}
@@ -1205,6 +1204,8 @@ static int gskit_shutdown(struct Curl_easy *data,
char buf[120];
int loop = 10; /* don't get stuck */
+ DEBUGASSERT(BACKEND);
+
if(!BACKEND->handle)
return 0;
@@ -1268,6 +1269,7 @@ static int gskit_check_cxn(struct connectdata *cxn)
int errlen;
/* The only thing that can be tested here is at the socket level. */
+ DEBUGASSERT(BACKEND);
if(!BACKEND->handle)
return 0; /* connection has been closed */
@@ -1287,6 +1289,7 @@ static void *gskit_get_internals(struct ssl_connect_data *connssl,
CURLINFO info UNUSED_PARAM)
{
(void)info;
+ DEBUGASSERT(BACKEND);
return BACKEND->handle;
}
@@ -1308,6 +1311,7 @@ const struct Curl_ssl Curl_ssl_gskit = {
Curl_none_cert_status_request, /* cert_status_request */
gskit_connect, /* connect */
gskit_connect_nonblocking, /* connect_nonblocking */
+ Curl_ssl_getsock, /* getsock */
gskit_get_internals, /* get_internals */
gskit_close, /* close_one */
Curl_none_close_all, /* close_all */
diff --git a/lib/vtls/gskit.h b/lib/vtls/gskit.h
index 202df7e07..cf923f6b8 100644
--- a/lib/vtls/gskit.h
+++ b/lib/vtls/gskit.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c
index 18864aa4b..cf3dbc523 100644
--- a/lib/vtls/gtls.c
+++ b/lib/vtls/gtls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -43,6 +45,7 @@
#include "inet_pton.h"
#include "gtls.h"
#include "vtls.h"
+#include "vauth/vauth.h"
#include "parsedate.h"
#include "connect.h" /* for the connect timeout */
#include "select.h"
@@ -55,6 +58,14 @@
/* The last #include file should be: */
#include "memdebug.h"
+#ifdef HAVE_GNUTLS_SRP
+/* the function exists */
+#ifdef USE_TLS_SRP
+/* the functionality is not disabled */
+#define USE_GNUTLS_SRP
+#endif
+#endif
+
/* Enable GnuTLS debugging by defining GTLSDEBUG */
/*#define GTLSDEBUG */
@@ -75,7 +86,7 @@ static bool gtls_inited = FALSE;
struct ssl_backend_data {
gnutls_session_t session;
gnutls_certificate_credentials_t cred;
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
gnutls_srp_client_credentials_t srp_client_cred;
#endif
};
@@ -202,9 +213,12 @@ static CURLcode handshake(struct Curl_easy *data,
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
- gnutls_session_t session = backend->session;
+ gnutls_session_t session;
curl_socket_t sockfd = conn->sock[sockindex];
+ DEBUGASSERT(backend);
+ session = backend->session;
+
for(;;) {
timediff_t timeout_ms;
int rc;
@@ -406,6 +420,8 @@ gtls_connect_step1(struct Curl_easy *data,
const char *tls13support;
CURLcode result;
+ DEBUGASSERT(backend);
+
if(connssl->state == ssl_connection_complete)
/* to make us tolerant against being called more than once for the
same connection */
@@ -431,12 +447,13 @@ gtls_connect_step1(struct Curl_easy *data,
return CURLE_SSL_CONNECT_ERROR;
}
-#ifdef HAVE_GNUTLS_SRP
- if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP) {
- infof(data, "Using TLS-SRP username: %s", SSL_SET_OPTION(username));
+#ifdef USE_GNUTLS_SRP
+ if((SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP) &&
+ Curl_auth_allowed_to_host(data)) {
+ infof(data, "Using TLS-SRP username: %s",
+ SSL_SET_OPTION(primary.username));
- rc = gnutls_srp_allocate_client_credentials(
- &backend->srp_client_cred);
+ rc = gnutls_srp_allocate_client_credentials(&backend->srp_client_cred);
if(rc != GNUTLS_E_SUCCESS) {
failf(data, "gnutls_srp_allocate_client_cred() failed: %s",
gnutls_strerror(rc));
@@ -444,8 +461,8 @@ gtls_connect_step1(struct Curl_easy *data,
}
rc = gnutls_srp_set_client_credentials(backend->srp_client_cred,
- SSL_SET_OPTION(username),
- SSL_SET_OPTION(password));
+ SSL_SET_OPTION(primary.username),
+ SSL_SET_OPTION(primary.password));
if(rc != GNUTLS_E_SUCCESS) {
failf(data, "gnutls_srp_set_client_cred() failed: %s",
gnutls_strerror(rc));
@@ -502,19 +519,19 @@ gtls_connect_step1(struct Curl_easy *data,
}
#endif
- if(SSL_SET_OPTION(CRLfile)) {
+ if(SSL_SET_OPTION(primary.CRLfile)) {
/* set the CRL list file */
rc = gnutls_certificate_set_x509_crl_file(backend->cred,
- SSL_SET_OPTION(CRLfile),
+ SSL_SET_OPTION(primary.CRLfile),
GNUTLS_X509_FMT_PEM);
if(rc < 0) {
failf(data, "error reading crl file %s (%s)",
- SSL_SET_OPTION(CRLfile), gnutls_strerror(rc));
+ SSL_SET_OPTION(primary.CRLfile), gnutls_strerror(rc));
return CURLE_SSL_CRL_BADFILE;
}
else
infof(data, "found %d CRL in %s",
- rc, SSL_SET_OPTION(CRLfile));
+ rc, SSL_SET_OPTION(primary.CRLfile));
}
/* Initialize TLS session as a client */
@@ -542,11 +559,15 @@ gtls_connect_step1(struct Curl_easy *data,
#ifdef ENABLE_IPV6
(0 == Curl_inet_pton(AF_INET6, hostname, &addr)) &&
#endif
- sni &&
- (gnutls_server_name_set(session, GNUTLS_NAME_DNS, hostname,
- strlen(hostname)) < 0))
- infof(data, "WARNING: failed to configure server name indication (SNI) "
- "TLS extension");
+ sni) {
+ size_t snilen;
+ char *snihost = Curl_ssl_snihost(data, hostname, &snilen);
+ if(!snihost || gnutls_server_name_set(session, GNUTLS_NAME_DNS, snihost,
+ snilen) < 0) {
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ }
/* Use default priorities */
rc = gnutls_set_default_priority(session);
@@ -578,10 +599,10 @@ gtls_connect_step1(struct Curl_easy *data,
if(result)
return result;
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
/* Only add SRP to the cipher list if SRP is requested. Otherwise
* GnuTLS will disable TLS 1.3 support. */
- if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP) {
+ if(SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP) {
size_t len = strlen(prioritylist);
char *prioritysrp = malloc(len + sizeof(GNUTLS_SRP) + 1);
@@ -600,7 +621,7 @@ gtls_connect_step1(struct Curl_easy *data,
#endif
infof(data, "GnuTLS ciphers: %s", prioritylist);
rc = gnutls_priority_set_direct(session, prioritylist, &err);
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
}
#endif
@@ -623,14 +644,14 @@ gtls_connect_step1(struct Curl_easy *data,
protocols[cur].data = (unsigned char *)ALPN_H2;
protocols[cur].size = ALPN_H2_LENGTH;
cur++;
- infof(data, "ALPN, offering %.*s", ALPN_H2_LENGTH, ALPN_H2);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
}
#endif
protocols[cur].data = (unsigned char *)ALPN_HTTP_1_1;
protocols[cur].size = ALPN_HTTP_1_1_LENGTH;
cur++;
- infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
if(gnutls_alpn_set_protocols(session, protocols, cur, 0)) {
failf(data, "failed setting ALPN");
@@ -674,9 +695,9 @@ gtls_connect_step1(struct Curl_easy *data,
}
}
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
/* put the credentials to the current session */
- if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP) {
+ if(SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP) {
rc = gnutls_credentials_set(session, GNUTLS_CRD_SRP,
backend->srp_client_cred);
if(rc != GNUTLS_E_SUCCESS) {
@@ -697,7 +718,10 @@ gtls_connect_step1(struct Curl_easy *data,
#ifndef CURL_DISABLE_PROXY
if(conn->proxy_ssl[sockindex].use) {
- transport_ptr = conn->proxy_ssl[sockindex].backend->session;
+ struct ssl_backend_data *proxy_backend;
+ proxy_backend = conn->proxy_ssl[sockindex].backend;
+ DEBUGASSERT(proxy_backend);
+ transport_ptr = proxy_backend->session;
gnutls_transport_push = gtls_push_ssl;
gnutls_transport_pull = gtls_pull_ssl;
}
@@ -854,9 +878,9 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
if(SSL_CONN_CONFIG(verifypeer) ||
SSL_CONN_CONFIG(verifyhost) ||
SSL_CONN_CONFIG(issuercert)) {
-#ifdef HAVE_GNUTLS_SRP
- if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP
- && SSL_SET_OPTION(username) != NULL
+#ifdef USE_GNUTLS_SRP
+ if(SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP
+ && SSL_SET_OPTION(primary.username)
&& !SSL_CONN_CONFIG(verifypeer)
&& gnutls_cipher_get(session)) {
/* no peer cert, but auth is ok if we have SRP user and cipher and no
@@ -867,7 +891,7 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
failf(data, "failed to get server cert");
*certverifyresult = GNUTLS_E_NO_CERTIFICATE_FOUND;
return CURLE_PEER_FAILED_VERIFICATION;
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
}
#endif
}
@@ -914,7 +938,8 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
failf(data, "server certificate verification failed. CAfile: %s "
"CRLfile: %s", SSL_CONN_CONFIG(CAfile) ? SSL_CONN_CONFIG(CAfile):
"none",
- SSL_SET_OPTION(CRLfile)?SSL_SET_OPTION(CRLfile):"none");
+ SSL_SET_OPTION(primary.CRLfile) ?
+ SSL_SET_OPTION(primary.CRLfile) : "none");
return CURLE_PEER_FAILED_VERIFICATION;
}
else
@@ -1186,7 +1211,7 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
if(ptr) {
result = pkp_pin_peer_pubkey(data, x509_cert, ptr);
if(result != CURLE_OK) {
- failf(data, "SSL: public key does not match pinned public key!");
+ failf(data, "SSL: public key does not match pinned public key");
gnutls_x509_crt_deinit(x509_cert);
return result;
}
@@ -1243,26 +1268,26 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
if(conn->bits.tls_enable_alpn) {
rc = gnutls_alpn_get_selected_protocol(session, &proto);
if(rc == 0) {
- infof(data, "ALPN, server accepted to use %.*s", proto.size,
- proto.data);
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR, proto.size,
+ proto.data);
#ifdef USE_HTTP2
if(proto.size == ALPN_H2_LENGTH &&
!memcmp(ALPN_H2, proto.data,
ALPN_H2_LENGTH)) {
- conn->negnpn = CURL_HTTP_VERSION_2;
+ conn->alpn = CURL_HTTP_VERSION_2;
}
else
#endif
if(proto.size == ALPN_HTTP_1_1_LENGTH &&
!memcmp(ALPN_HTTP_1_1, proto.data, ALPN_HTTP_1_1_LENGTH)) {
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ conn->alpn = CURL_HTTP_VERSION_1_1;
}
}
else
- infof(data, "ALPN, server did not agree to a protocol");
+ infof(data, VTLS_INFOF_NO_ALPN);
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
@@ -1352,7 +1377,9 @@ gtls_connect_common(struct Curl_easy *data,
/* Finish connecting once the handshake is done */
if(ssl_connect_1 == connssl->connecting_state) {
struct ssl_backend_data *backend = connssl->backend;
- gnutls_session_t session = backend->session;
+ gnutls_session_t session;
+ DEBUGASSERT(backend);
+ session = backend->session;
rc = Curl_gtls_verifyserver(data, conn, session, sockindex);
if(rc)
return rc;
@@ -1393,6 +1420,9 @@ static bool gtls_data_pending(const struct connectdata *conn,
const struct ssl_connect_data *connssl = &conn->ssl[connindex];
bool res = FALSE;
struct ssl_backend_data *backend = connssl->backend;
+
+ DEBUGASSERT(backend);
+
if(backend->session &&
0 != gnutls_record_check_pending(backend->session))
res = TRUE;
@@ -1400,6 +1430,7 @@ static bool gtls_data_pending(const struct connectdata *conn,
#ifndef CURL_DISABLE_PROXY
connssl = &conn->proxy_ssl[connindex];
backend = connssl->backend;
+ DEBUGASSERT(backend);
if(backend->session &&
0 != gnutls_record_check_pending(backend->session))
res = TRUE;
@@ -1417,7 +1448,10 @@ static ssize_t gtls_send(struct Curl_easy *data,
struct connectdata *conn = data->conn;
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
- ssize_t rc = gnutls_record_send(backend->session, mem, len);
+ ssize_t rc;
+
+ DEBUGASSERT(backend);
+ rc = gnutls_record_send(backend->session, mem, len);
if(rc < 0) {
*curlcode = (rc == GNUTLS_E_AGAIN)
@@ -1433,6 +1467,8 @@ static ssize_t gtls_send(struct Curl_easy *data,
static void close_one(struct ssl_connect_data *connssl)
{
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
if(backend->session) {
char buf[32];
/* Maybe the server has already sent a close notify alert.
@@ -1446,7 +1482,7 @@ static void close_one(struct ssl_connect_data *connssl)
gnutls_certificate_free_credentials(backend->cred);
backend->cred = NULL;
}
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
if(backend->srp_client_cred) {
gnutls_srp_free_client_credentials(backend->srp_client_cred);
backend->srp_client_cred = NULL;
@@ -1475,6 +1511,8 @@ static int gtls_shutdown(struct Curl_easy *data, struct connectdata *conn,
struct ssl_backend_data *backend = connssl->backend;
int retval = 0;
+ DEBUGASSERT(backend);
+
#ifndef CURL_DISABLE_FTP
/* This has only been tested on the proftpd server, and the mod_tls code
sends a close notify alert without waiting for a close notify alert in
@@ -1530,9 +1568,9 @@ static int gtls_shutdown(struct Curl_easy *data, struct connectdata *conn,
}
gnutls_certificate_free_credentials(backend->cred);
-#ifdef HAVE_GNUTLS_SRP
- if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP
- && SSL_SET_OPTION(username) != NULL)
+#ifdef USE_GNUTLS_SRP
+ if(SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP
+ && SSL_SET_OPTION(primary.username) != NULL)
gnutls_srp_free_client_credentials(backend->srp_client_cred);
#endif
@@ -1553,6 +1591,8 @@ static ssize_t gtls_recv(struct Curl_easy *data, /* connection data */
struct ssl_backend_data *backend = connssl->backend;
ssize_t ret;
+ DEBUGASSERT(backend);
+
ret = gnutls_record_recv(backend->session, buf, buffersize);
if((ret == GNUTLS_E_AGAIN) || (ret == GNUTLS_E_INTERRUPTED)) {
*curlcode = CURLE_AGAIN;
@@ -1624,6 +1664,7 @@ static void *gtls_get_internals(struct ssl_connect_data *connssl,
{
struct ssl_backend_data *backend = connssl->backend;
(void)info;
+ DEBUGASSERT(backend);
return backend->session;
}
diff --git a/lib/vtls/gtls.h b/lib/vtls/gtls.h
index 642d5f093..abade73f8 100644
--- a/lib/vtls/gtls.h
+++ b/lib/vtls/gtls.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/hostcheck.c b/lib/vtls/hostcheck.c
index cd45bd07e..2a648f20a 100644
--- a/lib/hostcheck.c
+++ b/lib/vtls/hostcheck.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -33,6 +35,7 @@
#ifdef HAVE_NETINET_IN6_H
#include <netinet/in6.h>
#endif
+#include "curl_memrchr.h"
#include "hostcheck.h"
#include "strcase.h"
@@ -42,13 +45,23 @@
/* The last #include file should be: */
#include "memdebug.h"
+/* check the two input strings with given length, but do not
+ assume they end in nul-bytes */
+static bool pmatch(const char *hostname, size_t hostlen,
+ const char *pattern, size_t patternlen)
+{
+ if(hostlen != patternlen)
+ return FALSE;
+ return strncasecompare(hostname, pattern, hostlen);
+}
+
/*
* Match a hostname against a wildcard pattern.
* E.g.
* "foo.host.com" matches "*.host.com".
*
* We use the matching rule described in RFC6125, section 6.4.3.
- * https://tools.ietf.org/html/rfc6125#section-6.4.3
+ * https://datatracker.ietf.org/doc/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.
@@ -58,85 +71,72 @@
* 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.
+ * Return TRUE on a match. FALSE if not.
*/
-static int hostmatch(char *hostname, char *pattern)
+static bool hostmatch(const char *hostname,
+ size_t hostlen,
+ const char *pattern,
+ size_t patternlen)
{
- const char *pattern_label_end, *pattern_wildcard, *hostname_label_end;
- int wildcard_enabled;
+ const char *pattern_label_end, *wildcard, *hostname_label_end;
size_t prefixlen, suffixlen;
/* 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)
- return strcasecompare(pattern, hostname) ?
- CURL_HOST_MATCH : CURL_HOST_NOMATCH;
+ DEBUGASSERT(patternlen);
+ if(hostname[hostlen-1]=='.')
+ hostlen--;
+ if(pattern[patternlen-1]=='.')
+ patternlen--;
+
+ wildcard = memchr(pattern, '*', patternlen);
+ if(!wildcard)
+ return pmatch(hostname, hostlen, pattern, patternlen);
/* detect IP address as hostname and fail the match if so */
if(Curl_host_is_ipnum(hostname))
- return CURL_HOST_NOMATCH;
+ return FALSE;
- /* We require at least 2 dots in pattern to avoid too wide wildcard
+ /* We require at least 2 dots in the pattern to avoid too wide wildcard
match. */
- wildcard_enabled = 1;
- pattern_label_end = strchr(pattern, '.');
- if(!pattern_label_end || !strchr(pattern_label_end + 1, '.') ||
- pattern_wildcard > pattern_label_end ||
- strncasecompare(pattern, "xn--", 4)) {
- wildcard_enabled = 0;
+ pattern_label_end = memchr(pattern, '.', patternlen);
+ if(!pattern_label_end ||
+ (memrchr(pattern, '.', patternlen) == pattern_label_end) ||
+ strncasecompare(pattern, "xn--", 4))
+ return pmatch(hostname, hostlen, pattern, patternlen);
+
+ hostname_label_end = memchr(hostname, '.', hostlen);
+ if(!hostname_label_end)
+ return FALSE;
+ else {
+ size_t skiphost = hostname_label_end - hostname;
+ size_t skiplen = pattern_label_end - pattern;
+ if(!pmatch(hostname_label_end, hostlen - skiphost,
+ pattern_label_end, patternlen - skiplen))
+ return FALSE;
}
- if(!wildcard_enabled)
- return strcasecompare(pattern, hostname) ?
- CURL_HOST_MATCH : CURL_HOST_NOMATCH;
-
- hostname_label_end = strchr(hostname, '.');
- if(!hostname_label_end ||
- !strcasecompare(pattern_label_end, hostname_label_end))
- return CURL_HOST_NOMATCH;
-
/* The wildcard must match at least one character, so the left-most
label of the hostname is at least as large as the left-most label
of the pattern. */
if(hostname_label_end - hostname < pattern_label_end - pattern)
- return CURL_HOST_NOMATCH;
+ return FALSE;
- prefixlen = pattern_wildcard - pattern;
- suffixlen = pattern_label_end - (pattern_wildcard + 1);
+ prefixlen = wildcard - pattern;
+ suffixlen = pattern_label_end - (wildcard + 1);
return strncasecompare(pattern, hostname, prefixlen) &&
- strncasecompare(pattern_wildcard + 1, hostname_label_end - suffixlen,
- suffixlen) ?
- CURL_HOST_MATCH : CURL_HOST_NOMATCH;
+ strncasecompare(wildcard + 1, hostname_label_end - suffixlen,
+ suffixlen) ? TRUE : FALSE;
}
-int Curl_cert_hostcheck(const char *match_pattern, const char *hostname)
+/*
+ * Curl_cert_hostcheck() returns TRUE if a match and FALSE if not.
+ */
+bool Curl_cert_hostcheck(const char *match, size_t matchlen,
+ const char *hostname, size_t hostlen)
{
- int res = 0;
- if(!match_pattern || !*match_pattern ||
- !hostname || !*hostname) /* sanity check */
- ;
- else {
- char *matchp = strdup(match_pattern);
- if(matchp) {
- char *hostp = strdup(hostname);
- if(hostp) {
- if(hostmatch(hostp, matchp) == CURL_HOST_MATCH)
- res = 1;
- free(hostp);
- }
- free(matchp);
- }
- }
-
- return res;
+ if(match && *match && hostname && *hostname)
+ return hostmatch(hostname, hostlen, match, matchlen);
+ return FALSE;
}
#endif /* OPENSSL, GSKIT or schannel+wince */
diff --git a/lib/hostcheck.h b/lib/vtls/hostcheck.h
index 52155f43b..d3c4eab56 100644
--- a/lib/hostcheck.h
+++ b/lib/vtls/hostcheck.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,12 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <curl/curl.h>
-#define CURL_HOST_NOMATCH 0
-#define CURL_HOST_MATCH 1
-int Curl_cert_hostcheck(const char *match_pattern, const char *hostname);
+/* returns TRUE if there's a match */
+bool Curl_cert_hostcheck(const char *match_pattern, size_t matchlen,
+ const char *hostname, size_t hostlen);
#endif /* HEADER_CURL_HOSTCHECK_H */
diff --git a/lib/vtls/keylog.c b/lib/vtls/keylog.c
index a45945f8f..1952a690c 100644
--- a/lib/vtls/keylog.c
+++ b/lib/vtls/keylog.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,13 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#include "keylog.h"
+#include <curl/curl.h>
/* The last #include files should be: */
#include "curl_memory.h"
diff --git a/lib/vtls/keylog.h b/lib/vtls/keylog.h
index 63626da90..5d3c675b3 100644
--- a/lib/vtls/keylog.h
+++ b/lib/vtls/keylog.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vtls/mbedtls.c b/lib/vtls/mbedtls.c
index 1d209b273..fbde8976e 100644
--- a/lib/vtls/mbedtls.c
+++ b/lib/vtls/mbedtls.c
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -41,9 +43,6 @@
#include <mbedtls/net.h>
#endif
#include <mbedtls/ssl.h>
-#if MBEDTLS_VERSION_NUMBER < 0x03000000
-#include <mbedtls/certs.h>
-#endif
#include <mbedtls/x509.h>
#include <mbedtls/error.h>
@@ -73,17 +72,28 @@
#include "curl_memory.h"
#include "memdebug.h"
+/* ALPN for http2 */
+#ifdef USE_HTTP2
+# undef HAS_ALPN
+# ifdef MBEDTLS_SSL_ALPN
+# define HAS_ALPN
+# endif
+#endif
+
struct ssl_backend_data {
mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_entropy_context entropy;
mbedtls_ssl_context ssl;
- int server_fd;
mbedtls_x509_crt cacert;
mbedtls_x509_crt clicert;
+#ifdef MBEDTLS_X509_CRL_PARSE_C
mbedtls_x509_crl crl;
+#endif
mbedtls_pk_context pk;
mbedtls_ssl_config config;
+#ifdef HAS_ALPN
const char *protocols[3];
+#endif
};
/* apply threading? */
@@ -145,15 +155,6 @@ static void mbed_debug(void *context, int level, const char *f_name,
#else
#endif
-/* ALPN for http2? */
-#ifdef USE_NGHTTP2
-# undef HAS_ALPN
-# ifdef MBEDTLS_SSL_ALPN
-# define HAS_ALPN
-# endif
-#endif
-
-
/*
* profile
*/
@@ -231,6 +232,8 @@ set_ssl_version_min_max(struct Curl_easy *data, struct connectdata *conn,
long ssl_version_max = SSL_CONN_CONFIG(version_max);
CURLcode result = CURLE_OK;
+ DEBUGASSERT(backend);
+
switch(ssl_version) {
case CURL_SSLVERSION_DEFAULT:
case CURL_SSLVERSION_TLSv1:
@@ -278,7 +281,7 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
const char * const ssl_capath = SSL_CONN_CONFIG(CApath);
char * const ssl_cert = SSL_SET_OPTION(primary.clientcert);
const struct curl_blob *ssl_cert_blob = SSL_SET_OPTION(primary.cert_blob);
- const char * const ssl_crlfile = SSL_SET_OPTION(CRLfile);
+ const char * const ssl_crlfile = SSL_SET_OPTION(primary.CRLfile);
const char * const hostname = SSL_HOST_NAME();
#ifndef CURL_DISABLE_VERBOSE_STRINGS
const long int port = SSL_HOST_PORT();
@@ -286,6 +289,8 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
int ret = -1;
char errorbuf[128];
+ DEBUGASSERT(backend);
+
if((SSL_CONN_CONFIG(version) == CURL_SSLVERSION_SSLv2) ||
(SSL_CONN_CONFIG(version) == CURL_SSLVERSION_SSLv3)) {
failf(data, "Not supported SSL version");
@@ -300,8 +305,9 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
&ts_entropy, NULL, 0);
if(ret) {
mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
- failf(data, "Failed - mbedTLS: ctr_drbg_init returned (-0x%04X) %s",
+ failf(data, "mbedtls_ctr_drbg_seed returned (-0x%04X) %s",
-ret, errorbuf);
+ return CURLE_FAILED_INIT;
}
#else
mbedtls_entropy_init(&backend->entropy);
@@ -311,8 +317,9 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
&backend->entropy, NULL, 0);
if(ret) {
mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
- failf(data, "Failed - mbedTLS: ctr_drbg_init returned (-0x%04X) %s",
+ failf(data, "mbedtls_ctr_drbg_seed returned (-0x%04X) %s",
-ret, errorbuf);
+ return CURLE_FAILED_INIT;
}
#endif /* THREADING_SUPPORT */
@@ -335,11 +342,12 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
failf(data, "Error importing ca cert blob - mbedTLS: (-0x%04X) %s",
-ret, errorbuf);
- return ret;
+ return CURLE_SSL_CERTPROBLEM;
}
}
if(ssl_cafile && verifypeer) {
+#ifdef MBEDTLS_FS_IO
ret = mbedtls_x509_crt_parse_file(&backend->cacert, ssl_cafile);
if(ret<0) {
@@ -348,9 +356,14 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
ssl_cafile, -ret, errorbuf);
return CURLE_SSL_CACERT_BADFILE;
}
+#else
+ failf(data, "mbedtls: functions that use the filesystem not built in");
+ return CURLE_NOT_BUILT_IN;
+#endif
}
if(ssl_capath) {
+#ifdef MBEDTLS_FS_IO
ret = mbedtls_x509_crt_parse_path(&backend->cacert, ssl_capath);
if(ret<0) {
@@ -361,12 +374,17 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
if(verifypeer)
return CURLE_SSL_CACERT_BADFILE;
}
+#else
+ failf(data, "mbedtls: functions that use the filesystem not built in");
+ return CURLE_NOT_BUILT_IN;
+#endif
}
/* Load the client certificate */
mbedtls_x509_crt_init(&backend->clicert);
if(ssl_cert) {
+#ifdef MBEDTLS_FS_IO
ret = mbedtls_x509_crt_parse_file(&backend->clicert, ssl_cert);
if(ret) {
@@ -376,6 +394,10 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
return CURLE_SSL_CERTPROBLEM;
}
+#else
+ failf(data, "mbedtls: functions that use the filesystem not built in");
+ return CURLE_NOT_BUILT_IN;
+#endif
}
if(ssl_cert_blob) {
@@ -388,7 +410,7 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
memcpy(newblob, ssl_cert_blob->data, ssl_cert_blob->len);
newblob[ssl_cert_blob->len] = 0; /* null terminate */
ret = mbedtls_x509_crt_parse(&backend->clicert, newblob,
- ssl_cert_blob->len);
+ ssl_cert_blob->len + 1);
free(newblob);
if(ret) {
@@ -404,6 +426,7 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
if(SSL_SET_OPTION(key) || SSL_SET_OPTION(key_blob)) {
if(SSL_SET_OPTION(key)) {
+#ifdef MBEDTLS_FS_IO
#if MBEDTLS_VERSION_NUMBER >= 0x03000000
ret = mbedtls_pk_parse_keyfile(&backend->pk, SSL_SET_OPTION(key),
SSL_SET_OPTION(key_passwd),
@@ -420,6 +443,10 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
SSL_SET_OPTION(key), -ret, errorbuf);
return CURLE_SSL_CERTPROBLEM;
}
+#else
+ failf(data, "mbedtls: functions that use the filesystem not built in");
+ return CURLE_NOT_BUILT_IN;
+#endif
}
else {
const struct curl_blob *ssl_key_blob = SSL_SET_OPTION(key_blob);
@@ -452,9 +479,11 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
}
/* Load the CRL */
+#ifdef MBEDTLS_X509_CRL_PARSE_C
mbedtls_x509_crl_init(&backend->crl);
if(ssl_crlfile) {
+#ifdef MBEDTLS_FS_IO
ret = mbedtls_x509_crl_parse_file(&backend->crl, ssl_crlfile);
if(ret) {
@@ -464,17 +493,21 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
return CURLE_SSL_CRL_BADFILE;
}
+#else
+ failf(data, "mbedtls: functions that use the filesystem not built in");
+ return CURLE_NOT_BUILT_IN;
+#endif
+ }
+#else
+ if(ssl_crlfile) {
+ failf(data, "mbedtls: crl support not built in");
+ return CURLE_NOT_BUILT_IN;
}
+#endif
infof(data, "mbedTLS: Connecting to %s:%ld", hostname, port);
mbedtls_ssl_config_init(&backend->config);
-
- mbedtls_ssl_init(&backend->ssl);
- if(mbedtls_ssl_setup(&backend->ssl, &backend->config)) {
- failf(data, "mbedTLS: ssl_init failed");
- return CURLE_SSL_CONNECT_ERROR;
- }
ret = mbedtls_ssl_config_defaults(&backend->config,
MBEDTLS_SSL_IS_CLIENT,
MBEDTLS_SSL_TRANSPORT_STREAM,
@@ -484,6 +517,12 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
return CURLE_SSL_CONNECT_ERROR;
}
+ mbedtls_ssl_init(&backend->ssl);
+ if(mbedtls_ssl_setup(&backend->ssl, &backend->config)) {
+ failf(data, "mbedTLS: ssl_init failed");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+
/* new profile with RSA min key len = 1024 ... */
mbedtls_ssl_conf_cert_profile(&backend->config,
&mbedtls_x509_crt_profile_fr);
@@ -555,26 +594,33 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
mbedtls_ssl_conf_ca_chain(&backend->config,
&backend->cacert,
+#ifdef MBEDTLS_X509_CRL_PARSE_C
&backend->crl);
+#else
+ NULL);
+#endif
if(SSL_SET_OPTION(key) || SSL_SET_OPTION(key_blob)) {
mbedtls_ssl_conf_own_cert(&backend->config,
&backend->clicert, &backend->pk);
}
- if(mbedtls_ssl_set_hostname(&backend->ssl, hostname)) {
- /* mbedtls_ssl_set_hostname() sets the name to use in CN/SAN checks *and*
- the name to set in the SNI extension. So even if curl connects to a
- host specified as an IP address, this function must be used. */
- failf(data, "couldn't set hostname in mbedTLS");
- return CURLE_SSL_CONNECT_ERROR;
+ {
+ char *snihost = Curl_ssl_snihost(data, hostname, NULL);
+ if(!snihost || mbedtls_ssl_set_hostname(&backend->ssl, snihost)) {
+ /* mbedtls_ssl_set_hostname() sets the name to use in CN/SAN checks and
+ the name to set in the SNI extension. So even if curl connects to a
+ host specified as an IP address, this function must be used. */
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
}
#ifdef HAS_ALPN
if(conn->bits.tls_enable_alpn) {
const char **p = &backend->protocols[0];
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
if(data->state.httpwant >= CURL_HTTP_VERSION_2)
- *p++ = NGHTTP2_PROTO_VERSION_ID;
+ *p++ = ALPN_H2;
#endif
*p++ = ALPN_HTTP_1_1;
*p = NULL;
@@ -586,7 +632,7 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
return CURLE_SSL_CONNECT_ERROR;
}
for(p = &backend->protocols[0]; *p; ++p)
- infof(data, "ALPN, offering %s", *p);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, *p);
}
#endif
@@ -627,6 +673,8 @@ mbed_connect_step2(struct Curl_easy *data, struct connectdata *conn,
const mbedtls_x509_crt *peercert;
const char * const pinnedpubkey = SSL_PINNED_PUB_KEY();
+ DEBUGASSERT(backend);
+
conn->recv[sockindex] = mbed_recv;
conn->send[sockindex] = mbed_send;
@@ -769,24 +817,23 @@ mbed_connect_step2(struct Curl_easy *data, struct connectdata *conn,
const char *next_protocol = mbedtls_ssl_get_alpn_protocol(&backend->ssl);
if(next_protocol) {
- infof(data, "ALPN, server accepted to use %s", next_protocol);
-#ifdef USE_NGHTTP2
- if(!strncmp(next_protocol, NGHTTP2_PROTO_VERSION_ID,
- NGHTTP2_PROTO_VERSION_ID_LEN) &&
- !next_protocol[NGHTTP2_PROTO_VERSION_ID_LEN]) {
- conn->negnpn = CURL_HTTP_VERSION_2;
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_1STR, next_protocol);
+#ifdef USE_HTTP2
+ if(!strncmp(next_protocol, ALPN_H2, ALPN_H2_LENGTH) &&
+ !next_protocol[ALPN_H2_LENGTH]) {
+ conn->alpn = CURL_HTTP_VERSION_2;
}
else
#endif
if(!strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH) &&
!next_protocol[ALPN_HTTP_1_1_LENGTH]) {
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ conn->alpn = CURL_HTTP_VERSION_1_1;
}
}
else {
- infof(data, "ALPN, server did not agree to a protocol");
+ infof(data, VTLS_INFOF_NO_ALPN);
}
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
#endif
@@ -806,6 +853,7 @@ mbed_connect_step3(struct Curl_easy *data, struct connectdata *conn,
struct ssl_backend_data *backend = connssl->backend;
DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
+ DEBUGASSERT(backend);
if(SSL_SET_OPTION(primary.sessionid)) {
int ret;
@@ -862,6 +910,8 @@ static ssize_t mbed_send(struct Curl_easy *data, int sockindex,
struct ssl_backend_data *backend = connssl->backend;
int ret = -1;
+ DEBUGASSERT(backend);
+
ret = mbedtls_ssl_write(&backend->ssl, (unsigned char *)mem, len);
if(ret < 0) {
@@ -886,6 +936,8 @@ static void mbedtls_close(struct Curl_easy *data,
char buf[32];
(void) data;
+ DEBUGASSERT(backend);
+
/* Maybe the server has already sent a close notify alert.
Read it to avoid an RST on the TCP connection. */
(void)mbedtls_ssl_read(&backend->ssl, (unsigned char *)buf, sizeof(buf));
@@ -893,7 +945,9 @@ static void mbedtls_close(struct Curl_easy *data,
mbedtls_pk_free(&backend->pk);
mbedtls_x509_crt_free(&backend->clicert);
mbedtls_x509_crt_free(&backend->cacert);
+#ifdef MBEDTLS_X509_CRL_PARSE_C
mbedtls_x509_crl_free(&backend->crl);
+#endif
mbedtls_ssl_config_free(&backend->config);
mbedtls_ssl_free(&backend->ssl);
mbedtls_ctr_drbg_free(&backend->ctr_drbg);
@@ -912,6 +966,8 @@ static ssize_t mbed_recv(struct Curl_easy *data, int num,
int ret = -1;
ssize_t len = -1;
+ DEBUGASSERT(backend);
+
ret = mbedtls_ssl_read(&backend->ssl, (unsigned char *)buf,
buffersize);
@@ -963,7 +1019,7 @@ static CURLcode mbedtls_random(struct Curl_easy *data,
if(ret) {
mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
- failf(data, "Failed - mbedTLS: ctr_drbg_seed returned (-0x%04X) %s",
+ failf(data, "mbedtls_ctr_drbg_seed returned (-0x%04X) %s",
-ret, errorbuf);
}
else {
@@ -971,7 +1027,7 @@ static CURLcode mbedtls_random(struct Curl_easy *data,
if(ret) {
mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
- failf(data, "mbedTLS: ctr_drbg_init returned (-0x%04X) %s",
+ failf(data, "mbedtls_ctr_drbg_random returned (-0x%04X) %s",
-ret, errorbuf);
}
}
@@ -1146,6 +1202,7 @@ static bool mbedtls_data_pending(const struct connectdata *conn,
{
const struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
return mbedtls_ssl_get_bytes_avail(&backend->ssl) != 0;
}
@@ -1175,6 +1232,7 @@ static void *mbedtls_get_internals(struct ssl_connect_data *connssl,
{
struct ssl_backend_data *backend = connssl->backend;
(void)info;
+ DEBUGASSERT(backend);
return &backend->ssl;
}
diff --git a/lib/vtls/mbedtls.h b/lib/vtls/mbedtls.h
index 1abd331ea..ec3b43bf9 100644
--- a/lib/vtls/mbedtls.h
+++ b/lib/vtls/mbedtls.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
*
* This software is licensed as described in the file COPYING, which
@@ -21,6 +21,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vtls/mbedtls_threadlock.c b/lib/vtls/mbedtls_threadlock.c
index 751755c23..3971e69b2 100644
--- a/lib/vtls/mbedtls_threadlock.c
+++ b/lib/vtls/mbedtls_threadlock.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
*
* This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vtls/mbedtls_threadlock.h b/lib/vtls/mbedtls_threadlock.h
index e40dfc8d6..3a50d0381 100644
--- a/lib/vtls/mbedtls_threadlock.h
+++ b/lib/vtls/mbedtls_threadlock.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
*
* This software is licensed as described in the file COPYING, which
@@ -21,6 +21,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vtls/mesalink.c b/lib/vtls/mesalink.c
deleted file mode 100644
index 35a916586..000000000
--- a/lib/vtls/mesalink.c
+++ /dev/null
@@ -1,679 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com>
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/*
- * Source file for all MesaLink-specific code for the TLS/SSL layer. No code
- * but vtls.c should ever call or use these functions.
- *
- */
-
-/*
- * Based upon the CyaSSL implementation in cyassl.c and cyassl.h:
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * Thanks for code and inspiration!
- */
-
-#include "curl_setup.h"
-
-#ifdef USE_MESALINK
-
-#include <mesalink/options.h>
-#include <mesalink/version.h>
-
-#include "urldata.h"
-#include "sendf.h"
-#include "inet_pton.h"
-#include "vtls.h"
-#include "parsedate.h"
-#include "connect.h" /* for the connect timeout */
-#include "select.h"
-#include "strcase.h"
-#include "x509asn1.h"
-#include "curl_printf.h"
-
-#include "mesalink.h"
-#include <mesalink/openssl/ssl.h>
-#include <mesalink/openssl/err.h>
-
-/* The last #include files should be: */
-#include "curl_memory.h"
-#include "memdebug.h"
-
-#define MESALINK_MAX_ERROR_SZ 80
-
-struct ssl_backend_data
-{
- SSL_CTX *ctx;
- SSL *handle;
-};
-
-static Curl_recv mesalink_recv;
-static Curl_send mesalink_send;
-
-static int do_file_type(const char *type)
-{
- if(!type || !type[0])
- return SSL_FILETYPE_PEM;
- if(strcasecompare(type, "PEM"))
- return SSL_FILETYPE_PEM;
- if(strcasecompare(type, "DER"))
- return SSL_FILETYPE_ASN1;
- return -1;
-}
-
-/*
- * This function loads all the client/CA certificates and CRLs. Setup the TLS
- * layer and do all necessary magic.
- */
-static CURLcode
-mesalink_connect_step1(struct Curl_easy *data,
- struct connectdata *conn, int sockindex)
-{
- char *ciphers;
- struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- struct in_addr addr4;
-#ifdef ENABLE_IPV6
- struct in6_addr addr6;
-#endif
- const char * const hostname = SSL_HOST_NAME();
- size_t hostname_len = strlen(hostname);
- SSL_METHOD *req_method = NULL;
- curl_socket_t sockfd = conn->sock[sockindex];
- struct ssl_backend_data *backend = connssl->backend;
-
- if(connssl->state == ssl_connection_complete)
- return CURLE_OK;
-
- if(SSL_CONN_CONFIG(version_max) != CURL_SSLVERSION_MAX_NONE) {
- failf(data, "MesaLink does not support to set maximum SSL/TLS version");
- return CURLE_SSL_CONNECT_ERROR;
- }
-
- switch(SSL_CONN_CONFIG(version)) {
- case CURL_SSLVERSION_SSLv3:
- case CURL_SSLVERSION_TLSv1:
- case CURL_SSLVERSION_TLSv1_0:
- case CURL_SSLVERSION_TLSv1_1:
- failf(data, "MesaLink does not support SSL 3.0, TLS 1.0, or TLS 1.1");
- return CURLE_NOT_BUILT_IN;
- case CURL_SSLVERSION_DEFAULT:
- case CURL_SSLVERSION_TLSv1_2:
- req_method = TLSv1_2_client_method();
- break;
- case CURL_SSLVERSION_TLSv1_3:
- req_method = TLSv1_3_client_method();
- break;
- case CURL_SSLVERSION_SSLv2:
- failf(data, "MesaLink does not support SSLv2");
- return CURLE_SSL_CONNECT_ERROR;
- default:
- failf(data, "Unrecognized parameter passed via CURLOPT_SSLVERSION");
- return CURLE_SSL_CONNECT_ERROR;
- }
-
- if(!req_method) {
- failf(data, "SSL: couldn't create a method!");
- return CURLE_OUT_OF_MEMORY;
- }
-
- if(backend->ctx)
- SSL_CTX_free(backend->ctx);
- backend->ctx = SSL_CTX_new(req_method);
-
- if(!backend->ctx) {
- failf(data, "SSL: couldn't create a context!");
- return CURLE_OUT_OF_MEMORY;
- }
-
- SSL_CTX_set_verify(
- backend->ctx, SSL_CONN_CONFIG(verifypeer) ?
- SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL);
-
- if(SSL_CONN_CONFIG(CAfile) || SSL_CONN_CONFIG(CApath)) {
- if(!SSL_CTX_load_verify_locations(backend->ctx, SSL_CONN_CONFIG(CAfile),
- SSL_CONN_CONFIG(CApath))) {
- if(SSL_CONN_CONFIG(verifypeer)) {
- failf(data,
- "error setting certificate verify locations: "
- " CAfile: %s CApath: %s",
- SSL_CONN_CONFIG(CAfile) ?
- SSL_CONN_CONFIG(CAfile) : "none",
- SSL_CONN_CONFIG(CApath) ?
- SSL_CONN_CONFIG(CApath) : "none");
- return CURLE_SSL_CACERT_BADFILE;
- }
- infof(data,
- "error setting certificate verify locations,"
- " continuing anyway:");
- }
- else {
- infof(data, "successfully set certificate verify locations:");
- }
- infof(data, " CAfile: %s",
- SSL_CONN_CONFIG(CAfile) ? SSL_CONN_CONFIG(CAfile): "none");
- infof(data, " CApath: %s",
- SSL_CONN_CONFIG(CApath) ? SSL_CONN_CONFIG(CApath): "none");
- }
-
- if(SSL_SET_OPTION(primary.clientcert) && SSL_SET_OPTION(key)) {
- int file_type = do_file_type(SSL_SET_OPTION(cert_type));
-
- if(SSL_CTX_use_certificate_chain_file(backend->ctx,
- SSL_SET_OPTION(primary.clientcert),
- file_type) != 1) {
- failf(data, "unable to use client certificate (no key or wrong pass"
- " phrase?)");
- return CURLE_SSL_CONNECT_ERROR;
- }
-
- file_type = do_file_type(SSL_SET_OPTION(key_type));
- if(SSL_CTX_use_PrivateKey_file(backend->ctx, SSL_SET_OPTION(key),
- file_type) != 1) {
- failf(data, "unable to set private key");
- return CURLE_SSL_CONNECT_ERROR;
- }
- infof(data,
- "client cert: %s",
- SSL_CONN_CONFIG(clientcert)?
- SSL_CONN_CONFIG(clientcert): "none");
- }
-
- ciphers = SSL_CONN_CONFIG(cipher_list);
- if(ciphers) {
-#ifdef MESALINK_HAVE_CIPHER
- if(!SSL_CTX_set_cipher_list(backend->ctx, ciphers)) {
- failf(data, "failed setting cipher list: %s", ciphers);
- return CURLE_SSL_CIPHER;
- }
-#endif
- infof(data, "Cipher selection: %s", ciphers);
- }
-
- if(backend->handle)
- SSL_free(backend->handle);
- backend->handle = SSL_new(backend->ctx);
- if(!backend->handle) {
- failf(data, "SSL: couldn't create a context (handle)!");
- return CURLE_OUT_OF_MEMORY;
- }
-
- if((hostname_len < USHRT_MAX) &&
- (0 == Curl_inet_pton(AF_INET, hostname, &addr4))
-#ifdef ENABLE_IPV6
- && (0 == Curl_inet_pton(AF_INET6, hostname, &addr6))
-#endif
- ) {
- /* hostname is not a valid IP address */
- if(SSL_set_tlsext_host_name(backend->handle, hostname) != SSL_SUCCESS) {
- failf(data,
- "WARNING: failed to configure server name indication (SNI) "
- "TLS extension\n");
- return CURLE_SSL_CONNECT_ERROR;
- }
- }
- else {
-#ifdef CURLDEBUG
- /* Check if the hostname is 127.0.0.1 or [::1];
- * otherwise reject because MesaLink always wants a valid DNS Name
- * specified in RFC 5280 Section 7.2 */
- if(strncmp(hostname, "127.0.0.1", 9) == 0
-#ifdef ENABLE_IPV6
- || strncmp(hostname, "[::1]", 5) == 0
-#endif
- ) {
- SSL_set_tlsext_host_name(backend->handle, "localhost");
- }
- else
-#endif
- {
- failf(data,
- "ERROR: MesaLink does not accept an IP address as a hostname\n");
- return CURLE_SSL_CONNECT_ERROR;
- }
- }
-
-#ifdef MESALINK_HAVE_SESSION
- if(SSL_SET_OPTION(primary.sessionid)) {
- void *ssl_sessionid = NULL;
-
- Curl_ssl_sessionid_lock(data);
- if(!Curl_ssl_getsessionid(data, conn,
- SSL_IS_PROXY() ? TRUE : FALSE,
- &ssl_sessionid, NULL, sockindex)) {
- /* we got a session id, use it! */
- if(!SSL_set_session(backend->handle, ssl_sessionid)) {
- Curl_ssl_sessionid_unlock(data);
- failf(
- data,
- "SSL: SSL_set_session failed: %s",
- ERR_error_string(SSL_get_error(backend->handle, 0), error_buffer));
- return CURLE_SSL_CONNECT_ERROR;
- }
- /* Informational message */
- infof(data, "SSL re-using session ID");
- }
- Curl_ssl_sessionid_unlock(data);
- }
-#endif /* MESALINK_HAVE_SESSION */
-
- if(SSL_set_fd(backend->handle, (int)sockfd) != SSL_SUCCESS) {
- failf(data, "SSL: SSL_set_fd failed");
- return CURLE_SSL_CONNECT_ERROR;
- }
-
- connssl->connecting_state = ssl_connect_2;
- return CURLE_OK;
-}
-
-static CURLcode
-mesalink_connect_step2(struct Curl_easy *data,
- struct connectdata *conn, int sockindex)
-{
- int ret = -1;
- struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- struct ssl_backend_data *backend = connssl->backend;
-
- conn->recv[sockindex] = mesalink_recv;
- conn->send[sockindex] = mesalink_send;
-
- ret = SSL_connect(backend->handle);
- if(ret != SSL_SUCCESS) {
- int detail = SSL_get_error(backend->handle, ret);
-
- if(SSL_ERROR_WANT_CONNECT == detail || SSL_ERROR_WANT_READ == detail) {
- connssl->connecting_state = ssl_connect_2_reading;
- return CURLE_OK;
- }
- else {
- char error_buffer[MESALINK_MAX_ERROR_SZ];
- failf(data,
- "SSL_connect failed with error %d: %s",
- detail,
- ERR_error_string_n(detail, error_buffer, sizeof(error_buffer)));
- ERR_print_errors_fp(stderr);
- if(detail && SSL_CONN_CONFIG(verifypeer)) {
- detail &= ~0xFF;
- if(detail == TLS_ERROR_WEBPKI_ERRORS) {
- failf(data, "Cert verify failed");
- return CURLE_PEER_FAILED_VERIFICATION;
- }
- }
- return CURLE_SSL_CONNECT_ERROR;
- }
- }
-
- connssl->connecting_state = ssl_connect_3;
- infof(data,
- "SSL connection using %s / %s",
- SSL_get_version(backend->handle),
- SSL_get_cipher_name(backend->handle));
-
- return CURLE_OK;
-}
-
-static CURLcode
-mesalink_connect_step3(struct connectdata *conn, int sockindex)
-{
- CURLcode result = CURLE_OK;
- struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-
- DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
-
-#ifdef MESALINK_HAVE_SESSION
- if(SSL_SET_OPTION(primary.sessionid)) {
- bool incache;
- SSL_SESSION *our_ssl_sessionid;
- void *old_ssl_sessionid = NULL;
- bool isproxy = SSL_IS_PROXY() ? TRUE : FALSE;
- struct ssl_backend_data *backend = connssl->backend;
-
- our_ssl_sessionid = SSL_get_session(backend->handle);
-
- Curl_ssl_sessionid_lock(data);
- incache =
- !(Curl_ssl_getsessionid(data, conn, isproxy, &old_ssl_sessionid, NULL,
- sockindex));
- if(incache) {
- if(old_ssl_sessionid != our_ssl_sessionid) {
- infof(data, "old SSL session ID is stale, removing");
- Curl_ssl_delsessionid(data, old_ssl_sessionid);
- incache = FALSE;
- }
- }
-
- if(!incache) {
- result =
- Curl_ssl_addsessionid(data, conn, isproxy, our_ssl_sessionid, 0,
- sockindex, NULL);
- if(result) {
- Curl_ssl_sessionid_unlock(data);
- failf(data, "failed to store ssl session");
- return result;
- }
- }
- Curl_ssl_sessionid_unlock(data);
- }
-#endif /* MESALINK_HAVE_SESSION */
-
- connssl->connecting_state = ssl_connect_done;
-
- return result;
-}
-
-static ssize_t
-mesalink_send(struct Curl_easy *data, int sockindex, const void *mem,
- size_t len, CURLcode *curlcode)
-{
- struct connectdata *conn = data->conn;
- struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- struct ssl_backend_data *backend = connssl->backend;
- char error_buffer[MESALINK_MAX_ERROR_SZ];
- int memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
- int rc = SSL_write(backend->handle, mem, memlen);
-
- if(rc < 0) {
- int err = SSL_get_error(backend->handle, rc);
- switch(err) {
- case SSL_ERROR_WANT_READ:
- case SSL_ERROR_WANT_WRITE:
- /* there's data pending, re-invoke SSL_write() */
- *curlcode = CURLE_AGAIN;
- return -1;
- default:
- failf(data,
- "SSL write: %s, errno %d",
- ERR_error_string_n(err, error_buffer, sizeof(error_buffer)),
- SOCKERRNO);
- *curlcode = CURLE_SEND_ERROR;
- return -1;
- }
- }
- return rc;
-}
-
-static void
-mesalink_close(struct Curl_easy *data, struct connectdata *conn, int sockindex)
-{
- struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- struct ssl_backend_data *backend = connssl->backend;
-
- (void) data;
-
- if(backend->handle) {
- (void)SSL_shutdown(backend->handle);
- SSL_free(backend->handle);
- backend->handle = NULL;
- }
- if(backend->ctx) {
- SSL_CTX_free(backend->ctx);
- backend->ctx = NULL;
- }
-}
-
-static ssize_t
-mesalink_recv(struct Curl_easy *data, int num, char *buf, size_t buffersize,
- CURLcode *curlcode)
-{
- struct connectdata *conn = data->conn;
- struct ssl_connect_data *connssl = &conn->ssl[num];
- struct ssl_backend_data *backend = connssl->backend;
- char error_buffer[MESALINK_MAX_ERROR_SZ];
- int buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
- int nread = SSL_read(backend->handle, buf, buffsize);
-
- if(nread <= 0) {
- int err = SSL_get_error(backend->handle, nread);
-
- switch(err) {
- case SSL_ERROR_ZERO_RETURN: /* no more data */
- case IO_ERROR_CONNECTION_ABORTED:
- break;
- case SSL_ERROR_WANT_READ:
- case SSL_ERROR_WANT_WRITE:
- /* there's data pending, re-invoke SSL_read() */
- *curlcode = CURLE_AGAIN;
- return -1;
- default:
- failf(data,
- "SSL read: %s, errno %d",
- ERR_error_string_n(err, error_buffer, sizeof(error_buffer)),
- SOCKERRNO);
- *curlcode = CURLE_RECV_ERROR;
- return -1;
- }
- }
- return nread;
-}
-
-static size_t
-mesalink_version(char *buffer, size_t size)
-{
- return msnprintf(buffer, size, "MesaLink/%s", MESALINK_VERSION_STRING);
-}
-
-static int
-mesalink_init(void)
-{
- return (SSL_library_init() == SSL_SUCCESS);
-}
-
-/*
- * This function is called to shut down the SSL layer but keep the
- * socket open (CCC - Clear Command Channel)
- */
-static int
-mesalink_shutdown(struct Curl_easy *data,
- struct connectdata *conn, int sockindex)
-{
- int retval = 0;
- struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- struct ssl_backend_data *backend = connssl->backend;
-
- (void) data;
-
- if(backend->handle) {
- SSL_free(backend->handle);
- backend->handle = NULL;
- }
- return retval;
-}
-
-static CURLcode
-mesalink_connect_common(struct Curl_easy *data, struct connectdata *conn,
- int sockindex, bool nonblocking, bool *done)
-{
- CURLcode result;
- struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- curl_socket_t sockfd = conn->sock[sockindex];
- timediff_t timeout_ms;
- int what;
-
- /* check if the connection has already been established */
- if(ssl_connection_complete == connssl->state) {
- *done = TRUE;
- return CURLE_OK;
- }
-
- if(ssl_connect_1 == connssl->connecting_state) {
- /* Find out how much more time we're allowed */
- 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");
- return CURLE_OPERATION_TIMEDOUT;
- }
-
- result = mesalink_connect_step1(data, conn, sockindex);
- if(result)
- return result;
- }
-
- while(ssl_connect_2 == connssl->connecting_state ||
- ssl_connect_2_reading == connssl->connecting_state ||
- ssl_connect_2_writing == connssl->connecting_state) {
-
- /* 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");
- return CURLE_OPERATION_TIMEDOUT;
- }
-
- /* 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) {
-
- curl_socket_t writefd =
- ssl_connect_2_writing == connssl->connecting_state ? sockfd
- : CURL_SOCKET_BAD;
- curl_socket_t readfd = ssl_connect_2_reading == connssl->connecting_state
- ? sockfd
- : CURL_SOCKET_BAD;
-
- what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
- nonblocking ? 0 : timeout_ms);
- if(what < 0) {
- /* fatal error */
- failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
- return CURLE_SSL_CONNECT_ERROR;
- }
- else if(0 == what) {
- if(nonblocking) {
- *done = FALSE;
- return CURLE_OK;
- }
- else {
- /* timeout */
- failf(data, "SSL connection timeout");
- return CURLE_OPERATION_TIMEDOUT;
- }
- }
- /* socket is readable or writable */
- }
-
- /* Run transaction, and return to the caller if it failed or if
- * this connection is part of a multi handle and this loop would
- * execute again. This permits the owner of a multi handle to
- * abort a connection attempt before step2 has completed while
- * ensuring that a client using select() or epoll() will always
- * have a valid fdset to wait on.
- */
- result = mesalink_connect_step2(data, 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) {
- result = mesalink_connect_step3(conn, sockindex);
- if(result)
- return result;
- }
-
- if(ssl_connect_done == connssl->connecting_state) {
- connssl->state = ssl_connection_complete;
- conn->recv[sockindex] = mesalink_recv;
- conn->send[sockindex] = mesalink_send;
- *done = TRUE;
- }
- else
- *done = FALSE;
-
- /* Reset our connect state machine */
- connssl->connecting_state = ssl_connect_1;
-
- return CURLE_OK;
-}
-
-static CURLcode
-mesalink_connect_nonblocking(struct Curl_easy *data, struct connectdata *conn,
- int sockindex, bool *done)
-{
- return mesalink_connect_common(data, conn, sockindex, TRUE, done);
-}
-
-static CURLcode
-mesalink_connect(struct Curl_easy *data, struct connectdata *conn,
- int sockindex)
-{
- CURLcode result;
- bool done = FALSE;
-
- result = mesalink_connect_common(data, conn, sockindex, FALSE, &done);
- if(result)
- return result;
-
- DEBUGASSERT(done);
-
- return CURLE_OK;
-}
-
-static void *
-mesalink_get_internals(struct ssl_connect_data *connssl,
- CURLINFO info UNUSED_PARAM)
-{
- struct ssl_backend_data *backend = connssl->backend;
- (void)info;
- return backend->handle;
-}
-
-const struct Curl_ssl Curl_ssl_mesalink = {
- { CURLSSLBACKEND_MESALINK, "MesaLink" }, /* info */
-
- SSLSUPP_SSL_CTX,
-
- sizeof(struct ssl_backend_data),
-
- mesalink_init, /* init */
- Curl_none_cleanup, /* cleanup */
- mesalink_version, /* version */
- Curl_none_check_cxn, /* check_cxn */
- mesalink_shutdown, /* shutdown */
- Curl_none_data_pending, /* data_pending */
- Curl_none_random, /* random */
- Curl_none_cert_status_request, /* cert_status_request */
- mesalink_connect, /* connect */
- mesalink_connect_nonblocking, /* connect_nonblocking */
- Curl_ssl_getsock, /* getsock */
- mesalink_get_internals, /* get_internals */
- mesalink_close, /* close_one */
- Curl_none_close_all, /* close_all */
- Curl_none_session_free, /* session_free */
- Curl_none_set_engine, /* set_engine */
- Curl_none_set_engine_default, /* set_engine_default */
- Curl_none_engines_list, /* engines_list */
- Curl_none_false_start, /* false_start */
- NULL, /* sha256sum */
- NULL, /* associate_connection */
- NULL /* disassociate_connection */
-};
-
-#endif
diff --git a/lib/vtls/nss.c b/lib/vtls/nss.c
index 2b44f0512..12cf618f5 100644
--- a/lib/vtls/nss.c
+++ b/lib/vtls/nss.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -334,7 +336,7 @@ static SECStatus set_ciphers(struct Curl_easy *data, PRFileDesc *model,
char name[MAX_CIPHER_LENGTH + 1];
size_t len;
bool found = FALSE;
- while((*cipher) && (ISSPACE(*cipher)))
+ while((*cipher) && (ISBLANK(*cipher)))
++cipher;
end = strpbrk(cipher, ":, ");
@@ -434,7 +436,7 @@ static char *dup_nickname(struct Curl_easy *data, const char *str)
/* search the first slash; we require at least one slash in a file name */
n = strchr(str, '/');
if(!n) {
- infof(data, "warning: certificate file name \"%s\" handled as nickname; "
+ infof(data, "WARNING: certificate file name \"%s\" handled as nickname; "
"please use \"./%s\" to force file name", str, str);
return strdup(str);
}
@@ -488,6 +490,9 @@ static CURLcode nss_create_object(struct ssl_connect_data *connssl,
const int slot_id = (cacert) ? 0 : 1;
char *slot_name = aprintf("PEM Token #%d", slot_id);
struct ssl_backend_data *backend = connssl->backend;
+
+ DEBUGASSERT(backend);
+
if(!slot_name)
return CURLE_OUT_OF_MEMORY;
@@ -845,7 +850,7 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
unsigned int buflen;
SSLNextProtoState state;
- if(!conn->bits.tls_enable_npn && !conn->bits.tls_enable_alpn) {
+ if(!conn->bits.tls_enable_alpn) {
return;
}
@@ -859,31 +864,37 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
#endif
case SSL_NEXT_PROTO_NO_SUPPORT:
case SSL_NEXT_PROTO_NO_OVERLAP:
- infof(data, "ALPN/NPN, server did not agree to a protocol");
+ infof(data, VTLS_INFOF_NO_ALPN);
return;
#ifdef SSL_ENABLE_ALPN
case SSL_NEXT_PROTO_SELECTED:
- infof(data, "ALPN, server accepted to use %.*s", buflen, buf);
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR, buflen, buf);
break;
#endif
- case SSL_NEXT_PROTO_NEGOTIATED:
- infof(data, "NPN, server accepted to use %.*s", buflen, buf);
+ default:
+ /* ignore SSL_NEXT_PROTO_NEGOTIATED */
break;
}
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
if(buflen == ALPN_H2_LENGTH &&
!memcmp(ALPN_H2, buf, ALPN_H2_LENGTH)) {
- conn->negnpn = CURL_HTTP_VERSION_2;
+ conn->alpn = CURL_HTTP_VERSION_2;
}
else
#endif
if(buflen == ALPN_HTTP_1_1_LENGTH &&
!memcmp(ALPN_HTTP_1_1, buf, ALPN_HTTP_1_1_LENGTH)) {
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ conn->alpn = CURL_HTTP_VERSION_1_1;
}
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
- BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
+
+ /* This callback might get called when PR_Recv() is used within
+ * close_one() during a connection shutdown. At that point there might not
+ * be any "bundle" associated with the connection anymore.
+ */
+ if(conn->bundle)
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
+ BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
}
@@ -925,8 +936,8 @@ static SECStatus CanFalseStartCallback(PRFileDesc *sock, void *client_data,
if(cipherInfo.symCipher != ssl_calg_aes_gcm)
goto end;
- /* Enforce ALPN or NPN to do False Start, as an indicator of server
- * compatibility. */
+ /* Enforce ALPN to do False Start, as an indicator of server
+ compatibility. */
rv = SSL_HandshakeNegotiatedExtension(sock, ssl_app_layer_protocol_xtn,
&negotiatedExtension);
if(rv != SECSuccess || !negotiatedExtension) {
@@ -974,6 +985,9 @@ static void display_cert_info(struct Curl_easy *data,
PR_Free(common_name);
}
+/* A number of certs that will never occur in a real server handshake */
+#define TOO_MANY_CERTS 300
+
static CURLcode display_conn_info(struct Curl_easy *data, PRFileDesc *sock)
{
CURLcode result = CURLE_OK;
@@ -1009,6 +1023,11 @@ static CURLcode display_conn_info(struct Curl_easy *data, PRFileDesc *sock)
cert2 = CERT_FindCertIssuer(cert, now, certUsageSSLCA);
while(cert2) {
i++;
+ if(i >= TOO_MANY_CERTS) {
+ CERT_DestroyCertificate(cert2);
+ failf(data, "certificate loop");
+ return CURLE_SSL_CERTPROBLEM;
+ }
if(cert2->isRoot) {
CERT_DestroyCertificate(cert2);
break;
@@ -1105,9 +1124,12 @@ static CURLcode cmp_peer_pubkey(struct ssl_connect_data *connssl,
{
CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
struct ssl_backend_data *backend = connssl->backend;
- struct Curl_easy *data = backend->data;
+ struct Curl_easy *data = NULL;
CERTCertificate *cert;
+ DEBUGASSERT(backend);
+ data = backend->data;
+
if(!pinnedpubkey)
/* no pinned public key specified */
return CURLE_OK;
@@ -1134,7 +1156,7 @@ static CURLcode cmp_peer_pubkey(struct ssl_connect_data *connssl,
/* report the resulting status */
switch(result) {
case CURLE_OK:
- infof(data, "pinned public key verified successfully!");
+ infof(data, "pinned public key verified successfully");
break;
case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
failf(data, "failed to verify pinned public key");
@@ -1158,10 +1180,15 @@ static SECStatus SelectClientCert(void *arg, PRFileDesc *sock,
{
struct ssl_connect_data *connssl = (struct ssl_connect_data *)arg;
struct ssl_backend_data *backend = connssl->backend;
- struct Curl_easy *data = backend->data;
- const char *nickname = backend->client_nickname;
+ struct Curl_easy *data = NULL;
+ const char *nickname = NULL;
static const char pem_slotname[] = "PEM Token #1";
+ DEBUGASSERT(backend);
+
+ data = backend->data;
+ nickname = backend->client_nickname;
+
if(backend->obj_clicert) {
/* use the cert/key provided by PEM reader */
SECItem cert_der = { 0, NULL, 0 };
@@ -1529,6 +1556,8 @@ static int nss_check_cxn(struct connectdata *conn)
int rc;
char buf;
+ DEBUGASSERT(backend);
+
rc =
PR_Recv(backend->handle, (void *)&buf, 1, PR_MSG_PEEK,
PR_SecondsToInterval(1));
@@ -1545,7 +1574,11 @@ static void close_one(struct ssl_connect_data *connssl)
{
/* before the cleanup, check whether we are using a client certificate */
struct ssl_backend_data *backend = connssl->backend;
- const bool client_cert = (backend->client_nickname != NULL)
+ bool client_cert = true;
+
+ DEBUGASSERT(backend);
+
+ client_cert = (backend->client_nickname != NULL)
|| (backend->obj_clicert != NULL);
if(backend->handle) {
@@ -1587,8 +1620,13 @@ static void nss_close(struct Curl_easy *data, struct connectdata *conn,
struct ssl_connect_data *connssl_proxy = &conn->proxy_ssl[sockindex];
#endif
struct ssl_backend_data *backend = connssl->backend;
-
(void)data;
+
+ DEBUGASSERT(backend);
+#ifndef CURL_DISABLE_PROXY
+ DEBUGASSERT(connssl_proxy->backend != NULL);
+#endif
+
if(backend->handle
#ifndef CURL_DISABLE_PROXY
|| connssl_proxy->backend->handle
@@ -1720,7 +1758,7 @@ static CURLcode nss_load_ca_certificates(struct Curl_easy *data,
PR_CloseDir(dir);
}
else
- infof(data, "warning: CURLOPT_CAPATH not a directory (%s)", capath);
+ infof(data, "WARNING: CURLOPT_CAPATH not a directory (%s)", capath);
}
return CURLE_OK;
@@ -1816,6 +1854,8 @@ static CURLcode nss_fail_connect(struct ssl_connect_data *connssl,
{
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
if(is_nss_error(curlerr)) {
/* read NSPR error code */
PRErrorCode err = PR_GetError();
@@ -1842,6 +1882,9 @@ static CURLcode nss_set_blocking(struct ssl_connect_data *connssl,
{
PRSocketOptionData sock_opt;
struct ssl_backend_data *backend = connssl->backend;
+
+ DEBUGASSERT(backend);
+
sock_opt.option = PR_SockOpt_Nonblocking;
sock_opt.value.non_blocking = !blocking;
@@ -1865,7 +1908,6 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
CURLcode result;
bool second_layer = FALSE;
SSLVersionRange sslver_supported;
-
SSLVersionRange sslver = {
SSL_LIBRARY_VERSION_TLS_1_0, /* min */
#ifdef SSL_LIBRARY_VERSION_TLS_1_3
@@ -1878,6 +1920,13 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
SSL_LIBRARY_VERSION_TLS_1_0
#endif
};
+ char *snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
+ if(!snihost) {
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+
+ DEBUGASSERT(backend);
backend->data = data;
@@ -1946,11 +1995,11 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
/* unless the user explicitly asks to allow the protocol vulnerability, we
use the work-around */
if(SSL_OptionSet(model, SSL_CBC_RANDOM_IV, ssl_cbc_random_iv) != SECSuccess)
- infof(data, "warning: failed to set SSL_CBC_RANDOM_IV = %d",
+ infof(data, "WARNING: failed to set SSL_CBC_RANDOM_IV = %d",
ssl_cbc_random_iv);
#else
if(ssl_cbc_random_iv)
- infof(data, "warning: support for SSL_CBC_RANDOM_IV not compiled in");
+ infof(data, "WARNING: support for SSL_CBC_RANDOM_IV not compiled in");
#endif
if(SSL_CONN_CONFIG(cipher_list)) {
@@ -1961,7 +2010,7 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
}
if(!SSL_CONN_CONFIG(verifypeer) && SSL_CONN_CONFIG(verifyhost))
- infof(data, "warning: ignoring value of ssl.verifyhost");
+ infof(data, "WARNING: ignoring value of ssl.verifyhost");
/* bypass the default SSL_AuthCertificate() hook in case we do not want to
* verify peer */
@@ -1981,20 +2030,20 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
const CURLcode rv = nss_load_ca_certificates(data, conn, sockindex);
if((rv == CURLE_SSL_CACERT_BADFILE) && !SSL_CONN_CONFIG(verifypeer))
/* not a fatal error because we are not going to verify the peer */
- infof(data, "warning: CA certificates failed to load");
+ infof(data, "WARNING: CA certificates failed to load");
else if(rv) {
result = rv;
goto error;
}
}
- if(SSL_SET_OPTION(CRLfile)) {
- const CURLcode rv = nss_load_crl(SSL_SET_OPTION(CRLfile));
+ if(SSL_SET_OPTION(primary.CRLfile)) {
+ const CURLcode rv = nss_load_crl(SSL_SET_OPTION(primary.CRLfile));
if(rv) {
result = rv;
goto error;
}
- infof(data, " CRLfile: %s", SSL_SET_OPTION(CRLfile));
+ infof(data, " CRLfile: %s", SSL_SET_OPTION(primary.CRLfile));
}
if(SSL_SET_OPTION(primary.clientcert)) {
@@ -2028,9 +2077,12 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
#ifndef CURL_DISABLE_PROXY
if(conn->proxy_ssl[sockindex].use) {
+ struct ssl_backend_data *proxy_backend;
+ proxy_backend = conn->proxy_ssl[sockindex].backend;
DEBUGASSERT(ssl_connection_complete == conn->proxy_ssl[sockindex].state);
- DEBUGASSERT(conn->proxy_ssl[sockindex].backend->handle != NULL);
- nspr_io = conn->proxy_ssl[sockindex].backend->handle;
+ DEBUGASSERT(proxy_backend);
+ DEBUGASSERT(proxy_backend->handle);
+ nspr_io = proxy_backend->handle;
second_layer = TRUE;
}
#endif
@@ -2084,12 +2136,6 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
}
#endif
-#ifdef SSL_ENABLE_NPN
- if(SSL_OptionSet(backend->handle, SSL_ENABLE_NPN, conn->bits.tls_enable_npn
- ? PR_TRUE : PR_FALSE) != SECSuccess)
- goto error;
-#endif
-
#ifdef SSL_ENABLE_ALPN
if(SSL_OptionSet(backend->handle, SSL_ENABLE_ALPN, conn->bits.tls_enable_alpn
? PR_TRUE : PR_FALSE) != SECSuccess)
@@ -2108,15 +2154,15 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
}
#endif
-#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
- if(conn->bits.tls_enable_npn || conn->bits.tls_enable_alpn) {
+#if defined(SSL_ENABLE_ALPN)
+ if(conn->bits.tls_enable_alpn) {
int cur = 0;
unsigned char protocols[128];
#ifdef USE_HTTP2
if(data->state.httpwant >= CURL_HTTP_VERSION_2
#ifndef CURL_DISABLE_PROXY
- && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
+ && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
#endif
) {
protocols[cur++] = ALPN_H2_LENGTH;
@@ -2140,11 +2186,11 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
goto error;
/* propagate hostname to the TLS layer */
- if(SSL_SetURL(backend->handle, SSL_HOST_NAME()) != SECSuccess)
+ if(SSL_SetURL(backend->handle, snihost) != SECSuccess)
goto error;
/* prevent NSS from re-using the session for a different hostname */
- if(SSL_SetSockPeerID(backend->handle, SSL_HOST_NAME()) != SECSuccess)
+ if(SSL_SetSockPeerID(backend->handle, snihost) != SECSuccess)
goto error;
return CURLE_OK;
@@ -2172,6 +2218,8 @@ static CURLcode nss_do_connect(struct Curl_easy *data,
goto error;
}
+ DEBUGASSERT(backend);
+
/* Force the handshake now */
timeout = PR_MillisecondsToInterval((PRUint32) time_left);
if(SSL_ForceHandshakeWithTimeout(backend->handle, timeout) != SECSuccess) {
@@ -2305,6 +2353,8 @@ static ssize_t nss_send(struct Curl_easy *data, /* transfer */
struct ssl_backend_data *backend = connssl->backend;
ssize_t rc;
+ DEBUGASSERT(backend);
+
/* The SelectClientCert() hook uses this for infof() and failf() but the
handle stored in nss_setup_connect() could have already been freed. */
backend->data = data;
@@ -2344,6 +2394,8 @@ static ssize_t nss_recv(struct Curl_easy *data, /* transfer */
struct ssl_backend_data *backend = connssl->backend;
ssize_t nread;
+ DEBUGASSERT(backend);
+
/* The SelectClientCert() hook uses this for infof() and failf() but the
handle stored in nss_setup_connect() could have already been freed. */
backend->data = data;
@@ -2442,6 +2494,7 @@ static void *nss_get_internals(struct ssl_connect_data *connssl,
{
struct ssl_backend_data *backend = connssl->backend;
(void)info;
+ DEBUGASSERT(backend);
return backend->handle;
}
diff --git a/lib/vtls/nssg.h b/lib/vtls/nssg.h
index 37b364647..454a38f1f 100644
--- a/lib/vtls/nssg.h
+++ b/lib/vtls/nssg.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
index f836c63b0..ad2efa558 100644
--- a/lib/vtls/openssl.c
+++ b/lib/vtls/openssl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -27,7 +29,7 @@
#include "curl_setup.h"
-#ifdef USE_OPENSSL
+#if defined(USE_QUICHE) || defined(USE_OPENSSL)
#include <limits.h>
@@ -53,6 +55,7 @@
#include "slist.h"
#include "select.h"
#include "vtls.h"
+#include "vauth/vauth.h"
#include "keylog.h"
#include "strcase.h"
#include "hostcheck.h"
@@ -76,10 +79,6 @@
#include <openssl/buffer.h>
#include <openssl/pkcs12.h>
-#ifdef USE_AMISSL
-#include "amigaos.h"
-#endif
-
#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_OCSP)
#include <openssl/ocsp.h>
#endif
@@ -91,7 +90,6 @@
#endif
#include "warnless.h"
-#include "non-ascii.h" /* for Curl_convert_from_utf8 prototype */
/* The last #include files should be: */
#include "curl_memory.h"
@@ -209,9 +207,17 @@
!defined(OPENSSL_IS_BORINGSSL))
#define HAVE_SSL_CTX_SET_CIPHERSUITES
#define HAVE_SSL_CTX_SET_POST_HANDSHAKE_AUTH
-/* SET_EC_CURVES is available under the same preconditions: see
- * https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set1_groups.html
+#endif
+
+/*
+ * Whether SSL_CTX_set1_curves_list is available.
+ * OpenSSL: supported since 1.0.2, see
+ * https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set1_groups.html
+ * BoringSSL: supported since 5fd1807d95f7 (committed 2016-09-30)
+ * LibreSSL: since 2.5.3 (April 12, 2017)
*/
+#if (OPENSSL_VERSION_NUMBER >= 0x10002000L) || \
+ defined(OPENSSL_IS_BORINGSSL)
#define HAVE_SSL_CTX_SET_EC_CURVES
#endif
@@ -266,7 +272,345 @@ struct ssl_backend_data {
#endif
};
-static void ossl_associate_connection(struct Curl_easy *data,
+#define push_certinfo(_label, _num) \
+do { \
+ long info_len = BIO_get_mem_data(mem, &ptr); \
+ Curl_ssl_push_certinfo_len(data, _num, _label, ptr, info_len); \
+ if(1 != BIO_reset(mem)) \
+ break; \
+} while(0)
+
+static void pubkey_show(struct Curl_easy *data,
+ BIO *mem,
+ int num,
+ const char *type,
+ const char *name,
+ const BIGNUM *bn)
+{
+ char *ptr;
+ char namebuf[32];
+
+ msnprintf(namebuf, sizeof(namebuf), "%s(%s)", type, name);
+
+ if(bn)
+ BN_print(mem, bn);
+ push_certinfo(namebuf, num);
+}
+
+#ifdef HAVE_OPAQUE_RSA_DSA_DH
+#define print_pubkey_BN(_type, _name, _num) \
+ pubkey_show(data, mem, _num, #_type, #_name, _name)
+
+#else
+#define print_pubkey_BN(_type, _name, _num) \
+do { \
+ if(_type->_name) { \
+ pubkey_show(data, mem, _num, #_type, #_name, _type->_name); \
+ } \
+} while(0)
+#endif
+
+static int asn1_object_dump(ASN1_OBJECT *a, char *buf, size_t len)
+{
+ int i, ilen;
+
+ ilen = (int)len;
+ if(ilen < 0)
+ return 1; /* buffer too big */
+
+ i = i2t_ASN1_OBJECT(buf, ilen, a);
+
+ if(i >= ilen)
+ return 1; /* buffer too small */
+
+ return 0;
+}
+
+static void X509V3_ext(struct Curl_easy *data,
+ int certnum,
+ CONST_EXTS STACK_OF(X509_EXTENSION) *exts)
+{
+ int i;
+
+ if((int)sk_X509_EXTENSION_num(exts) <= 0)
+ /* no extensions, bail out */
+ return;
+
+ for(i = 0; i < (int)sk_X509_EXTENSION_num(exts); i++) {
+ ASN1_OBJECT *obj;
+ X509_EXTENSION *ext = sk_X509_EXTENSION_value(exts, i);
+ BUF_MEM *biomem;
+ char namebuf[128];
+ BIO *bio_out = BIO_new(BIO_s_mem());
+
+ if(!bio_out)
+ return;
+
+ obj = X509_EXTENSION_get_object(ext);
+
+ asn1_object_dump(obj, namebuf, sizeof(namebuf));
+
+ if(!X509V3_EXT_print(bio_out, ext, 0, 0))
+ ASN1_STRING_print(bio_out, (ASN1_STRING *)X509_EXTENSION_get_data(ext));
+
+ BIO_get_mem_ptr(bio_out, &biomem);
+ Curl_ssl_push_certinfo_len(data, certnum, namebuf, biomem->data,
+ biomem->length);
+ BIO_free(bio_out);
+ }
+}
+
+#ifdef OPENSSL_IS_BORINGSSL
+typedef size_t numcert_t;
+#else
+typedef int numcert_t;
+#endif
+
+CURLcode Curl_ossl_certchain(struct Curl_easy *data, SSL *ssl)
+{
+ CURLcode result;
+ STACK_OF(X509) *sk;
+ int i;
+ numcert_t numcerts;
+ BIO *mem;
+
+ DEBUGASSERT(ssl);
+
+ sk = SSL_get_peer_cert_chain(ssl);
+ if(!sk) {
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ numcerts = sk_X509_num(sk);
+
+ result = Curl_ssl_init_certinfo(data, (int)numcerts);
+ if(result) {
+ return result;
+ }
+
+ mem = BIO_new(BIO_s_mem());
+ if(!mem) {
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ for(i = 0; i < (int)numcerts; i++) {
+ ASN1_INTEGER *num;
+ X509 *x = sk_X509_value(sk, i);
+ EVP_PKEY *pubkey = NULL;
+ int j;
+ char *ptr;
+ const ASN1_BIT_STRING *psig = NULL;
+
+ X509_NAME_print_ex(mem, X509_get_subject_name(x), 0, XN_FLAG_ONELINE);
+ push_certinfo("Subject", i);
+
+ X509_NAME_print_ex(mem, X509_get_issuer_name(x), 0, XN_FLAG_ONELINE);
+ push_certinfo("Issuer", i);
+
+ BIO_printf(mem, "%lx", X509_get_version(x));
+ push_certinfo("Version", i);
+
+ num = X509_get_serialNumber(x);
+ if(num->type == V_ASN1_NEG_INTEGER)
+ BIO_puts(mem, "-");
+ for(j = 0; j < num->length; j++)
+ BIO_printf(mem, "%02x", num->data[j]);
+ push_certinfo("Serial Number", i);
+
+#if defined(HAVE_X509_GET0_SIGNATURE) && defined(HAVE_X509_GET0_EXTENSIONS)
+ {
+ const X509_ALGOR *sigalg = NULL;
+ X509_PUBKEY *xpubkey = NULL;
+ ASN1_OBJECT *pubkeyoid = NULL;
+
+ X509_get0_signature(&psig, &sigalg, x);
+ if(sigalg) {
+ i2a_ASN1_OBJECT(mem, sigalg->algorithm);
+ push_certinfo("Signature Algorithm", i);
+ }
+
+ xpubkey = X509_get_X509_PUBKEY(x);
+ if(xpubkey) {
+ X509_PUBKEY_get0_param(&pubkeyoid, NULL, NULL, NULL, xpubkey);
+ if(pubkeyoid) {
+ i2a_ASN1_OBJECT(mem, pubkeyoid);
+ push_certinfo("Public Key Algorithm", i);
+ }
+ }
+
+ X509V3_ext(data, i, X509_get0_extensions(x));
+ }
+#else
+ {
+ /* before OpenSSL 1.0.2 */
+ X509_CINF *cinf = x->cert_info;
+
+ i2a_ASN1_OBJECT(mem, cinf->signature->algorithm);
+ push_certinfo("Signature Algorithm", i);
+
+ i2a_ASN1_OBJECT(mem, cinf->key->algor->algorithm);
+ push_certinfo("Public Key Algorithm", i);
+
+ X509V3_ext(data, i, cinf->extensions);
+
+ psig = x->signature;
+ }
+#endif
+
+ ASN1_TIME_print(mem, X509_get0_notBefore(x));
+ push_certinfo("Start date", i);
+
+ ASN1_TIME_print(mem, X509_get0_notAfter(x));
+ push_certinfo("Expire date", i);
+
+ pubkey = X509_get_pubkey(x);
+ if(!pubkey)
+ infof(data, " Unable to load public key");
+ else {
+ int pktype;
+#ifdef HAVE_OPAQUE_EVP_PKEY
+ pktype = EVP_PKEY_id(pubkey);
+#else
+ pktype = pubkey->type;
+#endif
+ switch(pktype) {
+ case EVP_PKEY_RSA:
+ {
+#ifndef HAVE_EVP_PKEY_GET_PARAMS
+ RSA *rsa;
+#ifdef HAVE_OPAQUE_EVP_PKEY
+ rsa = EVP_PKEY_get0_RSA(pubkey);
+#else
+ rsa = pubkey->pkey.rsa;
+#endif /* HAVE_OPAQUE_EVP_PKEY */
+#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
+
+ {
+#ifdef HAVE_OPAQUE_RSA_DSA_DH
+ DECLARE_PKEY_PARAM_BIGNUM(n);
+ DECLARE_PKEY_PARAM_BIGNUM(e);
+#ifdef HAVE_EVP_PKEY_GET_PARAMS
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_RSA_N, &n);
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_RSA_E, &e);
+#else
+ RSA_get0_key(rsa, &n, &e, NULL);
+#endif /* HAVE_EVP_PKEY_GET_PARAMS */
+ BIO_printf(mem, "%d", BN_num_bits(n));
+#else
+ BIO_printf(mem, "%d", BN_num_bits(rsa->n));
+#endif /* HAVE_OPAQUE_RSA_DSA_DH */
+ push_certinfo("RSA Public Key", i);
+ print_pubkey_BN(rsa, n, i);
+ print_pubkey_BN(rsa, e, i);
+ FREE_PKEY_PARAM_BIGNUM(n);
+ FREE_PKEY_PARAM_BIGNUM(e);
+ }
+
+ break;
+ }
+ case EVP_PKEY_DSA:
+ {
+#ifndef OPENSSL_NO_DSA
+#ifndef HAVE_EVP_PKEY_GET_PARAMS
+ DSA *dsa;
+#ifdef HAVE_OPAQUE_EVP_PKEY
+ dsa = EVP_PKEY_get0_DSA(pubkey);
+#else
+ dsa = pubkey->pkey.dsa;
+#endif /* HAVE_OPAQUE_EVP_PKEY */
+#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
+ {
+#ifdef HAVE_OPAQUE_RSA_DSA_DH
+ DECLARE_PKEY_PARAM_BIGNUM(p);
+ DECLARE_PKEY_PARAM_BIGNUM(q);
+ DECLARE_PKEY_PARAM_BIGNUM(g);
+ DECLARE_PKEY_PARAM_BIGNUM(pub_key);
+#ifdef HAVE_EVP_PKEY_GET_PARAMS
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_P, &p);
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_Q, &q);
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_G, &g);
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_PUB_KEY, &pub_key);
+#else
+ DSA_get0_pqg(dsa, &p, &q, &g);
+ DSA_get0_key(dsa, &pub_key, NULL);
+#endif /* HAVE_EVP_PKEY_GET_PARAMS */
+#endif /* HAVE_OPAQUE_RSA_DSA_DH */
+ print_pubkey_BN(dsa, p, i);
+ print_pubkey_BN(dsa, q, i);
+ print_pubkey_BN(dsa, g, i);
+ print_pubkey_BN(dsa, pub_key, i);
+ FREE_PKEY_PARAM_BIGNUM(p);
+ FREE_PKEY_PARAM_BIGNUM(q);
+ FREE_PKEY_PARAM_BIGNUM(g);
+ FREE_PKEY_PARAM_BIGNUM(pub_key);
+ }
+#endif /* !OPENSSL_NO_DSA */
+ break;
+ }
+ case EVP_PKEY_DH:
+ {
+#ifndef HAVE_EVP_PKEY_GET_PARAMS
+ DH *dh;
+#ifdef HAVE_OPAQUE_EVP_PKEY
+ dh = EVP_PKEY_get0_DH(pubkey);
+#else
+ dh = pubkey->pkey.dh;
+#endif /* HAVE_OPAQUE_EVP_PKEY */
+#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
+ {
+#ifdef HAVE_OPAQUE_RSA_DSA_DH
+ DECLARE_PKEY_PARAM_BIGNUM(p);
+ DECLARE_PKEY_PARAM_BIGNUM(q);
+ DECLARE_PKEY_PARAM_BIGNUM(g);
+ DECLARE_PKEY_PARAM_BIGNUM(pub_key);
+#ifdef HAVE_EVP_PKEY_GET_PARAMS
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_P, &p);
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_Q, &q);
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_G, &g);
+ EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_PUB_KEY, &pub_key);
+#else
+ DH_get0_pqg(dh, &p, &q, &g);
+ DH_get0_key(dh, &pub_key, NULL);
+#endif /* HAVE_EVP_PKEY_GET_PARAMS */
+ print_pubkey_BN(dh, p, i);
+ print_pubkey_BN(dh, q, i);
+ print_pubkey_BN(dh, g, i);
+#else
+ print_pubkey_BN(dh, p, i);
+ print_pubkey_BN(dh, g, i);
+#endif /* HAVE_OPAQUE_RSA_DSA_DH */
+ print_pubkey_BN(dh, pub_key, i);
+ FREE_PKEY_PARAM_BIGNUM(p);
+ FREE_PKEY_PARAM_BIGNUM(q);
+ FREE_PKEY_PARAM_BIGNUM(g);
+ FREE_PKEY_PARAM_BIGNUM(pub_key);
+ }
+ break;
+ }
+ }
+ EVP_PKEY_free(pubkey);
+ }
+
+ if(psig) {
+ for(j = 0; j < psig->length; j++)
+ BIO_printf(mem, "%02x:", psig->data[j]);
+ push_certinfo("Signature", i);
+ }
+
+ PEM_write_bio_X509(mem, x);
+ push_certinfo("Cert", i);
+ }
+
+ BIO_free(mem);
+
+ return CURLE_OK;
+}
+
+#endif /* quiche or OpenSSL */
+
+#ifdef USE_OPENSSL
+
+static bool ossl_associate_connection(struct Curl_easy *data,
struct connectdata *conn,
int sockindex);
@@ -477,36 +821,19 @@ static CURLcode ossl_seed(struct Curl_easy *data)
return CURLE_SSL_CONNECT_ERROR;
#else
-#ifndef RANDOM_FILE
- /* if RANDOM_FILE isn't defined, we only perform this if an option tells
- us to! */
- if(data->set.str[STRING_SSL_RANDOM_FILE])
-#define RANDOM_FILE "" /* doesn't matter won't be used */
+#ifdef RANDOM_FILE
+ RAND_load_file(RANDOM_FILE, RAND_LOAD_LENGTH);
+ if(rand_enough())
+ return CURLE_OK;
#endif
- {
- /* let the option override the define */
- RAND_load_file((data->set.str[STRING_SSL_RANDOM_FILE]?
- data->set.str[STRING_SSL_RANDOM_FILE]:
- RANDOM_FILE),
- RAND_LOAD_LENGTH);
- if(rand_enough())
- return CURLE_OK;
- }
-#if defined(HAVE_RAND_EGD)
- /* only available in OpenSSL 0.9.5 and later */
+#if defined(HAVE_RAND_EGD) && defined(EGD_SOCKET)
+ /* available in OpenSSL 0.9.5 and later */
/* EGD_SOCKET is set at configure time or not at all */
-#ifndef EGD_SOCKET
- /* If we don't have the define set, we only do this if the egd-option
- is set */
- if(data->set.str[STRING_SSL_EGDSOCKET])
-#define EGD_SOCKET "" /* doesn't matter won't be used */
-#endif
{
/* If there's an option and a define, the option overrides the
define */
- int ret = RAND_egd(data->set.str[STRING_SSL_EGDSOCKET]?
- data->set.str[STRING_SSL_EGDSOCKET]:EGD_SOCKET);
+ int ret = RAND_egd(EGD_SOCKET);
if(-1 != ret) {
if(rand_enough())
return CURLE_OK;
@@ -549,7 +876,7 @@ static CURLcode ossl_seed(struct Curl_easy *data)
}
}
- infof(data, "libcurl is now using a weak random seed!");
+ infof(data, "libcurl is now using a weak random seed");
return (rand_enough() ? CURLE_OK :
CURLE_SSL_CONNECT_ERROR /* confusing error code */);
#endif
@@ -805,9 +1132,10 @@ int cert_stuff(struct Curl_easy *data,
SSL_CTX_use_certificate_chain_file(ctx, cert_file);
if(cert_use_result != 1) {
failf(data,
- "could not load PEM client certificate, " OSSL_PACKAGE
+ "could not load PEM client certificate from %s, " OSSL_PACKAGE
" error %s, "
"(no key found, wrong pass phrase, or wrong file format?)",
+ (cert_blob ? "CURLOPT_SSLCERT_BLOB" : cert_file),
ossl_strerror(ERR_get_error(), error_buffer,
sizeof(error_buffer)) );
return 0;
@@ -825,9 +1153,10 @@ int cert_stuff(struct Curl_easy *data,
SSL_CTX_use_certificate_file(ctx, cert_file, file_type);
if(cert_use_result != 1) {
failf(data,
- "could not load ASN1 client certificate, " OSSL_PACKAGE
+ "could not load ASN1 client certificate from %s, " OSSL_PACKAGE
" error %s, "
"(no key found, wrong pass phrase, or wrong file format?)",
+ (cert_blob ? "CURLOPT_SSLCERT_BLOB" : cert_file),
ossl_strerror(ERR_get_error(), error_buffer,
sizeof(error_buffer)) );
return 0;
@@ -880,8 +1209,9 @@ int cert_stuff(struct Curl_easy *data,
}
if(SSL_CTX_use_certificate(ctx, params.cert) != 1) {
- failf(data, "unable to set client certificate");
- X509_free(params.cert);
+ failf(data, "unable to set client certificate [%s]",
+ ossl_strerror(ERR_get_error(), error_buffer,
+ sizeof(error_buffer)));
return 0;
}
X509_free(params.cert); /* we don't need the handle any more... */
@@ -1004,11 +1334,7 @@ int cert_stuff(struct Curl_easy *data,
fail:
EVP_PKEY_free(pri);
X509_free(x509);
-#ifdef USE_AMISSL
- sk_X509_pop_free(ca, Curl_amiga_X509_free);
-#else
sk_X509_pop_free(ca, X509_free);
-#endif
if(!cert_done)
return 0; /* failure! */
break;
@@ -1159,6 +1485,22 @@ int cert_stuff(struct Curl_easy *data,
return 1;
}
+CURLcode Curl_ossl_set_client_cert(struct Curl_easy *data, SSL_CTX *ctx,
+ char *cert_file,
+ const struct curl_blob *cert_blob,
+ const char *cert_type, char *key_file,
+ const struct curl_blob *key_blob,
+ const char *key_type, char *key_passwd)
+{
+ int rv = cert_stuff(data, ctx, cert_file, cert_blob, cert_type, key_file,
+ key_blob, key_type, key_passwd);
+ if(rv != 1) {
+ return CURLE_SSL_CERTPROBLEM;
+ }
+
+ return CURLE_OK;
+}
+
/* returns non-zero on failure */
static int x509_name_oneline(X509_NAME *a, char *buf, size_t size)
{
@@ -1432,6 +1774,9 @@ static void ossl_closeone(struct Curl_easy *data,
struct ssl_connect_data *connssl)
{
struct ssl_backend_data *backend = connssl->backend;
+
+ DEBUGASSERT(backend);
+
if(backend->handle) {
char buf[32];
set_logger(conn, data);
@@ -1489,6 +1834,8 @@ static int ossl_shutdown(struct Curl_easy *data,
struct ssl_backend_data *backend = connssl->backend;
int loop = 10;
+ DEBUGASSERT(backend);
+
#ifndef CURL_DISABLE_FTP
/* This has only been tested on the proftpd server, and the mod_tls code
sends a close notify alert without waiting for a close notify alert in
@@ -1610,54 +1957,26 @@ static void ossl_close_all(struct Curl_easy *data)
/* ====================================================== */
/*
- * Match subjectAltName against the host name. This requires a conversion
- * in CURL_DOES_CONVERSIONS builds.
+ * Match subjectAltName against the host name.
*/
static bool subj_alt_hostcheck(struct Curl_easy *data,
- const char *match_pattern, const char *hostname,
+ const char *match_pattern,
+ size_t matchlen,
+ const char *hostname,
+ size_t hostlen,
const char *dispname)
-#ifdef CURL_DOES_CONVERSIONS
-{
- bool res = FALSE;
-
- /* Curl_cert_hostcheck uses host encoding, but we get ASCII from
- OpenSSl.
- */
- char *match_pattern2 = strdup(match_pattern);
-
- if(match_pattern2) {
- if(Curl_convert_from_network(data, match_pattern2,
- strlen(match_pattern2)) == CURLE_OK) {
- if(Curl_cert_hostcheck(match_pattern2, hostname)) {
- res = TRUE;
- infof(data,
- " subjectAltName: host \"%s\" matched cert's \"%s\"",
- dispname, match_pattern2);
- }
- }
- free(match_pattern2);
- }
- else {
- failf(data,
- "SSL: out of memory when allocating temporary for subjectAltName");
- }
- return res;
-}
-#else
{
#ifdef CURL_DISABLE_VERBOSE_STRINGS
(void)dispname;
(void)data;
#endif
- if(Curl_cert_hostcheck(match_pattern, hostname)) {
+ if(Curl_cert_hostcheck(match_pattern, matchlen, hostname, hostlen)) {
infof(data, " subjectAltName: host \"%s\" matched cert's \"%s\"",
dispname, match_pattern);
return TRUE;
}
return FALSE;
}
-#endif
-
/* Quote from RFC2818 section 3.1 "Server Identity"
@@ -1698,6 +2017,7 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
bool iPAddress = FALSE; /* if a iPAddress field exists in the cert */
const char * const hostname = SSL_HOST_NAME();
const char * const dispname = SSL_HOST_DISPNAME();
+ size_t hostlen = strlen(hostname);
#ifdef ENABLE_IPV6
if(conn->bits.ipv6_ip &&
@@ -1760,7 +2080,9 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
if((altlen == strlen(altptr)) &&
/* if this isn't true, there was an embedded zero in the name
string and we cannot match it. */
- subj_alt_hostcheck(data, altptr, hostname, dispname)) {
+ subj_alt_hostcheck(data,
+ altptr,
+ altlen, hostname, hostlen, dispname)) {
dnsmatched = TRUE;
}
break;
@@ -1796,17 +2118,17 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
else {
/* we have to look to the last occurrence of a commonName in the
distinguished one to get the most significant one. */
- int j, i = -1;
+ int i = -1;
+ unsigned char *peer_CN = NULL;
+ int peerlen = 0;
/* The following is done because of a bug in 0.9.6b */
-
- unsigned char *nulstr = (unsigned char *)"";
- unsigned char *peer_CN = nulstr;
-
X509_NAME *name = X509_get_subject_name(server_cert);
- if(name)
+ if(name) {
+ int j;
while((j = X509_NAME_get_index_by_NID(name, NID_commonName, i)) >= 0)
i = j;
+ }
/* we have the name entry and we will now convert this to a string
that we can use for comparison. Doing this we support BMPstring,
@@ -1822,19 +2144,21 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
conditional in the future when OpenSSL has been fixed. */
if(tmp) {
if(ASN1_STRING_type(tmp) == V_ASN1_UTF8STRING) {
- j = ASN1_STRING_length(tmp);
- if(j >= 0) {
- peer_CN = OPENSSL_malloc(j + 1);
+ peerlen = ASN1_STRING_length(tmp);
+ if(peerlen >= 0) {
+ peer_CN = OPENSSL_malloc(peerlen + 1);
if(peer_CN) {
- memcpy(peer_CN, ASN1_STRING_get0_data(tmp), j);
- peer_CN[j] = '\0';
+ memcpy(peer_CN, ASN1_STRING_get0_data(tmp), peerlen);
+ peer_CN[peerlen] = '\0';
}
+ else
+ result = CURLE_OUT_OF_MEMORY;
}
}
else /* not a UTF8 name */
- j = ASN1_STRING_to_UTF8(&peer_CN, tmp);
+ peerlen = ASN1_STRING_to_UTF8(&peer_CN, tmp);
- if(peer_CN && (curlx_uztosi(strlen((char *)peer_CN)) != j)) {
+ if(peer_CN && (curlx_uztosi(strlen((char *)peer_CN)) != peerlen)) {
/* there was a terminating zero before the end of string, this
cannot match and we return failure! */
failf(data, "SSL: illegal cert name field");
@@ -1843,19 +2167,6 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
}
}
- if(peer_CN == nulstr)
- peer_CN = NULL;
- else {
- /* convert peer_CN from UTF8 */
- CURLcode rc = Curl_convert_from_utf8(data, (char *)peer_CN,
- strlen((char *)peer_CN));
- /* Curl_convert_from_utf8 calls failf if unsuccessful */
- if(rc) {
- OPENSSL_free(peer_CN);
- return rc;
- }
- }
-
if(result)
/* error already detected, pass through */
;
@@ -1864,7 +2175,8 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
"SSL: unable to obtain common name from peer certificate");
result = CURLE_PEER_FAILED_VERIFICATION;
}
- else if(!Curl_cert_hostcheck((const char *)peer_CN, hostname)) {
+ else if(!Curl_cert_hostcheck((const char *)peer_CN,
+ peerlen, hostname, hostlen)) {
failf(data, "SSL: certificate subject name '%s' does not match "
"target host name '%s'", peer_CN, dispname);
result = CURLE_PEER_FAILED_VERIFICATION;
@@ -1898,8 +2210,11 @@ static CURLcode verifystatus(struct Curl_easy *data,
int cert_status, crl_reason;
ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd;
int ret;
+ long len;
- long len = SSL_get_tlsext_status_ocsp_resp(backend->handle, &status);
+ DEBUGASSERT(backend);
+
+ len = SSL_get_tlsext_status_ocsp_resp(backend->handle, &status);
if(!status) {
failf(data, "No OCSP response received");
@@ -1930,6 +2245,11 @@ static CURLcode verifystatus(struct Curl_easy *data,
}
ch = SSL_get_peer_cert_chain(backend->handle);
+ if(!ch) {
+ failf(data, "Could not get peer certificate chain");
+ result = CURLE_SSL_INVALIDCERTSTATUS;
+ goto end;
+ }
st = SSL_CTX_get_cert_store(backend->ctx);
#if ((OPENSSL_VERSION_NUMBER <= 0x1000201fL) /* Fixed after 1.0.2a */ || \
@@ -2158,7 +2478,10 @@ static void ossl_trace(int direction, int ssl_ver, int content_type,
struct connectdata *conn = userp;
struct ssl_connect_data *connssl = &conn->ssl[0];
struct ssl_backend_data *backend = connssl->backend;
- struct Curl_easy *data = backend->logger;
+ struct Curl_easy *data = NULL;
+
+ DEBUGASSERT(backend);
+ data = backend->logger;
if(!conn || !data || !data->set.fdebug ||
(direction != 0 && direction != 1))
@@ -2270,72 +2593,6 @@ static void ossl_trace(int direction, int ssl_ver, int content_type,
# 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 length 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_protocol(unsigned char **out, unsigned char *outlen,
- const unsigned char *in, unsigned int inlen,
- const char *key, unsigned int keylen)
-{
- unsigned int i;
- for(i = 0; i + keylen <= inlen; i += in[i] + 1) {
- if(memcmp(&in[i + 1], key, keylen) == 0) {
- *out = (unsigned char *) &in[i + 1];
- *outlen = in[i];
- return 0;
- }
- }
- return -1;
-}
-
-static int
-select_next_proto_cb(SSL *ssl,
- unsigned char **out, unsigned char *outlen,
- const unsigned char *in, unsigned int inlen,
- void *arg)
-{
- struct Curl_easy *data = (struct Curl_easy *)arg;
- struct connectdata *conn = data->conn;
- (void)ssl;
-
-#ifdef USE_HTTP2
- if(data->state.httpwant >= CURL_HTTP_VERSION_2 &&
- !select_next_protocol(out, outlen, in, inlen, ALPN_H2, ALPN_H2_LENGTH)) {
- infof(data, "NPN, negotiated HTTP2 (%s)", ALPN_H2);
- conn->negnpn = CURL_HTTP_VERSION_2;
- return SSL_TLSEXT_ERR_OK;
- }
-#endif
-
- if(!select_next_protocol(out, outlen, in, inlen, ALPN_HTTP_1_1,
- ALPN_HTTP_1_1_LENGTH)) {
- infof(data, "NPN, negotiated HTTP1.1");
- conn->negnpn = CURL_HTTP_VERSION_1_1;
- return SSL_TLSEXT_ERR_OK;
- }
-
- infof(data, "NPN, no overlap, use HTTP1.1");
- *out = (unsigned char *)ALPN_HTTP_1_1;
- *outlen = ALPN_HTTP_1_1_LENGTH;
- conn->negnpn = CURL_HTTP_VERSION_1_1;
-
- return SSL_TLSEXT_ERR_OK;
-}
-#endif /* HAS_NPN */
-
#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
static CURLcode
set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
@@ -2363,10 +2620,12 @@ set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
case CURL_SSLVERSION_TLSv1_2:
ossl_ssl_version_min = TLS1_2_VERSION;
break;
-#ifdef TLS1_3_VERSION
case CURL_SSLVERSION_TLSv1_3:
+#ifdef TLS1_3_VERSION
ossl_ssl_version_min = TLS1_3_VERSION;
break;
+#else
+ return CURLE_NOT_BUILT_IN;
#endif
}
@@ -2422,6 +2681,8 @@ set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
#ifdef OPENSSL_IS_BORINGSSL
typedef uint32_t ctx_option_t;
+#elif OPENSSL_VERSION_NUMBER >= 0x30000000L
+typedef uint64_t ctx_option_t;
#else
typedef long ctx_option_t;
#endif
@@ -2442,6 +2703,8 @@ set_ssl_version_min_max_legacy(ctx_option_t *ctx_options,
#ifdef TLS1_3_VERSION
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+ struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
SSL_CTX_set_max_proto_version(backend->ctx, TLS1_3_VERSION);
*ctx_options |= SSL_OP_NO_TLSv1_2;
}
@@ -2521,13 +2784,12 @@ static int ossl_new_session_cb(SSL *ssl, SSL_SESSION *ssl_sessionid)
return 0;
conn = (struct connectdata*) SSL_get_ex_data(ssl, connectdata_idx);
- if(!conn)
- return 0;
-
data = (struct Curl_easy *) SSL_get_ex_data(ssl, data_idx);
-
/* The sockindex has been stored as a pointer to an array element */
sockindex_ptr = (curl_socket_t*) SSL_get_ex_data(ssl, sockindex_idx);
+ if(!conn || !data || !sockindex_ptr)
+ return 0;
+
sockindex = (int)(sockindex_ptr - conn->sock);
isproxy = SSL_get_ex_data(ssl, proxy_idx) ? TRUE : FALSE;
@@ -2653,7 +2915,7 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
#endif
const long int ssl_version = SSL_CONN_CONFIG(version);
#ifdef USE_OPENSSL_SRP
- const enum CURL_TLSAUTH ssl_authtype = SSL_SET_OPTION(authtype);
+ const enum CURL_TLSAUTH ssl_authtype = SSL_SET_OPTION(primary.authtype);
#endif
char * const ssl_cert = SSL_SET_OPTION(primary.clientcert);
const struct curl_blob *ssl_cert_blob = SSL_SET_OPTION(primary.cert_blob);
@@ -2664,12 +2926,13 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
(ca_info_blob ? NULL : SSL_CONN_CONFIG(CAfile));
const char * const ssl_capath = SSL_CONN_CONFIG(CApath);
const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
- const char * const ssl_crlfile = SSL_SET_OPTION(CRLfile);
+ const char * const ssl_crlfile = SSL_SET_OPTION(primary.CRLfile);
char error_buffer[256];
struct ssl_backend_data *backend = connssl->backend;
bool imported_native_ca = false;
DEBUGASSERT(ssl_connect_1 == connssl->connecting_state);
+ DEBUGASSERT(backend);
/* Make funny stuff to get random input */
result = ossl_seed(data);
@@ -2736,8 +2999,8 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
implementations is desired."
The "-no_ticket" option was introduced in OpenSSL 0.9.8j. It's a flag to
- disable "rfc4507bis session ticket support". rfc4507bis was later turned
- into the proper RFC5077 it seems: https://tools.ietf.org/html/rfc5077
+ disable "rfc4507bis session ticket support". rfc4507bis was later turned
+ into the proper RFC5077: https://datatracker.ietf.org/doc/html/rfc5077
The enabled extension concerns the session management. I wonder how often
libcurl stops a connection and then resumes a TLS session. Also, sending
@@ -2820,11 +3083,6 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
SSL_CTX_set_options(backend->ctx, ctx_options);
-#ifdef HAS_NPN
- if(conn->bits.tls_enable_npn)
- SSL_CTX_set_next_proto_select_cb(backend->ctx, select_next_proto_cb, data);
-#endif
-
#ifdef HAS_ALPN
if(conn->bits.tls_enable_alpn) {
int cur = 0;
@@ -2840,14 +3098,14 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
memcpy(&protocols[cur], ALPN_H2, ALPN_H2_LENGTH);
cur += ALPN_H2_LENGTH;
- infof(data, "ALPN, offering %s", ALPN_H2);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
}
#endif
protocols[cur++] = ALPN_HTTP_1_1_LENGTH;
memcpy(&protocols[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
cur += ALPN_HTTP_1_1_LENGTH;
- infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
/* expects length prefixed preference ordered list of protocols in wire
* format
@@ -2913,16 +3171,17 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
#endif
#ifdef USE_OPENSSL_SRP
- if(ssl_authtype == CURL_TLSAUTH_SRP) {
- char * const ssl_username = SSL_SET_OPTION(username);
-
+ if((ssl_authtype == CURL_TLSAUTH_SRP) &&
+ Curl_auth_allowed_to_host(data)) {
+ char * const ssl_username = SSL_SET_OPTION(primary.username);
+ char * const ssl_password = SSL_SET_OPTION(primary.password);
infof(data, "Using TLS-SRP username: %s", ssl_username);
if(!SSL_CTX_set_srp_username(backend->ctx, ssl_username)) {
failf(data, "Unable to set SRP user name");
return CURLE_BAD_FUNCTION_ARGUMENT;
}
- if(!SSL_CTX_set_srp_password(backend->ctx, SSL_SET_OPTION(password))) {
+ if(!SSL_CTX_set_srp_password(backend->ctx, ssl_password)) {
failf(data, "failed setting SRP password");
return CURLE_BAD_FUNCTION_ARGUMENT;
}
@@ -2942,7 +3201,7 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
/* Import certificates from the Windows root certificate store if requested.
https://stackoverflow.com/questions/9507184/
https://github.com/d3x0r/SACK/blob/master/src/netlib/ssl_layer.c#L1037
- https://tools.ietf.org/html/rfc5280 */
+ https://datatracker.ietf.org/doc/html/rfc5280 */
if((SSL_CONN_CONFIG(verifypeer) || SSL_CONN_CONFIG(verifyhost)) &&
(SSL_SET_OPTION(native_ca_store))) {
X509_STORE *store = SSL_CTX_get_cert_store(backend->ctx);
@@ -3220,7 +3479,7 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
SSL_free(backend->handle);
backend->handle = SSL_new(backend->ctx);
if(!backend->handle) {
- failf(data, "SSL: couldn't create a context (handle)!");
+ failf(data, "SSL: couldn't create a context (handle)");
return CURLE_OUT_OF_MEMORY;
}
@@ -3243,44 +3502,48 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
(0 == Curl_inet_pton(AF_INET6, hostname, &addr)) &&
#endif
sni) {
- size_t nlen = strlen(hostname);
- if((long)nlen >= data->set.buffer_size)
- /* this is seriously messed up */
+ char *snihost = Curl_ssl_snihost(data, hostname, NULL);
+ if(!snihost || !SSL_set_tlsext_host_name(backend->handle, snihost)) {
+ failf(data, "Failed set SNI");
return CURLE_SSL_CONNECT_ERROR;
-
- /* RFC 6066 section 3 says the SNI field is case insensitive, but browsers
- send the data lowercase and subsequently there are now numerous servers
- out there that don't work unless the name is lowercased */
- Curl_strntolower(data->state.buffer, hostname, nlen);
- data->state.buffer[nlen] = 0;
- if(!SSL_set_tlsext_host_name(backend->handle, data->state.buffer))
- infof(data, "WARNING: failed to configure server name indication (SNI) "
- "TLS extension");
+ }
}
#endif
- ossl_associate_connection(data, conn, sockindex);
+ if(!ossl_associate_connection(data, conn, sockindex)) {
+ /* Maybe the internal errors of SSL_get_ex_new_index or SSL_set_ex_data */
+ failf(data, "SSL: ossl_associate_connection failed: %s",
+ ossl_strerror(ERR_get_error(), error_buffer,
+ sizeof(error_buffer)));
+ return CURLE_SSL_CONNECT_ERROR;
+ }
- Curl_ssl_sessionid_lock(data);
- if(!Curl_ssl_getsessionid(data, conn, SSL_IS_PROXY() ? TRUE : FALSE,
- &ssl_sessionid, NULL, sockindex)) {
- /* we got a session id, use it! */
- if(!SSL_set_session(backend->handle, ssl_sessionid)) {
- Curl_ssl_sessionid_unlock(data);
- failf(data, "SSL: SSL_set_session failed: %s",
- ossl_strerror(ERR_get_error(), error_buffer,
- sizeof(error_buffer)));
- return CURLE_SSL_CONNECT_ERROR;
+ if(SSL_SET_OPTION(primary.sessionid)) {
+ Curl_ssl_sessionid_lock(data);
+ if(!Curl_ssl_getsessionid(data, conn, SSL_IS_PROXY() ? TRUE : FALSE,
+ &ssl_sessionid, NULL, sockindex)) {
+ /* we got a session id, use it! */
+ if(!SSL_set_session(backend->handle, ssl_sessionid)) {
+ Curl_ssl_sessionid_unlock(data);
+ failf(data, "SSL: SSL_set_session failed: %s",
+ ossl_strerror(ERR_get_error(), error_buffer,
+ sizeof(error_buffer)));
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ /* Informational message */
+ infof(data, "SSL re-using session ID");
}
- /* Informational message */
- infof(data, "SSL re-using session ID");
+ Curl_ssl_sessionid_unlock(data);
}
- Curl_ssl_sessionid_unlock(data);
#ifndef CURL_DISABLE_PROXY
if(conn->proxy_ssl[sockindex].use) {
BIO *const bio = BIO_new(BIO_f_ssl());
- SSL *handle = conn->proxy_ssl[sockindex].backend->handle;
+ struct ssl_backend_data *proxy_backend;
+ SSL* handle = NULL;
+ proxy_backend = conn->proxy_ssl[sockindex].backend;
+ DEBUGASSERT(proxy_backend);
+ handle = proxy_backend->handle;
DEBUGASSERT(ssl_connection_complete == conn->proxy_ssl[sockindex].state);
DEBUGASSERT(handle != NULL);
DEBUGASSERT(bio != NULL);
@@ -3310,6 +3573,7 @@ static CURLcode ossl_connect_step2(struct Curl_easy *data,
DEBUGASSERT(ssl_connect_2 == connssl->connecting_state
|| ssl_connect_2_reading == connssl->connecting_state
|| ssl_connect_2_writing == connssl->connecting_state);
+ DEBUGASSERT(backend);
ERR_clear_error();
@@ -3441,24 +3705,24 @@ static CURLcode ossl_connect_step2(struct Curl_easy *data,
unsigned int len;
SSL_get0_alpn_selected(backend->handle, &neg_protocol, &len);
if(len) {
- infof(data, "ALPN, server accepted to use %.*s", len, neg_protocol);
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR, len, neg_protocol);
#ifdef USE_HTTP2
if(len == ALPN_H2_LENGTH &&
!memcmp(ALPN_H2, neg_protocol, len)) {
- conn->negnpn = CURL_HTTP_VERSION_2;
+ conn->alpn = CURL_HTTP_VERSION_2;
}
else
#endif
if(len == ALPN_HTTP_1_1_LENGTH &&
!memcmp(ALPN_HTTP_1_1, neg_protocol, ALPN_HTTP_1_1_LENGTH)) {
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ conn->alpn = CURL_HTTP_VERSION_1_1;
}
}
else
- infof(data, "ALPN, server did not agree to a protocol");
+ infof(data, VTLS_INFOF_NO_ALPN);
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
#endif
@@ -3467,340 +3731,6 @@ static CURLcode ossl_connect_step2(struct Curl_easy *data,
}
}
-static int asn1_object_dump(ASN1_OBJECT *a, char *buf, size_t len)
-{
- int i, ilen;
-
- ilen = (int)len;
- if(ilen < 0)
- return 1; /* buffer too big */
-
- i = i2t_ASN1_OBJECT(buf, ilen, a);
-
- if(i >= ilen)
- return 1; /* buffer too small */
-
- return 0;
-}
-
-#define push_certinfo(_label, _num) \
-do { \
- long info_len = BIO_get_mem_data(mem, &ptr); \
- Curl_ssl_push_certinfo_len(data, _num, _label, ptr, info_len); \
- if(1 != BIO_reset(mem)) \
- break; \
-} while(0)
-
-static void pubkey_show(struct Curl_easy *data,
- BIO *mem,
- int num,
- const char *type,
- const char *name,
- const BIGNUM *bn)
-{
- char *ptr;
- char namebuf[32];
-
- msnprintf(namebuf, sizeof(namebuf), "%s(%s)", type, name);
-
- if(bn)
- BN_print(mem, bn);
- push_certinfo(namebuf, num);
-}
-
-#ifdef HAVE_OPAQUE_RSA_DSA_DH
-#define print_pubkey_BN(_type, _name, _num) \
- pubkey_show(data, mem, _num, #_type, #_name, _name)
-
-#else
-#define print_pubkey_BN(_type, _name, _num) \
-do { \
- if(_type->_name) { \
- pubkey_show(data, mem, _num, #_type, #_name, _type->_name); \
- } \
-} while(0)
-#endif
-
-static void X509V3_ext(struct Curl_easy *data,
- int certnum,
- CONST_EXTS STACK_OF(X509_EXTENSION) *exts)
-{
- int i;
-
- if((int)sk_X509_EXTENSION_num(exts) <= 0)
- /* no extensions, bail out */
- return;
-
- for(i = 0; i < (int)sk_X509_EXTENSION_num(exts); i++) {
- ASN1_OBJECT *obj;
- X509_EXTENSION *ext = sk_X509_EXTENSION_value(exts, i);
- BUF_MEM *biomem;
- char namebuf[128];
- BIO *bio_out = BIO_new(BIO_s_mem());
-
- if(!bio_out)
- return;
-
- obj = X509_EXTENSION_get_object(ext);
-
- asn1_object_dump(obj, namebuf, sizeof(namebuf));
-
- if(!X509V3_EXT_print(bio_out, ext, 0, 0))
- ASN1_STRING_print(bio_out, (ASN1_STRING *)X509_EXTENSION_get_data(ext));
-
- BIO_get_mem_ptr(bio_out, &biomem);
- Curl_ssl_push_certinfo_len(data, certnum, namebuf, biomem->data,
- biomem->length);
- BIO_free(bio_out);
- }
-}
-
-#ifdef OPENSSL_IS_BORINGSSL
-typedef size_t numcert_t;
-#else
-typedef int numcert_t;
-#endif
-
-static CURLcode get_cert_chain(struct Curl_easy *data,
- struct ssl_connect_data *connssl)
-{
- CURLcode result;
- STACK_OF(X509) *sk;
- int i;
- numcert_t numcerts;
- BIO *mem;
- struct ssl_backend_data *backend = connssl->backend;
-
- sk = SSL_get_peer_cert_chain(backend->handle);
- if(!sk) {
- return CURLE_OUT_OF_MEMORY;
- }
-
- numcerts = sk_X509_num(sk);
-
- result = Curl_ssl_init_certinfo(data, (int)numcerts);
- if(result) {
- return result;
- }
-
- mem = BIO_new(BIO_s_mem());
- if(!mem) {
- return CURLE_OUT_OF_MEMORY;
- }
-
- for(i = 0; i < (int)numcerts; i++) {
- ASN1_INTEGER *num;
- X509 *x = sk_X509_value(sk, i);
- EVP_PKEY *pubkey = NULL;
- int j;
- char *ptr;
- const ASN1_BIT_STRING *psig = NULL;
-
- X509_NAME_print_ex(mem, X509_get_subject_name(x), 0, XN_FLAG_ONELINE);
- push_certinfo("Subject", i);
-
- X509_NAME_print_ex(mem, X509_get_issuer_name(x), 0, XN_FLAG_ONELINE);
- push_certinfo("Issuer", i);
-
- BIO_printf(mem, "%lx", X509_get_version(x));
- push_certinfo("Version", i);
-
- num = X509_get_serialNumber(x);
- if(num->type == V_ASN1_NEG_INTEGER)
- BIO_puts(mem, "-");
- for(j = 0; j < num->length; j++)
- BIO_printf(mem, "%02x", num->data[j]);
- push_certinfo("Serial Number", i);
-
-#if defined(HAVE_X509_GET0_SIGNATURE) && defined(HAVE_X509_GET0_EXTENSIONS)
- {
- const X509_ALGOR *sigalg = NULL;
- X509_PUBKEY *xpubkey = NULL;
- ASN1_OBJECT *pubkeyoid = NULL;
-
- X509_get0_signature(&psig, &sigalg, x);
- if(sigalg) {
- i2a_ASN1_OBJECT(mem, sigalg->algorithm);
- push_certinfo("Signature Algorithm", i);
- }
-
- xpubkey = X509_get_X509_PUBKEY(x);
- if(xpubkey) {
- X509_PUBKEY_get0_param(&pubkeyoid, NULL, NULL, NULL, xpubkey);
- if(pubkeyoid) {
- i2a_ASN1_OBJECT(mem, pubkeyoid);
- push_certinfo("Public Key Algorithm", i);
- }
- }
-
- X509V3_ext(data, i, X509_get0_extensions(x));
- }
-#else
- {
- /* before OpenSSL 1.0.2 */
- X509_CINF *cinf = x->cert_info;
-
- i2a_ASN1_OBJECT(mem, cinf->signature->algorithm);
- push_certinfo("Signature Algorithm", i);
-
- i2a_ASN1_OBJECT(mem, cinf->key->algor->algorithm);
- push_certinfo("Public Key Algorithm", i);
-
- X509V3_ext(data, i, cinf->extensions);
-
- psig = x->signature;
- }
-#endif
-
- ASN1_TIME_print(mem, X509_get0_notBefore(x));
- push_certinfo("Start date", i);
-
- ASN1_TIME_print(mem, X509_get0_notAfter(x));
- push_certinfo("Expire date", i);
-
- pubkey = X509_get_pubkey(x);
- if(!pubkey)
- infof(data, " Unable to load public key");
- else {
- int pktype;
-#ifdef HAVE_OPAQUE_EVP_PKEY
- pktype = EVP_PKEY_id(pubkey);
-#else
- pktype = pubkey->type;
-#endif
- switch(pktype) {
- case EVP_PKEY_RSA:
- {
-#ifndef HAVE_EVP_PKEY_GET_PARAMS
- RSA *rsa;
-#ifdef HAVE_OPAQUE_EVP_PKEY
- rsa = EVP_PKEY_get0_RSA(pubkey);
-#else
- rsa = pubkey->pkey.rsa;
-#endif /* HAVE_OPAQUE_EVP_PKEY */
-#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
-
- {
-#ifdef HAVE_OPAQUE_RSA_DSA_DH
- DECLARE_PKEY_PARAM_BIGNUM(n);
- DECLARE_PKEY_PARAM_BIGNUM(e);
-#ifdef HAVE_EVP_PKEY_GET_PARAMS
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_RSA_N, &n);
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_RSA_E, &e);
-#else
- RSA_get0_key(rsa, &n, &e, NULL);
-#endif /* HAVE_EVP_PKEY_GET_PARAMS */
- BIO_printf(mem, "%d", BN_num_bits(n));
-#else
- BIO_printf(mem, "%d", BN_num_bits(rsa->n));
-#endif /* HAVE_OPAQUE_RSA_DSA_DH */
- push_certinfo("RSA Public Key", i);
- print_pubkey_BN(rsa, n, i);
- print_pubkey_BN(rsa, e, i);
- FREE_PKEY_PARAM_BIGNUM(n);
- FREE_PKEY_PARAM_BIGNUM(e);
- }
-
- break;
- }
- case EVP_PKEY_DSA:
- {
-#ifndef OPENSSL_NO_DSA
-#ifndef HAVE_EVP_PKEY_GET_PARAMS
- DSA *dsa;
-#ifdef HAVE_OPAQUE_EVP_PKEY
- dsa = EVP_PKEY_get0_DSA(pubkey);
-#else
- dsa = pubkey->pkey.dsa;
-#endif /* HAVE_OPAQUE_EVP_PKEY */
-#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
- {
-#ifdef HAVE_OPAQUE_RSA_DSA_DH
- DECLARE_PKEY_PARAM_BIGNUM(p);
- DECLARE_PKEY_PARAM_BIGNUM(q);
- DECLARE_PKEY_PARAM_BIGNUM(g);
- DECLARE_PKEY_PARAM_BIGNUM(pub_key);
-#ifdef HAVE_EVP_PKEY_GET_PARAMS
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_P, &p);
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_Q, &q);
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_G, &g);
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_PUB_KEY, &pub_key);
-#else
- DSA_get0_pqg(dsa, &p, &q, &g);
- DSA_get0_key(dsa, &pub_key, NULL);
-#endif /* HAVE_EVP_PKEY_GET_PARAMS */
-#endif /* HAVE_OPAQUE_RSA_DSA_DH */
- print_pubkey_BN(dsa, p, i);
- print_pubkey_BN(dsa, q, i);
- print_pubkey_BN(dsa, g, i);
- print_pubkey_BN(dsa, pub_key, i);
- FREE_PKEY_PARAM_BIGNUM(p);
- FREE_PKEY_PARAM_BIGNUM(q);
- FREE_PKEY_PARAM_BIGNUM(g);
- FREE_PKEY_PARAM_BIGNUM(pub_key);
- }
-#endif /* !OPENSSL_NO_DSA */
- break;
- }
- case EVP_PKEY_DH:
- {
-#ifndef HAVE_EVP_PKEY_GET_PARAMS
- DH *dh;
-#ifdef HAVE_OPAQUE_EVP_PKEY
- dh = EVP_PKEY_get0_DH(pubkey);
-#else
- dh = pubkey->pkey.dh;
-#endif /* HAVE_OPAQUE_EVP_PKEY */
-#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
- {
-#ifdef HAVE_OPAQUE_RSA_DSA_DH
- DECLARE_PKEY_PARAM_BIGNUM(p);
- DECLARE_PKEY_PARAM_BIGNUM(q);
- DECLARE_PKEY_PARAM_BIGNUM(g);
- DECLARE_PKEY_PARAM_BIGNUM(pub_key);
-#ifdef HAVE_EVP_PKEY_GET_PARAMS
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_P, &p);
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_Q, &q);
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_G, &g);
- EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_PUB_KEY, &pub_key);
-#else
- DH_get0_pqg(dh, &p, &q, &g);
- DH_get0_key(dh, &pub_key, NULL);
-#endif /* HAVE_EVP_PKEY_GET_PARAMS */
- print_pubkey_BN(dh, p, i);
- print_pubkey_BN(dh, q, i);
- print_pubkey_BN(dh, g, i);
-#else
- print_pubkey_BN(dh, p, i);
- print_pubkey_BN(dh, g, i);
-#endif /* HAVE_OPAQUE_RSA_DSA_DH */
- print_pubkey_BN(dh, pub_key, i);
- FREE_PKEY_PARAM_BIGNUM(p);
- FREE_PKEY_PARAM_BIGNUM(q);
- FREE_PKEY_PARAM_BIGNUM(g);
- FREE_PKEY_PARAM_BIGNUM(pub_key);
- }
- break;
- }
- }
- EVP_PKEY_free(pubkey);
- }
-
- if(psig) {
- for(j = 0; j < psig->length; j++)
- BIO_printf(mem, "%02x:", psig->data[j]);
- push_certinfo("Signature", i);
- }
-
- PEM_write_bio_X509(mem, x);
- push_certinfo("Cert", i);
- }
-
- BIO_free(mem);
-
- return CURLE_OK;
-}
-
/*
* Heavily modified from:
* https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning#OpenSSL
@@ -3883,6 +3813,8 @@ static CURLcode servercert(struct Curl_easy *data,
BIO *mem = BIO_new(BIO_s_mem());
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
if(!mem) {
failf(data,
"BIO_new return NULL, " OSSL_PACKAGE
@@ -3893,8 +3825,8 @@ static CURLcode servercert(struct Curl_easy *data,
}
if(data->set.ssl.certinfo)
- /* we've been asked to gather certificate info! */
- (void)get_cert_chain(data, connssl);
+ /* asked to gather certificate info */
+ (void)Curl_ossl_certchain(data, connssl->backend->handle);
backend->server_cert = SSL_get1_peer_certificate(backend->handle);
if(!backend->server_cert) {
@@ -3902,7 +3834,7 @@ static CURLcode servercert(struct Curl_easy *data,
if(!strict)
return CURLE_OK;
- failf(data, "SSL: couldn't get peer certificate!");
+ failf(data, "SSL: couldn't get peer certificate");
return CURLE_PEER_FAILED_VERIFICATION;
}
@@ -3942,7 +3874,7 @@ static CURLcode servercert(struct Curl_easy *data,
buffer, sizeof(buffer));
if(rc) {
if(strict)
- failf(data, "SSL: couldn't get X509-issuer name!");
+ failf(data, "SSL: couldn't get X509-issuer name");
result = CURLE_PEER_FAILED_VERIFICATION;
}
else {
@@ -3953,9 +3885,20 @@ static CURLcode servercert(struct Curl_easy *data,
/* e.g. match issuer name with provided issuer certificate */
if(SSL_CONN_CONFIG(issuercert) || SSL_CONN_CONFIG(issuercert_blob)) {
- if(SSL_CONN_CONFIG(issuercert_blob))
+ if(SSL_CONN_CONFIG(issuercert_blob)) {
fp = BIO_new_mem_buf(SSL_CONN_CONFIG(issuercert_blob)->data,
(int)SSL_CONN_CONFIG(issuercert_blob)->len);
+ if(!fp) {
+ failf(data,
+ "BIO_new_mem_buf NULL, " OSSL_PACKAGE
+ " error %s",
+ ossl_strerror(ERR_get_error(), error_buffer,
+ sizeof(error_buffer)) );
+ X509_free(backend->server_cert);
+ backend->server_cert = NULL;
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
else {
fp = BIO_new(BIO_s_file());
if(!fp) {
@@ -4049,7 +3992,7 @@ static CURLcode servercert(struct Curl_easy *data,
if(!result && ptr) {
result = pkp_pin_peer_pubkey(data, backend->server_cert, ptr);
if(result)
- failf(data, "SSL: public key does not match pinned public key!");
+ failf(data, "SSL: public key does not match pinned public key");
}
X509_free(backend->server_cert);
@@ -4222,11 +4165,13 @@ static bool ossl_data_pending(const struct connectdata *conn,
int connindex)
{
const struct ssl_connect_data *connssl = &conn->ssl[connindex];
+ DEBUGASSERT(connssl->backend);
if(connssl->backend->handle && SSL_pending(connssl->backend->handle))
return TRUE;
#ifndef CURL_DISABLE_PROXY
{
const struct ssl_connect_data *proxyssl = &conn->proxy_ssl[connindex];
+ DEBUGASSERT(proxyssl->backend);
if(proxyssl->backend->handle && SSL_pending(proxyssl->backend->handle))
return TRUE;
}
@@ -4253,6 +4198,8 @@ static ssize_t ossl_send(struct Curl_easy *data,
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
ERR_clear_error();
memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
@@ -4332,6 +4279,8 @@ static ssize_t ossl_recv(struct Curl_easy *data, /* transfer */
struct ssl_connect_data *connssl = &conn->ssl[num];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
ERR_clear_error();
buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
@@ -4420,7 +4369,7 @@ static size_t ossl_version(char *buffer, size_t size)
}
count = msnprintf(buffer, size, "%s/%s", OSSL_PACKAGE, ver);
for(p = buffer; *p; ++p) {
- if(ISSPACE(*p))
+ if(ISBLANK(*p))
*p = '_';
}
return count;
@@ -4432,7 +4381,13 @@ static size_t ossl_version(char *buffer, size_t size)
(LIBRESSL_VERSION_NUMBER>>12)&0xff);
#endif
#elif defined(OPENSSL_IS_BORINGSSL)
+#ifdef CURL_BORINGSSL_VERSION
+ return msnprintf(buffer, size, "%s/%s",
+ OSSL_PACKAGE,
+ CURL_BORINGSSL_VERSION);
+#else
return msnprintf(buffer, size, OSSL_PACKAGE);
+#endif
#elif defined(HAVE_OPENSSL_VERSION) && defined(OPENSSL_VERSION_STRING)
return msnprintf(buffer, size, "%s/%s",
OSSL_PACKAGE, OpenSSL_version(OPENSSL_VERSION_STRING));
@@ -4531,20 +4486,22 @@ static void *ossl_get_internals(struct ssl_connect_data *connssl,
{
/* Legacy: CURLINFO_TLS_SESSION must return an SSL_CTX pointer. */
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
return info == CURLINFO_TLS_SESSION ?
(void *)backend->ctx : (void *)backend->handle;
}
-static void ossl_associate_connection(struct Curl_easy *data,
+static bool ossl_associate_connection(struct Curl_easy *data,
struct connectdata *conn,
int sockindex)
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
/* If we don't have SSL context, do nothing. */
if(!backend->handle)
- return;
+ return FALSE;
if(SSL_SET_OPTION(primary.sessionid)) {
int data_idx = ossl_get_ssl_data_index();
@@ -4554,19 +4511,26 @@ static void ossl_associate_connection(struct Curl_easy *data,
if(data_idx >= 0 && connectdata_idx >= 0 && sockindex_idx >= 0 &&
proxy_idx >= 0) {
+ int data_status, conn_status, sockindex_status, proxy_status;
+
/* Store the data needed for the "new session" callback.
* The sockindex is stored as a pointer to an array element. */
- SSL_set_ex_data(backend->handle, data_idx, data);
- SSL_set_ex_data(backend->handle, connectdata_idx, conn);
- SSL_set_ex_data(backend->handle, sockindex_idx, conn->sock + sockindex);
+ data_status = SSL_set_ex_data(backend->handle, data_idx, data);
+ conn_status = SSL_set_ex_data(backend->handle, connectdata_idx, conn);
+ sockindex_status = SSL_set_ex_data(backend->handle, sockindex_idx,
+ conn->sock + sockindex);
#ifndef CURL_DISABLE_PROXY
- SSL_set_ex_data(backend->handle, proxy_idx, SSL_IS_PROXY() ? (void *) 1:
- NULL);
+ proxy_status = SSL_set_ex_data(backend->handle, proxy_idx,
+ SSL_IS_PROXY() ? (void *) 1 : NULL);
#else
- SSL_set_ex_data(backend->handle, proxy_idx, NULL);
+ proxy_status = SSL_set_ex_data(backend->handle, proxy_idx, NULL);
#endif
+ if(data_status && conn_status && sockindex_status && proxy_status)
+ return TRUE;
}
+ return FALSE;
}
+ return TRUE;
}
/*
@@ -4583,6 +4547,7 @@ static void ossl_disassociate_connection(struct Curl_easy *data,
struct connectdata *conn = data->conn;
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
/* If we don't have SSL context, do nothing. */
if(!backend->handle)
diff --git a/lib/vtls/openssl.h b/lib/vtls/openssl.h
index 28058453c..9df4ecddb 100644
--- a/lib/vtls/openssl.h
+++ b/lib/vtls/openssl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -29,13 +31,30 @@
* This header should only be needed to get included by vtls.c, openssl.c
* and ngtcp2.c
*/
+#include <openssl/ssl.h>
-#include <openssl/x509v3.h>
#include "urldata.h"
+/*
+ * In an effort to avoid using 'X509 *' here, we instead use the struct
+ * x509_st version of the type so that we can forward-declare it here without
+ * having to include <openssl/x509v3.h>. Including that header causes name
+ * conflicts when libcurl is built with both Schannel and OpenSSL support.
+ */
+struct x509_st;
CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
- X509 *server_cert);
+ struct x509_st *server_cert);
extern const struct Curl_ssl Curl_ssl_openssl;
+struct ssl_ctx_st;
+CURLcode Curl_ossl_set_client_cert(struct Curl_easy *data,
+ struct ssl_ctx_st *ctx, char *cert_file,
+ const struct curl_blob *cert_blob,
+ const char *cert_type, char *key_file,
+ const struct curl_blob *key_blob,
+ const char *key_type, char *key_passwd);
+
+CURLcode Curl_ossl_certchain(struct Curl_easy *data, SSL *ssl);
+
#endif /* USE_OPENSSL */
#endif /* HEADER_CURL_SSLUSE_H */
diff --git a/lib/vtls/rustls.c b/lib/vtls/rustls.c
index 6dbb1ef3c..77a49f1ab 100644
--- a/lib/vtls/rustls.c
+++ b/lib/vtls/rustls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Jacob Hoffman-Andrews,
+ * Copyright (C) 2020 - 2022, Jacob Hoffman-Andrews,
* <github@hoffman-andrews.com>
*
* This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -65,6 +67,7 @@ cr_data_pending(const struct connectdata *conn, int sockindex)
{
const struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
return backend->data_pending;
}
@@ -118,7 +121,8 @@ cr_recv(struct Curl_easy *data, int sockindex,
struct connectdata *conn = data->conn;
struct ssl_connect_data *const connssl = &conn->ssl[sockindex];
struct ssl_backend_data *const backend = connssl->backend;
- struct rustls_connection *const rconn = backend->conn;
+ struct rustls_connection *rconn = NULL;
+
size_t n = 0;
size_t tls_bytes_read = 0;
size_t plain_bytes_copied = 0;
@@ -126,6 +130,9 @@ cr_recv(struct Curl_easy *data, int sockindex,
char errorbuf[255];
rustls_io_result io_error;
+ DEBUGASSERT(backend);
+ rconn = backend->conn;
+
io_error = rustls_connection_read_tls(rconn, read_cb,
&conn->sock[sockindex], &tls_bytes_read);
if(io_error == EAGAIN || io_error == EWOULDBLOCK) {
@@ -215,13 +222,16 @@ cr_send(struct Curl_easy *data, int sockindex,
struct connectdata *conn = data->conn;
struct ssl_connect_data *const connssl = &conn->ssl[sockindex];
struct ssl_backend_data *const backend = connssl->backend;
- struct rustls_connection *const rconn = backend->conn;
+ struct rustls_connection *rconn = NULL;
size_t plainwritten = 0;
size_t tlswritten = 0;
size_t tlswritten_total = 0;
rustls_result rresult;
rustls_io_result io_error;
+ DEBUGASSERT(backend);
+ rconn = backend->conn;
+
infof(data, "cr_send %ld bytes of plaintext", plainlen);
if(plainlen > 0) {
@@ -295,9 +305,13 @@ static CURLcode
cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
struct ssl_backend_data *const backend)
{
- struct rustls_connection *rconn = backend->conn;
+ struct rustls_connection *rconn = NULL;
struct rustls_client_config_builder *config_builder = NULL;
- const char *const ssl_cafile = SSL_CONN_CONFIG(CAfile);
+ struct rustls_root_cert_store *roots = NULL;
+ const struct curl_blob *ca_info_blob = SSL_CONN_CONFIG(ca_info_blob);
+ const char * const ssl_cafile =
+ /* CURLOPT_CAINFO_BLOB overrides CURLOPT_CAINFO */
+ (ca_info_blob ? NULL : SSL_CONN_CONFIG(CAfile));
const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
const char *hostname = conn->host.name;
char errorbuf[256];
@@ -308,14 +322,17 @@ cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
{ (const uint8_t *)ALPN_H2, ALPN_H2_LENGTH },
};
+ DEBUGASSERT(backend);
+ rconn = backend->conn;
+
config_builder = rustls_client_config_builder_new();
#ifdef USE_HTTP2
- infof(data, "offering ALPN for HTTP/1.1 and HTTP/2");
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
rustls_client_config_builder_set_alpn_protocols(config_builder, alpn, 2);
#else
- infof(data, "offering ALPN for HTTP/1.1 only");
rustls_client_config_builder_set_alpn_protocols(config_builder, alpn, 1);
#endif
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
if(!verifypeer) {
rustls_client_config_builder_dangerous_set_certificate_verifier(
config_builder, cr_verify_none);
@@ -328,6 +345,29 @@ cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
hostname = "example.invalid";
}
}
+ else if(ca_info_blob) {
+ roots = rustls_root_cert_store_new();
+
+ /* Enable strict parsing only if verification isn't disabled. */
+ result = rustls_root_cert_store_add_pem(roots, ca_info_blob->data,
+ ca_info_blob->len, verifypeer);
+ if(result != RUSTLS_RESULT_OK) {
+ failf(data, "failed to parse trusted certificates from blob");
+ rustls_root_cert_store_free(roots);
+ rustls_client_config_free(
+ rustls_client_config_builder_build(config_builder));
+ return CURLE_SSL_CACERT_BADFILE;
+ }
+
+ result = rustls_client_config_builder_use_roots(config_builder, roots);
+ rustls_root_cert_store_free(roots);
+ if(result != RUSTLS_RESULT_OK) {
+ failf(data, "failed to load trusted certificates");
+ rustls_client_config_free(
+ rustls_client_config_builder_build(config_builder));
+ return CURLE_SSL_CACERT_BADFILE;
+ }
+ }
else if(ssl_cafile) {
result = rustls_client_config_builder_load_roots_from_file(
config_builder, ssl_cafile);
@@ -341,7 +381,14 @@ cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
backend->config = rustls_client_config_builder_build(config_builder);
DEBUGASSERT(rconn == NULL);
- result = rustls_client_connection_new(backend->config, hostname, &rconn);
+ {
+ char *snihost = Curl_ssl_snihost(data, hostname, NULL);
+ if(!snihost) {
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ result = rustls_client_connection_new(backend->config, snihost, &rconn);
+ }
if(result != RUSTLS_RESULT_OK) {
rustls_error(result, errorbuf, sizeof(errorbuf), &errorlen);
failf(data, "rustls_client_connection_new: %.*s", errorlen, errorbuf);
@@ -361,27 +408,27 @@ cr_set_negotiated_alpn(struct Curl_easy *data, struct connectdata *conn,
rustls_connection_get_alpn_protocol(rconn, &protocol, &len);
if(!protocol) {
- infof(data, "ALPN, server did not agree to a protocol");
+ infof(data, VTLS_INFOF_NO_ALPN);
return;
}
#ifdef USE_HTTP2
if(len == ALPN_H2_LENGTH && 0 == memcmp(ALPN_H2, protocol, len)) {
- infof(data, "ALPN, negotiated h2");
- conn->negnpn = CURL_HTTP_VERSION_2;
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_1STR, ALPN_H2);
+ conn->alpn = CURL_HTTP_VERSION_2;
}
else
#endif
if(len == ALPN_HTTP_1_1_LENGTH &&
0 == memcmp(ALPN_HTTP_1_1, protocol, len)) {
- infof(data, "ALPN, negotiated http/1.1");
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_1STR, ALPN_HTTP_1_1);
+ conn->alpn = CURL_HTTP_VERSION_1_1;
}
else {
infof(data, "ALPN, negotiated an unrecognized protocol");
}
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
@@ -401,6 +448,8 @@ cr_connect_nonblocking(struct Curl_easy *data, struct connectdata *conn,
curl_socket_t writefd;
curl_socket_t readfd;
+ DEBUGASSERT(backend);
+
if(ssl_connection_none == connssl->state) {
result = cr_init_backend(data, conn, connssl->backend);
if(result != CURLE_OK) {
@@ -495,7 +544,10 @@ cr_getsock(struct connectdata *conn, curl_socket_t *socks)
struct ssl_connect_data *const connssl = &conn->ssl[FIRSTSOCKET];
curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
struct ssl_backend_data *const backend = connssl->backend;
- struct rustls_connection *rconn = backend->conn;
+ struct rustls_connection *rconn = NULL;
+
+ DEBUGASSERT(backend);
+ rconn = backend->conn;
if(rustls_connection_wants_write(rconn)) {
socks[0] = sockfd;
@@ -514,6 +566,7 @@ cr_get_internals(struct ssl_connect_data *connssl,
CURLINFO info UNUSED_PARAM)
{
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
return &backend->conn;
}
@@ -526,6 +579,8 @@ cr_close(struct Curl_easy *data, struct connectdata *conn,
CURLcode tmperr = CURLE_OK;
ssize_t n = 0;
+ DEBUGASSERT(backend);
+
if(backend->conn) {
rustls_connection_send_close_notify(backend->conn);
n = cr_send(data, sockindex, NULL, 0, &tmperr);
@@ -550,7 +605,8 @@ static size_t cr_version(char *buffer, size_t size)
const struct Curl_ssl Curl_ssl_rustls = {
{ CURLSSLBACKEND_RUSTLS, "rustls" },
- SSLSUPP_TLS13_CIPHERSUITES, /* supports */
+ SSLSUPP_CAINFO_BLOB | /* supports */
+ SSLSUPP_TLS13_CIPHERSUITES,
sizeof(struct ssl_backend_data),
Curl_none_init, /* init */
diff --git a/lib/vtls/rustls.h b/lib/vtls/rustls.h
index 056211dd8..6b393dd63 100644
--- a/lib/vtls/rustls.h
+++ b/lib/vtls/rustls.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Jacob Hoffman-Andrews,
+ * Copyright (C) 2020 - 2022, Jacob Hoffman-Andrews,
* <github@hoffman-andrews.com>
*
* This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifndef HEADER_CURL_RUSTLS_H
#define HEADER_CURL_RUSTLS_H
diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c
index 0a8e60610..454eb7967 100644
--- a/lib/vtls/schannel.c
+++ b/lib/vtls/schannel.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de>
* Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
*
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -51,6 +53,7 @@
#include "curl_printf.h"
#include "multiif.h"
#include "version_win32.h"
+#include "rand.h"
/* The last #include file should be: */
#include "curl_memory.h"
@@ -81,8 +84,35 @@
#endif
#endif
-#if defined(CryptStringToBinary) && defined(CRYPT_STRING_HEX)
-#define HAS_CLIENT_CERT_PATH
+#ifndef BCRYPT_CHACHA20_POLY1305_ALGORITHM
+#define BCRYPT_CHACHA20_POLY1305_ALGORITHM L"CHACHA20_POLY1305"
+#endif
+
+#ifndef BCRYPT_CHAIN_MODE_CCM
+#define BCRYPT_CHAIN_MODE_CCM L"ChainingModeCCM"
+#endif
+
+#ifndef BCRYPT_CHAIN_MODE_GCM
+#define BCRYPT_CHAIN_MODE_GCM L"ChainingModeGCM"
+#endif
+
+#ifndef BCRYPT_AES_ALGORITHM
+#define BCRYPT_AES_ALGORITHM L"AES"
+#endif
+
+#ifndef BCRYPT_SHA256_ALGORITHM
+#define BCRYPT_SHA256_ALGORITHM L"SHA256"
+#endif
+
+#ifndef BCRYPT_SHA384_ALGORITHM
+#define BCRYPT_SHA384_ALGORITHM L"SHA384"
+#endif
+
+/* Workaround broken compilers like MinGW.
+ Return the number of elements in a statically sized array.
+*/
+#ifndef ARRAYSIZE
+#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
#endif
#ifdef HAS_CLIENT_CERT_PATH
@@ -117,6 +147,10 @@
#define SP_PROT_TLS1_2_CLIENT 0x00000800
#endif
+#ifndef SP_PROT_TLS1_3_CLIENT
+#define SP_PROT_TLS1_3_CLIENT 0x00002000
+#endif
+
#ifndef SCH_USE_STRONG_CRYPTO
#define SCH_USE_STRONG_CRYPTO 0x00400000
#endif
@@ -147,6 +181,10 @@
#define ALG_CLASS_DHASH ALG_CLASS_HASH
#endif
+#ifndef PKCS12_NO_PERSIST_KEY
+#define PKCS12_NO_PERSIST_KEY 0x00008000
+#endif
+
static Curl_recv schannel_recv;
static Curl_send schannel_send;
@@ -171,7 +209,7 @@ static void InitSecBufferDesc(SecBufferDesc *desc, SecBuffer *BufArr,
}
static CURLcode
-set_ssl_version_min_max(SCHANNEL_CRED *schannel_cred, struct Curl_easy *data,
+set_ssl_version_min_max(DWORD *enabled_protocols, struct Curl_easy *data,
struct connectdata *conn)
{
long ssl_version = SSL_CONN_CONFIG(version);
@@ -181,23 +219,44 @@ set_ssl_version_min_max(SCHANNEL_CRED *schannel_cred, struct Curl_easy *data,
switch(ssl_version_max) {
case CURL_SSLVERSION_MAX_NONE:
case CURL_SSLVERSION_MAX_DEFAULT:
- ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2;
+
+ /* Windows Server 2022 and newer (including Windows 11) support TLS 1.3
+ built-in. Previous builds of Windows 10 had broken TLS 1.3
+ implementations that could be enabled via registry.
+ */
+ if(curlx_verify_windows_version(10, 0, 20348, PLATFORM_WINNT,
+ VERSION_GREATER_THAN_EQUAL)) {
+ ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_3;
+ }
+ else /* Windows 10 and older */
+ ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2;
+
break;
}
+
for(; i <= (ssl_version_max >> 16); ++i) {
switch(i) {
case CURL_SSLVERSION_TLSv1_0:
- schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_0_CLIENT;
+ (*enabled_protocols) |= SP_PROT_TLS1_0_CLIENT;
break;
case CURL_SSLVERSION_TLSv1_1:
- schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_1_CLIENT;
+ (*enabled_protocols) |= SP_PROT_TLS1_1_CLIENT;
break;
case CURL_SSLVERSION_TLSv1_2:
- schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_2_CLIENT;
+ (*enabled_protocols) |= SP_PROT_TLS1_2_CLIENT;
break;
case CURL_SSLVERSION_TLSv1_3:
- failf(data, "schannel: TLS 1.3 is not yet supported");
- return CURLE_SSL_CONNECT_ERROR;
+
+ /* Windows Server 2022 and newer */
+ if(curlx_verify_windows_version(10, 0, 20348, PLATFORM_WINNT,
+ VERSION_GREATER_THAN_EQUAL)) {
+ (*enabled_protocols) |= SP_PROT_TLS1_3_CLIENT;
+ break;
+ }
+ else { /* Windows 10 and older */
+ failf(data, "schannel: TLS 1.3 not supported on Windows prior to 11");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
}
}
return CURLE_OK;
@@ -214,8 +273,12 @@ get_alg_id_by_name(char *name)
{
char tmp[LONGEST_ALG_ID] = { 0 };
char *nameEnd = strchr(name, ':');
- size_t n = nameEnd ? min((size_t)(nameEnd - name), LONGEST_ALG_ID - 1) : \
- min(strlen(name), LONGEST_ALG_ID - 1);
+ size_t n = nameEnd ? (size_t)(nameEnd - name) : strlen(name);
+
+ /* reject too-long alg names */
+ if(n > (LONGEST_ALG_ID - 1))
+ return 0;
+
strncpy(tmp, name, n);
tmp[n] = 0;
CIPHEROPTION(CALG_MD2);
@@ -325,13 +388,15 @@ get_alg_id_by_name(char *name)
return 0;
}
+#define NUM_CIPHERS 47 /* There are 47 options listed above */
+
static CURLcode
set_ssl_ciphers(SCHANNEL_CRED *schannel_cred, char *ciphers,
ALG_ID *algIds)
{
char *startCur = ciphers;
int algCount = 0;
- while(startCur && (0 != *startCur) && (algCount < NUMOF_CIPHERS)) {
+ while(startCur && (0 != *startCur) && (algCount < NUM_CIPHERS)) {
long alg = strtol(startCur, 0, 0);
if(!alg)
alg = get_alg_id_by_name(startCur);
@@ -381,13 +446,13 @@ get_cert_location(TCHAR *path, DWORD *store_name, TCHAR **store_path,
else if(_tcsncmp(path, TEXT("Users"), store_name_len) == 0)
*store_name = CERT_SYSTEM_STORE_USERS;
else if(_tcsncmp(path, TEXT("CurrentUserGroupPolicy"),
- store_name_len) == 0)
+ store_name_len) == 0)
*store_name = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY;
else if(_tcsncmp(path, TEXT("LocalMachineGroupPolicy"),
- store_name_len) == 0)
+ store_name_len) == 0)
*store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY;
else if(_tcsncmp(path, TEXT("LocalMachineEnterprise"),
- store_name_len) == 0)
+ store_name_len) == 0)
*store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE;
else
return CURLE_SSL_CERTPROBLEM;
@@ -417,46 +482,52 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
int sockindex)
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- SCHANNEL_CRED schannel_cred;
+
+#ifdef HAS_CLIENT_CERT_PATH
PCCERT_CONTEXT client_certs[1] = { NULL };
+ HCERTSTORE client_cert_store = NULL;
+#endif
SECURITY_STATUS sspi_status = SEC_E_OK;
CURLcode result;
- struct ssl_backend_data *backend = connssl->backend;
/* setup Schannel API options */
- memset(&schannel_cred, 0, sizeof(schannel_cred));
- schannel_cred.dwVersion = SCHANNEL_CRED_VERSION;
+ DWORD flags = 0;
+ DWORD enabled_protocols = 0;
+
+ struct ssl_backend_data *backend = connssl->backend;
+
+ DEBUGASSERT(backend);
if(conn->ssl_config.verifypeer) {
#ifdef HAS_MANUAL_VERIFY_API
if(backend->use_manual_cred_validation)
- schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION;
+ flags = SCH_CRED_MANUAL_CRED_VALIDATION;
else
#endif
- schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION;
+ flags = SCH_CRED_AUTO_CRED_VALIDATION;
if(SSL_SET_OPTION(no_revoke)) {
- schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+ flags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
SCH_CRED_IGNORE_REVOCATION_OFFLINE;
DEBUGF(infof(data, "schannel: disabled server certificate revocation "
"checks"));
}
else if(SSL_SET_OPTION(revoke_best_effort)) {
- schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+ flags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
SCH_CRED_IGNORE_REVOCATION_OFFLINE | SCH_CRED_REVOCATION_CHECK_CHAIN;
DEBUGF(infof(data, "schannel: ignore revocation offline errors"));
}
else {
- schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
+ flags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
DEBUGF(infof(data,
"schannel: checking server certificate revocation"));
}
}
else {
- schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
+ flags = SCH_CRED_MANUAL_CRED_VALIDATION |
SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
SCH_CRED_IGNORE_REVOCATION_OFFLINE;
DEBUGF(infof(data,
@@ -464,15 +535,15 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
}
if(!conn->ssl_config.verifyhost) {
- schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
+ flags |= SCH_CRED_NO_SERVERNAME_CHECK;
DEBUGF(infof(data, "schannel: verifyhost setting prevents Schannel from "
"comparing the supplied target name with the subject "
"names in server certificates."));
}
if(!SSL_SET_OPTION(auto_client_cert)) {
- schannel_cred.dwFlags &= ~SCH_CRED_USE_DEFAULT_CREDS;
- schannel_cred.dwFlags |= SCH_CRED_NO_DEFAULT_CREDS;
+ flags &= ~SCH_CRED_USE_DEFAULT_CREDS;
+ flags |= SCH_CRED_NO_DEFAULT_CREDS;
infof(data, "schannel: disabled automatic use of client certificate");
}
else
@@ -486,7 +557,7 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
case CURL_SSLVERSION_TLSv1_2:
case CURL_SSLVERSION_TLSv1_3:
{
- result = set_ssl_version_min_max(&schannel_cred, data, conn);
+ result = set_ssl_version_min_max(&enabled_protocols, data, conn);
if(result != CURLE_OK)
return result;
break;
@@ -500,16 +571,6 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
return CURLE_SSL_CONNECT_ERROR;
}
- if(SSL_CONN_CONFIG(cipher_list)) {
- result = set_ssl_ciphers(&schannel_cred, SSL_CONN_CONFIG(cipher_list),
- backend->algIds);
- if(CURLE_OK != result) {
- failf(data, "Unable to set ciphers to passed via SSL_CONN_CONFIG");
- return result;
- }
- }
-
-
#ifdef HAS_CLIENT_CERT_PATH
/* client certificate */
if(data->set.ssl.primary.clientcert || data->set.ssl.primary.cert_blob) {
@@ -535,7 +596,7 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
return CURLE_OUT_OF_MEMORY;
result = get_cert_location(cert_path, &cert_store_name,
- &cert_store_path, &cert_thumbprint_str);
+ &cert_store_path, &cert_thumbprint_str);
if(result && (data->set.ssl.primary.clientcert[0]!='\0'))
fInCert = fopen(data->set.ssl.primary.clientcert, "rb");
@@ -550,18 +611,18 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
}
if((fInCert || blob) && (data->set.ssl.cert_type) &&
- (!strcasecompare(data->set.ssl.cert_type, "P12"))) {
+ (!strcasecompare(data->set.ssl.cert_type, "P12"))) {
failf(data, "schannel: certificate format compatibility error "
- " for %s",
- blob ? "(memory blob)" : data->set.ssl.primary.clientcert);
+ " for %s",
+ blob ? "(memory blob)" : data->set.ssl.primary.clientcert);
curlx_unicodefree(cert_path);
return CURLE_SSL_CERTPROBLEM;
}
if(fInCert || blob) {
/* Reading a .P12 or .pfx file, like the example at bottom of
- https://social.msdn.microsoft.com/Forums/windowsdesktop/
- en-US/3e7bc95f-b21a-4bcd-bd2c-7f996718cae5
+ https://social.msdn.microsoft.com/Forums/windowsdesktop/
+ en-US/3e7bc95f-b21a-4bcd-bd2c-7f996718cae5
*/
CRYPT_DATA_BLOB datablob;
WCHAR* pszPassword;
@@ -589,7 +650,7 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
fclose(fInCert);
if(!continue_reading) {
failf(data, "schannel: Failed to read cert file %s",
- data->set.ssl.primary.clientcert);
+ data->set.ssl.primary.clientcert);
free(certdata);
return CURLE_SSL_CERTPROBLEM;
}
@@ -605,16 +666,23 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
if(pszPassword) {
if(pwd_len > 0)
str_w_len = MultiByteToWideChar(CP_UTF8,
- MB_ERR_INVALID_CHARS,
- data->set.ssl.key_passwd, (int)pwd_len,
- pszPassword, (int)(pwd_len + 1));
+ MB_ERR_INVALID_CHARS,
+ data->set.ssl.key_passwd,
+ (int)pwd_len,
+ pszPassword, (int)(pwd_len + 1));
if((str_w_len >= 0) && (str_w_len <= (int)pwd_len))
pszPassword[str_w_len] = 0;
else
pszPassword[0] = 0;
- cert_store = PFXImportCertStore(&datablob, pszPassword, 0);
+ if(curlx_verify_windows_version(6, 0, 0, PLATFORM_WINNT,
+ VERSION_GREATER_THAN_EQUAL))
+ cert_store = PFXImportCertStore(&datablob, pszPassword,
+ PKCS12_NO_PERSIST_KEY);
+ else
+ cert_store = PFXImportCertStore(&datablob, pszPassword, 0);
+
free(pszPassword);
}
if(!blob)
@@ -643,9 +711,6 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
CertCloseStore(cert_store, 0);
return CURLE_SSL_CERTPROBLEM;
}
-
- schannel_cred.cCreds = 1;
- schannel_cred.paCred = client_certs;
}
else {
cert_store =
@@ -683,17 +748,13 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
curlx_unicodefree(cert_path);
- if(client_certs[0]) {
- schannel_cred.cCreds = 1;
- schannel_cred.paCred = client_certs;
- }
- else {
+ if(!client_certs[0]) {
/* CRYPT_E_NOT_FOUND / E_INVALIDARG */
CertCloseStore(cert_store, 0);
return CURLE_SSL_CERTPROBLEM;
}
}
- CertCloseStore(cert_store, 0);
+ client_cert_store = cert_store;
}
#else
if(data->set.ssl.primary.clientcert || data->set.ssl.primary.cert_blob) {
@@ -708,22 +769,279 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
if(!backend->cred) {
failf(data, "schannel: unable to allocate memory");
+#ifdef HAS_CLIENT_CERT_PATH
if(client_certs[0])
CertFreeCertificateContext(client_certs[0]);
+ if(client_cert_store)
+ CertCloseStore(client_cert_store, 0);
+#endif
return CURLE_OUT_OF_MEMORY;
}
backend->cred->refcount = 1;
- sspi_status =
- s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR *)UNISP_NAME,
- SECPKG_CRED_OUTBOUND, NULL,
- &schannel_cred, NULL, NULL,
- &backend->cred->cred_handle,
- &backend->cred->time_stamp);
+#ifdef HAS_CLIENT_CERT_PATH
+ /* Since we did not persist the key, we need to extend the store's
+ * lifetime until the end of the connection
+ */
+ backend->cred->client_cert_store = client_cert_store;
+#endif
+
+ /* Windows 10, 1809 (a.k.a. Windows 10 build 17763) */
+ if(curlx_verify_windows_version(10, 0, 17763, PLATFORM_WINNT,
+ VERSION_GREATER_THAN_EQUAL)) {
+
+ char *ciphers13 = 0;
+
+ bool disable_aes_gcm_sha384 = FALSE;
+ bool disable_aes_gcm_sha256 = FALSE;
+ bool disable_chacha_poly = FALSE;
+ bool disable_aes_ccm_8_sha256 = FALSE;
+ bool disable_aes_ccm_sha256 = FALSE;
+
+ SCH_CREDENTIALS credentials = { 0 };
+ TLS_PARAMETERS tls_parameters = { 0 };
+ CRYPTO_SETTINGS crypto_settings[4] = { 0 };
+ UNICODE_STRING blocked_ccm_modes[1] = { 0 };
+ UNICODE_STRING blocked_gcm_modes[1] = { 0 };
+
+ int crypto_settings_idx = 0;
+
+
+ /* If TLS 1.3 ciphers are explicitly listed, then
+ * disable all the ciphers and re-enable which
+ * ciphers the user has provided.
+ */
+ ciphers13 = SSL_CONN_CONFIG(cipher_list13);
+ if(ciphers13) {
+ const int remaining_ciphers = 5;
+
+ /* detect which remaining ciphers to enable
+ and then disable everything else.
+ */
+
+ char *startCur = ciphers13;
+ int algCount = 0;
+ char tmp[LONGEST_ALG_ID] = { 0 };
+ char *nameEnd;
+ size_t n;
+
+ disable_aes_gcm_sha384 = TRUE;
+ disable_aes_gcm_sha256 = TRUE;
+ disable_chacha_poly = TRUE;
+ disable_aes_ccm_8_sha256 = TRUE;
+ disable_aes_ccm_sha256 = TRUE;
+
+ while(startCur && (0 != *startCur) && (algCount < remaining_ciphers)) {
+ nameEnd = strchr(startCur, ':');
+ n = nameEnd ? (size_t)(nameEnd - startCur) : strlen(startCur);
+
+ /* reject too-long cipher names */
+ if(n > (LONGEST_ALG_ID - 1)) {
+ failf(data, "Cipher name too long, not checked.");
+ return CURLE_SSL_CIPHER;
+ }
+
+ strncpy(tmp, startCur, n);
+ tmp[n] = 0;
+
+ if(disable_aes_gcm_sha384
+ && !strcmp("TLS_AES_256_GCM_SHA384", tmp)) {
+ disable_aes_gcm_sha384 = FALSE;
+ }
+ else if(disable_aes_gcm_sha256
+ && !strcmp("TLS_AES_128_GCM_SHA256", tmp)) {
+ disable_aes_gcm_sha256 = FALSE;
+ }
+ else if(disable_chacha_poly
+ && !strcmp("TLS_CHACHA20_POLY1305_SHA256", tmp)) {
+ disable_chacha_poly = FALSE;
+ }
+ else if(disable_aes_ccm_8_sha256
+ && !strcmp("TLS_AES_128_CCM_8_SHA256", tmp)) {
+ disable_aes_ccm_8_sha256 = FALSE;
+ }
+ else if(disable_aes_ccm_sha256
+ && !strcmp("TLS_AES_128_CCM_SHA256", tmp)) {
+ disable_aes_ccm_sha256 = FALSE;
+ }
+ else {
+ failf(data, "Passed in an unknown TLS 1.3 cipher.");
+ return CURLE_SSL_CIPHER;
+ }
+ startCur = nameEnd;
+ if(startCur)
+ startCur++;
+
+ algCount++;
+ }
+ }
+
+ if(disable_aes_gcm_sha384 && disable_aes_gcm_sha256
+ && disable_chacha_poly && disable_aes_ccm_8_sha256
+ && disable_aes_ccm_sha256) {
+ failf(data, "All available TLS 1.3 ciphers were disabled.");
+ return CURLE_SSL_CIPHER;
+ }
+
+ /* Disable TLS_AES_128_CCM_8_SHA256 and/or TLS_AES_128_CCM_SHA256 */
+ if(disable_aes_ccm_8_sha256 || disable_aes_ccm_sha256) {
+ /*
+ Disallow AES_CCM algorithm.
+ */
+ blocked_ccm_modes[0].Length = sizeof(BCRYPT_CHAIN_MODE_CCM);
+ blocked_ccm_modes[0].MaximumLength = sizeof(BCRYPT_CHAIN_MODE_CCM);
+ blocked_ccm_modes[0].Buffer = (PWSTR)BCRYPT_CHAIN_MODE_CCM;
+
+ crypto_settings[crypto_settings_idx].eAlgorithmUsage =
+ TlsParametersCngAlgUsageCipher;
+ crypto_settings[crypto_settings_idx].rgstrChainingModes =
+ blocked_ccm_modes;
+ crypto_settings[crypto_settings_idx].cChainingModes =
+ ARRAYSIZE(blocked_ccm_modes);
+ crypto_settings[crypto_settings_idx].strCngAlgId.Length =
+ sizeof(BCRYPT_AES_ALGORITHM);
+ crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
+ sizeof(BCRYPT_AES_ALGORITHM);
+ crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
+ (PWSTR)BCRYPT_AES_ALGORITHM;
+
+ /* only disabling one of the CCM modes */
+ if(disable_aes_ccm_8_sha256 != disable_aes_ccm_sha256) {
+ if(disable_aes_ccm_8_sha256)
+ crypto_settings[crypto_settings_idx].dwMinBitLength = 128;
+ else /* disable_aes_ccm_sha256 */
+ crypto_settings[crypto_settings_idx].dwMaxBitLength = 64;
+ }
+
+ crypto_settings_idx++;
+ }
+
+ /* Disable TLS_AES_256_GCM_SHA384 and/or TLS_AES_128_GCM_SHA256 */
+ if(disable_aes_gcm_sha384 || disable_aes_gcm_sha256) {
+
+ /*
+ Disallow AES_GCM algorithm
+ */
+ blocked_gcm_modes[0].Length = sizeof(BCRYPT_CHAIN_MODE_GCM);
+ blocked_gcm_modes[0].MaximumLength = sizeof(BCRYPT_CHAIN_MODE_GCM);
+ blocked_gcm_modes[0].Buffer = (PWSTR)BCRYPT_CHAIN_MODE_GCM;
+
+ /* if only one is disabled, then explicitly disable the
+ digest cipher suite (sha384 or sha256) */
+ if(disable_aes_gcm_sha384 != disable_aes_gcm_sha256) {
+ crypto_settings[crypto_settings_idx].eAlgorithmUsage =
+ TlsParametersCngAlgUsageDigest;
+ crypto_settings[crypto_settings_idx].strCngAlgId.Length =
+ sizeof(disable_aes_gcm_sha384 ?
+ BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
+ crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
+ sizeof(disable_aes_gcm_sha384 ?
+ BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
+ crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
+ (PWSTR)(disable_aes_gcm_sha384 ?
+ BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
+ }
+ else { /* Disable both AES_GCM ciphers */
+ crypto_settings[crypto_settings_idx].eAlgorithmUsage =
+ TlsParametersCngAlgUsageCipher;
+ crypto_settings[crypto_settings_idx].strCngAlgId.Length =
+ sizeof(BCRYPT_AES_ALGORITHM);
+ crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
+ sizeof(BCRYPT_AES_ALGORITHM);
+ crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
+ (PWSTR)BCRYPT_AES_ALGORITHM;
+ }
+
+ crypto_settings[crypto_settings_idx].rgstrChainingModes =
+ blocked_gcm_modes;
+ crypto_settings[crypto_settings_idx].cChainingModes = 1;
+
+ crypto_settings_idx++;
+ }
+
+ /*
+ Disable ChaCha20-Poly1305.
+ */
+ if(disable_chacha_poly) {
+ crypto_settings[crypto_settings_idx].eAlgorithmUsage =
+ TlsParametersCngAlgUsageCipher;
+ crypto_settings[crypto_settings_idx].strCngAlgId.Length =
+ sizeof(BCRYPT_CHACHA20_POLY1305_ALGORITHM);
+ crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
+ sizeof(BCRYPT_CHACHA20_POLY1305_ALGORITHM);
+ crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
+ (PWSTR)BCRYPT_CHACHA20_POLY1305_ALGORITHM;
+ crypto_settings_idx++;
+ }
+
+ tls_parameters.pDisabledCrypto = crypto_settings;
+
+ /* The number of blocked suites */
+ tls_parameters.cDisabledCrypto = crypto_settings_idx;
+ credentials.pTlsParameters = &tls_parameters;
+ credentials.cTlsParameters = 1;
+
+ credentials.dwVersion = SCH_CREDENTIALS_VERSION;
+ credentials.dwFlags = flags | SCH_USE_STRONG_CRYPTO;
+
+ credentials.pTlsParameters->grbitDisabledProtocols =
+ (DWORD)~enabled_protocols;
+
+#ifdef HAS_CLIENT_CERT_PATH
+ if(client_certs[0]) {
+ credentials.cCreds = 1;
+ credentials.paCred = client_certs;
+ }
+#endif
+
+ sspi_status =
+ s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR*)UNISP_NAME,
+ SECPKG_CRED_OUTBOUND, NULL,
+ &credentials, NULL, NULL,
+ &backend->cred->cred_handle,
+ &backend->cred->time_stamp);
+ }
+ else {
+ /* Pre-Windows 10 1809 */
+ ALG_ID algIds[NUM_CIPHERS];
+ char *ciphers = SSL_CONN_CONFIG(cipher_list);
+ SCHANNEL_CRED schannel_cred = { 0 };
+ schannel_cred.dwVersion = SCHANNEL_CRED_VERSION;
+ schannel_cred.dwFlags = flags;
+ schannel_cred.grbitEnabledProtocols = enabled_protocols;
+
+ if(ciphers) {
+ result = set_ssl_ciphers(&schannel_cred, ciphers, algIds);
+ if(CURLE_OK != result) {
+ failf(data, "Unable to set ciphers to passed via SSL_CONN_CONFIG");
+ return result;
+ }
+ }
+ else {
+ schannel_cred.dwFlags = flags | SCH_USE_STRONG_CRYPTO;
+ }
+
+#ifdef HAS_CLIENT_CERT_PATH
+ if(client_certs[0]) {
+ schannel_cred.cCreds = 1;
+ schannel_cred.paCred = client_certs;
+ }
+#endif
+
+ sspi_status =
+ s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR*)UNISP_NAME,
+ SECPKG_CRED_OUTBOUND, NULL,
+ &schannel_cred, NULL, NULL,
+ &backend->cred->cred_handle,
+ &backend->cred->time_stamp);
+ }
+
+#ifdef HAS_CLIENT_CERT_PATH
if(client_certs[0])
CertFreeCertificateContext(client_certs[0]);
+#endif
if(sspi_status != SEC_E_OK) {
char buffer[STRERROR_LEN];
@@ -765,11 +1083,12 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
#ifdef ENABLE_IPV6
struct in6_addr addr6;
#endif
- TCHAR *host_name;
CURLcode result;
char * const hostname = SSL_HOST_NAME();
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
DEBUGF(infof(data,
"schannel: SSL/TLS connection with %s port %hu (step 1/3)",
hostname, conn->remote_port));
@@ -846,10 +1165,21 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
}
if(!backend->cred) {
+ char *snihost;
result = schannel_acquire_credential_handle(data, conn, sockindex);
if(result != CURLE_OK) {
return result;
}
+ /* A hostname associated with the credential is needed by
+ InitializeSecurityContext for SNI and other reasons. */
+ snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
+ if(!snihost) {
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ backend->cred->sni_hostname = curlx_convert_UTF8_to_tchar(snihost);
+ if(!backend->cred->sni_hostname)
+ return CURLE_OUT_OF_MEMORY;
}
/* Warn if SNI is disabled due to use of an IP address */
@@ -891,14 +1221,14 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
alpn_buffer[cur++] = ALPN_H2_LENGTH;
memcpy(&alpn_buffer[cur], ALPN_H2, ALPN_H2_LENGTH);
cur += ALPN_H2_LENGTH;
- infof(data, "schannel: ALPN, offering %s", ALPN_H2);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
}
#endif
alpn_buffer[cur++] = ALPN_HTTP_1_1_LENGTH;
memcpy(&alpn_buffer[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
cur += ALPN_HTTP_1_1_LENGTH;
- infof(data, "schannel: ALPN, offering %s", ALPN_HTTP_1_1);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
*list_len = curlx_uitous(cur - list_start_index);
*extension_len = *list_len + sizeof(unsigned int) + sizeof(unsigned short);
@@ -936,10 +1266,6 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
return CURLE_OUT_OF_MEMORY;
}
- host_name = curlx_convert_UTF8_to_tchar(hostname);
- if(!host_name)
- return CURLE_OUT_OF_MEMORY;
-
/* Schannel InitializeSecurityContext:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa375924.aspx
@@ -948,13 +1274,12 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
us problems with inbuf regardless. https://github.com/curl/curl/issues/983
*/
sspi_status = s_pSecFn->InitializeSecurityContext(
- &backend->cred->cred_handle, NULL, host_name, backend->req_flags, 0, 0,
+ &backend->cred->cred_handle, NULL, backend->cred->sni_hostname,
+ backend->req_flags, 0, 0,
(backend->use_alpn ? &inbuf_desc : NULL),
0, &backend->ctxt->ctxt_handle,
&outbuf_desc, &backend->ret_flags, &backend->ctxt->time_stamp);
- curlx_unicodefree(host_name);
-
if(sspi_status != SEC_I_CONTINUE_NEEDED) {
char buffer[STRERROR_LEN];
Curl_safefree(backend->ctxt);
@@ -1004,6 +1329,7 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
backend->recv_unrecoverable_err = CURLE_OK;
backend->recv_sspi_close_notify = false;
backend->recv_connection_closed = false;
+ backend->recv_renegotiating = false;
backend->encdata_is_incomplete = false;
/* continue to second handshake step */
@@ -1027,15 +1353,16 @@ schannel_connect_step2(struct Curl_easy *data, struct connectdata *conn,
SECURITY_STATUS sspi_status = SEC_E_OK;
CURLcode result;
bool doread;
- char * const hostname = SSL_HOST_NAME();
const char *pubkey_ptr;
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
doread = (connssl->connecting_state != ssl_connect_2_writing) ? TRUE : FALSE;
DEBUGF(infof(data,
"schannel: SSL/TLS connection with %s port %hu (step 2/3)",
- hostname, conn->remote_port));
+ SSL_HOST_NAME(), conn->remote_port));
if(!backend->cred || !backend->ctxt)
return CURLE_SSL_CONNECT_ERROR;
@@ -1083,7 +1410,6 @@ schannel_connect_step2(struct Curl_easy *data, struct connectdata *conn,
}
for(;;) {
- TCHAR *host_name;
if(doread) {
/* read encrypted handshake data from socket */
result = Curl_read_plain(conn->sock[sockindex],
@@ -1136,17 +1462,12 @@ schannel_connect_step2(struct Curl_easy *data, struct connectdata *conn,
memcpy(inbuf[0].pvBuffer, backend->encdata_buffer,
backend->encdata_offset);
- host_name = curlx_convert_UTF8_to_tchar(hostname);
- if(!host_name)
- return CURLE_OUT_OF_MEMORY;
-
sspi_status = s_pSecFn->InitializeSecurityContext(
&backend->cred->cred_handle, &backend->ctxt->ctxt_handle,
- host_name, backend->req_flags, 0, 0, &inbuf_desc, 0, NULL,
+ backend->cred->sni_hostname, backend->req_flags,
+ 0, 0, &inbuf_desc, 0, NULL,
&outbuf_desc, &backend->ret_flags, &backend->ctxt->time_stamp);
- curlx_unicodefree(host_name);
-
/* free buffer for received handshake data */
Curl_safefree(inbuf[0].pvBuffer);
@@ -1279,7 +1600,7 @@ schannel_connect_step2(struct Curl_easy *data, struct connectdata *conn,
if(pubkey_ptr) {
result = pkp_pin_peer_pubkey(data, conn, sockindex, pubkey_ptr);
if(result) {
- failf(data, "SSL: public key does not match pinned public key!");
+ failf(data, "SSL: public key does not match pinned public key");
return result;
}
}
@@ -1370,6 +1691,7 @@ schannel_connect_step3(struct Curl_easy *data, struct connectdata *conn,
struct ssl_backend_data *backend = connssl->backend;
DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
+ DEBUGASSERT(backend);
DEBUGF(infof(data,
"schannel: SSL/TLS connection with %s port %hu (step 3/3)",
@@ -1407,27 +1729,41 @@ schannel_connect_step3(struct Curl_easy *data, struct connectdata *conn,
if(alpn_result.ProtoNegoStatus ==
SecApplicationProtocolNegotiationStatus_Success) {
+ unsigned char alpn = 0;
- infof(data, "schannel: ALPN, server accepted to use %.*s",
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR,
alpn_result.ProtocolIdSize, alpn_result.ProtocolId);
#ifdef USE_HTTP2
if(alpn_result.ProtocolIdSize == ALPN_H2_LENGTH &&
!memcmp(ALPN_H2, alpn_result.ProtocolId, ALPN_H2_LENGTH)) {
- conn->negnpn = CURL_HTTP_VERSION_2;
+ alpn = CURL_HTTP_VERSION_2;
}
else
#endif
if(alpn_result.ProtocolIdSize == ALPN_HTTP_1_1_LENGTH &&
!memcmp(ALPN_HTTP_1_1, alpn_result.ProtocolId,
ALPN_HTTP_1_1_LENGTH)) {
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ alpn = CURL_HTTP_VERSION_1_1;
+ }
+ if(backend->recv_renegotiating) {
+ if(alpn != conn->alpn) {
+ failf(data, "schannel: server selected an ALPN protocol too late");
+ return CURLE_SSL_CONNECT_ERROR;
}
+ }
+ else
+ conn->alpn = alpn;
+ }
+ else {
+ if(!backend->recv_renegotiating)
+ infof(data, VTLS_INFOF_NO_ALPN);
+ }
+
+ if(!backend->recv_renegotiating) {
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
+ BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
- else
- infof(data, "ALPN, server did not agree to a protocol");
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
- BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
#endif
@@ -1599,8 +1935,15 @@ schannel_connect_common(struct Curl_easy *data, struct connectdata *conn,
if(ssl_connect_done == connssl->connecting_state) {
connssl->state = ssl_connection_complete;
- conn->recv[sockindex] = schannel_recv;
- conn->send[sockindex] = schannel_send;
+ if(!connssl->backend->recv_renegotiating) {
+ /* On renegotiation, we don't want to reset the existing recv/send
+ * function pointers. They will have been set after the initial TLS
+ * handshake was completed. If they were subsequently modified, as
+ * is the case with HTTP/2, we don't want to override that change.
+ */
+ conn->recv[sockindex] = schannel_recv;
+ conn->send[sockindex] = schannel_send;
+ }
#ifdef SECPKG_ATTR_ENDPOINT_BINDINGS
/* When SSPI is used in combination with Schannel
@@ -1610,6 +1953,7 @@ schannel_connect_common(struct Curl_easy *data, struct connectdata *conn,
*/
{
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
conn->sslContext = &backend->ctxt->ctxt_handle;
}
#endif
@@ -1640,6 +1984,8 @@ schannel_send(struct Curl_easy *data, int sockindex,
CURLcode result;
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
/* check if the maximum stream sizes were queried */
if(backend->stream_sizes.cbMaximumMessage == 0) {
sspi_status = s_pSecFn->QueryContextAttributes(
@@ -1788,6 +2134,8 @@ schannel_recv(struct Curl_easy *data, int sockindex,
size_t min_encdata_length = len + CURL_SCHANNEL_BUFFER_FREE_SIZE;
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
/****************************************************************************
* Don't return or set backend->recv_unrecoverable_err unless in the cleanup.
* The pattern for return error is set *err, optional infof, goto cleanup.
@@ -1977,17 +2325,14 @@ schannel_recv(struct Curl_easy *data, int sockindex,
infof(data, "schannel: can't renegotiate, an error is pending");
goto cleanup;
}
- if(backend->encdata_offset) {
- *err = CURLE_RECV_ERROR;
- infof(data, "schannel: can't renegotiate, "
- "encrypted data available");
- goto cleanup;
- }
+
/* begin renegotiation */
infof(data, "schannel: renegotiating SSL/TLS connection");
connssl->state = ssl_connection_negotiating;
connssl->connecting_state = ssl_connect_2_writing;
+ backend->recv_renegotiating = true;
*err = schannel_connect_common(data, conn, sockindex, FALSE, &done);
+ backend->recv_renegotiating = false;
if(*err) {
infof(data, "schannel: renegotiation failed");
goto cleanup;
@@ -2122,6 +2467,8 @@ static bool schannel_data_pending(const struct connectdata *conn,
const struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
+
if(connssl->use) /* SSL/TLS is in use */
return (backend->decdata_offset > 0 ||
(backend->encdata_offset > 0 && !backend->encdata_is_incomplete));
@@ -2138,6 +2485,13 @@ static void schannel_session_free(void *ptr)
cred->refcount--;
if(cred->refcount == 0) {
s_pSecFn->FreeCredentialsHandle(&cred->cred_handle);
+ curlx_unicodefree(cred->sni_hostname);
+#ifdef HAS_CLIENT_CERT_PATH
+ if(cred->client_cert_store) {
+ CertCloseStore(cred->client_cert_store, 0);
+ cred->client_cert_store = NULL;
+ }
+#endif
Curl_safefree(cred);
}
}
@@ -2157,6 +2511,7 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
struct ssl_backend_data *backend = connssl->backend;
DEBUGASSERT(data);
+ DEBUGASSERT(backend);
if(connssl->use) {
infof(data, "schannel: shutting down SSL/TLS connection with %s port %hu",
@@ -2170,7 +2525,6 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
SecBuffer outbuf;
SecBufferDesc outbuf_desc;
CURLcode result;
- TCHAR *host_name;
DWORD dwshut = SCHANNEL_SHUTDOWN;
InitSecBuffer(&Buffer, SECBUFFER_TOKEN, &dwshut, sizeof(dwshut));
@@ -2185,10 +2539,6 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
}
- host_name = curlx_convert_UTF8_to_tchar(hostname);
- if(!host_name)
- return CURLE_OUT_OF_MEMORY;
-
/* setup output buffer */
InitSecBuffer(&outbuf, SECBUFFER_EMPTY, NULL, 0);
InitSecBufferDesc(&outbuf_desc, &outbuf, 1);
@@ -2196,7 +2546,7 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
sspi_status = s_pSecFn->InitializeSecurityContext(
&backend->cred->cred_handle,
&backend->ctxt->ctxt_handle,
- host_name,
+ backend->cred->sni_hostname,
backend->req_flags,
0,
0,
@@ -2207,8 +2557,6 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
&backend->ret_flags,
&backend->ctxt->time_stamp);
- curlx_unicodefree(host_name);
-
if((sspi_status == SEC_E_OK) || (sspi_status == SEC_I_CONTEXT_EXPIRED)) {
/* send close message which is in output buffer */
ssize_t written;
@@ -2286,21 +2634,9 @@ static size_t schannel_version(char *buffer, size_t size)
static CURLcode schannel_random(struct Curl_easy *data UNUSED_PARAM,
unsigned char *entropy, size_t length)
{
- HCRYPTPROV hCryptProv = 0;
-
(void)data;
- if(!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
- CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
- return CURLE_FAILED_INIT;
-
- if(!CryptGenRandom(hCryptProv, (DWORD)length, entropy)) {
- CryptReleaseContext(hCryptProv, 0UL);
- return CURLE_FAILED_INIT;
- }
-
- CryptReleaseContext(hCryptProv, 0UL);
- return CURLE_OK;
+ return Curl_win32_random(entropy, length);
}
static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
@@ -2314,6 +2650,8 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
/* Result is returned to caller */
CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+ DEBUGASSERT(backend);
+
/* if a path wasn't specified, don't pin */
if(!pinnedpubkey)
return CURLE_OK;
@@ -2359,7 +2697,7 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
(const unsigned char *)pubkey->header,
(size_t)(pubkey->end - pubkey->header));
if(result) {
- failf(data, "SSL: public key does not match pinned public key!");
+ failf(data, "SSL: public key does not match pinned public key");
}
} while(0);
@@ -2434,6 +2772,7 @@ static void *schannel_get_internals(struct ssl_connect_data *connssl,
{
struct ssl_backend_data *backend = connssl->backend;
(void)info;
+ DEBUGASSERT(backend);
return &backend->ctxt->ctxt_handle;
}
@@ -2444,7 +2783,8 @@ const struct Curl_ssl Curl_ssl_schannel = {
#ifdef HAS_MANUAL_VERIFY_API
SSLSUPP_CAINFO_BLOB |
#endif
- SSLSUPP_PINNEDPUBKEY,
+ SSLSUPP_PINNEDPUBKEY |
+ SSLSUPP_TLS13_CIPHERSUITES,
sizeof(struct ssl_backend_data),
diff --git a/lib/vtls/schannel.h b/lib/vtls/schannel.h
index 77853aa30..24d7eff25 100644
--- a/lib/vtls/schannel.h
+++ b/lib/vtls/schannel.h
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -21,11 +21,35 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#ifdef USE_SCHANNEL
+#define SCHANNEL_USE_BLACKLISTS 1
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4201)
+#endif
+#include <subauth.h>
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+/* Wincrypt must be included before anything that could include OpenSSL. */
+#if defined(USE_WIN32_CRYPTO)
+#include <wincrypt.h>
+/* Undefine wincrypt conflicting symbols for BoringSSL. */
+#undef X509_NAME
+#undef X509_EXTENSIONS
+#undef PKCS7_ISSUER_AND_SERIAL
+#undef PKCS7_SIGNER_INFO
+#undef OCSP_REQUEST
+#undef OCSP_RESPONSE
+#endif
+
#include <schnlsp.h>
#include <schannel.h>
#include "curl_sspi.h"
@@ -59,23 +83,87 @@ CURLcode Curl_verify_certificate(struct Curl_easy *data,
/* structs to expose only in schannel.c and schannel_verify.c */
#ifdef EXPOSE_SCHANNEL_INTERNAL_STRUCTS
+#include <wincrypt.h>
+
#ifdef __MINGW32__
-#include <_mingw.h>
#ifdef __MINGW64_VERSION_MAJOR
#define HAS_MANUAL_VERIFY_API
#endif
#else
-#include <wincrypt.h>
#ifdef CERT_CHAIN_REVOCATION_CHECK_CHAIN
#define HAS_MANUAL_VERIFY_API
#endif
#endif
-#define NUMOF_CIPHERS 45 /* There are 45 listed in the MS headers */
+#if defined(CryptStringToBinary) && defined(CRYPT_STRING_HEX) \
+ && !defined(DISABLE_SCHANNEL_CLIENT_CERT)
+#define HAS_CLIENT_CERT_PATH
+#endif
+
+#ifndef SCH_CREDENTIALS_VERSION
+
+#define SCH_CREDENTIALS_VERSION 0x00000005
+
+typedef enum _eTlsAlgorithmUsage
+{
+ TlsParametersCngAlgUsageKeyExchange,
+ TlsParametersCngAlgUsageSignature,
+ TlsParametersCngAlgUsageCipher,
+ TlsParametersCngAlgUsageDigest,
+ TlsParametersCngAlgUsageCertSig
+} eTlsAlgorithmUsage;
+
+typedef struct _CRYPTO_SETTINGS
+{
+ eTlsAlgorithmUsage eAlgorithmUsage;
+ UNICODE_STRING strCngAlgId;
+ DWORD cChainingModes;
+ PUNICODE_STRING rgstrChainingModes;
+ DWORD dwMinBitLength;
+ DWORD dwMaxBitLength;
+} CRYPTO_SETTINGS, * PCRYPTO_SETTINGS;
+
+typedef struct _TLS_PARAMETERS
+{
+ DWORD cAlpnIds;
+ PUNICODE_STRING rgstrAlpnIds;
+ DWORD grbitDisabledProtocols;
+ DWORD cDisabledCrypto;
+ PCRYPTO_SETTINGS pDisabledCrypto;
+ DWORD dwFlags;
+} TLS_PARAMETERS, * PTLS_PARAMETERS;
+
+typedef struct _SCH_CREDENTIALS
+{
+ DWORD dwVersion;
+ DWORD dwCredFormat;
+ DWORD cCreds;
+ PCCERT_CONTEXT* paCred;
+ HCERTSTORE hRootStore;
+
+ DWORD cMappers;
+ struct _HMAPPER **aphMappers;
+
+ DWORD dwSessionLifespan;
+ DWORD dwFlags;
+ DWORD cTlsParameters;
+ PTLS_PARAMETERS pTlsParameters;
+} SCH_CREDENTIALS, * PSCH_CREDENTIALS;
+
+#define SCH_CRED_MAX_SUPPORTED_PARAMETERS 16
+#define SCH_CRED_MAX_SUPPORTED_ALPN_IDS 16
+#define SCH_CRED_MAX_SUPPORTED_CRYPTO_SETTINGS 16
+#define SCH_CRED_MAX_SUPPORTED_CHAINING_MODES 16
+
+#endif
struct Curl_schannel_cred {
CredHandle cred_handle;
TimeStamp time_stamp;
+ TCHAR *sni_hostname;
+#ifdef HAS_CLIENT_CERT_PATH
+ HCERTSTORE client_cert_store;
+#endif
int refcount;
};
@@ -100,11 +188,11 @@ struct ssl_backend_data {
CURLcode recv_unrecoverable_err; /* schannel_recv had an unrecoverable err */
bool recv_sspi_close_notify; /* true if connection closed by close_notify */
bool recv_connection_closed; /* true if connection closed, regardless how */
+ bool recv_renegotiating; /* true if recv is doing renegotiation */
bool use_alpn; /* true if ALPN is used for this connection */
#ifdef HAS_MANUAL_VERIFY_API
bool use_manual_cred_validation; /* true if manual cred validation is used */
#endif
- ALG_ID algIds[NUMOF_CIPHERS];
};
#endif /* EXPOSE_SCHANNEL_INTERNAL_STRUCTS */
diff --git a/lib/vtls/schannel_verify.c b/lib/vtls/schannel_verify.c
index 4966cd494..1ac1d3eaf 100644
--- a/lib/vtls/schannel_verify.c
+++ b/lib/vtls/schannel_verify.c
@@ -7,7 +7,7 @@
*
* Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de>
* Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -286,7 +288,6 @@ static CURLcode add_certs_file_to_store(HCERTSTORE trust_store,
goto cleanup;
}
- result = CURLE_OK;
while(total_bytes_read < ca_file_bufsize) {
DWORD bytes_to_read = (DWORD)(ca_file_bufsize - total_bytes_read);
DWORD bytes_read = 0;
@@ -313,9 +314,6 @@ static CURLcode add_certs_file_to_store(HCERTSTORE trust_store,
/* Null terminate the buffer */
ca_file_buffer[ca_file_bufsize] = '\0';
- if(result != CURLE_OK) {
- goto cleanup;
- }
result = add_certs_data_to_store(trust_store,
ca_file_buffer, ca_file_bufsize,
ca_file,
@@ -465,6 +463,7 @@ static CURLcode verify_host(struct Curl_easy *data,
CURLcode result = CURLE_PEER_FAILED_VERIFICATION;
TCHAR *cert_hostname_buff = NULL;
size_t cert_hostname_buff_index = 0;
+ size_t hostlen = strlen(conn_hostname);
DWORD len = 0;
DWORD actual_len = 0;
@@ -520,10 +519,8 @@ static CURLcode verify_host(struct Curl_easy *data,
result = CURLE_OUT_OF_MEMORY;
}
else {
- int match_result;
-
- match_result = Curl_cert_hostcheck(cert_hostname, conn_hostname);
- if(match_result == CURL_HOST_MATCH) {
+ if(Curl_cert_hostcheck(cert_hostname, strlen(cert_hostname),
+ conn_hostname, hostlen)) {
infof(data,
"schannel: connection hostname (%s) validated "
"against certificate name (%s)",
@@ -577,6 +574,8 @@ CURLcode Curl_verify_certificate(struct Curl_easy *data,
HCERTSTORE trust_store = NULL;
const char * const conn_hostname = SSL_HOST_NAME();
+ DEBUGASSERT(BACKEND);
+
sspi_status =
s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
SECPKG_ATTR_REMOTE_CERT_CONTEXT,
diff --git a/lib/vtls/sectransp.c b/lib/vtls/sectransp.c
index f7a20b20b..c764e3631 100644
--- a/lib/vtls/sectransp.c
+++ b/lib/vtls/sectransp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2012 - 2017, Nick Zitzmann, <nickzman@gmail.com>.
*
* This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -603,7 +605,7 @@ const static struct st_cipher ciphertable[] = {
CIPHER_WEAK_RC_ENCRYPTION),
CIPHER_DEF(TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, /* 0xC003 */
"ECDH-ECDSA-DES-CBC3-SHA",
- CIPHER_STRONG_ENOUGH),
+ CIPHER_WEAK_3DES_ENCRYPTION),
CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, /* 0xC004 */
"ECDH-ECDSA-AES128-SHA",
CIPHER_STRONG_ENOUGH),
@@ -837,12 +839,14 @@ static OSStatus SocketRead(SSLConnectionRef connection,
/*int sock = *(int *)connection;*/
struct ssl_connect_data *connssl = (struct ssl_connect_data *)connection;
struct ssl_backend_data *backend = connssl->backend;
- int sock = backend->ssl_sockfd;
+ int sock;
OSStatus rtn = noErr;
size_t bytesRead;
ssize_t rrtn;
int theErr;
+ DEBUGASSERT(backend);
+ sock = backend->ssl_sockfd;
*dataLength = 0;
for(;;) {
@@ -898,13 +902,15 @@ static OSStatus SocketWrite(SSLConnectionRef connection,
/*int sock = *(int *)connection;*/
struct ssl_connect_data *connssl = (struct ssl_connect_data *)connection;
struct ssl_backend_data *backend = connssl->backend;
- int sock = backend->ssl_sockfd;
+ int sock;
ssize_t length;
size_t dataLen = *dataLength;
const UInt8 *dataPtr = (UInt8 *)data;
OSStatus ortn;
int theErr;
+ DEBUGASSERT(backend);
+ sock = backend->ssl_sockfd;
*dataLength = 0;
do {
@@ -934,9 +940,9 @@ static OSStatus SocketWrite(SSLConnectionRef connection,
#ifndef CURL_DISABLE_VERBOSE_STRINGS
CF_INLINE const char *TLSCipherNameForNumber(SSLCipherSuite cipher)
{
- /* The first ciphers in the ciphertable are continuos. Here we do small
+ /* The first ciphers in the ciphertable are continuous. Here we do small
optimization and instead of loop directly get SSL name by cipher number.
- */
+ */
if(cipher <= SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA) {
return ciphertable[cipher].name;
}
@@ -1376,6 +1382,8 @@ set_ssl_version_min_max(struct Curl_easy *data, struct connectdata *conn,
long ssl_version_max = SSL_CONN_CONFIG(version_max);
long max_supported_version_by_os;
+ DEBUGASSERT(backend);
+
/* macOS 10.5-10.7 supported TLS 1.0 only.
macOS 10.8 and later, and iOS 5 and later, added TLS 1.1 and 1.2.
macOS 10.13 and later, and iOS 11 and later, added TLS 1.3. */
@@ -1684,6 +1692,8 @@ static CURLcode sectransp_connect_step1(struct Curl_easy *data,
#if CURL_BUILD_MAC
int darwinver_maj = 0, darwinver_min = 0;
+ DEBUGASSERT(backend);
+
GetDarwinVersionNumber(&darwinver_maj, &darwinver_min);
#endif /* CURL_BUILD_MAC */
@@ -1693,7 +1703,7 @@ static CURLcode sectransp_connect_step1(struct Curl_easy *data,
CFRelease(backend->ssl_ctx);
backend->ssl_ctx = SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType);
if(!backend->ssl_ctx) {
- failf(data, "SSL: couldn't create a context!");
+ failf(data, "SSL: couldn't create a context");
return CURLE_OUT_OF_MEMORY;
}
}
@@ -1843,12 +1853,12 @@ static CURLcode sectransp_connect_step1(struct Curl_easy *data,
#endif
) {
CFArrayAppendValue(alpnArr, CFSTR(ALPN_H2));
- infof(data, "ALPN, offering %s", ALPN_H2);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
}
#endif
CFArrayAppendValue(alpnArr, CFSTR(ALPN_HTTP_1_1));
- infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
/* expects length prefixed preference ordered list of protocols in wire
* format
@@ -2028,12 +2038,18 @@ static CURLcode sectransp_connect_step1(struct Curl_easy *data,
* Both hostname check and SNI require SSLSetPeerDomainName().
* Also: the verifyhost setting influences SNI usage */
if(conn->ssl_config.verifyhost) {
- err = SSLSetPeerDomainName(backend->ssl_ctx, hostname,
- strlen(hostname));
+ size_t snilen;
+ char *snihost = Curl_ssl_snihost(data, hostname, &snilen);
+ if(!snihost) {
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ err = SSLSetPeerDomainName(backend->ssl_ctx, snihost, snilen);
if(err != noErr) {
- infof(data, "WARNING: SSL: SSLSetPeerDomainName() failed: OSStatus %d",
+ failf(data, "SSL: SSLSetPeerDomainName() failed: OSStatus %d",
err);
+ return CURLE_SSL_CONNECT_ERROR;
}
if((Curl_inet_pton(AF_INET, hostname, &addr))
@@ -2542,6 +2558,7 @@ sectransp_connect_step2(struct Curl_easy *data, struct connectdata *conn,
DEBUGASSERT(ssl_connect_2 == connssl->connecting_state
|| ssl_connect_2_reading == connssl->connecting_state
|| ssl_connect_2_writing == connssl->connecting_state);
+ DEBUGASSERT(backend);
/* Here goes nothing: */
err = SSLHandshake(backend->ssl_ctx);
@@ -2774,7 +2791,7 @@ sectransp_connect_step2(struct Curl_easy *data, struct connectdata *conn,
pkp_pin_peer_pubkey(data, backend->ssl_ctx,
data->set.str[STRING_SSL_PINNEDPUBLICKEY]);
if(result) {
- failf(data, "SSL: public key does not match pinned public key!");
+ failf(data, "SSL: public key does not match pinned public key");
return result;
}
}
@@ -2830,18 +2847,18 @@ sectransp_connect_step2(struct Curl_easy *data, struct connectdata *conn,
#ifdef USE_HTTP2
if(chosenProtocol &&
!CFStringCompare(chosenProtocol, CFSTR(ALPN_H2), 0)) {
- conn->negnpn = CURL_HTTP_VERSION_2;
+ conn->alpn = CURL_HTTP_VERSION_2;
}
else
#endif
if(chosenProtocol &&
!CFStringCompare(chosenProtocol, CFSTR(ALPN_HTTP_1_1), 0)) {
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ conn->alpn = CURL_HTTP_VERSION_1_1;
}
else
- infof(data, "ALPN, server did not agree to a protocol");
+ infof(data, VTLS_INFOF_NO_ALPN);
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
/* chosenProtocol is a reference to the string within alpnArr
@@ -2918,6 +2935,8 @@ collect_server_cert(struct Curl_easy *data,
CFIndex i, count;
SecTrustRef trust = NULL;
+ DEBUGASSERT(backend);
+
if(!show_verbose_server_cert && !data->set.ssl.certinfo)
return CURLE_OK;
@@ -2947,7 +2966,7 @@ collect_server_cert(struct Curl_easy *data,
private API and doesn't work as expected. So we have to look for
a different symbol to make sure this code is only executed under
Lion or later. */
- if(SecTrustEvaluateAsync) {
+ if(SecTrustCopyPublicKey) {
#pragma unused(server_certs)
err = SSLCopyPeerTrust(backend->ssl_ctx, &trust);
/* For some reason, SSLCopyPeerTrust() can return noErr and yet return
@@ -3162,6 +3181,8 @@ static void sectransp_close(struct Curl_easy *data, struct connectdata *conn,
(void) data;
+ DEBUGASSERT(backend);
+
if(backend->ssl_ctx) {
(void)SSLClose(backend->ssl_ctx);
#if CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS
@@ -3190,6 +3211,8 @@ static int sectransp_shutdown(struct Curl_easy *data,
char buf[120];
int loop = 10; /* avoid getting stuck */
+ DEBUGASSERT(backend);
+
if(!backend->ssl_ctx)
return 0;
@@ -3269,6 +3292,8 @@ static int sectransp_check_cxn(struct connectdata *conn)
OSStatus err;
SSLSessionState state;
+ DEBUGASSERT(backend);
+
if(backend->ssl_ctx) {
err = SSLGetSessionState(backend->ssl_ctx, &state);
if(err == noErr)
@@ -3286,6 +3311,8 @@ static bool sectransp_data_pending(const struct connectdata *conn,
OSStatus err;
size_t buffer;
+ DEBUGASSERT(backend);
+
if(backend->ssl_ctx) { /* SSL is in use */
err = SSLGetBufferedReadSize(backend->ssl_ctx, &buffer);
if(err == noErr)
@@ -3347,6 +3374,8 @@ static ssize_t sectransp_send(struct Curl_easy *data,
size_t processed = 0UL;
OSStatus err;
+ DEBUGASSERT(backend);
+
/* The SSLWrite() function works a little differently than expected. The
fourth argument (processed) is currently documented in Apple's
documentation as: "On return, the length, in bytes, of the data actually
@@ -3414,6 +3443,8 @@ static ssize_t sectransp_recv(struct Curl_easy *data,
size_t processed = 0UL;
OSStatus err;
+ DEBUGASSERT(backend);
+
again:
err = SSLRead(backend->ssl_ctx, buf, buffersize, &processed);
@@ -3463,6 +3494,7 @@ static void *sectransp_get_internals(struct ssl_connect_data *connssl,
{
struct ssl_backend_data *backend = connssl->backend;
(void)info;
+ DEBUGASSERT(backend);
return backend->ssl_ctx;
}
diff --git a/lib/vtls/sectransp.h b/lib/vtls/sectransp.h
index 0febd6613..2d53b7c48 100644
--- a/lib/vtls/sectransp.h
+++ b/lib/vtls/sectransp.h
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>.
- * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* 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,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
index 6007bbba0..9dee5aa3b 100644
--- a/lib/vtls/vtls.c
+++ b/lib/vtls/vtls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* This file is for implementing all "generic" SSL functions that all libcurl
@@ -125,15 +127,6 @@ static bool blobcmp(struct curl_blob *first, struct curl_blob *second)
return !memcmp(first->data, second->data, first->len); /* same data */
}
-static bool safecmp(char *a, char *b)
-{
- if(a && b)
- return !strcmp(a, b);
- else if(!a && !b)
- return TRUE; /* match */
- return FALSE; /* no match */
-}
-
bool
Curl_ssl_config_matches(struct ssl_primary_config *data,
@@ -141,21 +134,26 @@ Curl_ssl_config_matches(struct ssl_primary_config *data,
{
if((data->version == needle->version) &&
(data->version_max == needle->version_max) &&
+ (data->ssl_options == needle->ssl_options) &&
(data->verifypeer == needle->verifypeer) &&
(data->verifyhost == needle->verifyhost) &&
(data->verifystatus == needle->verifystatus) &&
blobcmp(data->cert_blob, needle->cert_blob) &&
blobcmp(data->ca_info_blob, needle->ca_info_blob) &&
blobcmp(data->issuercert_blob, needle->issuercert_blob) &&
- safecmp(data->CApath, needle->CApath) &&
- safecmp(data->CAfile, needle->CAfile) &&
- safecmp(data->issuercert, needle->issuercert) &&
- safecmp(data->clientcert, needle->clientcert) &&
- safecmp(data->random_file, needle->random_file) &&
- safecmp(data->egdsocket, needle->egdsocket) &&
+ Curl_safecmp(data->CApath, needle->CApath) &&
+ Curl_safecmp(data->CAfile, needle->CAfile) &&
+ Curl_safecmp(data->issuercert, needle->issuercert) &&
+ Curl_safecmp(data->clientcert, needle->clientcert) &&
+#ifdef USE_TLS_SRP
+ !Curl_timestrcmp(data->username, needle->username) &&
+ !Curl_timestrcmp(data->password, needle->password) &&
+ (data->authtype == needle->authtype) &&
+#endif
Curl_safe_strcasecompare(data->cipher_list, needle->cipher_list) &&
Curl_safe_strcasecompare(data->cipher_list13, needle->cipher_list13) &&
Curl_safe_strcasecompare(data->curves, needle->curves) &&
+ Curl_safe_strcasecompare(data->CRLfile, needle->CRLfile) &&
Curl_safe_strcasecompare(data->pinned_key, needle->pinned_key))
return TRUE;
@@ -172,6 +170,10 @@ Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
dest->verifyhost = source->verifyhost;
dest->verifystatus = source->verifystatus;
dest->sessionid = source->sessionid;
+ dest->ssl_options = source->ssl_options;
+#ifdef USE_TLS_SRP
+ dest->authtype = source->authtype;
+#endif
CLONE_BLOB(cert_blob);
CLONE_BLOB(ca_info_blob);
@@ -180,12 +182,15 @@ Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
CLONE_STRING(CAfile);
CLONE_STRING(issuercert);
CLONE_STRING(clientcert);
- CLONE_STRING(random_file);
- CLONE_STRING(egdsocket);
CLONE_STRING(cipher_list);
CLONE_STRING(cipher_list13);
CLONE_STRING(pinned_key);
CLONE_STRING(curves);
+ CLONE_STRING(CRLfile);
+#ifdef USE_TLS_SRP
+ CLONE_STRING(username);
+ CLONE_STRING(password);
+#endif
return TRUE;
}
@@ -196,8 +201,6 @@ void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc)
Curl_safefree(sslc->CAfile);
Curl_safefree(sslc->issuercert);
Curl_safefree(sslc->clientcert);
- Curl_safefree(sslc->random_file);
- Curl_safefree(sslc->egdsocket);
Curl_safefree(sslc->cipher_list);
Curl_safefree(sslc->cipher_list13);
Curl_safefree(sslc->pinned_key);
@@ -205,19 +208,24 @@ void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc)
Curl_safefree(sslc->ca_info_blob);
Curl_safefree(sslc->issuercert_blob);
Curl_safefree(sslc->curves);
+ Curl_safefree(sslc->CRLfile);
+#ifdef USE_TLS_SRP
+ Curl_safefree(sslc->username);
+ Curl_safefree(sslc->password);
+#endif
}
#ifdef USE_SSL
static int multissl_setup(const struct Curl_ssl *backend);
#endif
-int Curl_ssl_backend(void)
+curl_sslbackend Curl_ssl_backend(void)
{
#ifdef USE_SSL
multissl_setup(NULL);
return Curl_ssl->info.id;
#else
- return (int)CURLSSLBACKEND_NONE;
+ return CURLSSLBACKEND_NONE;
#endif
}
@@ -300,6 +308,8 @@ ssl_connect_init_proxy(struct connectdata *conn, int sockindex)
pbdata = conn->proxy_ssl[sockindex].backend;
conn->proxy_ssl[sockindex] = conn->ssl[sockindex];
+ DEBUGASSERT(pbdata != NULL);
+
memset(&conn->ssl[sockindex], 0, sizeof(conn->ssl[sockindex]));
memset(pbdata, 0, Curl_ssl->sizeof_ssl_backend_data);
@@ -628,7 +638,8 @@ void Curl_ssl_associate_conn(struct Curl_easy *data,
{
if(Curl_ssl->associate_connection) {
Curl_ssl->associate_connection(data, conn, FIRSTSOCKET);
- if(conn->sock[SECONDARYSOCKET] && conn->bits.sock_accepted)
+ if((conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) &&
+ conn->bits.sock_accepted)
Curl_ssl->associate_connection(data, conn, SECONDARYSOCKET);
}
}
@@ -638,7 +649,8 @@ void Curl_ssl_detach_conn(struct Curl_easy *data,
{
if(Curl_ssl->disassociate_connection) {
Curl_ssl->disassociate_connection(data, FIRSTSOCKET);
- if(conn->sock[SECONDARYSOCKET] && conn->bits.sock_accepted)
+ if((conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) &&
+ conn->bits.sock_accepted)
Curl_ssl->disassociate_connection(data, SECONDARYSOCKET);
}
}
@@ -872,6 +884,32 @@ CURLcode Curl_ssl_random(struct Curl_easy *data,
}
/*
+ * Curl_ssl_snihost() converts the input host name to a suitable SNI name put
+ * in data->state.buffer. Returns a pointer to the name (or NULL if a problem)
+ * and stores the new length in 'olen'.
+ *
+ * SNI fields must not have any trailing dot and while RFC 6066 section 3 says
+ * the SNI field is case insensitive, browsers always send the data lowercase
+ * and subsequently there are numerous servers out there that don't work
+ * unless the name is lowercased.
+ */
+
+char *Curl_ssl_snihost(struct Curl_easy *data, const char *host, size_t *olen)
+{
+ size_t len = strlen(host);
+ if(len && (host[len-1] == '.'))
+ len--;
+ if(len >= data->set.buffer_size)
+ return NULL;
+
+ Curl_strntolower(data->state.buffer, host, len);
+ data->state.buffer[len] = 0;
+ if(olen)
+ *olen = len;
+ return data->state.buffer;
+}
+
+/*
* Public key pem to der conversion
*/
@@ -969,7 +1007,7 @@ CURLcode Curl_pin_peer_pubkey(struct Curl_easy *data,
if(encode != CURLE_OK)
return encode;
- encode = Curl_base64_encode(data, (char *)sha256sumdigest,
+ encode = Curl_base64_encode((char *)sha256sumdigest,
CURL_SHA256_DIGEST_LENGTH, &encoded,
&encodedlen);
Curl_safefree(sha256sumdigest);
@@ -1296,8 +1334,6 @@ const struct Curl_ssl *Curl_ssl =
&Curl_ssl_openssl;
#elif defined(USE_SCHANNEL)
&Curl_ssl_schannel;
-#elif defined(USE_MESALINK)
- &Curl_ssl_mesalink;
#elif defined(USE_BEARSSL)
&Curl_ssl_bearssl;
#else
@@ -1329,9 +1365,6 @@ static const struct Curl_ssl *available_backends[] = {
#if defined(USE_SCHANNEL)
&Curl_ssl_schannel,
#endif
-#if defined(USE_MESALINK)
- &Curl_ssl_mesalink,
-#endif
#if defined(USE_BEARSSL)
&Curl_ssl_bearssl,
#endif
@@ -1423,8 +1456,10 @@ static int multissl_setup(const struct Curl_ssl *backend)
return 0;
}
-CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
- const curl_ssl_backend ***avail)
+/* This function is used to select the SSL backend to use. It is called by
+ curl_global_sslset (easy.c) which uses the global init lock. */
+CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name,
+ const curl_ssl_backend ***avail)
{
int i;
@@ -1453,8 +1488,8 @@ CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
}
#else /* USE_SSL */
-CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
- const curl_ssl_backend ***avail)
+CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name,
+ const curl_ssl_backend ***avail)
{
(void)id;
(void)name;
diff --git a/lib/vtls/vtls.h b/lib/vtls/vtls.h
index c7bbba082..50c53b3fb 100644
--- a/lib/vtls/vtls.h
+++ b/lib/vtls/vtls.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -34,6 +36,17 @@ struct ssl_connect_data;
#define SSLSUPP_TLS13_CIPHERSUITES (1<<5) /* supports TLS 1.3 ciphersuites */
#define SSLSUPP_CAINFO_BLOB (1<<6)
+#define ALPN_ACCEPTED "ALPN: server accepted "
+
+#define VTLS_INFOF_NO_ALPN \
+ "ALPN: server did not agree on a protocol. Uses default."
+#define VTLS_INFOF_ALPN_OFFER_1STR \
+ "ALPN: offers %s"
+#define VTLS_INFOF_ALPN_ACCEPTED_1STR \
+ ALPN_ACCEPTED "%s"
+#define VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR \
+ ALPN_ACCEPTED "%.*s"
+
struct Curl_ssl {
/*
* This *must* be the first entry to allow returning the list of available
@@ -85,7 +98,7 @@ struct Curl_ssl {
CURLcode (*sha256sum)(const unsigned char *input, size_t inputlen,
unsigned char *sha256sum, size_t sha256sumlen);
- void (*associate_connection)(struct Curl_easy *data,
+ bool (*associate_connection)(struct Curl_easy *data,
struct connectdata *conn,
int sockindex);
void (*disassociate_connection)(struct Curl_easy *data, int sockindex);
@@ -112,6 +125,9 @@ struct curl_slist *Curl_none_engines_list(struct Curl_easy *data);
bool Curl_none_false_start(void);
bool Curl_ssl_tls13_ciphersuites(void);
+CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name,
+ const curl_ssl_backend ***avail);
+
#include "openssl.h" /* OpenSSL versions */
#include "gtls.h" /* GnuTLS versions */
#include "nssg.h" /* NSS versions */
@@ -120,7 +136,6 @@ bool Curl_ssl_tls13_ciphersuites(void);
#include "schannel.h" /* Schannel SSPI version */
#include "sectransp.h" /* SecureTransport (Darwin) version */
#include "mbedtls.h" /* mbedTLS versions */
-#include "mesalink.h" /* MesaLink versions */
#include "bearssl.h" /* BearSSL versions */
#include "rustls.h" /* rustls versions */
@@ -173,6 +188,7 @@ bool Curl_ssl_tls13_ciphersuites(void);
data->set.str[STRING_SSL_PINNEDPUBLICKEY]
#endif
+char *Curl_ssl_snihost(struct Curl_easy *data, const char *host, size_t *olen);
bool Curl_ssl_config_matches(struct ssl_primary_config *data,
struct ssl_primary_config *needle);
bool Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
@@ -184,7 +200,7 @@ void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc);
ssl_connect_2_writing. */
int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks);
-int Curl_ssl_backend(void);
+curl_sslbackend Curl_ssl_backend(void);
#ifdef USE_SSL
int Curl_ssl_init(void);
diff --git a/lib/vtls/wolfssl.c b/lib/vtls/wolfssl.c
index 8c5b9157b..594c39a32 100644
--- a/lib/vtls/wolfssl.c
+++ b/lib/vtls/wolfssl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -263,6 +265,8 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
#define use_sni(x) Curl_nop_stmt
#endif
+ DEBUGASSERT(backend);
+
if(connssl->state == ssl_connection_complete)
return CURLE_OK;
@@ -322,7 +326,7 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
}
if(!req_method) {
- failf(data, "SSL: couldn't create a method!");
+ failf(data, "SSL: couldn't create a method");
return CURLE_OUT_OF_MEMORY;
}
@@ -331,7 +335,7 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
backend->ctx = SSL_CTX_new(req_method);
if(!backend->ctx) {
- failf(data, "SSL: couldn't create a context!");
+ failf(data, "SSL: couldn't create a context");
return CURLE_OUT_OF_MEMORY;
}
@@ -460,14 +464,19 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
const char * const hostname = SSL_HOST_NAME();
size_t hostname_len = strlen(hostname);
if((hostname_len < USHRT_MAX) &&
- (0 == Curl_inet_pton(AF_INET, hostname, &addr4)) &&
+ !Curl_inet_pton(AF_INET, hostname, &addr4)
#ifdef ENABLE_IPV6
- (0 == Curl_inet_pton(AF_INET6, hostname, &addr6)) &&
+ && !Curl_inet_pton(AF_INET6, hostname, &addr6)
#endif
- (wolfSSL_CTX_UseSNI(backend->ctx, WOLFSSL_SNI_HOST_NAME, hostname,
- (unsigned short)hostname_len) != 1)) {
- infof(data, "WARNING: failed to configure server name indication (SNI) "
- "TLS extension");
+ ) {
+ size_t snilen;
+ char *snihost = Curl_ssl_snihost(data, hostname, &snilen);
+ if(!snihost ||
+ wolfSSL_CTX_UseSNI(backend->ctx, WOLFSSL_SNI_HOST_NAME, snihost,
+ (unsigned short)snilen) != 1) {
+ failf(data, "Failed to set SNI");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
}
}
#endif
@@ -496,7 +505,7 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
SSL_free(backend->handle);
backend->handle = SSL_new(backend->ctx);
if(!backend->handle) {
- failf(data, "SSL: couldn't create a context (handle)!");
+ failf(data, "SSL: couldn't create a handle");
return CURLE_OUT_OF_MEMORY;
}
@@ -519,12 +528,12 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
#ifdef USE_HTTP2
if(data->state.httpwant >= CURL_HTTP_VERSION_2) {
strcpy(protocols + strlen(protocols), ALPN_H2 ",");
- infof(data, "ALPN, offering %s", ALPN_H2);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
}
#endif
strcpy(protocols + strlen(protocols), ALPN_HTTP_1_1);
- infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+ infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
if(wolfSSL_UseALPN(backend->handle, protocols,
(unsigned)strlen(protocols),
@@ -590,10 +599,11 @@ wolfssl_connect_step2(struct Curl_easy *data, struct connectdata *conn,
int ret = -1;
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_backend_data *backend = connssl->backend;
- const char * const hostname = SSL_HOST_NAME();
const char * const dispname = SSL_HOST_DISPNAME();
const char * const pinnedpubkey = SSL_PINNED_PUB_KEY();
+ DEBUGASSERT(backend);
+
ERR_clear_error();
conn->recv[sockindex] = wolfssl_recv;
@@ -601,9 +611,10 @@ wolfssl_connect_step2(struct Curl_easy *data, struct connectdata *conn,
/* Enable RFC2818 checks */
if(SSL_CONN_CONFIG(verifyhost)) {
- ret = wolfSSL_check_domain_name(backend->handle, hostname);
- if(ret == SSL_FAILURE)
- return CURLE_OUT_OF_MEMORY;
+ char *snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
+ if(!snihost ||
+ (wolfSSL_check_domain_name(backend->handle, snihost) == SSL_FAILURE))
+ return CURLE_SSL_CONNECT_ERROR;
}
ret = SSL_connect(backend->handle);
@@ -730,7 +741,7 @@ wolfssl_connect_step2(struct Curl_easy *data, struct connectdata *conn,
(const unsigned char *)pubkey->header,
(size_t)(pubkey->end - pubkey->header));
if(result) {
- failf(data, "SSL: public key does not match pinned public key!");
+ failf(data, "SSL: public key does not match pinned public key");
return result;
}
#else
@@ -748,26 +759,25 @@ wolfssl_connect_step2(struct Curl_easy *data, struct connectdata *conn,
rc = wolfSSL_ALPN_GetProtocol(backend->handle, &protocol, &protocol_len);
if(rc == SSL_SUCCESS) {
- infof(data, "ALPN, server accepted to use %.*s", protocol_len,
- protocol);
+ infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR, protocol_len, protocol);
if(protocol_len == ALPN_HTTP_1_1_LENGTH &&
!memcmp(protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH))
- conn->negnpn = CURL_HTTP_VERSION_1_1;
+ conn->alpn = CURL_HTTP_VERSION_1_1;
#ifdef USE_HTTP2
else if(data->state.httpwant >= CURL_HTTP_VERSION_2 &&
protocol_len == ALPN_H2_LENGTH &&
!memcmp(protocol, ALPN_H2, ALPN_H2_LENGTH))
- conn->negnpn = CURL_HTTP_VERSION_2;
+ conn->alpn = CURL_HTTP_VERSION_2;
#endif
else
infof(data, "ALPN, unrecognized protocol %.*s", protocol_len,
protocol);
- Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+ Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
}
else if(rc == SSL_ALPN_NOT_FOUND)
- infof(data, "ALPN, server did not agree to a protocol");
+ infof(data, VTLS_INFOF_NO_ALPN);
else {
failf(data, "ALPN, failure getting protocol, error %d", rc);
return CURLE_SSL_CONNECT_ERROR;
@@ -797,11 +807,14 @@ wolfssl_connect_step3(struct Curl_easy *data, struct connectdata *conn,
struct ssl_backend_data *backend = connssl->backend;
DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
+ DEBUGASSERT(backend);
if(SSL_SET_OPTION(primary.sessionid)) {
bool incache;
+ bool added = FALSE;
void *old_ssl_sessionid = NULL;
- SSL_SESSION *our_ssl_sessionid = SSL_get_session(backend->handle);
+ /* SSL_get1_session allocates memory that has to be freed. */
+ SSL_SESSION *our_ssl_sessionid = SSL_get1_session(backend->handle);
bool isproxy = SSL_IS_PROXY() ? TRUE : FALSE;
if(our_ssl_sessionid) {
@@ -821,11 +834,20 @@ wolfssl_connect_step3(struct Curl_easy *data, struct connectdata *conn,
0, sockindex, NULL);
if(result) {
Curl_ssl_sessionid_unlock(data);
+ SSL_SESSION_free(our_ssl_sessionid);
failf(data, "failed to store ssl session");
return result;
}
+ else {
+ added = TRUE;
+ }
}
Curl_ssl_sessionid_unlock(data);
+
+ if(!added) {
+ /* If the session info wasn't added to the cache, free our copy. */
+ SSL_SESSION_free(our_ssl_sessionid);
+ }
}
}
@@ -848,6 +870,8 @@ static ssize_t wolfssl_send(struct Curl_easy *data,
int memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
int rc;
+ DEBUGASSERT(backend);
+
ERR_clear_error();
rc = SSL_write(backend->handle, mem, memlen);
@@ -880,6 +904,8 @@ static void wolfssl_close(struct Curl_easy *data, struct connectdata *conn,
(void) data;
+ DEBUGASSERT(backend);
+
if(backend->handle) {
char buf[32];
/* Maybe the server has already sent a close notify alert.
@@ -908,17 +934,22 @@ static ssize_t wolfssl_recv(struct Curl_easy *data,
int buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
int nread;
+ DEBUGASSERT(backend);
+
ERR_clear_error();
nread = SSL_read(backend->handle, buf, buffsize);
- if(nread < 0) {
+ if(nread <= 0) {
int err = SSL_get_error(backend->handle, nread);
switch(err) {
case SSL_ERROR_ZERO_RETURN: /* no more data */
break;
+ case SSL_ERROR_NONE:
+ /* FALLTHROUGH */
case SSL_ERROR_WANT_READ:
+ /* FALLTHROUGH */
case SSL_ERROR_WANT_WRITE:
/* there's data pending, re-invoke SSL_read() */
*curlcode = CURLE_AGAIN;
@@ -936,8 +967,7 @@ static ssize_t wolfssl_recv(struct Curl_easy *data,
static void wolfssl_session_free(void *ptr)
{
- (void)ptr;
- /* wolfSSL reuses sessions on own, no free */
+ SSL_SESSION_free(ptr);
}
@@ -974,6 +1004,7 @@ static bool wolfssl_data_pending(const struct connectdata *conn,
{
const struct ssl_connect_data *connssl = &conn->ssl[connindex];
struct ssl_backend_data *backend = connssl->backend;
+ DEBUGASSERT(backend);
if(backend->handle) /* SSL is in use */
return (0 != SSL_pending(backend->handle)) ? TRUE : FALSE;
else
@@ -994,6 +1025,8 @@ static int wolfssl_shutdown(struct Curl_easy *data, struct connectdata *conn,
(void) data;
+ DEBUGASSERT(backend);
+
if(backend->handle) {
ERR_clear_error();
SSL_free(backend->handle);
@@ -1173,6 +1206,7 @@ static void *wolfssl_get_internals(struct ssl_connect_data *connssl,
{
struct ssl_backend_data *backend = connssl->backend;
(void)info;
+ DEBUGASSERT(backend);
return backend->handle;
}
diff --git a/lib/vtls/wolfssl.h b/lib/vtls/wolfssl.h
index d411e6913..b2e7c3fde 100644
--- a/lib/vtls/wolfssl.h
+++ b/lib/vtls/wolfssl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/x509asn1.c b/lib/vtls/x509asn1.c
index 0341543a2..0cfcbe87d 100644
--- a/lib/x509asn1.c
+++ b/lib/vtls/x509asn1.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,16 +18,34 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
-#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
- defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
+ defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
+
+#if defined(USE_GSKIT) || defined(USE_WOLFSSL) || defined(USE_SCHANNEL)
+#define WANT_PARSEX509 /* uses Curl_parseX509() */
+#endif
+
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
+ defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
+#define WANT_EXTRACT_CERTINFO /* uses Curl_extract_certinfo() */
+#define WANT_PARSEX509 /* ... uses Curl_parseX509() */
+#endif
+
+#if defined(USE_GSKIT)
+#define WANT_VERIFYHOST /* uses Curl_verifyhost () */
+#define WANT_PARSEX509 /* ... uses Curl_parseX509() */
+#endif
#include <curl/curl.h>
#include "urldata.h"
#include "strcase.h"
+#include "curl_ctype.h"
#include "hostcheck.h"
#include "vtls/vtls.h"
#include "sendf.h"
@@ -41,6 +59,56 @@
#include "curl_memory.h"
#include "memdebug.h"
+/*
+ * Constants.
+ */
+
+/* Largest supported ASN.1 structure. */
+#define CURL_ASN1_MAX ((size_t) 0x40000) /* 256K */
+
+/* ASN.1 classes. */
+#define CURL_ASN1_UNIVERSAL 0
+#define CURL_ASN1_APPLICATION 1
+#define CURL_ASN1_CONTEXT_SPECIFIC 2
+#define CURL_ASN1_PRIVATE 3
+
+/* ASN.1 types. */
+#define CURL_ASN1_BOOLEAN 1
+#define CURL_ASN1_INTEGER 2
+#define CURL_ASN1_BIT_STRING 3
+#define CURL_ASN1_OCTET_STRING 4
+#define CURL_ASN1_NULL 5
+#define CURL_ASN1_OBJECT_IDENTIFIER 6
+#define CURL_ASN1_OBJECT_DESCRIPTOR 7
+#define CURL_ASN1_INSTANCE_OF 8
+#define CURL_ASN1_REAL 9
+#define CURL_ASN1_ENUMERATED 10
+#define CURL_ASN1_EMBEDDED 11
+#define CURL_ASN1_UTF8_STRING 12
+#define CURL_ASN1_RELATIVE_OID 13
+#define CURL_ASN1_SEQUENCE 16
+#define CURL_ASN1_SET 17
+#define CURL_ASN1_NUMERIC_STRING 18
+#define CURL_ASN1_PRINTABLE_STRING 19
+#define CURL_ASN1_TELETEX_STRING 20
+#define CURL_ASN1_VIDEOTEX_STRING 21
+#define CURL_ASN1_IA5_STRING 22
+#define CURL_ASN1_UTC_TIME 23
+#define CURL_ASN1_GENERALIZED_TIME 24
+#define CURL_ASN1_GRAPHIC_STRING 25
+#define CURL_ASN1_VISIBLE_STRING 26
+#define CURL_ASN1_GENERAL_STRING 27
+#define CURL_ASN1_UNIVERSAL_STRING 28
+#define CURL_ASN1_CHARACTER_STRING 29
+#define CURL_ASN1_BMP_STRING 30
+
+#ifdef WANT_EXTRACT_CERTINFO
+/* ASN.1 OID table entry. */
+struct Curl_OID {
+ const char *numoid; /* Dotted-numeric OID. */
+ const char *textoid; /* OID name. */
+};
+
/* ASN.1 OIDs. */
static const char cnOID[] = "2.5.4.3"; /* Common name. */
static const char sanOID[] = "2.5.29.17"; /* Subject alternative name. */
@@ -95,6 +163,8 @@ static const struct Curl_OID OIDtable[] = {
{ (const char *) NULL, (const char *) NULL }
};
+#endif /* WANT_EXTRACT_CERTINFO */
+
/*
* Lightweight ASN.1 parser.
* In particular, it does not check for syntactic/lexical errors.
@@ -173,6 +243,8 @@ static const char *getASN1Element(struct Curl_asn1Element *elem,
return elem->end;
}
+#ifdef WANT_EXTRACT_CERTINFO
+
/*
* Search the null terminated OID or OID identifier in local table.
* Return the table entry pointer or NULL if not found.
@@ -645,7 +717,7 @@ static ssize_t encodeDN(char *buf, size_t buflen, struct Curl_asn1Element *dn)
/* Encode delimiter.
If attribute has a short uppercase name, delimiter is ", ". */
if(l) {
- for(p3 = str; isupper(*p3); p3++)
+ for(p3 = str; ISUPPER(*p3); p3++)
;
for(p3 = (*p3 || p3 - str > 2)? "/": ", "; *p3; p3++) {
if(l < buflen)
@@ -683,28 +755,9 @@ static ssize_t encodeDN(char *buf, size_t buflen, struct Curl_asn1Element *dn)
return l;
}
-/*
- * Convert an ASN.1 distinguished name into a printable string.
- * Return the dynamically allocated string, or NULL if an error occurs.
- */
-static const char *DNtostr(struct Curl_asn1Element *dn)
-{
- char *buf = NULL;
- ssize_t buflen = encodeDN(NULL, 0, dn);
-
- if(buflen >= 0) {
- buf = malloc(buflen + 1);
- if(buf) {
- if(encodeDN(buf, buflen + 1, dn) == -1) {
- free(buf);
- return NULL;
- }
- buf[buflen] = '\0';
- }
- }
- return buf;
-}
+#endif /* WANT_EXTRACT_CERTINFO */
+#ifdef WANT_PARSEX509
/*
* ASN.1 parse an X509 certificate into structure subfields.
* Syntax is assumed to have already been checked by the SSL backend.
@@ -824,6 +877,9 @@ int Curl_parseX509(struct Curl_X509certificate *cert,
return 0;
}
+#endif /* WANT_PARSEX509 */
+
+#ifdef WANT_EXTRACT_CERTINFO
/*
* Copy at most 64-characters, terminate with a newline and returns the
@@ -892,6 +948,24 @@ static int do_pubkey(struct Curl_easy *data, int certnum,
/* Generate all information records for the public key. */
+ if(strcasecompare(algo, "ecPublicKey")) {
+ /*
+ * ECC public key is all the data, a value of type BIT STRING mapped to
+ * OCTET STRING and should not be parsed as an ASN.1 value.
+ */
+ const unsigned long len =
+ (unsigned long)((pubkey->end - pubkey->beg - 2) * 4);
+ if(!certnum)
+ infof(data, " ECC Public Key (%lu bits)", len);
+ if(data->set.ssl.certinfo) {
+ char q[sizeof(len) * 8 / 3 + 1];
+ (void)msnprintf(q, sizeof(q), "%lu", len);
+ if(Curl_ssl_push_certinfo(data, certnum, "ECC Public Key", q))
+ return 1;
+ }
+ return do_pubkey_field(data, certnum, "ecPublicKey", pubkey);
+ }
+
/* Get the public key (single element). */
if(!getASN1Element(&pk, pubkey->beg + 1, pubkey->end))
return 1;
@@ -918,14 +992,10 @@ static int do_pubkey(struct Curl_easy *data, int certnum,
if(!certnum)
infof(data, " RSA Public Key (%lu bits)", len);
if(data->set.ssl.certinfo) {
- q = curl_maprintf("%lu", len);
- if(q) {
- CURLcode result =
- Curl_ssl_push_certinfo(data, certnum, "RSA Public Key", q);
- free((char *) q);
- if(result)
- return 1;
- }
+ char r[sizeof(len) * 8 / 3 + 1];
+ msnprintf(r, sizeof(r), "%lu", len);
+ if(Curl_ssl_push_certinfo(data, certnum, "RSA Public Key", r))
+ return 1;
}
/* Generate coefficients. */
if(do_pubkey_field(data, certnum, "rsa(n)", &elem))
@@ -969,6 +1039,28 @@ static int do_pubkey(struct Curl_easy *data, int certnum,
return 0;
}
+/*
+ * Convert an ASN.1 distinguished name into a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
+static const char *DNtostr(struct Curl_asn1Element *dn)
+{
+ char *buf = NULL;
+ ssize_t buflen = encodeDN(NULL, 0, dn);
+
+ if(buflen >= 0) {
+ buf = malloc(buflen + 1);
+ if(buf) {
+ if(encodeDN(buf, buflen + 1, dn) == -1) {
+ free(buf);
+ return NULL;
+ }
+ buf[buflen] = '\0';
+ }
+ }
+ return buf;
+}
+
CURLcode Curl_extract_certinfo(struct Curl_easy *data,
int certnum,
const char *beg,
@@ -1119,7 +1211,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
return result;
/* Generate PEM certificate. */
- result = Curl_base64_encode(data, cert.certificate.beg,
+ result = Curl_base64_encode(cert.certificate.beg,
cert.certificate.end - cert.certificate.beg,
&cp1, &cl1);
if(result)
@@ -1153,10 +1245,12 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
return result;
}
+#endif /* WANT_EXTRACT_CERTINFO */
+
#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_WOLFSSL or USE_SCHANNEL
* or USE_SECTRANSP */
-#if defined(USE_GSKIT)
+#ifdef WANT_VERIFYHOST
static const char *checkOID(const char *beg, const char *end,
const char *oid)
@@ -1198,6 +1292,7 @@ CURLcode Curl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
ssize_t len;
const char * const hostname = SSL_HOST_NAME();
const char * const dispname = SSL_HOST_DISPNAME();
+ size_t hostlen = strlen(hostname);
#ifdef ENABLE_IPV6
struct in6_addr addr;
#else
@@ -1253,7 +1348,8 @@ CURLcode Curl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
len = utf8asn1str(&dnsname, CURL_ASN1_IA5_STRING,
name.beg, name.end);
if(len > 0 && (size_t)len == strlen(dnsname))
- matched = Curl_cert_hostcheck(dnsname, hostname);
+ matched = Curl_cert_hostcheck(dnsname,
+ (size_t)len, hostname, hostlen);
else
matched = 0;
free(dnsname);
@@ -1312,7 +1408,8 @@ CURLcode Curl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
}
if(strlen(dnsname) != (size_t) len) /* Nul byte in string ? */
failf(data, "SSL: illegal cert name field");
- else if(Curl_cert_hostcheck((const char *) dnsname, hostname)) {
+ else if(Curl_cert_hostcheck((const char *) dnsname,
+ len, hostname, hostlen)) {
infof(data, " common name: %s (matched)", dnsname);
free(dnsname);
return CURLE_OK;
@@ -1326,4 +1423,4 @@ CURLcode Curl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
return CURLE_PEER_FAILED_VERIFICATION;
}
-#endif /* USE_GSKIT */
+#endif /* WANT_VERIFYHOST */
diff --git a/lib/x509asn1.h b/lib/vtls/x509asn1.h
index 3b51eeef8..a18fa1153 100644
--- a/lib/x509asn1.h
+++ b/lib/vtls/x509asn1.h
@@ -8,7 +8,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* 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,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -31,50 +33,6 @@
#include "urldata.h"
/*
- * Constants.
- */
-
-/* Largest supported ASN.1 structure. */
-#define CURL_ASN1_MAX ((size_t) 0x40000) /* 256K */
-
-/* ASN.1 classes. */
-#define CURL_ASN1_UNIVERSAL 0
-#define CURL_ASN1_APPLICATION 1
-#define CURL_ASN1_CONTEXT_SPECIFIC 2
-#define CURL_ASN1_PRIVATE 3
-
-/* ASN.1 types. */
-#define CURL_ASN1_BOOLEAN 1
-#define CURL_ASN1_INTEGER 2
-#define CURL_ASN1_BIT_STRING 3
-#define CURL_ASN1_OCTET_STRING 4
-#define CURL_ASN1_NULL 5
-#define CURL_ASN1_OBJECT_IDENTIFIER 6
-#define CURL_ASN1_OBJECT_DESCRIPTOR 7
-#define CURL_ASN1_INSTANCE_OF 8
-#define CURL_ASN1_REAL 9
-#define CURL_ASN1_ENUMERATED 10
-#define CURL_ASN1_EMBEDDED 11
-#define CURL_ASN1_UTF8_STRING 12
-#define CURL_ASN1_RELATIVE_OID 13
-#define CURL_ASN1_SEQUENCE 16
-#define CURL_ASN1_SET 17
-#define CURL_ASN1_NUMERIC_STRING 18
-#define CURL_ASN1_PRINTABLE_STRING 19
-#define CURL_ASN1_TELETEX_STRING 20
-#define CURL_ASN1_VIDEOTEX_STRING 21
-#define CURL_ASN1_IA5_STRING 22
-#define CURL_ASN1_UTC_TIME 23
-#define CURL_ASN1_GENERALIZED_TIME 24
-#define CURL_ASN1_GRAPHIC_STRING 25
-#define CURL_ASN1_VISIBLE_STRING 26
-#define CURL_ASN1_GENERAL_STRING 27
-#define CURL_ASN1_UNIVERSAL_STRING 28
-#define CURL_ASN1_CHARACTER_STRING 29
-#define CURL_ASN1_BMP_STRING 30
-
-
-/*
* Types.
*/
@@ -88,14 +46,6 @@ struct Curl_asn1Element {
bool constructed; /* Element is constructed. */
};
-
-/* ASN.1 OID table entry. */
-struct Curl_OID {
- const char *numoid; /* Dotted-numeric OID. */
- const char *textoid; /* OID name. */
-};
-
-
/* X509 certificate: RFC 5280. */
struct Curl_X509certificate {
struct Curl_asn1Element certificate;
@@ -119,10 +69,6 @@ struct Curl_X509certificate {
* Prototypes.
*/
-const char *Curl_getASN1Element(struct Curl_asn1Element *elem,
- const char *beg, const char *end);
-const char *Curl_ASN1tostr(struct Curl_asn1Element *elem, int type);
-const char *Curl_DNtostr(struct Curl_asn1Element *dn);
int Curl_parseX509(struct Curl_X509certificate *cert,
const char *beg, const char *end);
CURLcode Curl_extract_certinfo(struct Curl_easy *data, int certnum,
diff --git a/lib/warnless.c b/lib/warnless.c
index 15c8156d1..b00d7a5a2 100644
--- a/lib/warnless.c
+++ b/lib/warnless.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
@@ -37,6 +39,8 @@
#include "warnless.h"
+#include <limits.h>
+
#define CURL_MASK_UCHAR ((unsigned char)~0)
#define CURL_MASK_SCHAR (CURL_MASK_UCHAR >> 1)
@@ -360,7 +364,7 @@ curl_socket_t curlx_sitosk(int i)
#endif /* USE_WINSOCK */
-#if defined(WIN32) || defined(_WIN32)
+#if defined(WIN32)
ssize_t curlx_read(int fd, void *buf, size_t count)
{
@@ -372,7 +376,7 @@ ssize_t curlx_write(int fd, const void *buf, size_t count)
return (ssize_t)write(fd, buf, curlx_uztoui(count));
}
-#endif /* WIN32 || _WIN32 */
+#endif /* WIN32 */
#if defined(__INTEL_COMPILER) && defined(__unix__)
diff --git a/lib/warnless.h b/lib/warnless.h
index 2c619bf81..4367099d9 100644
--- a/lib/warnless.h
+++ b/lib/warnless.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,8 +20,12 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
+#include "curl_setup.h"
+
#ifdef USE_WINSOCK
#include <curl/curl.h> /* for curl_socket_t */
#endif
@@ -65,7 +69,7 @@ curl_socket_t curlx_sitosk(int i);
#endif /* USE_WINSOCK */
-#if defined(WIN32) || defined(_WIN32)
+#if defined(WIN32)
ssize_t curlx_read(int fd, void *buf, size_t count);
@@ -78,7 +82,7 @@ ssize_t curlx_write(int fd, const void *buf, size_t count);
# define write(fd, buf, count) curlx_write(fd, buf, count)
#endif
-#endif /* WIN32 || _WIN32 */
+#endif /* WIN32 */
#if defined(__INTEL_COMPILER) && defined(__unix__)
diff --git a/lib/wildcard.c b/lib/wildcard.c
index 105bcce4e..a3e24b678 100644
--- a/lib/wildcard.c
+++ b/lib/wildcard.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/lib/wildcard.h b/lib/wildcard.h
index 081be9ed9..21e933b9a 100644
--- a/lib/wildcard.h
+++ b/lib/wildcard.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,11 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#ifndef CURL_DISABLE_FTP
+#include <curl/curl.h>
#include "llist.h"
/* list of wildcard process states */
diff --git a/lib/ws.c b/lib/ws.c
new file mode 100644
index 000000000..a67344662
--- /dev/null
+++ b/lib/ws.c
@@ -0,0 +1,757 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "curl_setup.h"
+#include <curl/curl.h>
+
+#ifdef USE_WEBSOCKETS
+
+#include "urldata.h"
+#include "dynbuf.h"
+#include "rand.h"
+#include "curl_base64.h"
+#include "sendf.h"
+#include "multiif.h"
+#include "ws.h"
+#include "easyif.h"
+#include "transfer.h"
+#include "nonblock.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+struct wsfield {
+ const char *name;
+ const char *val;
+};
+
+CURLcode Curl_ws_request(struct Curl_easy *data, REQTYPE *req)
+{
+ unsigned int i;
+ CURLcode result = CURLE_OK;
+ unsigned char rand[16];
+ char *randstr;
+ size_t randlen;
+ char keyval[40];
+ struct SingleRequest *k = &data->req;
+ struct wsfield heads[]= {
+ {
+ /* The request MUST contain an |Upgrade| header field whose value
+ MUST include the "websocket" keyword. */
+ "Upgrade:", "websocket"
+ },
+ {
+ /* The request MUST contain a |Connection| header field whose value
+ MUST include the "Upgrade" token. */
+ "Connection:", "Upgrade",
+ },
+ {
+ /* The request MUST include a header field with the name
+ |Sec-WebSocket-Version|. The value of this header field MUST be
+ 13. */
+ "Sec-WebSocket-Version:", "13",
+ },
+ {
+ /* The request MUST include a header field with the name
+ |Sec-WebSocket-Key|. The value of this header field MUST be a nonce
+ consisting of a randomly selected 16-byte value that has been
+ base64-encoded (see Section 4 of [RFC4648]). The nonce MUST be
+ selected randomly for each connection. */
+ "Sec-WebSocket-Key:", NULL,
+ }
+ };
+ heads[3].val = &keyval[0];
+
+ /* 16 bytes random */
+ result = Curl_rand(data, (unsigned char *)rand, sizeof(rand));
+ if(result)
+ return result;
+ result = Curl_base64_encode((char *)rand, sizeof(rand), &randstr, &randlen);
+ if(result)
+ return result;
+ DEBUGASSERT(randlen < sizeof(keyval));
+ if(randlen >= sizeof(keyval))
+ return CURLE_FAILED_INIT;
+ strcpy(keyval, randstr);
+ free(randstr);
+ for(i = 0; !result && (i < sizeof(heads)/sizeof(heads[0])); i++) {
+ if(!Curl_checkheaders(data, STRCONST(heads[i].name))) {
+#ifdef USE_HYPER
+ char field[128];
+ msnprintf(field, sizeof(field), "%s %s", heads[i].name,
+ heads[i].val);
+ result = Curl_hyper_header(data, req, field);
+#else
+ (void)data;
+ result = Curl_dyn_addf(req, "%s %s\r\n", heads[i].name,
+ heads[i].val);
+#endif
+ }
+ }
+ k->upgr101 = UPGR101_WS;
+ Curl_dyn_init(&data->req.p.http->ws.buf, MAX_WS_SIZE * 2);
+ return result;
+}
+
+CURLcode Curl_ws_accept(struct Curl_easy *data)
+{
+ struct SingleRequest *k = &data->req;
+ struct HTTP *ws = data->req.p.http;
+ struct connectdata *conn = data->conn;
+ struct websocket *wsp = &data->req.p.http->ws;
+ CURLcode result;
+
+ /* Verify the Sec-WebSocket-Accept response.
+
+ The sent value is the base64 encoded version of a SHA-1 hash done on the
+ |Sec-WebSocket-Key| header field concatenated with
+ the string "258EAFA5-E914-47DA-95CA-C5AB0DC85B11".
+ */
+
+ /* If the response includes a |Sec-WebSocket-Extensions| header field and
+ this header field indicates the use of an extension that was not present
+ in the client's handshake (the server has indicated an extension not
+ requested by the client), the client MUST Fail the WebSocket Connection.
+ */
+
+ /* If the response includes a |Sec-WebSocket-Protocol| header field
+ and this header field indicates the use of a subprotocol that was
+ not present in the client's handshake (the server has indicated a
+ subprotocol not requested by the client), the client MUST Fail
+ the WebSocket Connection. */
+
+ /* 4 bytes random */
+ result = Curl_rand(data, (unsigned char *)&ws->ws.mask, sizeof(ws->ws.mask));
+ if(result)
+ return result;
+
+ infof(data, "Received 101, switch to WebSocket; mask %02x%02x%02x%02x",
+ ws->ws.mask[0], ws->ws.mask[1], ws->ws.mask[2], ws->ws.mask[3]);
+ k->upgr101 = UPGR101_RECEIVED;
+
+ if(data->set.connect_only)
+ /* switch off non-blocking sockets */
+ (void)curlx_nonblock(conn->sock[FIRSTSOCKET], FALSE);
+
+ wsp->oleft = 0;
+ return result;
+}
+
+#define WSBIT_FIN 0x80
+#define WSBIT_OPCODE_CONT 0
+#define WSBIT_OPCODE_TEXT (1)
+#define WSBIT_OPCODE_BIN (2)
+#define WSBIT_OPCODE_CLOSE (8)
+#define WSBIT_OPCODE_PING (9)
+#define WSBIT_OPCODE_PONG (0xa)
+#define WSBIT_OPCODE_MASK (0xf)
+
+#define WSBIT_MASK 0x80
+
+/* remove the spent bytes from the beginning of the buffer as that part has
+ now been delivered to the application */
+static void ws_decode_clear(struct Curl_easy *data)
+{
+ struct websocket *wsp = &data->req.p.http->ws;
+ size_t spent = wsp->usedbuf;
+ size_t len = Curl_dyn_len(&wsp->buf);
+ size_t keep = len - spent;
+ DEBUGASSERT(len >= spent);
+ Curl_dyn_tail(&wsp->buf, keep);
+}
+
+/* ws_decode() decodes a binary frame into structured WebSocket data,
+
+ wpkt - the incoming raw data. If NULL, work on the already buffered data.
+ ilen - the size of the provided data, perhaps too little, perhaps too much
+ out - stored pointed to extracted data
+ olen - stored length of the extracted data
+ oleft - number of unread bytes pending to that belongs to this frame
+ more - if there is more data in there
+ flags - stored bitmask about the frame
+
+ Returns CURLE_AGAIN if there is only a partial frame in the buffer. Then it
+ stores the first part in the ->extra buffer to be used in the next call
+ when more data is provided.
+*/
+
+static CURLcode ws_decode(struct Curl_easy *data,
+ unsigned char *wpkt, size_t ilen,
+ unsigned char **out, size_t *olen,
+ curl_off_t *oleft,
+ bool *more,
+ unsigned int *flags)
+{
+ bool fin;
+ unsigned char opcode;
+ curl_off_t total;
+ size_t dataindex = 2;
+ curl_off_t plen; /* size of data in the buffer */
+ curl_off_t payloadsize;
+ struct websocket *wsp = &data->req.p.http->ws;
+ unsigned char *p;
+ CURLcode result;
+
+ *olen = 0;
+
+ /* add the incoming bytes, if any */
+ if(wpkt) {
+ result = Curl_dyn_addn(&wsp->buf, wpkt, ilen);
+ if(result)
+ return result;
+ }
+
+ plen = Curl_dyn_len(&wsp->buf);
+ if(plen < 2) {
+ /* the smallest possible frame is two bytes */
+ infof(data, "WS: plen == %u, EAGAIN", (int)plen);
+ return CURLE_AGAIN;
+ }
+
+ p = Curl_dyn_uptr(&wsp->buf);
+
+ fin = p[0] & WSBIT_FIN;
+ opcode = p[0] & WSBIT_OPCODE_MASK;
+ infof(data, "WS:%d received FIN bit %u", __LINE__, (int)fin);
+ *flags = 0;
+ switch(opcode) {
+ case WSBIT_OPCODE_CONT:
+ if(!fin)
+ *flags |= CURLWS_CONT;
+ infof(data, "WS: received OPCODE CONT");
+ break;
+ case WSBIT_OPCODE_TEXT:
+ infof(data, "WS: received OPCODE TEXT");
+ *flags |= CURLWS_TEXT;
+ break;
+ case WSBIT_OPCODE_BIN:
+ infof(data, "WS: received OPCODE BINARY");
+ *flags |= CURLWS_BINARY;
+ break;
+ case WSBIT_OPCODE_CLOSE:
+ infof(data, "WS: received OPCODE CLOSE");
+ *flags |= CURLWS_CLOSE;
+ break;
+ case WSBIT_OPCODE_PING:
+ infof(data, "WS: received OPCODE PING");
+ *flags |= CURLWS_PING;
+ break;
+ case WSBIT_OPCODE_PONG:
+ infof(data, "WS: received OPCODE PONG");
+ *flags |= CURLWS_PONG;
+ break;
+ }
+
+ if(p[1] & WSBIT_MASK) {
+ /* A client MUST close a connection if it detects a masked frame. */
+ failf(data, "WS: masked input frame");
+ return CURLE_RECV_ERROR;
+ }
+ payloadsize = p[1];
+ if(payloadsize == 126) {
+ if(plen < 4) {
+ infof(data, "WS:%d plen == %u, EAGAIN", __LINE__, (int)plen);
+ return CURLE_AGAIN; /* not enough data available */
+ }
+ payloadsize = (p[2] << 8) | p[3];
+ dataindex += 2;
+ }
+ else if(payloadsize == 127) {
+ /* 64 bit payload size */
+ if(plen < 10)
+ return CURLE_AGAIN;
+ if(p[2] & 80) {
+ failf(data, "WS: too large frame");
+ return CURLE_RECV_ERROR;
+ }
+ dataindex += 8;
+ payloadsize = ((curl_off_t)p[2] << 56) |
+ (curl_off_t)p[3] << 48 |
+ (curl_off_t)p[4] << 40 |
+ (curl_off_t)p[5] << 32 |
+ (curl_off_t)p[6] << 24 |
+ (curl_off_t)p[7] << 16 |
+ (curl_off_t)p[8] << 8 |
+ p[9];
+ }
+
+ total = dataindex + payloadsize;
+ if(total > plen) {
+ /* deliver a partial frame */
+ *oleft = total - dataindex;
+ payloadsize = total - dataindex;
+ }
+ else {
+ *oleft = 0;
+ if(plen > total)
+ /* there is another fragment after */
+ *more = TRUE;
+ }
+
+ /* point to the payload */
+ *out = &p[dataindex];
+
+ /* return the payload length */
+ *olen = payloadsize;
+
+ /* number of bytes "used" from the buffer */
+ wsp->usedbuf = dataindex + payloadsize;
+ infof(data, "WS: received %zu bytes payload (%zu left)",
+ payloadsize, *oleft);
+ return CURLE_OK;
+}
+
+/* Curl_ws_writecb() is the write callback for websocket traffic. The
+ websocket data is provided to this raw, in chunks. This function should
+ handle/decode the data and call the "real" underlying callback accordingly.
+*/
+size_t Curl_ws_writecb(char *buffer, size_t size /* 1 */,
+ size_t nitems, void *userp)
+{
+ struct HTTP *ws = (struct HTTP *)userp;
+ struct Curl_easy *data = ws->ws.data;
+ void *writebody_ptr = data->set.out;
+ if(data->set.ws_raw_mode)
+ return data->set.fwrite_func(buffer, size, nitems, writebody_ptr);
+ else if(nitems) {
+ unsigned char *frame = NULL;
+ size_t flen = 0;
+ size_t wrote = 0;
+ CURLcode result;
+ bool more; /* there's is more to parse in the buffer */
+ curl_off_t oleft;
+
+ decode:
+ more = FALSE;
+ oleft = ws->ws.frame.bytesleft;
+ if(!oleft) {
+ unsigned int recvflags;
+ result = ws_decode(data, (unsigned char *)buffer, nitems,
+ &frame, &flen, &oleft, &more, &recvflags);
+ if(result == CURLE_AGAIN)
+ /* insufficient amount of data, keep it for later */
+ return nitems;
+ else if(result) {
+ infof(data, "WS: decode error %d", (int)result);
+ return nitems - 1;
+ }
+ /* Store details about the frame to be reachable with curl_ws_meta()
+ from within the write callback */
+ ws->ws.frame.age = 0;
+ ws->ws.frame.offset = 0;
+ ws->ws.frame.flags = recvflags;
+ ws->ws.frame.bytesleft = oleft;
+ }
+ else {
+ if(nitems > (size_t)ws->ws.frame.bytesleft) {
+ nitems = ws->ws.frame.bytesleft;
+ more = TRUE;
+ }
+ else
+ more = FALSE;
+ ws->ws.frame.offset += nitems;
+ ws->ws.frame.bytesleft -= nitems;
+ frame = (unsigned char *)buffer;
+ flen = nitems;
+ }
+ if((ws->ws.frame.flags & CURLWS_PING) && !oleft) {
+ /* auto-respond to PINGs, only works for single-frame payloads atm */
+ size_t bytes;
+ infof(data, "WS: auto-respond to PING with a PONG");
+ DEBUGASSERT(frame);
+ /* send back the exact same content as a PONG */
+ result = curl_ws_send(data, frame, flen, &bytes, 0, CURLWS_PONG);
+ if(result)
+ return result;
+ }
+ else {
+ /* deliver the decoded frame to the user callback */
+ Curl_set_in_callback(data, true);
+ wrote = data->set.fwrite_func((char *)frame, 1, flen, writebody_ptr);
+ Curl_set_in_callback(data, false);
+ if(wrote != flen)
+ return 0;
+ }
+ if(oleft)
+ ws->ws.frame.offset += flen;
+ /* the websocket frame has been delivered */
+ ws_decode_clear(data);
+ if(more) {
+ /* there's more websocket data to deal with in the buffer */
+ buffer = NULL; /* the buffer as been drained already */
+ goto decode;
+ }
+ }
+ return nitems;
+}
+
+
+CURL_EXTERN CURLcode curl_ws_recv(struct Curl_easy *data, void *buffer,
+ size_t buflen, size_t *nread,
+ struct curl_ws_frame **metap)
+{
+ size_t bytes;
+ CURLcode result;
+ struct websocket *wsp = &data->req.p.http->ws;
+
+ *nread = 0;
+ *metap = NULL;
+ /* get a download buffer */
+ result = Curl_preconnect(data);
+ if(result)
+ return result;
+
+ do {
+ bool drain = FALSE; /* if there is pending buffered data to drain */
+ char *inbuf = data->state.buffer;
+ bytes = wsp->stillbuffer;
+ if(!bytes) {
+ result = curl_easy_recv(data, data->state.buffer,
+ data->set.buffer_size, &bytes);
+ if(result)
+ return result;
+ }
+ else {
+ /* the pending bytes can be found here */
+ inbuf = wsp->stillb;
+ drain = TRUE;
+ }
+ if(bytes) {
+ unsigned char *out;
+ size_t olen;
+ bool more;
+ unsigned int recvflags;
+ curl_off_t oleft = wsp->frame.bytesleft;
+
+ infof(data, "WS: got %u websocket bytes to decode", (int)bytes);
+ if(!oleft && !drain) {
+ result = ws_decode(data, (unsigned char *)inbuf, bytes,
+ &out, &olen, &oleft, &more, &recvflags);
+ if(result == CURLE_AGAIN)
+ /* a packet fragment only */
+ break;
+ else if(result)
+ return result;
+ wsp->frame.offset = 0;
+ wsp->frame.bytesleft = oleft;
+ wsp->frame.flags = recvflags;
+ }
+ else {
+ olen = oleft;
+ out = (unsigned char *)wsp->stillb;
+ recvflags = wsp->frame.flags;
+ if((curl_off_t)buflen < oleft)
+ /* there is still data left after this */
+ wsp->frame.bytesleft -= buflen;
+ else
+ wsp->frame.bytesleft = 0;
+ }
+
+ /* auto-respond to PINGs */
+ if((recvflags & CURLWS_PING) && !oleft) {
+ infof(data, "WS: auto-respond to PING with a PONG");
+ /* send back the exact same content as a PONG */
+ result = curl_ws_send(data, out, olen, &bytes, 0, CURLWS_PONG);
+ if(result)
+ return result;
+ }
+ else {
+ if(olen < buflen) {
+ /* copy the payload to the user buffer */
+ memcpy(buffer, out, olen);
+ *nread = olen;
+ if(!oleft)
+ /* websocket frame has been delivered */
+ ws_decode_clear(data);
+ }
+ else {
+ /* copy a partial payload */
+ memcpy(buffer, out, buflen);
+ *nread = buflen;
+ /* remember what is left and where */
+ wsp->stillbuffer = olen - buflen;
+ wsp->stillb = (char *)buffer + buflen;
+ }
+ wsp->frame.offset += *nread;
+ }
+ }
+ else
+ *nread = bytes;
+ break;
+ } while(1);
+ *metap = &wsp->frame;
+ return CURLE_OK;
+}
+
+static void ws_xor(struct Curl_easy *data,
+ const unsigned char *source,
+ unsigned char *dest,
+ size_t len)
+{
+ struct websocket *wsp = &data->req.p.http->ws;
+ size_t i;
+ /* append payload after the mask, XOR appropriately */
+ for(i = 0; i < len; i++) {
+ dest[i] = source[i] ^ wsp->mask[wsp->xori];
+ wsp->xori++;
+ wsp->xori &= 3;
+ }
+}
+
+/***
+ RFC 6455 Section 5.2
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-------+-+-------------+-------------------------------+
+ |F|R|R|R| opcode|M| Payload len | Extended payload length |
+ |I|S|S|S| (4) |A| (7) | (16/64) |
+ |N|V|V|V| |S| | (if payload len==126/127) |
+ | |1|2|3| |K| | |
+ +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
+ | Extended payload length continued, if payload len == 127 |
+ + - - - - - - - - - - - - - - - +-------------------------------+
+ | |Masking-key, if MASK set to 1 |
+ +-------------------------------+-------------------------------+
+ | Masking-key (continued) | Payload Data |
+ +-------------------------------- - - - - - - - - - - - - - - - +
+ : Payload Data continued ... :
+ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+ | Payload Data continued ... |
+ +---------------------------------------------------------------+
+*/
+
+static size_t ws_packethead(struct Curl_easy *data,
+ size_t len, unsigned int flags)
+{
+ struct HTTP *ws = data->req.p.http;
+ unsigned char *out = (unsigned char *)data->state.ulbuf;
+ unsigned char firstbyte = 0;
+ int outi;
+ unsigned char opcode;
+ if(flags & CURLWS_TEXT) {
+ opcode = WSBIT_OPCODE_TEXT;
+ infof(data, "WS: send OPCODE TEXT");
+ }
+ else if(flags & CURLWS_CLOSE) {
+ opcode = WSBIT_OPCODE_CLOSE;
+ infof(data, "WS: send OPCODE CLOSE");
+ }
+ else if(flags & CURLWS_PING) {
+ opcode = WSBIT_OPCODE_PING;
+ infof(data, "WS: send OPCODE PING");
+ }
+ else if(flags & CURLWS_PONG) {
+ opcode = WSBIT_OPCODE_PONG;
+ infof(data, "WS: send OPCODE PONG");
+ }
+ else {
+ opcode = WSBIT_OPCODE_BIN;
+ infof(data, "WS: send OPCODE BINARY");
+ }
+
+ if(!(flags & CURLWS_CONT)) {
+ /* if not marked as continuing, assume this is the final fragment */
+ firstbyte |= WSBIT_FIN | opcode;
+ ws->ws.contfragment = FALSE;
+ }
+ else if(ws->ws.contfragment) {
+ /* the previous fragment was not a final one and this isn't either, keep a
+ CONT opcode and no FIN bit */
+ firstbyte |= WSBIT_OPCODE_CONT;
+ }
+ else {
+ ws->ws.contfragment = TRUE;
+ }
+ out[0] = firstbyte;
+ if(len > 65535) {
+ out[1] = 127 | WSBIT_MASK;
+ out[2] = (len >> 8) & 0xff;
+ out[3] = len & 0xff;
+ outi = 10;
+ }
+ else if(len > 126) {
+ out[1] = 126 | WSBIT_MASK;
+ out[2] = (len >> 8) & 0xff;
+ out[3] = len & 0xff;
+ outi = 4;
+ }
+ else {
+ out[1] = (unsigned char)len | WSBIT_MASK;
+ outi = 2;
+ }
+
+ infof(data, "WS: send FIN bit %u (byte %02x)",
+ firstbyte & WSBIT_FIN ? 1 : 0,
+ firstbyte);
+ infof(data, "WS: send payload len %u", (int)len);
+
+ /* 4 bytes mask */
+ memcpy(&out[outi], &ws->ws.mask, 4);
+
+ if(data->set.upload_buffer_size < (len + 10))
+ return 0;
+
+ /* pass over the mask */
+ outi += 4;
+
+ ws->ws.xori = 0;
+ /* return packet size */
+ return outi;
+}
+
+CURL_EXTERN CURLcode curl_ws_send(struct Curl_easy *data, const void *buffer,
+ size_t buflen, size_t *sent,
+ curl_off_t totalsize,
+ unsigned int sendflags)
+{
+ CURLcode result;
+ size_t headlen;
+ char *out;
+ ssize_t written;
+ struct websocket *wsp = &data->req.p.http->ws;
+
+ if(!data->set.ws_raw_mode) {
+ result = Curl_get_upload_buffer(data);
+ if(result)
+ return result;
+ }
+ else {
+ if(totalsize || sendflags)
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ }
+
+ if(data->set.ws_raw_mode) {
+ if(!buflen)
+ /* nothing to do */
+ return CURLE_OK;
+ /* raw mode sends exactly what was requested, and this is from within
+ the write callback */
+ if(Curl_is_in_callback(data))
+ result = Curl_write(data, data->conn->writesockfd, buffer, buflen,
+ &written);
+ else
+ result = Curl_senddata(data, buffer, buflen, &written);
+
+ infof(data, "WS: wanted to send %zu bytes, sent %zu bytes",
+ buflen, written);
+ *sent = written;
+ return result;
+ }
+
+ if(buflen > (data->set.upload_buffer_size - 10))
+ /* don't do more than this in one go */
+ buflen = data->set.upload_buffer_size - 10;
+
+ if(sendflags & CURLWS_OFFSET) {
+ if(totalsize) {
+ /* a frame series 'totalsize' bytes big, this is the first */
+ headlen = ws_packethead(data, totalsize, sendflags);
+ wsp->sleft = totalsize - buflen;
+ }
+ else {
+ headlen = 0;
+ if((curl_off_t)buflen > wsp->sleft) {
+ infof(data, "WS: unaligned frame size (sending %zu instead of %zu)",
+ buflen, wsp->sleft);
+ wsp->sleft = 0;
+ }
+ else
+ wsp->sleft -= buflen;
+ }
+ }
+ else
+ headlen = ws_packethead(data, buflen, sendflags);
+
+ /* headlen is the size of the frame header */
+ out = data->state.ulbuf;
+ if(buflen)
+ /* for PING and PONG etc there might not be a payload */
+ ws_xor(data, buffer, (unsigned char *)out + headlen, buflen);
+
+ if(data->set.connect_only)
+ result = Curl_senddata(data, out, buflen + headlen, &written);
+ else
+ result = Curl_write(data, data->conn->writesockfd, out,
+ buflen + headlen, &written);
+
+ infof(data, "WS: wanted to send %zu bytes, sent %zu bytes",
+ headlen + buflen, written);
+ *sent = written;
+
+ return result;
+}
+
+void Curl_ws_done(struct Curl_easy *data)
+{
+ struct websocket *wsp = &data->req.p.http->ws;
+ DEBUGASSERT(wsp);
+ Curl_dyn_free(&wsp->buf);
+}
+
+CURL_EXTERN struct curl_ws_frame *curl_ws_meta(struct Curl_easy *data)
+{
+ /* we only return something for websocket, called from within the callback
+ when not using raw mode */
+ if(GOOD_EASY_HANDLE(data) && Curl_is_in_callback(data) && data->req.p.http &&
+ !data->set.ws_raw_mode)
+ return &data->req.p.http->ws.frame;
+ return NULL;
+}
+
+#else
+
+CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
+ size_t *nread,
+ struct curl_ws_frame **metap)
+{
+ (void)curl;
+ (void)buffer;
+ (void)buflen;
+ (void)nread;
+ (void)metap;
+ return CURLE_OK;
+}
+
+CURL_EXTERN CURLcode curl_ws_send(CURL *curl, const void *buffer,
+ size_t buflen, size_t *sent,
+ curl_off_t framesize,
+ unsigned int sendflags)
+{
+ (void)curl;
+ (void)buffer;
+ (void)buflen;
+ (void)sent;
+ (void)framesize;
+ (void)sendflags;
+ return CURLE_OK;
+}
+
+CURL_EXTERN struct curl_ws_frame *curl_ws_meta(struct Curl_easy *data)
+{
+ (void)data;
+ return NULL;
+}
+#endif /* USE_WEBSOCKETS */
diff --git a/lib/ws.h b/lib/ws.h
new file mode 100644
index 000000000..341242e50
--- /dev/null
+++ b/lib/ws.h
@@ -0,0 +1,69 @@
+#ifndef HEADER_CURL_WS_H
+#define HEADER_CURL_WS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "curl_setup.h"
+
+#ifdef USE_WEBSOCKETS
+
+#ifdef USE_HYPER
+#define REQTYPE void
+#else
+#define REQTYPE struct dynbuf
+#endif
+
+/* this is the largest single fragment size we support */
+#define MAX_WS_SIZE 65535
+
+/* part of 'struct HTTP', when used in the 'struct SingleRequest' in the
+ Curl_easy struct */
+struct websocket {
+ bool contfragment; /* set TRUE if the previous fragment sent was not final */
+ unsigned char mask[4]; /* 32 bit mask for this connection */
+ struct Curl_easy *data; /* used for write callback handling */
+ struct dynbuf buf;
+ size_t usedbuf; /* number of leading bytes in 'buf' the most recent complete
+ websocket frame uses */
+ struct curl_ws_frame frame; /* the struct used for frame state */
+ curl_off_t oleft; /* outstanding number of payload bytes left from the
+ server */
+ curl_off_t stillbuffer; /* number of bytes left in the buffer to deliver in
+ the next curl_ws_recv() call */
+ char *stillb; /* the stillbuffer pending bytes are here */
+ curl_off_t sleft; /* outstanding number of payload bytes left to send */
+ unsigned int xori; /* xor index */
+};
+
+CURLcode Curl_ws_request(struct Curl_easy *data, REQTYPE *req);
+CURLcode Curl_ws_accept(struct Curl_easy *data);
+
+size_t Curl_ws_writecb(char *buffer, size_t size, size_t nitems, void *userp);
+void Curl_ws_done(struct Curl_easy *data);
+
+#else
+#define Curl_ws_request(x,y) CURLE_OK
+#define Curl_ws_done(x) Curl_nop_stmt
+#endif
+
+#endif /* HEADER_CURL_WS_H */
diff --git a/libcurl.pc.in b/libcurl.pc.in
index 8ac15d407..49485f192 100644
--- a/libcurl.pc.in
+++ b/libcurl.pc.in
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# This should most probably benefit from getting a "Requires:" field added
diff --git a/ltmain.sh b/ltmain.sh
index 21e5e0784..8fb8700ee 100755
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
+#! /usr/bin/env sh
## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
-## by inline-source v2014-01-03.01
+## by inline-source v2019-02-19.15
-# libtool (GNU libtool) 2.4.6
+# libtool (GNU libtool) 2.4.7
# Provide generalized library-building support services.
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# Copyright (C) 1996-2019, 2021-2022 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.
@@ -31,8 +31,8 @@
PROGRAM=libtool
PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-15"
-package_revision=2.4.6
+VERSION="2.4.7 Debian-2.4.7-4"
+package_revision=2.4.7
## ------ ##
@@ -64,34 +64,25 @@ package_revision=2.4.6
# libraries, which are installed to $pkgauxdir.
# Set a version string for this script.
-scriptversion=2015-01-20.17; # UTC
+scriptversion=2019-02-19.15; # UTC
# General shell script boiler plate, and helper functions.
# Written by Gary V. Vaughan, 2004
-# Copyright (C) 2004-2015 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 program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-
-# As a special exception to the GNU General Public License, if you distribute
-# this file as part of a program or library that is built using GNU Libtool,
-# you may include this file under the same distribution terms that you use
-# for the rest of that program.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# This is free software. There is NO warranty; not even for
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Copyright (C) 2004-2019, 2021 Bootstrap Authors
+#
+# This file is dual licensed under the terms of the MIT license
+# <https://opensource.org/license/MIT>, and GPL version 2 or later
+# <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
+# these licenses when using or redistributing this software or any of
+# the files within it. See the URLs above, or the file `LICENSE`
+# included in the Bootstrap distribution for the full license texts.
-# Please report bugs or propose patches to gary@gnu.org.
+# Please report bugs or propose patches to:
+# <https://github.com/gnulib-modules/bootstrap/issues>
## ------ ##
@@ -139,9 +130,12 @@ do
_G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
fi"
done
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# These NLS vars are set unconditionally (bootstrap issue #24). Unset those
+# in case the environment reset is needed later and the $save_* variant is not
+# defined (see the code above).
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
# Make sure IFS has a sensible default
sp=' '
@@ -159,6 +153,26 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
+# func_unset VAR
+# --------------
+# Portably unset VAR.
+# In some shells, an 'unset VAR' statement leaves a non-zero return
+# status if VAR is already unset, which might be problematic if the
+# statement is used at the end of a function (thus poisoning its return
+# value) or when 'set -e' is active (causing even a spurious abort of
+# the script in this case).
+func_unset ()
+{
+ { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; }
+}
+
+
+# Make sure CDPATH doesn't cause `cd` commands to output the target dir.
+func_unset CDPATH
+
+# Make sure ${,E,F}GREP behave sanely.
+func_unset GREP_OPTIONS
+
## ------------------------- ##
## Locate command utilities. ##
@@ -259,7 +273,7 @@ test -z "$SED" && {
rm -f conftest.in conftest.tmp conftest.nl conftest.out
}
- func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+ func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin"
rm -f conftest.sed
SED=$func_path_progs_result
}
@@ -295,7 +309,7 @@ test -z "$GREP" && {
rm -f conftest.in conftest.tmp conftest.nl conftest.out
}
- func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+ func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin"
GREP=$func_path_progs_result
}
@@ -360,6 +374,35 @@ sed_double_backslash="\
s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
s/\n//g"
+# require_check_ifs_backslash
+# ---------------------------
+# Check if we can use backslash as IFS='\' separator, and set
+# $check_ifs_backshlash_broken to ':' or 'false'.
+require_check_ifs_backslash=func_require_check_ifs_backslash
+func_require_check_ifs_backslash ()
+{
+ _G_save_IFS=$IFS
+ IFS='\'
+ _G_check_ifs_backshlash='a\\b'
+ for _G_i in $_G_check_ifs_backshlash
+ do
+ case $_G_i in
+ a)
+ check_ifs_backshlash_broken=false
+ ;;
+ '')
+ break
+ ;;
+ *)
+ check_ifs_backshlash_broken=:
+ break
+ ;;
+ esac
+ done
+ IFS=$_G_save_IFS
+ require_check_ifs_backslash=:
+}
+
## ----------------- ##
## Global variables. ##
@@ -580,16 +623,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then
{
$debug_cmd
- func_quote_for_eval "$2"
- eval "$1+=\\ \$func_quote_for_eval_result"
+ func_quote_arg pretty "$2"
+ eval "$1+=\\ \$func_quote_arg_result"
}'
else
func_append_quoted ()
{
$debug_cmd
- func_quote_for_eval "$2"
- eval "$1=\$$1\\ \$func_quote_for_eval_result"
+ func_quote_arg pretty "$2"
+ eval "$1=\$$1\\ \$func_quote_arg_result"
}
fi
@@ -1091,85 +1134,203 @@ func_relative_path ()
}
-# func_quote_for_eval ARG...
-# --------------------------
-# Aesthetically quote ARGs to be evaled later.
-# This function returns two values:
-# i) func_quote_for_eval_result
-# double-quoted, suitable for a subsequent eval
-# ii) func_quote_for_eval_unquoted_result
-# has all characters that are still active within double
-# quotes backslashified.
-func_quote_for_eval ()
+# func_quote_portable EVAL ARG
+# ----------------------------
+# Internal function to portably implement func_quote_arg. Note that we still
+# keep attention to performance here so we as much as possible try to avoid
+# calling sed binary (so far O(N) complexity as long as func_append is O(1)).
+func_quote_portable ()
{
$debug_cmd
- func_quote_for_eval_unquoted_result=
- func_quote_for_eval_result=
- while test 0 -lt $#; do
- case $1 in
- *[\\\`\"\$]*)
- _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
- *)
- _G_unquoted_arg=$1 ;;
- esac
- if test -n "$func_quote_for_eval_unquoted_result"; then
- func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
- else
- func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+ $require_check_ifs_backslash
+
+ func_quote_portable_result=$2
+
+ # one-time-loop (easy break)
+ while true
+ do
+ if $1; then
+ func_quote_portable_result=`$ECHO "$2" | $SED \
+ -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
+ break
fi
- case $_G_unquoted_arg in
- # Double-quote args containing shell metacharacters to delay
- # word splitting, command substitution and variable expansion
- # for a subsequent eval.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- _G_quoted_arg=\"$_G_unquoted_arg\"
+ # Quote for eval.
+ case $func_quote_portable_result in
+ *[\\\`\"\$]*)
+ # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string
+ # contains the shell wildcard characters.
+ case $check_ifs_backshlash_broken$func_quote_portable_result in
+ :*|*[\[\*\?]*)
+ func_quote_portable_result=`$ECHO "$func_quote_portable_result" \
+ | $SED "$sed_quote_subst"`
+ break
+ ;;
+ esac
+
+ func_quote_portable_old_IFS=$IFS
+ for _G_char in '\' '`' '"' '$'
+ do
+ # STATE($1) PREV($2) SEPARATOR($3)
+ set start "" ""
+ func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
+ IFS=$_G_char
+ for _G_part in $func_quote_portable_result
+ do
+ case $1 in
+ quote)
+ func_append func_quote_portable_result "$3$2"
+ set quote "$_G_part" "\\$_G_char"
+ ;;
+ start)
+ set first "" ""
+ func_quote_portable_result=
+ ;;
+ first)
+ set quote "$_G_part" ""
+ ;;
+ esac
+ done
+ done
+ IFS=$func_quote_portable_old_IFS
;;
- *)
- _G_quoted_arg=$_G_unquoted_arg
- ;;
+ *) ;;
esac
-
- if test -n "$func_quote_for_eval_result"; then
- func_append func_quote_for_eval_result " $_G_quoted_arg"
- else
- func_append func_quote_for_eval_result "$_G_quoted_arg"
- fi
- shift
+ break
done
+
+ func_quote_portable_unquoted_result=$func_quote_portable_result
+ case $func_quote_portable_result in
+ # double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and variable expansion
+ # for a subsequent eval.
+ # many bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ func_quote_portable_result=\"$func_quote_portable_result\"
+ ;;
+ esac
}
-# func_quote_for_expand ARG
-# -------------------------
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
- $debug_cmd
+# func_quotefast_eval ARG
+# -----------------------
+# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG',
+# but optimized for speed. Result is stored in $func_quotefast_eval.
+if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
+ printf -v _GL_test_printf_tilde %q '~'
+ if test '\~' = "$_GL_test_printf_tilde"; then
+ func_quotefast_eval ()
+ {
+ printf -v func_quotefast_eval_result %q "$1"
+ }
+ else
+ # Broken older Bash implementations. Make those faster too if possible.
+ func_quotefast_eval ()
+ {
+ case $1 in
+ '~'*)
+ func_quote_portable false "$1"
+ func_quotefast_eval_result=$func_quote_portable_result
+ ;;
+ *)
+ printf -v func_quotefast_eval_result %q "$1"
+ ;;
+ esac
+ }
+ fi
+else
+ func_quotefast_eval ()
+ {
+ func_quote_portable false "$1"
+ func_quotefast_eval_result=$func_quote_portable_result
+ }
+fi
- case $1 in
- *[\\\`\"]*)
- _G_arg=`$ECHO "$1" | $SED \
- -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
- *)
- _G_arg=$1 ;;
+
+# func_quote_arg MODEs ARG
+# ------------------------
+# Quote one ARG to be evaled later. MODEs argument may contain zero or more
+# specifiers listed below separated by ',' character. This function returns two
+# values:
+# i) func_quote_arg_result
+# double-quoted (when needed), suitable for a subsequent eval
+# ii) func_quote_arg_unquoted_result
+# has all characters that are still active within double
+# quotes backslashified. Available only if 'unquoted' is specified.
+#
+# Available modes:
+# ----------------
+# 'eval' (default)
+# - escape shell special characters
+# 'expand'
+# - the same as 'eval'; but do not quote variable references
+# 'pretty'
+# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might
+# be used later in func_quote to get output like: 'echo "a b"' instead
+# of 'echo a\ b'. This is slower than default on some shells.
+# 'unquoted'
+# - produce also $func_quote_arg_unquoted_result which does not contain
+# wrapping double-quotes.
+#
+# Examples for 'func_quote_arg pretty,unquoted string':
+#
+# string | *_result | *_unquoted_result
+# ------------+-----------------------+-------------------
+# " | \" | \"
+# a b | "a b" | a b
+# "a b" | "\"a b\"" | \"a b\"
+# * | "*" | *
+# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\"
+#
+# Examples for 'func_quote_arg pretty,unquoted,expand string':
+#
+# string | *_result | *_unquoted_result
+# --------------+---------------------+--------------------
+# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\"
+func_quote_arg ()
+{
+ _G_quote_expand=false
+ case ,$1, in
+ *,expand,*)
+ _G_quote_expand=:
+ ;;
esac
- case $_G_arg in
- # Double-quote args containing shell metacharacters to delay
- # word splitting and command substitution for a subsequent eval.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- _G_arg=\"$_G_arg\"
+ case ,$1, in
+ *,pretty,*|*,expand,*|*,unquoted,*)
+ func_quote_portable $_G_quote_expand "$2"
+ func_quote_arg_result=$func_quote_portable_result
+ func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
+ ;;
+ *)
+ # Faster quote-for-eval for some shells.
+ func_quotefast_eval "$2"
+ func_quote_arg_result=$func_quotefast_eval_result
;;
esac
+}
+
- func_quote_for_expand_result=$_G_arg
+# func_quote MODEs ARGs...
+# ------------------------
+# Quote all ARGs to be evaled later and join them into single command. See
+# func_quote_arg's description for more info.
+func_quote ()
+{
+ $debug_cmd
+ _G_func_quote_mode=$1 ; shift
+ func_quote_result=
+ while test 0 -lt $#; do
+ func_quote_arg "$_G_func_quote_mode" "$1"
+ if test -n "$func_quote_result"; then
+ func_append func_quote_result " $func_quote_arg_result"
+ else
+ func_append func_quote_result "$func_quote_arg_result"
+ fi
+ shift
+ done
}
@@ -1215,8 +1376,8 @@ func_show_eval ()
_G_cmd=$1
_G_fail_exp=${2-':'}
- func_quote_for_expand "$_G_cmd"
- eval "func_notquiet $func_quote_for_expand_result"
+ func_quote_arg pretty,expand "$_G_cmd"
+ eval "func_notquiet $func_quote_arg_result"
$opt_dry_run || {
eval "$_G_cmd"
@@ -1241,8 +1402,8 @@ func_show_eval_locale ()
_G_fail_exp=${2-':'}
$opt_quiet || {
- func_quote_for_expand "$_G_cmd"
- eval "func_echo $func_quote_for_expand_result"
+ func_quote_arg expand,pretty "$_G_cmd"
+ eval "func_echo $func_quote_arg_result"
}
$opt_dry_run || {
@@ -1369,30 +1530,26 @@ func_lt_ver ()
# End:
#! /bin/sh
-# Set a version string for this script.
-scriptversion=2015-10-07.11; # UTC
-
# A portable, pluggable option parser for Bourne shell.
# Written by Gary V. Vaughan, 2010
-# Copyright (C) 2010-2015 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 program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# This is free software. There is NO warranty; not even for
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Copyright (C) 2010-2019, 2021 Bootstrap Authors
+#
+# This file is dual licensed under the terms of the MIT license
+# <https://opensource.org/license/MIT>, and GPL version 2 or later
+# <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
+# these licenses when using or redistributing this software or any of
+# the files within it. See the URLs above, or the file `LICENSE`
+# included in the Bootstrap distribution for the full license texts.
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
+# Please report bugs or propose patches to:
+# <https://github.com/gnulib-modules/bootstrap/issues>
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Please report bugs or propose patches to gary@gnu.org.
+# Set a version string for this script.
+scriptversion=2019-02-19.15; # UTC
## ------ ##
@@ -1415,7 +1572,7 @@ scriptversion=2015-10-07.11; # UTC
#
# In order for the '--version' option to work, you will need to have a
# suitably formatted comment like the one at the top of this file
-# starting with '# Written by ' and ending with '# warranty; '.
+# starting with '# Written by ' and ending with '# Copyright'.
#
# For '-h' and '--help' to work, you will also need a one line
# description of your script's purpose in a comment directly above the
@@ -1427,7 +1584,7 @@ scriptversion=2015-10-07.11; # UTC
# to display verbose messages only when your user has specified
# '--verbose'.
#
-# After sourcing this file, you can plug processing for additional
+# After sourcing this file, you can plug in processing for additional
# options by amending the variables from the 'Configuration' section
# below, and following the instructions in the 'Option parsing'
# section further down.
@@ -1476,8 +1633,8 @@ fatal_help="Try '\$progname --help' for more information."
## ------------------------- ##
# This section contains functions for adding, removing, and running hooks
-# to the main code. A hook is just a named list of of function, that can
-# be run in order later on.
+# in the main code. A hook is just a list of function names that can be
+# run in order later on.
# func_hookable FUNC_NAME
# -----------------------
@@ -1510,7 +1667,8 @@ func_add_hook ()
# func_remove_hook FUNC_NAME HOOK_FUNC
# ------------------------------------
-# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+# Remove HOOK_FUNC from the list of hook functions to be called by
+# FUNC_NAME.
func_remove_hook ()
{
$debug_cmd
@@ -1519,10 +1677,28 @@ func_remove_hook ()
}
+# func_propagate_result FUNC_NAME_A FUNC_NAME_B
+# ---------------------------------------------
+# If the *_result variable of FUNC_NAME_A _is set_, assign its value to
+# *_result variable of FUNC_NAME_B.
+func_propagate_result ()
+{
+ $debug_cmd
+
+ func_propagate_result_result=:
+ if eval "test \"\${${1}_result+set}\" = set"
+ then
+ eval "${2}_result=\$${1}_result"
+ else
+ func_propagate_result_result=false
+ fi
+}
+
+
# func_run_hooks FUNC_NAME [ARG]...
# ---------------------------------
# Run all hook functions registered to FUNC_NAME.
-# It is assumed that the list of hook functions contains nothing more
+# It's assumed that the list of hook functions contains nothing more
# than a whitespace-delimited list of legal shell function names, and
# no effort is wasted trying to catch shell meta-characters or preserve
# whitespace.
@@ -1534,22 +1710,19 @@ func_run_hooks ()
case " $hookable_fns " in
*" $1 "*) ;;
- *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+ *) func_fatal_error "'$1' does not support hook functions." ;;
esac
eval _G_hook_fns=\$$1_hooks; shift
for _G_hook in $_G_hook_fns; do
- if eval $_G_hook '"$@"'; then
- # store returned options list back into positional
- # parameters for next 'cmd' execution.
- eval _G_hook_result=\$${_G_hook}_result
- eval set dummy "$_G_hook_result"; shift
- _G_rc_run_hooks=:
+ func_unset "${_G_hook}_result"
+ eval $_G_hook '${1+"$@"}'
+ func_propagate_result $_G_hook func_run_hooks
+ if $func_propagate_result_result; then
+ eval set dummy "$func_run_hooks_result"; shift
fi
done
-
- $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result
}
@@ -1559,14 +1732,16 @@ func_run_hooks ()
## --------------- ##
# In order to add your own option parsing hooks, you must accept the
-# full positional parameter list in your hook function, you may remove/edit
-# any options that you action, and then pass back the remaining unprocessed
-# options in '<hooked_function_name>_result', escaped suitably for
-# 'eval'. In this case you also must return $EXIT_SUCCESS to let the
-# hook's caller know that it should pay attention to
-# '<hooked_function_name>_result'. Returning $EXIT_FAILURE signalizes that
-# arguments are left untouched by the hook and therefore caller will ignore the
-# result variable.
+# full positional parameter list from your hook function. You may remove
+# or edit any options that you action, and then pass back the remaining
+# unprocessed options in '<hooked_function_name>_result', escaped
+# suitably for 'eval'.
+#
+# The '<hooked_function_name>_result' variable is automatically unset
+# before your hook gets called; for best performance, only set the
+# *_result variable when necessary (i.e. don't call the 'func_quote'
+# function unnecessarily because it can be an expensive operation on some
+# machines).
#
# Like this:
#
@@ -1578,11 +1753,8 @@ func_run_hooks ()
# usage_message=$usage_message'
# -s, --silent don'\''t print informational messages
# '
-# # No change in '$@' (ignored completely by this hook). There is
-# # no need to do the equivalent (but slower) action:
-# # func_quote_for_eval ${1+"$@"}
-# # my_options_prep_result=$func_quote_for_eval_result
-# false
+# # No change in '$@' (ignored completely by this hook). Leave
+# # my_options_prep_result variable intact.
# }
# func_add_hook func_options_prep my_options_prep
#
@@ -1593,7 +1765,7 @@ func_run_hooks ()
#
# args_changed=false
#
-# # Note that for efficiency, we parse as many options as we can
+# # Note that, for efficiency, we parse as many options as we can
# # recognise in a loop before passing the remainder back to the
# # caller on the first unrecognised argument we encounter.
# while test $# -gt 0; do
@@ -1610,18 +1782,17 @@ func_run_hooks ()
# args_changed=:
# ;;
# *) # Make sure the first unrecognised option "$_G_opt"
-# # is added back to "$@", we could need that later
-# # if $args_changed is true.
+# # is added back to "$@" in case we need it later,
+# # if $args_changed was set to 'true'.
# set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
# esac
# done
#
+# # Only call 'func_quote' here if we processed at least one argument.
# if $args_changed; then
-# func_quote_for_eval ${1+"$@"}
-# my_silent_option_result=$func_quote_for_eval_result
+# func_quote eval ${1+"$@"}
+# my_silent_option_result=$func_quote_result
# fi
-#
-# $args_changed
# }
# func_add_hook func_parse_options my_silent_option
#
@@ -1632,8 +1803,6 @@ func_run_hooks ()
#
# $opt_silent && $opt_verbose && func_fatal_help "\
# '--silent' and '--verbose' options are mutually exclusive."
-#
-# false
# }
# func_add_hook func_validate_options my_option_validation
#
@@ -1649,13 +1818,8 @@ func_options_finish ()
{
$debug_cmd
- _G_func_options_finish_exit=false
- if func_run_hooks func_options ${1+"$@"}; then
- func_options_finish_result=$func_run_hooks_result
- _G_func_options_finish_exit=:
- fi
-
- $_G_func_options_finish_exit
+ func_run_hooks func_options ${1+"$@"}
+ func_propagate_result func_run_hooks func_options_finish
}
@@ -1668,28 +1832,27 @@ func_options ()
{
$debug_cmd
- _G_rc_options=false
+ _G_options_quoted=false
for my_func in options_prep parse_options validate_options options_finish
do
- if eval func_$my_func '${1+"$@"}'; then
- eval _G_res_var='$'"func_${my_func}_result"
- eval set dummy "$_G_res_var" ; shift
- _G_rc_options=:
+ func_unset func_${my_func}_result
+ func_unset func_run_hooks_result
+ eval func_$my_func '${1+"$@"}'
+ func_propagate_result func_$my_func func_options
+ if $func_propagate_result_result; then
+ eval set dummy "$func_options_result"; shift
+ _G_options_quoted=:
fi
done
- # Save modified positional parameters for caller. As a top-level
- # options-parser function we always need to set the 'func_options_result'
- # variable (regardless the $_G_rc_options value).
- if $_G_rc_options; then
- func_options_result=$_G_res_var
- else
- func_quote_for_eval ${1+"$@"}
- func_options_result=$func_quote_for_eval_result
- fi
-
- $_G_rc_options
+ $_G_options_quoted || {
+ # As we (func_options) are top-level options-parser function and
+ # nobody quoted "$@" for us yet, we need to do it explicitly for
+ # caller.
+ func_quote eval ${1+"$@"}
+ func_options_result=$func_quote_result
+ }
}
@@ -1699,8 +1862,7 @@ func_options ()
# Note that when calling hook functions, we pass through the list of
# positional parameters. If a hook function modifies that list, and
# needs to propagate that back to rest of this script, then the complete
-# modified list must be put in 'func_run_hooks_result' before
-# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned).
+# modified list must be put in 'func_run_hooks_result' before returning.
func_hookable func_options_prep
func_options_prep ()
{
@@ -1710,14 +1872,8 @@ func_options_prep ()
opt_verbose=false
opt_warning_types=
- _G_rc_options_prep=false
- if func_run_hooks func_options_prep ${1+"$@"}; then
- _G_rc_options_prep=:
- # save modified positional parameters for caller
- func_options_prep_result=$func_run_hooks_result
- fi
-
- $_G_rc_options_prep
+ func_run_hooks func_options_prep ${1+"$@"}
+ func_propagate_result func_run_hooks func_options_prep
}
@@ -1729,27 +1885,32 @@ func_parse_options ()
{
$debug_cmd
- func_parse_options_result=
-
- _G_rc_parse_options=false
+ _G_parse_options_requote=false
# this just eases exit handling
while test $# -gt 0; do
# Defer to hook functions for initial option parsing, so they
# get priority in the event of reusing an option name.
- if func_run_hooks func_parse_options ${1+"$@"}; then
- eval set dummy "$func_run_hooks_result"; shift
- _G_rc_parse_options=:
+ func_run_hooks func_parse_options ${1+"$@"}
+ func_propagate_result func_run_hooks func_parse_options
+ if $func_propagate_result_result; then
+ eval set dummy "$func_parse_options_result"; shift
+ # Even though we may have changed "$@", we passed the "$@" array
+ # down into the hook and it quoted it for us (because we are in
+ # this if-branch). No need to quote it again.
+ _G_parse_options_requote=false
fi
# Break out of the loop if we already parsed every option.
test $# -gt 0 || break
+ # We expect that one of the options parsed in this function matches
+ # and thus we remove _G_opt from "$@" and need to re-quote.
_G_match_parse_options=:
_G_opt=$1
shift
case $_G_opt in
--debug|-x) debug_cmd='set -x'
- func_echo "enabling shell trace mode"
+ func_echo "enabling shell trace mode" >&2
$debug_cmd
;;
@@ -1760,7 +1921,7 @@ func_parse_options ()
--warnings|--warning|-W)
if test $# = 0 && func_missing_arg $_G_opt; then
- _G_rc_parse_options=:
+ _G_parse_options_requote=:
break
fi
case " $warning_categories $1" in
@@ -1815,7 +1976,7 @@ func_parse_options ()
shift
;;
- --) _G_rc_parse_options=: ; break ;;
+ --) _G_parse_options_requote=: ; break ;;
-*) func_fatal_help "unrecognised option: '$_G_opt'" ;;
*) set dummy "$_G_opt" ${1+"$@"}; shift
_G_match_parse_options=false
@@ -1823,17 +1984,16 @@ func_parse_options ()
;;
esac
- $_G_match_parse_options && _G_rc_parse_options=:
+ if $_G_match_parse_options; then
+ _G_parse_options_requote=:
+ fi
done
-
- if $_G_rc_parse_options; then
+ if $_G_parse_options_requote; then
# save modified positional parameters for caller
- func_quote_for_eval ${1+"$@"}
- func_parse_options_result=$func_quote_for_eval_result
+ func_quote eval ${1+"$@"}
+ func_parse_options_result=$func_quote_result
fi
-
- $_G_rc_parse_options
}
@@ -1846,21 +2006,14 @@ func_validate_options ()
{
$debug_cmd
- _G_rc_validate_options=false
-
# Display all warnings if -W was not given.
test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
- if func_run_hooks func_validate_options ${1+"$@"}; then
- # save modified positional parameters for caller
- func_validate_options_result=$func_run_hooks_result
- _G_rc_validate_options=:
- fi
+ func_run_hooks func_validate_options ${1+"$@"}
+ func_propagate_result func_run_hooks func_validate_options
# Bail if the options were screwed!
$exit_cmd $EXIT_FAILURE
-
- $_G_rc_validate_options
}
@@ -1916,8 +2069,8 @@ func_missing_arg ()
# func_split_equals STRING
# ------------------------
-# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
-# splitting STRING at the '=' sign.
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables
+# after splitting STRING at the '=' sign.
test -z "$_G_HAVE_XSI_OPS" \
&& (eval 'x=a/b/c;
test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
@@ -1932,8 +2085,9 @@ then
func_split_equals_lhs=${1%%=*}
func_split_equals_rhs=${1#*=}
- test "x$func_split_equals_lhs" = "x$1" \
- && func_split_equals_rhs=
+ if test "x$func_split_equals_lhs" = "x$1"; then
+ func_split_equals_rhs=
+ fi
}'
else
# ...otherwise fall back to using expr, which is often a shell builtin.
@@ -1943,7 +2097,7 @@ else
func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
func_split_equals_rhs=
- test "x$func_split_equals_lhs" = "x$1" \
+ test "x$func_split_equals_lhs=" = "x$1" \
|| func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
}
fi #func_split_equals
@@ -1969,7 +2123,7 @@ else
{
$debug_cmd
- func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+ func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'`
func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
}
fi #func_split_short_opt
@@ -2011,31 +2165,44 @@ func_usage_message ()
# func_version
# ------------
# Echo version message to standard output and exit.
+# The version message is extracted from the calling file's header
+# comments, with leading '# ' stripped:
+# 1. First display the progname and version
+# 2. Followed by the header comment line matching /^# Written by /
+# 3. Then a blank line followed by the first following line matching
+# /^# Copyright /
+# 4. Immediately followed by any lines between the previous matches,
+# except lines preceding the intervening completely blank line.
+# For example, see the header comments of this file.
func_version ()
{
$debug_cmd
printf '%s\n' "$progname $scriptversion"
$SED -n '
- /(C)/!b go
- :more
- /\./!{
- N
- s|\n# | |
- b more
- }
- :go
- /^# Written by /,/# warranty; / {
- s|^# ||
- s|^# *$||
- s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
- p
+ /^# Written by /!b
+ s|^# ||; p; n
+
+ :fwd2blnk
+ /./ {
+ n
+ b fwd2blnk
}
- /^# Written by / {
- s|^# ||
- p
+ p; n
+
+ :holdwrnt
+ s|^# ||
+ s|^# *$||
+ /^Copyright /!{
+ /./H
+ n
+ b holdwrnt
}
- /^warranty; /q' < "$progpath"
+
+ s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+ G
+ s|\(\n\)\n*|\1|g
+ p; q' < "$progpath"
exit $?
}
@@ -2045,12 +2212,12 @@ func_version ()
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"
# time-stamp-time-zone: "UTC"
# End:
# Set a version string.
-scriptversion='(GNU libtool) 2.4.6'
+scriptversion='(GNU libtool) 2.4.7'
# func_echo ARG...
@@ -2141,7 +2308,7 @@ include the following information:
compiler: $LTCC
compiler flags: $LTCFLAGS
linker: $LD (gnu? $with_gnu_ld)
- version: $progname $scriptversion Debian-2.4.6-15
+ version: $progname $scriptversion Debian-2.4.7-4
automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
@@ -2197,7 +2364,7 @@ fi
# a configuration failure hint, and exit.
func_fatal_configuration ()
{
- func__fatal_error ${1+"$@"} \
+ func_fatal_error ${1+"$@"} \
"See the $PACKAGE documentation for more information." \
"Fatal configuration error."
}
@@ -2345,6 +2512,8 @@ libtool_options_prep ()
_G_rc_lt_options_prep=:
+ _G_rc_lt_options_prep=:
+
# Shorthand for --mode=foo, only valid as the first argument
case $1 in
clean|clea|cle|cl)
@@ -2375,11 +2544,9 @@ libtool_options_prep ()
if $_G_rc_lt_options_prep; then
# Pass back the list of options.
- func_quote_for_eval ${1+"$@"}
- libtool_options_prep_result=$func_quote_for_eval_result
+ func_quote eval ${1+"$@"}
+ libtool_options_prep_result=$func_quote_result
fi
-
- $_G_rc_lt_options_prep
}
func_add_hook func_options_prep libtool_options_prep
@@ -2482,11 +2649,9 @@ libtool_parse_options ()
if $_G_rc_lt_parse_options; then
# save modified positional parameters for caller
- func_quote_for_eval ${1+"$@"}
- libtool_parse_options_result=$func_quote_for_eval_result
+ func_quote eval ${1+"$@"}
+ libtool_parse_options_result=$func_quote_result
fi
-
- $_G_rc_lt_parse_options
}
func_add_hook func_parse_options libtool_parse_options
@@ -2543,8 +2708,8 @@ libtool_validate_options ()
}
# Pass back the unparsed argument list
- func_quote_for_eval ${1+"$@"}
- libtool_validate_options_result=$func_quote_for_eval_result
+ func_quote eval ${1+"$@"}
+ libtool_validate_options_result=$func_quote_result
}
func_add_hook func_validate_options libtool_validate_options
@@ -3510,8 +3675,8 @@ func_mode_compile ()
esac
done
- func_quote_for_eval "$libobj"
- test "X$libobj" != "X$func_quote_for_eval_result" \
+ func_quote_arg pretty "$libobj"
+ test "X$libobj" != "X$func_quote_arg_result" \
&& $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
&& func_warning "libobj name '$libobj' may not contain shell special characters."
func_dirname_and_basename "$obj" "/" ""
@@ -3584,8 +3749,8 @@ compiler."
func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
srcfile=$func_to_tool_file_result
- func_quote_for_eval "$srcfile"
- qsrcfile=$func_quote_for_eval_result
+ func_quote_arg pretty "$srcfile"
+ qsrcfile=$func_quote_arg_result
# Only build a PIC object if we are building libtool libraries.
if test yes = "$build_libtool_libs"; then
@@ -3740,7 +3905,8 @@ This mode accepts the following additional options:
-prefer-non-pic try to build non-PIC objects only
-shared do not build a '.o' file suitable for static linking
-static only build a '.o' file suitable for static linking
- -Wc,FLAG pass FLAG directly to the compiler
+ -Wc,FLAG
+ -Xcompiler FLAG pass FLAG directly to the compiler
COMPILE-COMMAND is a command to be used in creating a 'standard' object file
from the given SOURCEFILE.
@@ -3846,6 +4012,8 @@ The following components of LINK-COMMAND are treated specially:
-weak LIBNAME declare that the target provides the LIBNAME interface
-Wc,FLAG
-Xcompiler FLAG pass linker-specific FLAG directly to the compiler
+ -Wa,FLAG
+ -Xassembler FLAG pass linker-specific FLAG directly to the assembler
-Wl,FLAG
-Xlinker FLAG pass linker-specific FLAG directly to the linker
-XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
@@ -4188,8 +4356,8 @@ func_mode_install ()
case $nonopt in *shtool*) :;; *) false;; esac
then
# Aesthetically quote it.
- func_quote_for_eval "$nonopt"
- install_prog="$func_quote_for_eval_result "
+ func_quote_arg pretty "$nonopt"
+ install_prog="$func_quote_arg_result "
arg=$1
shift
else
@@ -4199,8 +4367,8 @@ func_mode_install ()
# The real first argument should be the name of the installation program.
# Aesthetically quote it.
- func_quote_for_eval "$arg"
- func_append install_prog "$func_quote_for_eval_result"
+ func_quote_arg pretty "$arg"
+ func_append install_prog "$func_quote_arg_result"
install_shared_prog=$install_prog
case " $install_prog " in
*[\\\ /]cp\ *) install_cp=: ;;
@@ -4257,12 +4425,12 @@ func_mode_install ()
esac
# Aesthetically quote the argument.
- func_quote_for_eval "$arg"
- func_append install_prog " $func_quote_for_eval_result"
+ func_quote_arg pretty "$arg"
+ func_append install_prog " $func_quote_arg_result"
if test -n "$arg2"; then
- func_quote_for_eval "$arg2"
+ func_quote_arg pretty "$arg2"
fi
- func_append install_shared_prog " $func_quote_for_eval_result"
+ func_append install_shared_prog " $func_quote_arg_result"
done
test -z "$install_prog" && \
@@ -4273,8 +4441,8 @@ func_mode_install ()
if test -n "$install_override_mode" && $no_mode; then
if $install_cp; then :; else
- func_quote_for_eval "$install_override_mode"
- func_append install_shared_prog " -m $func_quote_for_eval_result"
+ func_quote_arg pretty "$install_override_mode"
+ func_append install_shared_prog " -m $func_quote_arg_result"
fi
fi
@@ -4570,8 +4738,8 @@ func_mode_install ()
relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
$opt_quiet || {
- func_quote_for_expand "$relink_command"
- eval "func_echo $func_quote_for_expand_result"
+ func_quote_arg expand,pretty "$relink_command"
+ eval "func_echo $func_quote_arg_result"
}
if eval "$relink_command"; then :
else
@@ -5350,7 +5518,8 @@ else
if test \"\$libtool_execute_magic\" != \"$magic\"; then
file=\"\$0\""
- qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+ func_quote_arg pretty "$ECHO"
+ qECHO=$func_quote_arg_result
$ECHO "\
# A function that is used when there is no print builtin or printf.
@@ -5360,7 +5529,7 @@ func_fallback_echo ()
\$1
_LTECHO_EOF'
}
- ECHO=\"$qECHO\"
+ ECHO=$qECHO
fi
# Very basic option parsing. These options are (a) specific to
@@ -6703,9 +6872,9 @@ func_mode_link ()
while test "$#" -gt 0; do
arg=$1
shift
- func_quote_for_eval "$arg"
- qarg=$func_quote_for_eval_unquoted_result
- func_append libtool_args " $func_quote_for_eval_result"
+ func_quote_arg pretty,unquoted "$arg"
+ qarg=$func_quote_arg_unquoted_result
+ func_append libtool_args " $func_quote_arg_result"
# If the previous option needs an argument, assign it.
if test -n "$prev"; then
@@ -6941,6 +7110,13 @@ func_mode_link ()
prev=
continue
;;
+ xassembler)
+ func_append compiler_flags " -Xassembler $qarg"
+ prev=
+ func_append compile_command " -Xassembler $qarg"
+ func_append finalize_command " -Xassembler $qarg"
+ continue
+ ;;
xcclinker)
func_append linker_flags " $qarg"
func_append compiler_flags " $qarg"
@@ -7111,7 +7287,7 @@ func_mode_link ()
# These systems don't actually have a C library (as such)
test X-lc = "X$arg" && continue
;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
# Do not include libc due to us having libc/libc_r.
test X-lc = "X$arg" && continue
;;
@@ -7131,7 +7307,7 @@ func_mode_link ()
esac
elif test X-lc_r = "X$arg"; then
case $host in
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
# Do not include libc_r directly, use -pthread flag.
continue
;;
@@ -7161,8 +7337,20 @@ func_mode_link ()
prev=xcompiler
continue
;;
-
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199.
+ -pthread)
+ case $host in
+ *solaris2*) ;;
+ *)
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) func_append new_inherited_linker_flags " $arg" ;;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+ -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
func_append compiler_flags " $arg"
func_append compile_command " $arg"
@@ -7303,9 +7491,9 @@ func_mode_link ()
save_ifs=$IFS; IFS=,
for flag in $args; do
IFS=$save_ifs
- func_quote_for_eval "$flag"
- func_append arg " $func_quote_for_eval_result"
- func_append compiler_flags " $func_quote_for_eval_result"
+ func_quote_arg pretty "$flag"
+ func_append arg " $func_quote_arg_result"
+ func_append compiler_flags " $func_quote_arg_result"
done
IFS=$save_ifs
func_stripname ' ' '' "$arg"
@@ -7319,16 +7507,21 @@ func_mode_link ()
save_ifs=$IFS; IFS=,
for flag in $args; do
IFS=$save_ifs
- func_quote_for_eval "$flag"
- func_append arg " $wl$func_quote_for_eval_result"
- func_append compiler_flags " $wl$func_quote_for_eval_result"
- func_append linker_flags " $func_quote_for_eval_result"
+ func_quote_arg pretty "$flag"
+ func_append arg " $wl$func_quote_arg_result"
+ func_append compiler_flags " $wl$func_quote_arg_result"
+ func_append linker_flags " $func_quote_arg_result"
done
IFS=$save_ifs
func_stripname ' ' '' "$arg"
arg=$func_stripname_result
;;
+ -Xassembler)
+ prev=xassembler
+ continue
+ ;;
+
-Xcompiler)
prev=xcompiler
continue
@@ -7346,8 +7539,8 @@ func_mode_link ()
# -msg_* for osf cc
-msg_*)
- func_quote_for_eval "$arg"
- arg=$func_quote_for_eval_result
+ func_quote_arg pretty "$arg"
+ arg=$func_quote_arg_result
;;
# Flags to be passed through unchanged, with rationale:
@@ -7370,12 +7563,13 @@ func_mode_link ()
# -fuse-ld=* Linker select flags for GCC
# -static-* direct GCC to link specific libraries statically
# -fcilkplus Cilk Plus language extension features for C/C++
+ # -Wa,* Pass flags directly to the assembler
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
- -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus)
- func_quote_for_eval "$arg"
- arg=$func_quote_for_eval_result
+ -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus|-Wa,*)
+ func_quote_arg pretty "$arg"
+ arg=$func_quote_arg_result
func_append compile_command " $arg"
func_append finalize_command " $arg"
func_append compiler_flags " $arg"
@@ -7396,15 +7590,15 @@ func_mode_link ()
continue
else
# Otherwise treat like 'Some other compiler flag' below
- func_quote_for_eval "$arg"
- arg=$func_quote_for_eval_result
+ func_quote_arg pretty "$arg"
+ arg=$func_quote_arg_result
fi
;;
# Some other compiler flag.
-* | +*)
- func_quote_for_eval "$arg"
- arg=$func_quote_for_eval_result
+ func_quote_arg pretty "$arg"
+ arg=$func_quote_arg_result
;;
*.$objext)
@@ -7524,8 +7718,8 @@ func_mode_link ()
*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
- func_quote_for_eval "$arg"
- arg=$func_quote_for_eval_result
+ func_quote_arg pretty "$arg"
+ arg=$func_quote_arg_result
;;
esac # arg
@@ -8733,7 +8927,7 @@ func_mode_link ()
test CXX = "$tagname" && {
case $host_os in
linux*)
- case `$CC -V 2>&1 | sed 5q` in
+ case `$CC -V 2>&1 | $SED 5q` in
*Sun\ C*) # Sun C++ 5.9
func_suncc_cstd_abi
@@ -8906,7 +9100,7 @@ func_mode_link ()
#
case $version_type in
# correct linux to gnu/linux during the next big refactor
- darwin|freebsd-elf|linux|osf|windows|none)
+ darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)
func_arith $number_major + $number_minor
current=$func_arith_result
age=$number_minor
@@ -9000,7 +9194,7 @@ func_mode_link ()
versuffix=.$current.$revision
;;
- freebsd-elf)
+ freebsd-elf | midnightbsd-elf)
func_arith $current - $age
major=.$func_arith_result
versuffix=$major.$age.$revision
@@ -9226,7 +9420,7 @@ func_mode_link ()
*-*-netbsd*)
# Don't link with libc until the a.out ld.so is fixed.
;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*)
# Do not include libc due to us having libc/libc_r.
;;
*-*-sco3.2v5* | *-*-sco5v6*)
@@ -10037,8 +10231,8 @@ EOF
for cmd in $concat_cmds; do
IFS=$save_ifs
$opt_quiet || {
- func_quote_for_expand "$cmd"
- eval "func_echo $func_quote_for_expand_result"
+ func_quote_arg expand,pretty "$cmd"
+ eval "func_echo $func_quote_arg_result"
}
$opt_dry_run || eval "$cmd" || {
lt_exit=$?
@@ -10131,8 +10325,8 @@ EOF
eval cmd=\"$cmd\"
IFS=$save_ifs
$opt_quiet || {
- func_quote_for_expand "$cmd"
- eval "func_echo $func_quote_for_expand_result"
+ func_quote_arg expand,pretty "$cmd"
+ eval "func_echo $func_quote_arg_result"
}
$opt_dry_run || eval "$cmd" || {
lt_exit=$?
@@ -10606,12 +10800,13 @@ EOF
elif eval var_value=\$$var; test -z "$var_value"; then
relink_command="$var=; export $var; $relink_command"
else
- func_quote_for_eval "$var_value"
- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ func_quote_arg pretty "$var_value"
+ relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
fi
done
- relink_command="(cd `pwd`; $relink_command)"
- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ func_quote eval cd "`pwd`"
+ func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)"
+ relink_command=$func_quote_arg_unquoted_result
fi
# Only actually do things if not in dry run mode.
@@ -10851,13 +11046,15 @@ EOF
elif eval var_value=\$$var; test -z "$var_value"; then
relink_command="$var=; export $var; $relink_command"
else
- func_quote_for_eval "$var_value"
- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ func_quote_arg pretty,unquoted "$var_value"
+ relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
fi
done
# Quote the link command for shipping.
- relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ func_quote eval cd "`pwd`"
+ relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ func_quote_arg pretty,unquoted "$relink_command"
+ relink_command=$func_quote_arg_unquoted_result
if test yes = "$hardcode_automatic"; then
relink_command=
fi
diff --git a/m4/ax_compile_check_sizeof.m4 b/m4/ax_compile_check_sizeof.m4
deleted file mode 100644
index 5705508a3..000000000
--- a/m4/ax_compile_check_sizeof.m4
+++ /dev/null
@@ -1,115 +0,0 @@
-# ============================================================================
-# https://www.gnu.org/software/autoconf-archive/ax_compile_check_sizeof.html
-# ============================================================================
-#
-# SYNOPSIS
-#
-# AX_COMPILE_CHECK_SIZEOF(TYPE [, HEADERS [, EXTRA_SIZES...]])
-#
-# DESCRIPTION
-#
-# This macro checks for the size of TYPE using compile checks, not run
-# checks. You can supply extra HEADERS to look into. the check will cycle
-# through 1 2 4 8 16 and any EXTRA_SIZES the user supplies. If a match is
-# found, it will #define SIZEOF_`TYPE' to that value. Otherwise it will
-# emit a configure time error indicating the size of the type could not be
-# determined.
-#
-# The trick is that C will not allow duplicate case labels. While this is
-# valid C code:
-#
-# switch (0) case 0: case 1:;
-#
-# The following is not:
-#
-# switch (0) case 0: case 0:;
-#
-# Thus, the AC_TRY_COMPILE will fail if the currently tried size does not
-# match.
-#
-# Here is an example skeleton configure.in script, demonstrating the
-# macro's usage:
-#
-# AC_PROG_CC
-# AC_CHECK_HEADERS(stddef.h unistd.h)
-# AC_TYPE_SIZE_T
-# AC_CHECK_TYPE(ssize_t, int)
-#
-# headers='#ifdef HAVE_STDDEF_H
-# #include <stddef.h>
-# #endif
-# #ifdef HAVE_UNISTD_H
-# #include <unistd.h>
-# #endif
-# '
-#
-# AX_COMPILE_CHECK_SIZEOF(char)
-# AX_COMPILE_CHECK_SIZEOF(short)
-# AX_COMPILE_CHECK_SIZEOF(int)
-# AX_COMPILE_CHECK_SIZEOF(long)
-# AX_COMPILE_CHECK_SIZEOF(unsigned char *)
-# AX_COMPILE_CHECK_SIZEOF(void *)
-# AX_COMPILE_CHECK_SIZEOF(size_t, $headers)
-# AX_COMPILE_CHECK_SIZEOF(ssize_t, $headers)
-# AX_COMPILE_CHECK_SIZEOF(ptrdiff_t, $headers)
-# AX_COMPILE_CHECK_SIZEOF(off_t, $headers)
-#
-# LICENSE
-#
-# Copyright (c) 2008 Kaveh Ghazi <ghazi@caip.rutgers.edu>
-# Copyright (c) 2017 Reini Urban <rurban@cpan.org>
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation, either version 3 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-# Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-# As a special exception, the respective Autoconf Macro's copyright owner
-# gives unlimited permission to copy, distribute and modify the configure
-# scripts that are the output of Autoconf when processing the Macro. You
-# need not follow the terms of the GNU General Public License when using
-# or distributing such scripts, even though portions of the text of the
-# Macro appear in them. The GNU General Public License (GPL) does govern
-# all other use of the material that constitutes the Autoconf Macro.
-#
-# This special exception to the GPL applies to versions of the Autoconf
-# Macro released by the Autoconf Archive. When you make and distribute a
-# modified version of the Autoconf Macro, you may extend this special
-# exception to the GPL to apply to your modified version as well.
-
-#serial 7
-
-AU_ALIAS([AC_COMPILE_CHECK_SIZEOF], [AX_COMPILE_CHECK_SIZEOF])
-AC_DEFUN([AX_COMPILE_CHECK_SIZEOF],
-[changequote(<<, >>)dnl
-dnl The name to #define.
-define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
-dnl The cache variable name.
-define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
-changequote([, ])dnl
-AC_MSG_CHECKING(size of $1)
-AC_CACHE_VAL(AC_CV_NAME,
-[for ac_size in 4 8 1 2 16 $3 ; do # List sizes in rough order of prevalence.
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include <sys/types.h>
-$2
-]], [[switch (0) case 0: case (sizeof ($1) == $ac_size):;]])], [AC_CV_NAME=$ac_size])
- if test x$AC_CV_NAME != x ; then break; fi
-done
-])
-if test x$AC_CV_NAME = x ; then
- AC_MSG_ERROR([cannot determine a size for $1])
-fi
-AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1])
-undefine([AC_TYPE_NAME])dnl
-undefine([AC_CV_NAME])dnl
-])
diff --git a/m4/curl-amissl.m4 b/m4/curl-amissl.m4
index 60fe34fef..dfa626da9 100644
--- a/m4/curl-amissl.m4
+++ b/m4/curl-amissl.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,24 +18,51 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
AC_DEFUN([CURL_WITH_AMISSL], [
-AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)])
+AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL v5)])
if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
if test "x$OPT_AMISSL" != xno; then
ssl_msg=
- if test "x$OPT_AMISSL" != "xno"; then
- AC_MSG_RESULT(yes)
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <libraries/amisslmaster.h>
+ #include <openssl/opensslv.h>
+ ]],[[
+ #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \
+ defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
+ defined(PROTO_AMISSL_H)
+ return 0;
+ #else
+ #error not AmiSSL v5 / OpenSSL 3
+ #endif
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
ssl_msg="AmiSSL"
test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
AMISSL_ENABLED=1
- LIBS="-lamisslauto $LIBS"
+ OPENSSL_ENABLED=1
+ # Use AmiSSL's built-in ca bundle
+ check_for_ca_bundle=1
+ with_ca_fallback=yes
+ LIBS="-lamisslstubs -lamisslauto $LIBS"
AC_DEFINE(USE_AMISSL, 1, [if AmiSSL is in use])
AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use])
- else
- AC_MSG_RESULT(no)
- fi
+ AC_DEFINE_UNQUOTED(HAVE_OPENSSL3, 1, [Define to 1 if using OpenSSL 3 or later.])
+ AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
+ openssl/pem.h openssl/ssl.h openssl/err.h)
+ dnl OpenSSLv3 marks the DES functions deprecated but we have no
+ dnl replacements (yet) so tell the compiler to not warn for them
+ dnl
+ dnl Ask OpenSSL to suppress the warnings.
+ CPPFLAGS="$CPPFLAGS -DOPENSSL_SUPPRESS_DEPRECATED"
+ ],[
+ AC_MSG_RESULT([no])
+ ])
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
else
AC_MSG_RESULT(no)
diff --git a/m4/curl-bearssl.m4 b/m4/curl-bearssl.m4
index 86677e46a..317a9e955 100644
--- a/m4/curl-bearssl.m4
+++ b/m4/curl-bearssl.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
AC_DEFUN([CURL_WITH_BEARSSL], [
diff --git a/m4/curl-compilers.m4 b/m4/curl-compilers.m4
index 988abdb8a..e39d97801 100644
--- a/m4/curl-compilers.m4
+++ b/m4/curl-compilers.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
@@ -51,7 +53,6 @@ AC_DEFUN([CURL_CHECK_COMPILER], [
CURL_CHECK_COMPILER_SGI_MIPS_C
CURL_CHECK_COMPILER_SUNPRO_C
CURL_CHECK_COMPILER_TINY_C
- CURL_CHECK_COMPILER_WATCOM_C
#
if test "$compiler_id" = "unknown"; then
cat <<_EOF 1>&2
@@ -106,7 +107,7 @@ AC_DEFUN([CURL_CHECK_COMPILER_CLANG], [
compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`
flags_dbg_yes="-g"
flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4"
- flags_opt_yes="-Os"
+ flags_opt_yes="-O2"
flags_opt_off="-O0"
else
AC_MSG_RESULT([no])
@@ -360,36 +361,6 @@ AC_DEFUN([CURL_CHECK_COMPILER_TINY_C], [
fi
])
-
-dnl CURL_CHECK_COMPILER_WATCOM_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is Watcom C.
-
-AC_DEFUN([CURL_CHECK_COMPILER_WATCOM_C], [
- AC_MSG_CHECKING([if compiler is Watcom C])
- CURL_CHECK_DEF([__WATCOMC__], [], [silent])
- if test "$curl_cv_have_def___WATCOMC__" = "yes"; then
- AC_MSG_RESULT([yes])
- CURL_CHECK_DEF([__UNIX__], [], [silent])
- if test "$curl_cv_have_def___UNIX__" = "yes"; then
- compiler_id="WATCOM_UNIX_C"
- flags_dbg_yes="-g2"
- flags_opt_all="-O0 -O1 -O2 -O3"
- flags_opt_yes="-O2"
- flags_opt_off="-O0"
- else
- compiler_id="WATCOM_WINDOWS_C"
- flags_dbg_yes=""
- flags_opt_all=""
- flags_opt_yes=""
- flags_opt_off=""
- fi
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
dnl CURL_CONVERT_INCLUDE_TO_ISYSTEM
dnl -------------------------------------------------
dnl Changes standard include paths present in CFLAGS
@@ -596,12 +567,14 @@ 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
- tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-error 140,147,165,266"
dnl Disable some remarks
dnl #279: controlling expression is constant
dnl #981: operands are evaluated in unspecified order
+ dnl #1025: zero extending result of unary operation
dnl #1469: "cc" clobber ignored
- tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
+ dnl #2259: non-pointer conversion from X to Y may lose significant bits
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-disable 279,981,1025,1469,2259"
;;
#
INTEL_WINDOWS_C)
@@ -640,18 +613,6 @@ AC_DEFUN([CURL_SET_COMPILER_BASIC_OPTS], [
tmp_CFLAGS="$tmp_CFLAGS"
;;
#
- WATCOM_UNIX_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- WATCOM_WINDOWS_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
esac
#
squeeze tmp_CPPFLAGS
@@ -899,6 +860,7 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
GNU_C)
#
if test "$want_warnings" = "yes"; then
+ tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
#
dnl Do not enable -pedantic when cross-compiling with a gcc older
dnl than 3.0, to avoid warnings from third party system headers.
@@ -1042,6 +1004,12 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
fi
fi
#
+ dnl Only gcc 10 or later
+ if test "$compiler_num" -ge "1000"; then
+ CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [arith-conversion])
+ CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-conversion])
+ fi
+ #
fi
#
dnl Do not issue warnings for code in system include paths.
@@ -1062,10 +1030,6 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
fi
fi
fi
- dnl Only gcc 10 or later
- if test "$compiler_num" -ge "1000"; then
- CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-conversion])
- fi
;;
#
HP_UX_C)
@@ -1174,20 +1138,6 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
fi
;;
#
- WATCOM_UNIX_C)
- #
- if test "$want_warnings" = "yes"; then
- dnl Issue all warnings
- tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
- fi
- ;;
- #
- WATCOM_WINDOWS_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
esac
#
squeeze tmp_CPPFLAGS
diff --git a/m4/curl-confopts.m4 b/m4/curl-confopts.m4
index efe42495d..301e2d460 100644
--- a/m4/curl-confopts.m4
+++ b/m4/curl-confopts.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
@@ -419,10 +421,8 @@ dnl Check for how to set a socket into non-blocking state.
AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], [
AC_REQUIRE([CURL_CHECK_FUNC_FCNTL])dnl
- AC_REQUIRE([CURL_CHECK_FUNC_IOCTL])dnl
AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET])dnl
AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL])dnl
- AC_REQUIRE([CURL_CHECK_FUNC_SETSOCKOPT])dnl
#
tst_method="unknown"
@@ -458,8 +458,7 @@ AC_DEFUN([CURL_CONFIGURE_SYMBOL_HIDING], [
AC_MSG_CHECKING([whether hiding of library internal symbols will actually happen])
CFLAG_CURL_SYMBOL_HIDING=""
doing_symbol_hiding="no"
- if test x"$curl_cv_native_windows" != "xyes" &&
- test "$want_symbol_hiding" = "yes" &&
+ if test "$want_symbol_hiding" = "yes" &&
test "$supports_symbol_hiding" = "yes"; then
doing_symbol_hiding="yes"
CFLAG_CURL_SYMBOL_HIDING="$symbol_hiding_CFLAGS"
@@ -487,9 +486,7 @@ AC_DEFUN([CURL_CHECK_LIB_ARES], [
clean_CPPFLAGS="$CPPFLAGS"
clean_LDFLAGS="$LDFLAGS"
clean_LIBS="$LIBS"
- embedded_ares="unknown"
configure_runpath=`pwd`
- embedded_ares_builddir="$configure_runpath/ares"
if test -n "$want_ares_path"; then
dnl c-ares library path has been specified
ARES_PCDIR="$want_ares_path/lib/pkgconfig"
@@ -511,31 +508,19 @@ AC_DEFUN([CURL_CHECK_LIB_ARES], [
ares_LIBS="-lcares"
fi
else
- dnl c-ares library path has not been given
- if test -d "$srcdir/ares"; then
- dnl c-ares sources embedded in curl tree
- embedded_ares="yes"
- AC_CONFIG_SUBDIRS(ares)
- dnl c-ares has installable configured header files, path
- dnl inclusion fully done in makefiles for in-tree builds.
+ dnl c-ares path not specified, use defaults
+ CURL_CHECK_PKGCONFIG(libcares)
+ if test "$PKGCONFIG" != "no" ; then
+ ares_LIBS=`$PKGCONFIG --libs-only-l libcares`
+ ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares`
+ ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares`
+ AC_MSG_NOTICE([pkg-config: ares_LIBS: "$ares_LIBS"])
+ AC_MSG_NOTICE([pkg-config: ares_LDFLAGS: "$ares_LDFLAGS"])
+ AC_MSG_NOTICE([pkg-config: ares_CPPFLAGS: "$ares_CPPFLAGS"])
+ else
ares_CPPFLAGS=""
- ares_LDFLAGS="-L$embedded_ares_builddir"
+ ares_LDFLAGS=""
ares_LIBS="-lcares"
- else
- dnl c-ares path not specified, use defaults
- CURL_CHECK_PKGCONFIG(libcares)
- if test "$PKGCONFIG" != "no" ; then
- ares_LIBS=`$PKGCONFIG --libs-only-l libcares`
- ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares`
- ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares`
- AC_MSG_NOTICE([pkg-config: ares_LIBS: "$ares_LIBS"])
- AC_MSG_NOTICE([pkg-config: ares_LDFLAGS: "$ares_LDFLAGS"])
- AC_MSG_NOTICE([pkg-config: ares_CPPFLAGS: "$ares_CPPFLAGS"])
- else
- ares_CPPFLAGS=""
- ares_LDFLAGS=""
- ares_LIBS="-lcares"
- fi
fi
fi
#
@@ -543,38 +528,37 @@ AC_DEFUN([CURL_CHECK_LIB_ARES], [
LDFLAGS="$clean_LDFLAGS $ares_LDFLAGS"
LIBS="$ares_LIBS $clean_LIBS"
#
- if test "$embedded_ares" != "yes"; then
- dnl check if c-ares new enough when not using an embedded
- dnl source tree one which normally has not been built yet.
- AC_MSG_CHECKING([that c-ares is good and recent enough])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
+
+ dnl check if c-ares new enough
+ AC_MSG_CHECKING([that c-ares is good and recent enough])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
#include <ares.h>
- /* set of dummy functions in case c-ares was built with debug */
- void curl_dofree() { }
- void curl_sclose() { }
- void curl_domalloc() { }
- void curl_docalloc() { }
- void curl_socket() { }
- ]],[[
- ares_channel channel;
- ares_cancel(channel); /* added in 1.2.0 */
- ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
- ares_dup(&channel, channel); /* added in 1.6.0 */
- ]])
- ],[
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([c-ares library defective or too old])
- dnl restore initial settings
- CPPFLAGS="$clean_CPPFLAGS"
- LDFLAGS="$clean_LDFLAGS"
- LIBS="$clean_LIBS"
- # prevent usage
- want_ares="no"
- ])
- fi
+ /* set of dummy functions in case c-ares was built with debug */
+ void curl_dofree() { }
+ void curl_sclose() { }
+ void curl_domalloc() { }
+ void curl_docalloc() { }
+ void curl_socket() { }
+ ]],[[
+ ares_channel channel;
+ ares_cancel(channel); /* added in 1.2.0 */
+ ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
+ ares_dup(&channel, channel); /* added in 1.6.0 */
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([c-ares library defective or too old])
+ dnl restore initial settings
+ CPPFLAGS="$clean_CPPFLAGS"
+ LDFLAGS="$clean_LDFLAGS"
+ LIBS="$clean_LIBS"
+ # prevent usage
+ want_ares="no"
+ ])
+
if test "$want_ares" = "yes"; then
dnl finally c-ares will be used
AC_DEFINE(USE_ARES, 1, [Define to enable c-ares support])
diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4
index 1a5954871..49ab0b03f 100644
--- a/m4/curl-functions.m4
+++ b/m4/curl-functions.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
@@ -264,27 +266,6 @@ curl_includes_socket="\
])
-dnl CURL_INCLUDES_STDIO
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when stdio.h is to be included.
-
-AC_DEFUN([CURL_INCLUDES_STDIO], [
-curl_includes_stdio="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_STDIO_H
-# include <stdio.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h stdio.h,
- [], [], [$curl_includes_stdio])
-])
-
-
dnl CURL_INCLUDES_STDLIB
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
@@ -541,14 +522,24 @@ dnl included when bsdsocket.h is to be included.
AC_DEFUN([CURL_INCLUDES_BSDSOCKET], [
curl_includes_bsdsocket="\
/* includes start */
-#ifdef HAVE_PROTO_BSDSOCKET_H
+#if defined(HAVE_PROTO_BSDSOCKET_H)
+# define __NO_NET_API
+# define __USE_INLINE__
# include <proto/bsdsocket.h>
- struct Library *SocketBase = NULL;
+# ifdef HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+# endif
+# ifdef __amigaos4__
+struct SocketIFace *ISocket = NULL;
+# else
+struct Library *SocketBase = NULL;
+# endif
+# define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
#endif
/* includes end */"
AC_CHECK_HEADERS(
proto/bsdsocket.h,
- [], [], [ $curl_includes_bsdsocket])
+ [], [], [$curl_includes_bsdsocket])
])
dnl CURL_INCLUDES_NETIF
@@ -783,7 +774,6 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_socket
]],[[
if(0 != closesocket(0))
@@ -801,7 +791,6 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
AC_MSG_CHECKING([if closesocket is prototyped])
AC_EGREP_CPP([closesocket],[
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_socket
],[
AC_MSG_RESULT([yes])
@@ -817,7 +806,6 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_socket
]],[[
if(0 != closesocket(0))
@@ -869,6 +857,7 @@ dnl then HAVE_CLOSESOCKET_CAMEL will be defined.
AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
#
tst_links_closesocket_camel="unknown"
tst_proto_closesocket_camel="unknown"
@@ -878,6 +867,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
AC_MSG_CHECKING([if CloseSocket can be linked])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
]],[[
if(0 != CloseSocket(0))
@@ -894,6 +884,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
if test "$tst_links_closesocket_camel" = "yes"; then
AC_MSG_CHECKING([if CloseSocket is prototyped])
AC_EGREP_CPP([CloseSocket],[
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
],[
AC_MSG_RESULT([yes])
@@ -908,6 +899,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
AC_MSG_CHECKING([if CloseSocket is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
]],[[
if(0 != CloseSocket(0))
@@ -960,6 +952,7 @@ dnl HAVE_CONNECT will be defined.
AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
#
tst_links_connect="unknown"
@@ -1007,7 +1000,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
]],[[
@@ -1149,7 +1142,7 @@ AC_DEFUN([CURL_CHECK_FUNC_FCNTL_O_NONBLOCK], [
tst_allow_fcntl_o_nonblock="unknown"
#
case $host_os in
- sunos4* | aix3* | beos*)
+ sunos4* | aix3*)
dnl O_NONBLOCK does not work on these platforms
curl_disallow_fcntl_o_nonblock="yes"
;;
@@ -2190,7 +2183,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
+ $curl_includes_bsdsocket
$curl_includes_netdb
]],[[
if(0 != gethostbyname(0))
@@ -2279,6 +2272,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME_R], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_netdb
+ $curl_includes_bsdsocket
]],[[
if(0 != gethostbyname_r(0, 0, 0))
return 1;
@@ -2297,6 +2291,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME_R], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_netdb
+ $curl_includes_bsdsocket
]],[[
if(0 != gethostbyname_r(0, 0, 0, 0, 0))
return 1;
@@ -2315,6 +2310,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME_R], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_netdb
+ $curl_includes_bsdsocket
]],[[
if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0))
return 1;
@@ -2384,9 +2380,9 @@ dnl HAVE_GETHOSTNAME will be defined.
AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
- AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
#
tst_links_gethostname="unknown"
tst_proto_gethostname="unknown"
@@ -2397,8 +2393,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_unistd
+ $curl_includes_bsdsocket
]],[[
if(0 != gethostname(0, 0))
return 1;
@@ -2415,8 +2411,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_MSG_CHECKING([if gethostname is prototyped])
AC_EGREP_CPP([gethostname],[
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_unistd
+ $curl_includes_bsdsocket
],[
AC_MSG_RESULT([yes])
tst_proto_gethostname="yes"
@@ -2431,8 +2427,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_unistd
+ $curl_includes_bsdsocket
]],[[
if(0 != gethostname(0, 0))
return 1;
@@ -2455,8 +2451,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
$curl_includes_unistd
+ $curl_includes_bsdsocket
$curl_preprocess_callconv
extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
]],[[
@@ -3459,93 +3455,6 @@ AC_DEFUN([CURL_CHECK_FUNC_INET_PTON], [
])
-dnl CURL_CHECK_FUNC_IOCTL
-dnl -------------------------------------------------
-dnl Verify if ioctl is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_ioctl, then
-dnl HAVE_IOCTL will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_IOCTL], [
- AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
- #
- tst_links_ioctl="unknown"
- tst_proto_ioctl="unknown"
- tst_compi_ioctl="unknown"
- tst_allow_ioctl="unknown"
- #
- AC_MSG_CHECKING([if ioctl can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([ioctl])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_ioctl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_ioctl="no"
- ])
- #
- if test "$tst_links_ioctl" = "yes"; then
- AC_MSG_CHECKING([if ioctl is prototyped])
- AC_EGREP_CPP([ioctl],[
- $curl_includes_stropts
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_ioctl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_ioctl="no"
- ])
- fi
- #
- if test "$tst_proto_ioctl" = "yes"; then
- AC_MSG_CHECKING([if ioctl is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_stropts
- ]],[[
- if(0 != ioctl(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_ioctl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_ioctl="no"
- ])
- fi
- #
- if test "$tst_compi_ioctl" = "yes"; then
- AC_MSG_CHECKING([if ioctl usage allowed])
- if test "x$curl_disallow_ioctl" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_ioctl="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_ioctl="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if ioctl might be used])
- if test "$tst_links_ioctl" = "yes" &&
- test "$tst_proto_ioctl" = "yes" &&
- test "$tst_compi_ioctl" = "yes" &&
- test "$tst_allow_ioctl" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_IOCTL, 1,
- [Define to 1 if you have the ioctl function.])
- curl_cv_func_ioctl="yes"
- CURL_CHECK_FUNC_IOCTL_FIONBIO
- CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
- else
- AC_MSG_RESULT([no])
- curl_cv_func_ioctl="no"
- fi
-])
-
-
dnl CURL_CHECK_FUNC_IOCTL_FIONBIO
dnl -------------------------------------------------
dnl Verify if ioctl with the FIONBIO command is
@@ -3679,7 +3588,6 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
]],[[
if(0 != ioctlsocket(0, 0, 0))
return 1;
@@ -3696,7 +3604,6 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
AC_MSG_CHECKING([if ioctlsocket is prototyped])
AC_EGREP_CPP([ioctlsocket],[
$curl_includes_winsock2
- $curl_includes_bsdsocket
],[
AC_MSG_RESULT([yes])
tst_proto_ioctlsocket="yes"
@@ -3711,7 +3618,6 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
]],[[
if(0 != ioctlsocket(0, 0, 0))
return 1;
@@ -3770,7 +3676,6 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
]],[[
int flags = 0;
if(0 != ioctlsocket(0, FIONBIO, &flags))
@@ -3819,7 +3724,7 @@ dnl shell variable curl_disallow_ioctlsocket_camel,
dnl then HAVE_IOCTLSOCKET_CAMEL will be defined.
AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
- AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
#
tst_links_ioctlsocket_camel="unknown"
tst_proto_ioctlsocket_camel="unknown"
@@ -3828,7 +3733,11 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
#
AC_MSG_CHECKING([if IoctlSocket can be linked])
AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([IoctlSocket])
+ AC_LANG_PROGRAM([[
+ $curl_includes_bsdsocket
+ ]],[[
+ IoctlSocket(0, 0, 0);
+ ]])
],[
AC_MSG_RESULT([yes])
tst_links_ioctlsocket_camel="yes"
@@ -3840,7 +3749,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
if test "$tst_links_ioctlsocket_camel" = "yes"; then
AC_MSG_CHECKING([if IoctlSocket is prototyped])
AC_EGREP_CPP([IoctlSocket],[
- $curl_includes_stropts
+ $curl_includes_bsdsocket
],[
AC_MSG_RESULT([yes])
tst_proto_ioctlsocket_camel="yes"
@@ -3854,7 +3763,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
AC_MSG_CHECKING([if IoctlSocket is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
- $curl_includes_stropts
+ $curl_includes_bsdsocket
]],[[
if(0 != IoctlSocket(0, 0, 0))
return 1;
@@ -3903,6 +3812,7 @@ dnl can be compiled, and seems to work. If all of these are
dnl true, then HAVE_IOCTLSOCKET_CAMEL_FIONBIO will be defined.
AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
#
tst_compi_ioctlsocket_camel_fionbio="unknown"
tst_allow_ioctlsocket_camel_fionbio="unknown"
@@ -3911,7 +3821,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [
AC_MSG_CHECKING([if IoctlSocket FIONBIO is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
- $curl_includes_stropts
+ $curl_includes_bsdsocket
]],[[
long flags = 0;
if(0 != IoctlSocket(0, FIONBIO, &flags))
@@ -4073,122 +3983,6 @@ AC_DEFUN([CURL_CHECK_FUNC_LISTXATTR], [
])
-dnl CURL_CHECK_FUNC_LOCALTIME_R
-dnl -------------------------------------------------
-dnl Verify if localtime_r is available, prototyped, can
-dnl be compiled and seems to work. If all of these are
-dnl true, and usage has not been previously disallowed
-dnl with shell variable curl_disallow_localtime_r, then
-dnl HAVE_LOCALTIME_R will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_LOCALTIME_R], [
- AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
- AC_REQUIRE([CURL_INCLUDES_TIME])dnl
- #
- tst_links_localtime_r="unknown"
- tst_proto_localtime_r="unknown"
- tst_compi_localtime_r="unknown"
- tst_works_localtime_r="unknown"
- tst_allow_localtime_r="unknown"
- #
- AC_MSG_CHECKING([if localtime_r can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([localtime_r])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_localtime_r="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_localtime_r="no"
- ])
- #
- if test "$tst_links_localtime_r" = "yes"; then
- AC_MSG_CHECKING([if localtime_r is prototyped])
- AC_EGREP_CPP([localtime_r],[
- $curl_includes_time
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_localtime_r="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_localtime_r="no"
- ])
- fi
- #
- if test "$tst_proto_localtime_r" = "yes"; then
- AC_MSG_CHECKING([if localtime_r is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_time
- ]],[[
- if(0 != localtime_r(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_localtime_r="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_localtime_r="no"
- ])
- fi
- #
- dnl only do runtime verification when not cross-compiling
- if test "x$cross_compiling" != "xyes" &&
- test "$tst_compi_localtime_r" = "yes"; then
- AC_MSG_CHECKING([if localtime_r seems to work])
- CURL_RUN_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_stdlib
- $curl_includes_time
- ]],[[
- time_t clock = 1170352587;
- struct tm *tmp = 0;
- struct tm result;
- tmp = localtime_r(&clock, &result);
- if(tmp)
- exit(0);
- else
- exit(1);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_works_localtime_r="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_works_localtime_r="no"
- ])
- fi
- #
- if test "$tst_compi_localtime_r" = "yes" &&
- test "$tst_works_localtime_r" != "no"; then
- AC_MSG_CHECKING([if localtime_r usage allowed])
- if test "x$curl_disallow_localtime_r" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_localtime_r="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_localtime_r="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if localtime_r might be used])
- if test "$tst_links_localtime_r" = "yes" &&
- test "$tst_proto_localtime_r" = "yes" &&
- test "$tst_compi_localtime_r" = "yes" &&
- test "$tst_allow_localtime_r" = "yes" &&
- test "$tst_works_localtime_r" != "no"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_LOCALTIME_R, 1,
- [Define to 1 if you have a working localtime_r function.])
- curl_cv_func_localtime_r="yes"
- else
- AC_MSG_RESULT([no])
- curl_cv_func_localtime_r="no"
- fi
-])
-
-
dnl CURL_CHECK_FUNC_MEMRCHR
dnl -------------------------------------------------
dnl Verify if memrchr is available, prototyped, and
@@ -4297,10 +4091,7 @@ AC_DEFUN([CURL_CHECK_FUNC_MEMRCHR], [
dnl CURL_CHECK_FUNC_POLL
dnl -------------------------------------------------
dnl Verify if poll is available, prototyped, can
-dnl be compiled and seems to work. If all of these are
-dnl true, and usage has not been previously disallowed
-dnl with shell variable curl_disallow_poll, then
-dnl HAVE_POLL will be defined.
+dnl be compiled and seems to work.
AC_DEFUN([CURL_CHECK_FUNC_POLL], [
AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
@@ -4430,8 +4221,6 @@ AC_DEFUN([CURL_CHECK_FUNC_POLL], [
test "$tst_allow_poll" = "yes" &&
test "$tst_works_poll" != "no"; then
AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_POLL, 1,
- [Define to 1 if you have a working poll function.])
AC_DEFINE_UNQUOTED(HAVE_POLL_FINE, 1,
[If you have a fine poll])
curl_cv_func_poll="yes"
@@ -4564,104 +4353,6 @@ AC_DEFUN([CURL_CHECK_FUNC_REMOVEXATTR], [
])
-dnl CURL_CHECK_FUNC_SETSOCKOPT
-dnl -------------------------------------------------
-dnl Verify if setsockopt is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_setsockopt, then
-dnl HAVE_SETSOCKOPT will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT], [
- AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
- AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
- #
- tst_links_setsockopt="unknown"
- tst_proto_setsockopt="unknown"
- tst_compi_setsockopt="unknown"
- tst_allow_setsockopt="unknown"
- #
- AC_MSG_CHECKING([if setsockopt can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_winsock2
- $curl_includes_bsdsocket
- $curl_includes_sys_socket
- ]],[[
- if(0 != setsockopt(0, 0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_setsockopt="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_setsockopt="no"
- ])
- #
- if test "$tst_links_setsockopt" = "yes"; then
- AC_MSG_CHECKING([if setsockopt is prototyped])
- AC_EGREP_CPP([setsockopt],[
- $curl_includes_winsock2
- $curl_includes_bsdsocket
- $curl_includes_sys_socket
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_setsockopt="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_setsockopt="no"
- ])
- fi
- #
- if test "$tst_proto_setsockopt" = "yes"; then
- AC_MSG_CHECKING([if setsockopt is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_winsock2
- $curl_includes_bsdsocket
- $curl_includes_sys_socket
- ]],[[
- if(0 != setsockopt(0, 0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_setsockopt="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_setsockopt="no"
- ])
- fi
- #
- if test "$tst_compi_setsockopt" = "yes"; then
- AC_MSG_CHECKING([if setsockopt usage allowed])
- if test "x$curl_disallow_setsockopt" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_setsockopt="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_setsockopt="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if setsockopt might be used])
- if test "$tst_links_setsockopt" = "yes" &&
- test "$tst_proto_setsockopt" = "yes" &&
- test "$tst_compi_setsockopt" = "yes" &&
- test "$tst_allow_setsockopt" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_SETSOCKOPT, 1,
- [Define to 1 if you have the setsockopt function.])
- curl_cv_func_setsockopt="yes"
- CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
- else
- AC_MSG_RESULT([no])
- curl_cv_func_setsockopt="no"
- fi
-])
-
-
dnl CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
dnl -------------------------------------------------
dnl Verify if setsockopt with the SO_NONBLOCK command is
@@ -4679,7 +4370,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
]],[[
if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
@@ -5261,7 +4952,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SOCKET], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- $curl_includes_bsdsocket
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
]],[[
@@ -5652,8 +5343,8 @@ dnl -------------------------------------------------
dnl Verify if strerror_r is available, prototyped, can be compiled and
dnl seems to work. If all of these are true, and usage has not been
dnl previously disallowed with shell variable curl_disallow_strerror_r,
-dnl then HAVE_STRERROR_R and STRERROR_R_TYPE_ARG3 will be defined, as
-dnl well as one of HAVE_GLIBC_STRERROR_R or HAVE_POSIX_STRERROR_R.
+dnl then HAVE_STRERROR_R will be defined, as well as one of
+dnl HAVE_GLIBC_STRERROR_R or HAVE_POSIX_STRERROR_R.
dnl
dnl glibc-style strerror_r:
dnl
@@ -5887,16 +5578,12 @@ AC_DEFUN([CURL_CHECK_FUNC_STRERROR_R], [
[Define to 1 if you have the strerror_r function.])
AC_DEFINE_UNQUOTED(HAVE_GLIBC_STRERROR_R, 1,
[Define to 1 if you have a working glibc-style strerror_r function.])
- AC_DEFINE_UNQUOTED(STRERROR_R_TYPE_ARG3, $tst_glibc_strerror_r_type_arg3,
- [Define to the type of arg 3 for strerror_r.])
fi
if test "$tst_posix_strerror_r" = "yes"; then
AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
[Define to 1 if you have the strerror_r function.])
AC_DEFINE_UNQUOTED(HAVE_POSIX_STRERROR_R, 1,
[Define to 1 if you have a working POSIX-style strerror_r function.])
- AC_DEFINE_UNQUOTED(STRERROR_R_TYPE_ARG3, $tst_posix_strerror_r_type_arg3,
- [Define to the type of arg 3 for strerror_r.])
fi
curl_cv_func_strerror_r="yes"
else
@@ -5997,261 +5684,6 @@ AC_DEFUN([CURL_CHECK_FUNC_STRICMP], [
])
-dnl CURL_CHECK_FUNC_STRNCMPI
-dnl -------------------------------------------------
-dnl Verify if strncmpi is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_strncmpi, then
-dnl HAVE_STRNCMPI will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_STRNCMPI], [
- AC_REQUIRE([CURL_INCLUDES_STRING])dnl
- #
- tst_links_strncmpi="unknown"
- tst_proto_strncmpi="unknown"
- tst_compi_strncmpi="unknown"
- tst_allow_strncmpi="unknown"
- #
- AC_MSG_CHECKING([if strncmpi can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strncmpi])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strncmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strncmpi="no"
- ])
- #
- if test "$tst_links_strncmpi" = "yes"; then
- AC_MSG_CHECKING([if strncmpi is prototyped])
- AC_EGREP_CPP([strncmpi],[
- $curl_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strncmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strncmpi="no"
- ])
- fi
- #
- if test "$tst_proto_strncmpi" = "yes"; then
- AC_MSG_CHECKING([if strncmpi is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_string
- ]],[[
- if(0 != strncmpi(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strncmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strncmpi="no"
- ])
- fi
- #
- if test "$tst_compi_strncmpi" = "yes"; then
- AC_MSG_CHECKING([if strncmpi usage allowed])
- if test "x$curl_disallow_strncmpi" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strncmpi="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strncmpi="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strncmpi might be used])
- if test "$tst_links_strncmpi" = "yes" &&
- test "$tst_proto_strncmpi" = "yes" &&
- test "$tst_compi_strncmpi" = "yes" &&
- test "$tst_allow_strncmpi" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRNCMPI, 1,
- [Define to 1 if you have the strncmpi function.])
- curl_cv_func_strncmpi="yes"
- else
- AC_MSG_RESULT([no])
- curl_cv_func_strncmpi="no"
- fi
-])
-
-
-dnl CURL_CHECK_FUNC_STRNICMP
-dnl -------------------------------------------------
-dnl Verify if strnicmp is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_strnicmp, then
-dnl HAVE_STRNICMP will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_STRNICMP], [
- AC_REQUIRE([CURL_INCLUDES_STRING])dnl
- #
- tst_links_strnicmp="unknown"
- tst_proto_strnicmp="unknown"
- tst_compi_strnicmp="unknown"
- tst_allow_strnicmp="unknown"
- #
- AC_MSG_CHECKING([if strnicmp can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strnicmp])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strnicmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strnicmp="no"
- ])
- #
- if test "$tst_links_strnicmp" = "yes"; then
- AC_MSG_CHECKING([if strnicmp is prototyped])
- AC_EGREP_CPP([strnicmp],[
- $curl_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strnicmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strnicmp="no"
- ])
- fi
- #
- if test "$tst_proto_strnicmp" = "yes"; then
- AC_MSG_CHECKING([if strnicmp is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_string
- ]],[[
- if(0 != strnicmp(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strnicmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strnicmp="no"
- ])
- fi
- #
- if test "$tst_compi_strnicmp" = "yes"; then
- AC_MSG_CHECKING([if strnicmp usage allowed])
- if test "x$curl_disallow_strnicmp" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strnicmp="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strnicmp="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strnicmp might be used])
- if test "$tst_links_strnicmp" = "yes" &&
- test "$tst_proto_strnicmp" = "yes" &&
- test "$tst_compi_strnicmp" = "yes" &&
- test "$tst_allow_strnicmp" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRNICMP, 1,
- [Define to 1 if you have the strnicmp function.])
- curl_cv_func_strnicmp="yes"
- else
- AC_MSG_RESULT([no])
- curl_cv_func_strnicmp="no"
- fi
-])
-
-
-dnl CURL_CHECK_FUNC_STRSTR
-dnl -------------------------------------------------
-dnl Verify if strstr is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_strstr, then
-dnl HAVE_STRSTR will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_STRSTR], [
- AC_REQUIRE([CURL_INCLUDES_STRING])dnl
- #
- tst_links_strstr="unknown"
- tst_proto_strstr="unknown"
- tst_compi_strstr="unknown"
- tst_allow_strstr="unknown"
- #
- AC_MSG_CHECKING([if strstr can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strstr])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strstr="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strstr="no"
- ])
- #
- if test "$tst_links_strstr" = "yes"; then
- AC_MSG_CHECKING([if strstr is prototyped])
- AC_EGREP_CPP([strstr],[
- $curl_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strstr="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strstr="no"
- ])
- fi
- #
- if test "$tst_proto_strstr" = "yes"; then
- AC_MSG_CHECKING([if strstr is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_string
- ]],[[
- if(0 != strstr(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strstr="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strstr="no"
- ])
- fi
- #
- if test "$tst_compi_strstr" = "yes"; then
- AC_MSG_CHECKING([if strstr usage allowed])
- if test "x$curl_disallow_strstr" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strstr="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strstr="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strstr might be used])
- if test "$tst_links_strstr" = "yes" &&
- test "$tst_proto_strstr" = "yes" &&
- test "$tst_compi_strstr" = "yes" &&
- test "$tst_allow_strstr" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRSTR, 1,
- [Define to 1 if you have the strstr function.])
- curl_cv_func_strstr="yes"
- else
- AC_MSG_RESULT([no])
- curl_cv_func_strstr="no"
- fi
-])
-
-
dnl CURL_CHECK_FUNC_STRTOK_R
dnl -------------------------------------------------
dnl Verify if strtok_r is available, prototyped, and
@@ -6421,91 +5853,6 @@ AC_DEFUN([CURL_CHECK_FUNC_STRTOLL], [
fi
])
-
-dnl CURL_CHECK_FUNC_WRITEV
-dnl -------------------------------------------------
-dnl Verify if writev is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_writev, then
-dnl HAVE_WRITEV will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_WRITEV], [
- AC_REQUIRE([CURL_INCLUDES_SYS_UIO])dnl
- #
- tst_links_writev="unknown"
- tst_proto_writev="unknown"
- tst_compi_writev="unknown"
- tst_allow_writev="unknown"
- #
- AC_MSG_CHECKING([if writev can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([writev])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_writev="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_writev="no"
- ])
- #
- if test "$tst_links_writev" = "yes"; then
- AC_MSG_CHECKING([if writev is prototyped])
- AC_EGREP_CPP([writev],[
- $curl_includes_sys_uio
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_writev="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_writev="no"
- ])
- fi
- #
- if test "$tst_proto_writev" = "yes"; then
- AC_MSG_CHECKING([if writev is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_sys_uio
- ]],[[
- if(0 != writev(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_writev="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_writev="no"
- ])
- fi
- #
- if test "$tst_compi_writev" = "yes"; then
- AC_MSG_CHECKING([if writev usage allowed])
- if test "x$curl_disallow_writev" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_writev="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_writev="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if writev might be used])
- if test "$tst_links_writev" = "yes" &&
- test "$tst_proto_writev" = "yes" &&
- test "$tst_compi_writev" = "yes" &&
- test "$tst_allow_writev" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_WRITEV, 1,
- [Define to 1 if you have the writev function.])
- curl_cv_func_writev="yes"
- else
- AC_MSG_RESULT([no])
- curl_cv_func_writev="no"
- fi
-])
-
dnl CURL_RUN_IFELSE
dnl -------------------------------------------------
dnl Wrapper macro to use instead of AC_RUN_IFELSE. It
@@ -6515,16 +5862,17 @@ dnl changes contained within this macro.
AC_DEFUN([CURL_RUN_IFELSE], [
case $host_os in
- darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
- *) library_path_var=LD_LIBRARY_PATH ;;
+ darwin*)
+ AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
+ ;;
+ *)
+ old=$LD_LIBRARY_PATH
+ LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+ export LD_LIBRARY_PATH
+ AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
+ LD_LIBRARY_PATH=$old # restore
+ ;;
esac
-
- eval "old=$$library_path_var"
- eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
- eval "export $library_path_var"
- AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
- eval "$library_path_var=\$old" # restore
])
dnl CURL_COVERAGE
@@ -6561,7 +5909,92 @@ AC_DEFUN([CURL_COVERAGE],[
fi
CPPFLAGS="$CPPFLAGS -DNDEBUG"
- CFLAGS="$CLAGS -O0 -g -fprofile-arcs -ftest-coverage"
+ CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage"
LIBS="$LIBS -lgcov"
fi
])
+
+dnl CURL_ATOMIC
+dnl -------------------------------------------------------------
+dnl Check if _Atomic works. But only check if stdatomic.h exists.
+dnl
+AC_DEFUN([CURL_ATOMIC],[
+ AC_CHECK_HEADERS(stdatomic.h, [
+ AC_MSG_CHECKING([if _Atomic is available])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ $curl_includes_unistd
+ ]],[[
+ _Atomic int i = 0;
+ i = 4; // Force an atomic-write operation.
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
+ [Define to 1 if you have _Atomic support.])
+ tst_atomic="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ tst_atomic="no"
+ ])
+ ])
+])
+
+# Rewrite inspired by the functionality once provided by
+# AX_COMPILE_CHECK_SIZEOF. Uses the switch() "trick" to find the size of the
+# given type.
+#
+# This code fails to compile:
+#
+# switch() { case 0: case 0: }
+#
+# By making the second case number a boolean check, it fails to compile the
+# test code when the boolean is false and thus creating a zero, making it a
+# duplicated case label. If the boolean equals true, it becomes a one, the
+# code compiles and we know it was a match.
+#
+# The check iterates over all possible sizes and stops as soon it compiles
+# error-free.
+#
+# Usage:
+#
+# CURL_SIZEOF(TYPE, [HEADERS])
+#
+
+AC_DEFUN([CURL_SIZEOF], [
+ dnl The #define name to make autoheader put the name in curl_config.h.in
+ define(TYPE, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
+
+ AC_MSG_CHECKING(size of $1)
+ r=0
+ dnl Check the sizes in a reasonable order
+ for typesize in 8 4 2 16 1; do
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+$2
+]],
+ [switch(0) {
+ case 0:
+ case (sizeof($1) == $typesize):;
+ }
+ ]) ],
+ [
+ r=$typesize],
+ [
+ r=0])
+ dnl get out of the loop once matched
+ if test $r -gt 0; then
+ break;
+ fi
+ done
+ if test $r -eq 0; then
+ AC_MSG_ERROR([Failed to find size of $1])
+ fi
+ AC_MSG_RESULT($r)
+ dnl lowercase and underscore instead of space
+ tname=$(echo "ac_cv_sizeof_$1" | tr A-Z a-z | tr " " "_")
+ eval "$tname=$r"
+
+ AC_DEFINE_UNQUOTED(TYPE, [$r], [Size of $1 in number of bytes])
+
+])
diff --git a/m4/curl-gnutls.m4 b/m4/curl-gnutls.m4
index f0b80abe8..d6f4a9708 100644
--- a/m4/curl-gnutls.m4
+++ b/m4/curl-gnutls.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
dnl ----------------------------------------------------
@@ -37,7 +39,7 @@ if test "x$OPT_GNUTLS" != xno; then
addcflags=""
if test "x$OPT_GNUTLS" = "xyes"; then
- dnl this is with no partiular path given
+ dnl this is with no particular path given
CURL_CHECK_PKGCONFIG(gnutls)
if test "$PKGCONFIG" != "no" ; then
diff --git a/m4/curl-mbedtls.m4 b/m4/curl-mbedtls.m4
index 4c91cba36..022d14ea2 100644
--- a/m4/curl-mbedtls.m4
+++ b/m4/curl-mbedtls.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
dnl ----------------------------------------------------
diff --git a/m4/curl-mesalink.m4 b/m4/curl-mesalink.m4
deleted file mode 100644
index 0f588a985..000000000
--- a/m4/curl-mesalink.m4
+++ /dev/null
@@ -1,107 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-#***************************************************************************
-
-AC_DEFUN([CURL_WITH_MESALINK], [
-dnl ----------------------------------------------------
-dnl check for MesaLink
-dnl ----------------------------------------------------
-
-if test "x$OPT_MESALINK" != xno; then
- _cppflags=$CPPFLAGS
- _ldflags=$LDFLAGS
- ssl_msg=
-
- if test X"$OPT_MESALINK" != Xno; then
-
- if test "$OPT_MESALINK" = "yes"; then
- OPT_MESALINK=""
- fi
-
- if test -z "$OPT_MESALINK" ; then
- dnl check for lib first without setting any new path
-
- AC_CHECK_LIB(mesalink, mesalink_library_init,
- dnl libmesalink found, set the variable
- [
- AC_DEFINE(USE_MESALINK, 1, [if MesaLink is enabled])
- AC_SUBST(USE_MESALINK, [1])
- MESALINK_ENABLED=1
- USE_MESALINK="yes"
- ssl_msg="MesaLink"
- test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
- ])
- fi
-
- addld=""
- addlib=""
- addcflags=""
- mesalinklib=""
-
- if test "x$USE_MESALINK" != "xyes"; then
- dnl add the path and test again
- addld=-L$OPT_MESALINK/lib$libsuff
- addcflags=-I$OPT_MESALINK/include
- mesalinklib=$OPT_MESALINK/lib$libsuff
-
- LDFLAGS="$LDFLAGS $addld"
- if test "$addcflags" != "-I/usr/include"; then
- CPPFLAGS="$CPPFLAGS $addcflags"
- fi
-
- AC_CHECK_LIB(mesalink, mesalink_library_init,
- [
- AC_DEFINE(USE_MESALINK, 1, [if MesaLink is enabled])
- AC_SUBST(USE_MESALINK, [1])
- MESALINK_ENABLED=1
- USE_MESALINK="yes"
- ssl_msg="MesaLink"
- test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
- ],
- [
- CPPFLAGS=$_cppflags
- LDFLAGS=$_ldflags
- ])
- fi
-
- if test "x$USE_MESALINK" = "xyes"; then
- AC_MSG_NOTICE([detected MesaLink])
-
- LIBS="-lmesalink $LIBS"
-
- if test -n "$mesalinklib"; then
- 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 LD_LIBRARY_PATH to prevent further configure tests to fail
- dnl due to this
- if test "x$cross_compiling" != "xyes"; then
- LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mesalinklib"
- export LD_LIBRARY_PATH
- AC_MSG_NOTICE([Added $mesalinklib to LD_LIBRARY_PATH])
- fi
- fi
- fi
-
- fi dnl MesaLink not disabled
-
- test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
-fi
-])
diff --git a/m4/curl-nss.m4 b/m4/curl-nss.m4
index 397ba71b1..cb162755d 100644
--- a/m4/curl-nss.m4
+++ b/m4/curl-nss.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
AC_DEFUN([CURL_WITH_NSS], [
diff --git a/m4/curl-openssl.m4 b/m4/curl-openssl.m4
index ee23c9d6f..bdcbfde17 100644
--- a/m4/curl-openssl.m4
+++ b/m4/curl-openssl.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,289 +18,13 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
# serial 5
-
-dnl CURL_CHECK_OPENSSL_API_HEADERS
-dnl -------------------------------------------------
-dnl Find out OpenSSL headers API version, as reported
-dnl by OPENSSL_VERSION_NUMBER. No runtime checks
-dnl allowed here for cross-compilation support.
-dnl HAVE_OPENSSL_API_HEADERS is defined as appropriate
-dnl only for systems which actually run the configure
-dnl script. Config files generated manually or in any
-dnl other way shall not define this.
-
-AC_DEFUN([CURL_CHECK_OPENSSL_API_HEADERS], [
- #
- tst_api="unknown"
- #
- AC_MSG_CHECKING([for OpenSSL headers version])
- CURL_CHECK_DEF([OPENSSL_VERSION_NUMBER], [
-# ifdef USE_OPENSSL
-# include <openssl/crypto.h>
-# else
-# include <crypto.h>
-# endif
- ], [silent])
- CURL_CHECK_DEF([OPENSSL_VERSION_STR], [
-# include <openssl/crypto.h>
- ], [silent])
- if test "$curl_cv_have_def_OPENSSL_VERSION_NUMBER" = "yes"; then
- tst_verlen=`expr "$curl_cv_def_OPENSSL_VERSION_NUMBER" : '.*'`
- case "x$tst_verlen" in
- x6)
- tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
- tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 4`
- tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
- tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
- ;;
- x11|x10)
- tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
- tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
- tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 7`
- tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
- ;;
- *)
- if test "$curl_cv_have_def_OPENSSL_VERSION_STR" = "yes"; then
- ver=`echo $curl_cv_def_OPENSSL_VERSION_STR | sed 's/"//g'`;
- tst_vermaj=`echo $ver | cut -d. -f1`
- tst_vermin=`echo $ver | cut -d. -f2`
- tst_verfix=`echo $ver | cut -d. -f3`
- tst_show="$ver"
- tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
- else
- tst_api="unknown"
- fi
- ;;
- esac
- case $tst_api in
- 0x111) tst_show="1.1.1" ;;
- 0x110) tst_show="1.1.0" ;;
- 0x102) tst_show="1.0.2" ;;
- 0x101) tst_show="1.0.1" ;;
- 0x100) tst_show="1.0.0" ;;
- 0x099) tst_show="0.9.9" ;;
- 0x098) tst_show="0.9.8" ;;
- 0x097) tst_show="0.9.7" ;;
- 0x096) tst_show="0.9.6" ;;
- 0x095) tst_show="0.9.5" ;;
- 0x094) tst_show="0.9.4" ;;
- 0x093) tst_show="0.9.3" ;;
- 0x092) tst_show="0.9.2" ;;
- 0x091) tst_show="0.9.1" ;;
- *)
- if test -z "$tst_show"; then
- tst_show="unknown"
- fi
- ;;
- esac
- tst_show="$tst_show - $tst_api"
- else
- tst_show="unknown"
- fi
- AC_MSG_RESULT([$tst_show])
- #
-dnl if test "$tst_api" != "unknown"; then
-dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_HEADERS, $tst_api,
-dnl [OpenSSL headers configure time API. Defined only by configure script.
-dnl No matter what, do not ever define this manually or by any other means.])
-dnl fi
- curl_openssl_api_headers=$tst_api
-])
-
-
-dnl CURL_CHECK_OPENSSL_API_LIBRARY
-dnl -------------------------------------------------
-dnl Find out OpenSSL library API version, performing
-dnl only link tests in order to avoid getting fooled
-dnl by mismatched OpenSSL headers. No runtime checks
-dnl allowed here for cross-compilation support.
-dnl HAVE_OPENSSL_API_LIBRARY is defined as appropriate
-dnl only for systems which actually run the configure
-dnl script. Config files generated manually or in any
-dnl other way shall not define this.
-dnl
-dnl Most probably we should not bother attempting to
-dnl detect OpenSSL library development API versions
-dnl 0.9.9 and 1.1.0. For our intended use, detecting
-dnl released versions should be good enough.
-dnl
-dnl Given that currently we are not using the result
-dnl of this check, except for informative purposes,
-dnl lets try to figure out everything.
-
-AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [
- #
- tst_api="unknown"
- #
- AC_MSG_CHECKING([for OpenSSL library version])
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_CTX_load_verify_dir])
- ],[
- tst_api="0x300"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([ERR_clear_last_mark])
- ],[
- tst_api="0x111"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- case $host in
- *-*-vms*)
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumbl_sess_cb])
- ],[
- tst_api="0x110"
- ])
- ;;
- *)
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumable_session_callback])
- ],[
- tst_api="0x110"
- ])
- ;;
- esac
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_CONF_CTX_new])
- ],[
- tst_api="0x102"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_renegotiate_abbreviated])
- ],[
- tst_api="0x101"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([OBJ_add_sigid])
- ],[
- tst_api="0x100"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([ERR_set_mark])
- ],[
- tst_api="0x098"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([ERR_peek_last_error])
- ],[
- tst_api="0x097"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([c2i_ASN1_OBJECT])
- ],[
- tst_api="0x096"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_purpose])
- ],[
- tst_api="0x095"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([OBJ_obj2txt])
- ],[
- tst_api="0x094"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_get_verify_depth])
- ],[
- tst_api="0x093"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_library_init])
- ],[
- tst_api="0x092"
- ])
- fi
- if test "$tst_api" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_cipher_list])
- ],[
- tst_api="0x091"
- ])
- fi
- case $tst_api in
- 0x300) tst_show="3.0.0" ;;
- 0x111) tst_show="1.1.1" ;;
- 0x110) tst_show="1.1.0" ;;
- 0x102) tst_show="1.0.2" ;;
- 0x101) tst_show="1.0.1" ;;
- 0x100) tst_show="1.0.0" ;;
- 0x099) tst_show="0.9.9" ;;
- 0x098) tst_show="0.9.8" ;;
- 0x097) tst_show="0.9.7" ;;
- 0x096) tst_show="0.9.6" ;;
- 0x095) tst_show="0.9.5" ;;
- 0x094) tst_show="0.9.4" ;;
- 0x093) tst_show="0.9.3" ;;
- 0x092) tst_show="0.9.2" ;;
- 0x091) tst_show="0.9.1" ;;
- *) tst_show="unknown" ;;
- esac
- AC_MSG_RESULT([$tst_show])
- #
-dnl if test "$tst_api" != "unknown"; then
-dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_LIBRARY, $tst_api,
-dnl [OpenSSL library link time API. Defined only by configure script.
-dnl No matter what, do not ever define this manually or by any other means.])
-dnl fi
- curl_openssl_api_library=$tst_api
-])
-
-
-dnl CURL_CHECK_OPENSSL_API
-dnl -------------------------------------------------
-
-AC_DEFUN([CURL_CHECK_OPENSSL_API], [
- #
- CURL_CHECK_OPENSSL_API_HEADERS
- CURL_CHECK_OPENSSL_API_LIBRARY
- #
- tst_match="yes"
- #
- AC_MSG_CHECKING([for OpenSSL headers and library versions matching])
- if test "$curl_openssl_api_headers" = "unknown" ||
- test "$curl_openssl_api_library" = "unknown"; then
- tst_match="fail"
- tst_warns="Can not compare OpenSSL headers and library versions."
- elif test "$curl_openssl_api_headers" != "$curl_openssl_api_library"; then
- tst_match="no"
- tst_warns="OpenSSL headers and library versions do not match."
- fi
- AC_MSG_RESULT([$tst_match])
- if test "$tst_match" != "yes"; then
- AC_MSG_WARN([$tst_warns])
- fi
-])
-
dnl **********************************************************************
dnl Check for OpenSSL libraries and headers
dnl **********************************************************************
@@ -609,7 +333,6 @@ if test "x$OPT_OPENSSL" != xno; then
AC_MSG_NOTICE([Added $LIB_OPENSSL to CURL_LIBRARY_PATH])
fi
fi
- CURL_CHECK_OPENSSL_API
check_for_ca_bundle=1
fi
@@ -663,11 +386,21 @@ dnl ---
dnl We require OpenSSL with SRP support.
dnl ---
if test "$OPENSSL_ENABLED" = "1"; then
- AC_CHECK_LIB(crypto, SRP_Calc_client_key,
- [
- AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the function SRP_Calc_client_key])
- AC_SUBST(HAVE_OPENSSL_SRP, [1])
- ])
+ AC_MSG_CHECKING([for SRP support in OpenSSL])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#include <openssl/ssl.h>
+ ]],[[
+ SSL_CTX_set_srp_username(NULL, "");
+ SSL_CTX_set_srp_password(NULL, "");
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the functions SSL_CTX_set_srp_username and SSL_CTX_set_srp_password])
+ AC_SUBST(HAVE_OPENSSL_SRP, [1])
+ ],[
+ AC_MSG_RESULT([no])
+ ])
fi
dnl ---
diff --git a/m4/curl-override.m4 b/m4/curl-override.m4
index 72fc393a8..fb84f67cc 100644
--- a/m4/curl-override.m4
+++ b/m4/curl-override.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#***************************************************************************
#***************************************************************************
diff --git a/m4/curl-reentrant.m4 b/m4/curl-reentrant.m4
index 92ef00252..1992c5ecd 100644
--- a/m4/curl-reentrant.m4
+++ b/m4/curl-reentrant.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
diff --git a/m4/curl-rustls.m4 b/m4/curl-rustls.m4
index 4fe7f8e85..6fd8235aa 100644
--- a/m4/curl-rustls.m4
+++ b/m4/curl-rustls.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
AC_DEFUN([CURL_WITH_RUSTLS], [
diff --git a/m4/curl-schannel.m4 b/m4/curl-schannel.m4
index 7ffe8ddba..49c387791 100644
--- a/m4/curl-schannel.m4
+++ b/m4/curl-schannel.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
AC_DEFUN([CURL_WITH_SCHANNEL], [
diff --git a/m4/curl-sectransp.m4 b/m4/curl-sectransp.m4
index 658df958f..0c43b13a2 100644
--- a/m4/curl-sectransp.m4
+++ b/m4/curl-sectransp.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
AC_DEFUN([CURL_WITH_SECURETRANSPORT], [
diff --git a/m4/curl-sysconfig.m4 b/m4/curl-sysconfig.m4
index 0af96ba93..c6cd2f88e 100644
--- a/m4/curl-sysconfig.m4
+++ b/m4/curl-sysconfig.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
AC_DEFUN([CURL_DARWIN_SYSTEMCONFIGURATION], [
diff --git a/m4/curl-wolfssl.m4 b/m4/curl-wolfssl.m4
index b3e4b9511..d66c97935 100644
--- a/m4/curl-wolfssl.m4
+++ b/m4/curl-wolfssl.m4
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
AC_DEFUN([CURL_WITH_WOLFSSL], [
@@ -93,6 +95,7 @@ if test "x$OPT_WOLFSSL" != xno; then
They are set up properly later if it is detected. */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
+#include <wolfssl/options.h>
#include <wolfssl/ssl.h>
]],[[
return wolfSSL_Init();
@@ -120,7 +123,7 @@ if test "x$OPT_WOLFSSL" != xno; then
check_for_ca_bundle=1
dnl wolfssl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
- AX_COMPILE_CHECK_SIZEOF(long long)
+ CURL_SIZEOF(long long)
LIBS="$addlib -lm $LIBS"
@@ -136,19 +139,6 @@ if test "x$OPT_WOLFSSL" != xno; then
[
AC_DEFINE(HAVE_WOLFSSL_DES_ECB_ENCRYPT, 1,
[if you have wolfSSL_DES_ecb_encrypt])
- if test -n "$addcflags"; then
- dnl use a for loop to strip off whitespace
- for f in $addcflags; do
- CPPFLAGS="$f/wolfssl $CPPFLAGS"
- AC_MSG_NOTICE([Add $f/wolfssl to CPPFLAGS])
- break
- done
- else
- dnl user didn't give a path, so guess/hope they installed wolfssl
- dnl headers to system default location
- CPPFLAGS="-I/usr/include/wolfssl $CPPFLAGS"
- AC_MSG_NOTICE([Add /usr/include/wolfssl to CPPFLAGS])
- fi
WOLFSSL_NTLM=1
]
)
@@ -164,7 +154,8 @@ if test "x$OPT_WOLFSSL" != xno; then
AC_MSG_NOTICE([Added $wolfssllibpath to CURL_LIBRARY_PATH])
fi
fi
-
+ else
+ AC_MSG_ERROR([--with-wolfssl but wolfSSL was not found or doesn't work])
fi
fi dnl wolfSSL not disabled
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index c4c02946d..e7b683345 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1,6 +1,7 @@
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
-# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
+# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is free software; the Free Software Foundation gives
@@ -31,7 +32,7 @@ m4_define([_LT_COPYING], [dnl
# along with this program. If not, see <http://www.gnu.org/licenses/>.
])
-# serial 58 LT_INIT
+# serial 59 LT_INIT
# LT_PREREQ(VERSION)
@@ -181,6 +182,7 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_CHECK_SHELL_FEATURES])dnl
m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_DECL_FILECMD])dnl
m4_require([_LT_CHECK_MAGIC_METHOD])dnl
m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
m4_require([_LT_CMD_OLD_ARCHIVE])dnl
@@ -219,8 +221,8 @@ esac
ofile=libtool
can_build_shared=yes
-# All known linkers require a '.a' archive for static linking (except MSVC,
-# which needs '.lib').
+# All known linkers require a '.a' archive for static linking (except MSVC and
+# ICC, which need '.lib').
libext=a
with_gnu_ld=$lt_cv_prog_gnu_ld
@@ -777,7 +779,7 @@ _LT_EOF
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
- sed '$q' "$ltmain" >> "$cfgfile" \
+ $SED '$q' "$ltmain" >> "$cfgfile" \
|| (rm -f "$cfgfile"; exit 1)
mv -f "$cfgfile" "$ofile" ||
@@ -1041,8 +1043,8 @@ int forced_loaded() { return 2;}
_LT_EOF
echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
- echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
- $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
$RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
cat > conftest.c << _LT_EOF
@@ -1066,17 +1068,12 @@ _LT_EOF
_lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
darwin1.*)
_lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
- darwin*) # darwin 5.x on
- # if running on 10.5 or later, the deployment target defaults
- # to the OS version, if on x86, and 10.4, the deployment
- # target defaults to 10.4. Don't you love it?
- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
- 10.0,*86*-darwin8*|10.0,*-darwin[[912]]*)
- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
- 10.[[012]][[,.]]*)
- _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
- 10.*|11.*)
- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+ darwin*)
+ case $MACOSX_DEPLOYMENT_TARGET,$host in
+ 10.[[012]],*|,*powerpc*-darwin[[5-8]]*)
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+ *)
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
esac
;;
esac
@@ -1125,12 +1122,12 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
output_verbose_link_cmd=func_echo_all
_LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
_LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
m4_if([$1], [CXX],
[ if test yes != "$lt_cv_apple_cc_single_mod"; then
_LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
fi
],[])
else
@@ -1244,7 +1241,8 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
# _LT_WITH_SYSROOT
# ----------------
AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
+[m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([for sysroot])
AC_ARG_WITH([sysroot],
[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
[Search for dependent libraries within DIR (or the compiler's sysroot
@@ -1261,7 +1259,7 @@ case $with_sysroot in #(
fi
;; #(
/*)
- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"`
;; #(
no|'')
;; #(
@@ -1291,7 +1289,7 @@ ia64-*-hpux*)
# options accordingly.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*ELF-32*)
HPUX_IA64_MODE=32
;;
@@ -1308,7 +1306,7 @@ ia64-*-hpux*)
echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
if test yes = "$lt_cv_prog_gnu_ld"; then
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -melf32bsmip"
;;
@@ -1320,7 +1318,7 @@ ia64-*-hpux*)
;;
esac
else
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -32"
;;
@@ -1342,7 +1340,7 @@ mips64*-*linux*)
echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
emul=elf
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*32-bit*)
emul="${emul}32"
;;
@@ -1350,7 +1348,7 @@ mips64*-*linux*)
emul="${emul}64"
;;
esac
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*MSB*)
emul="${emul}btsmip"
;;
@@ -1358,7 +1356,7 @@ mips64*-*linux*)
emul="${emul}ltsmip"
;;
esac
- case `/usr/bin/file conftest.$ac_objext` in
+ case `$FILECMD conftest.$ac_objext` in
*N32*)
emul="${emul}n32"
;;
@@ -1378,14 +1376,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# not appear in the list.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.o` in
+ case `$FILECMD conftest.o` in
*32-bit*)
case $host in
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_i386_fbsd"
;;
x86_64-*linux*)
- case `/usr/bin/file conftest.o` in
+ case `$FILECMD conftest.o` in
*x86-64*)
LD="${LD-ld} -m elf32_x86_64"
;;
@@ -1453,7 +1451,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# options accordingly.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.o` in
+ case `$FILECMD conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
yes*)
@@ -1492,9 +1490,22 @@ need_locks=$enable_libtool_lock
m4_defun([_LT_PROG_AR],
[AC_CHECK_TOOLS(AR, [ar], false)
: ${AR=ar}
-: ${AR_FLAGS=cr}
_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+# Use ARFLAGS variable as AR's operation code to sync the variable naming with
+# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
+# higher priority because thats what people were doing historically (setting
+# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS
+# variable obsoleted/removed.
+
+test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
+lt_ar_flags=$AR_FLAGS
+_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)])
+
+# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override
+# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
+_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}],
+ [Flags to create an archive])
AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
[lt_cv_ar_at_file=no
@@ -1713,7 +1724,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=8192;
;;
- bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+ bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
# This has been around since 386BSD, at least. Likely further.
if test -x /sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1756,7 +1767,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
sysv5* | sco5v6* | sysv4.2uw2*)
kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
if test -n "$kargmax"; then
- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'`
else
lt_cv_sys_max_cmd_len=32768
fi
@@ -2206,26 +2217,35 @@ m4_defun([_LT_CMD_STRIPLIB],
striplib=
old_striplib=
AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- AC_MSG_RESULT([yes])
+if test -z "$STRIP"; then
+ AC_MSG_RESULT([no])
else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP"; then
+ if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ old_striplib="$STRIP --strip-debug"
+ striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+ else
+ case $host_os in
+ darwin*)
+ # FIXME - insert some real tests, host_os isn't really good enough
striplib="$STRIP -x"
old_striplib="$STRIP -S"
AC_MSG_RESULT([yes])
- else
+ ;;
+ freebsd*)
+ if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
+ old_striplib="$STRIP --strip-debug"
+ striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
AC_MSG_RESULT([no])
- fi
- ;;
- *)
- AC_MSG_RESULT([no])
- ;;
- esac
+ ;;
+ esac
+ fi
fi
_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
_LT_DECL([], [striplib], [1])
@@ -2548,7 +2568,7 @@ cygwin* | mingw* | pw32* | cegcc*)
case $host_os in
cygwin*)
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+ soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
m4_if([$1], [],[
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
;;
@@ -2558,14 +2578,14 @@ m4_if([$1], [],[
;;
pw32*)
# pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+ library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
;;
esac
dynamic_linker='Win32 ld.exe'
;;
- *,cl*)
- # Native MSVC
+ *,cl* | *,icl*)
+ # Native MSVC or ICC
libname_spec='$name'
soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
library_names_spec='$libname.dll.lib'
@@ -2584,7 +2604,7 @@ m4_if([$1], [],[
done
IFS=$lt_save_ifs
# Convert to MSYS style.
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
;;
cygwin*)
# Convert to unix form, then to dos form, then back to unix form
@@ -2621,7 +2641,7 @@ m4_if([$1], [],[
;;
*)
- # Assume MSVC wrapper
+ # Assume MSVC and ICC wrapper
library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
@@ -2654,7 +2674,7 @@ dgux*)
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
if test -x /usr/bin/objformat; then
@@ -3465,7 +3485,7 @@ beos*)
bsdi[[45]]*)
lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_cmd='$FILECMD -L'
lt_cv_file_magic_test_file=/shlib/libc.so
;;
@@ -3499,14 +3519,14 @@ darwin* | rhapsody*)
lt_cv_deplibs_check_method=pass_all
;;
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
case $host_cpu in
i*86 )
# Not sure whether the presence of OpenBSD here was a mistake.
# Let's accept both of them until this is cleared up.
lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_cmd=$FILECMD
lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
;;
esac
@@ -3520,7 +3540,7 @@ haiku*)
;;
hpux10.20* | hpux11*)
- lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_cmd=$FILECMD
case $host_cpu in
ia64*)
lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
@@ -3567,7 +3587,7 @@ netbsd* | netbsdelf*-gnu)
newos6*)
lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
- lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_cmd=$FILECMD
lt_cv_file_magic_test_file=/usr/lib/libnls.so
;;
@@ -3694,13 +3714,13 @@ else
mingw*) lt_bad_file=conftest.nm/nofile ;;
*) lt_bad_file=/dev/null ;;
esac
- case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+ case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in
*$lt_bad_file* | *'Invalid file or object type'*)
lt_cv_path_NM="$tmp_nm -B"
break 2
;;
*)
- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in
*/dev/null*)
lt_cv_path_NM="$tmp_nm -p"
break 2
@@ -3726,7 +3746,7 @@ else
# Let the user override the test.
else
AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
- case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in
*COFF*)
DUMPBIN="$DUMPBIN -symbols -headers"
;;
@@ -3966,7 +3986,7 @@ esac
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
# Gets list of data symbols to import.
- lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+ lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'"
# Adjust the below global symbol transforms to fixup imported variables.
lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
@@ -3984,20 +4004,20 @@ fi
# Transform an extracted symbol line into a proper C declaration.
# Some systems (esp. on ia64) link data and code symbols differently,
# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+lt_cv_sys_global_symbol_to_cdecl="$SED -n"\
$lt_cdecl_hook\
" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\
$lt_c_name_hook\
" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
# Transform an extracted symbol line into symbol name with lib prefix and
# symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\
$lt_c_name_lib_hook\
" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
@@ -4021,7 +4041,7 @@ for ac_symprfx in "" "_"; do
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
# Fake it for dumpbin and say T for any non-static function,
# D for any global variable and I for any imported variable.
- # Also find C++ and __fastcall symbols from MSVC++,
+ # Also find C++ and __fastcall symbols from MSVC++ or ICC,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK ['"\
" {last_section=section; section=\$ 3};"\
@@ -4039,9 +4059,9 @@ for ac_symprfx in "" "_"; do
" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
" ' prfx=^$ac_symprfx]"
else
- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'"
# Check to see that the pipe works correctly.
pipe_works=no
@@ -4329,7 +4349,7 @@ m4_if([$1], [CXX], [
;;
esac
;;
- freebsd* | dragonfly*)
+ freebsd* | dragonfly* | midnightbsd*)
# FreeBSD uses GNU C++
;;
hpux9* | hpux10* | hpux11*)
@@ -4412,7 +4432,7 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
;;
*)
- case `$CC -V 2>&1 | sed 5q` in
+ case `$CC -V 2>&1 | $SED 5q` in
*Sun\ C*)
# Sun C++ 5.9
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4754,7 +4774,7 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
;;
*)
- case `$CC -V 2>&1 | sed 5q` in
+ case `$CC -V 2>&1 | $SED 5q` in
*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
# Sun Fortran 8.3 passes all unrecognized flags to the linker
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4937,7 +4957,7 @@ m4_if([$1], [CXX], [
if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
_LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
else
- _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+ _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
fi
;;
pw32*)
@@ -4945,7 +4965,7 @@ m4_if([$1], [CXX], [
;;
cygwin* | mingw* | cegcc*)
case $cc_basename in
- cl*)
+ cl* | icl*)
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
;;
*)
@@ -5005,15 +5025,15 @@ dnl Note also adjust exclude_expsyms for C++ above.
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
+ # Microsoft Visual C++ or Intel C++ Compiler.
if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
interix*)
- # we just hope/assume this is gcc and not c89 (= MSVC++)
+ # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
with_gnu_ld=yes
;;
openbsd* | bitrig*)
@@ -5068,7 +5088,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
_LT_TAGVAR(whole_archive_flag_spec, $1)=
fi
supports_anon_versioning=no
- case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
+ case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in
*GNU\ gold*) supports_anon_versioning=yes ;;
*\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -5180,6 +5200,7 @@ _LT_EOF
emximp -o $lib $output_objdir/$libname.def'
_LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
;;
interix[[3-9]]*)
@@ -5194,7 +5215,7 @@ _LT_EOF
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
@@ -5237,7 +5258,7 @@ _LT_EOF
_LT_TAGVAR(compiler_needs_object, $1)=yes
;;
esac
- case `$CC -V 2>&1 | sed 5q` in
+ case `$CC -V 2>&1 | $SED 5q` in
*Sun\ C*) # Sun C 5.9
_LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
_LT_TAGVAR(compiler_needs_object, $1)=yes
@@ -5249,13 +5270,14 @@ _LT_EOF
if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
echo "local: *; };" >> $output_objdir/$libname.ver~
$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
case $cc_basename in
tcc*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
;;
xlf* | bgf* | bgxlf* | mpixlf*)
@@ -5265,7 +5287,7 @@ _LT_EOF
_LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
echo "local: *; };" >> $output_objdir/$libname.ver~
$LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
fi
@@ -5397,7 +5419,7 @@ _LT_EOF
if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
_LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
else
- _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+ _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
fi
aix_use_runtimelinking=no
@@ -5580,12 +5602,12 @@ _LT_EOF
cygwin* | mingw* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
+ # Microsoft Visual C++ or Intel C++ Compiler.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
case $cc_basename in
- cl*)
- # Native MSVC
+ cl* | icl*)
+ # Native MSVC or ICC
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_TAGVAR(always_export_symbols, $1)=yes
@@ -5626,7 +5648,7 @@ _LT_EOF
fi'
;;
*)
- # Assume MSVC wrapper
+ # Assume MSVC and ICC wrapper
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
# Tell ltmain to make .lib files, not .a files.
@@ -5674,7 +5696,7 @@ _LT_EOF
;;
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd* | dragonfly*)
+ freebsd* | dragonfly* | midnightbsd*)
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
_LT_TAGVAR(hardcode_direct, $1)=yes
@@ -5815,6 +5837,7 @@ _LT_EOF
# Fabrice Bellard et al's Tiny C Compiler
_LT_TAGVAR(ld_shlibs, $1)=yes
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
;;
esac
;;
@@ -5886,6 +5909,7 @@ _LT_EOF
emximp -o $lib $output_objdir/$libname.def'
_LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
;;
osf3*)
@@ -6656,8 +6680,8 @@ if test yes != "$_lt_caught_CXX_error"; then
cygwin* | mingw* | pw32* | cegcc*)
case $GXX,$cc_basename in
- ,cl* | no,cl*)
- # Native MSVC
+ ,cl* | no,cl* | ,icl* | no,icl*)
+ # Native MSVC or ICC
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
@@ -6755,6 +6779,7 @@ if test yes != "$_lt_caught_CXX_error"; then
emximp -o $lib $output_objdir/$libname.def'
_LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
;;
dgux*)
@@ -6785,7 +6810,7 @@ if test yes != "$_lt_caught_CXX_error"; then
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
;;
- freebsd* | dragonfly*)
+ freebsd* | dragonfly* | midnightbsd*)
# FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
# conventions
_LT_TAGVAR(ld_shlibs, $1)=yes
@@ -6922,7 +6947,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
irix5* | irix6*)
case $cc_basename in
@@ -7062,13 +7087,13 @@ if test yes != "$_lt_caught_CXX_error"; then
_LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
echo "local: *; };" >> $output_objdir/$libname.ver~
$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
;;
*)
- case `$CC -V 2>&1 | sed 5q` in
+ case `$CC -V 2>&1 | $SED 5q` in
*Sun\ C*)
# Sun C++ 5.9
_LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
@@ -8214,6 +8239,14 @@ _LT_DECL([], [DLLTOOL], [1], [DLL creation program])
AC_SUBST([DLLTOOL])
])
+# _LT_DECL_FILECMD
+# ----------------
+# Check for a file(cmd) program that can be used to detect file type and magic
+m4_defun([_LT_DECL_FILECMD],
+[AC_CHECK_TOOL([FILECMD], [file], [:])
+_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types])
+])# _LD_DECL_FILECMD
+
# _LT_DECL_SED
# ------------
# Check for a fully-functional sed program, that truncates
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
index 94b082976..b0b5e9c21 100644
--- a/m4/ltoptions.m4
+++ b/m4/ltoptions.m4
@@ -1,7 +1,7 @@
# Helper functions for option handling. -*- Autoconf -*-
#
-# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
-# Foundation, Inc.
+# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free
+# Software Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# This file is free software; the Free Software Foundation gives
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
index 48bc9344a..902508bd9 100644
--- a/m4/ltsugar.m4
+++ b/m4/ltsugar.m4
@@ -1,6 +1,6 @@
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
#
-# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
+# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software
# Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index fa04b52a3..b155d0ace 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -1,6 +1,7 @@
# ltversion.m4 -- version numbers -*- Autoconf -*-
#
-# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation,
+# Inc.
# Written by Scott James Remnant, 2004
#
# This file is free software; the Free Software Foundation gives
@@ -9,15 +10,15 @@
# @configure_input@
-# serial 4179 ltversion.m4
+# serial 4245 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.4.6])
-m4_define([LT_PACKAGE_REVISION], [2.4.6])
+m4_define([LT_PACKAGE_VERSION], [2.4.7])
+m4_define([LT_PACKAGE_REVISION], [2.4.7])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.6'
-macro_revision='2.4.6'
+[macro_version='2.4.7'
+macro_revision='2.4.7'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
index c6b26f88f..0f7a8759d 100644
--- a/m4/lt~obsolete.m4
+++ b/m4/lt~obsolete.m4
@@ -1,7 +1,7 @@
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
#
-# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
-# Foundation, Inc.
+# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free
+# Software Foundation, Inc.
# Written by Scott James Remnant, 2004.
#
# This file is free software; the Free Software Foundation gives
diff --git a/m4/xc-am-iface.m4 b/m4/xc-am-iface.m4
index 7070193aa..621453d4e 100644
--- a/m4/xc-am-iface.m4
+++ b/m4/xc-am-iface.m4
@@ -2,7 +2,7 @@
#
# xc-am-iface.m4
#
-# Copyright (c) 2013 - 2020 Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022 Daniel Stenberg <daniel@haxx.se>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
#---------------------------------------------------------------------------
# serial 1
diff --git a/m4/xc-cc-check.m4 b/m4/xc-cc-check.m4
index fd58ca2ce..9eae8a647 100644
--- a/m4/xc-cc-check.m4
+++ b/m4/xc-cc-check.m4
@@ -2,7 +2,7 @@
#
# xc-cc-check.m4
#
-# Copyright (c) 2013 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022, Daniel Stenberg <daniel@haxx.se>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
#---------------------------------------------------------------------------
# serial 1
diff --git a/m4/xc-lt-iface.m4 b/m4/xc-lt-iface.m4
index e389b2b03..337c9f9cd 100644
--- a/m4/xc-lt-iface.m4
+++ b/m4/xc-lt-iface.m4
@@ -2,7 +2,7 @@
#
# xc-lt-iface.m4
#
-# Copyright (c) 2013 - 2021, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022, Daniel Stenberg <daniel@haxx.se>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
#---------------------------------------------------------------------------
# serial 1
@@ -317,7 +319,7 @@ dnl xc_lt_build_static_with_pic
m4_define([_XC_CHECK_LT_BUILD_WITH_PIC],
[dnl
#
-# Find out whether libtool libraries would be built wit PIC
+# Find out whether libtool libraries would be built with PIC
#
case "x$pic_mode" in @%:@ ((((
diff --git a/m4/xc-translit.m4 b/m4/xc-translit.m4
index 18b63ecc8..6fc837e63 100644
--- a/m4/xc-translit.m4
+++ b/m4/xc-translit.m4
@@ -2,7 +2,7 @@
#
# xc-translit.m4
#
-# Copyright (c) 2011 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2011 - 2022, Daniel Stenberg <daniel@haxx.se>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
#---------------------------------------------------------------------------
# File version for 'aclocal' use. Keep it a single number.
diff --git a/m4/xc-val-flgs.m4 b/m4/xc-val-flgs.m4
index 775c149cc..b721c3155 100644
--- a/m4/xc-val-flgs.m4
+++ b/m4/xc-val-flgs.m4
@@ -2,7 +2,7 @@
#
# xc-val-flgs.m4
#
-# Copyright (c) 2013 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022, Daniel Stenberg <daniel@haxx.se>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
#---------------------------------------------------------------------------
# serial 1
diff --git a/m4/zz40-xc-ovr.m4 b/m4/zz40-xc-ovr.m4
index 14c92d8c1..3b96e5f01 100644
--- a/m4/zz40-xc-ovr.m4
+++ b/m4/zz40-xc-ovr.m4
@@ -2,7 +2,7 @@
#
# zz40-xc-ovr.m4
#
-# Copyright (c) 2013 - 2018 Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022 Daniel Stenberg <daniel@haxx.se>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
#---------------------------------------------------------------------------
dnl The funny name of this file is intentional in order to make it
@@ -358,7 +360,7 @@ dnl and stores the result in 'PATH_SEPARATOR', unless
dnl the user has already set it with a non-empty value.
dnl
dnl This path separator is the symbol used to separate
-dnl or diferentiate paths inside the 'PATH' environment
+dnl or differentiate paths inside the 'PATH' environment
dnl variable.
dnl
dnl Non-empty user provided 'PATH_SEPARATOR' always
@@ -592,7 +594,7 @@ dnl and stores the result in 'PATH_SEPARATOR', unless
dnl the user has already set it with a non-empty value.
dnl
dnl This path separator is the symbol used to separate
-dnl or diferentiate paths inside the 'PATH' environment
+dnl or differentiate paths inside the 'PATH' environment
dnl variable.
dnl
dnl Non-empty user provided 'PATH_SEPARATOR' always
diff --git a/m4/zz50-xc-ovr.m4 b/m4/zz50-xc-ovr.m4
index cf8604dcb..ea68e5b48 100644
--- a/m4/zz50-xc-ovr.m4
+++ b/m4/zz50-xc-ovr.m4
@@ -2,7 +2,7 @@
#
# zz50-xc-ovr.m4
#
-# Copyright (c) 2011 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2011 - 2022, Daniel Stenberg <daniel@haxx.se>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
#---------------------------------------------------------------------------
# serial 1
diff --git a/m4/zz60-xc-ovr.m4 b/m4/zz60-xc-ovr.m4
index 126ac0fd7..e3e29bfc4 100644
--- a/m4/zz60-xc-ovr.m4
+++ b/m4/zz60-xc-ovr.m4
@@ -2,7 +2,7 @@
#
# zz60-xc-ovr.m4
#
-# Copyright (c) 2013 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022, Daniel Stenberg <daniel@haxx.se>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
#---------------------------------------------------------------------------
# serial 1
diff --git a/maketgz b/maketgz
index d1351addf..92ea871af 100755
--- a/maketgz
+++ b/maketgz
@@ -9,7 +9,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
version=$1
@@ -92,10 +94,6 @@ rm -f "$HEADER.bak"
sed -i.bak 's/#define CURL_VERSION .*/#define CURL_VERSION "'$curlversion'"/g' $CHEADER
rm -f "$CHEADER.bak"
-# Replace version number in plist file:
-sed -i.bak "s/7\.12\.3/$libversion/g" $PLIST
-rm -f "$PLIST.bak"
-
if test -n "$only"; then
# done!
exit;
@@ -169,6 +167,12 @@ git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./script
echo "make dist"
targz="curl-$version.tar.gz"
make -sj dist VERSION=$version
+res=$?
+
+if test "$res" != 0; then
+ echo "make dist failed"
+ exit 2
+fi
############################################################################
#
diff --git a/packages/Android/Android.mk b/packages/Android/Android.mk
index 77bc271ea..f5093b7e4 100644
--- a/packages/Android/Android.mk
+++ b/packages/Android/Android.mk
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Google Android makefile for curl and libcurl
#
diff --git a/packages/DOS/README b/packages/DOS/README
index cc9da379e..8336efa41 100644
--- a/packages/DOS/README
+++ b/packages/DOS/README
@@ -1,4 +1,4 @@
-Gisle Vanem made curl build fine on DOS (and MingW) with djgpp, OpenSSL and his
+Gisle Vanem made curl build fine on DOS (and MinGW) with djgpp, OpenSSL and his
Watt-32 stack.
'make -f Makefile.dist djgpp' in the root curl dir should build it fine.
@@ -11,7 +11,7 @@ Note 1: djgpp 2.04 beta has a sscanf() bug so the URL parsing isn't
Note 2: Compile Watt-32 (and OpenSSL) with the same version of djgpp.
Otherwise things go wrong because things like FS-extensions and
errnos have been changed between releases.
-
+
Note 3: Several 'USE_x' variables in 'common.dj' are on the 'USE_x ?= 0'
form (conditional variable assignment). So one can build like this:
c:\curl\lib> make -f makefile.dj USE_OPENSSL=1 USE_ZLIB=1 clean all
diff --git a/packages/DOS/common.dj b/packages/DOS/common.dj
index dea4f3ec7..b181e8215 100644
--- a/packages/DOS/common.dj
+++ b/packages/DOS/common.dj
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# Common defines for curl (djgpp/Watt-32)
@@ -144,7 +146,6 @@ ifeq ($(USE_OPENSSL),1)
#
# CFLAGS += -DUSE_TLS_SRP=1 \
# -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES \
- # -DHAVE_OPENSSL_PKCS12_H \
# -DHAVE_SSLV2_CLIENT_METHOD \
# -DOPENSSL_NO_DEPRECATED
@@ -159,7 +160,7 @@ ifeq ($(USE_OPENSSL),1)
endif
ifeq ($(USE_ZLIB),1)
- CFLAGS += -DUSE_ZLIB -I$(ZLIB_ROOT)
+ CFLAGS += -DHAVE_LIBZ -I$(ZLIB_ROOT)
endif
ifeq ($(USE_IPV6),1)
@@ -171,8 +172,7 @@ ifeq ($(USE_ARES),1)
endif
ifeq ($(USE_IDNA),1)
- CFLAGS += -DHAVE_LIBIDN -DHAVE_IDN_FREE_H -DHAVE_IDN_FREE -DHAVE_TLD_H \
- -DHAVE_TLD_STRERROR -I$(LIBIDN_ROOT)/lib
+ CFLAGS += -DHAVE_LIBIDN -I$(LIBIDN_ROOT)/lib
endif
ifeq ($(USE_DEBUG),1)
diff --git a/packages/Makefile.am b/packages/Makefile.am
index 56b1ae404..b37991166 100644
--- a/packages/Makefile.am
+++ b/packages/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
SUBDIRS = vms
@@ -37,9 +39,6 @@ EXTRA_DIST = README \
OS400/makefile.sh \
OS400/os400sys.c \
OS400/os400sys.h \
- TPF/curl.mak \
- TPF/maketpf.env_curl \
- TPF/maketpf.env_curllib \
Android/Android.mk
CHECKSRC = $(CS_$(V))
@@ -48,4 +47,4 @@ CS_1 =
CS_ = $(CS_0)
checksrc:
- $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/OS400/*.[ch])
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/OS400/*.[ch])
diff --git a/packages/Makefile.in b/packages/Makefile.in
index 36f2b8984..9d9091e7a 100644
--- a/packages/Makefile.in
+++ b/packages/Makefile.in
@@ -89,15 +89,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = packages
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -247,6 +245,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -264,6 +263,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -321,6 +321,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -339,12 +340,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -411,7 +413,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -425,7 +426,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -438,6 +439,8 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
SUBDIRS = vms
EXTRA_DIST = README \
@@ -456,9 +459,6 @@ EXTRA_DIST = README \
OS400/makefile.sh \
OS400/os400sys.c \
OS400/os400sys.h \
- TPF/curl.mak \
- TPF/maketpf.env_curl \
- TPF/maketpf.env_curllib \
Android/Android.mk
CHECKSRC = $(CS_$(V))
@@ -477,9 +477,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu packages/Makefile
+ $(AUTOMAKE) --foreign packages/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -780,7 +780,7 @@ uninstall-am:
checksrc:
- $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/OS400/*.[ch])
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/OS400/*.[ch])
# 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.
diff --git a/packages/OS400/README.OS400 b/packages/OS400/README.OS400
index d3ad90177..e245aff99 100644
--- a/packages/OS400/README.OS400
+++ b/packages/OS400/README.OS400
@@ -252,22 +252,24 @@ archive extraction. Do not ask questions about these subjects if you're not
familiar with.
_ As a prerequisite, QADRT development environment must be installed.
+ For more information on downloading and installing the QADRT development kit,
+ please see https://www.ibm.com/support/pages/node/6258183
_ If data compression has to be supported, ZLIB development environment must
be installed.
_ Likewise, if SCP and SFTP protocols have to be compiled in, LIBSSH2
developent environment must be installed.
_ Install the curl source directory in IFS. Do NOT install it in the
installation target directory (which defaults to /curl).
-_ Enter shell (QSH)
+_ Enter Qshell (QSH, not PASE)
_ Change current directory to the curl installation directory
_ 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,
+ parameters, like debug info generation, optimization level, listing option,
target library, ZLIB/LIBSSH2 availability and location, etc.
_ Copy any file in the current directory to makelog (i.e.:
cp initscript.sh makelog): this is intended to create the makelog file with
an ASCII CCSID!
-_ Enter the command "sh makefile.sh > makelog 2>&1'
+_ Enter the command "sh makefile.sh > makelog 2>&1"
_ Examine the makelog file to check for compilation errors.
Leaving file initscript.sh unchanged, this will produce the following OS/400
diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c
index 4b30683ea..da696ca2b 100644
--- a/packages/OS400/ccsidcurl.c
+++ b/packages/OS400/ccsidcurl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
*
***************************************************************************/
diff --git a/packages/OS400/ccsidcurl.h b/packages/OS400/ccsidcurl.h
index 959aaaabb..9bd2ae7dd 100644
--- a/packages/OS400/ccsidcurl.h
+++ b/packages/OS400/ccsidcurl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
*
***************************************************************************/
#include "curl.h"
diff --git a/packages/OS400/chkstrings.c b/packages/OS400/chkstrings.c
index 919a856dd..6f8d38b77 100644
--- a/packages/OS400/chkstrings.c
+++ b/packages/OS400/chkstrings.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <stdlib.h>
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index d0990a76a..6508b964d 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
* ANY KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
*
**************************************************************************
*
@@ -148,6 +150,8 @@
d c X'10000000'
d CURL_VERSION_GSASL...
d c X'20000000'
+ d CURL_VERSION_THREADSAFE...
+ d c X'40000000'
*
d CURL_HTTPPOST_FILENAME...
d c X'00000001'
@@ -1202,7 +1206,7 @@
d c 00110
d CURLOPT_PROXYAUTH...
d c 00111
- d CURLOPT_FTP_RESPONSE_TIMEOUT...
+ d CURLOPT_SERVER_RESPONSE_TIMEOUT...
d c 00112
d CURLOPT_SERVER_RESPONSE_TIMEOUT... Alias
d c 00112
@@ -1679,7 +1683,7 @@
d c 20
*
d CURLMIMEOPT_FORMESCAPE...
- d X'0000000'
+ d c X'00000001'
*
d CURLINFO s 10i 0 based(######ptr######) Enum
d CURLINFO_EFFECTIVE_URL... CURLINFO_STRING + 1
@@ -2316,7 +2320,7 @@
d qualified
d name * const char *
d id like(CURLoption)
- d type like(curl_easytyoe)
+ d type like(curl_easytype)
d flags 10u 0
*
d curl_hstsentry...
@@ -2926,7 +2930,7 @@
*
d curl_easy_option_by_name...
d pr * extproc('curl_easy_option_by_name') curl_easyoption *
- d name * value option(*string)
+ d name * value options(*string)
*
d curl_easy_option_by_id...
d pr * extproc('curl_easy_option_by_id') curl_easyoption *
@@ -3113,7 +3117,7 @@
d curl_easy_option_by_name_ccsid...
d pr * extproc( curl_easyoption *
d 'curl_easy_option_by_name_ccsid')
- d name * value option(*string)
+ d name * value options(*string)
d ccsid 10u 0 value
*
d curl_easy_option_get_name_ccsid...
diff --git a/packages/OS400/initscript.sh b/packages/OS400/initscript.sh
index 50550f774..4facf17ed 100644
--- a/packages/OS400/initscript.sh
+++ b/packages/OS400/initscript.sh
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,8 +19,14 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
+system ()
+{
+ /usr/bin/system "$@" || exit 1
+}
setenv()
@@ -69,9 +75,9 @@ 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 OPTIMIZE '10' # Optimization level
setenv OUTPUT '*NONE' # Compilation output option.
-setenv TGTRLS 'V6R1M0' # Target OS release.
+setenv TGTRLS '*CURRENT' # Target OS release.
setenv IFSDIR '/curl' # Installation IFS directory.
# Define ZLIB availability and locations.
@@ -231,11 +237,11 @@ make_module()
DEFINES="${3} BUILDING_LIBCURL"
if [ "${WITH_ZLIB}" != "0" ]
- then DEFINES="${DEFINES} HAVE_LIBZ HAVE_ZLIB_H"
+ then DEFINES="${DEFINES} HAVE_LIBZ"
fi
if [ "${WITH_LIBSSH2}" != "0" ]
- then DEFINES="${DEFINES} USE_LIBSSH2 HAVE_LIBSSH2_H"
+ then DEFINES="${DEFINES} USE_LIBSSH2"
fi
if [ "${DEFINES}" ]
diff --git a/packages/OS400/make-include.sh b/packages/OS400/make-include.sh
index b05ddf482..daf32627c 100644
--- a/packages/OS400/make-include.sh
+++ b/packages/OS400/make-include.sh
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# Installation of the header files in the OS/400 library.
diff --git a/packages/OS400/make-lib.sh b/packages/OS400/make-lib.sh
index cac5aac20..7bbd9fa2a 100644
--- a/packages/OS400/make-lib.sh
+++ b/packages/OS400/make-lib.sh
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# libcurl compilation script for the OS/400.
diff --git a/packages/OS400/make-src.sh b/packages/OS400/make-src.sh
index 8e7ad6d3d..327857d16 100644
--- a/packages/OS400/make-src.sh
+++ b/packages/OS400/make-src.sh
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
#
diff --git a/packages/OS400/make-tests.sh b/packages/OS400/make-tests.sh
index 078b0f196..9ac9d46d2 100644
--- a/packages/OS400/make-tests.sh
+++ b/packages/OS400/make-tests.sh
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# tests compilation script for the OS/400.
diff --git a/packages/OS400/makefile.sh b/packages/OS400/makefile.sh
index bfc56da3d..b2c1b5918 100644
--- a/packages/OS400/makefile.sh
+++ b/packages/OS400/makefile.sh
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# curl compilation script for the OS/400.
@@ -59,6 +61,8 @@ do MEMBER="`basename \"${TEXT}\" .OS400`"
MEMBER="`basename \"${MEMBER}\" .md`"
MEMBER="${LIBIFSNAME}/DOCS.FILE/`db2_name \"${MEMBER}\"`.MBR"
+ [ -e "${TEXT}" ] || continue
+
if action_needed "${MEMBER}" "${TEXT}"
then CMD="CPY OBJ('${TEXT}') TOOBJ('${MEMBER}') TOCCSID(${TGTCCSID})"
CMD="${CMD} DTAFMT(*TEXT) REPLACE(*YES)"
diff --git a/packages/OS400/os400sys.c b/packages/OS400/os400sys.c
index ec06c9597..862c7fd38 100644
--- a/packages/OS400/os400sys.c
+++ b/packages/OS400/os400sys.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
*
***************************************************************************/
@@ -38,7 +40,7 @@
#include <qadrt.h>
#include <errno.h>
-#ifdef HAVE_ZLIB_H
+#ifdef HAVE_LIBZ
#include <zlib.h>
#endif
diff --git a/packages/OS400/os400sys.h b/packages/OS400/os400sys.h
index 3b7667514..f10723848 100644
--- a/packages/OS400/os400sys.h
+++ b/packages/OS400/os400sys.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
*
***************************************************************************/
diff --git a/packages/TPF/curl.mak b/packages/TPF/curl.mak
deleted file mode 100644
index 5d6f3d717..000000000
--- a/packages/TPF/curl.mak
+++ /dev/null
@@ -1,80 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-#######################################################################
-# #
-# MAKEFILE NAME..... curl.mak #
-# #
-# DESCRIPTION..... This is the makefile for libcurl. #
-# #
-#######################################################################
-
-APP := CURL
-
-TPF_RUN_TPFSOCHK := NO
-
-#######################################################################
-# Define any additional libs needed to link
-#######################################################################
-
-LIBS := CRYP CSSL
-
-#######################################################################
-# Define the envs needed to build this module
-#######################################################################
-
-maketpf_env := curllib
-maketpf_env += openssl
-maketpf_env += base_rt
-maketpf_env += system
-
-#######################################################################
-# Segments to be compiled with gcc compiler
-#######################################################################
-#
-### lib directory:
-include $(word 1,$(wildcard $(foreach d,$(TPF_ROOT),$d/opensource/curl/lib/Makefile.inc)) Makefile.inc_not_found)
-C_SRC := $(CSOURCES)
-
-#######################################################################
-# Additions and overrides for gcc compiler flags
-#######################################################################
-
-# suppress expected warnings in the ported code:
-CFLAGS_CURL += -w
-
-# use SSL
-# (overrides Curl's lib/config-tpf.h file)
-CFLAGS_CURL += -DUSE_OPENSSL
-
-# disable all protocols except FTP and HTTP
-# (overrides Curl's lib/config-tpf.h file)
-CFLAGS_CURL += -DCURL_DISABLE_DICT
-CFLAGS_CURL += -DCURL_DISABLE_FILE
-CFLAGS_CURL += -DCURL_DISABLE_LDAP
-CFLAGS_CURL += -DCURL_DISABLE_TELNET
-CFLAGS_CURL += -DCURL_DISABLE_TFTP
-
-#######################################################################
-# Include the maketpf.rules
-#######################################################################
-
-include maketpf.rules
diff --git a/packages/TPF/maketpf.env_curl b/packages/TPF/maketpf.env_curl
deleted file mode 100644
index 6ea24d43f..000000000
--- a/packages/TPF/maketpf.env_curl
+++ /dev/null
@@ -1,45 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-################################################################################
-################################################################################
-#env TPF CURL Includes
-################################################################################
-################################################################################
-
-################################################################################
-# Define the directories where the shared objects reside
-################################################################################
-
-ROOTLIBDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/lib)
-
-################################################################################
-# Set the include/header file directories
-################################################################################
-
-ROOTINCDIRS := $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/include)
-ROOTINCDIRS += $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/include/curl)
-
-################################################################################
-# Define "TPF" to enable TPF-specific code in Curl files.
-################################################################################
-
-CFLAGS_$(APP) += -D TPF
diff --git a/packages/TPF/maketpf.env_curllib b/packages/TPF/maketpf.env_curllib
deleted file mode 100644
index 28414c629..000000000
--- a/packages/TPF/maketpf.env_curllib
+++ /dev/null
@@ -1,77 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-################################################################################
-################################################################################
-#env TPF CURL Library Source and Output
-################################################################################
-################################################################################
-
-################################################################################
-# Define the directories where the shared objects reside
-################################################################################
-
-ROOTLIBDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/lib)
-
-################################################################################
-# Define the directories where the loadables (XXXXVV) are to be written
-################################################################################
-
-ROOTLOADDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/load)
-
-################################################################################
-# Define the location of the export files used by the LD postprocessor
-# - currently expected that .exp files will also live in lib dir
-################################################################################
-
-ROOTEXPDIRS := $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/output/exp)
-
-################################################################################
-# Define the object file directory name
-################################################################################
-
-ROOTOBJDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/obj)
-
-################################################################################
-# Define the listing files directory name
-################################################################################
-
-ROOTLSTDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/lst)
-
-################################################################################
-# Set the include/header file directories
-################################################################################
-
-ROOTINCDIRS := $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/lib)
-ROOTINCDIRS += $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/include)
-ROOTINCDIRS += $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/include/curl)
-
-################################################################################
-# Set the C file directories
-################################################################################
-
-ROOTCDIRS := $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/lib)
-
-################################################################################
-# Define "TPF" to enable TPF-specific code in Curl files.
-################################################################################
-
-CFLAGS_$(APP) += -D TPF
diff --git a/packages/vms/Makefile.am b/packages/vms/Makefile.am
index 16db59554..f4b2d68be 100644
--- a/packages/vms/Makefile.am
+++ b/packages/vms/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
EXTRA_DIST = \
backup_gnv_curl_src.com \
diff --git a/packages/vms/Makefile.in b/packages/vms/Makefile.in
index 9c3bcc3ed..78404196f 100644
--- a/packages/vms/Makefile.in
+++ b/packages/vms/Makefile.in
@@ -89,15 +89,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = packages/vms
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -189,6 +187,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -206,6 +205,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -263,6 +263,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -281,12 +282,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -353,7 +355,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -367,7 +368,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -380,6 +381,8 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
EXTRA_DIST = \
backup_gnv_curl_src.com \
@@ -430,9 +433,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/vms/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/vms/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu packages/vms/Makefile
+ $(AUTOMAKE) --foreign packages/vms/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/packages/vms/backup_gnv_curl_src.com b/packages/vms/backup_gnv_curl_src.com
index fcf3061c2..900a62b84 100644
--- a/packages/vms/backup_gnv_curl_src.com
+++ b/packages/vms/backup_gnv_curl_src.com
@@ -17,7 +17,7 @@ $! This file is created from a template file for the purpose of making it
$! easier to port Unix code, particularly open source code to VMS.
$! Therefore permission is freely granted for any use.
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -31,6 +31,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 13-Jun-2009 J. Malmberg
$!
$!===========================================================================
diff --git a/packages/vms/build_curl-config_script.com b/packages/vms/build_curl-config_script.com
index ea1881d2c..b6a6575ec 100644
--- a/packages/vms/build_curl-config_script.com
+++ b/packages/vms/build_curl-config_script.com
@@ -2,7 +2,7 @@ $! build_curl-config_script.com
$!
$! This generates the curl-config. script from the curl-config.in file.
$!
-$! Copyright 2014, John Malmberg
+$! Copyright 2014 - 2022, 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
@@ -16,6 +16,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
$!
$! 16-Dec-2014 J. Malmberg
$!
diff --git a/packages/vms/build_gnv_curl.com b/packages/vms/build_gnv_curl.com
index ede38548d..15931fb86 100644
--- a/packages/vms/build_gnv_curl.com
+++ b/packages/vms/build_gnv_curl.com
@@ -4,7 +4,7 @@ $! $Id$
$!
$! All in one build procedure
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -18,6 +18,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
$!
$! 11-Jun-2009 J. Malmberg
$!-----------------------------------------------------------------------
diff --git a/packages/vms/build_gnv_curl_pcsi_desc.com b/packages/vms/build_gnv_curl_pcsi_desc.com
index 941875ab4..589de2c72 100644
--- a/packages/vms/build_gnv_curl_pcsi_desc.com
+++ b/packages/vms/build_gnv_curl_pcsi_desc.com
@@ -31,7 +31,7 @@ $! A rename action section is needed to make sure that the files are
$! created in the GNV$GNU: in the correct case, and to create the alias
$! link [usr.bin]curl. for [usr.bin]curl.exe.
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -45,6 +45,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
$!
$! 15-Jun-2009 J. Malmberg
$!
diff --git a/packages/vms/build_gnv_curl_pcsi_text.com b/packages/vms/build_gnv_curl_pcsi_text.com
index 94ca7eb44..9295ffb9d 100644
--- a/packages/vms/build_gnv_curl_pcsi_text.com
+++ b/packages/vms/build_gnv_curl_pcsi_text.com
@@ -12,7 +12,7 @@ $! 4. Generated Producer section.
$!
$! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -26,6 +26,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
$!
$! 15-Jun-2009 J. Malmberg
$!
diff --git a/packages/vms/build_gnv_curl_release_notes.com b/packages/vms/build_gnv_curl_release_notes.com
index 8342ef978..7673ab76e 100644
--- a/packages/vms/build_gnv_curl_release_notes.com
+++ b/packages/vms/build_gnv_curl_release_notes.com
@@ -11,7 +11,7 @@ $!
$! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
$! logical name.
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -25,6 +25,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 14-Jun-2009 J. Malmberg
$!
$!===========================================================================
diff --git a/packages/vms/build_libcurl_pc.com b/packages/vms/build_libcurl_pc.com
index 5b2315e2a..e5eef33bf 100644
--- a/packages/vms/build_libcurl_pc.com
+++ b/packages/vms/build_libcurl_pc.com
@@ -4,7 +4,7 @@ $! $Id:$
$!
$! Build the libcurl.pc file from the libcurl.pc.in file
$!
-$! Copyright 2013 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -18,6 +18,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
$!
$! 15-Jun-2013 J. Malmberg
$!
diff --git a/packages/vms/clean_gnv_curl.com b/packages/vms/clean_gnv_curl.com
index 5846739e4..0fe31177d 100644
--- a/packages/vms/clean_gnv_curl.com
+++ b/packages/vms/clean_gnv_curl.com
@@ -15,7 +15,7 @@ $! Parameter P1: REALCLEAN
$! This removes all build products and brings the environment back to
$! the point where the gnv_curl_configure.sh procedure needs to be run again.
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2009 - 2022, 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
@@ -29,6 +29,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
$!
$! 07-Jul-2009 J. Malmberg
$!============================================================================
@@ -181,6 +182,9 @@ $!
$ file = "lcl_root:[.lib]libcurl.vers"
$ if f$search(file) .nes. "" then delete 'file';*
$!
+$ file = "lcl_root:[.lib]libcurl.plist"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
$ file = "lcl_root:[]ca-bundle.h"
$ if f$search(file) .nes. "" then delete 'file';*
$!
diff --git a/packages/vms/compare_curl_source.com b/packages/vms/compare_curl_source.com
index a720afc63..1801f72b5 100644
--- a/packages/vms/compare_curl_source.com
+++ b/packages/vms/compare_curl_source.com
@@ -69,7 +69,7 @@ $!
$! This is to make sure that the backup save set for the unmodified
$! source is up to date.
$!
-$! Copyright 2011 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -83,6 +83,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 18-Aug-2011 J. Malmberg
$!==========================================================================
$!
@@ -260,19 +262,12 @@ $! These files are in the wrong format for VMS diff, and we don't change them.
$ ref_skip = 0
$ if ref_type .eqs. ".PDF" then ref_skip = 1
$ if ref_type .eqs. ".HTML" then ref_skip = 1
-$ if ref_type .eqs. ".HQX" then ref_skip = 1
$ if ref_type .eqs. ".P12" then ref_skip = 1
$ if ref_type .eqs. "."
$ then
$ if f$locate("test", ref_fname) .eq. 0 then ref_skip = 1
$ if ref_fname .eqs. "configure." then ref_skip = 1
$ endif
-$ if ref_fname .eqs. "MACINSTALL.TXT" then ref_skip = 1
-$ if ref_fname .eqs. "$macinstall.txt" then ref_skip = 1
-$ if ref_fname .eqs. "curl.mcp$5nxml$5nsit$5nhqx" then ref_skip = 1
-$ if ref_fname .eqs. "curl_GUSIConfig.cpp" then ref_skip = 1
-$ if ref_fname .eqs. "curl_$gusic$onfig.cpp" then ref_skip = 1
-$ if ref_fname .eqs. "macos_main.cpp" then ref_skip = 1
$!
$!
$ if ref_skip .ne. 0
diff --git a/packages/vms/config_h.com b/packages/vms/config_h.com
index af97eb118..4612c6c2b 100644
--- a/packages/vms/config_h.com
+++ b/packages/vms/config_h.com
@@ -28,7 +28,7 @@ $!
$! This procedure may not guess the options correctly for all architectures,
$! and is a work in progress.
$!
-$! Copyright 2011 - 2021, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -42,6 +42,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 15-Jan-2001 J. Malmberg Original
$! 29-Apr-2001 J. Malmberg Also look for config.*in* in a [.include]
$! subdirectory
@@ -795,14 +797,6 @@ $ write tf "#endif"
$ goto cfgh_in_loop1
$ endif
$!
-$ if key2 .eqs. "HAVE_LIBDL"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' 1"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$!
$ if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. ""
$ then
$ if (key2c .eqs. "EGD") .or. -
@@ -1667,117 +1661,6 @@ $ goto cfgh_in_loop1
$ endif
$ endif
$!
-$!
-$! Process RECVFROM directives
-$!-------------------------------------
-$ if key2a .eqs. "RECVFROM"
-$ then
-$ if key2 .eqs. "RECVFROM_QUAL_ARG5"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2'"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "RECVFROM_TYPE_ARG1"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' int"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "RECVFROM_TYPE_ARG2"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' void *"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "RECVFROM_TYPE_ARG3"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' size_t"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "RECVFROM_TYPE_ARG4"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' int"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "RECVFROM_TYPE_ARG5"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' struct sockaddr"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "RECVFROM_TYPE_ARG6"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' unsigned int"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "RECVFROM_TYPE_RETV"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' int"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ endif
-$!
-$! Process SELECT directives
-$!-------------------------------------
-$ if key2a .eqs. "SELECT"
-$ then
-$ if key2 .eqs. "SELECT_QUAL_ARG5"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' const"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "SELECT_TYPE_ARG1"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' int"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "SELECT_TYPE_ARG2"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' void *"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "SELECT_TYPE_ARG234"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' fd_set *"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "SELECT_TYPE_ARG5"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' struct timeval *"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ if key2 .eqs. "SELECT_TYPE_RETV"
-$ then
-$ write tf "#ifndef ''key2'"
-$ write tf "#define ''key2' int"
-$ write tf "#endif"
-$ goto cfgh_in_loop1
-$ endif
-$ endif
-$!
$! Process SEND directives
$!-------------------------------------
$ if key2a .eqs. "SEND"
diff --git a/packages/vms/curl_crtl_init.c b/packages/vms/curl_crtl_init.c
index 63c674275..8b5da62d5 100644
--- a/packages/vms/curl_crtl_init.c
+++ b/packages/vms/curl_crtl_init.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* File: curl_crtl_init.c
*
diff --git a/packages/vms/curl_gnv_build_steps.txt b/packages/vms/curl_gnv_build_steps.txt
index 2c3dba1da..6274b7bba 100644
--- a/packages/vms/curl_gnv_build_steps.txt
+++ b/packages/vms/curl_gnv_build_steps.txt
@@ -1,6 +1,6 @@
From File: curl_gnv_build_steps.txt
- Copyright 2009 - 2020, John Malmberg
+ Copyright 2013 - 2022, 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
@@ -14,6 +14,8 @@ From File: curl_gnv_build_steps.txt
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ SPDX-License-Identifier: ISC
+
Currently building Curl using GNV takes longer than building Curl via DCL.
The GNV procedure actually uses the same configure and makefiles that
Unix builds use.
diff --git a/packages/vms/curl_startup.com b/packages/vms/curl_startup.com
index b94ee7f44..47849dc2b 100644
--- a/packages/vms/curl_startup.com
+++ b/packages/vms/curl_startup.com
@@ -5,7 +5,7 @@ $!
$! Procedure to setup the CURL libraries for use by programs from the
$! VMS SYSTARTUP*.COM procedure.
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -19,6 +19,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 15-Jun-2009 J. Malmberg
$! 30-Jul-2013 J. Malmberg Update for Curl 7.32
$!========================================================================
diff --git a/packages/vms/curlmsg.h b/packages/vms/curlmsg.h
index b3d0b252b..7f7378d05 100644
--- a/packages/vms/curlmsg.h
+++ b/packages/vms/curlmsg.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#pragma __member_alignment __save
diff --git a/packages/vms/curlmsg.msg b/packages/vms/curlmsg.msg
index e86aee7c3..212249550 100644
--- a/packages/vms/curlmsg.msg
+++ b/packages/vms/curlmsg.msg
@@ -5,7 +5,7 @@
! | (__| |_| | _ <| |___
! \___|\___/|_| \_\_____|
!
-! Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+! Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
!
! This software is licensed as described in the file COPYING, which
! you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
! This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! KIND, either express or implied.
!
+! SPDX-License-Identifier: curl
+!
!##########################################################################
!
! These VMS error codes are generated by taking apart the curl.h
diff --git a/packages/vms/curlmsg_vms.h b/packages/vms/curlmsg_vms.h
index 3392a4cc4..f24a1991e 100644
--- a/packages/vms/curlmsg_vms.h
+++ b/packages/vms/curlmsg_vms.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* */
diff --git a/packages/vms/generate_config_vms_h_curl.com b/packages/vms/generate_config_vms_h_curl.com
index 07d3fb089..2741b7b3c 100644
--- a/packages/vms/generate_config_vms_h_curl.com
+++ b/packages/vms/generate_config_vms_h_curl.com
@@ -17,7 +17,7 @@ $! and the [.lib]config-vms.h file do two different tasks and that the
$! filenames are slightly different.
$!
$!
-$! Copyright 2013 - 2021, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -31,6 +31,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
$!
$! 06-Jan-2013 J. Malmberg
$!
@@ -425,12 +426,10 @@ $! Allow explicit experimentation.
$if libssh2
$then
$ write cvh "#define HAVE_LIBSSH2_EXIT 1"
-$ write cvh "#define HAVE_LIBSSH2_H 1"
$ write cvh "#define HAVE_LIBSSH2_INIT 1"
$ write cvh "#define HAVE_LIBSSH2_SCP_SEND64 1"
$ write cvh "#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1"
$ write cvh "#define HAVE_LIBSSH2_VERSION 1
-$ write cvh "#define HAVE_LIBSSH2 1
$!
$ write cvh "#ifndef USE_LIBSSH2"
$ write cvh "#define USE_LIBSSH2 1"
@@ -446,7 +445,6 @@ $!
$if .not. nozlib
$then
$ write cvh "#define HAVE_LIBZ 1"
-$ write cvh "#define HAVE_ZLIB_H 1"
$endif
$!
$!
diff --git a/packages/vms/generate_vax_transfer.com b/packages/vms/generate_vax_transfer.com
index 00020810f..f9d978b10 100644
--- a/packages/vms/generate_vax_transfer.com
+++ b/packages/vms/generate_vax_transfer.com
@@ -14,7 +14,7 @@ $! gnv_libcurl_xfer.obj
$! gnv_libcurl_xfer.opt
$! macro32_exactcase.exe
$!
-$! Copyright 2013 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -28,6 +28,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 20-Jul-2013 J. Malmberg
$!============================================================================
$!
diff --git a/packages/vms/gnv_conftest.c_first b/packages/vms/gnv_conftest.c_first
index 1d69600a2..2ee244735 100644
--- a/packages/vms/gnv_conftest.c_first
+++ b/packages/vms/gnv_conftest.c_first
@@ -2,7 +2,7 @@
*
* $Id$
*
- * Copyright 2009 - 2020, John Malmberg
+ * Copyright 2013 - 2022, 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
@@ -16,6 +16,8 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
+ * SPDX-License-Identifier: ISC
+ *
*/
/* This is needed for Configure tests to get the correct exit status */
diff --git a/packages/vms/gnv_curl_configure.sh b/packages/vms/gnv_curl_configure.sh
index 839a40bff..1cb0543cb 100644
--- a/packages/vms/gnv_curl_configure.sh
+++ b/packages/vms/gnv_curl_configure.sh
@@ -5,7 +5,7 @@
# Set up and run the configure script for Curl so that it can find the
# proper options for VMS.
#
-# Copyright 2009 - 2020, John Malmberg
+# Copyright 2013 - 2022, 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
@@ -19,6 +19,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
# 06-Jun-2009 J. Malmberg
# 28-Dec-2012 J. Malmberg Update for Bash 4.2.39
#==========================================================================
diff --git a/packages/vms/gnv_libcurl_symbols.opt b/packages/vms/gnv_libcurl_symbols.opt
index cae2a754b..eff1cbe97 100644
--- a/packages/vms/gnv_libcurl_symbols.opt
+++ b/packages/vms/gnv_libcurl_symbols.opt
@@ -41,7 +41,7 @@
! maintaining multiple versions as long as the routine can be called with
! the old number of parameters.
!
-! Copyright 2009 - 2020, John Malmberg
+! Copyright 2013 - 2022, 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
@@ -54,6 +54,8 @@
! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+!
+! SPDX-License-Identifier: ISC
!============================================================================
GSMATCH=LEQUAL,1,719050
CASE_SENSITIVE=YES
diff --git a/packages/vms/gnv_link_curl.com b/packages/vms/gnv_link_curl.com
index 0e2719cde..6e84229b4 100644
--- a/packages/vms/gnv_link_curl.com
+++ b/packages/vms/gnv_link_curl.com
@@ -4,7 +4,7 @@ $! $Id$
$!
$! File to build images using gnv$libcurl.exe
$!
-$! Copyright 2009 - 2021, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -18,6 +18,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 10-Jun-2009 J. Malmberg
$!============================================================================
$!
diff --git a/packages/vms/make_gnv_curl_install.sh b/packages/vms/make_gnv_curl_install.sh
index 699c8d2f2..bdc6077e9 100644
--- a/packages/vms/make_gnv_curl_install.sh
+++ b/packages/vms/make_gnv_curl_install.sh
@@ -7,7 +7,7 @@
# This makes the library, the curl binary and attempts an install.
# A search list should be set up for GNU (GNV$GNU).
#
-# Copyright 2009 - 2020, John Malmberg
+# Copyright 2013 - 2022, 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
@@ -21,6 +21,8 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# SPDX-License-Identifier: ISC
+#
# 06-Jun-2009 J. Malmberg
#==========================================================================
#
diff --git a/packages/vms/make_pcsi_curl_kit_name.com b/packages/vms/make_pcsi_curl_kit_name.com
index 2061429ae..08d347251 100644
--- a/packages/vms/make_pcsi_curl_kit_name.com
+++ b/packages/vms/make_pcsi_curl_kit_name.com
@@ -8,7 +8,7 @@ $!
$! The results are stored in as logical names so that other procedures
$! can use them.
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -22,6 +22,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 11-Jun-2009 J. Malmberg
$!
$!========================================================================
diff --git a/packages/vms/pcsi_gnv_curl_file_list.txt b/packages/vms/pcsi_gnv_curl_file_list.txt
index 6eb69c384..7015a800e 100644
--- a/packages/vms/pcsi_gnv_curl_file_list.txt
+++ b/packages/vms/pcsi_gnv_curl_file_list.txt
@@ -15,7 +15,7 @@
!
! [xxx.yyy]file.ext is a file for the rename and add phases.
!
-! Copyright 2009 - 2020, John Malmberg
+! Copyright 2013 - 2022, 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
@@ -29,6 +29,8 @@
! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
!
+! SPDX-License-Identifier: ISC
+!
! 15-Jun-2009 J. Malmberg
!============================================================================
[gnv.usr.bin]curl. -> [gnv.usr.bin]gnv$curl.exe
diff --git a/packages/vms/pcsi_product_gnv_curl.com b/packages/vms/pcsi_product_gnv_curl.com
index 0f9961f49..688c9c014 100644
--- a/packages/vms/pcsi_product_gnv_curl.com
+++ b/packages/vms/pcsi_product_gnv_curl.com
@@ -5,7 +5,7 @@ $!
$! This command file packages up the product CURL into a sequential
$! format kit
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -19,6 +19,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 16-Jun-2009 J.Malmberg
$!
$!=========================================================================
diff --git a/packages/vms/report_openssl_version.c b/packages/vms/report_openssl_version.c
index ccb363be4..493969616 100644
--- a/packages/vms/report_openssl_version.c
+++ b/packages/vms/report_openssl_version.c
@@ -9,7 +9,7 @@
*
* Usage: report_openssl_version <shared_image> [<dcl_symbol>]
*
- * Copyright 2013, John Malmberg
+ * Copyright 2013 - 2022, 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
@@ -23,6 +23,8 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
+ * SPDX-License-Identifier: ISC
+ *
*/
#include <dlfcn.h>
diff --git a/packages/vms/setup_gnv_curl_build.com b/packages/vms/setup_gnv_curl_build.com
index 45dcf0fb8..69aecc68d 100644
--- a/packages/vms/setup_gnv_curl_build.com
+++ b/packages/vms/setup_gnv_curl_build.com
@@ -7,7 +7,7 @@ $!
$! GNV needs some files moved into the other directories to help with
$! the configure script and the build.
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -21,6 +21,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
+$!
$! 30-May-2009 J. Malmberg
$!
$!=======================================================================
diff --git a/packages/vms/stage_curl_install.com b/packages/vms/stage_curl_install.com
index d79c9e33e..8c4cb05b5 100644
--- a/packages/vms/stage_curl_install.com
+++ b/packages/vms/stage_curl_install.com
@@ -24,7 +24,7 @@ $! [usr.share.man.man3]curl*.3
$! [usr.share.man.man3]libcurl*.3
$! Future: A symbolic link to the release notes?
$!
-$! Copyright 2012 - 2020, John Malmberg
+$! Copyright 2013 - 2022, 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
@@ -38,6 +38,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
+$! SPDX-License-Identifier: ISC
$!
$! 20-Aug-2012 J. Malmberg
$!
diff --git a/packages/vms/vms_eco_level.h b/packages/vms/vms_eco_level.h
index 05abe9101..cf2db53a3 100644
--- a/packages/vms/vms_eco_level.h
+++ b/packages/vms/vms_eco_level.h
@@ -2,7 +2,7 @@
*
* $Id$
*
- * Copyright 2012 - 2020, John Malmberg
+ * Copyright 2013 - 2022, 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
@@ -15,7 +15,9 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
+ *
+ * SPDX-License-Identifier: ISC
+ *
*/
/* This file should be incremented for each ECO that is kit */
diff --git a/plan9/include/mkfile b/plan9/include/mkfile
index cbf403f89..d61682b75 100644
--- a/plan9/include/mkfile
+++ b/plan9/include/mkfile
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
DIR=/sys/include/ape/curl
diff --git a/plan9/lib/mkfile b/plan9/lib/mkfile
index d64b465c0..45189485b 100644
--- a/plan9/lib/mkfile
+++ b/plan9/lib/mkfile
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
<../mkfile.proto
diff --git a/plan9/lib/mkfile.inc b/plan9/lib/mkfile.inc
index b202f57e3..bf677bd07 100755
--- a/plan9/lib/mkfile.inc
+++ b/plan9/lib/mkfile.inc
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# rename $(VAR) -> $VAR
diff --git a/plan9/mkfile b/plan9/mkfile
index 0fd18f493..f48d41237 100644
--- a/plan9/mkfile
+++ b/plan9/mkfile
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
</sys/src/ape/config
diff --git a/plan9/mkfile.proto b/plan9/mkfile.proto
index a88374cda..2557de795 100644
--- a/plan9/mkfile.proto
+++ b/plan9/mkfile.proto
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
</sys/src/ape/config
diff --git a/plan9/src/mkfile b/plan9/src/mkfile
index f75207890..0ec185b53 100644
--- a/plan9/src/mkfile
+++ b/plan9/src/mkfile
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
<../mkfile.proto
diff --git a/plan9/src/mkfile.inc b/plan9/src/mkfile.inc
index b202f57e3..bf677bd07 100755
--- a/plan9/src/mkfile.inc
+++ b/plan9/src/mkfile.inc
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# rename $(VAR) -> $VAR
diff --git a/projects/README b/projects/README
deleted file mode 100644
index 7a7698c2d..000000000
--- a/projects/README
+++ /dev/null
@@ -1,159 +0,0 @@
-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 v15.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, wolfSSL 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 and wolfSSL don't support side-by-side compilation when using
- different versions of Visual Studio, build helper batch files have been
- provided to assist with this. Please run "build-openssl -help" and/or
- "build-wolfssl -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:
-
- https://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 Windows SDK Update for Windows Vista:
- https://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.
-
-Running DLL based configurations
-================================
-
- If you are a developer and plan to run the curl tool from Visual Studio (eg
- you are debugging) with any third-party libraries (such as OpenSSL, wolfSSL
- or LibSSH2) then you will need to add the search path of these DLLs to the
- configuration's PATH environment. To do that:
-
- * Open the 'curl-all.sln' or 'curl.sln' solutions
-
- * Right-click on the 'curl' project and select Properties
-
- * Navigate to 'Configuration Properties > Debugging > Environment'
-
- * Add PATH='Path to DLL';C:\Windows\system32;C:\Windows;
- C:\Windows\System32\Wbem
-
- ... where 'Path to DLL` is the configuration specific path. For example the
- following configurations in Visual Studio 2010 might be:
-
- DLL Debug - DLL OpenSSL (Win32):
- PATH=..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
- C:\Windows;C:\Windows\System32\Wbem
-
- DLL Debug - DLL OpenSSL (x64):
- PATH=..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
- C:\Windows;C:\Windows\System32\Wbem
-
- DLL Debug - DLL wolfSSL (Win32):
- PATH=..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
- C:\Windows;C:\Windows\System32\Wbem
-
- DLL Debug - DLL wolfSSL (x64):
- PATH=..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
- C:\Windows;C:\Windows\System32\Wbem
-
- If you are using a configuration that uses multiple third-party library DLLs
- (such as DLL Debug - DLL OpenSSL - DLL LibSSH2) then 'Path to DLL' will need
- to contain the path to both of these.
-
-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 repository) will need to be modified rather than the
- generated project files that Visual Studio uses.
-
-Legacy Windows and SSL
-======================
-
- Some of the project configurations allow the use of Schannel, the native
- SSL library in Windows which forms part of Windows SSPI. However, Schannel
- in Windows <= XP is unable to connect to servers that no longer support the
- legacy handshakes and algorithms used by those versions. If you will be
- using curl in one of those earlier versions of Windows you should choose
- another SSL backend such as OpenSSL.
diff --git a/projects/README.md b/projects/README.md
new file mode 100644
index 000000000..fca9cf43e
--- /dev/null
+++ b/projects/README.md
@@ -0,0 +1,160 @@
+<!--
+Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
+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 available for several different Visual C++ versions. 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 VC10 and VC12) 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, wolfSSL and libssh2. 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 and wolfSSL don't support side-by-side compilation when using
+different versions of Visual Studio, build helper batch files have been
+provided to assist with this. Please run `build-openssl -help` and/or
+`build-wolfssl -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.
+
+Once you have VC++ installed you should launch the application and open one of
+the solution or workspace files. The VC directory names are based on the
+version of Visual C++ that you will be using. Each version of Visual Studio
+has a default version of Visual C++. We offer these versions:
+
+ - VC10 (Visual Studio 2010 Version 10.0)
+ - VC11 (Visual Studio 2012 Version 11.0)
+ - VC12 (Visual Studio 2013 Version 12.0)
+ - VC14 (Visual Studio 2015 Version 14.0)
+ - VC14.10 (Visual Studio 2017 Version 15.0)
+ - VC14.30 (Visual Studio 2022 Version 17.0)
+
+Separate solutions are provided for both libcurl and the curl command line
+tool as well as a solution that includes both projects. libcurl.sln, curl.sln
+and curl-all.sln, respectively. We recommend using curl-all.sln to build both
+projects.
+
+For example, if you are using Visual Studio 2022 then you should be able to
+use `VC14.30\curl-all.sln` to build curl and libcurl.
+
+## Running DLL based configurations
+
+If you are a developer and plan to run the curl tool from Visual Studio with
+any third-party libraries (such as OpenSSL, wolfSSL or LibSSH2) then you will
+need to add the search path of these DLLs to the configuration's PATH
+environment. To do that:
+
+ 1. Open the 'curl-all.sln' or 'curl.sln' solutions
+ 2. Right-click on the 'curl' project and select Properties
+ 3. Navigate to 'Configuration Properties > Debugging > Environment'
+ 4. Add `PATH='Path to DLL';C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem`
+
+... where 'Path to DLL` is the configuration specific path. For example the
+following configurations in Visual Studio 2010 might be:
+
+DLL Debug - DLL OpenSSL (Win32):
+
+ PATH=..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
+ C:\Windows;C:\Windows\System32\Wbem
+
+DLL Debug - DLL OpenSSL (x64):
+
+ PATH=..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
+ C:\Windows;C:\Windows\System32\Wbem
+
+DLL Debug - DLL wolfSSL (Win32):
+
+ PATH=..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
+ C:\Windows;C:\Windows\System32\Wbem
+
+DLL Debug - DLL wolfSSL (x64):
+
+ PATH=..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
+ C:\Windows;C:\Windows\System32\Wbem
+
+If you are using a configuration that uses multiple third-party library DLLs
+(such as DLL Debug - DLL OpenSSL - DLL LibSSH2) then 'Path to DLL' will need
+to contain the path to both of these.
+
+## Notes
+
+The following keywords have been used in the directory hierarchy:
+
+ - `<platform>` - The platform (For example: Windows)
+ - `<ide>` - The IDE (For example: VC10)
+ - `<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 repository) will need to be modified rather than the generated project
+files that Visual Studio uses.
+
+## Legacy Windows and SSL
+
+Some of the project configurations allow the use of Schannel, the native SSL
+library in Windows which forms part of Windows SSPI. However, Schannel in
+Windows <= XP is unable to connect to servers that no longer support the
+legacy handshakes and algorithms used by those versions. If you will be using
+curl in one of those earlier versions of Windows you should choose another SSL
+backend such as OpenSSL.
diff --git a/projects/Windows/VC10/lib/libcurl.vcxproj b/projects/Windows/VC10/lib/libcurl.vcxproj
index 8ddf84c02..e4574a101 100644
--- a/projects/Windows/VC10/lib/libcurl.vcxproj
+++ b/projects/Windows/VC10/lib/libcurl.vcxproj
@@ -895,13 +895,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -962,13 +963,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1028,12 +1030,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1093,12 +1096,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1137,13 +1141,14 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1183,13 +1188,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1224,12 +1230,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1270,12 +1277,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1688,7 +1696,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1722,7 +1730,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1756,7 +1764,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1788,7 +1796,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1853,7 +1861,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1876,7 +1884,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2025,7 +2033,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2048,7 +2056,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2112,7 +2120,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2135,7 +2143,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2284,7 +2292,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2307,7 +2315,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2335,7 +2343,6 @@
<ClCompile Include="..\..\..\..\lib\content_encoding.c" />
<ClCompile Include="..\..\..\..\lib\cookie.c" />
<ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_des.c" />
<ClCompile Include="..\..\..\..\lib\curl_endian.c" />
<ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
@@ -2354,7 +2361,6 @@
<ClCompile Include="..\..\..\..\lib\curl_threads.c" />
<ClCompile Include="..\..\..\..\lib\dict.c" />
<ClCompile Include="..\..\..\..\lib\doh.c" />
- <ClCompile Include="..\..\..\..\lib\dotdot.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\easy.c" />
<ClCompile Include="..\..\..\..\lib\easygetopt.c" />
@@ -2362,16 +2368,18 @@
<ClCompile Include="..\..\..\..\lib\escape.c" />
<ClCompile Include="..\..\..\..\lib\file.c" />
<ClCompile Include="..\..\..\..\lib\fileinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\fopen.c" />
<ClCompile Include="..\..\..\..\lib\formdata.c" />
<ClCompile Include="..\..\..\..\lib\ftp.c" />
<ClCompile Include="..\..\..\..\lib\ftplistparser.c" />
<ClCompile Include="..\..\..\..\lib\getenv.c" />
<ClCompile Include="..\..\..\..\lib\getinfo.c" />
<ClCompile Include="..\..\..\..\lib\gopher.c" />
+ <ClCompile Include="..\..\..\..\lib\h2h3.c" />
<ClCompile Include="..\..\..\..\lib\hash.c" />
+ <ClCompile Include="..\..\..\..\lib\headers.c" />
<ClCompile Include="..\..\..\..\lib\hmac.c" />
<ClCompile Include="..\..\..\..\lib\hostasyn.c" />
- <ClCompile Include="..\..\..\..\lib\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\hostip4.c" />
<ClCompile Include="..\..\..\..\lib\hostip6.c" />
<ClCompile Include="..\..\..\..\lib\hostip.c" />
@@ -2401,8 +2409,8 @@
<ClCompile Include="..\..\..\..\lib\mqtt.c" />
<ClCompile Include="..\..\..\..\lib\multi.c" />
<ClCompile Include="..\..\..\..\lib\netrc.c" />
- <ClCompile Include="..\..\..\..\lib\non-ascii.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\noproxy.c" />
<ClCompile Include="..\..\..\..\lib\openldap.c" />
<ClCompile Include="..\..\..\..\lib\parsedate.c" />
<ClCompile Include="..\..\..\..\lib\pingpong.c" />
@@ -2434,6 +2442,7 @@
<ClCompile Include="..\..\..\..\lib\system_win32.c" />
<ClCompile Include="..\..\..\..\lib\telnet.c" />
<ClCompile Include="..\..\..\..\lib\tftp.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\timeval.c" />
<ClCompile Include="..\..\..\..\lib\transfer.c" />
<ClCompile Include="..\..\..\..\lib\urlapi.c" />
@@ -2442,7 +2451,7 @@
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\lib\wildcard.c" />
- <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
+ <ClCompile Include="..\..\..\..\lib\ws.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
<ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
@@ -2456,6 +2465,7 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />
<ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
<ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
<ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />
@@ -2465,10 +2475,10 @@
<ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
<ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
<ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
@@ -2477,6 +2487,7 @@
<ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\lib\altsvc.h" />
@@ -2522,20 +2533,23 @@
<ClInclude Include="..\..\..\..\lib\curlx.h" />
<ClInclude Include="..\..\..\..\lib\dict.h" />
<ClInclude Include="..\..\..\..\lib\doh.h" />
- <ClInclude Include="..\..\..\..\lib\dotdot.h" />
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\easyif.h" />
+ <ClInclude Include="..\..\..\..\lib\easy_lock.h" />
<ClInclude Include="..\..\..\..\lib\easyoptions.h" />
<ClInclude Include="..\..\..\..\lib\escape.h" />
<ClInclude Include="..\..\..\..\lib\file.h" />
<ClInclude Include="..\..\..\..\lib\fileinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\fopen.h" />
<ClInclude Include="..\..\..\..\lib\formdata.h" />
<ClInclude Include="..\..\..\..\lib\ftp.h" />
<ClInclude Include="..\..\..\..\lib\ftplistparser.h" />
+ <ClInclude Include="..\..\..\..\lib\functypes.h" />
<ClInclude Include="..\..\..\..\lib\getinfo.h" />
<ClInclude Include="..\..\..\..\lib\gopher.h" />
+ <ClInclude Include="..\..\..\..\lib\h2h3.h" />
<ClInclude Include="..\..\..\..\lib\hash.h" />
- <ClInclude Include="..\..\..\..\lib\hostcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\headers.h" />
<ClInclude Include="..\..\..\..\lib\hostip.h" />
<ClInclude Include="..\..\..\..\lib\hsts.h" />
<ClInclude Include="..\..\..\..\lib\http2.h" />
@@ -2557,8 +2571,8 @@
<ClInclude Include="..\..\..\..\lib\multihandle.h" />
<ClInclude Include="..\..\..\..\lib\multiif.h" />
<ClInclude Include="..\..\..\..\lib\netrc.h" />
- <ClInclude Include="..\..\..\..\lib\non-ascii.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\noproxy.h" />
<ClInclude Include="..\..\..\..\lib\parsedate.h" />
<ClInclude Include="..\..\..\..\lib\pingpong.h" />
<ClInclude Include="..\..\..\..\lib\pop3.h" />
@@ -2590,6 +2604,7 @@
<ClInclude Include="..\..\..\..\lib\system_win32.h" />
<ClInclude Include="..\..\..\..\lib\telnet.h" />
<ClInclude Include="..\..\..\..\lib\tftp.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\timeval.h" />
<ClInclude Include="..\..\..\..\lib\transfer.h" />
<ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
@@ -2598,10 +2613,11 @@
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\lib\wildcard.h" />
- <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
+ <ClInclude Include="..\..\..\..\lib\ws.h" />
<ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />
<ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
<ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
<ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />
@@ -2609,10 +2625,10 @@
<ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />
<ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
<ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
<ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
@@ -2620,6 +2636,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
diff --git a/projects/Windows/VC10/src/curl.vcxproj b/projects/Windows/VC10/src/curl.vcxproj
index 4e688f306..66a3b2fba 100644
--- a/projects/Windows/VC10/src/curl.vcxproj
+++ b/projects/Windows/VC10/src/curl.vcxproj
@@ -2627,11 +2627,11 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
<ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\src\slist_wc.c" />
@@ -2644,7 +2644,6 @@
<ClCompile Include="..\..\..\..\src\tool_cb_see.c" />
<ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />
<ClCompile Include="..\..\..\..\src\tool_cfgable.c" />
- <ClCompile Include="..\..\..\..\src\tool_convert.c" />
<ClCompile Include="..\..\..\..\src\tool_dirhie.c" />
<ClCompile Include="..\..\..\..\src\tool_doswin.c" />
<ClCompile Include="..\..\..\..\src\tool_easysrc.c" />
@@ -2684,6 +2683,7 @@
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
<ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\src\slist_wc.h" />
@@ -2696,7 +2696,6 @@
<ClInclude Include="..\..\..\..\src\tool_cb_see.h" />
<ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />
<ClInclude Include="..\..\..\..\src\tool_cfgable.h" />
- <ClInclude Include="..\..\..\..\src\tool_convert.h" />
<ClInclude Include="..\..\..\..\src\tool_dirhie.h" />
<ClInclude Include="..\..\..\..\src\tool_doswin.h" />
<ClInclude Include="..\..\..\..\src\tool_easysrc.h" />
diff --git a/projects/Windows/VC11/lib/libcurl.vcxproj b/projects/Windows/VC11/lib/libcurl.vcxproj
index 2bbadab95..81c42455c 100644
--- a/projects/Windows/VC11/lib/libcurl.vcxproj
+++ b/projects/Windows/VC11/lib/libcurl.vcxproj
@@ -951,13 +951,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1018,13 +1019,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1084,12 +1086,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1149,12 +1152,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1193,13 +1197,14 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1239,13 +1244,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1280,12 +1286,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1326,12 +1333,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1744,7 +1752,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1778,7 +1786,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1812,7 +1820,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1844,7 +1852,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1909,7 +1917,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1932,7 +1940,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2081,7 +2089,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2104,7 +2112,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2168,7 +2176,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2191,7 +2199,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2340,7 +2348,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2363,7 +2371,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2391,7 +2399,6 @@
<ClCompile Include="..\..\..\..\lib\content_encoding.c" />
<ClCompile Include="..\..\..\..\lib\cookie.c" />
<ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_des.c" />
<ClCompile Include="..\..\..\..\lib\curl_endian.c" />
<ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
@@ -2410,7 +2417,6 @@
<ClCompile Include="..\..\..\..\lib\curl_threads.c" />
<ClCompile Include="..\..\..\..\lib\dict.c" />
<ClCompile Include="..\..\..\..\lib\doh.c" />
- <ClCompile Include="..\..\..\..\lib\dotdot.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\easy.c" />
<ClCompile Include="..\..\..\..\lib\easygetopt.c" />
@@ -2418,16 +2424,18 @@
<ClCompile Include="..\..\..\..\lib\escape.c" />
<ClCompile Include="..\..\..\..\lib\file.c" />
<ClCompile Include="..\..\..\..\lib\fileinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\fopen.c" />
<ClCompile Include="..\..\..\..\lib\formdata.c" />
<ClCompile Include="..\..\..\..\lib\ftp.c" />
<ClCompile Include="..\..\..\..\lib\ftplistparser.c" />
<ClCompile Include="..\..\..\..\lib\getenv.c" />
<ClCompile Include="..\..\..\..\lib\getinfo.c" />
<ClCompile Include="..\..\..\..\lib\gopher.c" />
+ <ClCompile Include="..\..\..\..\lib\h2h3.c" />
<ClCompile Include="..\..\..\..\lib\hash.c" />
+ <ClCompile Include="..\..\..\..\lib\headers.c" />
<ClCompile Include="..\..\..\..\lib\hmac.c" />
<ClCompile Include="..\..\..\..\lib\hostasyn.c" />
- <ClCompile Include="..\..\..\..\lib\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\hostip4.c" />
<ClCompile Include="..\..\..\..\lib\hostip6.c" />
<ClCompile Include="..\..\..\..\lib\hostip.c" />
@@ -2457,8 +2465,8 @@
<ClCompile Include="..\..\..\..\lib\mqtt.c" />
<ClCompile Include="..\..\..\..\lib\multi.c" />
<ClCompile Include="..\..\..\..\lib\netrc.c" />
- <ClCompile Include="..\..\..\..\lib\non-ascii.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\noproxy.c" />
<ClCompile Include="..\..\..\..\lib\openldap.c" />
<ClCompile Include="..\..\..\..\lib\parsedate.c" />
<ClCompile Include="..\..\..\..\lib\pingpong.c" />
@@ -2490,6 +2498,7 @@
<ClCompile Include="..\..\..\..\lib\system_win32.c" />
<ClCompile Include="..\..\..\..\lib\telnet.c" />
<ClCompile Include="..\..\..\..\lib\tftp.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\timeval.c" />
<ClCompile Include="..\..\..\..\lib\transfer.c" />
<ClCompile Include="..\..\..\..\lib\urlapi.c" />
@@ -2498,7 +2507,7 @@
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\lib\wildcard.c" />
- <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
+ <ClCompile Include="..\..\..\..\lib\ws.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
<ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
@@ -2512,6 +2521,7 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />
<ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
<ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
<ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />
@@ -2521,10 +2531,10 @@
<ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
<ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
<ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
@@ -2533,6 +2543,7 @@
<ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\lib\altsvc.h" />
@@ -2578,20 +2589,23 @@
<ClInclude Include="..\..\..\..\lib\curlx.h" />
<ClInclude Include="..\..\..\..\lib\dict.h" />
<ClInclude Include="..\..\..\..\lib\doh.h" />
- <ClInclude Include="..\..\..\..\lib\dotdot.h" />
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\easyif.h" />
+ <ClInclude Include="..\..\..\..\lib\easy_lock.h" />
<ClInclude Include="..\..\..\..\lib\easyoptions.h" />
<ClInclude Include="..\..\..\..\lib\escape.h" />
<ClInclude Include="..\..\..\..\lib\file.h" />
<ClInclude Include="..\..\..\..\lib\fileinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\fopen.h" />
<ClInclude Include="..\..\..\..\lib\formdata.h" />
<ClInclude Include="..\..\..\..\lib\ftp.h" />
<ClInclude Include="..\..\..\..\lib\ftplistparser.h" />
+ <ClInclude Include="..\..\..\..\lib\functypes.h" />
<ClInclude Include="..\..\..\..\lib\getinfo.h" />
<ClInclude Include="..\..\..\..\lib\gopher.h" />
+ <ClInclude Include="..\..\..\..\lib\h2h3.h" />
<ClInclude Include="..\..\..\..\lib\hash.h" />
- <ClInclude Include="..\..\..\..\lib\hostcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\headers.h" />
<ClInclude Include="..\..\..\..\lib\hostip.h" />
<ClInclude Include="..\..\..\..\lib\hsts.h" />
<ClInclude Include="..\..\..\..\lib\http2.h" />
@@ -2613,8 +2627,8 @@
<ClInclude Include="..\..\..\..\lib\multihandle.h" />
<ClInclude Include="..\..\..\..\lib\multiif.h" />
<ClInclude Include="..\..\..\..\lib\netrc.h" />
- <ClInclude Include="..\..\..\..\lib\non-ascii.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\noproxy.h" />
<ClInclude Include="..\..\..\..\lib\parsedate.h" />
<ClInclude Include="..\..\..\..\lib\pingpong.h" />
<ClInclude Include="..\..\..\..\lib\pop3.h" />
@@ -2646,6 +2660,7 @@
<ClInclude Include="..\..\..\..\lib\system_win32.h" />
<ClInclude Include="..\..\..\..\lib\telnet.h" />
<ClInclude Include="..\..\..\..\lib\tftp.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\timeval.h" />
<ClInclude Include="..\..\..\..\lib\transfer.h" />
<ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
@@ -2654,10 +2669,11 @@
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\lib\wildcard.h" />
- <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
+ <ClInclude Include="..\..\..\..\lib\ws.h" />
<ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />
<ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
<ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
<ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />
@@ -2665,10 +2681,10 @@
<ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />
<ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
<ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
<ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
@@ -2676,6 +2692,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
diff --git a/projects/Windows/VC11/src/curl.vcxproj b/projects/Windows/VC11/src/curl.vcxproj
index 9fad5aaef..a1b4e761d 100644
--- a/projects/Windows/VC11/src/curl.vcxproj
+++ b/projects/Windows/VC11/src/curl.vcxproj
@@ -2683,11 +2683,11 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
<ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\src\slist_wc.c" />
@@ -2700,7 +2700,6 @@
<ClCompile Include="..\..\..\..\src\tool_cb_see.c" />
<ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />
<ClCompile Include="..\..\..\..\src\tool_cfgable.c" />
- <ClCompile Include="..\..\..\..\src\tool_convert.c" />
<ClCompile Include="..\..\..\..\src\tool_dirhie.c" />
<ClCompile Include="..\..\..\..\src\tool_doswin.c" />
<ClCompile Include="..\..\..\..\src\tool_easysrc.c" />
@@ -2740,6 +2739,7 @@
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
<ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\src\slist_wc.h" />
@@ -2752,7 +2752,6 @@
<ClInclude Include="..\..\..\..\src\tool_cb_see.h" />
<ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />
<ClInclude Include="..\..\..\..\src\tool_cfgable.h" />
- <ClInclude Include="..\..\..\..\src\tool_convert.h" />
<ClInclude Include="..\..\..\..\src\tool_dirhie.h" />
<ClInclude Include="..\..\..\..\src\tool_doswin.h" />
<ClInclude Include="..\..\..\..\src\tool_easysrc.h" />
diff --git a/projects/Windows/VC12/lib/libcurl.vcxproj b/projects/Windows/VC12/lib/libcurl.vcxproj
index 779211a28..9e62139ba 100644
--- a/projects/Windows/VC12/lib/libcurl.vcxproj
+++ b/projects/Windows/VC12/lib/libcurl.vcxproj
@@ -951,13 +951,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1018,13 +1019,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1084,12 +1086,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1149,12 +1152,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1193,13 +1197,14 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1239,13 +1244,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1280,12 +1286,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1326,12 +1333,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1744,7 +1752,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1778,7 +1786,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1812,7 +1820,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1844,7 +1852,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1909,7 +1917,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1932,7 +1940,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2081,7 +2089,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2104,7 +2112,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2168,7 +2176,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2191,7 +2199,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2340,7 +2348,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2363,7 +2371,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2391,7 +2399,6 @@
<ClCompile Include="..\..\..\..\lib\content_encoding.c" />
<ClCompile Include="..\..\..\..\lib\cookie.c" />
<ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_des.c" />
<ClCompile Include="..\..\..\..\lib\curl_endian.c" />
<ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
@@ -2410,7 +2417,6 @@
<ClCompile Include="..\..\..\..\lib\curl_threads.c" />
<ClCompile Include="..\..\..\..\lib\dict.c" />
<ClCompile Include="..\..\..\..\lib\doh.c" />
- <ClCompile Include="..\..\..\..\lib\dotdot.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\easy.c" />
<ClCompile Include="..\..\..\..\lib\easygetopt.c" />
@@ -2418,16 +2424,18 @@
<ClCompile Include="..\..\..\..\lib\escape.c" />
<ClCompile Include="..\..\..\..\lib\file.c" />
<ClCompile Include="..\..\..\..\lib\fileinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\fopen.c" />
<ClCompile Include="..\..\..\..\lib\formdata.c" />
<ClCompile Include="..\..\..\..\lib\ftp.c" />
<ClCompile Include="..\..\..\..\lib\ftplistparser.c" />
<ClCompile Include="..\..\..\..\lib\getenv.c" />
<ClCompile Include="..\..\..\..\lib\getinfo.c" />
<ClCompile Include="..\..\..\..\lib\gopher.c" />
+ <ClCompile Include="..\..\..\..\lib\h2h3.c" />
<ClCompile Include="..\..\..\..\lib\hash.c" />
+ <ClCompile Include="..\..\..\..\lib\headers.c" />
<ClCompile Include="..\..\..\..\lib\hmac.c" />
<ClCompile Include="..\..\..\..\lib\hostasyn.c" />
- <ClCompile Include="..\..\..\..\lib\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\hostip4.c" />
<ClCompile Include="..\..\..\..\lib\hostip6.c" />
<ClCompile Include="..\..\..\..\lib\hostip.c" />
@@ -2457,8 +2465,8 @@
<ClCompile Include="..\..\..\..\lib\mqtt.c" />
<ClCompile Include="..\..\..\..\lib\multi.c" />
<ClCompile Include="..\..\..\..\lib\netrc.c" />
- <ClCompile Include="..\..\..\..\lib\non-ascii.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\noproxy.c" />
<ClCompile Include="..\..\..\..\lib\openldap.c" />
<ClCompile Include="..\..\..\..\lib\parsedate.c" />
<ClCompile Include="..\..\..\..\lib\pingpong.c" />
@@ -2490,6 +2498,7 @@
<ClCompile Include="..\..\..\..\lib\system_win32.c" />
<ClCompile Include="..\..\..\..\lib\telnet.c" />
<ClCompile Include="..\..\..\..\lib\tftp.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\timeval.c" />
<ClCompile Include="..\..\..\..\lib\transfer.c" />
<ClCompile Include="..\..\..\..\lib\urlapi.c" />
@@ -2498,7 +2507,7 @@
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\lib\wildcard.c" />
- <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
+ <ClCompile Include="..\..\..\..\lib\ws.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
<ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
@@ -2512,6 +2521,7 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />
<ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
<ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
<ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />
@@ -2521,10 +2531,10 @@
<ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
<ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
<ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
@@ -2533,6 +2543,7 @@
<ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\lib\altsvc.h" />
@@ -2578,20 +2589,23 @@
<ClInclude Include="..\..\..\..\lib\curlx.h" />
<ClInclude Include="..\..\..\..\lib\dict.h" />
<ClInclude Include="..\..\..\..\lib\doh.h" />
- <ClInclude Include="..\..\..\..\lib\dotdot.h" />
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\easyif.h" />
+ <ClInclude Include="..\..\..\..\lib\easy_lock.h" />
<ClInclude Include="..\..\..\..\lib\easyoptions.h" />
<ClInclude Include="..\..\..\..\lib\escape.h" />
<ClInclude Include="..\..\..\..\lib\file.h" />
<ClInclude Include="..\..\..\..\lib\fileinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\fopen.h" />
<ClInclude Include="..\..\..\..\lib\formdata.h" />
<ClInclude Include="..\..\..\..\lib\ftp.h" />
<ClInclude Include="..\..\..\..\lib\ftplistparser.h" />
+ <ClInclude Include="..\..\..\..\lib\functypes.h" />
<ClInclude Include="..\..\..\..\lib\getinfo.h" />
<ClInclude Include="..\..\..\..\lib\gopher.h" />
+ <ClInclude Include="..\..\..\..\lib\h2h3.h" />
<ClInclude Include="..\..\..\..\lib\hash.h" />
- <ClInclude Include="..\..\..\..\lib\hostcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\headers.h" />
<ClInclude Include="..\..\..\..\lib\hostip.h" />
<ClInclude Include="..\..\..\..\lib\hsts.h" />
<ClInclude Include="..\..\..\..\lib\http2.h" />
@@ -2613,8 +2627,8 @@
<ClInclude Include="..\..\..\..\lib\multihandle.h" />
<ClInclude Include="..\..\..\..\lib\multiif.h" />
<ClInclude Include="..\..\..\..\lib\netrc.h" />
- <ClInclude Include="..\..\..\..\lib\non-ascii.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\noproxy.h" />
<ClInclude Include="..\..\..\..\lib\parsedate.h" />
<ClInclude Include="..\..\..\..\lib\pingpong.h" />
<ClInclude Include="..\..\..\..\lib\pop3.h" />
@@ -2646,6 +2660,7 @@
<ClInclude Include="..\..\..\..\lib\system_win32.h" />
<ClInclude Include="..\..\..\..\lib\telnet.h" />
<ClInclude Include="..\..\..\..\lib\tftp.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\timeval.h" />
<ClInclude Include="..\..\..\..\lib\transfer.h" />
<ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
@@ -2654,10 +2669,11 @@
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\lib\wildcard.h" />
- <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
+ <ClInclude Include="..\..\..\..\lib\ws.h" />
<ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />
<ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
<ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
<ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />
@@ -2665,10 +2681,10 @@
<ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />
<ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
<ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
<ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
@@ -2676,6 +2692,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
diff --git a/projects/Windows/VC12/src/curl.vcxproj b/projects/Windows/VC12/src/curl.vcxproj
index 1d5e73fd7..0ef2cb262 100644
--- a/projects/Windows/VC12/src/curl.vcxproj
+++ b/projects/Windows/VC12/src/curl.vcxproj
@@ -2683,11 +2683,11 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
<ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\src\slist_wc.c" />
@@ -2700,7 +2700,6 @@
<ClCompile Include="..\..\..\..\src\tool_cb_see.c" />
<ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />
<ClCompile Include="..\..\..\..\src\tool_cfgable.c" />
- <ClCompile Include="..\..\..\..\src\tool_convert.c" />
<ClCompile Include="..\..\..\..\src\tool_dirhie.c" />
<ClCompile Include="..\..\..\..\src\tool_doswin.c" />
<ClCompile Include="..\..\..\..\src\tool_easysrc.c" />
@@ -2740,6 +2739,7 @@
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
<ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\src\slist_wc.h" />
@@ -2752,7 +2752,6 @@
<ClInclude Include="..\..\..\..\src\tool_cb_see.h" />
<ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />
<ClInclude Include="..\..\..\..\src\tool_cfgable.h" />
- <ClInclude Include="..\..\..\..\src\tool_convert.h" />
<ClInclude Include="..\..\..\..\src\tool_dirhie.h" />
<ClInclude Include="..\..\..\..\src\tool_doswin.h" />
<ClInclude Include="..\..\..\..\src\tool_easysrc.h" />
diff --git a/projects/Windows/VC15/curl-all.sln b/projects/Windows/VC14.10/curl-all.sln
index d4576a1cf..d4576a1cf 100644
--- a/projects/Windows/VC15/curl-all.sln
+++ b/projects/Windows/VC14.10/curl-all.sln
diff --git a/projects/Windows/VC15/lib/libcurl.sln b/projects/Windows/VC14.10/lib/libcurl.sln
index 4de796cee..4de796cee 100644
--- a/projects/Windows/VC15/lib/libcurl.sln
+++ b/projects/Windows/VC14.10/lib/libcurl.sln
diff --git a/projects/Windows/VC15/lib/libcurl.vcxproj b/projects/Windows/VC14.10/lib/libcurl.vcxproj
index 90514897a..ccf69d653 100644
--- a/projects/Windows/VC15/lib/libcurl.vcxproj
+++ b/projects/Windows/VC14.10/lib/libcurl.vcxproj
@@ -741,141 +741,141 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
@@ -950,12 +950,13 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -964,7 +965,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
@@ -1015,12 +1016,13 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1029,7 +1031,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
@@ -1080,12 +1082,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1094,7 +1097,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
@@ -1145,12 +1148,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1159,7 +1163,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -1188,12 +1192,13 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1232,12 +1237,13 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1272,12 +1278,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1318,12 +1325,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1345,7 +1353,7 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1359,7 +1367,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
@@ -1378,7 +1386,7 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1392,7 +1400,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
@@ -1411,7 +1419,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -1425,7 +1433,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
@@ -1443,7 +1451,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -1457,7 +1465,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -1729,8 +1737,8 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
@@ -1743,7 +1751,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
@@ -1762,8 +1770,8 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
@@ -1776,7 +1784,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
@@ -1795,8 +1803,8 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1809,7 +1817,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
@@ -1827,8 +1835,8 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1841,7 +1849,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -1849,7 +1857,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1871,7 +1879,7 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1890,8 +1898,8 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
@@ -1912,8 +1920,8 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
@@ -2013,7 +2021,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2035,7 +2043,7 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2054,8 +2062,8 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
@@ -2076,8 +2084,8 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
@@ -2096,7 +2104,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -2119,7 +2127,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -2139,8 +2147,8 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2162,8 +2170,8 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2268,7 +2276,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -2291,7 +2299,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@@ -2311,8 +2319,8 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2334,8 +2342,8 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2363,7 +2371,6 @@
<ClCompile Include="..\..\..\..\lib\content_encoding.c" />
<ClCompile Include="..\..\..\..\lib\cookie.c" />
<ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_des.c" />
<ClCompile Include="..\..\..\..\lib\curl_endian.c" />
<ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
@@ -2382,7 +2389,6 @@
<ClCompile Include="..\..\..\..\lib\curl_threads.c" />
<ClCompile Include="..\..\..\..\lib\dict.c" />
<ClCompile Include="..\..\..\..\lib\doh.c" />
- <ClCompile Include="..\..\..\..\lib\dotdot.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\easy.c" />
<ClCompile Include="..\..\..\..\lib\easygetopt.c" />
@@ -2390,16 +2396,18 @@
<ClCompile Include="..\..\..\..\lib\escape.c" />
<ClCompile Include="..\..\..\..\lib\file.c" />
<ClCompile Include="..\..\..\..\lib\fileinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\fopen.c" />
<ClCompile Include="..\..\..\..\lib\formdata.c" />
<ClCompile Include="..\..\..\..\lib\ftp.c" />
<ClCompile Include="..\..\..\..\lib\ftplistparser.c" />
<ClCompile Include="..\..\..\..\lib\getenv.c" />
<ClCompile Include="..\..\..\..\lib\getinfo.c" />
<ClCompile Include="..\..\..\..\lib\gopher.c" />
+ <ClCompile Include="..\..\..\..\lib\h2h3.c" />
<ClCompile Include="..\..\..\..\lib\hash.c" />
+ <ClCompile Include="..\..\..\..\lib\headers.c" />
<ClCompile Include="..\..\..\..\lib\hmac.c" />
<ClCompile Include="..\..\..\..\lib\hostasyn.c" />
- <ClCompile Include="..\..\..\..\lib\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\hostip4.c" />
<ClCompile Include="..\..\..\..\lib\hostip6.c" />
<ClCompile Include="..\..\..\..\lib\hostip.c" />
@@ -2429,8 +2437,8 @@
<ClCompile Include="..\..\..\..\lib\mqtt.c" />
<ClCompile Include="..\..\..\..\lib\multi.c" />
<ClCompile Include="..\..\..\..\lib\netrc.c" />
- <ClCompile Include="..\..\..\..\lib\non-ascii.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\noproxy.c" />
<ClCompile Include="..\..\..\..\lib\openldap.c" />
<ClCompile Include="..\..\..\..\lib\parsedate.c" />
<ClCompile Include="..\..\..\..\lib\pingpong.c" />
@@ -2462,6 +2470,7 @@
<ClCompile Include="..\..\..\..\lib\system_win32.c" />
<ClCompile Include="..\..\..\..\lib\telnet.c" />
<ClCompile Include="..\..\..\..\lib\tftp.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\timeval.c" />
<ClCompile Include="..\..\..\..\lib\transfer.c" />
<ClCompile Include="..\..\..\..\lib\urlapi.c" />
@@ -2470,7 +2479,7 @@
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\lib\wildcard.c" />
- <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
+ <ClCompile Include="..\..\..\..\lib\ws.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
<ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
@@ -2484,6 +2493,7 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />
<ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
<ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
<ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />
@@ -2493,10 +2503,10 @@
<ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
<ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
<ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
@@ -2505,6 +2515,7 @@
<ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\lib\altsvc.h" />
@@ -2550,20 +2561,23 @@
<ClInclude Include="..\..\..\..\lib\curlx.h" />
<ClInclude Include="..\..\..\..\lib\dict.h" />
<ClInclude Include="..\..\..\..\lib\doh.h" />
- <ClInclude Include="..\..\..\..\lib\dotdot.h" />
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\easyif.h" />
+ <ClInclude Include="..\..\..\..\lib\easy_lock.h" />
<ClInclude Include="..\..\..\..\lib\easyoptions.h" />
<ClInclude Include="..\..\..\..\lib\escape.h" />
<ClInclude Include="..\..\..\..\lib\file.h" />
<ClInclude Include="..\..\..\..\lib\fileinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\fopen.h" />
<ClInclude Include="..\..\..\..\lib\formdata.h" />
<ClInclude Include="..\..\..\..\lib\ftp.h" />
<ClInclude Include="..\..\..\..\lib\ftplistparser.h" />
+ <ClInclude Include="..\..\..\..\lib\functypes.h" />
<ClInclude Include="..\..\..\..\lib\getinfo.h" />
<ClInclude Include="..\..\..\..\lib\gopher.h" />
+ <ClInclude Include="..\..\..\..\lib\h2h3.h" />
<ClInclude Include="..\..\..\..\lib\hash.h" />
- <ClInclude Include="..\..\..\..\lib\hostcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\headers.h" />
<ClInclude Include="..\..\..\..\lib\hostip.h" />
<ClInclude Include="..\..\..\..\lib\hsts.h" />
<ClInclude Include="..\..\..\..\lib\http2.h" />
@@ -2585,8 +2599,8 @@
<ClInclude Include="..\..\..\..\lib\multihandle.h" />
<ClInclude Include="..\..\..\..\lib\multiif.h" />
<ClInclude Include="..\..\..\..\lib\netrc.h" />
- <ClInclude Include="..\..\..\..\lib\non-ascii.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\noproxy.h" />
<ClInclude Include="..\..\..\..\lib\parsedate.h" />
<ClInclude Include="..\..\..\..\lib\pingpong.h" />
<ClInclude Include="..\..\..\..\lib\pop3.h" />
@@ -2618,6 +2632,7 @@
<ClInclude Include="..\..\..\..\lib\system_win32.h" />
<ClInclude Include="..\..\..\..\lib\telnet.h" />
<ClInclude Include="..\..\..\..\lib\tftp.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\timeval.h" />
<ClInclude Include="..\..\..\..\lib\transfer.h" />
<ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
@@ -2626,10 +2641,11 @@
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\lib\wildcard.h" />
- <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
+ <ClInclude Include="..\..\..\..\lib\ws.h" />
<ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />
<ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
<ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
<ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />
@@ -2637,10 +2653,10 @@
<ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />
<ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
<ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
<ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
@@ -2648,6 +2664,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
diff --git a/projects/Windows/VC15/lib/libcurl.vcxproj.filters b/projects/Windows/VC14.10/lib/libcurl.vcxproj.filters
index 4d6341d74..4d6341d74 100644
--- a/projects/Windows/VC15/lib/libcurl.vcxproj.filters
+++ b/projects/Windows/VC14.10/lib/libcurl.vcxproj.filters
diff --git a/projects/Windows/VC15/src/curl.sln b/projects/Windows/VC14.10/src/curl.sln
index 16d22965f..16d22965f 100644
--- a/projects/Windows/VC15/src/curl.sln
+++ b/projects/Windows/VC14.10/src/curl.sln
diff --git a/projects/Windows/VC15/src/curl.vcxproj b/projects/Windows/VC14.10/src/curl.vcxproj
index d41652a06..032e826dc 100644
--- a/projects/Windows/VC15/src/curl.vcxproj
+++ b/projects/Windows/VC14.10/src/curl.vcxproj
@@ -741,170 +741,170 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>
@@ -990,7 +990,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -1019,7 +1019,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -1051,7 +1051,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -1081,7 +1081,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -1112,7 +1112,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -1141,7 +1141,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -1173,7 +1173,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -1203,7 +1203,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -1233,7 +1233,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1263,7 +1263,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1294,7 +1294,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1325,7 +1325,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1355,7 +1355,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1385,7 +1385,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1416,7 +1416,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1447,7 +1447,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1477,7 +1477,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1508,7 +1508,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1538,7 +1538,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1568,7 +1568,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1599,7 +1599,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1630,7 +1630,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1661,7 +1661,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -1691,7 +1691,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -1720,7 +1720,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -1749,7 +1749,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -1779,7 +1779,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -1809,7 +1809,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -1837,7 +1837,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1868,7 +1868,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1899,7 +1899,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -1929,7 +1929,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -1957,7 +1957,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -1988,7 +1988,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2019,7 +2019,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -2049,7 +2049,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -2077,7 +2077,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2108,7 +2108,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2139,7 +2139,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -2169,7 +2169,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -2197,7 +2197,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2228,7 +2228,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2259,7 +2259,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -2289,7 +2289,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -2317,7 +2317,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2348,7 +2348,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2379,7 +2379,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -2409,7 +2409,7 @@
<Link>
<AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -2437,7 +2437,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2467,7 +2467,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2498,7 +2498,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2529,7 +2529,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
@@ -2560,7 +2560,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -2589,7 +2589,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
@@ -2619,7 +2619,7 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
@@ -2649,17 +2649,17 @@
<Link>
<AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
<ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\src\slist_wc.c" />
@@ -2672,7 +2672,6 @@
<ClCompile Include="..\..\..\..\src\tool_cb_see.c" />
<ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />
<ClCompile Include="..\..\..\..\src\tool_cfgable.c" />
- <ClCompile Include="..\..\..\..\src\tool_convert.c" />
<ClCompile Include="..\..\..\..\src\tool_dirhie.c" />
<ClCompile Include="..\..\..\..\src\tool_doswin.c" />
<ClCompile Include="..\..\..\..\src\tool_easysrc.c" />
@@ -2712,6 +2711,7 @@
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
<ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\src\slist_wc.h" />
@@ -2724,7 +2724,6 @@
<ClInclude Include="..\..\..\..\src\tool_cb_see.h" />
<ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />
<ClInclude Include="..\..\..\..\src\tool_cfgable.h" />
- <ClInclude Include="..\..\..\..\src\tool_convert.h" />
<ClInclude Include="..\..\..\..\src\tool_dirhie.h" />
<ClInclude Include="..\..\..\..\src\tool_doswin.h" />
<ClInclude Include="..\..\..\..\src\tool_easysrc.h" />
diff --git a/projects/Windows/VC15/src/curl.vcxproj.filters b/projects/Windows/VC14.10/src/curl.vcxproj.filters
index 4d6341d74..4d6341d74 100644
--- a/projects/Windows/VC15/src/curl.vcxproj.filters
+++ b/projects/Windows/VC14.10/src/curl.vcxproj.filters
diff --git a/projects/Windows/VC8/curl-all.sln b/projects/Windows/VC14.30/curl-all.sln
index 02961e033..88bf032b0 100644
--- a/projects/Windows/VC8/curl-all.sln
+++ b/projects/Windows/VC14.30/curl-all.sln
@@ -1,11 +1,11 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.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.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -17,6 +17,8 @@ Global
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 - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|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
@@ -27,6 +29,8 @@ Global
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 - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|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
@@ -41,6 +45,8 @@ Global
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 - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|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
@@ -55,6 +61,8 @@ Global
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 - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -75,6 +83,10 @@ Global
{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 - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|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
@@ -95,6 +107,10 @@ Global
{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 - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|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
@@ -123,6 +139,10 @@ Global
{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 - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|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
@@ -151,6 +171,10 @@ Global
{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 - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|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
@@ -171,6 +195,10 @@ Global
{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 - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|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
@@ -191,6 +219,10 @@ Global
{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 - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|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
@@ -219,6 +251,10 @@ Global
{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 - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|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
@@ -247,6 +283,10 @@ Global
{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 - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|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
diff --git a/projects/Windows/VC8/lib/libcurl.sln b/projects/Windows/VC14.30/lib/libcurl.sln
index b9cd13e77..171bb83fa 100644
--- a/projects/Windows/VC8/lib/libcurl.sln
+++ b/projects/Windows/VC14.30/lib/libcurl.sln
@@ -1,6 +1,6 @@
-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}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,6 +12,8 @@ Global
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 - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|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
@@ -22,6 +24,8 @@ Global
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 - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|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
@@ -36,6 +40,8 @@ Global
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 - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|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
@@ -50,6 +56,8 @@ Global
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 - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -70,6 +78,10 @@ Global
{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 - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|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
@@ -90,6 +102,10 @@ Global
{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 - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|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
@@ -118,6 +134,10 @@ Global
{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 - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|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
@@ -146,6 +166,10 @@ Global
{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 - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|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
diff --git a/projects/Windows/VC14.30/lib/libcurl.vcxproj b/projects/Windows/VC14.30/lib/libcurl.vcxproj
new file mode 100644
index 000000000..65a601757
--- /dev/null
+++ b/projects/Windows/VC14.30/lib/libcurl.vcxproj
@@ -0,0 +1,2675 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">
+ <Configuration>DLL Debug - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">
+ <Configuration>DLL Debug - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">
+ <Configuration>DLL Debug - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">
+ <Configuration>DLL Debug - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug|Win32">
+ <Configuration>DLL Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug|x64">
+ <Configuration>DLL Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">
+ <Configuration>DLL Release - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">
+ <Configuration>DLL Release - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">
+ <Configuration>DLL Release - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">
+ <Configuration>DLL Release - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release|Win32">
+ <Configuration>DLL Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release|x64">
+ <Configuration>DLL Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">
+ <Configuration>LIB Debug - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">
+ <Configuration>LIB Debug - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">
+ <Configuration>LIB Debug - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">
+ <Configuration>LIB Debug - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
+ <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">
+ <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">
+ <Configuration>LIB Debug - LIB OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">
+ <Configuration>LIB Debug - LIB OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug|Win32">
+ <Configuration>LIB Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug|x64">
+ <Configuration>LIB Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">
+ <Configuration>LIB Release - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">
+ <Configuration>LIB Release - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">
+ <Configuration>LIB Release - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">
+ <Configuration>LIB Release - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
+ <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">
+ <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">
+ <Configuration>LIB Release - LIB OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">
+ <Configuration>LIB Release - LIB OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release|Win32">
+ <Configuration>LIB Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release|x64">
+ <Configuration>LIB Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>
+ <RootNamespace>libcurl</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\altsvc.c" />
+ <ClCompile Include="..\..\..\..\lib\amigaos.c" />
+ <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
+ <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
+ <ClCompile Include="..\..\..\..\lib\base64.c" />
+ <ClCompile Include="..\..\..\..\lib\bufref.c" />
+ <ClCompile Include="..\..\..\..\lib\c-hyper.c" />
+ <ClCompile Include="..\..\..\..\lib\conncache.c" />
+ <ClCompile Include="..\..\..\..\lib\connect.c" />
+ <ClCompile Include="..\..\..\..\lib\content_encoding.c" />
+ <ClCompile Include="..\..\..\..\lib\cookie.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_des.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_endian.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_get_line.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_path.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_range.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\curl_threads.c" />
+ <ClCompile Include="..\..\..\..\lib\dict.c" />
+ <ClCompile Include="..\..\..\..\lib\doh.c" />
+ <ClCompile Include="..\..\..\..\lib\dynbuf.c" />
+ <ClCompile Include="..\..\..\..\lib\easy.c" />
+ <ClCompile Include="..\..\..\..\lib\easygetopt.c" />
+ <ClCompile Include="..\..\..\..\lib\easyoptions.c" />
+ <ClCompile Include="..\..\..\..\lib\escape.c" />
+ <ClCompile Include="..\..\..\..\lib\file.c" />
+ <ClCompile Include="..\..\..\..\lib\fileinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\fopen.c" />
+ <ClCompile Include="..\..\..\..\lib\formdata.c" />
+ <ClCompile Include="..\..\..\..\lib\ftp.c" />
+ <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />
+ <ClCompile Include="..\..\..\..\lib\getenv.c" />
+ <ClCompile Include="..\..\..\..\lib\getinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\gopher.c" />
+ <ClCompile Include="..\..\..\..\lib\h2h3.c" />
+ <ClCompile Include="..\..\..\..\lib\hash.c" />
+ <ClCompile Include="..\..\..\..\lib\headers.c" />
+ <ClCompile Include="..\..\..\..\lib\hmac.c" />
+ <ClCompile Include="..\..\..\..\lib\hostasyn.c" />
+ <ClCompile Include="..\..\..\..\lib\hostip4.c" />
+ <ClCompile Include="..\..\..\..\lib\hostip6.c" />
+ <ClCompile Include="..\..\..\..\lib\hostip.c" />
+ <ClCompile Include="..\..\..\..\lib\hostsyn.c" />
+ <ClCompile Include="..\..\..\..\lib\hsts.c" />
+ <ClCompile Include="..\..\..\..\lib\http2.c" />
+ <ClCompile Include="..\..\..\..\lib\http_aws_sigv4.c" />
+ <ClCompile Include="..\..\..\..\lib\http.c" />
+ <ClCompile Include="..\..\..\..\lib\http_chunks.c" />
+ <ClCompile Include="..\..\..\..\lib\http_digest.c" />
+ <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />
+ <ClCompile Include="..\..\..\..\lib\http_ntlm.c" />
+ <ClCompile Include="..\..\..\..\lib\http_proxy.c" />
+ <ClCompile Include="..\..\..\..\lib\idn_win32.c" />
+ <ClCompile Include="..\..\..\..\lib\if2ip.c" />
+ <ClCompile Include="..\..\..\..\lib\imap.c" />
+ <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />
+ <ClCompile Include="..\..\..\..\lib\inet_pton.c" />
+ <ClCompile Include="..\..\..\..\lib\krb5.c" />
+ <ClCompile Include="..\..\..\..\lib\ldap.c" />
+ <ClCompile Include="..\..\..\..\lib\llist.c" />
+ <ClCompile Include="..\..\..\..\lib\md4.c" />
+ <ClCompile Include="..\..\..\..\lib\md5.c" />
+ <ClCompile Include="..\..\..\..\lib\memdebug.c" />
+ <ClCompile Include="..\..\..\..\lib\mime.c" />
+ <ClCompile Include="..\..\..\..\lib\mprintf.c" />
+ <ClCompile Include="..\..\..\..\lib\mqtt.c" />
+ <ClCompile Include="..\..\..\..\lib\multi.c" />
+ <ClCompile Include="..\..\..\..\lib\netrc.c" />
+ <ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\noproxy.c" />
+ <ClCompile Include="..\..\..\..\lib\openldap.c" />
+ <ClCompile Include="..\..\..\..\lib\parsedate.c" />
+ <ClCompile Include="..\..\..\..\lib\pingpong.c" />
+ <ClCompile Include="..\..\..\..\lib\pop3.c" />
+ <ClCompile Include="..\..\..\..\lib\progress.c" />
+ <ClCompile Include="..\..\..\..\lib\psl.c" />
+ <ClCompile Include="..\..\..\..\lib\rand.c" />
+ <ClCompile Include="..\..\..\..\lib\rename.c" />
+ <ClCompile Include="..\..\..\..\lib\rtsp.c" />
+ <ClCompile Include="..\..\..\..\lib\select.c" />
+ <ClCompile Include="..\..\..\..\lib\sendf.c" />
+ <ClCompile Include="..\..\..\..\lib\setopt.c" />
+ <ClCompile Include="..\..\..\..\lib\sha256.c" />
+ <ClCompile Include="..\..\..\..\lib\share.c" />
+ <ClCompile Include="..\..\..\..\lib\slist.c" />
+ <ClCompile Include="..\..\..\..\lib\smb.c" />
+ <ClCompile Include="..\..\..\..\lib\smtp.c" />
+ <ClCompile Include="..\..\..\..\lib\socketpair.c" />
+ <ClCompile Include="..\..\..\..\lib\socks.c" />
+ <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
+ <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
+ <ClCompile Include="..\..\..\..\lib\splay.c" />
+ <ClCompile Include="..\..\..\..\lib\strcase.c" />
+ <ClCompile Include="..\..\..\..\lib\strdup.c" />
+ <ClCompile Include="..\..\..\..\lib\strerror.c" />
+ <ClCompile Include="..\..\..\..\lib\strtok.c" />
+ <ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\system_win32.c" />
+ <ClCompile Include="..\..\..\..\lib\telnet.c" />
+ <ClCompile Include="..\..\..\..\lib\tftp.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
+ <ClCompile Include="..\..\..\..\lib\timeval.c" />
+ <ClCompile Include="..\..\..\..\lib\transfer.c" />
+ <ClCompile Include="..\..\..\..\lib\urlapi.c" />
+ <ClCompile Include="..\..\..\..\lib\url.c" />
+ <ClCompile Include="..\..\..\..\lib\version.c" />
+ <ClCompile Include="..\..\..\..\lib\version_win32.c" />
+ <ClCompile Include="..\..\..\..\lib\warnless.c" />
+ <ClCompile Include="..\..\..\..\lib\wildcard.c" />
+ <ClCompile Include="..\..\..\..\lib\ws.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
+ <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />
+ <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />
+ <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />
+ <ClCompile Include="..\..\..\..\lib\vssh\wolfssh.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\altsvc.h" />
+ <ClInclude Include="..\..\..\..\lib\amigaos.h" />
+ <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
+ <ClInclude Include="..\..\..\..\lib\asyn.h" />
+ <ClInclude Include="..\..\..\..\lib\bufref.h" />
+ <ClInclude Include="..\..\..\..\lib\c-hyper.h" />
+ <ClInclude Include="..\..\..\..\lib\config-win32.h" />
+ <ClInclude Include="..\..\..\..\lib\conncache.h" />
+ <ClInclude Include="..\..\..\..\lib\connect.h" />
+ <ClInclude Include="..\..\..\..\lib\content_encoding.h" />
+ <ClInclude Include="..\..\..\..\lib\cookie.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_base64.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_des.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_endian.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_get_line.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_krb5.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_md4.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_md5.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_memory.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_path.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_printf.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_range.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_setup.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_sha256.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_threads.h" />
+ <ClInclude Include="..\..\..\..\lib\curlx.h" />
+ <ClInclude Include="..\..\..\..\lib\dict.h" />
+ <ClInclude Include="..\..\..\..\lib\doh.h" />
+ <ClInclude Include="..\..\..\..\lib\dynbuf.h" />
+ <ClInclude Include="..\..\..\..\lib\easyif.h" />
+ <ClInclude Include="..\..\..\..\lib\easy_lock.h" />
+ <ClInclude Include="..\..\..\..\lib\easyoptions.h" />
+ <ClInclude Include="..\..\..\..\lib\escape.h" />
+ <ClInclude Include="..\..\..\..\lib\file.h" />
+ <ClInclude Include="..\..\..\..\lib\fileinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\fopen.h" />
+ <ClInclude Include="..\..\..\..\lib\formdata.h" />
+ <ClInclude Include="..\..\..\..\lib\ftp.h" />
+ <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />
+ <ClInclude Include="..\..\..\..\lib\functypes.h" />
+ <ClInclude Include="..\..\..\..\lib\getinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\gopher.h" />
+ <ClInclude Include="..\..\..\..\lib\h2h3.h" />
+ <ClInclude Include="..\..\..\..\lib\hash.h" />
+ <ClInclude Include="..\..\..\..\lib\headers.h" />
+ <ClInclude Include="..\..\..\..\lib\hostip.h" />
+ <ClInclude Include="..\..\..\..\lib\hsts.h" />
+ <ClInclude Include="..\..\..\..\lib\http2.h" />
+ <ClInclude Include="..\..\..\..\lib\http_aws_sigv4.h" />
+ <ClInclude Include="..\..\..\..\lib\http_chunks.h" />
+ <ClInclude Include="..\..\..\..\lib\http_digest.h" />
+ <ClInclude Include="..\..\..\..\lib\http.h" />
+ <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />
+ <ClInclude Include="..\..\..\..\lib\http_ntlm.h" />
+ <ClInclude Include="..\..\..\..\lib\http_proxy.h" />
+ <ClInclude Include="..\..\..\..\lib\if2ip.h" />
+ <ClInclude Include="..\..\..\..\lib\imap.h" />
+ <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />
+ <ClInclude Include="..\..\..\..\lib\inet_pton.h" />
+ <ClInclude Include="..\..\..\..\lib\llist.h" />
+ <ClInclude Include="..\..\..\..\lib\memdebug.h" />
+ <ClInclude Include="..\..\..\..\lib\mime.h" />
+ <ClInclude Include="..\..\..\..\lib\mqtt.h" />
+ <ClInclude Include="..\..\..\..\lib\multihandle.h" />
+ <ClInclude Include="..\..\..\..\lib\multiif.h" />
+ <ClInclude Include="..\..\..\..\lib\netrc.h" />
+ <ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\noproxy.h" />
+ <ClInclude Include="..\..\..\..\lib\parsedate.h" />
+ <ClInclude Include="..\..\..\..\lib\pingpong.h" />
+ <ClInclude Include="..\..\..\..\lib\pop3.h" />
+ <ClInclude Include="..\..\..\..\lib\progress.h" />
+ <ClInclude Include="..\..\..\..\lib\psl.h" />
+ <ClInclude Include="..\..\..\..\lib\quic.h" />
+ <ClInclude Include="..\..\..\..\lib\rand.h" />
+ <ClInclude Include="..\..\..\..\lib\rename.h" />
+ <ClInclude Include="..\..\..\..\lib\rtsp.h" />
+ <ClInclude Include="..\..\..\..\lib\select.h" />
+ <ClInclude Include="..\..\..\..\lib\sendf.h" />
+ <ClInclude Include="..\..\..\..\lib\setopt.h" />
+ <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
+ <ClInclude Include="..\..\..\..\lib\share.h" />
+ <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
+ <ClInclude Include="..\..\..\..\lib\slist.h" />
+ <ClInclude Include="..\..\..\..\lib\smb.h" />
+ <ClInclude Include="..\..\..\..\lib\smtp.h" />
+ <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
+ <ClInclude Include="..\..\..\..\lib\socketpair.h" />
+ <ClInclude Include="..\..\..\..\lib\socks.h" />
+ <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\splay.h" />
+ <ClInclude Include="..\..\..\..\lib\strcase.h" />
+ <ClInclude Include="..\..\..\..\lib\strdup.h" />
+ <ClInclude Include="..\..\..\..\lib\strerror.h" />
+ <ClInclude Include="..\..\..\..\lib\strtok.h" />
+ <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\system_win32.h" />
+ <ClInclude Include="..\..\..\..\lib\telnet.h" />
+ <ClInclude Include="..\..\..\..\lib\tftp.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
+ <ClInclude Include="..\..\..\..\lib\timeval.h" />
+ <ClInclude Include="..\..\..\..\lib\transfer.h" />
+ <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
+ <ClInclude Include="..\..\..\..\lib\urldata.h" />
+ <ClInclude Include="..\..\..\..\lib\url.h" />
+ <ClInclude Include="..\..\..\..\lib\version_win32.h" />
+ <ClInclude Include="..\..\..\..\lib\warnless.h" />
+ <ClInclude Include="..\..\..\..\lib\wildcard.h" />
+ <ClInclude Include="..\..\..\..\lib\ws.h" />
+ <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
+ <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
+ <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />
+ <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/projects/Windows/VC14.30/lib/libcurl.vcxproj.filters b/projects/Windows/VC14.30/lib/libcurl.vcxproj.filters
new file mode 100644
index 000000000..4d6341d74
--- /dev/null
+++ b/projects/Windows/VC14.30/lib/libcurl.vcxproj.filters
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/projects/Windows/VC9/src/curl.sln b/projects/Windows/VC14.30/src/curl.sln
index 7a41e7aa2..16d22965f 100644
--- a/projects/Windows/VC9/src/curl.sln
+++ b/projects/Windows/VC14.30/src/curl.sln
@@ -1,6 +1,6 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,6 +12,8 @@ Global
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 - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+ DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|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
@@ -22,6 +24,8 @@ Global
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 - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+ DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|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
@@ -36,6 +40,8 @@ Global
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 - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+ LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|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
@@ -50,6 +56,8 @@ Global
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 - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+ LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
LIB Release|Win32 = LIB Release|Win32
LIB Release|x64 = LIB Release|x64
EndGlobalSection
@@ -70,6 +78,10 @@ Global
{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 - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|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
@@ -90,6 +102,10 @@ Global
{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 - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|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
@@ -118,6 +134,10 @@ Global
{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 - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|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
@@ -146,6 +166,10 @@ Global
{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 - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+ {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|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
diff --git a/projects/Windows/VC14.30/src/curl.vcxproj b/projects/Windows/VC14.30/src/curl.vcxproj
new file mode 100644
index 000000000..8da28ab77
--- /dev/null
+++ b/projects/Windows/VC14.30/src/curl.vcxproj
@@ -0,0 +1,2766 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">
+ <Configuration>DLL Debug - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">
+ <Configuration>DLL Debug - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">
+ <Configuration>DLL Debug - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">
+ <Configuration>DLL Debug - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">
+ <Configuration>DLL Debug - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug|Win32">
+ <Configuration>DLL Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Debug|x64">
+ <Configuration>DLL Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">
+ <Configuration>DLL Release - DLL wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">
+ <Configuration>DLL Release - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">
+ <Configuration>DLL Release - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">
+ <Configuration>DLL Release - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">
+ <Configuration>DLL Release - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release|Win32">
+ <Configuration>DLL Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="DLL Release|x64">
+ <Configuration>DLL Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">
+ <Configuration>LIB Debug - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">
+ <Configuration>LIB Debug - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">
+ <Configuration>LIB Debug - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">
+ <Configuration>LIB Debug - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">
+ <Configuration>LIB Debug - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">
+ <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">
+ <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">
+ <Configuration>LIB Debug - LIB OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">
+ <Configuration>LIB Debug - LIB OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug|Win32">
+ <Configuration>LIB Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Debug|x64">
+ <Configuration>LIB Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">
+ <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">
+ <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">
+ <Configuration>LIB Release - DLL OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">
+ <Configuration>LIB Release - DLL OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">
+ <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">
+ <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">
+ <Configuration>LIB Release - DLL Windows SSPI</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">
+ <Configuration>LIB Release - DLL Windows SSPI</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">
+ <Configuration>LIB Release - LIB wolfSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">
+ <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">
+ <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">
+ <Configuration>LIB Release - LIB OpenSSL</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">
+ <Configuration>LIB Release - LIB OpenSSL</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release|Win32">
+ <Configuration>LIB Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="LIB Release|x64">
+ <Configuration>LIB Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>
+ <RootNamespace>curl</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v143</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">
+ <Midl>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />
+ <ClCompile Include="..\..\..\..\lib\dynbuf.c" />
+ <ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
+ <ClCompile Include="..\..\..\..\lib\version_win32.c" />
+ <ClCompile Include="..\..\..\..\lib\warnless.c" />
+ <ClCompile Include="..\..\..\..\src\slist_wc.c" />
+ <ClCompile Include="..\..\..\..\src\tool_binmode.c" />
+ <ClCompile Include="..\..\..\..\src\tool_bname.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />
+ <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />
+ <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />
+ <ClCompile Include="..\..\..\..\src\tool_doswin.c" />
+ <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />
+ <ClCompile Include="..\..\..\..\src\tool_filetime.c" />
+ <ClCompile Include="..\..\..\..\src\tool_findfile.c" />
+ <ClCompile Include="..\..\..\..\src\tool_formparse.c" />
+ <ClCompile Include="..\..\..\..\src\tool_getparam.c" />
+ <ClCompile Include="..\..\..\..\src\tool_getpass.c" />
+ <ClCompile Include="..\..\..\..\src\tool_help.c" />
+ <ClCompile Include="..\..\..\..\src\tool_helpers.c" />
+ <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />
+ <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />
+ <ClCompile Include="..\..\..\..\src\tool_listhelp.c" />
+ <ClCompile Include="..\..\..\..\src\tool_main.c" />
+ <ClCompile Include="..\..\..\..\src\tool_msgs.c" />
+ <ClCompile Include="..\..\..\..\src\tool_operate.c" />
+ <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />
+ <ClCompile Include="..\..\..\..\src\tool_panykey.c" />
+ <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />
+ <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_progress.c" />
+ <ClCompile Include="..\..\..\..\src\tool_setopt.c" />
+ <ClCompile Include="..\..\..\..\src\tool_sleep.c" />
+ <ClCompile Include="..\..\..\..\src\tool_strdup.c" />
+ <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />
+ <ClCompile Include="..\..\..\..\src\tool_util.c" />
+ <ClCompile Include="..\..\..\..\src\tool_vms.c" />
+ <ClCompile Include="..\..\..\..\src\tool_writeout.c" />
+ <ClCompile Include="..\..\..\..\src\tool_writeout_json.c" />
+ <ClCompile Include="..\..\..\..\src\tool_xattr.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\config-win32.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />
+ <ClInclude Include="..\..\..\..\lib\curl_setup.h" />
+ <ClInclude Include="..\..\..\..\lib\dynbuf.h" />
+ <ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
+ <ClInclude Include="..\..\..\..\lib\version_win32.h" />
+ <ClInclude Include="..\..\..\..\lib\warnless.h" />
+ <ClInclude Include="..\..\..\..\src\slist_wc.h" />
+ <ClInclude Include="..\..\..\..\src\tool_binmode.h" />
+ <ClInclude Include="..\..\..\..\src\tool_bname.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />
+ <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />
+ <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />
+ <ClInclude Include="..\..\..\..\src\tool_doswin.h" />
+ <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />
+ <ClInclude Include="..\..\..\..\src\tool_filetime.h" />
+ <ClInclude Include="..\..\..\..\src\tool_findfile.h" />
+ <ClInclude Include="..\..\..\..\src\tool_formparse.h" />
+ <ClInclude Include="..\..\..\..\src\tool_getparam.h" />
+ <ClInclude Include="..\..\..\..\src\tool_getpass.h" />
+ <ClInclude Include="..\..\..\..\src\tool_helpers.h" />
+ <ClInclude Include="..\..\..\..\src\tool_help.h" />
+ <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />
+ <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />
+ <ClInclude Include="..\..\..\..\src\tool_main.h" />
+ <ClInclude Include="..\..\..\..\src\tool_msgs.h" />
+ <ClInclude Include="..\..\..\..\src\tool_operate.h" />
+ <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />
+ <ClInclude Include="..\..\..\..\src\tool_panykey.h" />
+ <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />
+ <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_progress.h" />
+ <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />
+ <ClInclude Include="..\..\..\..\src\tool_setopt.h" />
+ <ClInclude Include="..\..\..\..\src\tool_setup.h" />
+ <ClInclude Include="..\..\..\..\src\tool_sleep.h" />
+ <ClInclude Include="..\..\..\..\src\tool_strdup.h" />
+ <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />
+ <ClInclude Include="..\..\..\..\src\tool_util.h" />
+ <ClInclude Include="..\..\..\..\src\tool_version.h" />
+ <ClInclude Include="..\..\..\..\src\tool_vms.h" />
+ <ClInclude Include="..\..\..\..\src\tool_writeout.h" />
+ <ClInclude Include="..\..\..\..\src\tool_writeout_json.h" />
+ <ClInclude Include="..\..\..\..\src\tool_xattr.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="..\..\..\..\src\curl.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/projects/Windows/VC14.30/src/curl.vcxproj.filters b/projects/Windows/VC14.30/src/curl.vcxproj.filters
new file mode 100644
index 000000000..4d6341d74
--- /dev/null
+++ b/projects/Windows/VC14.30/src/curl.vcxproj.filters
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/projects/Windows/VC14/lib/libcurl.vcxproj b/projects/Windows/VC14/lib/libcurl.vcxproj
index c7b860ca3..7f8d052c2 100644
--- a/projects/Windows/VC14/lib/libcurl.vcxproj
+++ b/projects/Windows/VC14/lib/libcurl.vcxproj
@@ -951,13 +951,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1018,13 +1019,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1084,12 +1086,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1149,12 +1152,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1193,13 +1197,14 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1239,13 +1244,14 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1280,12 +1286,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1326,12 +1333,13 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4214</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1744,7 +1752,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1778,7 +1786,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1812,7 +1820,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1844,7 +1852,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -1909,7 +1917,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -1932,7 +1940,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2081,7 +2089,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2104,7 +2112,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -2168,7 +2176,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2191,7 +2199,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2340,7 +2348,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2363,7 +2371,7 @@
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -2391,7 +2399,6 @@
<ClCompile Include="..\..\..\..\lib\content_encoding.c" />
<ClCompile Include="..\..\..\..\lib\cookie.c" />
<ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_des.c" />
<ClCompile Include="..\..\..\..\lib\curl_endian.c" />
<ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />
@@ -2410,7 +2417,6 @@
<ClCompile Include="..\..\..\..\lib\curl_threads.c" />
<ClCompile Include="..\..\..\..\lib\dict.c" />
<ClCompile Include="..\..\..\..\lib\doh.c" />
- <ClCompile Include="..\..\..\..\lib\dotdot.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\easy.c" />
<ClCompile Include="..\..\..\..\lib\easygetopt.c" />
@@ -2418,16 +2424,18 @@
<ClCompile Include="..\..\..\..\lib\escape.c" />
<ClCompile Include="..\..\..\..\lib\file.c" />
<ClCompile Include="..\..\..\..\lib\fileinfo.c" />
+ <ClCompile Include="..\..\..\..\lib\fopen.c" />
<ClCompile Include="..\..\..\..\lib\formdata.c" />
<ClCompile Include="..\..\..\..\lib\ftp.c" />
<ClCompile Include="..\..\..\..\lib\ftplistparser.c" />
<ClCompile Include="..\..\..\..\lib\getenv.c" />
<ClCompile Include="..\..\..\..\lib\getinfo.c" />
<ClCompile Include="..\..\..\..\lib\gopher.c" />
+ <ClCompile Include="..\..\..\..\lib\h2h3.c" />
<ClCompile Include="..\..\..\..\lib\hash.c" />
+ <ClCompile Include="..\..\..\..\lib\headers.c" />
<ClCompile Include="..\..\..\..\lib\hmac.c" />
<ClCompile Include="..\..\..\..\lib\hostasyn.c" />
- <ClCompile Include="..\..\..\..\lib\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\hostip4.c" />
<ClCompile Include="..\..\..\..\lib\hostip6.c" />
<ClCompile Include="..\..\..\..\lib\hostip.c" />
@@ -2457,8 +2465,8 @@
<ClCompile Include="..\..\..\..\lib\mqtt.c" />
<ClCompile Include="..\..\..\..\lib\multi.c" />
<ClCompile Include="..\..\..\..\lib\netrc.c" />
- <ClCompile Include="..\..\..\..\lib\non-ascii.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
+ <ClCompile Include="..\..\..\..\lib\noproxy.c" />
<ClCompile Include="..\..\..\..\lib\openldap.c" />
<ClCompile Include="..\..\..\..\lib\parsedate.c" />
<ClCompile Include="..\..\..\..\lib\pingpong.c" />
@@ -2490,6 +2498,7 @@
<ClCompile Include="..\..\..\..\lib\system_win32.c" />
<ClCompile Include="..\..\..\..\lib\telnet.c" />
<ClCompile Include="..\..\..\..\lib\tftp.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\timeval.c" />
<ClCompile Include="..\..\..\..\lib\transfer.c" />
<ClCompile Include="..\..\..\..\lib\urlapi.c" />
@@ -2498,7 +2507,7 @@
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\lib\wildcard.c" />
- <ClCompile Include="..\..\..\..\lib\x509asn1.c" />
+ <ClCompile Include="..\..\..\..\lib\ws.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />
<ClCompile Include="..\..\..\..\lib\vauth\cram.c" />
<ClCompile Include="..\..\..\..\lib\vauth\digest.c" />
@@ -2512,6 +2521,7 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
+ <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />
<ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
<ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
<ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />
@@ -2521,10 +2531,10 @@
<ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />
<ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
<ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
<ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />
@@ -2533,6 +2543,7 @@
<ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\lib\altsvc.h" />
@@ -2578,20 +2589,23 @@
<ClInclude Include="..\..\..\..\lib\curlx.h" />
<ClInclude Include="..\..\..\..\lib\dict.h" />
<ClInclude Include="..\..\..\..\lib\doh.h" />
- <ClInclude Include="..\..\..\..\lib\dotdot.h" />
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\easyif.h" />
+ <ClInclude Include="..\..\..\..\lib\easy_lock.h" />
<ClInclude Include="..\..\..\..\lib\easyoptions.h" />
<ClInclude Include="..\..\..\..\lib\escape.h" />
<ClInclude Include="..\..\..\..\lib\file.h" />
<ClInclude Include="..\..\..\..\lib\fileinfo.h" />
+ <ClInclude Include="..\..\..\..\lib\fopen.h" />
<ClInclude Include="..\..\..\..\lib\formdata.h" />
<ClInclude Include="..\..\..\..\lib\ftp.h" />
<ClInclude Include="..\..\..\..\lib\ftplistparser.h" />
+ <ClInclude Include="..\..\..\..\lib\functypes.h" />
<ClInclude Include="..\..\..\..\lib\getinfo.h" />
<ClInclude Include="..\..\..\..\lib\gopher.h" />
+ <ClInclude Include="..\..\..\..\lib\h2h3.h" />
<ClInclude Include="..\..\..\..\lib\hash.h" />
- <ClInclude Include="..\..\..\..\lib\hostcheck.h" />
+ <ClInclude Include="..\..\..\..\lib\headers.h" />
<ClInclude Include="..\..\..\..\lib\hostip.h" />
<ClInclude Include="..\..\..\..\lib\hsts.h" />
<ClInclude Include="..\..\..\..\lib\http2.h" />
@@ -2613,8 +2627,8 @@
<ClInclude Include="..\..\..\..\lib\multihandle.h" />
<ClInclude Include="..\..\..\..\lib\multiif.h" />
<ClInclude Include="..\..\..\..\lib\netrc.h" />
- <ClInclude Include="..\..\..\..\lib\non-ascii.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
+ <ClInclude Include="..\..\..\..\lib\noproxy.h" />
<ClInclude Include="..\..\..\..\lib\parsedate.h" />
<ClInclude Include="..\..\..\..\lib\pingpong.h" />
<ClInclude Include="..\..\..\..\lib\pop3.h" />
@@ -2646,6 +2660,7 @@
<ClInclude Include="..\..\..\..\lib\system_win32.h" />
<ClInclude Include="..\..\..\..\lib\telnet.h" />
<ClInclude Include="..\..\..\..\lib\tftp.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\timeval.h" />
<ClInclude Include="..\..\..\..\lib\transfer.h" />
<ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
@@ -2654,10 +2669,11 @@
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\lib\wildcard.h" />
- <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
+ <ClInclude Include="..\..\..\..\lib\ws.h" />
<ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
+ <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />
<ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
<ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
<ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />
@@ -2665,10 +2681,10 @@
<ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />
<ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
<ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
<ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />
@@ -2676,6 +2692,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />
diff --git a/projects/Windows/VC14/src/curl.vcxproj b/projects/Windows/VC14/src/curl.vcxproj
index 744d31baf..aa7ff0236 100644
--- a/projects/Windows/VC14/src/curl.vcxproj
+++ b/projects/Windows/VC14/src/curl.vcxproj
@@ -2683,11 +2683,11 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />
<ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />
<ClCompile Include="..\..\..\..\lib\dynbuf.c" />
<ClCompile Include="..\..\..\..\lib\nonblock.c" />
<ClCompile Include="..\..\..\..\lib\strtoofft.c" />
+ <ClCompile Include="..\..\..\..\lib\timediff.c" />
<ClCompile Include="..\..\..\..\lib\version_win32.c" />
<ClCompile Include="..\..\..\..\lib\warnless.c" />
<ClCompile Include="..\..\..\..\src\slist_wc.c" />
@@ -2700,7 +2700,6 @@
<ClCompile Include="..\..\..\..\src\tool_cb_see.c" />
<ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />
<ClCompile Include="..\..\..\..\src\tool_cfgable.c" />
- <ClCompile Include="..\..\..\..\src\tool_convert.c" />
<ClCompile Include="..\..\..\..\src\tool_dirhie.c" />
<ClCompile Include="..\..\..\..\src\tool_doswin.c" />
<ClCompile Include="..\..\..\..\src\tool_easysrc.c" />
@@ -2740,6 +2739,7 @@
<ClInclude Include="..\..\..\..\lib\dynbuf.h" />
<ClInclude Include="..\..\..\..\lib\nonblock.h" />
<ClInclude Include="..\..\..\..\lib\strtoofft.h" />
+ <ClInclude Include="..\..\..\..\lib\timediff.h" />
<ClInclude Include="..\..\..\..\lib\version_win32.h" />
<ClInclude Include="..\..\..\..\lib\warnless.h" />
<ClInclude Include="..\..\..\..\src\slist_wc.h" />
@@ -2752,7 +2752,6 @@
<ClInclude Include="..\..\..\..\src\tool_cb_see.h" />
<ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />
<ClInclude Include="..\..\..\..\src\tool_cfgable.h" />
- <ClInclude Include="..\..\..\..\src\tool_convert.h" />
<ClInclude Include="..\..\..\..\src\tool_dirhie.h" />
<ClInclude Include="..\..\..\..\src\tool_doswin.h" />
<ClInclude Include="..\..\..\..\src\tool_easysrc.h" />
diff --git a/projects/Windows/VC6/curl-all.dsw b/projects/Windows/VC6/curl-all.dsw
deleted file mode 100644
index a718e59a9..000000000
--- a/projects/Windows/VC6/curl-all.dsw
+++ /dev/null
@@ -1,44 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "libcurl"=".\lib\libcurl.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "curl"=".\src\curl.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name libcurl
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/projects/Windows/VC6/lib/libcurl.dsp b/projects/Windows/VC6/lib/libcurl.dsp
deleted file mode 100644
index db26bb0d2..000000000
--- a/projects/Windows/VC6/lib/libcurl.dsp
+++ /dev/null
@@ -1,1925 +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 "libcurl.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 "libcurl.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 Debug DLL OpenSSL" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (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 "..\..\..\..\build\Win32\VC6\DLL Debug"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /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 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
-# 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
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Debug DLL OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\lib"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /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 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /fixed:no
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /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 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.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
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\lib"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /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 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\lib"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /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 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.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
-# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.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
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /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 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Release DLL OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\lib"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /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 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no /release
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /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 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.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
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\lib"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /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
-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 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\lib"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\lib"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /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
-# ADD CPP /nologo /MD /W4 /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
-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 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
-# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /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:"..\..\..\..\build\Win32\VC6\LIB Debug\libcurld.lib" /machine:I386
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug\libcurld.lib" /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Debug DLL OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /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:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\libcurld.lib" /machine:I386
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\libcurld.lib" /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /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:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\libcurld.lib" /machine:I386
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\libcurld.lib" /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Debug DLL Windows SSPI"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /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:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\libcurld.lib" /machine:I386
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\libcurld.lib" /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /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:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\libcurld.lib" /machine:I386
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\libcurld.lib" /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Debug LIB OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /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:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\libcurld.lib" /machine:I386
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\libcurld.lib" /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /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:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\libcurld.lib" /machine:I386
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\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 "..\..\..\..\build\Win32\VC6\LIB Release"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /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 /machine:I386
-# ADD LIB32 /nologo /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Release DLL OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /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 /machine:I386
-# ADD LIB32 /nologo /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /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 /machine:I386
-# ADD LIB32 /nologo /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Release DLL Windows SSPI"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /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
-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 /machine:I386
-# ADD LIB32 /nologo /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /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
-# ADD CPP /nologo /MD /W4 /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
-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 /machine:I386
-# ADD LIB32 /nologo /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Release LIB OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /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 /machine:I386
-# ADD LIB32 /nologo /machine:I386
-
-!ELSEIF "$(CFG)" == "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /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 /machine:I386
-# ADD LIB32 /nologo /machine:I386
-
-!ENDIF
-
-# Begin Target
-
-# Name "libcurl - Win32 DLL Debug"
-# Name "libcurl - Win32 DLL Debug DLL OpenSSL"
-# Name "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"
-# Name "libcurl - Win32 DLL Debug DLL Windows SSPI"
-# Name "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"
-# Name "libcurl - Win32 DLL Release"
-# Name "libcurl - Win32 DLL Release DLL OpenSSL"
-# Name "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"
-# Name "libcurl - Win32 DLL Release DLL Windows SSPI"
-# Name "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"
-# Name "libcurl - Win32 LIB Debug"
-# Name "libcurl - Win32 LIB Debug DLL OpenSSL"
-# Name "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"
-# Name "libcurl - Win32 LIB Debug DLL Windows SSPI"
-# Name "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"
-# Name "libcurl - Win32 LIB Debug LIB OpenSSL"
-# Name "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"
-# Name "libcurl - Win32 LIB Release"
-# Name "libcurl - Win32 LIB Release DLL OpenSSL"
-# Name "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"
-# Name "libcurl - Win32 LIB Release DLL Windows SSPI"
-# Name "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"
-# Name "libcurl - Win32 LIB Release LIB OpenSSL"
-# Name "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\altsvc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\amigaos.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\asyn-ares.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\asyn-thread.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\base64.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\bufref.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\c-hyper.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\conncache.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\connect.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\content_encoding.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\cookie.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_addrinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ctype.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_des.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_endian.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_fnmatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_gethostname.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_get_line.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_gssapi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_memrchr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_multibyte.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ntlm_core.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ntlm_wb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_path.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_range.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_rtmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_sasl.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_sspi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_threads.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\dict.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\doh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\dotdot.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\dynbuf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\easy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\easygetopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\easyoptions.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\escape.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\fileinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\formdata.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\ftp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\ftplistparser.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\getenv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\getinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\gopher.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hmac.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hostasyn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hostcheck.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hostip4.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hostip6.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hostip.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hostsyn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hsts.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_aws_sigv4.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_chunks.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_digest.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_negotiate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_ntlm.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_proxy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\idn_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\if2ip.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\imap.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\inet_ntop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\inet_pton.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\krb5.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\ldap.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\llist.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\md4.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\md5.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\memdebug.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\mime.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\mprintf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\mqtt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\multi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\netrc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\non-ascii.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\nonblock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\openldap.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\parsedate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\pingpong.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\pop3.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\progress.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\psl.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\rand.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\rtsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\select.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\sendf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\setopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\sha256.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\share.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\slist.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\smb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\smtp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\socketpair.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\socks.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\socks_gssapi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\socks_sspi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\speedcheck.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\splay.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strcase.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strdup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strerror.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strtok.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strtoofft.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\system_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\telnet.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\tftp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\timeval.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\transfer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\urlapi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\url.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\version.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\version_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\warnless.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\wildcard.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\x509asn1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\cleartext.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\cram.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\digest.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\digest_sspi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\gsasl.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\krb5_gssapi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\krb5_sspi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\ntlm.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\ntlm_sspi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\oauth2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\spnego_gssapi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\spnego_sspi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\vauth.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vquic\ngtcp2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vquic\quiche.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vquic\vquic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vssh\libssh2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vssh\libssh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vssh\wolfssh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\bearssl.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\gskit.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\gtls.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\keylog.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\mbedtls.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\mbedtls_threadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\mesalink.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\nss.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\openssl.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\rustls.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\schannel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\schannel_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\sectransp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\vtls.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\wolfssl.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\altsvc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\amigaos.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\arpa_telnet.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\asyn.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\bufref.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\c-hyper.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\config-win32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\conncache.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\connect.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\content_encoding.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\cookie.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_addrinfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_base64.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ctype.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_des.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_endian.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_fnmatch.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_gethostname.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_get_line.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_gssapi.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_hmac.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_krb5.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ldap.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_md4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_md5.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_memory.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_memrchr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_multibyte.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ntlm_core.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ntlm_wb.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_path.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_printf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_range.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_rtmp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_sasl.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_setup.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_setup_once.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_sha256.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_sspi.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_threads.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curlx.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\dict.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\doh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\dotdot.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\dynbuf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\easyif.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\easyoptions.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\escape.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\file.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\fileinfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\formdata.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\ftp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\ftplistparser.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\getinfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\gopher.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hash.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hostcheck.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hostip.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\hsts.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_aws_sigv4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_chunks.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_digest.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_negotiate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_ntlm.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\http_proxy.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\if2ip.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\imap.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\inet_ntop.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\inet_pton.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\llist.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\memdebug.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\mime.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\mqtt.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\multihandle.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\multiif.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\netrc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\non-ascii.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\nonblock.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\parsedate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\pingpong.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\pop3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\progress.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\psl.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\quic.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\rand.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\rename.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\rtsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\select.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\sendf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\setopt.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\setup-vms.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\share.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\sigpipe.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\slist.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\smb.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\smtp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\sockaddr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\socketpair.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\socks.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\speedcheck.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\splay.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strcase.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strdup.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strerror.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strtok.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strtoofft.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\system_win32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\telnet.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\tftp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\timeval.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\transfer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\urlapi-int.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\urldata.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\url.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\version_win32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\warnless.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\wildcard.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\x509asn1.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\digest.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\ntlm.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vauth\vauth.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vquic\ngtcp2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vquic\quiche.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vquic\vquic.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vssh\ssh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\bearssl.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\gskit.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\gtls.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\keylog.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\mbedtls.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\mbedtls_threadlock.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\mesalink.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\nssg.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\openssl.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\rustls.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\schannel.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\sectransp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\vtls.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\vtls\wolfssl.h
-# End Source File
-# End Group
-# 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/projects/Windows/VC6/lib/libcurl.dsw b/projects/Windows/VC6/lib/libcurl.dsw
deleted file mode 100644
index e07624def..000000000
--- a/projects/Windows/VC6/lib/libcurl.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "libcurl"=".\libcurl.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/projects/Windows/VC6/src/curl.dsp b/projects/Windows/VC6/src/curl.dsp
deleted file mode 100644
index 31445d7c3..000000000
--- a/projects/Windows/VC6/src/curl.dsp
+++ /dev/null
@@ -1,1094 +0,0 @@
-# Microsoft Developer Studio Project File - Name="curl" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=curl - 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 "curl.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 "curl.mak" CFG="curl - Win32 LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "curl - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Console Application")
-!MESSAGE "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "curl - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\src"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Debug DLL OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Debug DLL Windows SSPI"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\src"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "NDEBUG" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Release DLL OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Release DLL Windows SSPI"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\src"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.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
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.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
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.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
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.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
-# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.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
-# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.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
-# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\src"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "NDEBUG" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# 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
-# 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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.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
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.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
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.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
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.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
-# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.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
-# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.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
-
-!ELSEIF "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\src"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\src"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.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
-# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.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
-
-!ENDIF
-
-# Begin Target
-
-# Name "curl - Win32 DLL Debug"
-# Name "curl - Win32 DLL Debug DLL OpenSSL"
-# Name "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"
-# Name "curl - Win32 DLL Debug DLL Windows SSPI"
-# Name "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"
-# Name "curl - Win32 DLL Release"
-# Name "curl - Win32 DLL Release DLL OpenSSL"
-# Name "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"
-# Name "curl - Win32 DLL Release DLL Windows SSPI"
-# Name "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"
-# Name "curl - Win32 LIB Debug"
-# Name "curl - Win32 LIB Debug DLL OpenSSL"
-# Name "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"
-# Name "curl - Win32 LIB Debug DLL Windows SSPI"
-# Name "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"
-# Name "curl - Win32 LIB Debug LIB OpenSSL"
-# Name "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"
-# Name "curl - Win32 LIB Release"
-# Name "curl - Win32 LIB Release DLL OpenSSL"
-# Name "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"
-# Name "curl - Win32 LIB Release DLL Windows SSPI"
-# Name "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"
-# Name "curl - Win32 LIB Release LIB OpenSSL"
-# Name "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ctype.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_multibyte.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\dynbuf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\nonblock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strtoofft.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\version_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\warnless.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\slist_wc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_binmode.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_bname.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_dbg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_hdr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_prg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_rea.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_see.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_wrt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cfgable.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_convert.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_dirhie.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_doswin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_easysrc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_filetime.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_findfile.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_formparse.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_getparam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_getpass.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_help.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_helpers.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_hugehelp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_libinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_listhelp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_main.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_msgs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_operate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_operhlp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_panykey.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_paramhlp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_parsecfg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_progress.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_setopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_sleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_strdup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_urlglob.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_vms.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_writeout.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_writeout_json.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_xattr.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\config-win32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_ctype.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_multibyte.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\curl_setup.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\dynbuf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\nonblock.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\strtoofft.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\version_win32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\warnless.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\slist_wc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_binmode.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_bname.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_dbg.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_hdr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_prg.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_rea.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_see.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cb_wrt.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_cfgable.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_convert.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_dirhie.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_doswin.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_easysrc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_filetime.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_findfile.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_formparse.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_getparam.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_getpass.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_helpers.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_help.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_hugehelp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_libinfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_main.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_msgs.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_operate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_operhlp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_panykey.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_paramhlp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_parsecfg.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_progress.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_sdecls.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_setopt.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_setup.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_sleep.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_strdup.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_urlglob.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_util.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_version.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_vms.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_writeout.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_writeout_json.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\src\tool_xattr.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\..\src\curl.rc
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/projects/Windows/VC6/src/curl.dsw b/projects/Windows/VC6/src/curl.dsw
deleted file mode 100644
index a7adbce26..000000000
--- a/projects/Windows/VC6/src/curl.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "curl"=".\curl.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/projects/Windows/VC7.1/curl-all.sln b/projects/Windows/VC7.1/curl-all.sln
deleted file mode 100644
index 0dd90b435..000000000
--- a/projects/Windows/VC7.1/curl-all.sln
+++ /dev/null
@@ -1,140 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.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
deleted file mode 100644
index c5ca5d4bf..000000000
--- a/projects/Windows/VC7.1/lib/libcurl.sln
+++ /dev/null
@@ -1,87 +0,0 @@
-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
deleted file mode 100644
index cf292d94e..000000000
--- a/projects/Windows/VC7.1/lib/libcurl.vcproj
+++ /dev/null
@@ -1,2206 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="libcurl"
- ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
- SccProjectName=""
- SccLocalPath="">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Release\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Debug\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\altsvc.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\amigaos.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn-ares.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn-thread.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\base64.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\bufref.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\c-hyper.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\conncache.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\connect.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\content_encoding.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\cookie.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_addrinfo.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_des.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_endian.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_fnmatch.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gethostname.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_get_line.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gssapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memrchr.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_core.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_wb.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_path.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_range.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_rtmp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sasl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_threads.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dict.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\doh.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dotdot.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easy.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easygetopt.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyoptions.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\escape.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\file.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\fileinfo.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\formdata.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftplistparser.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\getenv.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\getinfo.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\gopher.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hash.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hmac.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostasyn.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostcheck.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip4.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip6.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostsyn.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hsts.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http2.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_aws_sigv4.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_chunks.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_digest.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_negotiate.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_ntlm.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_proxy.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\idn_win32.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\if2ip.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\imap.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_ntop.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_pton.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\krb5.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ldap.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\llist.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\md4.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\md5.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\memdebug.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mime.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mprintf.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mqtt.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\multi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\netrc.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\non-ascii.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\openldap.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\parsedate.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\pingpong.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\pop3.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\progress.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\psl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rand.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rename.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rtsp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\select.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sendf.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\setopt.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sha256.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\share.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\slist.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\smb.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\smtp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socketpair.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks_gssapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\speedcheck.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\splay.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strcase.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strdup.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strerror.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtok.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\system_win32.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\telnet.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\tftp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\timeval.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\transfer.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\urlapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\url.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\wildcard.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\x509asn1.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\altsvc.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\amigaos.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\arpa_telnet.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\bufref.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\c-hyper.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\config-win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\conncache.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\connect.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\content_encoding.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\cookie.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_addrinfo.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_base64.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_des.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_endian.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_fnmatch.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gethostname.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_get_line.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gssapi.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_hmac.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_krb5.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ldap.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_md4.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_md5.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memory.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memrchr.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_core.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_path.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_printf.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_range.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_rtmp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sasl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup_once.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sha256.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sspi.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_threads.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curlx.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dict.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\doh.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dotdot.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyif.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyoptions.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\escape.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\file.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\fileinfo.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\formdata.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftplistparser.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\getinfo.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\gopher.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hash.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostcheck.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hsts.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http2.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_aws_sigv4.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_chunks.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_digest.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_negotiate.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_ntlm.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_proxy.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\if2ip.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\imap.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_ntop.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_pton.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\llist.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\memdebug.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mime.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mqtt.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\multihandle.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\multiif.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\netrc.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\non-ascii.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\parsedate.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\pingpong.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\pop3.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\progress.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\psl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\quic.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rand.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rename.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rtsp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\select.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sendf.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\setopt.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\setup-vms.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\share.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sigpipe.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\slist.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\smb.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\smtp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sockaddr.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socketpair.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\speedcheck.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\splay.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strcase.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strdup.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strerror.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtok.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\system_win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\telnet.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\tftp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\timeval.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\transfer.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\urlapi-int.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\urldata.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\url.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\wildcard.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\x509asn1.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\libcurl.rc">
- </File>
- </Filter>
- <Filter
- Name="vauth"
- Filter="">
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vauth\cleartext.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\cram.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\digest.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\digest_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\gsasl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\oauth2.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\spnego_gssapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\spnego_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\vauth.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vauth\digest.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\vauth.h">
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vquic"
- Filter="">
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vquic\ngtcp2.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\quiche.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\vquic.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vquic\ngtcp2.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\quiche.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\vquic.h">
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vssh"
- Filter="">
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vssh\libssh2.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vssh\libssh.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vssh\wolfssh.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vssh\ssh.h">
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vtls"
- Filter="">
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vtls\bearssl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gskit.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gtls.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\keylog.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mesalink.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\nss.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\openssl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\rustls.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\sectransp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\vtls.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\wolfssl.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vtls\bearssl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gskit.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gtls.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\keylog.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mesalink.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\nssg.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\openssl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\rustls.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\sectransp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\vtls.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\wolfssl.h">
- </File>
- </Filter>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/projects/Windows/VC7.1/src/curl.sln b/projects/Windows/VC7.1/src/curl.sln
deleted file mode 100644
index d92eb5de5..000000000
--- a/projects/Windows/VC7.1/src/curl.sln
+++ /dev/null
@@ -1,87 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.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/curl.vcproj b/projects/Windows/VC7.1/src/curl.vcproj
deleted file mode 100644
index ee434cf24..000000000
--- a/projects/Windows/VC7.1/src/curl.vcproj
+++ /dev/null
@@ -1,1679 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="curl"
- SccProjectName=""
- SccLocalPath="">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="LIB Release - LIB OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Release"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\slist_wc.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_binmode.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_bname.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_dbg.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_hdr.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_prg.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_rea.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_see.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_wrt.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cfgable.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_convert.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_dirhie.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_doswin.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_easysrc.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_filetime.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_findfile.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_formparse.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getparam.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getpass.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_help.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_helpers.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_hugehelp.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_libinfo.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_listhelp.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_main.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_msgs.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operate.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operhlp.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_panykey.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_paramhlp.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_parsecfg.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_progress.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setopt.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sleep.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_strdup.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_urlglob.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_util.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_vms.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout_json.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_xattr.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\config-win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\slist_wc.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_binmode.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_bname.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_dbg.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_hdr.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_prg.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_rea.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_see.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_wrt.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cfgable.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_convert.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_dirhie.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_doswin.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_easysrc.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_filetime.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_findfile.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_formparse.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getparam.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getpass.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_helpers.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_help.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_hugehelp.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_libinfo.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_main.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_msgs.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operate.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operhlp.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_panykey.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_paramhlp.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_parsecfg.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_progress.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sdecls.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setopt.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setup.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sleep.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_strdup.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_urlglob.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_util.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_version.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_vms.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout_json.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_xattr.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\src\curl.rc">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/projects/Windows/VC7/curl-all.sln b/projects/Windows/VC7/curl-all.sln
deleted file mode 100644
index 879f7d19e..000000000
--- a/projects/Windows/VC7/curl-all.sln
+++ /dev/null
@@ -1,138 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.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
deleted file mode 100644
index cc375bb53..000000000
--- a/projects/Windows/VC7/lib/libcurl.sln
+++ /dev/null
@@ -1,87 +0,0 @@
-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
deleted file mode 100644
index 57f76d34c..000000000
--- a/projects/Windows/VC7/lib/libcurl.vcproj
+++ /dev/null
@@ -1,2060 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.00"
- Name="libcurl"
- ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
- SccProjectName=""
- SccLocalPath="">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Release\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Debug\include,..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- SetChecksum="TRUE"
- ImportLibrary="$(TargetDir)$(TargetName).lib"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/machine:I386 "
- OutputFile="$(OutDir)\$(ProjectName).lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- </Configuration>
- </Configurations>
- <Files>
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\altsvc.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\amigaos.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn-ares.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn-thread.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\base64.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\bufref.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\c-hyper.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\conncache.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\connect.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\content_encoding.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\cookie.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_addrinfo.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_des.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_endian.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_fnmatch.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gethostname.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_get_line.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gssapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memrchr.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_core.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_wb.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_path.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_range.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_rtmp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sasl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_threads.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dict.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\doh.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dotdot.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easy.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easygetopt.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyoptions.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\escape.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\file.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\fileinfo.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\formdata.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftplistparser.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\getenv.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\getinfo.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\gopher.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hash.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hmac.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostasyn.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostcheck.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip4.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip6.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostsyn.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hsts.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http2.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_aws_sigv4.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_chunks.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_digest.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_negotiate.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_ntlm.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_proxy.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\idn_win32.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\if2ip.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\imap.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_ntop.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_pton.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\krb5.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ldap.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\llist.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\md4.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\md5.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\memdebug.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mime.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mprintf.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mqtt.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\multi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\netrc.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\non-ascii.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\openldap.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\parsedate.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\pingpong.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\pop3.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\progress.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\psl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rand.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rename.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rtsp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\select.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sendf.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\setopt.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sha256.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\share.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\slist.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\smb.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\smtp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socketpair.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks_gssapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\speedcheck.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\splay.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strcase.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strdup.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strerror.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtok.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\system_win32.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\telnet.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\tftp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\timeval.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\transfer.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\urlapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\url.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\wildcard.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\x509asn1.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\altsvc.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\amigaos.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\arpa_telnet.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\bufref.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\c-hyper.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\config-win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\conncache.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\connect.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\content_encoding.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\cookie.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_addrinfo.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_base64.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_des.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_endian.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_fnmatch.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gethostname.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_get_line.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gssapi.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_hmac.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_krb5.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ldap.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_md4.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_md5.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memory.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memrchr.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_core.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_path.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_printf.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_range.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_rtmp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sasl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup_once.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sha256.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sspi.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_threads.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curlx.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dict.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\doh.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dotdot.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyif.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyoptions.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\escape.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\file.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\fileinfo.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\formdata.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftplistparser.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\getinfo.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\gopher.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hash.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostcheck.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\hsts.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http2.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_aws_sigv4.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_chunks.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_digest.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_negotiate.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_ntlm.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_proxy.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\if2ip.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\imap.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_ntop.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_pton.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\llist.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\memdebug.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mime.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\mqtt.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\multihandle.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\multiif.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\netrc.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\non-ascii.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\parsedate.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\pingpong.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\pop3.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\progress.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\psl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\quic.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rand.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rename.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\rtsp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\select.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sendf.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\setopt.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\setup-vms.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\share.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sigpipe.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\slist.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\smb.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\smtp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\sockaddr.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socketpair.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\speedcheck.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\splay.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strcase.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strdup.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strerror.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtok.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\system_win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\telnet.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\tftp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\timeval.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\transfer.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\urlapi-int.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\urldata.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\url.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\wildcard.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\x509asn1.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\libcurl.rc">
- </File>
- </Filter>
- <Filter
- Name="vauth"
- Filter="">
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vauth\cleartext.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\cram.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\digest.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\digest_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\gsasl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\oauth2.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\spnego_gssapi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\spnego_sspi.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\vauth.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vauth\digest.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\vauth.h">
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vquic"
- Filter="">
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vquic\ngtcp2.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\quiche.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\vquic.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vquic\ngtcp2.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\quiche.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\vquic.h">
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vssh"
- Filter="">
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vssh\libssh2.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vssh\libssh.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vssh\wolfssh.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vssh\ssh.h">
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vtls"
- Filter="">
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vtls\bearssl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gskit.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gtls.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\keylog.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mesalink.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\nss.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\openssl.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\rustls.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\sectransp.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\vtls.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\wolfssl.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\vtls\bearssl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gskit.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gtls.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\keylog.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mesalink.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\nssg.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\openssl.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\rustls.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\sectransp.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\vtls.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\wolfssl.h">
- </File>
- </Filter>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/projects/Windows/VC7/src/curl.sln b/projects/Windows/VC7/src/curl.sln
deleted file mode 100644
index 8e17f81eb..000000000
--- a/projects/Windows/VC7/src/curl.sln
+++ /dev/null
@@ -1,87 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.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/curl.vcproj b/projects/Windows/VC7/src/curl.vcproj
deleted file mode 100644
index 0f8df7f58..000000000
--- a/projects/Windows/VC7/src/curl.vcproj
+++ /dev/null
@@ -1,1533 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.00"
- Name="curl"
- SccProjectName=""
- SccLocalPath="">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="LIB Release - LIB OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Release"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386 /FIXED:NO"
- AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- </Configurations>
- <Files>
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\slist_wc.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_binmode.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_bname.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_dbg.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_hdr.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_prg.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_rea.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_see.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_wrt.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cfgable.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_convert.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_dirhie.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_doswin.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_easysrc.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_filetime.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_findfile.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_formparse.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getparam.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getpass.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_help.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_helpers.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_hugehelp.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_libinfo.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_listhelp.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_main.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_msgs.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operate.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operhlp.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_panykey.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_paramhlp.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_parsecfg.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_progress.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setopt.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sleep.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_strdup.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_urlglob.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_util.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_vms.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout_json.c">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_xattr.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\lib\config-win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.h">
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\slist_wc.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_binmode.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_bname.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_dbg.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_hdr.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_prg.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_rea.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_see.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_wrt.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cfgable.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_convert.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_dirhie.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_doswin.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_easysrc.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_filetime.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_findfile.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_formparse.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getparam.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getpass.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_helpers.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_help.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_hugehelp.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_libinfo.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_main.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_msgs.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operate.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operhlp.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_panykey.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_paramhlp.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_parsecfg.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_progress.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sdecls.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setopt.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setup.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sleep.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_strdup.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_urlglob.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_util.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_version.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_vms.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout_json.h">
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_xattr.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="">
- <File
- RelativePath="..\..\..\..\src\curl.rc">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/projects/Windows/VC8/lib/libcurl.vcproj b/projects/Windows/VC8/lib/libcurl.vcproj
deleted file mode 100644
index 3ed378ff7..000000000
--- a/projects/Windows/VC8/lib/libcurl.vcproj
+++ /dev/null
@@ -1,4863 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="libcurl"
- ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
- RootNamespace="libcurl"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="DLL Debug|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\altsvc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\amigaos.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn-ares.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn-thread.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\base64.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\bufref.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\c-hyper.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\conncache.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\connect.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\content_encoding.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\cookie.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_addrinfo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_des.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_endian.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_fnmatch.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gethostname.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_get_line.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gssapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memrchr.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_core.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_wb.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_path.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_range.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_rtmp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sasl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_threads.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dict.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\doh.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dotdot.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easy.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easygetopt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyoptions.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\escape.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\file.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\fileinfo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\formdata.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftplistparser.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\getenv.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\getinfo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\gopher.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hash.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hmac.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostasyn.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostcheck.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip4.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip6.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostsyn.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hsts.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http2.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_aws_sigv4.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_chunks.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_digest.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_negotiate.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_ntlm.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_proxy.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\idn_win32.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\if2ip.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\imap.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_ntop.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_pton.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\krb5.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ldap.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\llist.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\md4.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\md5.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\memdebug.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mime.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mprintf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mqtt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\multi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\netrc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\non-ascii.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\openldap.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\parsedate.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\pingpong.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\pop3.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\progress.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\psl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rand.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rename.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rtsp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\select.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sendf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\setopt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sha256.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\share.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\slist.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\smb.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\smtp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socketpair.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks_gssapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\speedcheck.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\splay.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strcase.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strdup.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strerror.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtok.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\system_win32.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\telnet.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\tftp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\timeval.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\transfer.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\urlapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\url.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\wildcard.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\x509asn1.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\altsvc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\amigaos.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\arpa_telnet.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\bufref.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\c-hyper.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\config-win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\conncache.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\connect.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\content_encoding.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\cookie.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_addrinfo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_base64.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_des.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_endian.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_fnmatch.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gethostname.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_get_line.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gssapi.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_hmac.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_krb5.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ldap.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_md4.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_md5.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memory.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memrchr.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_core.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_wb.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_path.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_printf.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_range.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_rtmp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sasl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup_once.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sha256.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sspi.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_threads.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curlx.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dict.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\doh.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dotdot.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyif.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyoptions.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\escape.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\file.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\fileinfo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\formdata.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftplistparser.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\getinfo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\gopher.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hash.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostcheck.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hsts.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http2.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_aws_sigv4.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_chunks.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_digest.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_negotiate.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_ntlm.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_proxy.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\if2ip.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\imap.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_ntop.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_pton.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\llist.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\memdebug.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mime.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mqtt.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\multihandle.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\multiif.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\netrc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\non-ascii.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\parsedate.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\pingpong.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\pop3.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\progress.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\psl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\quic.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rand.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rename.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rtsp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\select.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sendf.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\setopt.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\setup-vms.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\share.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sigpipe.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\slist.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\smb.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\smtp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sockaddr.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socketpair.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\speedcheck.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\splay.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strcase.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strdup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strerror.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtok.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\system_win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\telnet.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\tftp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\timeval.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\transfer.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\urlapi-int.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\urldata.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\url.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\wildcard.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\x509asn1.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- >
- <File
- RelativePath="..\..\..\..\lib\libcurl.rc"
- >
- </File>
- </Filter>
- <Filter
- Name="vauth"
- >
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vauth\cleartext.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\cram.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\digest.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\digest_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\gsasl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\oauth2.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\spnego_gssapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\spnego_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\vauth.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vauth\digest.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\vauth.h"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vquic"
- >
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vquic\ngtcp2.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\quiche.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\vquic.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vquic\ngtcp2.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\quiche.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\vquic.h"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vssh"
- >
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vssh\libssh2.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vssh\libssh.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vssh\wolfssh.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vssh\ssh.h"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vtls"
- >
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vtls\bearssl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gskit.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gtls.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\keylog.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mesalink.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\nss.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\openssl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\rustls.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\sectransp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\vtls.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\wolfssl.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vtls\bearssl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gskit.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gtls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\keylog.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mesalink.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\nssg.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\openssl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\rustls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\sectransp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\vtls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\wolfssl.h"
- >
- </File>
- </Filter>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/projects/Windows/VC8/src/curl.sln b/projects/Windows/VC8/src/curl.sln
deleted file mode 100644
index 088d133a9..000000000
--- a/projects/Windows/VC8/src/curl.sln
+++ /dev/null
@@ -1,157 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.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/curl.vcproj b/projects/Windows/VC8/src/curl.vcproj
deleted file mode 100644
index 147a2c43e..000000000
--- a/projects/Windows/VC8/src/curl.vcproj
+++ /dev/null
@@ -1,4499 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="curl"
- ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
- RootNamespace="curl"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="DLL Release|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Release"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Release"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\slist_wc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_binmode.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_bname.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_dbg.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_hdr.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_prg.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_rea.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_see.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_wrt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cfgable.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_convert.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_dirhie.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_doswin.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_easysrc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_filetime.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_findfile.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_formparse.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getparam.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getpass.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_help.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_helpers.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_hugehelp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_libinfo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_listhelp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_main.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_msgs.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operate.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operhlp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_panykey.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_paramhlp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_parsecfg.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_progress.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setopt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sleep.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_strdup.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_urlglob.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_util.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_vms.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout_json.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_xattr.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\config-win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\slist_wc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_binmode.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_bname.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_dbg.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_hdr.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_prg.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_rea.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_see.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_wrt.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cfgable.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_convert.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_dirhie.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_doswin.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_easysrc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_filetime.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_findfile.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_formparse.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getparam.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getpass.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_helpers.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_help.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_hugehelp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_libinfo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_main.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_msgs.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operate.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operhlp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_panykey.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_paramhlp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_parsecfg.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_progress.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sdecls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setopt.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sleep.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_strdup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_urlglob.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_util.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_version.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_vms.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout_json.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_xattr.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- >
- <File
- RelativePath="..\..\..\..\src\curl.rc"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/projects/Windows/VC9/curl-all.sln b/projects/Windows/VC9/curl-all.sln
deleted file mode 100644
index e15213a62..000000000
--- a/projects/Windows/VC9/curl-all.sln
+++ /dev/null
@@ -1,258 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.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
deleted file mode 100644
index 7e010739a..000000000
--- a/projects/Windows/VC9/lib/libcurl.sln
+++ /dev/null
@@ -1,157 +0,0 @@
-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 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.vcproj b/projects/Windows/VC9/lib/libcurl.vcproj
deleted file mode 100644
index 35ae56e5a..000000000
--- a/projects/Windows/VC9/lib/libcurl.vcproj
+++ /dev/null
@@ -1,4804 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="libcurl"
- ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
- RootNamespace="libcurl"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="DLL Debug|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Debug\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Release\include;..\..\..\..\..\openssl\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="1"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="2"
- 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"
- TargetEnvironment="3"
- TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories=""
- ImportLibrary="$(TargetDir)$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName)d.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\lib"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\altsvc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\amigaos.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn-ares.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn-thread.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\base64.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\bufref.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\c-hyper.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\conncache.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\connect.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\content_encoding.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\cookie.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_addrinfo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_des.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_endian.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_fnmatch.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gethostname.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_get_line.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gssapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memrchr.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_core.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_wb.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_path.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_range.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_rtmp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sasl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_threads.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dict.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\doh.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dotdot.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easy.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easygetopt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyoptions.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\escape.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\file.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\fileinfo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\formdata.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftplistparser.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\getenv.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\getinfo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\gopher.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hash.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hmac.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostasyn.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostcheck.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip4.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip6.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostsyn.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hsts.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http2.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_aws_sigv4.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_chunks.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_digest.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_negotiate.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_ntlm.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_proxy.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\idn_win32.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\if2ip.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\imap.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_ntop.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_pton.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\krb5.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ldap.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\llist.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\md4.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\md5.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\memdebug.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mime.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mprintf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mqtt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\multi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\netrc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\non-ascii.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\openldap.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\parsedate.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\pingpong.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\pop3.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\progress.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\psl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rand.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rename.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rtsp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\select.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sendf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\setopt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sha256.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\share.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\slist.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\smb.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\smtp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socketpair.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks_gssapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\speedcheck.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\splay.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strcase.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strdup.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strerror.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtok.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\system_win32.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\telnet.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\tftp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\timeval.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\transfer.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\urlapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\url.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\wildcard.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\x509asn1.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\altsvc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\amigaos.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\arpa_telnet.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\asyn.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\bufref.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\c-hyper.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\config-win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\conncache.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\connect.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\content_encoding.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\cookie.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_addrinfo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_base64.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_des.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_endian.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_fnmatch.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gethostname.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_get_line.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_gssapi.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_hmac.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_krb5.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ldap.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_md4.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_md5.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memory.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_memrchr.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_core.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ntlm_wb.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_path.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_printf.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_range.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_rtmp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sasl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup_once.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sha256.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_sspi.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_threads.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curlx.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dict.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\doh.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dotdot.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyif.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\easyoptions.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\escape.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\file.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\fileinfo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\formdata.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ftplistparser.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\getinfo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\gopher.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hash.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostcheck.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hostip.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\hsts.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http2.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_aws_sigv4.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_chunks.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_digest.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_negotiate.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_ntlm.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\http_proxy.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\if2ip.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\imap.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_ntop.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\inet_pton.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\llist.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\memdebug.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mime.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\mqtt.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\multihandle.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\multiif.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\netrc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\non-ascii.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\parsedate.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\pingpong.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\pop3.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\progress.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\psl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\quic.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rand.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rename.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\rtsp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\select.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sendf.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\setopt.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\setup-vms.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\share.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sigpipe.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\slist.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\smb.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\smtp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\sockaddr.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socketpair.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\socks.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\speedcheck.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\splay.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strcase.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strdup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strerror.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtok.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\system_win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\telnet.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\tftp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\timeval.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\transfer.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\urlapi-int.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\urldata.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\url.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\wildcard.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\x509asn1.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- >
- <File
- RelativePath="..\..\..\..\lib\libcurl.rc"
- >
- </File>
- </Filter>
- <Filter
- Name="vauth"
- >
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vauth\cleartext.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\cram.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\digest.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\digest_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\gsasl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\oauth2.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\spnego_gssapi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\spnego_sspi.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\vauth.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vauth\digest.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\ntlm.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vauth\vauth.h"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vquic"
- >
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vquic\ngtcp2.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\quiche.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\vquic.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vquic\ngtcp2.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\quiche.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vquic\vquic.h"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vssh"
- >
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vssh\libssh2.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vssh\libssh.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vssh\wolfssh.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vssh\ssh.h"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="vtls"
- >
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vtls\bearssl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gskit.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gtls.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\keylog.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mesalink.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\nss.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\openssl.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\rustls.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\sectransp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\vtls.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\wolfssl.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\vtls\bearssl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gskit.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\gtls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\keylog.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\mesalink.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\nssg.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\openssl.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\rustls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\schannel.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\sectransp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\vtls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\vtls\wolfssl.h"
- >
- </File>
- </Filter>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/projects/Windows/VC9/src/curl.vcproj b/projects/Windows/VC9/src/curl.vcproj
deleted file mode 100644
index eb2112d01..000000000
--- a/projects/Windows/VC9/src/curl.vcproj
+++ /dev/null
@@ -1,4356 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="curl"
- ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
- RootNamespace="curl"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="DLL Release|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Release"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Release"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libcrypto.lib libssl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- WarningLevel="4"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurld.lib"
- OutputFile="$(OutDir)\$(ProjectName)d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"
- OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"
- OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- IntermediateDirectory="$(OutDir)\src"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- TypeLibraryName="$(TargetDir)$(TargetName).tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"
- PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- WarningLevel="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- AdditionalIncludeDirectories="..\..\..\..\include"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurl.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- >
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\slist_wc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_binmode.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_bname.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_dbg.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_hdr.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_prg.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_rea.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_see.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_wrt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cfgable.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_convert.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_dirhie.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_doswin.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_easysrc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_filetime.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_findfile.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_formparse.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getparam.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getpass.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_help.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_helpers.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_hugehelp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_libinfo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_listhelp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_main.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_msgs.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operate.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operhlp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_panykey.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_paramhlp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_parsecfg.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_progress.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setopt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sleep.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_strdup.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_urlglob.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_util.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_vms.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout_json.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_xattr.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="..\..\..\..\lib\config-win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_ctype.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_multibyte.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\curl_setup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\dynbuf.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\nonblock.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\strtoofft.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\version_win32.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\warnless.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\slist_wc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_binmode.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_bname.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_dbg.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_hdr.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_prg.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_rea.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_see.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cb_wrt.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_cfgable.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_convert.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_dirhie.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_doswin.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_easysrc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_filetime.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_findfile.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_formparse.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getparam.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_getpass.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_helpers.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_help.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_hugehelp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_libinfo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_main.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_msgs.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operate.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_operhlp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_panykey.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_paramhlp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_parsecfg.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_progress.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sdecls.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setopt.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_setup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_sleep.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_strdup.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_urlglob.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_util.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_version.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_vms.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_writeout_json.h"
- >
- </File>
- <File
- RelativePath="..\..\..\..\src\tool_xattr.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- >
- <File
- RelativePath="..\..\..\..\src\curl.rc"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/projects/build-openssl.bat b/projects/build-openssl.bat
index a4a661ba5..106a2a363 100644
--- a/projects/build-openssl.bat
+++ b/projects/build-openssl.bat
@@ -6,7 +6,7 @@ rem * / __| | | | |_) | |
rem * | (__| |_| | _ <| |___
rem * \___|\___/|_| \_\_____|
rem *
-rem * Copyright (C) 2012 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2012 - 2022, 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
@@ -18,6 +18,8 @@ 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 * SPDX-License-Identifier: curl
rem *
rem ***************************************************************************
@@ -44,33 +46,18 @@ rem ***************************************************************************
set OS_PLATFORM=x86
)
if defined PROGRAMFILES(x86) (
- set "PF=%PROGRAMFILES(x86)%"
+ rem Visual Studio was x86-only prior to 14.3
+ if /i "%~1" == "vc14.3" (
+ set "PF=%PROGRAMFILES%"
+ ) else (
+ set "PF=%PROGRAMFILES(x86)%"
+ )
set OS_PLATFORM=x64
)
:parseArgs
if not "%~1" == "" (
- 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" (
+ if /i "%~1" == "vc10" (
set VC_VER=10.0
set VC_DESC=VC10
set "VC_PATH=Microsoft Visual Studio 10.0\VC"
@@ -88,7 +75,7 @@ rem ***************************************************************************
set "VC_PATH=Microsoft Visual Studio 14.0\VC"
) else if /i "%~1" == "vc14.1" (
set VC_VER=14.1
- set VC_DESC=VC14.1
+ set VC_DESC=VC14.10
rem Determine the VC14.1 path based on the installed edition in descending
rem order (Enterprise, then Professional and finally Community)
@@ -101,7 +88,7 @@ rem ***************************************************************************
)
) else if /i "%~1" == "vc14.2" (
set VC_VER=14.2
- set VC_DESC=VC14.2
+ set VC_DESC=VC14.20
rem Determine the VC14.2 path based on the installed edition in descending
rem order (Enterprise, then Professional and finally Community)
@@ -112,6 +99,19 @@ rem ***************************************************************************
) else (
set "VC_PATH=Microsoft Visual Studio\2019\Community\VC"
)
+ ) else if /i "%~1" == "vc14.3" (
+ set VC_VER=14.3
+ set VC_DESC=VC14.30
+
+ rem Determine the VC14.3 path based on the installed edition in descending
+ rem order (Enterprise, then Professional and finally Community)
+ if exist "%PF%\Microsoft Visual Studio\2022\Enterprise\VC" (
+ set "VC_PATH=Microsoft Visual Studio\2022\Enterprise\VC"
+ ) else if exist "%PF%\Microsoft Visual Studio\2022\Professional\VC" (
+ set "VC_PATH=Microsoft Visual Studio\2022\Professional\VC"
+ ) else (
+ set "VC_PATH=Microsoft Visual Studio\2022\Community\VC"
+ )
) else if /i "%~1%" == "x86" (
set BUILD_PLATFORM=x86
) else if /i "%~1%" == "x64" (
@@ -209,17 +209,13 @@ rem ***************************************************************************
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
if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64
if "%VC_VER%" == "14.2" set VCVARS_PLATFORM=amd64
+ if "%VC_VER%" == "14.3" set VCVARS_PLATFORM=amd64
)
if exist "%START_DIR%\ms\do_ms.bat" (
@@ -232,16 +228,12 @@ rem ***************************************************************************
echo.
set "SAVED_PATH=%CD%"
- if "%VC_VER%" == "6.0" (
- call "%ABS_VC_PATH%\bin\vcvars32"
- ) else if "%VC_VER%" == "7.0" (
- call "%ABS_VC_PATH%\bin\vcvars32"
- ) else if "%VC_VER%" == "7.1" (
- call "%ABS_VC_PATH%\bin\vcvars32"
- ) else if "%VC_VER%" == "14.1" (
+ if "%VC_VER%" == "14.1" (
call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
) else if "%VC_VER%" == "14.2" (
call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
+ ) else if "%VC_VER%" == "14.3" (
+ call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
) else (
call "%ABS_VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
)
@@ -656,17 +648,13 @@ rem
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 vc14 - Use Visual Studio 2015
echo vc14.1 - Use Visual Studio 2017
echo vc14.2 - Use Visual Studio 2019
+ echo vc14.3 - Use Visual Studio 2022
echo.
echo Platform:
echo.
diff --git a/projects/build-wolfssl.bat b/projects/build-wolfssl.bat
index fcd9ba1a1..3830e03e8 100644
--- a/projects/build-wolfssl.bat
+++ b/projects/build-wolfssl.bat
@@ -7,7 +7,7 @@ rem * | (__| |_| | _ <| |___
rem * \___|\___/|_| \_\_____|
rem *
rem * Copyright (C) 2012 - 2020, Steve Holme, <steve_holme@hotmail.com>.
-rem * Copyright (C) 2015, Jay Satiro, <raysatiro@yahoo.com>.
+rem * Copyright (C) 2015 - 2022, Jay Satiro, <raysatiro@yahoo.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
@@ -19,6 +19,8 @@ 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 * SPDX-License-Identifier: curl
rem *
rem ***************************************************************************
@@ -31,9 +33,7 @@ rem ***************************************************************************
set SUCCESSFUL_BUILDS=
set VC_VER=
set BUILD_PLATFORM=
-
- rem Ensure we have the required arguments
- if /i "%~1" == "" goto syntax
+ set DEFAULT_START_DIR=..\..\wolfssl
rem Calculate the program files directory
if defined PROGRAMFILES (
@@ -41,10 +41,18 @@ rem ***************************************************************************
set OS_PLATFORM=x86
)
if defined PROGRAMFILES(x86) (
- set "PF=%PROGRAMFILES(x86)%"
+ rem Visual Studio was x86-only prior to 14.3
+ if /i "%~1" == "vc14.3" (
+ set "PF=%PROGRAMFILES%"
+ ) else (
+ set "PF=%PROGRAMFILES(x86)%"
+ )
set OS_PLATFORM=x64
)
+ rem Ensure we have the required arguments
+ if /i "%~1" == "" goto syntax
+
:parseArgs
if "%~1" == "" goto prerequisites
@@ -70,7 +78,7 @@ rem ***************************************************************************
set "VC_PATH=Microsoft Visual Studio 14.0\VC"
) else if /i "%~1" == "vc14.1" (
set VC_VER=14.1
- set VC_DESC=VC14.1
+ set VC_DESC=VC14.10
set VC_TOOLSET=v141
rem Determine the VC14.1 path based on the installed edition in descending
@@ -84,7 +92,7 @@ rem ***************************************************************************
)
) else if /i "%~1" == "vc14.2" (
set VC_VER=14.2
- set VC_DESC=VC14.2
+ set VC_DESC=VC14.20
set VC_TOOLSET=v142
rem Determine the VC14.2 path based on the installed edition in descending
@@ -96,6 +104,20 @@ rem ***************************************************************************
) else (
set "VC_PATH=Microsoft Visual Studio\2019\Community\VC"
)
+ ) else if /i "%~1" == "vc14.3" (
+ set VC_VER=14.3
+ set VC_DESC=VC14.30
+ set VC_TOOLSET=v143
+
+ rem Determine the VC14.3 path based on the installed edition in descending
+ rem order (Enterprise, then Professional and finally Community)
+ if exist "%PF%\Microsoft Visual Studio\2022\Enterprise\VC" (
+ set "VC_PATH=Microsoft Visual Studio\2022\Enterprise\VC"
+ ) else if exist "%PF%\Microsoft Visual Studio\2022\Professional\VC" (
+ set "VC_PATH=Microsoft Visual Studio\2022\Professional\VC"
+ ) else (
+ set "VC_PATH=Microsoft Visual Studio\2022\Community\VC"
+ )
) else if /i "%~1" == "x86" (
set BUILD_PLATFORM=x86
) else if /i "%~1" == "x64" (
@@ -125,7 +147,7 @@ rem ***************************************************************************
if not defined VC_VER goto syntax
rem Default the start directory if one isn't specified
- if not defined START_DIR set START_DIR=..\..\wolfssl
+ if not defined START_DIR set "START_DIR=%DEFAULT_START_DIR%"
rem Check we have a program files directory
if not defined PF goto nopf
@@ -148,6 +170,7 @@ rem ***************************************************************************
if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64
if "%VC_VER%" == "14.2" set VCVARS_PLATFORM=amd64
+ if "%VC_VER%" == "14.3" set VCVARS_PLATFORM=amd64
)
:start
@@ -158,6 +181,8 @@ rem ***************************************************************************
call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
) else if "%VC_VER%" == "14.2" (
call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
+ ) else if "%VC_VER%" == "14.3" (
+ call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
) else (
call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
)
@@ -318,6 +343,7 @@ rem ***************************************************************************
echo.
echo Usage: build-wolfssl ^<compiler^> [platform] [configuration] [directory]
echo.
+ echo.
echo Compiler:
echo.
echo vc10 - Use Visual Studio 2010
@@ -326,20 +352,31 @@ rem ***************************************************************************
echo vc14 - Use Visual Studio 2015
echo vc14.1 - Use Visual Studio 2017
echo vc14.2 - Use Visual Studio 2019
+ echo vc14.3 - Use Visual Studio 2022
+ echo.
echo.
echo Platform:
echo.
echo x86 - Perform a 32-bit build
echo x64 - Perform a 64-bit build
echo.
+ echo If this parameter is unset the OS platform is used ^(%OS_PLATFORM%^).
+ echo.
+ echo.
echo Configuration:
echo.
echo debug - Perform a debug build
echo release - Perform a release build
echo.
+ echo If this parameter is unset both configurations are built.
+ echo.
+ echo.
echo Other:
echo.
echo directory - Specifies the wolfSSL source directory
+ echo.
+ echo If this parameter is unset the directory used is "%DEFAULT_START_DIR%".
+ echo.
goto error
:unknown
diff --git a/projects/checksrc.bat b/projects/checksrc.bat
index 3f04f0cd6..022e591ba 100644
--- a/projects/checksrc.bat
+++ b/projects/checksrc.bat
@@ -6,7 +6,7 @@ rem * / __| | | | |_) | |
rem * | (__| |_| | _ <| |___
rem * \___|\___/|_| \_\_____|
rem *
-rem * Copyright (C) 2014 - 2020, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2014 - 2022, 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
@@ -18,6 +18,8 @@ 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 * SPDX-License-Identifier: curl
rem *
rem ***************************************************************************
@@ -113,67 +115,67 @@ rem ***************************************************************************
if "%CHECK_SRC%" == "TRUE" (
rem Check the src directory
if exist %SRC_DIR%\src (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" -Wtool_hugehelp.c "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\src" -Wtool_hugehelp.c "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\src" "%%i"
)
)
if "%CHECK_LIB%" == "TRUE" (
rem Check the lib directory
if exist %SRC_DIR%\lib (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" -Wcurl_config.h.cmake -Wcurl_config.h.in -Wcurl_config.h "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib" -Wcurl_config.h.cmake -Wcurl_config.h.in -Wcurl_config.h "%%i"
)
rem Check the lib\vauth directory
if exist %SRC_DIR%\lib\vauth (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"
)
rem Check the lib\vquic directory
if exist %SRC_DIR%\lib\vquic (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"
)
rem Check the lib\vssh directory
if exist %SRC_DIR%\lib\vssh (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"
)
rem Check the lib\vtls directory
if exist %SRC_DIR%\lib\vtls (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
)
)
if "%CHECK_TESTS%" == "TRUE" (
rem Check the tests\libtest directory
if exist %SRC_DIR%\tests\libtest (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i"
)
rem Check the tests\unit directory
if exist %SRC_DIR%\tests\unit (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i"
)
rem Check the tests\server directory
if exist %SRC_DIR%\tests\server (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i"
- for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i"
)
)
if "%CHECK_EXAMPLES%" == "TRUE" (
rem Check the docs\examples directory
if exist %SRC_DIR%\docs\examples (
- for /f "delims=" %%i in ('dir "%SRC_DIR%\docs\examples\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\docs\examples" -ASNPRINTF "%%i"
+ for /f "delims=" %%i in ('dir "%SRC_DIR%\docs\examples\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\docs\examples" -ASNPRINTF "%%i"
)
)
diff --git a/projects/generate.bat b/projects/generate.bat
index 840094e32..372d1b302 100644
--- a/projects/generate.bat
+++ b/projects/generate.bat
@@ -6,7 +6,7 @@ rem * / __| | | | |_) | |
rem * | (__| |_| | _ <| |___
rem * \___|\___/|_| \_\_____|
rem *
-rem * Copyright (C) 2014 - 2020, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2014 - 2022, 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
@@ -18,6 +18,8 @@ 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 * SPDX-License-Identifier: curl
rem *
rem ***************************************************************************
@@ -44,16 +46,6 @@ rem ***************************************************************************
if /i "%~1" == "pre" (
set VERSION=PRE
- ) else if /i "%~1" == "vc6" (
- set VERSION=VC6
- ) else if /i "%~1" == "vc7" (
- set VERSION=VC7
- ) else if /i "%~1" == "vc7.1" (
- set VERSION=VC7.1
- ) else if /i "%~1" == "vc8" (
- set VERSION=VC8
- ) else if /i "%~1" == "vc9" (
- set VERSION=VC9
) else if /i "%~1" == "vc10" (
set VERSION=VC10
) else if /i "%~1" == "vc11" (
@@ -62,8 +54,10 @@ rem ***************************************************************************
set VERSION=VC12
) else if /i "%~1" == "vc14" (
set VERSION=VC14
- ) else if /i "%~1" == "vc15" (
- set VERSION=VC15
+ ) else if /i "%~1" == "vc14.10" (
+ set VERSION=VC14.10
+ ) else if /i "%~1" == "vc14.30" (
+ set VERSION=VC14.30
) else if /i "%~1" == "-clean" (
set MODE=CLEAN
) else if /i "%~1" == "-?" (
@@ -89,91 +83,12 @@ rem ***************************************************************************
)
)
if "%VERSION%" == "PRE" goto success
- if "%VERSION%" == "VC6" goto vc6
- if "%VERSION%" == "VC7" goto vc7
- if "%VERSION%" == "VC7.1" goto vc71
- if "%VERSION%" == "VC8" goto vc8
- if "%VERSION%" == "VC9" goto vc9
if "%VERSION%" == "VC10" goto vc10
if "%VERSION%" == "VC11" goto vc11
if "%VERSION%" == "VC12" goto vc12
if "%VERSION%" == "VC14" goto vc14
- if "%VERSION%" == "VC15" goto vc15
-
-:vc6
- echo.
-
- if "%MODE%" == "GENERATE" (
- echo Generating VC6 project files
- call :generate dsp Windows\VC6\src\curl.tmpl Windows\VC6\src\curl.dsp
- call :generate dsp Windows\VC6\lib\libcurl.tmpl Windows\VC6\lib\libcurl.dsp
- ) else (
- echo Removing VC6 project files
- call :clean Windows\VC6\src\curl.dsp
- call :clean Windows\VC6\lib\libcurl.dsp
- )
-
- if not "%VERSION%" == "ALL" goto success
-
-:vc7
- echo.
-
- if "%MODE%" == "GENERATE" (
- echo Generating VC7 project files
- call :generate vcproj1 Windows\VC7\src\curl.tmpl Windows\VC7\src\curl.vcproj
- call :generate vcproj1 Windows\VC7\lib\libcurl.tmpl Windows\VC7\lib\libcurl.vcproj
- ) else (
- echo Removing VC7 project files
- call :clean Windows\VC7\src\curl.vcproj
- call :clean Windows\VC7\lib\libcurl.vcproj
- )
-
- if not "%VERSION%" == "ALL" goto success
-
-:vc71
- echo.
-
- if "%MODE%" == "GENERATE" (
- echo Generating VC7.1 project files
- call :generate vcproj1 Windows\VC7.1\src\curl.tmpl Windows\VC7.1\src\curl.vcproj
- call :generate vcproj1 Windows\VC7.1\lib\libcurl.tmpl Windows\VC7.1\lib\libcurl.vcproj
- ) else (
- echo Removing VC7.1 project files
- call :clean Windows\VC7.1\src\curl.vcproj
- call :clean Windows\VC7.1\lib\libcurl.vcproj
- )
-
- if not "%VERSION%" == "ALL" goto success
-
-:vc8
- echo.
-
- if "%MODE%" == "GENERATE" (
- echo Generating VC8 project files
- call :generate vcproj2 Windows\VC8\src\curl.tmpl Windows\VC8\src\curl.vcproj
- call :generate vcproj2 Windows\VC8\lib\libcurl.tmpl Windows\VC8\lib\libcurl.vcproj
- ) else (
- echo Removing VC8 project files
- call :clean Windows\VC8\src\curl.vcproj
- call :clean Windows\VC8\lib\libcurl.vcproj
- )
-
- if not "%VERSION%" == "ALL" goto success
-
-:vc9
- echo.
-
- if "%MODE%" == "GENERATE" (
- echo Generating VC9 project files
- call :generate vcproj2 Windows\VC9\src\curl.tmpl Windows\VC9\src\curl.vcproj
- call :generate vcproj2 Windows\VC9\lib\libcurl.tmpl Windows\VC9\lib\libcurl.vcproj
- ) else (
- echo Removing VC9 project files
- call :clean Windows\VC9\src\curl.vcproj
- call :clean Windows\VC9\lib\libcurl.vcproj
- )
-
- if not "%VERSION%" == "ALL" goto success
+ if "%VERSION%" == "VC14.10" goto vc14.10
+ if "%VERSION%" == "VC14.30" goto vc14.30
:vc10
echo.
@@ -235,25 +150,39 @@ rem ***************************************************************************
if not "%VERSION%" == "ALL" goto success
-:vc15
+:vc14.10
+ echo.
+
+ if "%MODE%" == "GENERATE" (
+ echo Generating VC14.10 project files
+ call :generate vcxproj Windows\VC14.10\src\curl.tmpl Windows\VC14.10\src\curl.vcxproj
+ call :generate vcxproj Windows\VC14.10\lib\libcurl.tmpl Windows\VC14.10\lib\libcurl.vcxproj
+ ) else (
+ echo Removing VC14.10 project files
+ call :clean Windows\VC14.10\src\curl.vcxproj
+ call :clean Windows\VC14.10\lib\libcurl.vcxproj
+ )
+
+ if not "%VERSION%" == "ALL" goto success
+
+:vc14.30
echo.
if "%MODE%" == "GENERATE" (
- echo Generating VC15 project files
- call :generate vcxproj Windows\VC15\src\curl.tmpl Windows\VC15\src\curl.vcxproj
- call :generate vcxproj Windows\VC15\lib\libcurl.tmpl Windows\VC15\lib\libcurl.vcxproj
+ echo Generating VC14.30 project files
+ call :generate vcxproj Windows\VC14.30\src\curl.tmpl Windows\VC14.30\src\curl.vcxproj
+ call :generate vcxproj Windows\VC14.30\lib\libcurl.tmpl Windows\VC14.30\lib\libcurl.vcxproj
) else (
- echo Removing VC15 project files
- call :clean Windows\VC15\src\curl.vcxproj
- call :clean Windows\VC15\lib\libcurl.vcxproj
+ echo Removing VC14.30 project files
+ call :clean Windows\VC14.30\src\curl.vcxproj
+ call :clean Windows\VC14.30\lib\libcurl.vcxproj
)
goto success
rem Main generate function.
rem
-rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9
-rem or vcxproj for VC10, VC11, VC12, VC14 and VC15)
+rem %1 - Project Type (vcxproj for VC10, VC11, VC12, VC14, VC14.10 and VC14.30)
rem %2 - Input template file
rem %3 - Output project file
rem
@@ -282,9 +211,9 @@ rem
for /f "delims=" %%r in ('dir /b ..\src\*.rc') do call :element %1 src "%%r" %3
) else if "!var!" == "CURL_SRC_X_C_FILES" (
call :element %1 lib "strtoofft.c" %3
+ call :element %1 lib "timediff.c" %3
call :element %1 lib "nonblock.c" %3
call :element %1 lib "warnless.c" %3
- call :element %1 lib "curl_ctype.c" %3
call :element %1 lib "curl_multibyte.c" %3
call :element %1 lib "version_win32.c" %3
call :element %1 lib "dynbuf.c" %3
@@ -292,6 +221,7 @@ rem
call :element %1 lib "config-win32.h" %3
call :element %1 lib "curl_setup.h" %3
call :element %1 lib "strtoofft.h" %3
+ call :element %1 lib "timediff.h" %3
call :element %1 lib "nonblock.h" %3
call :element %1 lib "warnless.h" %3
call :element %1 lib "curl_ctype.h" %3
@@ -331,8 +261,7 @@ rem
rem Generates a single file xml element.
rem
-rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9
-rem or vcxproj for VC10, VC11, VC12, VC14 and VC15)
+rem %1 - Project Type (vcxproj for VC10, VC11, VC12, VC14, VC14.10 and VC14.30)
rem %2 - Directory (src, lib, lib\vauth, lib\vquic, lib\vssh, lib\vtls)
rem %3 - Source filename
rem %4 - Output project file
@@ -423,16 +352,12 @@ rem
echo What to generate:
echo.
echo pre - Prerequisites only
- 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 vc14 - Use Visual Studio 2015
- echo vc15 - Use Visual Studio 2017
+ echo vc14.10 - Use Visual Studio 2017
+ echo vc14.30 - Use Visual Studio 2022
echo.
echo -clean - Removes the project files
goto error
diff --git a/projects/wolfssl_options.h b/projects/wolfssl_options.h
index ca36547f6..c30d09777 100644
--- a/projects/wolfssl_options.h
+++ b/projects/wolfssl_options.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
By default wolfSSL has a very conservative configuration that can result in
@@ -26,14 +28,17 @@ To remedy this issue for libcurl I've generated this options file that
build-wolfssl will copy to the wolfSSL include directories and will result in
maximum compatibility.
-These are the configure options that were used to build wolfSSL v3.11.0 in
+These are the configure options that were used to build wolfSSL v5.1.1 in
mingw and generate the options in this file:
C_EXTRA_FLAGS="\
-Wno-attributes \
-Wno-unused-but-set-variable \
-DFP_MAX_BITS=16384 \
+ -DHAVE_SECRET_CALLBACK \
-DTFM_TIMING_RESISTANT \
+ -DUSE_WOLF_STRTOK \
+ -DWOLFSSL_DES_ECB \
-DWOLFSSL_STATIC_DH \
-DWOLFSSL_STATIC_RSA \
" \
@@ -41,6 +46,7 @@ C_EXTRA_FLAGS="\
--disable-jobserver \
--enable-aesgcm \
--enable-alpn \
+ --enable-altcertchains \
--enable-certgen \
--enable-des3 \
--enable-dh \
@@ -53,8 +59,9 @@ C_EXTRA_FLAGS="\
--enable-sessioncerts \
--enable-sha512 \
--enable-sni \
- --enable-sslv3 \
+ --enable-tlsv10 \
--enable-supportedcurves \
+ --enable-tls13 \
--enable-testcert \
> config.out 2>&1
@@ -73,12 +80,22 @@ https://www.yassl.com/forums/topic423-cacertorgs-ca-cert-verify-failed-but-withd
buffer size. You can do this using the define:
FP_MAX_BITS and setting it to 8192."
+HAVE_SECRET_CALLBACK
+Build wolfSSL with wolfSSL_set_tls13_secret_cb which allows saving TLS 1.3
+secrets to SSLKEYLOGFILE.
+
TFM_TIMING_RESISTANT
https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-2-building-wolfssl.html
From section 2.4.5 Increasing Performance, USE_FAST_MATH:
"Because the stack memory usage can be larger when using fastmath, we recommend
defining TFM_TIMING_RESISTANT as well when using this option."
+USE_WOLF_STRTOK
+Build wolfSSL to always use its internal strtok instead of C runtime strtok.
+
+WOLFSSL_DES_ECB
+Build wolfSSL with wolfSSL_DES_ecb_encrypt which is needed by libcurl for NTLM.
+
WOLFSSL_STATIC_DH: Allow TLS_ECDH_ ciphers
WOLFSSL_STATIC_RSA: Allow TLS_RSA_ ciphers
https://github.com/wolfSSL/wolfssl/blob/v3.6.6/README.md#note-1
@@ -88,7 +105,7 @@ Static key cipher suites are deprecated and disabled by default since v3.6.6.
/* wolfssl options.h
* generated from configure options
*
- * Copyright (C) 2006-2015 wolfSSL Inc.
+ * Copyright (C) 2006-2022 wolfSSL Inc.
*
* This file is part of wolfSSL. (formerly known as CyaSSL)
*
@@ -105,40 +122,24 @@ extern "C" {
#undef FP_MAX_BITS
#define FP_MAX_BITS 16384
+#undef HAVE_SECRET_CALLBACK
+#define HAVE_SECRET_CALLBACK
+
#undef TFM_TIMING_RESISTANT
#define TFM_TIMING_RESISTANT
+#undef USE_WOLF_STRTOK
+#define USE_WOLF_STRTOK
+
+#undef WOLFSSL_DES_ECB
+#define WOLFSSL_DES_ECB
+
#undef WOLFSSL_STATIC_DH
#define WOLFSSL_STATIC_DH
#undef WOLFSSL_STATIC_RSA
#define WOLFSSL_STATIC_RSA
-#undef OPENSSL_EXTRA
-#define OPENSSL_EXTRA
-
-/*
-The commented out defines below are the equivalent of --enable-tls13.
-Uncomment them to build wolfSSL with TLS 1.3 support as of v3.11.1-tls13-beta.
-This is for experimenting only, afaict TLS 1.3 support doesn't appear to be
-functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
-
-#undef WC_RSA_PSS
-#define WC_RSA_PSS
-
-#undef WOLFSSL_TLS13
-#define WOLFSSL_TLS13
-
-#undef HAVE_TLS_EXTENSIONS
-#define HAVE_TLS_EXTENSIONS
-
-#undef HAVE_FFDHE_2048
-#define HAVE_FFDHE_2048
-
-#undef HAVE_HKDF
-#define HAVE_HKDF
-*/
-
#undef TFM_TIMING_RESISTANT
#define TFM_TIMING_RESISTANT
@@ -148,8 +149,8 @@ functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
#undef WC_RSA_BLINDING
#define WC_RSA_BLINDING
-#undef HAVE_AESGCM
-#define HAVE_AESGCM
+#undef WOLFSSL_USE_ALIGN
+#define WOLFSSL_USE_ALIGN
#undef WOLFSSL_RIPEMD
#define WOLFSSL_RIPEMD
@@ -163,8 +164,8 @@ functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
#undef SESSION_CERTS
#define SESSION_CERTS
-#undef WOLFSSL_CERT_GEN
-#define WOLFSSL_CERT_GEN
+#undef HAVE_HKDF
+#define HAVE_HKDF
#undef HAVE_ECC
#define HAVE_ECC
@@ -175,11 +176,11 @@ functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
#undef ECC_SHAMIR
#define ECC_SHAMIR
-#undef WOLFSSL_ALLOW_SSLV3
-#define WOLFSSL_ALLOW_SSLV3
+#undef WOLFSSL_ALLOW_TLSV10
+#define WOLFSSL_ALLOW_TLSV10
-#undef NO_RC4
-#define NO_RC4
+#undef WC_RSA_PSS
+#define WC_RSA_PSS
#undef NO_HC128
#define NO_HC128
@@ -217,24 +218,87 @@ functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
#undef HAVE_SUPPORTED_CURVES
#define HAVE_SUPPORTED_CURVES
+#undef HAVE_FFDHE_2048
+#define HAVE_FFDHE_2048
+
+#undef HAVE_SUPPORTED_CURVES
+#define HAVE_SUPPORTED_CURVES
+
+#undef WOLFSSL_TLS13
+#define WOLFSSL_TLS13
+
+#undef HAVE_TLS_EXTENSIONS
+#define HAVE_TLS_EXTENSIONS
+
#undef HAVE_EXTENDED_MASTER
#define HAVE_EXTENDED_MASTER
+#undef WOLFSSL_ALT_CERT_CHAINS
+#define WOLFSSL_ALT_CERT_CHAINS
+
#undef WOLFSSL_TEST_CERT
#define WOLFSSL_TEST_CERT
+#undef NO_RC4
+#define NO_RC4
+
+#undef HAVE_ENCRYPT_THEN_MAC
+#define HAVE_ENCRYPT_THEN_MAC
+
#undef NO_PSK
#define NO_PSK
#undef NO_MD4
#define NO_MD4
+#undef WOLFSSL_ENCRYPTED_KEYS
+#define WOLFSSL_ENCRYPTED_KEYS
+
#undef USE_FAST_MATH
#define USE_FAST_MATH
#undef WC_NO_ASYNC_THREADING
#define WC_NO_ASYNC_THREADING
+#undef HAVE_DH_DEFAULT_PARAMS
+#define HAVE_DH_DEFAULT_PARAMS
+
+#undef WOLFSSL_CERT_GEN
+#define WOLFSSL_CERT_GEN
+
+#undef OPENSSL_EXTRA
+#define OPENSSL_EXTRA
+
+#undef WOLFSSL_ALWAYS_VERIFY_CB
+#define WOLFSSL_ALWAYS_VERIFY_CB
+
+#undef WOLFSSL_VERIFY_CB_ALL_CERTS
+#define WOLFSSL_VERIFY_CB_ALL_CERTS
+
+#undef WOLFSSL_EXTRA_ALERTS
+#define WOLFSSL_EXTRA_ALERTS
+
+#undef HAVE_EXT_CACHE
+#define HAVE_EXT_CACHE
+
+#undef WOLFSSL_FORCE_CACHE_ON_TICKET
+#define WOLFSSL_FORCE_CACHE_ON_TICKET
+
+#undef WOLFSSL_AKID_NAME
+#define WOLFSSL_AKID_NAME
+
+#undef HAVE_CTS
+#define HAVE_CTS
+
+#undef GCM_TABLE_4BIT
+#define GCM_TABLE_4BIT
+
+#undef HAVE_AESGCM
+#define HAVE_AESGCM
+
+#undef HAVE_WC_INTROSPECTION
+#define HAVE_WC_INTROSPECTION
+
#ifdef __cplusplus
}
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 214a10f6c..ed9819b87 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,7 +18,13 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
+
+EXTRA_DIST = updatemanpages.pl coverage.sh completion.pl firefox-db2pem.sh \
+ checksrc.pl mk-ca-bundle.pl
+
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
PERL = @PERL@
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
index 575fa36bc..d225f2480 100644
--- a/scripts/Makefile.in
+++ b/scripts/Makefile.in
@@ -13,6 +13,30 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
+
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -89,15 +113,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = scripts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -189,6 +211,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -206,6 +229,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -263,6 +287,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -281,12 +306,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -303,28 +329,6 @@ USE_WOLFSSL = @USE_WOLFSSL@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ZLIB_LIBS = @ZLIB_LIBS@
-
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
@@ -375,12 +379,14 @@ runstatedir = @runstatedir@
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@
+EXTRA_DIST = updatemanpages.pl coverage.sh completion.pl firefox-db2pem.sh \
+ checksrc.pl mk-ca-bundle.pl
+
ZSH_COMPLETION_FUNCTION_FILENAME = _curl
FISH_COMPLETION_FUNCTION_FILENAME = curl.fish
CLEANFILES = $(ZSH_COMPLETION_FUNCTION_FILENAME) $(FISH_COMPLETION_FUNCTION_FILENAME)
@@ -396,9 +402,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign scripts/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu scripts/Makefile
+ $(AUTOMAKE) --foreign scripts/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/lib/checksrc.pl b/scripts/checksrc.pl
index eea1126d1..651b4b700 100755
--- a/lib/checksrc.pl
+++ b/scripts/checksrc.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2011 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
use strict;
@@ -827,7 +829,7 @@ sub scanfile {
# A rather more interesting, and correct, check would be to not test
# only locally committed files but inspect all files wrt the year of
# their last commit. Removing the `git rev-list origin/master..HEAD`
- # condition below will enfore copyright year checks against the year
+ # condition below will enforce copyright year checks against the year
# the file was last committed (and thus edited to some degree).
my $commityear = undef;
@copyright = sort {$$b{year} cmp $$a{year}} @copyright;
diff --git a/scripts/completion.pl b/scripts/completion.pl
index 8bbf4838a..c2eb774f7 100755
--- a/scripts/completion.pl
+++ b/scripts/completion.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
use strict;
@@ -102,11 +104,20 @@ sub parse_main_opts {
$option .= '}' if defined $short;
$option .= '\'[' . trim($desc) . ']\'' if defined $desc;
- $option .= ":'$arg'" if defined $arg;
-
- $option .= ':_files'
- if defined $arg and ($arg eq '<file>' || $arg eq '<filename>'
- || $arg eq '<dir>');
+ if (defined $arg) {
+ $option .= ":'$arg'";
+ if ($arg =~ /<file ?(name)?>|<path>/) {
+ $option .= ':_files';
+ } elsif ($arg =~ /<dir>/) {
+ $option .= ":'_path_files -/'";
+ } elsif ($arg =~ /<url>/i) {
+ $option .= ':_urls';
+ } elsif ($long =~ /ftp/ && $arg =~ /<method>/) {
+ $option .= ":'(multicwd nocwd singlecwd)'";
+ } elsif ($arg =~ /<method>/) {
+ $option .= ":'(DELETE GET HEAD POST PUT)'";
+ }
+ }
}
push @list, $option;
diff --git a/scripts/coverage.sh b/scripts/coverage.sh
index e2b65b7f0..f3db9af17 100755
--- a/scripts/coverage.sh
+++ b/scripts/coverage.sh
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,9 +19,11 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
-./buildconf
+autoreconf -fi
mkdir -p cvr
cd cvr
../configure --disable-shared --enable-debug --enable-maintainer-mode --enable-code-coverage
diff --git a/lib/firefox-db2pem.sh b/scripts/firefox-db2pem.sh
index 629a2e8d6..36c2de93c 100644..100755
--- a/lib/firefox-db2pem.sh
+++ b/scripts/firefox-db2pem.sh
@@ -6,7 +6,7 @@
# * | (__| |_| | _ <| |___
# * \___|\___/|_| \_\_____|
# *
-# * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
# *
# * This software is licensed as described in the file COPYING, which
# * you should have received as part of this distribution. The terms
@@ -19,19 +19,21 @@
# * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# * KIND, either express or implied.
# *
+# * SPDX-License-Identifier: curl
+# *
# ***************************************************************************
# This shell script creates a fresh ca-bundle.crt file for use with libcurl.
# It extracts all ca certs it finds in the local Firefox database and converts
# them all into PEM format.
#
-db=`ls -1d $HOME/.mozilla/firefox/*default*`
+db=$(ls -1d $HOME/.mozilla/firefox/*default*)
out=$1
if test -z "$out"; then
out="ca-bundle.crt" # use a sensible default
fi
-currentdate=`date`
+currentdate=$(date)
cat >$out <<EOF
##
@@ -43,11 +45,11 @@ cat >$out <<EOF
EOF
-certutil -L -h 'Builtin Object Token' -d $db | \
+certutil -L -h 'Builtin Object Token' -d "$db" | \
grep ' *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$' | \
sed -e 's/ *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$//' -e 's/\(.*\)/"\1"/' | \
sort | \
-while read nickname; \
- do echo $nickname | sed -e "s/Builtin Object Token://g"; \
-eval certutil -d $db -L -n "$nickname" -a ; \
+while read -r nickname; \
+ do echo "$nickname" | sed -e "s/Builtin Object Token://g"; \
+eval certutil -d "$db" -L -n "$nickname" -a ; \
done >> $out
diff --git a/lib/mk-ca-bundle.pl b/scripts/mk-ca-bundle.pl
index e5a7420c0..926478f12 100755
--- a/lib/mk-ca-bundle.pl
+++ b/scripts/mk-ca-bundle.pl
@@ -6,7 +6,7 @@
# * | (__| |_| | _ <| |___
# * \___|\___/|_| \_\_____|
# *
-# * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
# *
# * This software is licensed as described in the file COPYING, which
# * you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# * KIND, either express or implied.
# *
+# * SPDX-License-Identifier: curl
+# *
# ***************************************************************************
# This Perl script creates a fresh ca-bundle.crt file for use with libcurl.
# It downloads certdata.txt from Mozilla's source tree (see URL below),
@@ -63,11 +65,12 @@ $opt_d = 'release';
# If the OpenSSL commandline is not in search path you can configure it here!
my $openssl = 'openssl';
-my $version = '1.28';
+my $version = '1.29';
$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)
+# 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;
@@ -94,8 +97,12 @@ my @valid_mozilla_trust_purposes = (
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).
+ "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";
@@ -210,8 +217,8 @@ sub is_in_list($@) {
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
+# 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;
@@ -227,7 +234,8 @@ sub parse_csv_param($$@) {
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
+ # 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();
}
@@ -282,7 +290,8 @@ 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
+ # 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}} ) );
}
@@ -421,9 +430,13 @@ my $caname;
my $certnum = 0;
my $skipnum = 0;
my $start_of_cert = 0;
+my $main_block = 0;
+my $main_block_name;
+my $trust_block = 0;
+my $trust_block_name;
my @precert;
my $cka_value;
-my $valid = 1;
+my $valid = 0;
open(TXT,"$txt") or die "Couldn't open $txt: $!\n";
while (<TXT>) {
@@ -435,101 +448,170 @@ while (<TXT>) {
print if ($opt_l);
last if (/\*\*\*\*\* END LICENSE BLOCK \*\*\*\*\*/);
}
+ next;
+ }
+ # The input file format consists of blocks of Mozilla objects.
+ # The blocks are separated by blank lines but may be related.
+ elsif(/^\s*$/) {
+ $main_block = 0;
+ $trust_block = 0;
+ next;
+ }
+ # Each certificate has a main block.
+ elsif(/^# Certificate "(.*)"/) {
+ (!$main_block && !$trust_block) or die "Unexpected certificate block";
+ $main_block = 1;
+ $main_block_name = $1;
+ # Reset all other certificate variables.
+ $trust_block = 0;
+ $trust_block_name = "";
+ $valid = 0;
+ $start_of_cert = 0;
+ $caname = "";
+ $cka_value = "";
+ undef @precert;
+ next;
+ }
+ # Each certificate's main block is followed by a trust block.
+ elsif(/^# Trust for (?:Certificate )?"(.*)"/) {
+ (!$main_block && !$trust_block) or die "Unexpected trust block";
+ $trust_block = 1;
+ $trust_block_name = $1;
+ if($main_block_name ne $trust_block_name) {
+ die "cert name \"$main_block_name\" != trust name \"$trust_block_name\"";
+ }
+ next;
}
-# Not Valid After : Thu Sep 30 14:01:15 2021
- elsif(/^# Not Valid After : (.*)/) {
- my $stamp = $1;
- use Time::Piece;
- my $t = Time::Piece->strptime
- ($stamp, "%a %b %d %H:%M:%S %Y");
- my $delta = ($t->epoch - time()); # negative means no longer valid
- if($delta < 0) {
+ # Ignore other blocks.
+ #
+ # There is a documentation comment block, a BEGINDATA block, and a bunch of
+ # blocks starting with "# Explicitly Distrust <certname>".
+ #
+ # The latter is for certificates that have already been removed and are not
+ # included. Not all explicitly distrusted certificates are ignored at this
+ # point, just those without an actual certificate.
+ elsif(!$main_block && !$trust_block) {
+ next;
+ }
+ elsif(/^#/) {
+ # The commented lines in a main block are plaintext metadata that describes
+ # the certificate. Issuer, Subject, Fingerprint, etc.
+ if($main_block) {
+ push @precert, $_ if not /^#$/;
+ if(/^# Not Valid After : (.*)/) {
+ my $stamp = $1;
+ use Time::Piece;
+ # Not Valid After : Thu Sep 30 14:01:15 2021
+ my $t = Time::Piece->strptime($stamp, "%a %b %d %H:%M:%S %Y");
+ my $delta = ($t->epoch - time()); # negative means no longer valid
+ if($delta < 0) {
$skipnum++;
- report "Skipping: $caname is not valid anymore" if ($opt_v);
+ report "Skipping: $main_block_name is not valid anymore" if ($opt_v);
$valid = 0;
- }
- else {
+ }
+ else {
$valid = 1;
+ }
}
- next;
+ }
+ next;
}
- elsif(/^# (Issuer|Serial Number|Subject|Not Valid Before|Fingerprint \(MD5\)|Fingerprint \(SHA1\)):/) {
- push @precert, $_;
- next;
+ elsif(!$valid) {
+ next;
}
- elsif(/^#|^\s*$/) {
- undef @precert;
- next;
- }
- chomp;
- # Example:
- # CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL
- # \062\060\060\066\061\067\060\060\060\060\060\060\132
- # END
+ chomp;
- if (/^CKA_NSS_SERVER_DISTRUST_AFTER (CK_BBOOL CK_FALSE|MULTILINE_OCTAL)/) {
+ if($main_block) {
+ if(/^CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE/) {
+ !$start_of_cert or die "Duplicate CKO_CERTIFICATE object";
+ $start_of_cert = 1;
+ next;
+ }
+ elsif(!$start_of_cert) {
+ next;
+ }
+ elsif(/^CKA_LABEL UTF8 \"(.*)\"/) {
+ ($caname eq "") or die "Duplicate CKA_LABEL attribute";
+ $caname = $1;
+ if($caname ne $main_block_name) {
+ die "caname \"$caname\" != cert name \"$main_block_name\"";
+ }
+ next;
+ }
+ elsif(/^CKA_VALUE MULTILINE_OCTAL/) {
+ ($cka_value eq "") or die "Duplicate CKA_VALUE attribute";
+ while (<TXT>) {
+ last if (/^END/);
+ chomp;
+ my @octets = split(/\\/);
+ shift @octets;
+ for (@octets) {
+ $cka_value .= chr(oct);
+ }
+ }
+ next;
+ }
+ elsif (/^CKA_NSS_SERVER_DISTRUST_AFTER (CK_BBOOL CK_FALSE|MULTILINE_OCTAL)/) {
+ # Example:
+ # CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL
+ # \062\060\060\066\061\067\060\060\060\060\060\060\132
+ # END
if($1 eq "MULTILINE_OCTAL") {
- my @timestamp;
- while (<TXT>) {
- last if (/^END/);
- chomp;
- my @octets = split(/\\/);
- shift @octets;
- for (@octets) {
- push @timestamp, chr(oct);
- }
- }
- # A trailing Z in the timestamp signifies UTC
- if($timestamp[12] ne "Z") {
- report "distrust date stamp is not using UTC";
- }
- # Example date: 200617000000Z
- # Means 2020-06-17 00:00:00 UTC
- my $distrustat =
- timegm($timestamp[10] . $timestamp[11], # second
- $timestamp[8] . $timestamp[9], # minute
- $timestamp[6] . $timestamp[7], # hour
- $timestamp[4] . $timestamp[5], # day
- ($timestamp[2] . $timestamp[3]) - 1, # month
- "20" . $timestamp[0] . $timestamp[1]); # year
- if(time >= $distrustat) {
- # not trusted anymore
- $skipnum++;
- report "Skipping: $caname is not trusted anymore" if ($opt_v);
- $valid = 0;
- }
- else {
- # still trusted
+ my @timestamp;
+ while (<TXT>) {
+ last if (/^END/);
+ chomp;
+ my @octets = split(/\\/);
+ shift @octets;
+ for (@octets) {
+ push @timestamp, chr(oct);
}
+ }
+ scalar(@timestamp) == 13 or die "Failed parsing timestamp";
+ # A trailing Z in the timestamp signifies UTC
+ if($timestamp[12] ne "Z") {
+ report "distrust date stamp is not using UTC";
+ }
+ # Example date: 200617000000Z
+ # Means 2020-06-17 00:00:00 UTC
+ my $distrustat =
+ timegm($timestamp[10] . $timestamp[11], # second
+ $timestamp[8] . $timestamp[9], # minute
+ $timestamp[6] . $timestamp[7], # hour
+ $timestamp[4] . $timestamp[5], # day
+ ($timestamp[2] . $timestamp[3]) - 1, # month
+ "20" . $timestamp[0] . $timestamp[1]); # year
+ if(time >= $distrustat) {
+ # not trusted anymore
+ $skipnum++;
+ report "Skipping: $main_block_name is not trusted anymore" if ($opt_v);
+ $valid = 0;
+ }
+ else {
+ # still trusted
+ }
}
next;
+ }
+ else {
+ next;
+ }
}
- # this is a match for the start of a certificate
- if (/^CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE/) {
- $start_of_cert = 1
- }
- if ($start_of_cert && /^CKA_LABEL UTF8 \"(.*)\"/) {
- $caname = $1;
+ if(!$trust_block || !$start_of_cert || $caname eq "" || $cka_value eq "") {
+ die "Certificate extraction failed";
}
+
my %trust_purposes_by_level;
- if ($start_of_cert && /^CKA_VALUE MULTILINE_OCTAL/) {
- $cka_value="";
- while (<TXT>) {
- last if (/^END/);
- chomp;
- my @octets = split(/\\/);
- shift @octets;
- for (@octets) {
- $cka_value .= chr(oct);
- }
- }
- }
- if(/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/ && $valid) {
+
+ if(/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/) {
# now scan the trust part to determine how we should trust this cert
while (<TXT>) {
- last if (/^#/);
+ if(/^\s*$/) {
+ $trust_block = 0;
+ last;
+ }
if (/^CKA_TRUST_([A-Z_]+)\s+CK_TRUST\s+CKT_NSS_([A-Z_]+)\s*$/) {
if ( !is_in_list($1,@valid_mozilla_trust_purposes) ) {
report "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2";
@@ -541,33 +623,42 @@ while (<TXT>) {
}
}
+ # Sanity check that an explicitly distrusted certificate only has trust
+ # purposes with a trust level of NOT_TRUSTED.
+ #
+ # Certificate objects that are explicitly distrusted are in a certificate
+ # block that starts # Certificate "Explicitly Distrust(ed) <certname>",
+ # where "Explicitly Distrust(ed) " was prepended to the original cert name.
+ if($caname =~ /distrust/i ||
+ $main_block_name =~ /distrust/i ||
+ $trust_block_name =~ /distrust/i) {
+ my @levels = keys %trust_purposes_by_level;
+ if(scalar(@levels) != 1 || $levels[0] ne "NOT_TRUSTED") {
+ die "\"$caname\" must have all trust purposes at level NOT_TRUSTED.";
+ }
+ }
+
if ( !should_output_cert(%trust_purposes_by_level) ) {
$skipnum ++;
- report "Skipping: $caname" if ($opt_v);
+ report "Skipping: $caname lacks acceptable trust level" if ($opt_v);
} else {
- my $data = $cka_value;
- $cka_value = "";
-
- if(!length($data)) {
- # if empty, skip
- next;
- }
- my $encoded = MIME::Base64::encode_base64($data, '');
+ my $encoded = MIME::Base64::encode_base64($cka_value, '');
$encoded =~ s/(.{1,${opt_w}})/$1\n/g;
my $pem = "-----BEGIN CERTIFICATE-----\n"
. $encoded
. "-----END CERTIFICATE-----\n";
print CRT "\n$caname\n";
- print CRT @precert if($opt_m);
my $maxStringLength = length(decode('UTF-8', $caname, Encode::FB_CROAK | Encode::LEAVE_SRC));
+ print CRT ("=" x $maxStringLength . "\n");
if ($opt_t) {
foreach my $key (sort 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_m) {
+ print CRT for @precert;
+ }
if (!$opt_t) {
print CRT $pem;
} else {
@@ -597,13 +688,10 @@ while (<TXT>) {
open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
}
}
- report "Parsing: $caname" if ($opt_v);
+ report "Processed: $caname" if ($opt_v);
$certnum ++;
- $start_of_cert = 0;
}
- undef @precert;
}
-
}
close(TXT) or die "Couldn't close $txt: $!\n";
close(CRT) or die "Couldn't close $crt.~: $!\n";
diff --git a/scripts/updatemanpages.pl b/scripts/updatemanpages.pl
index 2b6e25a65..fd461e4bd 100755
--- a/scripts/updatemanpages.pl
+++ b/scripts/updatemanpages.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Update man pages.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6f9c5d658..bf8ce7a1b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
set(EXE_NAME curl)
@@ -45,9 +47,7 @@ if(USE_MANUAL)
else()
add_custom_command(
OUTPUT tool_hugehelp.c
- COMMAND ${CMAKE_COMMAND} -E echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
- COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
- COMMAND ${CMAKE_COMMAND} -E echo "void hugehelp(void) {}" >> tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" > tool_hugehelp.c
DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
VERBATIM)
@@ -57,7 +57,7 @@ endif()
transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
-if(MSVC)
+if(WIN32)
list(APPEND CURL_FILES curl.rc)
endif()
@@ -109,6 +109,6 @@ target_link_libraries(${EXE_NAME} libcurl ${CURL_LIBS})
install(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
export(TARGETS ${EXE_NAME}
- APPEND FILE ${PROJECT_BINARY_DIR}/curl-target.cmake
+ FILE ${PROJECT_BINARY_DIR}/curl-target.cmake
NAMESPACE ${PROJECT_NAME}::
)
diff --git a/src/Makefile.am b/src/Makefile.am
index c8abc93b1..d9180b0b1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
@@ -53,6 +55,10 @@ include Makefile.inc
# CURL_FILES comes from Makefile.inc
curl_SOURCES = $(CURL_FILES)
+if OS_WINDOWS
+curl_SOURCES += $(CURL_RCFILES)
+$(CURL_RCFILES): tool_version.h
+endif
# This might hold -Werror
CFLAGS += @CURL_CFLAG_EXTRAS@
@@ -73,7 +79,7 @@ libcurltool_la_CPPFLAGS = $(AM_CPPFLAGS) \
-DCURL_STATICLIB -DUNITTESTS
libcurltool_la_CFLAGS =
libcurltool_la_LDFLAGS = -static $(LINKFLAGS)
-libcurltool_la_SOURCES = $(curl_SOURCES)
+libcurltool_la_SOURCES = $(CURL_FILES)
endif
CLEANFILES = tool_hugehelp.c
@@ -82,9 +88,7 @@ CLEANFILES = tool_hugehelp.c
NROFF=env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
EXTRA_DIST = mkhelp.pl makefile.dj \
- Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT \
- macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
- curl.rc Makefile.netware Makefile.inc CMakeLists.txt
+ Makefile.m32 makefile.amiga curl.rc Makefile.inc CMakeLists.txt
# Use absolute directory to disable VPATH
MANPAGE=$(abs_top_builddir)/docs/curl.1
@@ -127,15 +131,13 @@ endif
else # USE_MANUAL
# built-in manual has been disabled, make a blank file
$(HUGE):
- $(HUGECMD)(echo "/* built-in manual is disabled, blank function */" > $(HUGE); \
- echo '#include "tool_hugehelp.h"' >> $(HUGE); \
- echo "void hugehelp(void) {}" >>$(HUGE) )
+ echo '#include "tool_hugehelp.h"' >> $(HUGE)
endif
# ignore tool_hugehelp.c since it is generated source code and it plays
# by slightly different rules!
checksrc:
- $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) \
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \
-W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch])
if CURLDEBUG
@@ -153,3 +155,9 @@ tidy:
listhelp:
(cd $(top_srcdir)/docs/cmdline-opts && ./gen.pl listhelp *.d) > tool_listhelp.c
+
+if OS_WINDOWS
+# Warning is "normal": libtool: error: ignoring unknown tag RC
+.rc.o:
+ $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include -DCURL_EMBED_MANIFEST $(RCFLAGS) -i $< -o $@
+endif
diff --git a/src/Makefile.in b/src/Makefile.in
index c35b2a3a3..652e6be6d 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -34,12 +34,13 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# ./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
-# this idea (posted to the libcurl list by Adam Kellas):
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
# CSRC1 = file1.c file2.c file3.c
# CSRC2 = file4.c file5.c file6.c
# CSOURCES = $(CSRC1) $(CSRC2)
@@ -121,17 +122,16 @@ build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = curl$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
+@OS_WINDOWS_TRUE@am__append_2 = $(CURL_RCFILES)
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -165,36 +165,36 @@ libcurltool_la_LIBADD =
am__libcurltool_la_SOURCES_DIST = slist_wc.c 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_filetime.c tool_findfile.c tool_formparse.c \
- tool_getparam.c tool_getpass.c tool_help.c tool_helpers.c \
- tool_hugehelp.c tool_libinfo.c tool_listhelp.c tool_main.c \
- tool_msgs.c tool_operate.c tool_operhlp.c tool_panykey.c \
- tool_paramhlp.c tool_parsecfg.c tool_progress.c tool_strdup.c \
- tool_setopt.c tool_sleep.c tool_urlglob.c tool_util.c \
- tool_vms.c tool_writeout.c tool_writeout_json.c tool_xattr.c \
- ../lib/strtoofft.c ../lib/nonblock.c ../lib/warnless.c \
- ../lib/curl_ctype.c ../lib/curl_multibyte.c \
+ tool_dirhie.c tool_doswin.c tool_easysrc.c tool_filetime.c \
+ tool_findfile.c tool_formparse.c tool_getparam.c \
+ tool_getpass.c tool_help.c tool_helpers.c tool_hugehelp.c \
+ tool_libinfo.c tool_listhelp.c tool_main.c tool_msgs.c \
+ tool_operate.c tool_operhlp.c tool_panykey.c tool_paramhlp.c \
+ tool_parsecfg.c tool_progress.c tool_strdup.c tool_setopt.c \
+ tool_sleep.c tool_urlglob.c tool_util.c tool_vms.c \
+ tool_writeout.c tool_writeout_json.c tool_xattr.c \
+ ../lib/strtoofft.c ../lib/timediff.c ../lib/nonblock.c \
+ ../lib/warnless.c ../lib/curl_multibyte.c \
../lib/version_win32.c ../lib/dynbuf.c slist_wc.h \
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_filetime.h tool_findfile.h \
- tool_formparse.h tool_getparam.h tool_getpass.h tool_help.h \
- tool_helpers.h tool_hugehelp.h tool_libinfo.h tool_main.h \
- tool_msgs.h tool_operate.h tool_operhlp.h tool_panykey.h \
- tool_paramhlp.h tool_parsecfg.h tool_progress.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_writeout.h tool_writeout_json.h tool_xattr.h
+ tool_cfgable.h tool_dirhie.h tool_doswin.h tool_easysrc.h \
+ tool_filetime.h tool_findfile.h tool_formparse.h \
+ tool_getparam.h tool_getpass.h tool_help.h tool_helpers.h \
+ tool_hugehelp.h tool_libinfo.h tool_main.h tool_msgs.h \
+ tool_operate.h tool_operhlp.h tool_panykey.h tool_paramhlp.h \
+ tool_parsecfg.h tool_progress.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_writeout.h \
+ tool_writeout_json.h tool_xattr.h
am__objects_1 = libcurltool_la-slist_wc.lo \
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 libcurltool_la-tool_cb_rea.lo \
libcurltool_la-tool_cb_see.lo libcurltool_la-tool_cb_wrt.lo \
- libcurltool_la-tool_cfgable.lo libcurltool_la-tool_convert.lo \
- libcurltool_la-tool_dirhie.lo libcurltool_la-tool_doswin.lo \
- libcurltool_la-tool_easysrc.lo libcurltool_la-tool_filetime.lo \
+ libcurltool_la-tool_cfgable.lo libcurltool_la-tool_dirhie.lo \
+ libcurltool_la-tool_doswin.lo libcurltool_la-tool_easysrc.lo \
+ libcurltool_la-tool_filetime.lo \
libcurltool_la-tool_findfile.lo \
libcurltool_la-tool_formparse.lo \
libcurltool_la-tool_getparam.lo libcurltool_la-tool_getpass.lo \
@@ -213,16 +213,15 @@ am__objects_1 = libcurltool_la-slist_wc.lo \
libcurltool_la-tool_xattr.lo
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_2 = ../lib/libcurltool_la-strtoofft.lo \
+ ../lib/libcurltool_la-timediff.lo \
../lib/libcurltool_la-nonblock.lo \
../lib/libcurltool_la-warnless.lo \
- ../lib/libcurltool_la-curl_ctype.lo \
../lib/libcurltool_la-curl_multibyte.lo \
../lib/libcurltool_la-version_win32.lo \
../lib/libcurltool_la-dynbuf.lo
am__objects_3 =
am__objects_4 = $(am__objects_1) $(am__objects_2) $(am__objects_3)
-am__objects_5 = $(am__objects_4)
-@BUILD_UNITTESTS_TRUE@am_libcurltool_la_OBJECTS = $(am__objects_5)
+@BUILD_UNITTESTS_TRUE@am_libcurltool_la_OBJECTS = $(am__objects_4)
libcurltool_la_OBJECTS = $(am_libcurltool_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -233,19 +232,43 @@ libcurltool_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(libcurltool_la_CFLAGS) $(CFLAGS) $(libcurltool_la_LDFLAGS) \
$(LDFLAGS) -o $@
@BUILD_UNITTESTS_TRUE@am_libcurltool_la_rpath =
-am__objects_6 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \
+am__curl_SOURCES_DIST = slist_wc.c 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_dirhie.c \
+ tool_doswin.c tool_easysrc.c tool_filetime.c tool_findfile.c \
+ tool_formparse.c tool_getparam.c tool_getpass.c tool_help.c \
+ tool_helpers.c tool_hugehelp.c tool_libinfo.c tool_listhelp.c \
+ tool_main.c tool_msgs.c tool_operate.c tool_operhlp.c \
+ tool_panykey.c tool_paramhlp.c tool_parsecfg.c tool_progress.c \
+ tool_strdup.c tool_setopt.c tool_sleep.c tool_urlglob.c \
+ tool_util.c tool_vms.c tool_writeout.c tool_writeout_json.c \
+ tool_xattr.c ../lib/strtoofft.c ../lib/timediff.c \
+ ../lib/nonblock.c ../lib/warnless.c ../lib/curl_multibyte.c \
+ ../lib/version_win32.c ../lib/dynbuf.c slist_wc.h \
+ 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_dirhie.h tool_doswin.h tool_easysrc.h \
+ tool_filetime.h tool_findfile.h tool_formparse.h \
+ tool_getparam.h tool_getpass.h tool_help.h tool_helpers.h \
+ tool_hugehelp.h tool_libinfo.h tool_main.h tool_msgs.h \
+ tool_operate.h tool_operhlp.h tool_panykey.h tool_paramhlp.h \
+ tool_parsecfg.h tool_progress.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_writeout.h \
+ tool_writeout_json.h tool_xattr.h curl.rc
+am__objects_5 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \
tool_bname.$(OBJEXT) tool_cb_dbg.$(OBJEXT) \
tool_cb_hdr.$(OBJEXT) tool_cb_prg.$(OBJEXT) \
tool_cb_rea.$(OBJEXT) tool_cb_see.$(OBJEXT) \
tool_cb_wrt.$(OBJEXT) tool_cfgable.$(OBJEXT) \
- tool_convert.$(OBJEXT) tool_dirhie.$(OBJEXT) \
- tool_doswin.$(OBJEXT) tool_easysrc.$(OBJEXT) \
- tool_filetime.$(OBJEXT) tool_findfile.$(OBJEXT) \
- tool_formparse.$(OBJEXT) tool_getparam.$(OBJEXT) \
- tool_getpass.$(OBJEXT) tool_help.$(OBJEXT) \
- tool_helpers.$(OBJEXT) tool_hugehelp.$(OBJEXT) \
- tool_libinfo.$(OBJEXT) tool_listhelp.$(OBJEXT) \
- tool_main.$(OBJEXT) tool_msgs.$(OBJEXT) tool_operate.$(OBJEXT) \
+ tool_dirhie.$(OBJEXT) tool_doswin.$(OBJEXT) \
+ tool_easysrc.$(OBJEXT) tool_filetime.$(OBJEXT) \
+ tool_findfile.$(OBJEXT) tool_formparse.$(OBJEXT) \
+ tool_getparam.$(OBJEXT) tool_getpass.$(OBJEXT) \
+ tool_help.$(OBJEXT) tool_helpers.$(OBJEXT) \
+ tool_hugehelp.$(OBJEXT) tool_libinfo.$(OBJEXT) \
+ tool_listhelp.$(OBJEXT) tool_main.$(OBJEXT) \
+ tool_msgs.$(OBJEXT) tool_operate.$(OBJEXT) \
tool_operhlp.$(OBJEXT) tool_panykey.$(OBJEXT) \
tool_paramhlp.$(OBJEXT) tool_parsecfg.$(OBJEXT) \
tool_progress.$(OBJEXT) tool_strdup.$(OBJEXT) \
@@ -253,12 +276,14 @@ am__objects_6 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \
tool_urlglob.$(OBJEXT) tool_util.$(OBJEXT) tool_vms.$(OBJEXT) \
tool_writeout.$(OBJEXT) tool_writeout_json.$(OBJEXT) \
tool_xattr.$(OBJEXT)
-am__objects_7 = ../lib/strtoofft.$(OBJEXT) ../lib/nonblock.$(OBJEXT) \
- ../lib/warnless.$(OBJEXT) ../lib/curl_ctype.$(OBJEXT) \
+am__objects_6 = ../lib/strtoofft.$(OBJEXT) ../lib/timediff.$(OBJEXT) \
+ ../lib/nonblock.$(OBJEXT) ../lib/warnless.$(OBJEXT) \
../lib/curl_multibyte.$(OBJEXT) ../lib/version_win32.$(OBJEXT) \
../lib/dynbuf.$(OBJEXT)
-am__objects_8 = $(am__objects_6) $(am__objects_7) $(am__objects_3)
-am_curl_OBJECTS = $(am__objects_8)
+am__objects_7 = $(am__objects_5) $(am__objects_6) $(am__objects_3)
+am__objects_8 = curl.$(OBJEXT)
+@OS_WINDOWS_TRUE@am__objects_9 = $(am__objects_8)
+am_curl_OBJECTS = $(am__objects_7) $(am__objects_9)
curl_OBJECTS = $(am_curl_OBJECTS)
@USE_EXPLICIT_LIB_DEPS_FALSE@curl_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(top_builddir)/lib/libcurl.la
@@ -279,17 +304,18 @@ am__v_at_1 =
DEFAULT_INCLUDES =
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ../lib/$(DEPDIR)/curl_ctype.Po \
- ../lib/$(DEPDIR)/curl_multibyte.Po ../lib/$(DEPDIR)/dynbuf.Po \
- ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo \
+am__depfiles_remade = ../lib/$(DEPDIR)/curl_multibyte.Po \
+ ../lib/$(DEPDIR)/dynbuf.Po \
../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo \
../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo \
../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo \
../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo \
+ ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo \
../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo \
../lib/$(DEPDIR)/libcurltool_la-warnless.Plo \
../lib/$(DEPDIR)/nonblock.Po ../lib/$(DEPDIR)/strtoofft.Po \
- ../lib/$(DEPDIR)/version_win32.Po ../lib/$(DEPDIR)/warnless.Po \
+ ../lib/$(DEPDIR)/timediff.Po ../lib/$(DEPDIR)/version_win32.Po \
+ ../lib/$(DEPDIR)/warnless.Po \
./$(DEPDIR)/libcurltool_la-slist_wc.Plo \
./$(DEPDIR)/libcurltool_la-tool_binmode.Plo \
./$(DEPDIR)/libcurltool_la-tool_bname.Plo \
@@ -300,7 +326,6 @@ am__depfiles_remade = ../lib/$(DEPDIR)/curl_ctype.Po \
./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo \
./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo \
./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo \
- ./$(DEPDIR)/libcurltool_la-tool_convert.Plo \
./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo \
./$(DEPDIR)/libcurltool_la-tool_doswin.Plo \
./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo \
@@ -336,22 +361,21 @@ am__depfiles_remade = ../lib/$(DEPDIR)/curl_ctype.Po \
./$(DEPDIR)/tool_cb_hdr.Po ./$(DEPDIR)/tool_cb_prg.Po \
./$(DEPDIR)/tool_cb_rea.Po ./$(DEPDIR)/tool_cb_see.Po \
./$(DEPDIR)/tool_cb_wrt.Po ./$(DEPDIR)/tool_cfgable.Po \
- ./$(DEPDIR)/tool_convert.Po ./$(DEPDIR)/tool_dirhie.Po \
- ./$(DEPDIR)/tool_doswin.Po ./$(DEPDIR)/tool_easysrc.Po \
- ./$(DEPDIR)/tool_filetime.Po ./$(DEPDIR)/tool_findfile.Po \
- ./$(DEPDIR)/tool_formparse.Po ./$(DEPDIR)/tool_getparam.Po \
- ./$(DEPDIR)/tool_getpass.Po ./$(DEPDIR)/tool_help.Po \
- ./$(DEPDIR)/tool_helpers.Po ./$(DEPDIR)/tool_hugehelp.Po \
- ./$(DEPDIR)/tool_libinfo.Po ./$(DEPDIR)/tool_listhelp.Po \
- ./$(DEPDIR)/tool_main.Po ./$(DEPDIR)/tool_msgs.Po \
- ./$(DEPDIR)/tool_operate.Po ./$(DEPDIR)/tool_operhlp.Po \
- ./$(DEPDIR)/tool_panykey.Po ./$(DEPDIR)/tool_paramhlp.Po \
- ./$(DEPDIR)/tool_parsecfg.Po ./$(DEPDIR)/tool_progress.Po \
- ./$(DEPDIR)/tool_setopt.Po ./$(DEPDIR)/tool_sleep.Po \
- ./$(DEPDIR)/tool_strdup.Po ./$(DEPDIR)/tool_urlglob.Po \
- ./$(DEPDIR)/tool_util.Po ./$(DEPDIR)/tool_vms.Po \
- ./$(DEPDIR)/tool_writeout.Po ./$(DEPDIR)/tool_writeout_json.Po \
- ./$(DEPDIR)/tool_xattr.Po
+ ./$(DEPDIR)/tool_dirhie.Po ./$(DEPDIR)/tool_doswin.Po \
+ ./$(DEPDIR)/tool_easysrc.Po ./$(DEPDIR)/tool_filetime.Po \
+ ./$(DEPDIR)/tool_findfile.Po ./$(DEPDIR)/tool_formparse.Po \
+ ./$(DEPDIR)/tool_getparam.Po ./$(DEPDIR)/tool_getpass.Po \
+ ./$(DEPDIR)/tool_help.Po ./$(DEPDIR)/tool_helpers.Po \
+ ./$(DEPDIR)/tool_hugehelp.Po ./$(DEPDIR)/tool_libinfo.Po \
+ ./$(DEPDIR)/tool_listhelp.Po ./$(DEPDIR)/tool_main.Po \
+ ./$(DEPDIR)/tool_msgs.Po ./$(DEPDIR)/tool_operate.Po \
+ ./$(DEPDIR)/tool_operhlp.Po ./$(DEPDIR)/tool_panykey.Po \
+ ./$(DEPDIR)/tool_paramhlp.Po ./$(DEPDIR)/tool_parsecfg.Po \
+ ./$(DEPDIR)/tool_progress.Po ./$(DEPDIR)/tool_setopt.Po \
+ ./$(DEPDIR)/tool_sleep.Po ./$(DEPDIR)/tool_strdup.Po \
+ ./$(DEPDIR)/tool_urlglob.Po ./$(DEPDIR)/tool_util.Po \
+ ./$(DEPDIR)/tool_vms.Po ./$(DEPDIR)/tool_writeout.Po \
+ ./$(DEPDIR)/tool_writeout_json.Po ./$(DEPDIR)/tool_xattr.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -372,7 +396,8 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libcurltool_la_SOURCES) $(curl_SOURCES)
-DIST_SOURCES = $(am__libcurltool_la_SOURCES_DIST) $(curl_SOURCES)
+DIST_SOURCES = $(am__libcurltool_la_SOURCES_DIST) \
+ $(am__curl_SOURCES_DIST)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
@@ -485,6 +510,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -502,6 +528,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -563,6 +590,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -581,12 +609,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -653,7 +682,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -667,7 +695,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -680,6 +708,8 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
@@ -702,9 +732,9 @@ SUBDIRS = ../docs
# the official API, but we re-use the code here to avoid duplication.
CURLX_CFILES = \
../lib/strtoofft.c \
+ ../lib/timediff.c \
../lib/nonblock.c \
../lib/warnless.c \
- ../lib/curl_ctype.c \
../lib/curl_multibyte.c \
../lib/version_win32.c \
../lib/dynbuf.c
@@ -712,6 +742,7 @@ CURLX_CFILES = \
CURLX_HFILES = \
../lib/curl_setup.h \
../lib/strtoofft.h \
+ ../lib/timediff.h \
../lib/nonblock.h \
../lib/warnless.h \
../lib/curl_ctype.h \
@@ -730,7 +761,6 @@ CURL_CFILES = \
tool_cb_see.c \
tool_cb_wrt.c \
tool_cfgable.c \
- tool_convert.c \
tool_dirhie.c \
tool_doswin.c \
tool_easysrc.c \
@@ -773,7 +803,6 @@ CURL_HFILES = \
tool_cb_see.h \
tool_cb_wrt.h \
tool_cfgable.h \
- tool_convert.h \
tool_dirhie.h \
tool_doswin.h \
tool_easysrc.h \
@@ -813,7 +842,7 @@ CURL_RCFILES = curl.rc
CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
# CURL_FILES comes from Makefile.inc
-curl_SOURCES = $(CURL_FILES)
+curl_SOURCES = $(CURL_FILES) $(am__append_2)
@USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
@USE_EXPLICIT_LIB_DEPS_TRUE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
@@ -824,12 +853,10 @@ curl_SOURCES = $(CURL_FILES)
@BUILD_UNITTESTS_TRUE@libcurltool_la_CFLAGS =
@BUILD_UNITTESTS_TRUE@libcurltool_la_LDFLAGS = -static $(LINKFLAGS)
-@BUILD_UNITTESTS_TRUE@libcurltool_la_SOURCES = $(curl_SOURCES)
+@BUILD_UNITTESTS_TRUE@libcurltool_la_SOURCES = $(CURL_FILES)
CLEANFILES = tool_hugehelp.c
EXTRA_DIST = mkhelp.pl makefile.dj \
- Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT \
- macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
- curl.rc Makefile.netware Makefile.inc CMakeLists.txt
+ Makefile.m32 makefile.amiga curl.rc Makefile.inc CMakeLists.txt
# Use absolute directory to disable VPATH
@@ -851,7 +878,7 @@ TIDY := clang-tidy
all: all-recursive
.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .o .obj .rc
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
@@ -950,12 +977,12 @@ clean-noinstLTLIBRARIES:
@: > ../lib/$(DEPDIR)/$(am__dirstamp)
../lib/libcurltool_la-strtoofft.lo: ../lib/$(am__dirstamp) \
../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-timediff.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)
-../lib/libcurltool_la-curl_ctype.lo: ../lib/$(am__dirstamp) \
- ../lib/$(DEPDIR)/$(am__dirstamp)
../lib/libcurltool_la-curl_multibyte.lo: ../lib/$(am__dirstamp) \
../lib/$(DEPDIR)/$(am__dirstamp)
../lib/libcurltool_la-version_win32.lo: ../lib/$(am__dirstamp) \
@@ -967,12 +994,12 @@ libcurltool.la: $(libcurltool_la_OBJECTS) $(libcurltool_la_DEPENDENCIES) $(EXTRA
$(AM_V_CCLD)$(libcurltool_la_LINK) $(am_libcurltool_la_rpath) $(libcurltool_la_OBJECTS) $(libcurltool_la_LIBADD) $(LIBS)
../lib/strtoofft.$(OBJEXT): ../lib/$(am__dirstamp) \
../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/timediff.$(OBJEXT): ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
../lib/nonblock.$(OBJEXT): ../lib/$(am__dirstamp) \
../lib/$(DEPDIR)/$(am__dirstamp)
../lib/warnless.$(OBJEXT): ../lib/$(am__dirstamp) \
../lib/$(DEPDIR)/$(am__dirstamp)
-../lib/curl_ctype.$(OBJEXT): ../lib/$(am__dirstamp) \
- ../lib/$(DEPDIR)/$(am__dirstamp)
../lib/curl_multibyte.$(OBJEXT): ../lib/$(am__dirstamp) \
../lib/$(DEPDIR)/$(am__dirstamp)
../lib/version_win32.$(OBJEXT): ../lib/$(am__dirstamp) \
@@ -992,18 +1019,18 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/dynbuf.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-timediff.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-warnless.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/version_win32.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-slist_wc.Plo@am__quote@ # am--include-marker
@@ -1016,7 +1043,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_convert.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_doswin.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo@am__quote@ # am--include-marker
@@ -1057,7 +1083,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_see.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_wrt.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cfgable.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_convert.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_dirhie.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_doswin.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_easysrc.Po@am__quote@ # am--include-marker
@@ -1189,13 +1214,6 @@ libcurltool_la-tool_cfgable.lo: tool_cfgable.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_cfgable.lo `test -f 'tool_cfgable.c' || echo '$(srcdir)/'`tool_cfgable.c
-libcurltool_la-tool_convert.lo: tool_convert.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_convert.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_convert.Tpo -c -o libcurltool_la-tool_convert.lo `test -f 'tool_convert.c' || echo '$(srcdir)/'`tool_convert.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_convert.Tpo $(DEPDIR)/libcurltool_la-tool_convert.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_convert.c' object='libcurltool_la-tool_convert.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_convert.lo `test -f 'tool_convert.c' || echo '$(srcdir)/'`tool_convert.c
-
libcurltool_la-tool_dirhie.lo: tool_dirhie.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_dirhie.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_dirhie.Tpo -c -o libcurltool_la-tool_dirhie.lo `test -f 'tool_dirhie.c' || echo '$(srcdir)/'`tool_dirhie.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_dirhie.Tpo $(DEPDIR)/libcurltool_la-tool_dirhie.Plo
@@ -1413,6 +1431,13 @@ 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 ../lib/libcurltool_la-strtoofft.lo `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
+../lib/libcurltool_la-timediff.lo: ../lib/timediff.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-timediff.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-timediff.Tpo -c -o ../lib/libcurltool_la-timediff.lo `test -f '../lib/timediff.c' || echo '$(srcdir)/'`../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-timediff.Tpo ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/timediff.c' object='../lib/libcurltool_la-timediff.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 ../lib/libcurltool_la-timediff.lo `test -f '../lib/timediff.c' || echo '$(srcdir)/'`../lib/timediff.c
+
../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
@@ -1427,13 +1452,6 @@ 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 ../lib/libcurltool_la-warnless.lo `test -f '../lib/warnless.c' || echo '$(srcdir)/'`../lib/warnless.c
-../lib/libcurltool_la-curl_ctype.lo: ../lib/curl_ctype.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-curl_ctype.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Tpo -c -o ../lib/libcurltool_la-curl_ctype.lo `test -f '../lib/curl_ctype.c' || echo '$(srcdir)/'`../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Tpo ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/curl_ctype.c' object='../lib/libcurltool_la-curl_ctype.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 ../lib/libcurltool_la-curl_ctype.lo `test -f '../lib/curl_ctype.c' || echo '$(srcdir)/'`../lib/curl_ctype.c
-
../lib/libcurltool_la-curl_multibyte.lo: ../lib/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) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-curl_multibyte.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Tpo -c -o ../lib/libcurltool_la-curl_multibyte.lo `test -f '../lib/curl_multibyte.c' || echo '$(srcdir)/'`../lib/curl_multibyte.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Tpo ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
@@ -1666,18 +1684,18 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool \
clean-noinstLTLIBRARIES mostlyclean-am
distclean: distclean-recursive
- -rm -f ../lib/$(DEPDIR)/curl_ctype.Po
- -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
+ -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
-rm -f ../lib/$(DEPDIR)/dynbuf.Po
- -rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo
-rm -f ../lib/$(DEPDIR)/nonblock.Po
-rm -f ../lib/$(DEPDIR)/strtoofft.Po
+ -rm -f ../lib/$(DEPDIR)/timediff.Po
-rm -f ../lib/$(DEPDIR)/version_win32.Po
-rm -f ../lib/$(DEPDIR)/warnless.Po
-rm -f ./$(DEPDIR)/libcurltool_la-slist_wc.Plo
@@ -1690,7 +1708,6 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo
- -rm -f ./$(DEPDIR)/libcurltool_la-tool_convert.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_doswin.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo
@@ -1731,7 +1748,6 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/tool_cb_see.Po
-rm -f ./$(DEPDIR)/tool_cb_wrt.Po
-rm -f ./$(DEPDIR)/tool_cfgable.Po
- -rm -f ./$(DEPDIR)/tool_convert.Po
-rm -f ./$(DEPDIR)/tool_dirhie.Po
-rm -f ./$(DEPDIR)/tool_doswin.Po
-rm -f ./$(DEPDIR)/tool_easysrc.Po
@@ -1807,18 +1823,18 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
- -rm -f ../lib/$(DEPDIR)/curl_ctype.Po
- -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
+ -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
-rm -f ../lib/$(DEPDIR)/dynbuf.Po
- -rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo
-rm -f ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo
-rm -f ../lib/$(DEPDIR)/nonblock.Po
-rm -f ../lib/$(DEPDIR)/strtoofft.Po
+ -rm -f ../lib/$(DEPDIR)/timediff.Po
-rm -f ../lib/$(DEPDIR)/version_win32.Po
-rm -f ../lib/$(DEPDIR)/warnless.Po
-rm -f ./$(DEPDIR)/libcurltool_la-slist_wc.Plo
@@ -1831,7 +1847,6 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo
- -rm -f ./$(DEPDIR)/libcurltool_la-tool_convert.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_doswin.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo
@@ -1872,7 +1887,6 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/tool_cb_see.Po
-rm -f ./$(DEPDIR)/tool_cb_wrt.Po
-rm -f ./$(DEPDIR)/tool_cfgable.Po
- -rm -f ./$(DEPDIR)/tool_convert.Po
-rm -f ./$(DEPDIR)/tool_dirhie.Po
-rm -f ./$(DEPDIR)/tool_doswin.Po
-rm -f ./$(DEPDIR)/tool_easysrc.Po
@@ -1944,6 +1958,7 @@ uninstall-am: uninstall-binPROGRAMS
# remove targets if the command fails
.DELETE_ON_ERROR:
+@OS_WINDOWS_TRUE@$(CURL_RCFILES): tool_version.h
# Here are the stuff to create a built-in manual
@@ -1966,14 +1981,12 @@ uninstall-am: uninstall-binPROGRAMS
# built-in manual has been disabled, make a blank file
@USE_MANUAL_FALSE@$(HUGE):
-@USE_MANUAL_FALSE@ $(HUGECMD)(echo "/* built-in manual is disabled, blank function */" > $(HUGE); \
-@USE_MANUAL_FALSE@ echo '#include "tool_hugehelp.h"' >> $(HUGE); \
-@USE_MANUAL_FALSE@ echo "void hugehelp(void) {}" >>$(HUGE) )
+@USE_MANUAL_FALSE@ echo '#include "tool_hugehelp.h"' >> $(HUGE)
# ignore tool_hugehelp.c since it is generated source code and it plays
# by slightly different rules!
checksrc:
- $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) \
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \
-W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch])
# for debug builds, we scan the sources on all regular make invokes
@@ -1985,6 +1998,10 @@ tidy:
listhelp:
(cd $(top_srcdir)/docs/cmdline-opts && ./gen.pl listhelp *.d) > tool_listhelp.c
+# Warning is "normal": libtool: error: ignoring unknown tag RC
+@OS_WINDOWS_TRUE@.rc.o:
+@OS_WINDOWS_TRUE@ $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include -DCURL_EMBED_MANIFEST $(RCFLAGS) -i $< -o $@
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/src/Makefile.inc b/src/Makefile.inc
index 44cfe0f81..bdf663f95 100644
--- a/src/Makefile.inc
+++ b/src/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,12 +18,13 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# ./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
-# this idea (posted to the libcurl list by Adam Kellas):
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
# CSRC1 = file1.c file2.c file3.c
# CSRC2 = file4.c file5.c file6.c
# CSOURCES = $(CSRC1) $(CSRC2)
@@ -32,9 +33,9 @@
# the official API, but we re-use the code here to avoid duplication.
CURLX_CFILES = \
../lib/strtoofft.c \
+ ../lib/timediff.c \
../lib/nonblock.c \
../lib/warnless.c \
- ../lib/curl_ctype.c \
../lib/curl_multibyte.c \
../lib/version_win32.c \
../lib/dynbuf.c
@@ -42,6 +43,7 @@ CURLX_CFILES = \
CURLX_HFILES = \
../lib/curl_setup.h \
../lib/strtoofft.h \
+ ../lib/timediff.h \
../lib/nonblock.h \
../lib/warnless.h \
../lib/curl_ctype.h \
@@ -60,7 +62,6 @@ CURL_CFILES = \
tool_cb_see.c \
tool_cb_wrt.c \
tool_cfgable.c \
- tool_convert.c \
tool_dirhie.c \
tool_doswin.c \
tool_easysrc.c \
@@ -103,7 +104,6 @@ CURL_HFILES = \
tool_cb_see.h \
tool_cb_wrt.h \
tool_cfgable.h \
- tool_convert.h \
tool_dirhie.h \
tool_doswin.h \
tool_easysrc.h \
diff --git a/src/Makefile.m32 b/src/Makefile.m32
index 2412b40bf..096e09399 100644
--- a/src/Makefile.m32
+++ b/src/Makefile.m32
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,427 +18,55 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
-#***************************************************************************
-
-###########################################################################
-#
-## Makefile for building curl.exe with MingW (GCC-3.2 or later or LLVM/Clang)
-## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
-## brotli (1.0.1), zstd (1.4.5)
-##
-## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
-## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
-##
-## Hint: you can also set environment vars to control the build, f.e.:
-## set ZLIB_PATH=c:/zlib-1.2.8
-## set ZLIB=1
+# SPDX-License-Identifier: curl
#
-###########################################################################
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../zlib-1.2.8
-endif
-# Edit the path below to point to the base of your Zstandard sources.
-ifndef ZSTD_PATH
-ZSTD_PATH = ../../zstd-1.4.5
-endif
-# Edit the path below to point to the base of your Brotli sources.
-ifndef BROTLI_PATH
-BROTLI_PATH = ../../brotli-1.0.1
-endif
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-1.0.2a
-endif
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.5.0
-endif
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.4
-endif
-# Edit the path below to point to the base of your libexpat package.
-ifndef LIBEXPAT_PATH
-LIBEXPAT_PATH = ../../expat-2.1.0
-endif
-# Edit the path below to point to the base of your libxml2 package.
-ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../libxml2-2.9.2
-endif
-# Edit the path below to point to the base of your libgsasl package.
-ifndef LIBGSASL_PATH
-LIBGSASL_PATH = ../../libgsasl-1.10.0
-endif
-# Edit the path below to point to the base of your libidn2 package.
-ifndef LIBIDN2_PATH
-LIBIDN2_PATH = ../../libidn2-2.0.3
-endif
-# Edit the path below to point to the base of your MS IDN package.
-# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# https://www.microsoft.com/en-us/download/details.aspx?id=734
-ifndef WINIDN_PATH
-WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
-endif
-# Edit the path below to point to the base of your Novell LDAP NDK.
-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-1.0.0
-endif
-# Edit the path below to point to the base of your nghttp3 package.
-ifndef NGHTTP3_PATH
-NGHTTP3_PATH = ../../nghttp3-1.0.0
-endif
-# Edit the path below to point to the base of your ngtcp2 package.
-ifndef NGTCP2_PATH
-NGTCP2_PATH = ../../ngtcp2-1.0.0
-endif
-
-PROOT = ..
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = $(PROOT)/ares
-endif
-
-ifeq ($(CURL_CC),)
-CURL_CC := $(CROSSPREFIX)gcc
-endif
-ifeq ($(CURL_AR),)
-CURL_AR := $(CROSSPREFIX)ar
-endif
-
-CC = $(CURL_CC)
-CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W
-CFLAGS += -fno-strict-aliasing
-# comment LDFLAGS below to keep debug info
-LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE) -s
-AR = $(CURL_AR)
-RC = $(CROSSPREFIX)windres
-RCFLAGS = --include-dir=$(PROOT)/include -O coff -DCURL_EMBED_MANIFEST
-STRIP = $(CROSSPREFIX)strip -g
+#***************************************************************************
-# We may need these someday
-# PERL = perl
-# NROFF = nroff
+# See usage in lib/Makefile.m32
-# 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
+PROOT := ..
-ifeq ($(ARCH),w64)
-CFLAGS += -m64 -D_AMD64_
-LDFLAGS += -m64
-RCFLAGS += -F pe-x86-64
-else
-CFLAGS += -m32
-LDFLAGS += -m32
-RCFLAGS += -F pe-i386
-endif
-
-# Platform-dependent helper tool macros
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DEL = rm -f $1
-RMDIR = rm -fr $1
-MKDIR = mkdir -p $1
-COPY = -cp -afv $1 $2
-#COPYR = -cp -afr $1/* $2
-COPYR = -rsync -aC $1/* $2
-TOUCH = touch $1
-CAT = cat
-ECHONL = echo ""
-DL = '
-else
-ifeq "$(OS)" "Windows_NT"
-DEL = -del 2>NUL /q /f $(subst /,\,$1)
-RMDIR = -rd 2>NUL /q /s $(subst /,\,$1)
-else
-DEL = -del 2>NUL $(subst /,\,$1)
-RMDIR = -deltree 2>NUL /y $(subst /,\,$1)
-endif
-MKDIR = -md 2>NUL $(subst /,\,$1)
-COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
-COPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
-TOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,,
-CAT = type
-ECHONL = $(ComSpec) /c echo.
-endif
-
-########################################################
-## Nothing more to do below this line!
+RCFLAGS += -DCURL_EMBED_MANIFEST
+CPPFLAGS += -I$(PROOT)/lib
+LDFLAGS += -L$(PROOT)/lib
+LIBS += -lcurl
ifneq ($(findstring -dyn,$(CFG)),)
-DYN = 1
-endif
-ifneq ($(findstring -ares,$(CFG)),)
-ARES = 1
-endif
-ifneq ($(findstring -sync,$(CFG)),)
-SYNC = 1
-endif
-ifneq ($(findstring -rtmp,$(CFG)),)
-RTMP = 1
-ZLIB = 1
-endif
-ifneq ($(findstring -ssh2,$(CFG)),)
-SSH2 = 1
-ZLIB = 1
-endif
-ifneq ($(findstring -ssl,$(CFG)),)
-SSL = 1
-endif
-ifneq ($(findstring -zlib,$(CFG)),)
-ZLIB = 1
-endif
-ifneq ($(findstring -zstd,$(CFG)),)
-ZSTD = 1
-endif
-ifneq ($(findstring -brotli,$(CFG)),)
-BROTLI = 1
-endif
-ifneq ($(findstring -gsasl,$(CFG)),)
-GSASL = 1
-endif
-ifneq ($(findstring -idn2,$(CFG)),)
-IDN2 = 1
-endif
-ifneq ($(findstring -winidn,$(CFG)),)
-WINIDN = 1
-endif
-ifneq ($(findstring -sspi,$(CFG)),)
-SSPI = 1
-endif
-ifneq ($(findstring -ldaps,$(CFG)),)
-LDAPS = 1
-endif
-ifneq ($(findstring -ipv6,$(CFG)),)
-IPV6 = 1
-endif
-ifneq ($(findstring -schannel,$(CFG))$(findstring -winssl,$(CFG)),)
-SCHANNEL = 1
-SSPI = 1
-endif
-ifneq ($(findstring -nghttp2,$(CFG)),)
-NGHTTP2 = 1
-endif
-ifneq ($(findstring -nghttp3,$(CFG)),)
-NGHTTP3 = 1
-endif
-ifneq ($(findstring -ngtcp2,$(CFG)),)
-NGTCP2 = 1
-endif
-ifneq ($(findstring -unicode,$(CFG)),)
-UNICODE = 1
-endif
-
-# SSH2 and RTMP require an SSL library; assume OpenSSL if none specified
-ifneq ($(SSH2)$(RTMP),)
- ifeq ($(SSL)$(SCHANNEL),)
- SSL = 1
- endif
-endif
-
-INCLUDES = -I. -I../include -I../lib
-ifdef SSL
- ifdef SCHANNEL
- CFLAGS += -DCURL_WITH_MULTI_SSL
- endif
-endif
-ifdef UNICODE
- CFLAGS += -DUNICODE -D_UNICODE
- LDFLAGS += -municode
-endif
-
-ifdef DYN
- curl_DEPENDENCIES = $(PROOT)/lib/libcurldll.a $(PROOT)/lib/libcurl.dll
- curl_LDADD = -L$(PROOT)/lib -lcurldll
+ curl_DEPENDENCIES := $(PROOT)/lib/libcurl$(CURL_DLL_SUFFIX).dll
+ curl_DEPENDENCIES += $(PROOT)/lib/libcurl.dll.a
+ DYN := 1
else
- curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a
- curl_LDADD = -L$(PROOT)/lib -lcurl
- CFLAGS += -DCURL_STATICLIB
+ curl_DEPENDENCIES := $(PROOT)/lib/libcurl.a
+ CPPFLAGS += -DCURL_STATICLIB
LDFLAGS += -static
endif
-ifdef SYNC
- CFLAGS += -DUSE_SYNC_DNS
-else
- ifdef ARES
- ifndef DYN
- curl_DEPENDENCIES += $(LIBCARES_PATH)/libcares.a
- endif
- CFLAGS += -DUSE_ARES -DCARES_STATICLIB
- curl_LDADD += -L"$(LIBCARES_PATH)" -lcares
- endif
-endif
-ifdef RTMP
- 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 SCHANNEL
- ifndef DYN
- curl_LDADD += -lbcrypt -lcrypt32
- endif
- endif
-endif
-ifdef SSL
- ifdef NGHTTP3
- CFLAGS += -DUSE_NGHTTP3
- curl_LDADD += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
- ifdef NGTCP2
- CFLAGS += -DUSE_NGTCP2
- curl_LDADD += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
- endif
- endif
- ifndef OPENSSL_INCLUDE
- ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
- OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
- endif
- ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
- OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
- endif
- endif
- ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
- $(error Invalid path to OpenSSL package: $(OPENSSL_PATH))
- endif
- ifndef OPENSSL_LIBPATH
- OPENSSL_LIBS = -lssl -lcrypto
- ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
- OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
- ifdef DYN
- OPENSSL_LIBS = -lssl32 -leay32
- endif
- endif
- ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
- OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
- endif
- endif
- ifndef DYN
- OPENSSL_LIBS += -lgdi32 -lcrypt32
- endif
- INCLUDES += -I"$(OPENSSL_INCLUDE)"
- CFLAGS += -DUSE_OPENSSL
- curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
-endif
-ifdef SCHANNEL
- CFLAGS += -DUSE_SCHANNEL
- curl_LDADD += -lcrypt32
-endif
-ifdef ZLIB
- INCLUDES += -I"$(ZLIB_PATH)"
- CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
- curl_LDADD += -L"$(ZLIB_PATH)" -lz
-endif
-ifdef ZSTD
- INCLUDES += -I"$(ZSTD_PATH)/include"
- CFLAGS += -DHAVE_ZSTD
- curl_LDADD += -L"$(ZSTD_PATH)/lib"
- ifdef ZSTD_LIBS
- curl_LDADD += $(ZSTD_LIBS)
- else
- curl_LDADD += -lzstd
- endif
-endif
-ifdef BROTLI
- INCLUDES += -I"$(BROTLI_PATH)/include"
- CFLAGS += -DHAVE_BROTLI
- curl_LDADD += -L"$(BROTLI_PATH)/lib"
- ifdef BROTLI_LIBS
- curl_LDADD += $(BROTLI_LIBS)
- else
- curl_LDADD += -lbrotlidec
- endif
-endif
-ifdef GSASL
- CFLAGS += -DUSE_GSASL
- curl_LDADD += -L"$(LIBGSASL_PATH)/lib" -lgsasl
-endif
-ifdef IDN2
- CFLAGS += -DUSE_LIBIDN2
- curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
-else
-ifdef WINIDN
- CFLAGS += -DUSE_WIN32_IDN
- curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
-endif
-endif
-ifdef SSPI
- CFLAGS += -DUSE_WINDOWS_SSPI
-endif
-ifdef IPV6
- CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
-endif
-ifdef LDAPS
- CFLAGS += -DHAVE_LDAP_SSL
-endif
-ifdef USE_LDAP_NOVELL
- CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
- curl_LDADD += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
-endif
-ifdef USE_LDAP_OPENLDAP
- CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
- curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
-endif
-ifndef USE_LDAP_NOVELL
-ifndef USE_LDAP_OPENLDAP
-curl_LDADD += -lwldap32
-endif
-endif
-curl_LDADD += -lws2_32
+### Sources and targets
-# Makefile.inc provides the CSOURCES and HHEADERS defines
+# Provides CURL_CFILES, CURLX_CFILES, CURL_RCFILES
include Makefile.inc
-curl_PROGRAMS = curl.exe
+TARGETS := curl.exe
+
curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
-curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
-curl_OBJECTS += $(curlx_OBJECTS)
+curl_OBJECTS += $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
+curl_OBJECTS += $(patsubst %.rc,%.res,$(strip $(CURL_RCFILES)))
vpath %.c $(PROOT)/lib
-RESOURCE = curl.res
-
-
-all: $(curl_PROGRAMS)
+TOCLEAN := $(curl_OBJECTS)
+ifneq ($(wildcard tool_hugehelp.c.cvs),)
+TOCLEAN += tool_hugehelp.c
+endif
-curl.exe: $(RESOURCE) $(curl_OBJECTS) $(curl_DEPENDENCIES)
- $(call DEL, $@)
- $(CC) $(LDFLAGS) -o $@ $< $(curl_OBJECTS) $(curl_LDADD)
+### Local rules
-# We don't have nroff normally under win32
-# tool_hugehelp.c: $(PROOT)/docs/MANUAL $(PROOT)/docs/curl.1 mkhelp.pl
-# @$(call DEL, tool_hugehelp.c)
-# $(NROFF) -man $(PROOT)/docs/curl.1 | $(PERL) mkhelp.pl $(PROOT)/docs/MANUAL > tool_hugehelp.c
+$(TARGETS): $(curl_OBJECTS) $(curl_DEPENDENCIES)
+ $(CC) $(LDFLAGS) $(CURL_LDFLAGS_BIN) -o $@ $(curl_OBJECTS) $(LIBS)
tool_hugehelp.c:
@echo Creating $@
@$(call COPY, $@.cvs, $@)
-%.o: %.c
- $(CC) $(INCLUDES) $(CFLAGS) -c $<
-
-%.res: %.rc
- $(RC) $(RCFLAGS) -i $< -o $@
-
-clean:
-ifeq "$(wildcard tool_hugehelp.c.cvs)" "tool_hugehelp.c.cvs"
- @$(call DEL, tool_hugehelp.c)
-endif
- @$(call DEL, $(curl_OBJECTS) $(curlx_OBJECTS) $(RESOURCE))
+### Global script
-distclean vclean: clean
- @$(call DEL, $(curl_PROGRAMS))
+include $(PROOT)/lib/Makefile.m32
diff --git a/src/Makefile.netware b/src/Makefile.netware
deleted file mode 100644
index 20c82eaa2..000000000
--- a/src/Makefile.netware
+++ /dev/null
@@ -1,474 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2004 - 2014, Guenter Knauf
-# Copyright (C) 2001 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-#***************************************************************************
-
-#################################################################
-#
-## Makefile for building curl.nlm (NetWare version - gnu make)
-##
-## Use: make -f Makefile.netware
-#
-#################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE = c:/novell
-endif
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../zlib-1.2.8
-endif
-
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-1.0.2a
-endif
-
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.5.0
-endif
-
-# Edit the path below to point to the base of your libidn package.
-ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../libidn-1.18
-endif
-
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-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
-endif
-
-# Edit the path below to point to the base of your libexpat package.
-ifndef LIBEXPAT_PATH
-LIBEXPAT_PATH = ../../expat-2.1.0
-endif
-
-# Edit the path below to point to the base of your libXML2 package.
-ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../libxml2-2.8.0
-endif
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = ../ares
-endif
-
-ifndef INSTDIR
-INSTDIR = ..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw
-endif
-
-# Edit the vars below to change NLM target settings.
-TARGET = curl
-VERSION = $(LIBCURL_VERSION)
-COPYR = Copyright (C) $(LIBCURL_COPYRIGHT_STR)
-DESCR = curl $(LIBCURL_VERSION_STR) ($(LIBARCH)) - https://curl.se
-MTSAFE = YES
-STACK = 64000
-SCREEN = $(TARGET) commandline utility
-# Comment the line below if you don't want to load protected automatically.
-# LDRING = 3
-
-# Uncomment the next line to enable linking with POSIX semantics.
-# POSIXFL = 1
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to NDEBUG or DEBUG, CURLDEBUG
-ifndef DB
-DB = NDEBUG
-endif
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
- OPT = -O2
- OBJDIR = release
-else
- OPT = -g
- OBJDIR = debug
-endif
-
-# The following lines defines your compiler.
-ifdef CWFolder
- METROWERKS = $(CWFolder)
-endif
-ifdef METROWERKS
- # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support
- MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support
- CC = mwccnlm
-else
- CC = gcc
-endif
-PERL = perl
-# Here you can find a native Win32 binary of the original awk:
-# http://www.gknw.net/development/prgtools/awk-20100523.zip
-AWK = awk
-CP = cp -afv
-MKDIR = mkdir
-# RM = rm -f
-# If you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.net/development/prgtools/mkxdc.zip
-MPKXDC = mkxdc
-
-# LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH))
-LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
-
-# Include the version info retrieved from curlver.h
--include $(OBJDIR)/version.inc
-
-# Global flags for all compilers
-CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
-
-ifeq ($(CC),mwccnlm)
- LD = mwldnlm
- LDFLAGS = -nostdlib $(OBJS) $(PRELUDE) $(LDLIBS) -o $@ -commandfile
- LIBEXT = lib
- CFLAGS += -gccinc -inline off -opt nointrinsics -proc 586
- CFLAGS += -relax_pointers
- #CFLAGS += -w on
- ifeq ($(LIBARCH),LIBC)
- ifeq ($(POSIXFL),1)
- PRELUDE = $(NDK_LIBC)/imports/posixpre.o
- else
- PRELUDE = $(NDK_LIBC)/imports/libcpre.o
- endif
- CFLAGS += -align 4
- else
- # PRELUDE = $(NDK_CLIB)/imports/clibpre.o
- # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
- PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
- # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
- CFLAGS += -align 1
- endif
-else
- LD = nlmconv
- LDFLAGS = -T
- LIBEXT = a
- CFLAGS += -m32
- CFLAGS += -fno-builtin -fno-strict-aliasing
- ifeq ($(findstring gcc,$(CC)),gcc)
- CFLAGS += -fpcc-struct-return
- endif
- CFLAGS += -Wall # -pedantic
- ifeq ($(LIBARCH),LIBC)
- ifeq ($(POSIXFL),1)
- PRELUDE = $(NDK_LIBC)/imports/posixpre.gcc.o
- else
- PRELUDE = $(NDK_LIBC)/imports/libcpre.gcc.o
- endif
- else
- # PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o
- # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
- # http://www.gknw.net/development/mk_nlm/gcc_pre.zip
- PRELUDE = $(NDK_ROOT)/pre/prelude.o
- CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
- endif
-endif
-
-NDK_ROOT = $(NDKBASE)/ndk
-ifndef NDK_CLIB
-NDK_CLIB = $(NDK_ROOT)/nwsdk
-endif
-ifndef NDK_LIBC
-NDK_LIBC = $(NDK_ROOT)/libc
-endif
-ifndef NDK_LDAP
-NDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
-endif
-CURL_INC = ../include
-CURL_LIB = ../lib
-
-INCLUDES = -I$(CURL_INC) -I$(CURL_LIB)
-
-ifeq ($(findstring -static,$(CFG)),-static)
-LINK_STATIC = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-WITH_ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-WITH_RTMP = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-WITH_SSH2 = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-WITH_SSL = 1
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -idn,$(CFG)),-idn)
-WITH_IDN = 1
-endif
-ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
-WITH_NGHTTP2 = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-ENABLE_IPV6 = 1
-endif
-
-ifdef LINK_STATIC
- LDLIBS = $(CURL_LIB)/libcurl.$(LIBEXT)
-ifdef WITH_ARES
- LDLIBS += $(LIBCARES_PATH)/libcares.$(LIBEXT)
-endif
-else
- MODULES = libcurl.nlm
- IMPORTS = @$(CURL_LIB)/libcurl.imp
-endif
-ifdef WITH_SSH2
- # INCLUDES += -I$(LIBSSH2_PATH)/include
- ifdef LINK_STATIC
- LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT)
- else
- MODULES += libssh2.nlm
- IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp
- endif
-endif
-ifdef WITH_RTMP
- # INCLUDES += -I$(LIBRTMP_PATH)
- ifdef LINK_STATIC
- LDLIBS += $(LIBRTMP_PATH)/librtmp/librtmp.$(LIBEXT)
- endif
-endif
-ifdef WITH_SSL
- # INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
- LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
- LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
- IMPORTS += GetProcessSwitchCount RunningProcess
-endif
-ifdef WITH_ZLIB
- INCLUDES += -I$(ZLIB_PATH)
- ifdef LINK_STATIC
- LDLIBS += $(ZLIB_PATH)/nw/$(LIBARCH)/libz.$(LIBEXT)
- else
- MODULES += libz.nlm
- IMPORTS += @$(ZLIB_PATH)/nw/$(LIBARCH)/libz.imp
- endif
-endif
-ifdef WITH_IDN
- # 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
-endif
-
-ifeq ($(LIBARCH),LIBC)
- INCLUDES += -I$(NDK_LIBC)/include
- # INCLUDES += -I$(NDK_LIBC)/include/nks
- # INCLUDES += -I$(NDK_LIBC)/include/winsock
- CFLAGS += -D_POSIX_SOURCE
-else
- INCLUDES += -I$(NDK_CLIB)/include/nlm
- # INCLUDES += -I$(NDK_CLIB)/include
-endif
-ifndef DISABLE_LDAP
- # INCLUDES += -I$(NDK_LDAP)/$(LIBARCH_L)/inc
-endif
-CFLAGS += $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
- XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
- XDCOPT = -u
-endif
-ifdef XDCOPT
- XDCDATA = $(OBJDIR)/$(TARGET).xdc
-endif
-
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DL = '
-DS = /
-PCT = %
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-else
-DS = \\
-PCT = %%
-endif
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-OBJX := $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(strip $(CURLX_CFILES))))
-OBJS := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(CURL_CFILES)))
-ifndef LINK_STATIC
-OBJS += $(OBJX)
-endif
-
-vpath %.c $(CURL_LIB)
-
-all: prebuild $(TARGET).nlm
-
-prebuild: $(OBJDIR) $(OBJDIR)/version.inc
-
-$(OBJDIR)/%.o: %.c
-# @echo Compiling $<
- $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR)
- @echo Creating $@
- @$(AWK) -f ../packages/NetWare/get_ver.awk $< > $@
-
-install: $(INSTDIR) all
- @-$(CP) ../docs/$(TARGET).pdf $(INSTDIR)
- @-$(CP) ../docs/$(TARGET).html $(INSTDIR)
- @$(CP) $(TARGET).nlm $(INSTDIR)
-
-clean:
-ifeq "$(wildcard tool_hugehelp.c.cvs)" "tool_hugehelp.c.cvs"
- -$(RM) tool_hugehelp.c
-endif
- -$(RM) -r $(OBJDIR)
-
-distclean vclean: clean
- -$(RM) $(TARGET).nlm
-
-$(OBJDIR) $(INSTDIR):
- @$(MKDIR) $@
-
-$(TARGET).nlm: $(OBJS) $(OBJDIR)/$(TARGET).def $(XDCDATA)
- @echo Linking $@
- @-$(RM) $@
- @$(LD) $(LDFLAGS) $(OBJDIR)/$(TARGET).def
-
-$(OBJDIR)/%.xdc: Makefile.netware
- @echo Creating $@
- @$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
- @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
- @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
- @echo $(DL)# All your changes will be lost!!$(DL) >> $@
- @echo $(DL)#$(DL) >> $@
- @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
- @echo $(DL)description "$(DESCR)"$(DL) >> $@
- @echo $(DL)version $(VERSION)$(DL) >> $@
-ifdef NLMTYPE
- @echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
- @echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
- @echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
-else
- @echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifneq ($(DB),NDEBUG)
- @echo $(DL)debug$(DL) >> $@
-endif
- @echo $(DL)threadname "$(TARGET)"$(DL) >> $@
-ifdef XDCDATA
- @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
-endif
-ifeq ($(LDRING),0)
- @echo $(DL)flag_on 16$(DL) >> $@
-endif
-ifeq ($(LDRING),3)
- @echo $(DL)flag_on 512$(DL) >> $@
-endif
-ifeq ($(LIBARCH),CLIB)
- @echo $(DL)start _Prelude$(DL) >> $@
- @echo $(DL)exit _Stop$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/clib.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/threads.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/socklib.imp$(DL) >> $@
- @echo $(DL)module clib$(DL) >> $@
-ifndef DISABLE_LDAP
- @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
-# @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
- @echo $(DL)module ldapsdk ldapssl$(DL) >> $@
-endif
-else
-ifeq ($(POSIXFL),1)
- @echo $(DL)flag_on 4194304$(DL) >> $@
-endif
- @echo $(DL)flag_on 64$(DL) >> $@
- @echo $(DL)pseudopreemption$(DL) >> $@
-ifeq ($(findstring posixpre,$(PRELUDE)),posixpre)
- @echo $(DL)start POSIX_Start$(DL) >> $@
- @echo $(DL)exit POSIX_Stop$(DL) >> $@
- @echo $(DL)check POSIX_CheckUnload$(DL) >> $@
-else
- @echo $(DL)start _LibCPrelude$(DL) >> $@
- @echo $(DL)exit _LibCPostlude$(DL) >> $@
- @echo $(DL)check _LibCCheckUnload$(DL) >> $@
-endif
- @echo $(DL)import @$(NDK_LIBC)/imports/libc.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LIBC)/imports/netware.imp$(DL) >> $@
- @echo $(DL)module libc$(DL) >> $@
-ifndef DISABLE_LDAP
- @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
-# @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
- @echo $(DL)module lldapsdk lldapssl$(DL) >> $@
-endif
-endif
-ifdef MODULES
- @echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
- @echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
- @echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(findstring nlmconv,$(LD)),nlmconv)
- @echo $(DL)input $(PRELUDE)$(DL) >> $@
- @echo $(DL)input $(OBJS)$(DL) >> $@
-ifdef LDLIBS
- @echo $(DL)input $(LDLIBS)$(DL) >> $@
-endif
- @echo $(DL)output $(TARGET).nlm$(DL) >> $@
-endif
-
-tool_hugehelp.c:
- @echo Creating $@
- @$(CP) tool_hugehelp.c.cvs $@
-
-$(LIBCARES_PATH)/libcares.$(LIBEXT):
- $(MAKE) -C $(LIBCARES_PATH) -f Makefile.netware lib
diff --git a/src/curl.rc b/src/curl.rc
index 7d88b32d9..b0e328798 100644
--- a/src/curl.rc
+++ b/src/curl.rc
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <winver.h>
#include "tool_version.h"
diff --git a/src/macos/MACINSTALL.TXT b/src/macos/MACINSTALL.TXT
deleted file mode 100644
index 2bab9fd3d..000000000
--- a/src/macos/MACINSTALL.TXT
+++ /dev/null
@@ -1 +0,0 @@
-MACOS (not MACOS X) =================== This is the first attempt at porting curl to MacOS. http, ftp, dict and telnet seems to work fine, other protocols and advanced features have not been all tested. This port is heavily based on the GUSI library from Matthias Neeracher. GUSI (Grand Unified Socket Interface) is a POSIX/Pthreads/Sockets library bringing some of the comforts of UNIX 98 to traditional MacOS. The latest GUSI release can be downloaded from sourceforge at <https://sourceforge.net/projects/gusi/> I have also written a few functions to help port Unix applications to MacOS. These functions are part of the GUSI Extra library that can be downloaded at <http://perso.wanadoo.fr/ela/resources.html#gusiextra> OpenSSL support is still experimental but I hope to deliver a version including SSL soon. curl for MacOS requires using the CodeWarrior compiler from Metrowerks. First download GUSI, GUSI Extra and curl. Access paths have been setup so that GUSI, GUSI Extra and curl directories should have the same parent directory. Follow the instructions in GUSI Extra "readme.txt" mainly the ones related to SIOUX and GUSI patches. If you do not apply these patches curl will not behave correctly. In the 'curl/src/macos' directory, decode "curl.mcp.xml.sit.hqx" (This is a stuffit binhexed file) From the CodeWarrior IDE, import 'curl/src/macos/curl.xml', adjust the access paths if required. Then you should be able to build: - the libcurl libraries for PPC and 68K. - the curl application (also available for PPC and 68K) which is the command line version of curl. If the file "tool_hugehelp.c" is missing rename "curl/src/tool_hugehelp.c.cvs" to "tool_hugehelp.c" and make sure its file type is 'TEXT'
diff --git a/src/macos/curl.mcp.xml.sit.hqx b/src/macos/curl.mcp.xml.sit.hqx
deleted file mode 100644
index 01650b9a1..000000000
--- a/src/macos/curl.mcp.xml.sit.hqx
+++ /dev/null
@@ -1 +0,0 @@
-(This file must be converted with BinHex 4.0) :%'0eFQ`ZE@0`,RKYE#jcDA3!8dP8090*9#%!N!3F@`#3")EF8h4eCQC*G#!SBbN a16Nh,6)`-$%J3@aKC'4TEL"6HA0dC@ec,#"*EQ-Z,#"SG(4`1Lm[Gj!$,Q&XB@4 ND@jcHA-ZBfpY,e0dG@CQ5A3[$3SD!!83!!!F@`#3!h)!!3#3!h)0,`fPT9*PFf9 bGQ9NTD8!TC!%!3!!2!!3Z$+T+EJbU5N!N!d-['F!"*UP!!!E'J#3"!m!Bh9bE#j YBh!ZH'eX!!%`!P4&@&4$9dP&!3$rN!3!N!U!!*!*!CS!N!0K!*!%$`"#`G6)[bB "`A,RBHAV3f@ZJUhAq'5,9!EjE+@0l9R9ECKR4kTRRh2Tr@@VMJ"@0,FaU4R&FMa LBT)4LbVeb+BC%jqHQQI4[fPBGXP3'T4BeHdDm#H-`9$4'EUJEJ186cE)3X(8K-U 1KiJ4+5-HVi0DI[@5XBTQHb300K2--ZQmjPHEfdA)NhXMSJc'A+@kemq4P`'SeCB TD8QEYXMK8Kk4YZRkc1,G%m39"[dp8Zmc'[eKd,jpTVh555HQXd2`S9"KrGB`laE (r+!)8r8DP'9kbYVQeY-aSjVQRA2k-`'2pqTr9EP6Z&H-%4eK4@qp1Z(fDAd1&`A H1IYG&T86QUHmp*%cdr$@G4fJrQ[9'8p)f"FPKmMQH6!kGBGeTA5Im1Pp*(P69-* b8ld+I'KQIH`@CNfcIEGE&Zbb`3f,4IkZ#4Ve"2%R-a#MLYefeG"*FSMj,RD`aaE DHh6$h8hF"r`SK84RjI*$KFfI&J3ZTk"r!J2$Nr#%K(IA803e(bAG645j1231E'$ C5$(Nr9Z2LZbqJPSH&9[h1(,+e"8!I$4XKrIeH6Y"")PlSQG2V4#-hZAbb2jBT25 (IUG-bFQ+0[bbfAlrpIDlpCradaS5G(*4d%[i*ISQ&5*3e$NVT#A+!Y3P%V*@HX9 6AGI"h1N`D@lj56PX8fB95NekUL&lk'15a*Z(38rC`Ii%$Y$E-A"!QfHG(Ed)Uhd $e&Ckrm4jfVikK&j$D[%H)*lGX!FUK'&[Ck*%#lJUT9qiT13X#T4mK2)e"`%-JFe )*)Sa9b+92'@Gb8N6d9E+kJ#VEA(c6+d`%E82FXcNKJYM'a,FD@Jf-Bhe0i+B2b' 4,T!!lq1IYLpFITlMfGiYPc0f$6,+MDV5TI9#X-SpJhU%)Fb8cp2EjaJ6Y-)DC*f e'FGC5B'BdQV'H!@cS`XJID*-@m3!EFmNq*Ve20Pc0%pLrF4I`MH*iE!bAI`TJ6f fIkZ$4)P"bTla%@'ZL"8pmd(L(R3XEa8KPe@FkheL$l%E1UF89BS&afbE`RN#pXJ IUFD+"e#6RG6PSV[,G0B8l,Ipa2UU$4a@eA6jr+8Y,jkA1f9)d0!)UcD8pc1PCaS $4e#PcC8bCKD'Ar-2Yr"-%XLQh@AF!9p6rj`FhAk@,R*F(2h!LB#ca(F'im+pi,L Bf4LJV+icK26r2XR2)q9fr#K3PQ3PU)3V#9KqDVJL&pEb*`f)lAAq9FdpFU[$8N6 H43&)*h$BNrd0,c(!ICCA2Nh-i-b#,A9)Dq6b0QXcb4Cb)HG0c,H"E8"bQ0V82+K (6bpND%LUfp6S(mNAhkhHBJTdab-6GA&I%2cqe4`NjKlSpKDmI6m!h0,h!`LC-2j pCCGeT6#1Y62eS"hVZBAlj!YPi8DS1XV14b!3d)r5Z1C(*KTB'Df3!+cZN!#aJMU am2DQK54epTl55RJcT[d$'Q5Me1@)lDI#N6S,Rb-#2%BpdZePl2&DZb9GH)-0FR` 3N!!5&mlD,Sp)"5ZC2f@E-bpUflPTaUfFJ4mZUlcp#`iNNNl#eBaVI1&m0!dP'F[ lT`UUYVZpKX&HPmBMVf"+'fS0*6pRfA+HccXLd0PXk",eKDrh`@MYIGqm(MRcMcP UCb#C$m'[dhBrb438Hbh4+bDe&0"BSF1P+PPP4@i`%iP22P9ibJHTcBXRN5!leUL LkN%bVNT!r-qGI('DMAp8jc1e[eH9VBp1+DSk0V(-aMaJD(6FHQ+T'%'h8"e3LeY *2ldFPa@Tem)!l+PBLXN#idPfFC0i-V-9Ed2X@hEhCC!!e2J+JDccb1@@XE`Ch+V @!I1YF"Jf&8Kc*-A[5BT"cFJ3I8rP#Vb#NHYS+"%q25(pP2,aD$5KBV4"&PiN--c f!&h'b,[%ZDE0!j&ZY32dZD3h)p'VEr2p@kU8c8kU,K'lh$A8,)`efrhRPmImIpI YXG)SXje6-1Z$'lrlYNl#ECVlA2V[1h9Ej6X"Q-(LA%P65$-Ka92rah%dQmeF#KH (%CE56(aEpX$BKjEHj(6mN!"l3iEi(2#eJXU2$BHK`913!#8U6q3!&-VfilRY05# +CbP+)RJR0D'943,GI+$+0I0+'SNaNUMBZ[q4'kLpb*c)iGMP,'c'hFQc1B6@@J6 fXPPfGrc`"VaZDc5@lD1*@AIr'1UT5C'NI$HV@!e*U##m)62YSNd$`'p*J1[@ZVM 5D'GRTkrhF6"1D9-DV'2YVR*$RV,I`+QmTjICq92DT-f+SL1lD&kp)C8`64h*aY* AaJiFNQBGVU!$p6A1-m-e*1L9Iic!B!lQ,rZIkda"cB%TJ`U*0QP,'JVEhkFUFU& (X5K4`r3eG5!0T0`KfYQ6-I-E-mUbb&1TIGYrd"X"EXL$@U!J)EB+%q8mMd,dFeJ fLGJA5!N*4MXRSYfk8"8Vp9RY*4rXaR0dQ"3d!1R%CAQZRaPE1*MZ&DHdelBBaaA (CTA1k$H!##ZMT'i$kB0JJPc9Y"5Em&M)DRM*#SIahMpP`2T[3F,Sr2JX9E@,U5L 10Sdd1Y(qAG#,G'hX$PibcN@!,X`qX*,'eM#B)#S*k1PLLI*REMpB"UmhHT-j!0& TG)jc$@3BLI"em*jDf-B%qLmRR$,BQ1q)YN!*Q1ZNVH,YL#f$!C3-1#@Lch3a2+D 1S3dIq-1a[1C*E$*P+KPQG`THP&p'TQ$JJ-*$cK9F03c3F-aJGGic8i,3hd[fAQ( X2Zr!KU)Rlj!!cer8P'[-pmXiEG4ETUADfi2e!+XIM"@%f)[i)Ikd3c!4jR!-4ar q1T6*aH(Xp6eP)1"JRKV00!kq!BaZa-p*GA93QrN2e@l5U!bDcH)QqRTh9BT04b$ 5Yml1!p$+q9ILbSc)r+'IfN,jLH0'9S)Z+ji4P'1GBK9MHCmrhF8AVC(Xmm"IHl# QFBJ"3PC,19FjeHrVT3AV%qCIqAh1VJm(G,#b$Gh-aRS@jXNFTGXV8@2Eq&L#U%L bf**dKC),j0c9*P0&V!XPRpA0'`jEQG1PDJ+Zdb`[PpRLe34(EcHI-CPm54(VIbE 2J3S%q'`"i`+,HjI3D&@MmVRC5ffqFSVlc[1eQP`@)$eHGrSTSGA@,fc&Yd%c#-[ c`N5)bZ%5b!`+QA-C%YBp[NpG`fMrU'VklXR-he$9jRbE5pBEJR2GeER[mN'1,[` *5HDBYJFl#DN&kKi#mVHiL2@'H4Lb-%(#jb5!e"`RQeJJPfD*L#l$'($NZ1*53#4 P"Z19[8kVVN86PN0#LLPpq&`6QI1)ZR-h3b"[H'qCf&q%J1$CRiFD6AhC'iAdA!5 &9qaeYeVcr,1k'F2P%TlIY-mjXqRIMK+"1cJjQ1[ad0mTG53!aa[IQhlKS@)N-(a pUJ$DahNB2HZ[!!fJ,p(-ACep@IGH86&XYZf#UZd`6HTD`e66bA,VjkUkQpeq)%J hajLPmXp(SipKb*'k%k1f[e'0!D&Sh80Q"$BH&jiJb+SEbpTbQBkE2Qp,5[hLS@1 1pUZ(*&)`(+D+RH8$Z0,+br4iTZJ2rZVP,UC!FP8[XHa#3+"aHC!!DMcpKpFDeIe D%2`@$YX20DB&iIcJUS-R%eCPc4&MSE2f3qfA9IJK5I@,R4403FVlTR'JKYF'NBr eC`jcaFi8Bl$9bp,K,TCp"cJ33fq@Z6`!DldUA,C8J[(2MaI2,p!`$5YT12Mei`2 kEK")F$6(J8GAiLMFaTiMqpE8KiZGrrk"D3Fi#8(4*fVmGK4GIb9Pb9N,%Qh2V&b G`4BR#1B@ZrmSF@DdRU#!!i64LJXc9abPYpjfa+I*FSZ(&IkqF2,@5XqlSfe(pJ5 @FBNcIm6`B$SBQ19pA0k8'bmMac8kRP[Q#l4qV9P3ibU$dmlE'[@*Dj1JGRJe4[Z 5M#`*0UYGpeTAFQV4)hc"Frq0Qe88T#fG+YrEd%GD5VaN8ee69)@GJLMaCTYZJ$h Y`PmD[A8fB#4GP0TV(G5&@%i-DBILl&5HUC*fk#qhfiL-VdMPEK`@*G5aB'3@1DI `Gmq!%mJhD-m-E@ei1#pf)H!Y)#hdYf5,Kre61KKr6-k+iC&[6#!,*8aC4V,dBda *G-Ea,kcp`EQYmI)q(TSXdpT[&6NmmVela*&ZrNk#!a*Ek1U9e(A-C#MTiFrU*8# GRIPS(IG0NC0@D@C,ef!3$-V,f1MmeU$hMNGflfPjdA1l$m'dhT6mE$5k,&09Rk* 35$B&A8hc`Q,f[MCL'()&ZSp9"F43Y6Gp$d@GQ1*-IFE)fQ`!Gl+4bY!)4&ME!i1 S(e$jM(!B0$aPZUklAZC&R6Q$q(JE0b`QVJ8l2ELL'2i"i$m4hNQq3$S*@r,KlPV @0aB$#$cij*NFIiA[#P'Hmk'D%mJh*T,r&0T!Sj!!I%QRN!"4J!C25i'JdhRAG4# +iPZ,'C)pS[%JqMbf%5Z@HYTRpTjm`P9K-jj6!9j,5+E8[jbd,$Qb,rLerVlm'a" EJ,NAIG%b0S`!KTfSi1,Hlm6&Tl86i@XA-SjmDCVVm2JR[U[ZUaabTc`"ZLc''*T MA06`8"HaVhrb,12m0TYp8$49BH,J(bC-qMij8S3`iIJLm!&DUAX,NDT4j(cCZq` Sjr#YLPbe+8AqUc@cBNPJ0I"'D`jmfZPUpmQhXQ'2G"i,XrX6PZh5*UdATE`QBJT 2*-NNJ'H03hDLq3NLl8V#BcH(SN53!&)l)I#5DJXfUc)pbK*kKMMdhlkIbRYcdU* -kaTcDabVQGjqY*`D1++%&&hPjA0$mc46dA5Pa&+%QbaXIY(9*40iKhGhE(!d(Zj TU%6JfY"(KHR"&-pfT-D8AB"c'iDKcqH'9"0#TcflZJ5YE#(YDU4QTYFS*`lY2+' HUH+"N6hThTfY$V%@bmP3RrZVqj*lIM!qQ&'(*R8#YUX0ViVa-8c1cLi5mSh423Y c"ZTZ&UCCXZeRVUh#+(cU-p`4R%4,2aCl@ZeXXYH'f1j5r6'Fdp6k&d9CITqHK#@ jRIp9LG#d$jCXIJ9ZTRb1X1r#JCA&JjmSEMUfVbL!D[6I$5#JScE6Na9lmKfF0EH V"15k'@bDdk%miP"ThZ@A0I0@V`65l5S9deFHd#$hUXR5GDT"DMik$YJL+GmY#CB f%KC+a"&%)ihiBfR+0I#@&ENYGGfGh1ZaX"RlLlZ$l-9X9H*LaaQqEZ6LZ'rpIM* GCa`prJ+&V"j-rb!(B[h8XVQbRfQhYc,GJ(J65aIbPCVha(mX8UAS2e@%VYZYMF( $UMM#pf[eK66(Dj1)d*GNK+[I"ZK52ijfp01Pj098q,AA1GUbRR,5Z)jBdJMD1LZ Y8$2iKCVB!R2!PiF*N!$Ycb2#1Nh6&f-fSDEc2YH1jp9GM@!XI'*ilG-Qc4qT0fe dIZdlC9qP)X!!&@4T9A$EaNq-AZKQ6%R$$a54DScX[R*,M*!!k)K4LrB9Ma0[+II jcUfa44M*R18DLAMSp36ELf),#2#qPidNRI[QVFj%D95q)Xa`RS6EjCd+5BN6MeV %!,Q1a$r!B1`Bp3FM8IpLD)S+$G#+BR1)d#!hB9'5GRjMXFLAC-06*FkSLrBpG6X ,q$JVU-a-"TBp@F)+T`$8S[Dj!EIek6Ei!CIBUAGZpERj!eKb9(,X'RqjiBH5bbP -M*hrM9L`Xhl"GqM#U-f9*jXA"IQeZ[b#&`DqGehATT!!(S$6dqLGCl@A-NeefUB CPHNb!6cQp-!L[%Qal$RBVE9ZN!#qrF#!'d&V@ceTH8bbU3`DV0!06TamU$%('FZ l0N`a41a+-&6)Jcjl2XS1jHBp[HE"-PTaj6*#rZXdIX8%X8XRqJXc(FN5iG%bELS +b,60YmQf"J65!j!!D%+B#Ik0&-B3B@*GM[jJlJBU$RkG93B`&-#!h+HerJ8PT,@ b4!M[IeX(5fA%bFZLUp@K6(mkd@BTHhBcDkGaJh0`$CA2N!#3!%G1-Ne!SYh%drH F,BQM`')#DqM&#U(*Y-1lG45[6@GDN!#,bMKZRMG8"D$T2Kc192P!mSK@0AC8#3E D5,p-B+X2ZcmCQAIc,2AEdK5!+1N5*`cl9qJ@N!")h+G,fYaRJrRN`dd1NQ"E$VL ki6&AIilJU6[Z6pR5B*U9Rm1S[dr`a6mp3Fd`ArhVJQ!TR9T#ZhI+MpjYcFC*Tpf JP)[hkrKT5D`IVBCl"QA0TS2!TdYN8%E#epb&4PA9Q-hQ50A5SA@GjUa`kE-X-HM +d28*r*JYMjd!ICRc,(ZrmcU5e(4KNd[IAR$U[Tm*rdK"&(P&HE,U5c&(#0[`'-D 5f6@Qdr3dIB[VAlQbBHEiXrVYae)ZjkP@,'U[dE)NKfe95B9"Jk0'I$A8b$VC&CI hj0TB-$9m0"N8$CIaHe"M2@3-GQ$(12rHGfTrFM[EP9BMH3B`fcFE2PM'VNZ+fSm R[kIC&VabE@DX[9ZChF-R3*X*[Gmakl`@[!XBM"Iq3#d4e2`)6dE"fe2&5r'*3)D fB!kY""qf-#Xh!5DUNqDYG(&`URfpc*RAAS-#r+D@!A[j8r[eAi!S-rimJJ'!JGb %*BZ5$!f,GjJjLa5D")q,RL4XR[Ppi(r8RNiP$2e@ALL+bU&lUIljbU5MXf56RSK #8KbRX8C@f&kmYX-V,K+TmASNfml4&HPfSV$Y(&Y&J8ER)M[,N!"VmB&c'$a2h'h c`MAp!+rpRY(4Qe8@Z#el[0+YYH#ZYd3EMkbHRechUKDqX5k8m)cfAKj'mJ*[h6' 6)pLEDAqcBBi5[CE[rpIkcC%LIUe3f4@8TFUBfZ9B6FYY-F)N[fBV'h3@(m&iB,a )d1HkSQUS"C91!eHTUrHa9J[FLDk'K8-H9XmKc$L*'V5H'-5[*p)TC'El!$b2J"k T0Ul!A)(4ZlVY!Te#X5V)+@[J"r1e-BdkRFe`N!#r0DcM"VUBekGkJe,*5cpX0PS T(d3588LNcfA!1-TB8GQ`K0eIIl0N96)Nd!Rb%&4LIRETS'P3+jA+Bi9SY#qCmGI 5Ai,[V-NK#La5439PX&LDc8hTl$aLj359-bqmDJZ)GiaX1k1[k)bMZ2r(U*c[Gej %D)m*@@+eGqbF249V)fRpkp)6e0JrHiB*[K8*9fGR-AU+jTcpi#f0+U0+L@Yc'U2 dc04kb961J1JdC5PLEV30PJSYZXJ#jfdlb$,0UrY"jX[RkUY8JLY)-L`Gj6ieH'6 %C*LCT`)3ZS@[X2!%!-SJKp1jEL2Cml64,qZhPa)'AidDL1Ybp@6`iI80l+RfHpd Y1XF"[0[r!$B*PqDdHB95)l8[1I%*Nr,#e&Y3CCiNFC[8dj9TDKdh)Q6,,fCk(S# pQbBT0TY@PD(I@lDhBV%Pk9GrD%IY,YpIM-V9cE(UBbG2&Xck6c5I1BcMA-YcJFA 0,Q"*[F1C16*jHTMMPV0@6HYDU5V0`dPbD&X+MPSlR&+hbi36I8(5pBhrN!$Nj*a Z#!akZ&EGD+M,95XdGQGpfB`RY9BjCa9"Jp0EhH,EFY$Xp0#fq5DI#KVJBj,10hZ `Bq#LBCm2%H@E,+X9!b92Xb3iDFh4MVPIpfIVl"rkr%Eie%$X)MHS6PM!XTB'1$H kR%(U%"b&pq)aqe3a9TkCmFDMGk2qq%"HEh*XqVLk9-A,*pAd(dpZSG2Q#&qCJP2 X5cRMX'hX$'L5*+0!i`51"Yaj''JmqAJA#qUqe!P,MR-!NDje18N(qV3@5C1&B`D IqHRl9X2i2T6ZJH'e!jK,MY#3!+TSYiGI*AaPcjIbGE,pQ5[0Bk@%Ahrf#aQ$NkU d!GNU@XiVQ!T6'EHGZC4@(Qf-icF'*X1,1elXp1L)jmi`Y"F,'Fll%A@'$Mp1IT% 4pZjYGj%b,8rhMFlIh1-NN!#MD$'mrpeRD+18mX9YJ+9kiQE-B&U''*jE1*6raUl $40TV"8Aj2`cF3YHakZ6%05+TZ8&#e4HlCpJjL2$)l&2RNVNKBEAbL2UqijV4C,4 !9bq*`lQDp-&$iV8-!)S2)(el3Gp5lfekXY%TkcB%-PkqfD`DRD,R`APCTf%SkYi YkMk9pc01i''-FlHj6bF6QU%PJ+-@4DbAp91&Q,4`0mc1'1(,P6j)j1fMGbAf%BG ,M8&e!2R'Uk,%Rcm9JkL53'"eTe@IXaCCY!0!33RNL)DY5CYmjN%VhK,U8GXFG+[ 8jmX*Z2'(9BE)F'c"[r"4(UF4E*Qa[Nk-j&"MM!B6UZ*0YpL'!+9)G*&k,&2l@&& AbpQL&q)IrbB+ED(J8lRM"*Ii6%VUADiNE'dVU'q%[LHeia*6Y%89acHSZLZH(mq I[jRmr6$mVc-RTPb8+)ZMjI@hNG(F0VT&bU@(Hq1!F"2j881[Z$Nm5SC@1$41qHC Z*B%dX0kZFfcHDPjCH`GJrbU5DkEdIaTUI+NaK"PdSmI[LPTLJ9IJ8KA#kV"2Uia KdERdQFN93d"lqUqXj@Mr+*qi6&"UECZ-#,*iEC&C`bZqlMfYpM(epQ)*%&C![LJ hPR8L[G0#*-Pj,5P*C$cF+BTi2&i!bX+hlrFri`8+M'SNkXcMM(Q3!%%A2MlD*28 VCqT[JjMIq0PTUq0qPSAf4a0$XLC)-48j(c*)V1K5Pc(m%SGL+($j+p8S%dQ3!&Z lQ%+#S[eP8p$5$[$Vq)R)6HaCkZT5CT&*Rb,2I'PA"EVrJTPJKBE@Xi$J%rQAiUE $fqc2ald8l1R&r%FZ(Gq*VR(@l'M!MiUBId*-Kd&S!pP"YBNkYP[B[Z%YlT5SmY! 2rJF43CSX-e@Gp1FDa-d'!JQ@al9raL0r$[fkG0#D5VmHClHGEqhD`fmVA[jC+rM (&qL@f"N"(1DT-#2bD)j)N3!`Tr&$Rep"LN@aR!Rl(5lcE1UYTUmcVKrX(f1)40K Y4RQl"CKXF9C08YC(*$aR5a@QalMZGITR05QRZ"+h`52GmMN4pj6iXh*6MZFb8ke arcTIYkJ%@!F4TNFBfCKU#I3SZViZSKC0e*!!"cFIrhEC%XbSMX6jaS5&9#h@!`d [Y&`V)j*NiURXkhF0DP5e2dAG*Z,9N!$*D[l1$KF5SNi[b"J@Z2Di),1E93CDGmd Gb1)8,k@iE`R'kNHkLYb%dGd34Y,C013(''CiPAT2BRL[dYPHEY6ZE'`i0f-mp)a X&[HT"f3K+8rfE`T!,%MI)YZKJqZ#ZDTfGRYe'+5[Ke+2E%ecBS3pPC!!rU*,drD &884$ZmbC%Y-Iea(IUfjblN-*cX2hB`Mr+aG#AhMaaJfKPbd5P[+H$9A'(jGqcQ- 2pAc0'J[b`hF4+N1dYV[8#-aHm&FiqHbK`R8PpZ*be,`-[a"P"q1lcb$Z8I%0RA2 X8bcClk*cpGU1Q5c6VI%#`63X"PYE,*Hi3bF21r2JTij#%Q3J'cij@e+-99)rZqB $DdVZbrG[S8$eBj!!@$Z3!%C,DD1H[Dr+iFXKGGD&**8$2mqBZG+M+&`P%``#e8Y 13020cm&rj9ND(4q*S+D%eYGi'X(IT1lA+fV1,T!!6(fcKe2S6"!X-C-F-TqlSTB BJTb$,U'!bY8!!!: \ No newline at end of file
diff --git a/src/macos/src/curl_GUSIConfig.cpp b/src/macos/src/curl_GUSIConfig.cpp
deleted file mode 100644
index fc9378ae2..000000000
--- a/src/macos/src/curl_GUSIConfig.cpp
+++ /dev/null
@@ -1 +0,0 @@
-/**************** BEGIN GUSI CONFIGURATION **************************** * * GUSI Configuration section generated by GUSI Configurator * last modified: Mon Oct 29 15:41:51 2001 * * This section will be overwritten by the next run of Configurator. */ #define GUSI_SOURCE #include <GUSIConfig.h> #include <sys/cdefs.h> /* Declarations of Socket Factories */ __BEGIN_DECLS void GUSIwithInetSockets(); void GUSIwithLocalSockets(); void GUSIwithMTInetSockets(); void GUSIwithMTTcpSockets(); void GUSIwithMTUdpSockets(); void GUSIwithOTInetSockets(); void GUSIwithOTTcpSockets(); void GUSIwithOTUdpSockets(); void GUSIwithPPCSockets(); void GUSISetupFactories(); __END_DECLS /* Configure Socket Factories */ void GUSISetupFactories() { #ifdef GUSISetupFactories_BeginHook GUSISetupFactories_BeginHook #endif GUSIwithInetSockets(); #ifdef GUSISetupFactories_EndHook GUSISetupFactories_EndHook #endif } /* Declarations of File Devices */ __BEGIN_DECLS void GUSIwithNullSockets(); void GUSISetupDevices(); __END_DECLS /* Configure File Devices */ void GUSISetupDevices() { #ifdef GUSISetupDevices_BeginHook GUSISetupDevices_BeginHook #endif GUSIwithNullSockets(); #ifdef GUSISetupDevices_EndHook GUSISetupDevices_EndHook #endif } #ifndef __cplusplus #error GUSISetupConfig() needs to be written in C++ #endif GUSIConfiguration::FileSuffix sSuffices[] = { "", '????', '????' }; extern "C" void GUSISetupConfig() { GUSIConfiguration * config = GUSIConfiguration::CreateInstance(GUSIConfiguration::kNoResource); config->ConfigureDefaultTypeCreator('TEXT', 'CWIE'); config->ConfigureSuffices( sizeof(sSuffices)/sizeof(GUSIConfiguration::FileSuffix)-1, sSuffices); } /**************** END GUSI CONFIGURATION *************************/ \ No newline at end of file
diff --git a/src/macos/src/macos_main.cpp b/src/macos/src/macos_main.cpp
deleted file mode 100644
index 51cf894b1..000000000
--- a/src/macos/src/macos_main.cpp
+++ /dev/null
@@ -1 +0,0 @@
-/* ========================================================================= Copyright (C) 2001 - 2020, Eric Lavigne Permission is granted to anyone to use this software for any purpose on any computer system, and to redistribute it freely, subject to the following restrictions: - The author is not responsible for the consequences of use of this software, no matter how awful, even if they arise from defects in it. - The origin of this software must not be misrepresented, either by explicit claim or by omission. - You are allowed to distributed modified copies of the software, in source and binary form, provided they are marked plainly as altered versions, and are not misrepresented as being the original software. ========================================================================= */ #include <stdlib.h> #include <string.h> #include <stdio.h> #include <Memory.h> #include <GUSICommandLine.h> #include <stdlib.h> /* ========================================================================= */ DECLARE_MAIN(curl) REGISTER_MAIN_START REGISTER_MAIN(curl) REGISTER_MAIN_END /* ========================================================================= */ int main() { ::MaxApplZone(); for (int i = 1; i <= 10; i++) ::MoreMasters(); (void) exec_commands(); return 0; } \ No newline at end of file
diff --git a/src/makefile.amiga b/src/makefile.amiga
index acc0aef15..9aac7a0fb 100644
--- a/src/makefile.amiga
+++ b/src/makefile.amiga
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# curl Makefile for AmigaOS ...
@@ -29,7 +31,7 @@ ATCPSDKI= /GG/netinclude
CC = m68k-amigaos-gcc
-CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall
+CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall -DUSE_OPENSSL -DHAVE_LIBZ
LIBS = ../lib/libcurl.a -lssl -lcrypto -lz
MANPAGE = ../docs/curl.1
README = ../docs/MANUAL
diff --git a/src/makefile.dj b/src/makefile.dj
index d92a5cd9c..84c127b07 100644
--- a/src/makefile.dj
+++ b/src/makefile.dj
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2003 - 2021, Gisle Vanem <gvanem@yahoo.no>.
+# Copyright (C) 2003 - 2022, Gisle Vanem <gvanem@yahoo.no>.
# Copyright (C) 2003 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
#
diff --git a/src/mkhelp.pl b/src/mkhelp.pl
index a52bf22be..bf146d7c9 100755
--- a/src/mkhelp.pl
+++ b/src/mkhelp.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Yeah, I know, probably 1000 other persons already wrote a script like
@@ -225,10 +227,6 @@ 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
;
diff --git a/src/slist_wc.c b/src/slist_wc.c
index c1393eeb8..68021e61e 100644
--- a/src/slist_wc.c
+++ b/src/slist_wc.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/slist_wc.h b/src/slist_wc.h
index dd7e0b5ea..e309fd5a3 100644
--- a/src/slist_wc.h
+++ b/src/slist_wc.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_binmode.c b/src/tool_binmode.c
index f8559e778..68c6c3671 100644
--- a/src/tool_binmode.c
+++ b/src/tool_binmode.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_binmode.h b/src/tool_binmode.h
index 1d84cffbb..0b3d24b38 100644
--- a/src/tool_binmode.h
+++ b/src/tool_binmode.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_bname.c b/src/tool_bname.c
index c1c3b0d4f..e70f7d76f 100644
--- a/src/tool_bname.c
+++ b/src/tool_bname.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_bname.h b/src/tool_bname.h
index 3a4ec96c2..0efd7f19c 100644
--- a/src/tool_bname.h
+++ b/src/tool_bname.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_dbg.c b/src/tool_cb_dbg.c
index 6e82e3852..c1dba85ab 100644
--- a/src/tool_cb_dbg.c
+++ b/src/tool_cb_dbg.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -26,7 +28,6 @@
#include "curlx.h"
#include "tool_cfgable.h"
-#include "tool_convert.h"
#include "tool_msgs.h"
#include "tool_cb_dbg.h"
#include "tool_util.h"
@@ -162,29 +163,6 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
return 0;
}
-#ifdef CURL_DOES_CONVERSIONS
- /* Special processing is needed for CURLINFO_HEADER_OUT blocks
- * if they contain both headers and data (separated by CRLFCRLF).
- * We dump the header text and then switch type to CURLINFO_DATA_OUT.
- */
- if((type == CURLINFO_HEADER_OUT) && (size > 4)) {
- size_t i;
- for(i = 0; i < size - 4; i++) {
- if(memcmp(&data[i], "\r\n\r\n", 4) == 0) {
- /* dump everything through the CRLFCRLF as a sent header */
- text = "=> Send header";
- dump(timebuf, text, output, (unsigned char *)data, i + 4,
- config->tracetype, type);
- data += i + 3;
- size -= i + 4;
- type = CURLINFO_DATA_OUT;
- data += 1;
- break;
- }
- }
- }
-#endif /* CURL_DOES_CONVERSIONS */
-
switch(type) {
case CURLINFO_TEXT:
fprintf(output, "%s== Info: %.*s", timebuf, (int)size, data);
@@ -253,21 +231,9 @@ static void dump(const char *timebuf, const char *text,
i += (c + 2 - width);
break;
}
-#ifdef CURL_DOES_CONVERSIONS
- /* repeat the 0D0A check above but use the host encoding for CRLF */
- if((tracetype == TRACE_ASCII) &&
- (i + c + 1 < size) && (ptr[i + c] == '\r') &&
- (ptr[i + c + 1] == '\n')) {
- i += (c + 2 - width);
- break;
- }
- /* convert to host encoding and print this character */
- fprintf(stream, "%c", convert_char(infotype, ptr[i + c]));
-#else
(void)infotype;
- fprintf(stream, "%c", ((ptr[i + c] >= 0x20) && (ptr[i + c] < 0x80)) ?
+ fprintf(stream, "%c", ((ptr[i + c] >= 0x20) && (ptr[i + c] < 0x7F)) ?
ptr[i + c] : UNPRINTABLE_CHAR);
-#endif /* CURL_DOES_CONVERSIONS */
/* check again for 0D0A, to avoid an extra \n if it's at width */
if((tracetype == TRACE_ASCII) &&
(i + c + 2 < size) && (ptr[i + c + 1] == 0x0D) &&
diff --git a/src/tool_cb_dbg.h b/src/tool_cb_dbg.h
index c3d3f7b77..bc69e5660 100644
--- a/src/tool_cb_dbg.h
+++ b/src/tool_cb_dbg.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_hdr.c b/src/tool_cb_hdr.c
index 67ea10447..23700de22 100644
--- a/src/tool_cb_hdr.c
+++ b/src/tool_cb_hdr.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -33,6 +35,7 @@
#include "tool_cb_hdr.h"
#include "tool_cb_wrt.h"
#include "tool_operate.h"
+#include "tool_libinfo.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -47,6 +50,15 @@ static char *parse_filename(const char *ptr, size_t len);
bold-off code (21) isn't supported everywhere - like in the mac
Terminal. */
#define BOLDOFF "\x1b[0m"
+/* OSC 8 hyperlink escape sequence */
+#define LINK "\x1b]8;;"
+#define LINKST "\x1b\\"
+#define LINKOFF LINK LINKST
+#endif
+
+#ifdef LINK
+static void write_linked_location(CURL *curl, const char *location,
+ size_t loclen, FILE *stream);
#endif
/*
@@ -63,7 +75,7 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
const char *str = ptr;
const size_t cb = size * nmemb;
const char *end = (char *)ptr + cb;
- long protocol = 0;
+ const char *scheme = NULL;
/*
* Once that libcurl has called back tool_header_cb() the returned value
@@ -105,7 +117,7 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
const char *etag_h = &str[5];
const char *eot = end - 1;
if(*eot == '\n') {
- while(ISSPACE(*etag_h) && (etag_h < eot))
+ while(ISBLANK(*etag_h) && (etag_h < eot))
etag_h++;
while(ISSPACE(*eot))
eot--;
@@ -128,10 +140,11 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
* Content-Disposition header specifying a filename property.
*/
- curl_easy_getinfo(per->curl, CURLINFO_PROTOCOL, &protocol);
+ curl_easy_getinfo(per->curl, CURLINFO_SCHEME, &scheme);
+ scheme = proto_token(scheme);
if(hdrcbdata->honor_cd_filename &&
(cb > 20) && checkprefix("Content-disposition:", str) &&
- (protocol & (CURLPROTO_HTTPS|CURLPROTO_HTTP))) {
+ (scheme == proto_http || scheme == proto_https)) {
const char *p = str + 20;
/* look for the 'filename=' parameter
@@ -191,8 +204,8 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
per->was_last_header_empty = TRUE;
}
if(hdrcbdata->config->show_headers &&
- (protocol &
- (CURLPROTO_HTTP|CURLPROTO_HTTPS|CURLPROTO_RTSP|CURLPROTO_FILE))) {
+ (scheme == proto_http || scheme == proto_https ||
+ scheme == proto_rtsp || scheme == proto_file)) {
/* bold headers only for selected protocols */
char *value = NULL;
@@ -204,7 +217,16 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
if(value) {
size_t namelen = value - ptr;
fprintf(outs->stream, BOLD "%.*s" BOLDOFF ":", namelen, ptr);
+#ifndef LINK
fwrite(&value[1], cb - namelen - 1, 1, outs->stream);
+#else
+ if(curl_strnequal("Location", ptr, namelen)) {
+ write_linked_location(per->curl, &value[1], cb - namelen - 1,
+ outs->stream);
+ }
+ else
+ fwrite(&value[1], cb - namelen - 1, 1, outs->stream);
+#endif
}
else
/* not "handled", just show it */
@@ -311,3 +333,85 @@ static char *parse_filename(const char *ptr, size_t len)
return copy;
}
+
+#ifdef LINK
+/*
+ * Treat the Location: header specially, by writing a special escape
+ * sequence that adds a hyperlink to the displayed text. This makes
+ * the absolute URL of the redirect clickable in supported terminals,
+ * which couldn't happen otherwise for relative URLs. The Location:
+ * header is supposed to always be absolute so this theoretically
+ * shouldn't be needed but the real world returns plenty of relative
+ * URLs here.
+ */
+static
+void write_linked_location(CURL *curl, const char *location, size_t loclen,
+ FILE *stream) {
+ /* This would so simple if CURLINFO_REDIRECT_URL were available here */
+ CURLU *u = NULL;
+ char *copyloc = NULL, *locurl = NULL, *scheme = NULL, *finalurl = NULL;
+ const char *loc = location;
+ size_t llen = loclen;
+
+ /* Strip leading whitespace of the redirect URL */
+ while(llen && *loc == ' ') {
+ ++loc;
+ --llen;
+ }
+
+ /* Strip the trailing end-of-line characters, normally "\r\n" */
+ while(llen && (loc[llen-1] == '\n' || loc[llen-1] == '\r'))
+ --llen;
+
+ /* CURLU makes it easy to handle the relative URL case */
+ u = curl_url();
+ if(!u)
+ goto locout;
+
+ /* Create a NUL-terminated and whitespace-stripped copy of Location: */
+ copyloc = malloc(llen + 1);
+ if(!copyloc)
+ goto locout;
+ memcpy(copyloc, loc, llen);
+ copyloc[llen] = 0;
+
+ /* The original URL to use as a base for a relative redirect URL */
+ if(curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &locurl))
+ goto locout;
+ if(curl_url_set(u, CURLUPART_URL, locurl, 0))
+ goto locout;
+
+ /* Redirected location. This can be either absolute or relative. */
+ if(curl_url_set(u, CURLUPART_URL, copyloc, 0))
+ goto locout;
+
+ if(curl_url_get(u, CURLUPART_URL, &finalurl, CURLU_NO_DEFAULT_PORT))
+ goto locout;
+
+ if(curl_url_get(u, CURLUPART_SCHEME, &scheme, 0))
+ goto locout;
+
+ if(!strcmp("http", scheme) ||
+ !strcmp("https", scheme) ||
+ !strcmp("ftp", scheme) ||
+ !strcmp("ftps", scheme)) {
+ fprintf(stream, LINK "%s" LINKST "%.*s" LINKOFF,
+ finalurl, loclen, location);
+ goto locdone;
+ }
+
+ /* Not a "safe" URL: don't linkify it */
+
+locout:
+ /* Write the normal output in case of error or unsafe */
+ fwrite(location, loclen, 1, stream);
+
+locdone:
+ if(u) {
+ curl_free(finalurl);
+ curl_free(scheme);
+ curl_url_cleanup(u);
+ free(copyloc);
+ }
+}
+#endif
diff --git a/src/tool_cb_hdr.h b/src/tool_cb_hdr.h
index 6bb2153b2..01175bb6a 100644
--- a/src/tool_cb_hdr.h
+++ b/src/tool_cb_hdr.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_prg.c b/src/tool_cb_prg.c
index 2a23fd911..3532c31bc 100644
--- a/src/tool_cb_prg.c
+++ b/src/tool_cb_prg.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_prg.h b/src/tool_cb_prg.h
index a6fab323a..7d8fbae8f 100644
--- a/src/tool_cb_prg.h
+++ b/src/tool_cb_prg.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_rea.c b/src/tool_cb_rea.c
index 507373d8f..4aed55c3a 100644
--- a/src/tool_cb_rea.c
+++ b/src/tool_cb_rea.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_rea.h b/src/tool_cb_rea.h
index 0e5ad470d..81b5f871a 100644
--- a/src/tool_cb_rea.h
+++ b/src/tool_cb_rea.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_see.c b/src/tool_cb_see.c
index c158c8dff..d24d52651 100644
--- a/src/tool_cb_see.c
+++ b/src/tool_cb_see.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_see.h b/src/tool_cb_see.h
index edaf81808..4af0b0ab4 100644
--- a/src/tool_cb_see.h
+++ b/src/tool_cb_see.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cb_wrt.c b/src/tool_cb_wrt.c
index d5e96aa0b..c9d1dbd1d 100644
--- a/src/tool_cb_wrt.c
+++ b/src/tool_cb_wrt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -48,50 +50,95 @@
#define OPENMODE S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
#endif
-/* create a local file for writing, return TRUE on success */
+/* create/open a local file for writing, return TRUE on success */
bool tool_create_output_file(struct OutStruct *outs,
struct OperationConfig *config)
{
struct GlobalConfig *global;
FILE *file = NULL;
+ char *fname = outs->filename;
+ char *aname = NULL;
DEBUGASSERT(outs);
DEBUGASSERT(config);
global = config->global;
- if(!outs->filename || !*outs->filename) {
+ if(!fname || !*fname) {
warnf(global, "Remote filename has no length!\n");
return FALSE;
}
- if(outs->is_cd_filename) {
- /* don't overwrite existing files */
+ if(config->output_dir && outs->is_cd_filename) {
+ aname = aprintf("%s/%s", config->output_dir, fname);
+ if(!aname) {
+ errorf(global, "out of memory\n");
+ return FALSE;
+ }
+ fname = aname;
+ }
+
+ if(config->file_clobber_mode == CLOBBER_ALWAYS ||
+ (config->file_clobber_mode == CLOBBER_DEFAULT &&
+ !outs->is_cd_filename)) {
+ /* open file for writing */
+ file = fopen(fname, "wb");
+ }
+ else {
int fd;
- char *name = outs->filename;
- char *aname = NULL;
- if(config->output_dir) {
- aname = aprintf("%s/%s", config->output_dir, name);
- if(!aname) {
+ do {
+ fd = open(fname, O_CREAT | O_WRONLY | O_EXCL | O_BINARY, OPENMODE);
+ /* Keep retrying in the hope that it isn't interrupted sometime */
+ } while(fd == -1 && errno == EINTR);
+ if(config->file_clobber_mode == CLOBBER_NEVER && fd == -1) {
+ int next_num = 1;
+ size_t len = strlen(fname);
+ size_t newlen = len + 13; /* nul + 1-11 digits + dot */
+ char *newname;
+ /* Guard against wraparound in new filename */
+ if(newlen < len) {
+ free(aname);
+ errorf(global, "overflow in filename generation\n");
+ return FALSE;
+ }
+ newname = malloc(newlen);
+ if(!newname) {
errorf(global, "out of memory\n");
+ free(aname);
return FALSE;
}
- name = aname;
+ memcpy(newname, fname, len);
+ newname[len] = '.';
+ while(fd == -1 && /* haven't successfully opened a file */
+ (errno == EEXIST || errno == EISDIR) &&
+ /* because we keep having files that already exist */
+ next_num < 100 /* and we haven't reached the retry limit */ ) {
+ curlx_msnprintf(newname + len + 1, 12, "%d", next_num);
+ next_num++;
+ do {
+ fd = open(newname, O_CREAT | O_WRONLY | O_EXCL | O_BINARY, OPENMODE);
+ /* Keep retrying in the hope that it isn't interrupted sometime */
+ } while(fd == -1 && errno == EINTR);
+ }
+ outs->filename = newname; /* remember the new one */
+ outs->alloc_filename = TRUE;
}
- fd = open(name, O_CREAT | O_WRONLY | O_EXCL | O_BINARY, OPENMODE);
+ /* An else statement to not overwrite existing files and not retry with
+ new numbered names (which would cover
+ config->file_clobber_mode == CLOBBER_DEFAULT && outs->is_cd_filename)
+ is not needed because we would have failed earlier, in the while loop
+ and `fd` would now be -1 */
if(fd != -1) {
file = fdopen(fd, "wb");
if(!file)
close(fd);
}
- free(aname);
}
- else
- /* open file for writing */
- file = fopen(outs->filename, "wb");
if(!file) {
- warnf(global, "Failed to create the file %s: %s\n", outs->filename,
+ warnf(global, "Failed to open the file %s: %s\n", fname,
strerror(errno));
+ free(aname);
return FALSE;
}
+ free(aname);
outs->s_isreg = TRUE;
outs->fopened = TRUE;
outs->stream = file;
@@ -187,7 +234,7 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
warnf(config->global, "Binary output can mess up your terminal. "
"Use \"--output -\" to tell curl to output it to your terminal "
"anyway, or consider \"--output <FILE>\" to save to a file.\n");
- config->synthetic_error = ERR_BINARY_TERMINAL;
+ config->synthetic_error = TRUE;
return failure;
}
}
diff --git a/src/tool_cb_wrt.h b/src/tool_cb_wrt.h
index 95a11ebbe..0cbbceefe 100644
--- a/src/tool_cb_wrt.h
+++ b/src/tool_cb_wrt.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c
index 34e17ce55..eccb3bcb5 100644
--- a/src/tool_cfgable.c
+++ b/src/tool_cfgable.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -34,25 +36,20 @@ void config_init(struct OperationConfig *config)
config->use_httpget = FALSE;
config->create_dirs = FALSE;
config->maxredirs = DEFAULT_MAXREDIRS;
- config->proto = CURLPROTO_ALL;
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;
config->proto_default = NULL;
config->tcp_nodelay = TRUE; /* enabled by default */
config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
config->http09_allowed = FALSE;
config->ftp_skip_ip = TRUE;
+ config->file_clobber_mode = CLOBBER_DEFAULT;
}
static void free_config_fields(struct OperationConfig *config)
{
struct getout *urlnode;
- Curl_safefree(config->random_file);
- Curl_safefree(config->egd_file);
Curl_safefree(config->useragent);
Curl_safefree(config->altsvc);
Curl_safefree(config->hsts);
@@ -171,6 +168,8 @@ static void free_config_fields(struct OperationConfig *config)
Curl_safefree(config->ftp_alternative_to_user);
Curl_safefree(config->aws_sigv4);
+ Curl_safefree(config->proto_str);
+ Curl_safefree(config->proto_redir_str);
}
void config_free(struct OperationConfig *config)
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
index 227b914e3..c26cddd5e 100644
--- a/src/tool_cfgable.h
+++ b/src/tool_cfgable.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,18 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#include "tool_sdecls.h"
#include "tool_urlglob.h"
#include "tool_formparse.h"
-typedef enum {
- ERR_NONE,
- ERR_BINARY_TERMINAL = 1, /* binary to terminal detected */
- ERR_LAST
-} curl_error;
-
struct GlobalConfig;
struct State {
@@ -50,8 +46,6 @@ struct State {
struct OperationConfig {
bool remote_time;
- char *random_file;
- char *egd_file;
char *useragent;
struct curl_slist *cookies; /* cookies to serialize into a single line */
char *cookiejar; /* write to this file */
@@ -67,9 +61,9 @@ struct OperationConfig {
bool disable_epsv;
bool disable_eprt;
bool ftp_pret;
- long proto;
+ char *proto_str;
bool proto_present;
- long proto_redir;
+ char *proto_redir_str;
bool proto_redir_present;
char *proto_default;
curl_off_t resume_from;
@@ -110,7 +104,7 @@ struct OperationConfig {
struct curl_slist *mail_rcpt;
char *mail_auth;
bool mail_rcpt_allowfails; /* --mail-rcpt-allowfails */
- char *sasl_authzid; /* Authorisation identity (identity to use) */
+ char *sasl_authzid; /* Authorization identity (identity to use) */
bool sasl_ir; /* Enable/disable SASL initial response */
bool proxytunnel;
bool ftp_append; /* APPE on ftp */
@@ -189,6 +183,7 @@ struct OperationConfig {
bool proxydigest;
bool proxybasic;
bool proxyanyauth;
+ bool jsoned; /* added json content-type */
char *writeout; /* %-styled format string to output */
struct curl_slist *quote;
struct curl_slist *postquote;
@@ -272,7 +267,6 @@ struct OperationConfig {
certificate for authentication (Schannel) */
bool proxy_ssl_auto_client_cert; /* proxy version of ssl_auto_client_cert */
char *oauth_bearer; /* OAuth 2.0 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 */
bool abstract_unix_socket; /* path to an abstract Unix domain socket */
@@ -281,18 +275,28 @@ struct OperationConfig {
double expect100timeout;
bool suppress_connect_headers; /* suppress proxy CONNECT response headers
from user callbacks */
- curl_error synthetic_error; /* if non-zero, it overrides any libcurl
- error */
+ bool synthetic_error; /* if TRUE, this is tool-internal error */
bool ssh_compression; /* enable/disable SSH compression */
long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
0 is valid. default: CURL_HET_DEFAULT. */
bool haproxy_protocol; /* whether to send HAProxy protocol v1 */
bool disallow_username_in_url; /* disallow usernames in URLs */
char *aws_sigv4;
+ enum {
+ CLOBBER_DEFAULT, /* Provides compatibility with previous versions of curl,
+ by using the default behavior for -o, -O, and -J.
+ If those options would have overwritten files, like
+ -o and -O would, then overwrite them. In the case of
+ -J, this will not overwrite any files. */
+ CLOBBER_NEVER, /* If the file exists, always fail */
+ CLOBBER_ALWAYS /* If the file exists, always overwrite it */
+ } file_clobber_mode;
struct GlobalConfig *global;
struct OperationConfig *prev;
struct OperationConfig *next; /* Always last in the struct */
struct State state; /* for create_transfer() */
+ bool rm_partial; /* on error, remove partially written output
+ files */
};
struct GlobalConfig {
@@ -313,6 +317,8 @@ struct GlobalConfig {
char *libcurl; /* Output libcurl code to this file name */
bool fail_early; /* exit on first transfer error */
bool styled_output; /* enable fancy output style detection */
+ long ms_per_transfer; /* start next transfer after (at least) this
+ many milliseconds */
#ifdef CURLDEBUG
bool test_event_based;
#endif
diff --git a/src/tool_convert.c b/src/tool_convert.c
deleted file mode 100644
index 04818e9a6..000000000
--- a/src/tool_convert.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under 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"
-
-#ifdef CURL_DOES_CONVERSIONS
-
-#ifdef HAVE_ICONV
-# include <iconv.h>
-#endif
-
-#include "tool_convert.h"
-
-#include "memdebug.h" /* keep this as LAST include */
-
-#ifdef HAVE_ICONV
-
-/* curl tool iconv conversion descriptors */
-static iconv_t inbound_cd = (iconv_t)-1;
-static iconv_t outbound_cd = (iconv_t)-1;
-
-/* set default codesets for iconv */
-#ifndef CURL_ICONV_CODESET_OF_NETWORK
-# define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
-#endif
-
-/*
- * convert_to_network() is a curl tool function to convert
- * from the host encoding to ASCII on non-ASCII platforms.
- */
-CURLcode convert_to_network(char *buffer, size_t length)
-{
- /* translate from the host encoding to the network encoding */
- char *input_ptr, *output_ptr;
- size_t res, in_bytes, out_bytes;
-
- /* open an iconv conversion descriptor if necessary */
- if(outbound_cd == (iconv_t)-1) {
- outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
- CURL_ICONV_CODESET_OF_HOST);
- if(outbound_cd == (iconv_t)-1) {
- return CURLE_CONV_FAILED;
- }
- }
- /* call iconv */
- input_ptr = output_ptr = buffer;
- in_bytes = out_bytes = length;
- res = iconv(outbound_cd, &input_ptr, &in_bytes,
- &output_ptr, &out_bytes);
- if((res == (size_t)-1) || (in_bytes)) {
- return CURLE_CONV_FAILED;
- }
-
- return CURLE_OK;
-}
-
-/*
- * convert_from_network() is a curl tool function
- * for performing ASCII conversions on non-ASCII platforms.
- */
-CURLcode convert_from_network(char *buffer, size_t length)
-{
- /* translate from the network encoding to the host encoding */
- char *input_ptr, *output_ptr;
- size_t res, in_bytes, out_bytes;
-
- /* open an iconv conversion descriptor if necessary */
- if(inbound_cd == (iconv_t)-1) {
- inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
- CURL_ICONV_CODESET_OF_NETWORK);
- if(inbound_cd == (iconv_t)-1) {
- return CURLE_CONV_FAILED;
- }
- }
- /* call iconv */
- input_ptr = output_ptr = buffer;
- in_bytes = out_bytes = length;
- res = iconv(inbound_cd, &input_ptr, &in_bytes,
- &output_ptr, &out_bytes);
- if((res == (size_t)-1) || (in_bytes)) {
- return CURLE_CONV_FAILED;
- }
-
- return CURLE_OK;
-}
-
-void convert_cleanup(void)
-{
- /* close iconv conversion descriptors */
- if(inbound_cd != (iconv_t)-1)
- (void)iconv_close(inbound_cd);
- if(outbound_cd != (iconv_t)-1)
- (void)iconv_close(outbound_cd);
-}
-
-#endif /* HAVE_ICONV */
-
-char convert_char(curl_infotype infotype, char this_char)
-{
-/* determine how this specific character should be displayed */
- switch(infotype) {
- case CURLINFO_DATA_IN:
- case CURLINFO_DATA_OUT:
- case CURLINFO_SSL_DATA_IN:
- case CURLINFO_SSL_DATA_OUT:
- /* data, treat as ASCII */
- if(this_char < 0x20 || this_char >= 0x7f) {
- /* non-printable ASCII, use a replacement character */
- return UNPRINTABLE_CHAR;
- }
- /* printable ASCII hex value: convert to host encoding */
- (void)convert_from_network(&this_char, 1);
- /* FALLTHROUGH */
- default:
- /* treat as host encoding */
- if(ISPRINT(this_char)
- && (this_char != '\t')
- && (this_char != '\r')
- && (this_char != '\n')) {
- /* printable characters excluding tabs and line end characters */
- return this_char;
- }
- break;
- }
- /* non-printable, use a replacement character */
- return UNPRINTABLE_CHAR;
-}
-
-#endif /* CURL_DOES_CONVERSIONS */
diff --git a/src/tool_dirhie.c b/src/tool_dirhie.c
index 93882d9b2..1b6ac1748 100644
--- a/src/tool_dirhie.c
+++ b/src/tool_dirhie.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_dirhie.h b/src/tool_dirhie.h
index c0ef1fcda..954f3e248 100644
--- a/src/tool_dirhie.h
+++ b/src/tool_dirhie.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_doswin.c b/src/tool_doswin.c
index 2390fab7f..d8695e93c 100644
--- a/src/tool_doswin.c
+++ b/src/tool_doswin.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -635,12 +637,11 @@ CURLcode FindWin32CACert(struct OperationConfig *config,
res_len = SearchPath(NULL, bundle_file, NULL, PATH_MAX, buf, &ptr);
if(res_len > 0) {
+ char *mstr = curlx_convert_tchar_to_UTF8(buf);
Curl_safefree(config->cacert);
-#ifdef UNICODE
- config->cacert = curlx_convert_wchar_to_UTF8(buf);
-#else
- config->cacert = strdup(buf);
-#endif
+ if(mstr)
+ config->cacert = strdup(mstr);
+ curlx_unicodefree(mstr);
if(!config->cacert)
result = CURLE_OUT_OF_MEMORY;
}
diff --git a/src/tool_doswin.h b/src/tool_doswin.h
index ecf952b79..ff9bad97e 100644
--- a/src/tool_doswin.h
+++ b/src/tool_doswin.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_easysrc.c b/src/tool_easysrc.c
index 85a586d9d..e653b3117 100644
--- a/src/tool_easysrc.c
+++ b/src/tool_easysrc.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -59,7 +61,7 @@ static const char *const srchead[]={
NULL
};
/* easysrc_decl declarations come here */
-/* easysrc_data initialisations come here */
+/* easysrc_data initialization come here */
/* easysrc_code statements come here */
static const char *const srchard[]={
"/* Here is a list of options the curl code used that cannot get generated",
diff --git a/src/tool_easysrc.h b/src/tool_easysrc.h
index 86bdfa26e..ec2fdd23f 100644
--- a/src/tool_easysrc.h
+++ b/src/tool_easysrc.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#ifndef CURL_DISABLE_LIBCURL_OPTION
@@ -44,6 +46,13 @@ extern CURLcode easysrc_cleanup(void);
void dumpeasysrc(struct GlobalConfig *config);
+#else /* CURL_DISABLE_LIBCURL_OPTION is defined */
+
+#define easysrc_init() CURLE_OK
+#define easysrc_cleanup()
+#define dumpeasysrc(x)
+#define easysrc_perform(x) CURLE_OK
+
#endif /* CURL_DISABLE_LIBCURL_OPTION */
#endif /* HEADER_CURL_TOOL_EASYSRC_H */
diff --git a/src/tool_filetime.c b/src/tool_filetime.c
index 57ff0c2d9..c095a49ee 100644
--- a/src/tool_filetime.c
+++ b/src/tool_filetime.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_filetime.h"
#include "tool_cfgable.h"
diff --git a/src/tool_filetime.h b/src/tool_filetime.h
index f3883d2c5..3d88d8913 100644
--- a/src/tool_filetime.h
+++ b/src/tool_filetime.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_findfile.c b/src/tool_findfile.c
index cda8c8ed8..51a45ff3a 100644
--- a/src/tool_findfile.c
+++ b/src/tool_findfile.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -42,18 +44,25 @@
struct finder {
const char *env;
const char *append;
+ bool withoutdot;
};
+/* The order of the variables below is important, as the index number is used
+ in the findfile() function */
static const struct finder list[] = {
- { "CURL_HOME", NULL },
- { "XDG_CONFIG_HOME", NULL },
- { "HOME", NULL },
+ { "CURL_HOME", NULL, FALSE },
+ { "XDG_CONFIG_HOME", NULL, FALSE }, /* index == 1, used in the code */
+ { "HOME", NULL, FALSE },
#ifdef WIN32
- { "USERPROFILE", NULL },
- { "APPDATA", NULL },
- { "USERPROFILE", "\\Application Data"},
+ { "USERPROFILE", NULL, FALSE },
+ { "APPDATA", NULL, FALSE },
+ { "USERPROFILE", "\\Application Data", FALSE},
#endif
- { NULL, NULL }
+ /* these are for .curlrc if XDG_CONFIG_HOME is not defined */
+ { "CURL_HOME", "/.config", TRUE },
+ { "HOME", "/.config", TRUE },
+
+ { NULL, NULL, FALSE }
};
static char *checkhome(const char *home, const char *fname, bool dotscore)
@@ -90,11 +99,12 @@ static char *checkhome(const char *home, const char *fname, bool dotscore)
* the given file to be accessed there, then it is a match.
* 2. Non-windows: try getpwuid
*/
-char *findfile(const char *fname, bool dotscore)
+char *findfile(const char *fname, int dotscore)
{
int i;
+ bool xdg = FALSE;
DEBUGASSERT(fname && fname[0]);
- DEBUGASSERT(!dotscore || (fname[0] == '.'));
+ DEBUGASSERT((dotscore != 1) || (fname[0] == '.'));
if(!fname[0])
return NULL;
@@ -103,6 +113,9 @@ char *findfile(const char *fname, bool dotscore)
char *home = curl_getenv(list[i].env);
if(home) {
char *path;
+ const char *filename = fname;
+ if(i == 1 /* XDG_CONFIG_HOME */)
+ xdg = TRUE;
if(!home[0]) {
curl_free(home);
continue;
@@ -114,7 +127,17 @@ char *findfile(const char *fname, bool dotscore)
return NULL;
home = c;
}
- path = checkhome(home, fname, dotscore);
+ if(list[i].withoutdot) {
+ if(!dotscore || xdg) {
+ /* this is not looking for .curlrc, or the XDG_CONFIG_HOME was
+ defined so we skip the extended check */
+ curl_free(home);
+ continue;
+ }
+ filename++; /* move past the leading dot */
+ dotscore = 0; /* disable it for this check */
+ }
+ path = checkhome(home, filename, dotscore ? dotscore - 1 : 0);
curl_free(home);
if(path)
return path;
diff --git a/src/tool_findfile.h b/src/tool_findfile.h
index 0f6a8eb55..5bae579e1 100644
--- a/src/tool_findfile.h
+++ b/src/tool_findfile.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,9 +20,17 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
-char *findfile(const char *fname, bool dotscore);
+#ifdef WIN32
+#define CURLRC_DOTSCORE 2 /* look for underscore-prefixed name too */
+#else
+#define CURLRC_DOTSCORE 1 /* regular .curlrc check */
+#endif
+
+char *findfile(const char *fname, int dotscore);
#endif /* HEADER_CURL_TOOL_HOMEDIR_H */
diff --git a/src/tool_formparse.c b/src/tool_formparse.c
index 3661a979e..d4fc651e2 100644
--- a/src/tool_formparse.c
+++ b/src/tool_formparse.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -28,7 +30,6 @@
#include "curlx.h"
#include "tool_cfgable.h"
-#include "tool_convert.h"
#include "tool_msgs.h"
#include "tool_binmode.h"
#include "tool_getparam.h"
@@ -37,10 +38,6 @@
#include "memdebug.h" /* keep this as LAST include */
-/* Macros to free const pointers. */
-#define CONST_FREE(x) free((void *) (x))
-#define CONST_SAFEFREE(x) Curl_safefree(*((void **) &(x)))
-
/* tool_mime functions. */
static struct tool_mime *tool_mime_new(struct tool_mime *parent,
toolmimekind kind)
@@ -64,7 +61,7 @@ static struct tool_mime *tool_mime_new_parts(struct tool_mime *parent)
}
static struct tool_mime *tool_mime_new_data(struct tool_mime *parent,
- const char *data)
+ char *data)
{
struct tool_mime *m = NULL;
@@ -72,7 +69,7 @@ static struct tool_mime *tool_mime_new_data(struct tool_mime *parent,
if(data) {
m = tool_mime_new(parent, TOOLMIME_DATA);
if(!m)
- CONST_FREE(data);
+ free(data);
else
m->data = data;
}
@@ -90,13 +87,13 @@ static struct tool_mime *tool_mime_new_filedata(struct tool_mime *parent,
*errcode = CURLE_OUT_OF_MEMORY;
if(strcmp(filename, "-")) {
/* This is a normal file. */
- filename = strdup(filename);
- if(filename) {
+ char *filedup = strdup(filename);
+ if(filedup) {
m = tool_mime_new(parent, TOOLMIME_FILE);
if(!m)
- CONST_FREE(filename);
+ free(filedup);
else {
- m->data = filename;
+ m->data = filedup;
if(!isremotefile)
m->kind = TOOLMIME_FILEDATA;
*errcode = CURLE_OK;
@@ -126,21 +123,20 @@ static struct tool_mime *tool_mime_new_filedata(struct tool_mime *parent,
else { /* Not suitable for direct use, buffer stdin data. */
size_t stdinsize = 0;
- if(file2memory(&data, &stdinsize, stdin) != PARAM_OK) {
- /* Out of memory. */
+ switch(file2memory(&data, &stdinsize, stdin)) {
+ case PARAM_NO_MEM:
return m;
- }
-
- if(ferror(stdin)) {
+ case PARAM_READ_ERROR:
result = CURLE_READ_ERROR;
- Curl_safefree(data);
- data = NULL;
- }
- else if(!stdinsize) {
- /* Zero-length data has been freed. Re-create it. */
- data = strdup("");
- if(!data)
- return m;
+ break;
+ default:
+ if(!stdinsize) {
+ /* Zero-length data has been freed. Re-create it. */
+ data = strdup("");
+ if(!data)
+ return m;
+ }
+ break;
}
size = curlx_uztoso(stdinsize);
origin = 0;
@@ -168,11 +164,11 @@ void tool_mime_free(struct tool_mime *mime)
tool_mime_free(mime->subparts);
if(mime->prev)
tool_mime_free(mime->prev);
- CONST_SAFEFREE(mime->name);
- CONST_SAFEFREE(mime->filename);
- CONST_SAFEFREE(mime->type);
- CONST_SAFEFREE(mime->encoder);
- CONST_SAFEFREE(mime->data);
+ Curl_safefree(mime->name);
+ Curl_safefree(mime->filename);
+ Curl_safefree(mime->type);
+ Curl_safefree(mime->encoder);
+ Curl_safefree(mime->data);
curl_slist_free_all(mime->headers);
free(mime);
}
@@ -268,25 +264,7 @@ static CURLcode tool2curlparts(CURL *curl, struct tool_mime *m,
break;
case TOOLMIME_DATA:
-#ifdef CURL_DOES_CONVERSIONS
- /* Our data is always textual: convert it to ASCII. */
- {
- size_t size = strlen(m->data);
- char *cp = malloc(size + 1);
-
- if(!cp)
- ret = CURLE_OUT_OF_MEMORY;
- else {
- memcpy(cp, m->data, size + 1);
- ret = convert_to_network(cp, size);
- if(!ret)
- ret = curl_mime_data(part, cp, CURL_ZERO_TERMINATED);
- free(cp);
- }
- }
-#else
ret = curl_mime_data(part, m->data, CURL_ZERO_TERMINATED);
-#endif
break;
case TOOLMIME_FILE:
@@ -427,7 +405,7 @@ static int read_field_headers(struct OperationConfig *config,
size_t pos = 0;
bool incomment = FALSE;
int lineno = 1;
- char hdrbuf[999]; /* Max. header length + 1. */
+ char hdrbuf[999] = ""; /* Max. header length + 1. */
for(;;) {
int c = getc(fp);
@@ -517,7 +495,7 @@ static int get_param_part(struct OperationConfig *config, char endchar,
sep = *p;
*endpos = '\0';
while(sep == ';') {
- while(ISSPACE(*++p))
+ while(p++ && ISSPACE(*p))
;
if(!endct && checkprefix("type=", p)) {
@@ -727,24 +705,15 @@ static int get_param_part(struct OperationConfig *config, char endchar,
*
***************************************************************************/
-/* Convenience macros for null pointer check. */
-#define NULL_CHECK(ptr, init, retcode) \
+#define SET_TOOL_MIME_PTR(m, field) \
do { \
- (ptr) = (init); \
- if(!(ptr)) { \
- warnf(config->global, "out of memory!\n"); \
- curl_slist_free_all(headers); \
- Curl_safefree(contents); \
- return retcode; \
+ if(field) { \
+ (m)->field = strdup(field); \
+ if(!(m)->field) \
+ goto fail; \
} \
} while(0)
-#define SET_TOOL_MIME_PTR(m, field, retcode) \
- do { \
- if(field) \
- NULL_CHECK((m)->field, strdup(field), retcode); \
- } while(0)
-
int formparse(struct OperationConfig *config,
const char *input,
struct tool_mime **mimeroot,
@@ -763,15 +732,20 @@ int formparse(struct OperationConfig *config,
struct curl_slist *headers = NULL;
struct tool_mime *part = NULL;
CURLcode res;
+ int err = 1;
/* Allocate the main mime structure if needed. */
if(!*mimecurrent) {
- NULL_CHECK(*mimeroot, tool_mime_new_parts(NULL), 1);
+ *mimeroot = tool_mime_new_parts(NULL);
+ if(!*mimeroot)
+ goto fail;
*mimecurrent = *mimeroot;
}
/* Make a copy we can overwrite. */
- NULL_CHECK(contents, strdup(input), 2);
+ contents = strdup(input);
+ if(!contents)
+ goto fail;
/* Scan for the end of the name. */
contp = strchr(contents, '=');
@@ -785,23 +759,22 @@ int formparse(struct OperationConfig *config,
/* Starting a multipart. */
sep = get_param_part(config, '\0',
&contp, &data, &type, NULL, NULL, &headers);
- if(sep < 0) {
- Curl_safefree(contents);
- return 3;
- }
- NULL_CHECK(part, tool_mime_new_parts(*mimecurrent), 4);
+ if(sep < 0)
+ goto fail;
+ part = tool_mime_new_parts(*mimecurrent);
+ if(!part)
+ goto fail;
*mimecurrent = part;
part->headers = headers;
headers = NULL;
- SET_TOOL_MIME_PTR(part, type, 5);
+ SET_TOOL_MIME_PTR(part, type);
}
else if(!name && !strcmp(contp, ")") && !literal_value) {
/* Ending a multipart. */
if(*mimecurrent == *mimeroot) {
warnf(config->global, "no multipart to terminate!\n");
- Curl_safefree(contents);
- return 6;
- }
+ goto fail;
+ }
*mimecurrent = (*mimecurrent)->parent;
}
else if('@' == contp[0] && !literal_value) {
@@ -817,8 +790,7 @@ int formparse(struct OperationConfig *config,
sep = get_param_part(config, ',', &contp,
&data, &type, &filename, &encoder, &headers);
if(sep < 0) {
- Curl_safefree(contents);
- return 7;
+ goto fail;
}
/* now contp point to comma or string end.
@@ -826,13 +798,17 @@ int formparse(struct OperationConfig *config,
if(!subparts) {
if(sep != ',') /* If there is a single file. */
subparts = *mimecurrent;
- else
- NULL_CHECK(subparts, tool_mime_new_parts(*mimecurrent), 8);
+ else {
+ subparts = tool_mime_new_parts(*mimecurrent);
+ if(!subparts)
+ goto fail;
+ }
}
/* Store that file in a part. */
- NULL_CHECK(part,
- tool_mime_new_filedata(subparts, data, TRUE, &res), 9);
+ part = tool_mime_new_filedata(subparts, data, TRUE, &res);
+ if(!part)
+ goto fail;
part->headers = headers;
headers = NULL;
part->config = config->global;
@@ -843,17 +819,16 @@ int formparse(struct OperationConfig *config,
if(part->size > 0) {
warnf(config->global,
"error while reading standard input\n");
- Curl_safefree(contents);
- return 10;
+ goto fail;
}
- CONST_SAFEFREE(part->data);
+ Curl_safefree(part->data);
part->data = NULL;
part->size = -1;
res = CURLE_OK;
}
- SET_TOOL_MIME_PTR(part, filename, 11);
- SET_TOOL_MIME_PTR(part, type, 12);
- SET_TOOL_MIME_PTR(part, encoder, 13);
+ SET_TOOL_MIME_PTR(part, filename);
+ SET_TOOL_MIME_PTR(part, type);
+ SET_TOOL_MIME_PTR(part, encoder);
/* *contp could be '\0', so we just check with the delimiter */
} while(sep); /* loop if there's another file name */
@@ -864,13 +839,13 @@ int formparse(struct OperationConfig *config,
++contp;
sep = get_param_part(config, '\0', &contp,
&data, &type, NULL, &encoder, &headers);
- if(sep < 0) {
- Curl_safefree(contents);
- return 14;
- }
+ if(sep < 0)
+ goto fail;
- NULL_CHECK(part, tool_mime_new_filedata(*mimecurrent, data, FALSE,
- &res), 15);
+ part = tool_mime_new_filedata(*mimecurrent, data, FALSE,
+ &res);
+ if(!part)
+ goto fail;
part->headers = headers;
headers = NULL;
part->config = config->global;
@@ -881,10 +856,9 @@ int formparse(struct OperationConfig *config,
if(part->size > 0) {
warnf(config->global,
"error while reading standard input\n");
- Curl_safefree(contents);
- return 16;
+ goto fail;
}
- CONST_SAFEFREE(part->data);
+ Curl_safefree(part->data);
part->data = NULL;
part->size = -1;
res = CURLE_OK;
@@ -896,20 +870,20 @@ int formparse(struct OperationConfig *config,
else {
sep = get_param_part(config, '\0', &contp,
&data, &type, &filename, &encoder, &headers);
- if(sep < 0) {
- Curl_safefree(contents);
- return 17;
- }
+ if(sep < 0)
+ goto fail;
}
- NULL_CHECK(part, tool_mime_new_data(*mimecurrent, data), 18);
+ part = tool_mime_new_data(*mimecurrent, data);
+ if(!part)
+ goto fail;
part->headers = headers;
headers = NULL;
}
- SET_TOOL_MIME_PTR(part, filename, 19);
- SET_TOOL_MIME_PTR(part, type, 20);
- SET_TOOL_MIME_PTR(part, encoder, 21);
+ SET_TOOL_MIME_PTR(part, filename);
+ SET_TOOL_MIME_PTR(part, type);
+ SET_TOOL_MIME_PTR(part, encoder);
if(sep) {
*contp = (char) sep;
@@ -919,13 +893,15 @@ int formparse(struct OperationConfig *config,
}
/* Set part name. */
- SET_TOOL_MIME_PTR(part, name, 22);
+ SET_TOOL_MIME_PTR(part, name);
}
else {
warnf(config->global, "Illegally formatted input field!\n");
- Curl_safefree(contents);
- return 23;
+ goto fail;
}
+ err = 0;
+ fail:
Curl_safefree(contents);
- return 0;
+ curl_slist_free_all(headers);
+ return err;
}
diff --git a/src/tool_formparse.h b/src/tool_formparse.h
index 7fb41070f..8c0461c69 100644
--- a/src/tool_formparse.h
+++ b/src/tool_formparse.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -41,11 +43,11 @@ struct tool_mime {
struct tool_mime *parent; /* Parent item. */
struct tool_mime *prev; /* Previous sibling (reverse order link). */
/* Common fields. */
- const char *data; /* Actual data or data filename. */
- const char *name; /* Part name. */
- const char *filename; /* Part's filename. */
- const char *type; /* Part's mime type. */
- const char *encoder; /* Part's requested encoding. */
+ char *data; /* Actual data or data filename. */
+ char *name; /* Part name. */
+ char *filename; /* Part's filename. */
+ char *type; /* Part's mime type. */
+ char *encoder; /* Part's requested encoding. */
struct curl_slist *headers; /* User-defined headers. */
/* TOOLMIME_PARTS fields. */
struct tool_mime *subparts; /* Part's subparts. */
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index 7abbcc639..af4b3a698 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -30,7 +32,6 @@
#include "tool_binmode.h"
#include "tool_cfgable.h"
#include "tool_cb_prg.h"
-#include "tool_convert.h"
#include "tool_filetime.h"
#include "tool_formparse.h"
#include "tool_getparam.h"
@@ -94,6 +95,7 @@ static const struct LongShort aliases[]= {
{"*h", "trace-ascii", ARG_FILENAME},
{"*H", "alpn", ARG_BOOL},
{"*i", "limit-rate", ARG_STRING},
+ {"*I", "rate", ARG_STRING},
{"*j", "compressed", ARG_BOOL},
{"*J", "tr-encoding", ARG_BOOL},
{"*k", "digest", ARG_BOOL},
@@ -230,6 +232,7 @@ static const struct LongShort aliases[]= {
{"da", "data-ascii", ARG_STRING},
{"db", "data-binary", ARG_STRING},
{"de", "data-urlencode", ARG_STRING},
+ {"df", "json", ARG_STRING},
{"D", "dump-header", ARG_FILENAME},
{"e", "referer", ARG_STRING},
{"E", "cert", ARG_FILENAME},
@@ -284,6 +287,7 @@ static const struct LongShort aliases[]= {
{"fb", "styled-output", ARG_BOOL},
{"fc", "mail-rcpt-allowfails", ARG_BOOL},
{"fd", "fail-with-body", ARG_BOOL},
+ {"fe", "remove-on-error", ARG_BOOL},
{"F", "form", ARG_STRING},
{"Fs", "form-string", ARG_STRING},
{"g", "globoff", ARG_BOOL},
@@ -310,9 +314,10 @@ static const struct LongShort aliases[]= {
{"N", "buffer", ARG_BOOL},
/* 'buffer' listed as --no-buffer in the help */
{"o", "output", ARG_FILENAME},
- {"O", "remote-name", ARG_NONE},
+ {"O", "remote-name", ARG_BOOL},
{"Oa", "remote-name-all", ARG_BOOL},
{"Ob", "output-dir", ARG_STRING},
+ {"Oc", "clobber", ARG_BOOL},
{"p", "proxytunnel", ARG_BOOL},
{"P", "ftp-port", ARG_STRING},
{"q", "disable", ARG_BOOL},
@@ -418,10 +423,9 @@ void parse_cert_parameter(const char *cert_parameter,
separator, but we try to detect when it is used for a file name! On
windows. */
#ifdef WIN32
- if(param_place &&
- (param_place == &cert_parameter[1]) &&
- (cert_parameter[2] == '\\' || cert_parameter[2] == '/') &&
- (ISALPHA(cert_parameter[0])) ) {
+ if((param_place == &cert_parameter[1]) &&
+ (cert_parameter[2] == '\\' || cert_parameter[2] == '/') &&
+ (ISALPHA(cert_parameter[0])) ) {
/* colon in the second column, followed by a backslash, and the
first character is an alphabetic letter:
@@ -483,7 +487,6 @@ GetFileAndPassword(char *nextarg, char **file, char **password)
Curl_safefree(*password);
*password = passphrase;
}
- cleanarg(nextarg);
}
/* Get a size parameter for '--limit-rate' or '--max-filesize'.
@@ -538,6 +541,121 @@ static ParameterError GetSizeParameter(struct GlobalConfig *global,
return PARAM_OK;
}
+#ifdef HAVE_WRITABLE_ARGV
+static void cleanarg(argv_item_t str)
+{
+ /* now that GetStr has copied the contents of nextarg, wipe the next
+ * argument out so that the username:password isn't displayed in the
+ * system process list */
+ if(str) {
+ size_t len = strlen(str);
+ memset(str, ' ', len);
+ }
+}
+#else
+#define cleanarg(x)
+#endif
+
+/* --data-urlencode */
+static ParameterError data_urlencode(struct GlobalConfig *global,
+ char *nextarg,
+ char **postp,
+ size_t *lenp)
+{
+ /* [name]=[content], we encode the content part only
+ * [name]@[file name]
+ *
+ * Case 2: we first load the file using that name and then encode
+ * the content.
+ */
+ ParameterError err;
+ const char *p = strchr(nextarg, '=');
+ size_t nlen;
+ char is_file;
+ char *postdata = NULL;
+ size_t size = 0;
+ if(!p)
+ /* there was no '=' letter, check for a '@' instead */
+ p = strchr(nextarg, '@');
+ if(p) {
+ nlen = p - nextarg; /* length of the name part */
+ is_file = *p++; /* pass the separator */
+ }
+ else {
+ /* neither @ nor =, so no name and it isn't a file */
+ nlen = is_file = 0;
+ p = nextarg;
+ }
+ if('@' == is_file) {
+ FILE *file;
+ /* a '@' letter, it means that a file name or - (stdin) follows */
+ if(!strcmp("-", p)) {
+ file = stdin;
+ set_binmode(stdin);
+ }
+ else {
+ file = fopen(p, "rb");
+ if(!file)
+ warnf(global,
+ "Couldn't read data from file \"%s\", this makes "
+ "an empty POST.\n", nextarg);
+ }
+
+ err = file2memory(&postdata, &size, file);
+
+ if(file && (file != stdin))
+ fclose(file);
+ if(err)
+ return err;
+ }
+ else {
+ GetStr(&postdata, p);
+ if(postdata)
+ size = strlen(postdata);
+ }
+
+ if(!postdata) {
+ /* no data from the file, point to a zero byte string to make this
+ get sent as a POST anyway */
+ postdata = strdup("");
+ if(!postdata)
+ return PARAM_NO_MEM;
+ size = 0;
+ }
+ else {
+ char *enc = curl_easy_escape(NULL, postdata, (int)size);
+ Curl_safefree(postdata); /* no matter if it worked or not */
+ if(enc) {
+ /* replace (in-place) '%20' by '+' according to RFC1866 */
+ size_t enclen = replace_url_encoded_space_by_plus(enc);
+ /* now make a string with the name from above and append the
+ encoded string */
+ size_t outlen = nlen + enclen + 2;
+ char *n = malloc(outlen);
+ if(!n) {
+ curl_free(enc);
+ return PARAM_NO_MEM;
+ }
+ if(nlen > 0) { /* only append '=' if we have a name */
+ msnprintf(n, outlen, "%.*s=%s", (int)nlen, nextarg, enc);
+ size = outlen-1;
+ }
+ else {
+ strcpy(n, enc);
+ size = outlen-2; /* since no '=' was inserted */
+ }
+ curl_free(enc);
+ postdata = n;
+ }
+ else
+ return PARAM_NO_MEM;
+ }
+ *postp = postdata;
+ *lenp = size;
+ return PARAM_OK;
+}
+
+
ParameterError getparameter(const char *flag, /* f or -long-flag */
char *nextarg, /* NULL if unset */
bool *usedarg, /* set to TRUE if the arg
@@ -557,6 +675,17 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
ParameterError err;
bool toggle = TRUE; /* how to switch boolean options, on or off. Controlled
by using --OPTION or --no-OPTION */
+#ifdef HAVE_WRITABLE_ARGV
+ argv_item_t clearthis = NULL;
+#endif
+
+ static const char *redir_protos[] = {
+ "http",
+ "https",
+ "ftp",
+ "ftps",
+ NULL
+ };
*usedarg = FALSE; /* default is that we don't use the arg */
@@ -633,6 +762,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
/* this option requires an extra parameter */
if(!longopt && parse[1]) {
nextarg = (char *)&parse[1]; /* this is the actual extra parameter */
+#ifdef HAVE_WRITABLE_ARGV
+ clearthis = nextarg;
+#endif
singleopt = TRUE; /* don't loop anymore after this */
}
else if(!nextarg)
@@ -654,36 +786,44 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
case '*': /* options without a short option */
switch(subletter) {
case '4': /* --dns-ipv4-addr */
+ if(!curlinfo->ares_num) /* c-ares is needed for this */
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
/* addr in dot notation */
GetStr(&config->dns_ipv4_addr, nextarg);
break;
case '6': /* --dns-ipv6-addr */
+ if(!curlinfo->ares_num) /* c-ares is needed for this */
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
/* 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 'B': /* OAuth 2.0 bearer token */
GetStr(&config->oauth_bearer, nextarg);
+ cleanarg(clearthis);
config->authtype |= CURLAUTH_BEARER;
break;
case 'c': /* connect-timeout */
err = str2udouble(&config->connecttimeout, nextarg,
- LONG_MAX/1000);
+ (double)LONG_MAX/1000);
if(err)
return err;
break;
case 'C': /* doh-url */
GetStr(&config->doh_url, nextarg);
+ if(config->doh_url && !config->doh_url[0])
+ /* if given a blank string, we make it NULL again */
+ Curl_safefree(config->doh_url);
break;
case 'd': /* ciphers */
GetStr(&config->cipher_list, nextarg);
break;
case 'D': /* --dns-interface */
+ if(!curlinfo->ares_num) /* c-ares is needed for this */
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
/* interface name */
GetStr(&config->dns_interface, nextarg);
break;
@@ -697,6 +837,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
config->disable_epsv = (!toggle)?TRUE:FALSE;
break;
case 'F': /* --dns-servers */
+ if(!curlinfo->ares_num) /* c-ares is needed for this */
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
/* IP addrs of DNS servers */
GetStr(&config->dns_servers, nextarg);
break;
@@ -707,7 +849,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
global->tracetype = TRACE_BIN;
break;
case 'G': /* --npn */
- config->nonpn = (!toggle)?TRUE:FALSE;
+ warnf(global, "--npn is no longer supported\n");
break;
case 'h': /* --trace-ascii */
GetStr(&global->trace_dump, nextarg);
@@ -730,6 +872,51 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
config->sendpersecond = value;
}
break;
+ case 'I': /* --rate (request rate) */
+ {
+ /* support a few different suffixes, extract the suffix first, then
+ get the number and convert to per hour.
+ /s == per second
+ /m == per minute
+ /h == per hour (default)
+ /d == per day (24 hours)
+ */
+ char *div = strchr(nextarg, '/');
+ char number[26];
+ long denominator;
+ long numerator = 60*60*1000; /* default per hour */
+ size_t numlen = div ? (size_t)(div - nextarg) : strlen(nextarg);
+ if(numlen > sizeof(number)-1)
+ return PARAM_NUMBER_TOO_LARGE;
+ strncpy(number, nextarg, numlen);
+ number[numlen] = 0;
+ err = str2unum(&denominator, number);
+ if(err)
+ return err;
+ if(denominator < 1)
+ return PARAM_BAD_USE;
+ if(div) {
+ char unit = div[1];
+ switch(unit) {
+ case 's': /* per second */
+ numerator = 1000;
+ break;
+ case 'm': /* per minute */
+ numerator = 60*1000;
+ break;
+ case 'h': /* per hour */
+ break;
+ case 'd': /* per day */
+ numerator = 24*60*60*1000;
+ break;
+ default:
+ errorf(global, "unsupported --rate unit\n");
+ return PARAM_BAD_USE;
+ }
+ }
+ global->ms_per_transfer = numerator/denominator;
+ }
+ break;
case 'j': /* --compressed */
if(toggle &&
@@ -929,6 +1116,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
return PARAM_LIBCURL_DOESNT_SUPPORT;
config->ftp_ssl = toggle;
+ if(config->ftp_ssl)
+ warnf(global,
+ "--ssl is an insecure option, consider --ssl-reqd instead\n");
break;
case 'b': /* --ftp-pasv */
Curl_safefree(config->ftpport);
@@ -1128,12 +1318,13 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
break;
case 'D': /* --proto */
config->proto_present = TRUE;
- if(proto2num(config, &config->proto, nextarg))
- return PARAM_BAD_USE;
+ err = proto2num(config, built_in_protos, &config->proto_str, nextarg);
+ if(err)
+ return err;
break;
case 'E': /* --proto-redir */
config->proto_redir_present = TRUE;
- if(proto2num(config, &config->proto_redir, nextarg))
+ if(proto2num(config, redir_protos, &config->proto_redir_str, nextarg))
return PARAM_BAD_USE;
break;
case 'F': /* --resolve */
@@ -1183,7 +1374,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
return err;
break;
case 'R': /* --expect100-timeout */
- err = str2udouble(&config->expect100timeout, nextarg, LONG_MAX/1000);
+ err = str2udouble(&config->expect100timeout, nextarg,
+ (double)LONG_MAX/1000);
if(err)
return err;
break;
@@ -1377,91 +1569,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
size_t size = 0;
bool raw_mode = (subletter == 'r');
- if(subletter == 'e') { /* --data-urlencode*/
- /* [name]=[content], we encode the content part only
- * [name]@[file name]
- *
- * Case 2: we first load the file using that name and then encode
- * the content.
- */
- const char *p = strchr(nextarg, '=');
- size_t nlen;
- char is_file;
- if(!p)
- /* there was no '=' letter, check for a '@' instead */
- p = strchr(nextarg, '@');
- if(p) {
- nlen = p - nextarg; /* length of the name part */
- is_file = *p++; /* pass the separator */
- }
- else {
- /* neither @ nor =, so no name and it isn't a file */
- nlen = is_file = 0;
- p = nextarg;
- }
- if('@' == is_file) {
- /* a '@' letter, it means that a file name or - (stdin) follows */
- if(!strcmp("-", p)) {
- file = stdin;
- set_binmode(stdin);
- }
- else {
- file = fopen(p, "rb");
- if(!file)
- warnf(global,
- "Couldn't read data from file \"%s\", this makes "
- "an empty POST.\n", nextarg);
- }
-
- err = file2memory(&postdata, &size, file);
-
- if(file && (file != stdin))
- fclose(file);
- if(err)
- return err;
- }
- else {
- GetStr(&postdata, p);
- if(postdata)
- size = strlen(postdata);
- }
-
- if(!postdata) {
- /* no data from the file, point to a zero byte string to make this
- get sent as a POST anyway */
- postdata = strdup("");
- if(!postdata)
- return PARAM_NO_MEM;
- size = 0;
- }
- else {
- char *enc = curl_easy_escape(NULL, postdata, (int)size);
- Curl_safefree(postdata); /* no matter if it worked or not */
- if(enc) {
- /* replace (in-place) '%20' by '+' according to RFC1866 */
- size_t enclen = replace_url_encoded_space_by_plus(enc);
- /* now make a string with the name from above and append the
- encoded string */
- size_t outlen = nlen + enclen + 2;
- char *n = malloc(outlen);
- if(!n) {
- curl_free(enc);
- return PARAM_NO_MEM;
- }
- if(nlen > 0) { /* only append '=' if we have a name */
- msnprintf(n, outlen, "%.*s=%s", nlen, nextarg, enc);
- size = outlen-1;
- }
- else {
- strcpy(n, enc);
- size = outlen-2; /* since no '=' was inserted */
- }
- curl_free(enc);
- postdata = n;
- }
- else
- return PARAM_NO_MEM;
- }
+ if(subletter == 'e') { /* --data-urlencode */
+ err = data_urlencode(global, nextarg, &postdata, &size);
+ if(err)
+ return err;
}
else if('@' == *nextarg && !raw_mode) {
/* the data begins with a '@' letter, it means that a file name
@@ -1480,7 +1591,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
"an empty POST.\n", nextarg);
}
- if(subletter == 'b')
+ if((subletter == 'b') || /* --data-binary */
+ (subletter == 'f') /* --json */)
/* forced binary */
err = file2memory(&postdata, &size, file);
else {
@@ -1507,16 +1619,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
if(postdata)
size = strlen(postdata);
}
-
-#ifdef CURL_DOES_CONVERSIONS
- if(subletter != 'b') {
- /* NOT forced binary, convert to ASCII */
- if(convert_to_network(postdata, strlen(postdata))) {
- Curl_safefree(postdata);
- return PARAM_NO_MEM;
- }
- }
-#endif
+ if(subletter == 'f')
+ config->jsoned = TRUE;
if(config->postfields) {
/* we already have a string, we append this one with a separating
@@ -1531,13 +1635,21 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
return PARAM_NO_MEM;
}
memcpy(config->postfields, oldpost, (size_t)oldlen);
- /* use byte value 0x26 for '&' to accommodate non-ASCII platforms */
- config->postfields[oldlen] = '\x26';
- memcpy(&config->postfields[oldlen + 1], postdata, size);
- config->postfields[oldlen + 1 + size] = '\0';
+ if(subletter != 'f') {
+ /* skip this treatment for --json */
+ /* use byte value 0x26 for '&' to accommodate non-ASCII platforms */
+ config->postfields[oldlen] = '\x26';
+ memcpy(&config->postfields[oldlen + 1], postdata, size);
+ config->postfields[oldlen + 1 + size] = '\0';
+ config->postfieldsize += size + 1;
+ }
+ else {
+ memcpy(&config->postfields[oldlen], postdata, size);
+ config->postfields[oldlen + size] = '\0';
+ config->postfieldsize += size;
+ }
Curl_safefree(oldpost);
Curl_safefree(postdata);
- config->postfieldsize += size + 1;
}
else {
config->postfields = postdata;
@@ -1576,6 +1688,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
case 'E':
switch(subletter) {
case '\0': /* certificate file */
+ cleanarg(clearthis);
GetFileAndPassword(nextarg, &config->cert, &config->key_passwd);
break;
case 'a': /* CA info PEM file */
@@ -1592,7 +1705,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
break;
case 'e': /* private key passphrase */
GetStr(&config->key_passwd, nextarg);
- cleanarg(nextarg);
+ cleanarg(clearthis);
break;
case 'f': /* crypto engine */
GetStr(&config->engine, nextarg);
@@ -1617,16 +1730,20 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
GetStr(&config->crlfile, nextarg);
break;
case 'k': /* TLS username */
- if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
- GetStr(&config->tls_username, nextarg);
- else
+ if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
+ cleanarg(clearthis);
return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ GetStr(&config->tls_username, nextarg);
+ cleanarg(clearthis);
break;
case 'l': /* TLS password */
- if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
- GetStr(&config->tls_password, nextarg);
- else
+ if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
+ cleanarg(clearthis);
return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ GetStr(&config->tls_password, nextarg);
+ cleanarg(clearthis);
break;
case 'm': /* TLS authentication type */
if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
@@ -1687,17 +1804,19 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
break;
case 'u': /* TLS username for proxy */
- if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
- GetStr(&config->proxy_tls_username, nextarg);
- else
+ cleanarg(clearthis);
+ if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ GetStr(&config->proxy_tls_username, nextarg);
break;
case 'v': /* TLS password for proxy */
- if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
- GetStr(&config->proxy_tls_password, nextarg);
- else
+ cleanarg(clearthis);
+ if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ GetStr(&config->proxy_tls_password, nextarg);
break;
case 'w': /* TLS authentication type for proxy */
@@ -1711,6 +1830,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
break;
case 'x': /* certificate file for proxy */
+ cleanarg(clearthis);
GetFileAndPassword(nextarg, &config->proxy_cert,
&config->proxy_key_passwd);
break;
@@ -1729,7 +1849,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
case '1': /* private key passphrase for proxy */
GetStr(&config->proxy_key_passwd, nextarg);
- cleanarg(nextarg);
+ cleanarg(clearthis);
break;
case '2': /* ciphers for proxy */
@@ -1812,7 +1932,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
case 'd': /* --fail-with-body */
config->failwithbody = toggle;
break;
- default: /* --fail (hard on errors) */
+ case 'e': /* --remove-on-error */
+ config->rm_partial = toggle;
+ break;
+ default: /* --fail (hard on errors) */
config->failonerror = toggle;
break;
}
@@ -1925,9 +2048,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
config->insecure_ok = toggle;
break;
case 'K': /* parse config file */
- if(parseconfig(nextarg, global))
- warnf(global, "error trying read config from the '%s' file\n",
- nextarg);
+ if(parseconfig(nextarg, global)) {
+ errorf(global, "cannot read config from '%s'\n", nextarg);
+ return PARAM_READ_ERROR;
+ }
break;
case 'l':
config->dirlistonly = toggle; /* only list the names of the FTP dir */
@@ -1944,19 +2068,17 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
break;
case 'm':
/* specified max time */
- err = str2udouble(&config->timeout, nextarg, LONG_MAX/1000);
+ err = str2udouble(&config->timeout, nextarg, (double)LONG_MAX/1000);
if(err)
return err;
break;
case 'M': /* M for manual, huge help */
if(toggle) { /* --no-manual shows no manual... */
-#ifdef USE_MANUAL
- return PARAM_MANUAL_REQUESTED;
-#else
+#ifndef USE_MANUAL
warnf(global,
"built-in manual was disabled at build-time!\n");
- return PARAM_OPTION_UNKNOWN;
#endif
+ return PARAM_MANUAL_REQUESTED;
}
break;
case 'n':
@@ -1977,10 +2099,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
case 'N':
/* disable the output I/O buffering. note that the option is called
--buffer but is mostly used in the negative form: --no-buffer */
- if(longopt)
- config->nobuffer = (!toggle)?TRUE:FALSE;
- else
- config->nobuffer = toggle;
+ config->nobuffer = longopt ? !toggle : TRUE;
break;
case 'O': /* --remote-name */
if(subletter == 'a') { /* --remote-name-all */
@@ -1991,6 +2110,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
GetStr(&config->output_dir, nextarg);
break;
}
+ else if(subletter == 'c') { /* --clobber / --no-clobber */
+ config->file_clobber_mode = toggle ? CLOBBER_ALWAYS : CLOBBER_NEVER;
+ break;
+ }
/* FALLTHROUGH */
case 'o': /* --output */
/* output file */
@@ -2019,6 +2142,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
/* fill in the outfile */
if('o' == letter) {
+ if(!*nextarg) {
+ warnf(global, "output file name has no length\n");
+ return PARAM_BAD_USE;
+ }
GetStr(&url->outfile, nextarg);
url->flags &= ~GETOUT_USEREMOTE; /* switch off */
}
@@ -2168,12 +2295,12 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
case 'u':
/* user:password */
GetStr(&config->userpwd, nextarg);
- cleanarg(nextarg);
+ cleanarg(clearthis);
break;
case 'U':
/* Proxy user:password */
GetStr(&config->proxyuserpwd, nextarg);
- cleanarg(nextarg);
+ cleanarg(clearthis);
break;
case 'v':
if(toggle) {
@@ -2265,8 +2392,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
err = str2unum(&global->parallel_max, nextarg);
if(err)
return err;
- if((global->parallel_max > MAX_PARALLEL) ||
- (global->parallel_max < 1))
+ if(global->parallel_max > MAX_PARALLEL)
+ global->parallel_max = MAX_PARALLEL;
+ else if(global->parallel_max < 1)
global->parallel_max = PARALLEL_DEFAULT;
break;
case 'c': /* --parallel-connect */
@@ -2345,11 +2473,18 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
following (URL) argument to start with -. */
stillflags = FALSE;
else {
- char *nextarg = (i < (argc - 1))
- ? curlx_convert_tchar_to_UTF8(argv[i + 1])
- : NULL;
+ char *nextarg = NULL;
+ if(i < (argc - 1)) {
+ nextarg = curlx_convert_tchar_to_UTF8(argv[i + 1]);
+ if(!nextarg) {
+ curlx_unicodefree(orig_opt);
+ return PARAM_NO_MEM;
+ }
+ }
+
+ result = getparameter(orig_opt, nextarg, &passarg,
+ global, config);
- result = getparameter(orig_opt, nextarg, &passarg, global, config);
curlx_unicodefree(nextarg);
config = global->last;
if(result == PARAM_NEXT_OPERATION) {
@@ -2386,8 +2521,7 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
bool used;
/* Just add the URL please */
- result = getparameter("--url", orig_opt, &used, global,
- config);
+ result = getparameter("--url", orig_opt, &used, global, config);
}
if(!result)
diff --git a/src/tool_getparam.h b/src/tool_getparam.h
index 599a0ac88..3eb177391 100644
--- a/src/tool_getparam.h
+++ b/src/tool_getparam.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -45,13 +47,15 @@ typedef enum {
PARAM_NO_NOT_BOOLEAN,
PARAM_CONTDISP_SHOW_HEADER, /* --include and --remote-header-name */
PARAM_CONTDISP_RESUME_FROM, /* --continue-at and --remote-header-name */
+ PARAM_READ_ERROR,
PARAM_LAST
} ParameterError;
struct GlobalConfig;
struct OperationConfig;
-ParameterError getparameter(const char *flag, char *nextarg, bool *usedarg,
+ParameterError getparameter(const char *flag, char *nextarg,
+ bool *usedarg,
struct GlobalConfig *global,
struct OperationConfig *operation);
diff --git a/src/tool_getpass.c b/src/tool_getpass.c
index 4c50a12d9..c959c5a52 100644
--- a/src/tool_getpass.c
+++ b/src/tool_getpass.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_getpass.h b/src/tool_getpass.h
index d4b35e7f3..01dc46401 100644
--- a/src/tool_getpass.h
+++ b/src/tool_getpass.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_help.c b/src/tool_help.c
index d49cccd05..65a1f43df 100644
--- a/src/tool_help.c
+++ b/src/tool_help.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,11 +18,10 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
-#if defined(HAVE_STRCASECMP) && defined(HAVE_STRINGS_H)
-#include <strings.h>
-#endif
#define ENABLE_CURLX_PRINTF
/* use our own printf() functions */
#include "curlx.h"
@@ -30,6 +29,7 @@
#include "tool_panykey.h"
#include "tool_help.h"
#include "tool_libinfo.h"
+#include "tool_util.h"
#include "tool_version.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -110,6 +110,7 @@ static const struct feat feats[] = {
{"alt-svc", CURL_VERSION_ALTSVC},
{"HSTS", CURL_VERSION_HSTS},
{"gsasl", CURL_VERSION_GSASL},
+ {"threadsafe", CURL_VERSION_THREADSAFE},
};
static void print_category(curlhelp_t category)
@@ -187,20 +188,6 @@ void tool_help(char *category)
free(category);
}
-static int
-featcomp(const void *p1, const void *p2)
-{
- /* The arguments to this function are "pointers to pointers to char", but
- the comparison arguments are "pointers to char", hence the following cast
- plus dereference */
-#ifdef HAVE_STRCASECMP
- return strcasecmp(* (char * const *) p1, * (char * const *) p2);
-#elif defined(HAVE_STRCMPI)
- return strcmpi(* (char * const *) p1, * (char * const *) p2);
-#else
- return strcmp(* (char * const *) p1, * (char * const *) p2);
-#endif
-}
void tool_version_info(void)
{
@@ -216,7 +203,10 @@ void tool_version_info(void)
if(curlinfo->protocols) {
printf("Protocols: ");
for(proto = curlinfo->protocols; *proto; ++proto) {
- printf("%s ", *proto);
+ /* Special case: do not list rtmp?* protocols.
+ They may only appear together with "rtmp" */
+ if(!curl_strnequal(*proto, "rtmp", 4) || !proto[0][4])
+ printf("%s ", *proto);
}
puts(""); /* newline */
}
@@ -229,7 +219,7 @@ void tool_version_info(void)
if(curlinfo->features & feats[i].bitmask)
featp[numfeat++] = (char *)feats[i].name;
}
- qsort(&featp[0], numfeat, sizeof(char *), featcomp);
+ qsort(&featp[0], numfeat, sizeof(char *), struplocompare4sort);
for(i = 0; i< numfeat; i++)
printf(" %s", featp[i]);
puts(""); /* newline */
diff --git a/src/tool_help.h b/src/tool_help.h
index 143466286..6fe244e2c 100644
--- a/src/tool_help.h
+++ b/src/tool_help.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_helpers.c b/src/tool_helpers.c
index 9244d1fb5..3b2fe9d15 100644
--- a/src/tool_helpers.c
+++ b/src/tool_helpers.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -72,6 +74,8 @@ const char *param2text(int res)
return "showing headers and --remote-header-name cannot be combined";
case PARAM_CONTDISP_RESUME_FROM:
return "--continue-at and --remote-header-name cannot be combined";
+ case PARAM_READ_ERROR:
+ return "error encountered when reading a file";
default:
return "unknown error";
}
@@ -85,7 +89,8 @@ int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
"GET (-G, --get)",
"HEAD (-I, --head)",
"multipart formpost (-F, --form)",
- "POST (-d, --data)"
+ "POST (-d, --data)",
+ "PUT (-T, --upload-file)"
};
if((*store == HTTPREQ_UNSPEC) ||
@@ -109,7 +114,8 @@ void customrequest_helper(struct OperationConfig *config, HttpReq req,
"GET",
"HEAD",
"POST",
- "POST"
+ "POST",
+ "PUT"
};
if(!method)
diff --git a/src/tool_helpers.h b/src/tool_helpers.h
index c5e577313..cdc84106c 100644
--- a/src/tool_helpers.h
+++ b/src/tool_helpers.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_hugehelp.c b/src/tool_hugehelp.c
index 9e7207dde..b1c2113dd 100644
--- a/src/tool_hugehelp.c
+++ b/src/tool_hugehelp.c
@@ -26,8 +26,8 @@ void hugehelp(void)
, stdout);
fputs(
" IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP,\n"
-" SFTP, SMB, SMBS, SMTP, SMTPS, TELNET or TFTP. The command is designed\n"
-" to work without user interaction.\n"
+" SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. The command is\n"
+" designed to work without 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"
@@ -114,9 +114,9 @@ void hugehelp(void)
, stdout);
fputs(
" be instructed to instead save that data into a local file, using the\n"
-" -o, --output or -O, --remote-name options. If curl is given multiple\n"
-" URLs to transfer on the command line, it similarly needs multiple op-\n"
-" tions for where to save them.\n"
+" --output or --remote-name options. If curl is given multiple URLs to\n"
+" transfer on the command line, it similarly needs multiple options for\n"
+" where to save them.\n"
"\n"
" curl does not parse or otherwise \"understand\" the content it gets or\n"
" writes as output. It does no encoding or decoding, unless explicitly\n"
@@ -207,17 +207,17 @@ void hugehelp(void)
" mixing progress meter and response data.\n"
"\n"
" If you want a progress meter for HTTP POST or PUT requests, you need to\n"
-" redirect the response output to a file, using shell redirect (>), -o,\n"
+" redirect the response output to a file, using shell redirect (>),\n"
" --output or similar.\n"
"\n"
" This does not apply to FTP upload as that operation does not spit out\n"
" any response data to the terminal.\n"
"\n"
-" If you prefer a progress \"bar\" instead of the regular meter, -#,\n"
+" If you prefer a progress \"bar\" instead of the regular meter,\n"
, stdout);
fputs(
" --progress-bar is your friend. You can also disable the progress meter\n"
-" completely with the -s, --silent option.\n"
+" completely with the --silent option.\n"
"\n"
"OPTIONS\n"
" Options start with one or two dashes. Many of the options require an\n"
@@ -225,10 +225,10 @@ void hugehelp(void)
"\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, -d, --data for\n"
+" is a recommended separator. The long \"double-dash\" form, --data for ex-\n"
, stdout);
fputs(
-" example, requires a space between it and its value.\n"
+" ample, requires a space between it and its value.\n"
"\n"
" Short version options that do not need any additional values can be\n"
" used immediately next to each other, like for example you can specify\n"
@@ -247,73 +247,85 @@ void hugehelp(void)
" stract socket prefixed with '@', however the <path> argument\n"
" should not have this leading character.\n"
"\n"
-" Example:\n"
, stdout);
fputs(
+" If --abstract-unix-socket is provided several times, the last\n"
+" set value will be used.\n"
+"\n"
+" Example:\n"
" curl --abstract-unix-socket socketpath https://example.com\n"
"\n"
" See also --unix-socket. Added in 7.53.0.\n"
"\n"
" --alt-svc <file name>\n"
-" (HTTPS) This option enables the alt-svc parser in curl. If the\n"
+" (HTTPS) This option enables the alt-svc parser in curl. If the\n"
" file name points to an existing alt-svc cache file, that will be\n"
+, stdout);
+ fputs(
" used. After a completed transfer, the cache will be saved to the\n"
" file name again if it has been modified.\n"
"\n"
-, stdout);
- fputs(
" Specify a \"\" file name (zero length) to avoid loading/saving and\n"
" make curl just handle the cache in memory.\n"
"\n"
-" If this option is used several times, curl will load contents\n"
+" If this option is used several times, curl will load contents\n"
" from all the files but the last one will be used for saving.\n"
"\n"
+" --alt-svc can be used several times in a command line\n"
+"\n"
+, stdout);
+ fputs(
" Example:\n"
" curl --alt-svc svc.txt https://example.com\n"
"\n"
" See also --resolve and --connect-to. Added in 7.64.1.\n"
"\n"
" --anyauth\n"
-, stdout);
- fputs(
" (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"
-" 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"
+" headers, thus possibly inducing an extra network round-trip.\n"
, stdout);
fputs(
+" This is used instead of setting a specific authentication\n"
+" method, which you can do with --basic, --digest, --ntlm, and\n"
" --negotiate.\n"
"\n"
" Using --anyauth is not recommended if you do uploads from stdin,\n"
-" since it may require data to be sent twice and then the client\n"
-" must be able to rewind. If the need should arise when uploading\n"
+" since it may require data to be sent twice and then the client\n"
+" must be able to rewind. If the need should arise when uploading\n"
" from stdin, the upload operation will fail.\n"
"\n"
+, stdout);
+ fputs(
" Used together with -u, --user.\n"
"\n"
+" Providing --anyauth multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --anyauth --user me:pwd https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --proxy-anyauth, --basic and --digest.\n"
"\n"
" -a, --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 does\n"
+" target file instead of overwriting it. If the remote file does\n"
+, stdout);
+ fputs(
" not exist, it will be created. Note that this flag is ignored by\n"
" some SFTP servers (including OpenSSH).\n"
"\n"
+" Providing --append multiple times has no extra effect. Disable\n"
+" it again with --no-append.\n"
+"\n"
" Example:\n"
" curl --upload-file local --append ftp://example.com/\n"
"\n"
-, stdout);
- fputs(
" See also -r, --range and -C, --continue-at.\n"
"\n"
" --aws-sigv4 <provider1[:provider2[:region[:service]]]>\n"
+, stdout);
+ fputs(
" Use AWS V4 signature authentication in the transfer.\n"
"\n"
" The provider argument is a string that is used by the algorithm\n"
@@ -321,30 +333,35 @@ void hugehelp(void)
"\n"
" The region argument is a string that points to a geographic area\n"
" of a resources collection (region-code) when the region name is\n"
-, stdout);
- fputs(
" omitted from the endpoint.\n"
"\n"
" The service argument is a string that points to a function pro-\n"
+, stdout);
+ fputs(
" vided by a cloud (service-code) when the service name is omitted\n"
" from the endpoint.\n"
"\n"
+" If --aws-sigv4 is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --aws-sigv4 \"aws:amz:east-2:es\" --user \"key:secret\" https://example.com\n"
"\n"
" See also --basic and -u, --user. Added in 7.75.0.\n"
"\n"
" --basic\n"
+" (HTTP) Tells curl to use HTTP Basic authentication with the re-\n"
, stdout);
fputs(
-" (HTTP) Tells curl to use HTTP Basic authentication with the re-\n"
" mote host. This is the default and this option is usually point-\n"
" less, unless you use it to override a previously set option that\n"
-" sets a different authentication method (such as --ntlm, --di-\n"
+" sets a different authentication method (such as --ntlm, --di-\n"
" gest, or --negotiate).\n"
"\n"
" Used together with -u, --user.\n"
"\n"
+" Providing --basic multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl -u name:password --basic https://example.com\n"
"\n"
@@ -354,47 +371,47 @@ void hugehelp(void)
"\n"
" --cacert <file>\n"
" (TLS) Tells curl to use the specified certificate file to verify\n"
-" the peer. The file may contain multiple CA certificates. The\n"
-" certificate(s) must be in PEM format. Normally curl is built to\n"
+" the peer. The file may contain multiple CA certificates. The\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"
-" curl recognizes the environment variable named 'CURL_CA_BUNDLE'\n"
+" curl recognizes the environment variable named 'CURL_CA_BUNDLE'\n"
, stdout);
fputs(
-" if it is set, and uses the given path as a path to a CA cert\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"
+" The windows version of curl will automatically look for a CA\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"
-" If curl is built against the NSS SSL library, the NSS PEM\n"
+" If curl is built against the NSS SSL library, the NSS PEM\n"
, stdout);
fputs(
" PKCS#11 module (libnsspem.so) needs to be available for this op-\n"
" tion to work properly.\n"
"\n"
-" (iOS and macOS only) If curl is built against Secure Transport,\n"
-" then this option is supported for backward compatibility with\n"
-" other SSL engines, but it should not be set. If the option is\n"
-" not set, then curl will use the certificates in the system and\n"
+" (iOS and macOS only) If curl is built against Secure Transport,\n"
+" then this option is supported for backward compatibility with\n"
+" other SSL engines, but it should not be set. If the option is\n"
+" not set, then curl will use the certificates in the system and\n"
, stdout);
fputs(
-" user Keychain to verify the peer, which is the preferred method\n"
+" user Keychain to verify the peer, which is the preferred method\n"
" of verifying the peer's certificate chain.\n"
"\n"
" (Schannel only) This option is supported for Schannel in Windows\n"
-" 7 or later with libcurl 7.60 or later. This option is supported\n"
+" 7 or later with libcurl 7.60 or later. This option is supported\n"
" for backward compatibility with other SSL engines; instead it is\n"
-" recommended to use Windows' store of root certificates (the de-\n"
+" recommended to use Windows' store of root certificates (the de-\n"
" fault for Schannel).\n"
"\n"
, stdout);
fputs(
-" If this option is used several times, the last one will be used.\n"
-"\n"
+" If --cacert is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --cacert CA-file.txt https://example.com\n"
"\n"
@@ -412,11 +429,11 @@ void hugehelp(void)
" curl to make SSL-connections much more efficiently than using\n"
" --cacert if the --cacert file contains many CA certificates.\n"
"\n"
-" If this option is set, the default capath value will be ignored,\n"
+" If this option is set, the default capath value will be ignored.\n"
, stdout);
fputs(
-" and if it is used several times, the last one will be used.\n"
-"\n"
+" If --capath is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --capath /local/directory https://example.com\n"
"\n"
@@ -437,54 +454,66 @@ void hugehelp(void)
" This is currently only implemented in the OpenSSL, GnuTLS and\n"
" NSS backends.\n"
"\n"
+" Providing --cert-status multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+" Disable it again with --no-cert-status.\n"
+"\n"
" Example:\n"
" curl --cert-status https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --pinnedpubkey. Added in 7.41.0.\n"
"\n"
" --cert-type <type>\n"
-" (TLS) Tells curl what type the provided client certificate is\n"
-" using. PEM, DER, ENG and P12 are recognized types. If not speci-\n"
-" fied, PEM is assumed.\n"
+" (TLS) Tells curl what type the provided client certificate is\n"
+" using. PEM, DER, ENG and P12 are recognized types.\n"
+"\n"
+" The default type depends on the TLS backend and is usually PEM,\n"
+, stdout);
+ fputs(
+" however for Secure Transport and Schannel it is P12. If --cert\n"
+" is a pkcs11: URI then ENG is the default type.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --cert-type is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --cert-type PEM --cert file https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also -E, --cert, --key and --key-type.\n"
"\n"
" -E, --cert <certificate[:password]>\n"
-" (TLS) Tells curl to use the specified client certificate file\n"
+, stdout);
+ fputs(
+" (TLS) 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 PKCS#12 format if using Secure\n"
-" Transport, or PEM format if using any other engine. If the op-\n"
-" tional password is not specified, it will be queried for on the\n"
+" col. The certificate must be in PKCS#12 format if using Secure\n"
+" Transport, or PEM format if using any other engine. If the op-\n"
+" tional password is not specified, it will be queried for on the\n"
+" terminal. Note that this option assumes a certificate file that\n"
, stdout);
fputs(
-" terminal. Note that this option assumes a \"certificate\" file\n"
-" that is the private key and the client certificate concatenated!\n"
-" See -E, --cert and --key to specify them independently.\n"
+" is the private key and the client certificate concatenated. See\n"
+" --cert and --key to specify them independently.\n"
+"\n"
+" In the <certificate> portion of the argument, you must escape\n"
+" the character \":\" as \"\\:\" so that it is not recognized as the\n"
+" password delimiter. Similarly, you must escape the character \"\\\"\n"
+" as \"\\\\\" so that it is not recognized as an escape character.\n"
"\n"
+, stdout);
+ fputs(
" 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"
-, 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"
-" 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 nickname\n"
+" nsspem.so) is available then PEM files may be loaded.\n"
+"\n"
+" If you provide a path relative to the current directory, you\n"
, stdout);
fputs(
-" contains \"\\\", it needs to be escaped as \"\\\\\" so that it is not\n"
-" recognized as an escape character.\n"
+" must prefix the path with \"./\" in order to avoid confusion with\n"
+" an NSS database nickname.\n"
"\n"
" If curl is built against OpenSSL library, and the engine pkcs11\n"
" is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
@@ -520,7 +549,8 @@ void hugehelp(void)
fputs(
" LocalMachineGroupPolicy, LocalMachineEnterprise.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --cert is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
" curl --cert certfile --key keyfile https://example.com\n"
@@ -529,41 +559,49 @@ void hugehelp(void)
"\n"
" --ciphers <list of ciphers>\n"
" (TLS) Specifies which ciphers to use in the connection. The list\n"
-" of ciphers must specify valid ciphers. Read up on SSL cipher\n"
, stdout);
fputs(
+" of ciphers must specify valid ciphers. Read up on SSL cipher\n"
" list details on this URL:\n"
"\n"
" https://curl.se/docs/ssl-ciphers.html\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
-"\n"
+" If --ciphers is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --ciphers ECDHE-ECDSA-AES256-CCM8 https://example.com\n"
"\n"
" See also --tlsv1.3.\n"
"\n"
" --compressed-ssh\n"
+, stdout);
+ fputs(
" (SCP SFTP) Enables built-in SSH compression. This is a request,\n"
" not an order; the server may or may not do it.\n"
"\n"
+" Providing --compressed-ssh multiple times has no extra effect.\n"
+" Disable it again with --no-compressed-ssh.\n"
+"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --compressed-ssh sftp://example.com/\n"
"\n"
" See also --compressed. Added in 7.56.0.\n"
"\n"
" --compressed\n"
+, stdout);
+ fputs(
" (HTTP) Request a compressed response using one of the algorithms\n"
" curl supports, and automatically decompress the content. Headers\n"
" are not modified.\n"
"\n"
-" If this option is used and the server sends an unsupported en-\n"
+" If this option is used and the server sends an unsupported en-\n"
" coding, curl will report an error. This is a request, not an or-\n"
+" der; the server may or may not deliver data compressed.\n"
+"\n"
+" Providing --compressed multiple times has no extra effect. Dis-\n"
, stdout);
fputs(
-" der; the server may or may not deliver data compressed.\n"
+" able it again with --no-compressed.\n"
"\n"
" Example:\n"
" curl --compressed https://example.com\n"
@@ -575,18 +613,18 @@ void hugehelp(void)
" line arguments found in the text file will be used as if they\n"
" were provided on the command line.\n"
"\n"
+" Options and their parameters must be specified on the same line\n"
, stdout);
fputs(
-" Options and their parameters must be specified on the same line\n"
" in the file, separated by whitespace, colon, or the equals sign.\n"
" Long option names can optionally be given in the config file\n"
" without the initial double dashes and if so, the colon or equals\n"
" characters can be used as separators. If the option is specified\n"
" with one or two dashes, there can be no colon or equals charac-\n"
-, stdout);
- fputs(
" ter between the option and its parameter.\n"
"\n"
+, stdout);
+ fputs(
" If the parameter contains whitespace (or starts with : or =),\n"
" the parameter must be enclosed within quotes. Within double\n"
" quotes, the following escape sequences are available: \\\\, \\\",\n"
@@ -594,24 +632,24 @@ void hugehelp(void)
" nored.\n"
"\n"
" If the first column of a config line is a '#' character, the\n"
-, stdout);
- fputs(
" rest of the line will be treated as a comment.\n"
"\n"
+, stdout);
+ fputs(
" Only write one option per physical line in the config file.\n"
"\n"
-" Specify the filename to -K, --config as '-' to make curl read\n"
-" the file from stdin.\n"
+" Specify the filename to --config as '-' to make curl read the\n"
+" file from stdin.\n"
"\n"
" 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"
-, stdout);
- fputs(
" this:\n"
"\n"
" url = \"https://curl.se/docs/\"\n"
"\n"
+, stdout);
+ fputs(
" # --- Example file ---\n"
" # this is a comment\n"
" url = \"example.com\"\n"
@@ -624,12 +662,12 @@ void hugehelp(void)
" referer = \"http://nowhereatall.example.com/\"\n"
" # --- End of example file ---\n"
"\n"
+" When curl is invoked, it (unless --disable is used) checks for a\n"
, stdout);
fputs(
-" When curl is invoked, it (unless -q, --disable is used) checks\n"
-" for a default config file and uses it if found, even when -K,\n"
-" --config is used. The default config file is checked for in the\n"
-" following places in this order:\n"
+" default config file and uses it if found, even when --config is\n"
+" used. The default config file is checked for in the following\n"
+" places in this order:\n"
"\n"
" 1) \"$CURL_HOME/.curlrc\"\n"
"\n"
@@ -639,36 +677,40 @@ void hugehelp(void)
"\n"
" 4) Windows: \"%USERPROFILE%\\.curlrc\"\n"
"\n"
-, stdout);
- fputs(
" 5) Windows: \"%APPDATA%\\.curlrc\"\n"
"\n"
" 6) Windows: \"%USERPROFILE%\\Application Data\\.curlrc\"\n"
"\n"
-" 7) Non-windows: use getpwuid to find the home directory\n"
+, stdout);
+ fputs(
+" 7) Non-Windows: use getpwuid to find the home directory\n"
"\n"
-" 8) On windows, if it finds no .curlrc file in the sequence de-\n"
+" 8) On Windows, if it finds no .curlrc file in the sequence de-\n"
" scribed above, it checks for one in the same dir the curl exe-\n"
" cutable is placed.\n"
"\n"
-" This option can be used multiple times to load multiple config\n"
-" files.\n"
+" On Windows two filenames are checked per location: .curlrc and\n"
+" _curlrc, preferring the former. Older versions on Windows\n"
+" checked for _curlrc only.\n"
"\n"
, stdout);
fputs(
+" --config can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl --config file.txt https://example.com\n"
"\n"
" See also -q, --disable.\n"
"\n"
" --connect-timeout <fractional seconds>\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"
+" 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"
, stdout);
fputs(
-" If this option is used several times, the last one will be used.\n"
+" exit. Since version 7.32.0, this option accepts decimal values.\n"
+" If --connect-timeout is provided several times, the last set\n"
+" value will be used.\n"
"\n"
" Examples:\n"
" curl --connect-timeout 20 https://example.com\n"
@@ -678,41 +720,41 @@ void hugehelp(void)
"\n"
" --connect-to <HOST1:PORT1:HOST2:PORT2>\n"
"\n"
-" For a request to the given HOST1:PORT1 pair, connect to\n"
-" HOST2:PORT2 instead. This option is suitable to direct requests\n"
, stdout);
fputs(
+" For a request to the given HOST1:PORT1 pair, connect to\n"
+" HOST2:PORT2 instead. This option is suitable to direct requests\n"
" at a specific server, e.g. at a specific cluster node in a clus-\n"
" ter of servers. This option is only used to establish the net-\n"
" work connection. It does NOT affect the hostname/port that is\n"
" used for TLS/SSL (e.g. SNI, certificate verification) or for the\n"
-" application protocols. \"HOST1\" and \"PORT1\" may be the empty\n"
-" string, meaning \"any host/port\". \"HOST2\" and \"PORT2\" may also be\n"
, stdout);
fputs(
+" application protocols. \"HOST1\" and \"PORT1\" may be the empty\n"
+" string, meaning \"any host/port\". \"HOST2\" and \"PORT2\" may also be\n"
" the empty string, meaning \"use the request's original\n"
" host/port\".\n"
"\n"
" A \"host\" specified to this option is compared as a string, so it\n"
" needs to match the name used in request URL. It can be either\n"
+, stdout);
+ fputs(
" numerical such as \"127.0.0.1\" or the full host name such as \"ex-\n"
" ample.org\".\n"
"\n"
-" This option can be used many times to add many connect rules.\n"
+" --connect-to can be used several times in a command line\n"
"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --connect-to example.com:443:example.net:8443 https://example.com\n"
"\n"
" See also --resolve and -H, --header. Added in 7.49.0.\n"
"\n"
" -C, --continue-at <offset>\n"
" Continue/Resume a previous file transfer at the given offset.\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"
, 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"
" FTP server command SIZE will not be used by curl.\n"
"\n"
@@ -720,91 +762,97 @@ void hugehelp(void)
" resume the transfer. It then uses the given output/input files\n"
" to figure that out.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+" If --continue-at is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Examples:\n"
" curl -C - https://example.com\n"
-, stdout);
- fputs(
" curl -C 400 https://example.com\n"
"\n"
" See also -r, --range.\n"
"\n"
" -c, --cookie-jar <filename>\n"
-" (HTTP) Specify to which file you want curl to write all cookies\n"
-" after a completed operation. Curl writes all cookies from its\n"
-" in-memory cookie storage to the given file at the end of opera-\n"
-" tions. If no cookies are known, no data will be written. The\n"
+" (HTTP) Specify to which file you want curl to write all cookies\n"
+" after a completed operation. Curl writes all cookies from its\n"
, stdout);
fputs(
-" file will be written using the Netscape cookie file format. If\n"
+" in-memory cookie storage to the given file at the end of opera-\n"
+" tions. If no cookies are known, no data will be written. The\n"
+" file will be written using the Netscape cookie file format. If\n"
" you set the file name to a single dash, \"-\", the cookies will be\n"
" written to stdout.\n"
"\n"
-" This command line option will activate the cookie engine that\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"
+" to use the --cookie option.\n"
+"\n"
+" If the cookie jar cannot be created or written to, the whole\n"
+" curl operation will not fail or even report an error clearly.\n"
+" Using --verbose will get a warning displayed, but that is the\n"
+" only visible feedback you get about this possibly lethal situa-\n"
+" tion.\n"
"\n"
-" If the cookie jar cannot be created or written to, the whole\n"
, stdout);
fputs(
-" curl operation will not fail or even report an error clearly.\n"
-" Using -v, --verbose will get a warning displayed, but that is\n"
-" the only visible feedback you get about this possibly lethal\n"
-" situation.\n"
-"\n"
-" If this option is used several times, the last specified file\n"
-" name will be used.\n"
+" If --cookie-jar is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Examples:\n"
" curl -c store-here.txt https://example.com\n"
-, stdout);
- fputs(
" curl -c store-here.txt -b read-these https://example.com\n"
"\n"
" See also -b, --cookie.\n"
"\n"
" -b, --cookie <data|filename>\n"
" (HTTP) Pass the data to the HTTP server in the Cookie header. It\n"
-" is supposedly the data previously received from the server in a\n"
-" \"Set-Cookie:\" line. The data should be in the format\n"
-" \"NAME1=VALUE1; NAME2=VALUE2\".\n"
-"\n"
+" is supposedly the data previously received from the server in a\n"
, stdout);
fputs(
+" \"Set-Cookie:\" line. The data should be in the format\n"
+" \"NAME1=VALUE1; NAME2=VALUE2\". This makes curl use the cookie\n"
+" header with this content explicitly in all outgoing request(s).\n"
+" If multiple requests are done due to authentication, followed\n"
+" redirects or similar, they will all get this cookie passed on.\n"
+"\n"
" If no '=' symbol is used in the argument, it is instead treated\n"
+, stdout);
+ fputs(
" as a filename to read previously stored cookie from. This option\n"
" also activates the cookie engine which will make curl record in-\n"
" coming cookies, which may be handy if you are using this in com-\n"
-" bination with the -L, --location option or do multiple URL\n"
-" transfers on the same invoke. If the file name is exactly a mi-\n"
+" bination with the --location option or do multiple URL transfers\n"
+" on the same invoke. If the file name is exactly a minus (\"-\"),\n"
+" curl will instead read the contents from stdin.\n"
+"\n"
, stdout);
fputs(
-" nus (\"-\"), curl will instead read the contents from stdin.\n"
-"\n"
" The file format of the file to read cookies from should be plain\n"
" HTTP headers (Set-Cookie style) or the Netscape/Mozilla cookie\n"
" file format.\n"
"\n"
-" 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"
+" The file specified with --cookie is only used as input. No cook-\n"
+" ies will be written to the file. To store cookies, use the\n"
+" --cookie-jar option.\n"
"\n"
+" If you use the Set-Cookie file format and do not specify a do-\n"
, stdout);
fputs(
-" If you use the Set-Cookie file format and do not specify a do-\n"
" main then the cookie is not sent since the domain will never\n"
" match. To address this, set a domain in Set-Cookie line (doing\n"
" that will include sub-domains) or preferably: use the Netscape\n"
" format.\n"
"\n"
-" This option can be used multiple times.\n"
-"\n"
" Users often want to both read cookies from a file and write up-\n"
+" dated cookies back to a file, so using both --cookie and\n"
+" --cookie-jar in the same command line is common.\n"
+"\n"
, stdout);
fputs(
-" dated cookies back to a file, so using both -b, --cookie and -c,\n"
-" --cookie-jar in the same command line is common.\n"
+" --cookie can be used several times in a command line\n"
"\n"
" Examples:\n"
" curl -b cookiefile https://example.com\n"
@@ -813,21 +861,24 @@ void hugehelp(void)
" See also -c, --cookie-jar and -j, --junk-session-cookies.\n"
"\n"
" --create-dirs\n"
-" When used in conjunction with the -o, --output option, curl will\n"
+" When used in conjunction with the --output option, curl will\n"
+" create the necessary local directory hierarchy as needed. This\n"
, stdout);
fputs(
-" create the necessary local directory hierarchy as needed. This\n"
-" option creates the directories mentioned with the -o, --output\n"
-" option, nothing else. If the --output file name uses no direc-\n"
-" tory, or if the directories it mentions already exist, no direc-\n"
-" tories will be created.\n"
+" option creates the directories mentioned with the --output op-\n"
+" tion, nothing else. If the --output file name uses no directory,\n"
+" or if the directories it mentions already exist, no directories\n"
+" will be created.\n"
"\n"
" Created dirs are made with mode 0750 on unix style file systems.\n"
-, stdout);
- fputs(
" To create remote directories when using FTP or SFTP, try --ftp-\n"
" create-dirs.\n"
"\n"
+, stdout);
+ fputs(
+" Providing --create-dirs multiple times has no extra effect.\n"
+" Disable it again with --no-create-dirs.\n"
+"\n"
" Example:\n"
" curl --create-dirs --output local/dir/file https://example.com\n"
"\n"
@@ -835,7 +886,7 @@ void hugehelp(void)
"\n"
" --create-file-mode <mode>\n"
" (SFTP SCP FILE) When curl is used to create files remotely using\n"
-" one of the supported protocols, this option allows the user to\n"
+" one of the supported protocols, this option allows the user to\n"
, stdout);
fputs(
" set which 'mode' to set on the file at creation time, instead of\n"
@@ -843,20 +894,24 @@ void hugehelp(void)
"\n"
" This option takes an octal number as argument.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --create-file-mode is provided several times, the last set\n"
+" value will be used.\n"
"\n"
" Example:\n"
" curl --create-file-mode 0777 -T localfile sftp://example.com/new\n"
"\n"
" See also --ftp-create-dirs. Added in 7.75.0.\n"
"\n"
-" --crlf (FTP SMTP) Convert LF to CRLF in upload. Useful for MVS\n"
, stdout);
fputs(
+" --crlf (FTP SMTP) Convert LF to CRLF in upload. Useful for MVS\n"
" (OS/390).\n"
"\n"
" (SMTP added in 7.40.0)\n"
"\n"
+" Providing --crlf multiple times has no extra effect. Disable it\n"
+" again with --no-crlf.\n"
+"\n"
" Example:\n"
" curl --crlf -T file ftp://example.com/\n"
"\n"
@@ -864,71 +919,79 @@ void hugehelp(void)
"\n"
" --crlfile <file>\n"
" (TLS) Provide a file using PEM format with a Certificate Revoca-\n"
+, stdout);
+ fputs(
" tion List that may specify peer certificates that are to be con-\n"
" sidered revoked.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
-"\n"
+" If --crlfile is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
-, stdout);
- fputs(
" curl --crlfile rejects.txt https://example.com\n"
"\n"
" See also --cacert and --capath.\n"
"\n"
" --curves <algorithm list>\n"
" (TLS) Tells curl to request specific curves to use during SSL\n"
+, stdout);
+ fputs(
" session establishment according to RFC 8422, 5.1. Multiple al-\n"
" gorithms can be provided by separating them with \":\" (e.g.\n"
" \"X25519:P-521\"). The parameter is available identically in the\n"
-, stdout);
- fputs(
" \"openssl s_client/s_server\" utilities.\n"
"\n"
" --curves allows a OpenSSL powered curl to make SSL-connections\n"
" with exactly the (EC) curve requested by the client, avoiding\n"
+, stdout);
+ fputs(
" nontransparent client/server negotiations.\n"
"\n"
" If this option is set, the default curves list built into\n"
" openssl will be ignored.\n"
"\n"
+" If --curves is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --curves X25519 https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --ciphers. Added in 7.73.0.\n"
"\n"
" --data-ascii <data>\n"
" (HTTP) This is just an alias for -d, --data.\n"
"\n"
+, stdout);
+ fputs(
+" --data-ascii can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl --data-ascii @file https://example.com\n"
"\n"
" See also --data-binary, --data-raw and --data-urlencode.\n"
"\n"
" --data-binary <data>\n"
-" (HTTP) This posts data exactly as specified with no extra pro-\n"
+" (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"
, stdout);
fputs(
-" If you start the data with the letter @, the rest should be a\n"
-" filename. Data is posted in a similar manner as -d, --data does,\n"
-" except that newlines and carriage returns are preserved and con-\n"
+" filename. Data is posted in a similar manner as --data does, ex-\n"
+" cept that newlines and carriage returns are preserved and con-\n"
" versions are never done.\n"
"\n"
-" Like -d, --data the default content-type sent to the server is\n"
-" application/x-www-form-urlencoded. If you want the data to be\n"
+" Like --data the default content-type sent to the server is ap-\n"
+" plication/x-www-form-urlencoded. If you want the data to be\n"
+" treated as arbitrary binary data by the server then set the con-\n"
, stdout);
fputs(
-" treated as arbitrary binary data by the server then set the con-\n"
-" tent-type to octet-stream: -H \"Content-Type: application/octet-\n"
+" tent-type to octet-stream: -H \"Content-Type: application/octet-\n"
" stream\".\n"
"\n"
-" If this option is used several times, the ones following the\n"
+" If this option is used several times, the ones following the\n"
" first will append data as described in -d, --data.\n"
"\n"
+" --data-binary can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl --data-binary @filename https://example.com\n"
"\n"
@@ -937,8 +1000,10 @@ void hugehelp(void)
" --data-raw <data>\n"
, stdout);
fputs(
-" (HTTP) This posts data similarly to -d, --data but without the\n"
-" special interpretation of the @ character.\n"
+" (HTTP) This posts data similarly to --data but without the spe-\n"
+" cial interpretation of the @ character.\n"
+"\n"
+" --data-raw can be used several times in a command line\n"
"\n"
" Examples:\n"
" curl --data-raw \"hello\" https://example.com\n"
@@ -947,120 +1012,125 @@ void hugehelp(void)
" See also -d, --data. Added in 7.43.0.\n"
"\n"
" --data-urlencode <data>\n"
-" (HTTP) This posts data, similar to the other -d, --data options\n"
, stdout);
fputs(
-" with the exception that this performs URL-encoding.\n"
+" (HTTP) This posts data, similar to the other --data options with\n"
+" the exception that this performs URL-encoding.\n"
"\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"
+" 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"
-" on. Just be careful so that the content does not contain\n"
+" This will make curl URL-encode the content and pass that\n"
, stdout);
fputs(
-" any = or @ symbols, as that will then make the syntax\n"
+" on. Just be careful so that the content does not contain\n"
+" any = or @ symbols, as that will then make the syntax\n"
" match one of the other cases below!\n"
"\n"
" =content\n"
-" This will make curl URL-encode the content and pass that\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"
-" This will make curl URL-encode the content part and pass\n"
, stdout);
fputs(
-" that on. Note that the name part is expected to be URL-\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"
"\n"
" @filename\n"
-" This will make curl load data from the given file (in-\n"
-" cluding any newlines), URL-encode that data and pass it\n"
+" This will make curl load data from the given file (in-\n"
+" cluding any newlines), URL-encode that data and pass it\n"
" on in the POST.\n"
"\n"
" name@filename\n"
-" This will make curl load data from the given file (in-\n"
, stdout);
fputs(
-" cluding any newlines), URL-encode that data and pass it\n"
-" on in the POST. The name part gets an equal sign ap-\n"
-" pended, resulting in name=urlencoded-file-content. Note\n"
+" This will make curl load data from the given file (in-\n"
+" cluding any newlines), URL-encode that data and pass it\n"
+" on in the POST. The name part gets an equal sign ap-\n"
+" pended, resulting in name=urlencoded-file-content. Note\n"
" that the name is expected to be URL-encoded already.\n"
"\n"
+" --data-urlencode can be used several times in a command line\n"
+"\n"
" Examples:\n"
-" curl --data-urlencode name=val https://example.com\n"
-" curl --data-urlencode =encodethis https://example.com\n"
, stdout);
fputs(
+" curl --data-urlencode name=val https://example.com\n"
+" curl --data-urlencode =encodethis https://example.com\n"
" curl --data-urlencode name@file https://example.com\n"
" curl --data-urlencode @fileonly https://example.com\n"
"\n"
" See also -d, --data and --data-raw.\n"
"\n"
" -d, --data <data>\n"
-" (HTTP MQTT) Sends the specified data in a POST request to the\n"
+" (HTTP MQTT) Sends the specified data in a POST request to the\n"
" HTTP 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"
, stdout);
fputs(
+" 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"
" --data-raw is almost the same but does not have a special inter-\n"
-" pretation of the @ character. To post data purely binary, you\n"
-" should instead use the --data-binary option. To URL-encode the\n"
-" value of a form field you may use --data-urlencode.\n"
-"\n"
+" pretation of the @ character. To post data purely binary, you\n"
+" should instead use the --data-binary option. To URL-encode the\n"
, stdout);
fputs(
-" If any of these options is used more than once on the same com-\n"
+" 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 with a sepa-\n"
-" rating &-symbol. Thus, using '-d name=daniel -d skill=lousy'\n"
+" rating &-symbol. Thus, using '-d name=daniel -d skill=lousy'\n"
" 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"
, stdout);
fputs(
-" file name to read the data from, or - if you want curl to read\n"
-" the data from stdin. Posting data from a file named 'foobar'\n"
-" would thus be done with -d, --data @foobar. When -d, --data is\n"
-" told to read from a file like that, carriage returns and new-\n"
-" lines will be stripped out. If you do not want the @ character\n"
-" to have a special interpretation use --data-raw instead.\n"
-"\n"
-" Examples:\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. Posting data from a file named 'foobar'\n"
+" would thus be done with -d, --data @foobar. When --data is told\n"
+" to read from a file like that, carriage returns and newlines\n"
+" will be stripped out. If you do not want the @ character to have\n"
, stdout);
fputs(
+" a special interpretation use --data-raw instead.\n"
+"\n"
+" --data can be used several times in a command line\n"
+"\n"
+" Examples:\n"
" curl -d \"name=curl\" https://example.com\n"
" curl -d \"name=curl\" -d \"tool=cmdline\" https://example.com\n"
" curl -d @filename https://example.com\n"
"\n"
-" See also --data-binary, --data-urlencode and --data-raw. This\n"
-" option overrides -F, --form and -I, --head and -T, --upload-\n"
-" file.\n"
-"\n"
-" --delegation <LEVEL>\n"
-" (GSS/kerberos) Set LEVEL to tell the server what it is allowed\n"
+" See also --data-binary, --data-urlencode and --data-raw. This\n"
+" option is mutually exclusive to -F, --form and -I, --head and\n"
, stdout);
fputs(
+" -T, --upload-file.\n"
+"\n"
+" --delegation <LEVEL>\n"
+" (GSS/kerberos) Set LEVEL to tell the server what it is allowed\n"
" to delegate when it comes to user credentials.\n"
"\n"
" none Do not allow any delegation.\n"
"\n"
-" policy Delegates if and only if the OK-AS-DELEGATE flag is set\n"
-" in the Kerberos service ticket, which is a matter of\n"
+" policy Delegates if and only if the OK-AS-DELEGATE flag is set\n"
+" in the Kerberos service ticket, which is a matter of\n"
" realm policy.\n"
"\n"
+, stdout);
+ fputs(
" always Unconditionally allow the server to delegate.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --delegation is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --delegation \"none\" https://example.com\n"
"\n"
" See also -k, --insecure and --ssl.\n"
@@ -1068,42 +1138,47 @@ void hugehelp(void)
" --digest\n"
" (HTTP) Enables HTTP Digest authentication. This is an authenti-\n"
" cation scheme that prevents the password from being sent over\n"
-" the wire in clear text. Use this in combination with the normal\n"
-" -u, --user option to set user name and password.\n"
-"\n"
-" If this option is used several times, only the first one is\n"
, stdout);
fputs(
-" used.\n"
+" the wire in clear text. Use this in combination with the normal\n"
+" --user option to set user name and password.\n"
+"\n"
+" Providing --digest multiple times has no extra effect. Disable\n"
+" it again with --no-digest.\n"
"\n"
" Example:\n"
" curl -u name:password --digest https://example.com\n"
"\n"
" See also -u, --user, --proxy-digest and --anyauth. This option\n"
-" overrides --basic and --ntlm and --negotiate.\n"
+, stdout);
+ fputs(
+" is mutually exclusive to --basic and --ntlm and --negotiate.\n"
"\n"
" --disable-eprt\n"
" (FTP) Tell curl to disable the use of the EPRT and LPRT commands\n"
" when doing active FTP transfers. Curl will normally always first\n"
-, stdout);
- fputs(
" attempt to use EPRT, then LPRT before using PORT, but with this\n"
" option, it will use PORT right away. EPRT and LPRT are exten-\n"
" sions to the original FTP protocol, and may not work on all\n"
+, stdout);
+ fputs(
" servers, but they enable more functionality in a better way than\n"
" the traditional PORT command.\n"
"\n"
" --eprt can be used to explicitly enable EPRT again and --no-eprt\n"
" is an alias for --disable-eprt.\n"
"\n"
-, stdout);
- fputs(
" If the server is accessed using IPv6, this option will have no\n"
" effect as EPRT is necessary then.\n"
"\n"
" Disabling EPRT only changes the active behavior. If you want to\n"
-" switch to passive mode you need to not use -P, --ftp-port or\n"
-" force it with --ftp-pasv.\n"
+, stdout);
+ fputs(
+" switch to passive mode you need to not use --ftp-port or force\n"
+" it with --ftp-pasv.\n"
+"\n"
+" Providing --disable-eprt multiple times has no extra effect.\n"
+" Disable it again with --no-disable-eprt.\n"
"\n"
" Example:\n"
" curl --disable-eprt ftp://example.com/\n"
@@ -1111,35 +1186,41 @@ void hugehelp(void)
" See also --disable-epsv and -P, --ftp-port.\n"
"\n"
" --disable-epsv\n"
+" (FTP) Tell curl to disable the use of the EPSV command when do-\n"
, stdout);
fputs(
-" (FTP) Tell curl to disable the use of the EPSV command when do-\n"
-" ing passive FTP transfers. Curl will normally always first at-\n"
+" ing passive FTP transfers. Curl will normally always first at-\n"
" tempt to use EPSV before PASV, but with this option, it will not\n"
" try using EPSV.\n"
"\n"
" --epsv can be used to explicitly enable EPSV again and --no-epsv\n"
" is an alias for --disable-epsv.\n"
"\n"
-" If the server is an IPv6 host, this option will have no effect\n"
-, stdout);
- fputs(
+" If the server is an IPv6 host, this option will have no effect\n"
" as EPSV is necessary then.\n"
"\n"
+, stdout);
+ fputs(
" 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"
+" Providing --disable-epsv multiple times has no extra effect.\n"
+" Disable it again with --no-disable-epsv.\n"
+"\n"
" Example:\n"
" curl --disable-epsv ftp://example.com/\n"
"\n"
" See also --disable-eprt and -P, --ftp-port.\n"
"\n"
" -q, --disable\n"
-" If used as the first parameter on the command line, the curlrc\n"
, stdout);
fputs(
-" config file will not be read and used. See the -K, --config for\n"
-" details on the default config file search path.\n"
+" If used as the first parameter on the command line, the curlrc\n"
+" config file will not be read and used. See the --config for de-\n"
+" tails on the default config file search path.\n"
+"\n"
+" Providing --disable multiple times has no extra effect. Disable\n"
+" it again with --no-disable.\n"
"\n"
" Example:\n"
" curl -q https://example.com\n"
@@ -1147,15 +1228,20 @@ void hugehelp(void)
" See also -K, --config.\n"
"\n"
" --disallow-username-in-url\n"
-" (HTTP) This tells curl to exit if passed a url containing a\n"
-" username. This is probably most useful when the URL is being\n"
-" provided at run-time or similar.\n"
-"\n"
, stdout);
fputs(
+" (HTTP) This tells curl to exit if passed a URL containing a\n"
+" username. This is probably most useful when the URL is being\n"
+" provided at runtime or similar.\n"
+"\n"
+" Providing --disallow-username-in-url multiple times has no extra\n"
+" effect. Disable it again with --no-disallow-username-in-url.\n"
+"\n"
" Example:\n"
" curl --disallow-username-in-url https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also --proto. Added in 7.61.0.\n"
"\n"
" --dns-interface <interface>\n"
@@ -1164,23 +1250,27 @@ void hugehelp(void)
" not affect DNS). The supplied string must be an interface name\n"
" (not an address).\n"
"\n"
+" If --dns-interface is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
, stdout);
fputs(
" curl --dns-interface eth0 https://example.com\n"
"\n"
-" See also --dns-ipv4-addr and --dns-ipv6-addr. --dns-interface\n"
-" requires that the underlying libcurl was built to support c-\n"
+" See also --dns-ipv4-addr and --dns-ipv6-addr. --dns-interface\n"
+" requires that the underlying libcurl was built to support c-\n"
" ares. Added in 7.33.0.\n"
"\n"
" --dns-ipv4-addr <address>\n"
" (DNS) Tell curl to bind to <ip-address> when making IPv4 DNS re-\n"
-" quests, so that the DNS requests originate from this address.\n"
+" quests, so that the DNS requests originate from this address.\n"
, stdout);
fputs(
" The argument should be a single IPv4 address.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --dns-ipv4-addr is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --dns-ipv4-addr 10.1.2.3 https://example.com\n"
@@ -1196,26 +1286,28 @@ void hugehelp(void)
" quests, so that the DNS requests originate from this address.\n"
" The argument should be a single IPv6 address.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --dns-ipv6-addr is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --dns-ipv6-addr 2a04:4e42::561 https://example.com\n"
"\n"
-" See also --dns-interface and --dns-ipv4-addr. --dns-ipv6-addr\n"
, stdout);
fputs(
-" requires that the underlying libcurl was built to support c-\n"
+" See also --dns-interface and --dns-ipv4-addr. --dns-ipv6-addr\n"
+" requires that the underlying libcurl was built to support c-\n"
" ares. Added in 7.33.0.\n"
"\n"
" --dns-servers <addresses>\n"
" Set the list of DNS servers to be used instead of the system de-\n"
-" fault. The list of IP addresses should be separated with com-\n"
+" fault. 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"
, stdout);
fputs(
-" If this option is used several times, the last one will be used.\n"
+" after each IP address.\n"
+"\n"
+" If --dns-servers is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --dns-servers 192.168.0.1,192.168.0.2 https://example.com\n"
@@ -1225,17 +1317,25 @@ void hugehelp(void)
" Added in 7.33.0.\n"
"\n"
" --doh-cert-status\n"
+, stdout);
+ fputs(
" Same as --cert-status but used for DoH (DNS-over-HTTPS).\n"
"\n"
+" Providing --doh-cert-status multiple times has no extra effect.\n"
+" Disable it again with --no-doh-cert-status.\n"
+"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --doh-cert-status --doh-url https://doh.example https://example.com\n"
"\n"
" See also --doh-insecure. Added in 7.76.0.\n"
"\n"
" --doh-insecure\n"
-" Same as -k, --insecure but used for DoH (DNS-over-HTTPS).\n"
+" Same as --insecure but used for DoH (DNS-over-HTTPS).\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --doh-insecure multiple times has no extra effect.\n"
+" Disable it again with --no-doh-insecure.\n"
"\n"
" Example:\n"
" curl --doh-insecure --doh-url https://doh.example https://example.com\n"
@@ -1243,21 +1343,24 @@ void hugehelp(void)
" See also --doh-url. Added in 7.76.0.\n"
"\n"
" --doh-url <URL>\n"
-, stdout);
- fputs(
" Specifies which DNS-over-HTTPS (DoH) server to use to resolve\n"
" hostnames, instead of using the default name resolver mechanism.\n"
+, stdout);
+ fputs(
" The URL must be HTTPS.\n"
"\n"
" Some SSL options that you set for your transfer will apply to\n"
" DoH since the name lookups take place over SSL. However, the\n"
" certificate verification settings are not inherited and can be\n"
-, stdout);
- fputs(
" controlled separately via --doh-insecure and --doh-cert-status.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" This option is unset if an empty string \"\" is used as the URL.\n"
+" (Added in 7.85.0)\n"
"\n"
+, stdout);
+ fputs(
+" If --doh-url is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --doh-url https://doh.example https://example.com\n"
"\n"
@@ -1265,15 +1368,16 @@ void hugehelp(void)
"\n"
" -D, --dump-header <filename>\n"
" (HTTP FTP) Write the received protocol headers to the specified\n"
-, stdout);
- fputs(
" file. If no headers are received, the use of this option will\n"
" create an empty file.\n"
"\n"
+, stdout);
+ fputs(
" When used in FTP, the FTP server response lines are considered\n"
" being \"headers\" and thus are saved there.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --dump-header is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --dump-header store.txt https://example.com\n"
@@ -1281,26 +1385,36 @@ void hugehelp(void)
" See also -o, --output.\n"
"\n"
" --egd-file <file>\n"
+" (TLS) Deprecated option. This option is ignored by curl since\n"
, stdout);
fputs(
-" (TLS) Specify the path name to the Entropy Gathering Daemon\n"
-" socket. The socket is used to seed the random engine for SSL\n"
-" connections.\n"
+" 7.84.0. Prior to that it only had an effect on curl if built to\n"
+" use old versions of OpenSSL.\n"
+"\n"
+" Specify the path name to the Entropy Gathering Daemon socket.\n"
+" The socket is used to seed the random engine for SSL connec-\n"
+" tions.\n"
"\n"
+" If --egd-file is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --egd-file /random/here https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also --random-file.\n"
"\n"
" --engine <name>\n"
" (TLS) Select the OpenSSL crypto engine to use for cipher opera-\n"
" tions. Use --engine list to print a list of build-time supported\n"
-, stdout);
- fputs(
" engines. Note that not all (and possibly none) of the engines\n"
-" may be available at run-time.\n"
+" may be available at runtime.\n"
"\n"
+" If --engine is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --engine flavor https://example.com\n"
"\n"
" See also --ciphers and --curves.\n"
@@ -1310,21 +1424,24 @@ void hugehelp(void)
" cific ETag read from the given file by sending a custom If-None-\n"
" Match header using the stored ETag.\n"
"\n"
+" For correct results, make sure that the specified file contains\n"
, stdout);
fputs(
-" For correct results, make sure that the specified file contains\n"
-" only a single line with the desired ETag. An empty file is\n"
+" only a single line with the desired ETag. An empty file is\n"
" parsed as an empty ETag.\n"
"\n"
-" Use the option --etag-save to first save the ETag from a re-\n"
-" sponse, and then use this option to compare against the saved\n"
+" Use the option --etag-save to first save the ETag from a re-\n"
+" sponse, and then use this option to compare against the saved\n"
" ETag in a subsequent request.\n"
"\n"
-" Example:\n"
-" curl --etag-compare etag.txt https://example.com\n"
+" If --etag-compare is provided several times, the last set value\n"
+" will be used.\n"
"\n"
+" Example:\n"
, stdout);
fputs(
+" curl --etag-compare etag.txt https://example.com\n"
+"\n"
" See also --etag-save and -z, --time-cond. Added in 7.68.0.\n"
"\n"
" --etag-save <file>\n"
@@ -1334,111 +1451,135 @@ void hugehelp(void)
"\n"
" If no ETag is sent by the server, an empty file is created.\n"
"\n"
+" If --etag-save is provided several times, the last set value\n"
+, stdout);
+ fputs(
+" will be used.\n"
+"\n"
" Example:\n"
" curl --etag-save storetag.txt https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --etag-compare. Added in 7.68.0.\n"
"\n"
" --expect100-timeout <seconds>\n"
" (HTTP) Maximum time in seconds that you allow curl to wait for a\n"
-" 100-continue response when curl emits an Expects: 100-continue\n"
-" header in its request. By default curl will wait one second.\n"
-" This option accepts decimal values! When curl stops waiting, it\n"
+" 100-continue response when curl emits an Expects: 100-continue\n"
+" header in its request. By default curl will wait one second.\n"
+, stdout);
+ fputs(
+" This option accepts decimal values! When curl stops waiting, it\n"
" will continue as if the response has been received.\n"
"\n"
+" If --expect100-timeout is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --expect100-timeout 2.5 -T file https://example.com\n"
"\n"
" See also --connect-timeout. Added in 7.47.0.\n"
"\n"
" --fail-early\n"
+, stdout);
+ fputs(
" Fail and exit on the first detected transfer error.\n"
"\n"
" When curl is used to do multiple transfers on the command line,\n"
" it will attempt to operate on each given URL, one by one. By de-\n"
" fault, it will ignore errors if there are more URLs given and\n"
-, stdout);
- fputs(
" the last URL's success will determine the error code curl re-\n"
" turns. So early failures will be \"hidden\" by subsequent success-\n"
" ful transfers.\n"
"\n"
+, stdout);
+ fputs(
" Using this option, curl will instead return an error on the\n"
" first transfer that fails, independent of the amount of URLs\n"
" that are given on the command line. This way, no transfer fail-\n"
" ures go undetected by scripts and similar.\n"
"\n"
-, stdout);
- fputs(
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
" This option does not imply -f, --fail, which causes transfers to\n"
+, stdout);
+ fputs(
" fail due to the server's HTTP status code. You can combine the\n"
-" two options, however note -f, --fail is not global and is there-\n"
-" fore contained by -:, --next.\n"
+" two options, however note --fail is not global and is therefore\n"
+" contained by -:, --next.\n"
+"\n"
+" Providing --fail-early multiple times has no extra effect. Dis-\n"
+" able it again with --no-fail-early.\n"
"\n"
" Example:\n"
" curl --fail-early https://example.com https://two.example\n"
"\n"
-, stdout);
- fputs(
" See also -f, --fail and --fail-with-body. Added in 7.52.0.\n"
"\n"
+, stdout);
+ fputs(
" --fail-with-body\n"
-" (HTTP) Return an error on server errors where the HTTP response\n"
-" code is 400 or greater). In normal cases when an HTTP server\n"
+" (HTTP) Return an error on server errors where the HTTP response\n"
+" code is 400 or greater). In normal cases when an HTTP server\n"
" fails to deliver a document, it returns an HTML document stating\n"
-" so (which often also describes why and more). This flag will\n"
+" so (which often also describes why and more). This flag will\n"
" still allow curl to output and save that content but also to re-\n"
+" turn error 22.\n"
+"\n"
, stdout);
fputs(
-" turn error 22.\n"
+" This is an alternative option to --fail which makes curl fail\n"
+" for the same circumstances but without saving the content.\n"
"\n"
-" This is an alternative option to -f, --fail which makes curl\n"
-" fail for the same circumstances but without saving the content.\n"
+" Providing --fail-with-body multiple times has no extra effect.\n"
+" Disable it again with --no-fail-with-body.\n"
"\n"
" Example:\n"
" curl --fail-with-body https://example.com\n"
"\n"
-" See also -f, --fail. Added in 7.76.0.\n"
+" See also -f, --fail. This option is mutually exclusive to -f,\n"
+" --fail. Added in 7.76.0.\n"
"\n"
-" -f, --fail\n"
-" (HTTP) Fail silently (no output at all) on server errors. This\n"
-" is mostly done to enable scripts etc to better deal with failed\n"
, stdout);
fputs(
+" -f, --fail\n"
+" (HTTP) Fail fast with no output at all on server errors. This is\n"
+" useful to enable scripts and users to better deal with failed\n"
" attempts. In normal cases when an HTTP server fails to deliver a\n"
-" document, it returns an HTML document stating so (which often\n"
-" also describes why and more). This flag will prevent curl from\n"
+" document, it returns an HTML document stating so (which often\n"
+" also describes why and more). This flag will prevent curl from\n"
" outputting that and return error 22.\n"
"\n"
-" This method is not fail-safe and there are occasions where non-\n"
-" successful response codes will slip through, especially when au-\n"
, stdout);
fputs(
+" This method is not fail-safe and there are occasions where non-\n"
+" successful response codes will slip through, especially when au-\n"
" thentication is involved (response codes 401 and 407).\n"
"\n"
+" Providing --fail multiple times has no extra effect. Disable it\n"
+" again with --no-fail.\n"
+"\n"
" Example:\n"
" curl --fail https://example.com\n"
"\n"
-" See also --fail-with-body.\n"
-"\n"
-" --false-start\n"
-" (TLS) Tells curl to use false start during the TLS handshake.\n"
-" False start is a mode where a TLS client will start sending ap-\n"
-" plication data before verifying the server's Finished message,\n"
+" See also --fail-with-body. This option is mutually exclusive to\n"
, stdout);
fputs(
+" --fail-with-body.\n"
+"\n"
+" --false-start\n"
+" (TLS) Tells curl to use false start during the TLS handshake.\n"
+" False start is a mode where a TLS client will start sending ap-\n"
+" plication data before verifying the server's Finished message,\n"
" thus saving a round trip when performing a full handshake.\n"
"\n"
-" This is currently only implemented in the NSS and Secure Trans-\n"
+" This is currently only implemented in the NSS and Secure Trans-\n"
+, stdout);
+ fputs(
" port (on iOS 7.0 or later, or OS X 10.9 or later) backends.\n"
"\n"
+" Providing --false-start multiple times has no extra effect.\n"
+" Disable it again with --no-false-start.\n"
+"\n"
" Example:\n"
" curl --false-start https://example.com\n"
"\n"
@@ -1450,201 +1591,210 @@ void hugehelp(void)
fputs(
" files using backslash-escaping instead of percent-encoding.\n"
"\n"
+" If --form-escape is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
-" curl --form-escape --form 'field\\name=curl' 'file=@load\"this' https://example.com\n"
+" curl --form-escape -F 'field\\name=curl' -F 'file=@load\"this' https://example.com\n"
"\n"
" See also -F, --form. Added in 7.81.0.\n"
"\n"
" --form-string <name=string>\n"
-" (HTTP SMTP IMAP) Similar to -F, --form except that the value\n"
-" string for the named parameter is used literally. Leading '@'\n"
+" (HTTP SMTP IMAP) Similar to --form except that the value string\n"
, stdout);
fputs(
-" and '<' characters, and the ';type=' string in the value have no\n"
-" special meaning. Use this in preference to -F, --form if there's\n"
-" any possibility that the string value may accidentally trigger\n"
-" the '@' or '<' features of -F, --form.\n"
+" for the named parameter is used literally. Leading '@' and '<'\n"
+" characters, and the ';type=' string in the value have no special\n"
+" meaning. Use this in preference to --form if there's any possi-\n"
+" bility that the string value may accidentally trigger the '@' or\n"
+" '<' features of -F, --form.\n"
+"\n"
+" --form-string can be used several times in a command line\n"
"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --form-string \"data\" https://example.com\n"
"\n"
" See also -F, --form.\n"
"\n"
" -F, --form <name=content>\n"
-, stdout);
- fputs(
-" (HTTP SMTP IMAP) For HTTP protocol family, this lets curl emu-\n"
-" late a filled-in form in which a user has pressed the submit\n"
-" button. This causes curl to POST data using the Content-Type\n"
+" (HTTP SMTP IMAP) For HTTP protocol family, this lets curl emu-\n"
+" late a filled-in form in which a user has pressed the submit\n"
+" button. This causes curl to POST data using the Content-Type\n"
" multipart/form-data according to RFC 2388.\n"
"\n"
+, stdout);
+ fputs(
" For SMTP and IMAP protocols, this is the means to compose a mul-\n"
" tipart mail message to transmit.\n"
"\n"
-, stdout);
- fputs(
-" This enables uploading of binary files etc. To force the 'con-\n"
+" This enables uploading of binary files etc. To force the 'con-\n"
" tent' part to be a file, prefix the file name with an @ sign. To\n"
" just get the content part from a file, prefix the file name with\n"
-" the symbol <. The difference between @ and < is then that @\n"
-" makes a file get attached in the post as a file upload, while\n"
-" the < makes a text field and just get the contents for that text\n"
+" the symbol <. The difference between @ and < is then that @\n"
, stdout);
fputs(
+" makes a file get attached in the post as a file upload, while\n"
+" the < makes a text field and just get the contents for that text\n"
" field from a file.\n"
"\n"
-" Tell curl to read content from stdin instead of a file by using\n"
+" Tell curl to read content from stdin instead of a file by using\n"
" - as filename. This goes for both @ and < constructs. When stdin\n"
" is used, the contents is buffered in memory first by curl to de-\n"
-" termine its size and allow a possible resend. Defining a part's\n"
-" data from a named non-regular file (such as a named pipe or sim-\n"
, stdout);
fputs(
-" ilar) is unfortunately not subject to buffering and will be ef-\n"
-" fectively read at transmission time; since the full size is un-\n"
+" termine its size and allow a possible resend. Defining a part's\n"
+" data from a named non-regular file (such as a named pipe or sim-\n"
+" ilar) is unfortunately not subject to buffering and will be ef-\n"
+" fectively read at transmission time; since the full size is un-\n"
" known before the transfer starts, such data is sent as chunks by\n"
" HTTP and rejected by IMAP.\n"
"\n"
+, stdout);
+ fputs(
" Example: send an image to an HTTP server, where 'profile' is the\n"
-" name of the form-field to which the file portrait.jpg will be\n"
+" name of the form-field to which the file portrait.jpg will be\n"
" the input:\n"
"\n"
-, stdout);
- fputs(
" curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
"\n"
-" Example: send your name and shoe size in two text fields to the\n"
+" Example: send your name and shoe size in two text fields to the\n"
" server:\n"
"\n"
" curl -F name=John -F shoesize=11 https://example.com/\n"
"\n"
-" Example: send your essay in a text field to the server. Send it\n"
-" as a plain text field, but get the contents for it from a local\n"
+, stdout);
+ fputs(
+" Example: send your essay in a text field to the server. Send it\n"
+" as a plain text field, but get the contents for it from a local\n"
" file:\n"
"\n"
" curl -F \"story=<hugefile.txt\" https://example.com/\n"
"\n"
-, stdout);
- fputs(
-" You can also tell curl what Content-Type to use by using\n"
+" You can also tell curl what Content-Type to use by using\n"
" 'type=', in a manner similar to:\n"
"\n"
" curl -F \"web=@index.html;type=text/html\" example.com\n"
"\n"
" or\n"
"\n"
+, stdout);
+ fputs(
" curl -F \"name=daniel;type=text/foo\" example.com\n"
"\n"
-" You can also explicitly change the name field of a file upload\n"
+" You can also explicitly change the name field of a file upload\n"
" part by setting filename=, like this:\n"
"\n"
" curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
"\n"
-, stdout);
- fputs(
-" If filename/path contains ',' or ';', it must be quoted by dou-\n"
+" If filename/path contains ',' or ';', it must be quoted by dou-\n"
" ble-quotes like:\n"
"\n"
" curl -F \"file=@\\\"local,file\\\";filename=\\\"name;in;post\\\"\" example.com\n"
"\n"
" or\n"
"\n"
+, stdout);
+ fputs(
" curl -F 'file=@\"local,file\";filename=\"name;in;post\"' example.com\n"
-" Note that if a filename/path is quoted by double-quotes, any\n"
+" Note that if a filename/path is quoted by double-quotes, any\n"
" double-quote or backslash within the filename must be escaped by\n"
" backslash.\n"
"\n"
-, stdout);
- fputs(
-" Quoting must also be applied to non-file data if it contains\n"
+" Quoting must also be applied to non-file data if it contains\n"
" semicolons, leading/trailing spaces or leading double quotes:\n"
"\n"
+, stdout);
+ fputs(
" curl -F 'colors=\"red; green; blue\";type=text/x-myapp' example.com\n"
"\n"
-" You can add custom headers to the field by setting headers=,\n"
+" You can add custom headers to the field by setting headers=,\n"
" like\n"
"\n"
" curl -F \"submit=OK;headers=\\\"X-submit-type: OK\\\"\" example.com\n"
"\n"
" or\n"
"\n"
-, stdout);
- fputs(
" curl -F \"submit=OK;headers=@headerfile\" example.com\n"
"\n"
-" The headers= keyword may appear more that once and above notes\n"
-" about quoting apply. When headers are read from a file, Empty\n"
-" lines and lines starting with '#' are comments and ignored; each\n"
-" header can be folded by splitting between two words and starting\n"
-" the continuation line with a space; embedded carriage-returns\n"
+" The headers= keyword may appear more that once and above notes\n"
, stdout);
fputs(
-" and trailing spaces are stripped. Here is an example of a\n"
+" about quoting apply. When headers are read from a file, Empty\n"
+" lines and lines starting with '#' are comments and ignored; each\n"
+" header can be folded by splitting between two words and starting\n"
+" the continuation line with a space; embedded carriage-returns\n"
+" and trailing spaces are stripped. Here is an example of a\n"
" header file contents:\n"
"\n"
" # This file contain two headers.\n"
+, stdout);
+ fputs(
" X-header-1: this is a header\n"
"\n"
" # The following header is folded.\n"
" X-header-2: this is\n"
" another header\n"
"\n"
-" To support sending multipart mail messages, the syntax is ex-\n"
+" To support sending multipart mail messages, the syntax is ex-\n"
" tended as follows:\n"
+" - name can be omitted: the equal sign is the first character of\n"
+" the argument,\n"
+" - if data starts with '(', this signals to start a new multi-\n"
, stdout);
fputs(
-" - name can be omitted: the equal sign is the first character of\n"
-" the argument,\n"
-" - if data starts with '(', this signals to start a new multi-\n"
" part: it can be followed by a content type specification.\n"
" - a multipart can be terminated with a '=)' argument.\n"
"\n"
" Example: the following command sends an SMTP mime email consist-\n"
" ing in an inline part in two alternative formats: plain text and\n"
-, stdout);
- fputs(
" HTML. It attaches a text file:\n"
"\n"
" curl -F '=(;type=multipart/alternative' \\\n"
" -F '=plain text message' \\\n"
+, stdout);
+ fputs(
" -F '= <body>HTML message</body>;type=text/html' \\\n"
" -F '=)' -F '=@textfile.txt' ... smtp://example.com\n"
"\n"
-" Data can be encoded for transfer using encoder=. Available en-\n"
+" Data can be encoded for transfer using encoder=. Available en-\n"
" codings are binary and 8bit that do nothing else than adding the\n"
+" corresponding Content-Transfer-Encoding header, 7bit that only\n"
+" rejects 8-bit characters with a transfer error, quoted-printable\n"
, stdout);
fputs(
-" corresponding Content-Transfer-Encoding header, 7bit that only\n"
-" rejects 8-bit characters with a transfer error, quoted-printable\n"
-" and base64 that encodes data according to the corresponding\n"
+" and base64 that encodes data according to the corresponding\n"
" schemes, limiting lines length to 76 characters.\n"
"\n"
-" Example: send multipart mail with a quoted-printable text mes-\n"
+" Example: send multipart mail with a quoted-printable text mes-\n"
" sage and a base64 attached file:\n"
"\n"
" curl -F '=text message;encoder=quoted-printable' \\\n"
-, stdout);
- fputs(
" -F '=@localfile;encoder=base64' ... smtp://example.com\n"
"\n"
" See further examples and details in the MANUAL.\n"
"\n"
-" This option can be used multiple times.\n"
+, stdout);
+ fputs(
+" --form can be used several times in a command line\n"
"\n"
" Example:\n"
" curl --form \"name=curl\" --form \"file=@loadthis\" https://example.com\n"
"\n"
-" See also -d, --data, --form-string and --form-escape. This op-\n"
-" tion overrides -d, --data and -I, --head and -T, --upload-file.\n"
+" See also -d, --data, --form-string and --form-escape. This op-\n"
+" tion is mutually exclusive to -d, --data and -I, --head and -T,\n"
+" --upload-file.\n"
"\n"
" --ftp-account <data>\n"
+" (FTP) When an FTP server asks for \"account data\" after user name\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.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --ftp-account is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --ftp-account \"mr.robot\" ftp://example.com/\n"
@@ -1652,103 +1802,114 @@ void hugehelp(void)
" See also -u, --user.\n"
"\n"
" --ftp-alternative-to-user <command>\n"
+" (FTP) If authenticating with the USER and PASS commands fails,\n"
, stdout);
fputs(
-" (FTP) If authenticating with the USER and PASS commands fails,\n"
-" send this command. When connecting to Tumbleweed's Secure\n"
-" Transport server over FTPS using a client certificate, using\n"
-" \"SITE AUTH\" will tell the server to retrieve the username from\n"
+" send this command. When connecting to Tumbleweed's Secure\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.\n"
"\n"
+" If --ftp-alternative-to-user is provided several times, the last\n"
+" set value will be used.\n"
+"\n"
" Example:\n"
" curl --ftp-alternative-to-user \"U53r\" ftp://example.com\n"
"\n"
-" See also --ftp-account and -u, --user.\n"
-"\n"
, stdout);
fputs(
+" See also --ftp-account and -u, --user.\n"
+"\n"
" --ftp-create-dirs\n"
" (FTP SFTP) When an FTP or SFTP URL/operation uses a path that\n"
" does not currently exist on the server, the standard behavior of\n"
" curl is to fail. Using this option, curl will instead attempt to\n"
" create missing directories.\n"
"\n"
+" Providing --ftp-create-dirs multiple times has no extra effect.\n"
+" Disable it again with --no-ftp-create-dirs.\n"
+"\n"
+, stdout);
+ fputs(
" Example:\n"
" curl --ftp-create-dirs -T file ftp://example.com/remote/path/file\n"
"\n"
" See also --create-dirs.\n"
"\n"
" --ftp-method <method>\n"
-, stdout);
- fputs(
-" (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"
+" (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"
" 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 many com-\n"
-" mands. This is how RFC 1738 says it should be done. This\n"
+" curl does a single CWD operation for each path part in\n"
, stdout);
fputs(
+" the given URL. For deep hierarchies this means many com-\n"
+" mands. This is how RFC 1738 says it should be done. This\n"
" is the default but the slowest behavior.\n"
"\n"
-" nocwd curl does no CWD at all. curl will do SIZE, RETR, STOR\n"
+" nocwd curl does no CWD at all. curl will do SIZE, RETR, STOR\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"
-" operates on the file \"normally\" (like in the multicwd\n"
, stdout);
fputs(
-" case). This is somewhat more standards compliant than\n"
+" curl does one CWD with the full target directory and then\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"
"\n"
+" If --ftp-method is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
" Examples:\n"
" curl --ftp-method multicwd ftp://example.com/dir1/dir2/file\n"
+, stdout);
+ fputs(
" curl --ftp-method nocwd ftp://example.com/dir1/dir2/file\n"
" curl --ftp-method singlecwd ftp://example.com/dir1/dir2/file\n"
"\n"
" See also -l, --list-only.\n"
"\n"
" --ftp-pasv\n"
-, stdout);
- fputs(
" (FTP) Use passive mode for the data connection. Passive is the\n"
" internal default behavior, but using this option can be used to\n"
-" override a previous -P, --ftp-port option.\n"
-"\n"
-" If this option is used several times, only the first one is\n"
-" used. Undoing an enforced passive really is not doable but you\n"
-" must then instead enforce the correct -P, --ftp-port again.\n"
+" override a previous --ftp-port option.\n"
"\n"
+" Reversing an enforced passive really is not doable but you must\n"
, stdout);
fputs(
+" then instead enforce the correct --ftp-port again.\n"
+"\n"
" Passive mode means that curl will try the EPSV command first and\n"
" then PASV, unless --disable-epsv is used.\n"
"\n"
+" Providing --ftp-pasv multiple times has no extra effect. Dis-\n"
+" able it again with --no-ftp-pasv.\n"
+"\n"
" Example:\n"
" curl --ftp-pasv ftp://example.com/\n"
"\n"
" See also --disable-epsv.\n"
" -P, --ftp-port <address>\n"
-" (FTP) Reverses the default initiator/listener roles when con-\n"
-" necting with FTP. This option makes curl use active mode. curl\n"
, stdout);
fputs(
+" (FTP) Reverses the default initiator/listener roles when con-\n"
+" necting with FTP. This option makes curl use active mode. curl\n"
" then tells the server to connect back to the client's specified\n"
" address and port, while passive mode asks the server to setup an\n"
" IP address and port for it to connect to. <address> should be\n"
" one of:\n"
"\n"
" interface\n"
+, stdout);
+ fputs(
" e.g. \"eth0\" to specify which interface's IP address you\n"
" want to use (Unix only)\n"
"\n"
" IP address\n"
-, stdout);
- fputs(
" e.g. \"192.168.10.1\" to specify the exact IP address\n"
"\n"
" host name\n"
@@ -1757,23 +1918,25 @@ void hugehelp(void)
" - 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"
-" able the use of PORT with --ftp-pasv. Disable the attempt to use the\n"
, stdout);
fputs(
-" EPRT command instead of PORT by using --disable-eprt. EPRT is really\n"
+" Disable the use of PORT with --ftp-pasv. Disable the attempt to use the\n"
+" EPRT command instead of PORT by using --disable-eprt. EPRT is really\n"
" PORT++.\n"
"\n"
-" You can also append \":[start]-[end]\" to the right of the address, to\n"
-" tell curl what TCP port range to use. That means you specify a port\n"
-" range, from a lower to a higher number. A single number works as well,\n"
-" but do note that it increases the risk of failure since the port may\n"
+" You can also append \":[start]-[end]\" to the right of the address, to\n"
+" tell curl what TCP port range to use. That means you specify a port\n"
+" range, from a lower to a higher number. A single number works as well,\n"
+" but do note that it increases the risk of failure since the port may\n"
+, stdout);
+ fputs(
" not be available.\n"
"\n"
+" If --ftp-port is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
" Examples:\n"
" curl -P - ftp:/example.com\n"
-, stdout);
- fputs(
" curl -P eth0 ftp:/example.com\n"
" curl -P 192.168.0.2 ftp:/example.com\n"
"\n"
@@ -1782,28 +1945,37 @@ void hugehelp(void)
" --ftp-pret\n"
" (FTP) Tell curl to send a PRET command before PASV (and EPSV).\n"
" Certain FTP servers, mainly drftpd, require this non-standard\n"
+, stdout);
+ fputs(
" command for directory listings as well as up and downloads in\n"
" PASV mode.\n"
"\n"
+" Providing --ftp-pret multiple times has no extra effect. Dis-\n"
+" able it again with --no-ftp-pret.\n"
+"\n"
" Example:\n"
" curl --ftp-pret ftp://example.com/\n"
"\n"
-, stdout);
- fputs(
" See also -P, --ftp-port and --ftp-pasv.\n"
"\n"
" --ftp-skip-pasv-ip\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 al-\n"
+, stdout);
+ fputs(
+" its response to curl's PASV command when curl connects the data\n"
+" connection. Instead curl will re-use the same IP address it al-\n"
" ready uses for the control connection.\n"
"\n"
" Since curl 7.74.0 this option is enabled by default.\n"
"\n"
+" This option has no effect if PORT, EPRT or EPSV is used instead\n"
+" of PASV.\n"
+"\n"
+" Providing --ftp-skip-pasv-ip multiple times has no extra effect.\n"
, stdout);
fputs(
-" This option has no effect if PORT, EPRT or EPSV is used instead\n"
-" of PASV.\n"
+" Disable it again with --no-ftp-skip-pasv-ip.\n"
+"\n"
" Example:\n"
" curl --ftp-skip-pasv-ip ftp://example.com/\n"
"\n"
@@ -1817,92 +1989,106 @@ void hugehelp(void)
fputs(
" the shutdown and waits for a reply from the server.\n"
"\n"
+" Providing --ftp-ssl-ccc-mode multiple times has no extra effect.\n"
+" Disable it again with --no-ftp-ssl-ccc-mode.\n"
+"\n"
" Example:\n"
" curl --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/\n"
"\n"
" See also --ftp-ssl-ccc.\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"
-" munication will be unencrypted. This allows NAT routers to fol-\n"
+" (FTP) Use CCC (Clear Command Channel) Shuts down the SSL/TLS\n"
, stdout);
fputs(
+" 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.\n"
"\n"
+" Providing --ftp-ssl-ccc multiple times has no extra effect.\n"
+" Disable it again with --no-ftp-ssl-ccc.\n"
+"\n"
" Example:\n"
" curl --ftp-ssl-ccc ftps://example.com/\n"
" See also --ssl and --ftp-ssl-ccc-mode.\n"
"\n"
+, stdout);
+ fputs(
" --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 does not sup-\n"
" port SSL/TLS.\n"
"\n"
+" Providing --ftp-ssl-control multiple times has no extra effect.\n"
+" Disable it again with --no-ftp-ssl-control.\n"
+"\n"
+" Example:\n"
, stdout);
fputs(
-" Example:\n"
" curl --ftp-ssl-control ftp://example.com\n"
"\n"
" See also --ssl.\n"
"\n"
" -G, --get\n"
-" When used, this option will make all data specified with -d,\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"
+" When used, this option will make all data specified with -d,\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"
" used. The data will be appended to the URL with a '?' separator.\n"
+" If used in combination with -I, --head, the POST data will in-\n"
, stdout);
fputs(
-" If used in combination with -I, --head, the POST data will in-\n"
" stead be appended to the URL with a HEAD request.\n"
"\n"
-" If this option is used several times, only the first one is\n"
-" used. This is because undoing a GET does not make sense, but you\n"
-" should then instead enforce the alternative method you prefer.\n"
+" Providing --get multiple times has no extra effect. Disable it\n"
+" again with --no-get.\n"
"\n"
" Examples:\n"
" curl --get https://example.com\n"
-, stdout);
- fputs(
" curl --get -d \"tool=curl\" -d \"age=old\" https://example.com\n"
" curl --get -I -d \"tool=curl\" https://example.com\n"
"\n"
" See also -d, --data and -X, --request.\n"
"\n"
" -g, --globoff\n"
+, stdout);
+ fputs(
" 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 curl itself interpret them. Note that these let-\n"
-, stdout);
- fputs(
" ters are not normal legal URL contents but they should be en-\n"
" coded according to the URI standard.\n"
"\n"
+" Providing --globoff multiple times has no extra effect. Disable\n"
+" it again with --no-globoff.\n"
+"\n"
+, stdout);
+ fputs(
" Example:\n"
" curl -g \"https://example.com/{[]}}}}\"\n"
"\n"
" See also -K, --config and -q, --disable.\n"
"\n"
" --happy-eyeballs-timeout-ms <milliseconds>\n"
-" Happy Eyeballs is an algorithm that attempts to connect to both\n"
-" IPv4 and IPv6 addresses for dual-stack hosts, giving IPv6 a\n"
+" Happy Eyeballs is an algorithm that attempts to connect to both\n"
+" IPv4 and IPv6 addresses for dual-stack hosts, giving IPv6 a\n"
+" head-start of the specified number of milliseconds. If the IPv6\n"
+" address cannot be connected to within that time, then a connec-\n"
, stdout);
fputs(
-" head-start of the specified number of milliseconds. If the IPv6\n"
-" address cannot be connected to within that time, then a connec-\n"
-" tion attempt is made to the IPv4 address in parallel. The first\n"
+" tion attempt is made to the IPv4 address in parallel. The first\n"
" connection to be established is the one that is used.\n"
"\n"
-" The range of suggested useful values is limited. Happy Eyeballs\n"
-" RFC 6555 says \"It is RECOMMENDED that connection attempts be\n"
+" The range of suggested useful values is limited. Happy Eyeballs\n"
+" RFC 6555 says \"It is RECOMMENDED that connection attempts be\n"
+" paced 150-250 ms apart to balance human factors against network\n"
+" load.\" libcurl currently defaults to 200 ms. Firefox and Chrome\n"
, stdout);
fputs(
-" paced 150-250 ms apart to balance human factors against network\n"
-" load.\" libcurl currently defaults to 200 ms. Firefox and Chrome\n"
" currently default to 300 ms.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --happy-eyeballs-timeout-ms is provided several times, the\n"
+" last set value will be used.\n"
"\n"
" Example:\n"
" curl --happy-eyeballs-timeout-ms 500 https://example.com\n"
@@ -1910,84 +2096,106 @@ void hugehelp(void)
" See also -m, --max-time and --connect-timeout. Added in 7.59.0.\n"
"\n"
" --haproxy-protocol\n"
+" (HTTP) Send a HAProxy PROXY protocol v1 header at the beginning\n"
, stdout);
fputs(
-" (HTTP) Send a HAProxy PROXY protocol v1 header at the beginning\n"
" of the connection. This is used by some load balancers and re-\n"
" verse proxies to indicate the client's true IP address and port.\n"
" This option is primarily useful when sending test requests to a\n"
" service that expects this header.\n"
"\n"
-" Example:\n"
-" curl --haproxy-protocol https://example.com\n"
+" Providing --haproxy-protocol multiple times has no extra effect.\n"
+" Disable it again with --no-haproxy-protocol.\n"
"\n"
+" Example:\n"
, stdout);
fputs(
+" curl --haproxy-protocol https://example.com\n"
+"\n"
" See also -x, --proxy. Added in 7.60.0.\n"
"\n"
" -I, --head\n"
" (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the\n"
-" command HEAD which this uses to get nothing but the header of a\n"
-" document. When used on an FTP or FILE file, curl displays the\n"
+" command HEAD which this uses to get nothing but the header of a\n"
+" document. When used on an FTP or FILE file, curl displays the\n"
" file size and last modification time only.\n"
"\n"
+, stdout);
+ fputs(
+" Providing --head multiple times has no extra effect. Disable it\n"
+" again with --no-head.\n"
+"\n"
" Example:\n"
" curl -I https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also -G, --get, -v, --verbose and --trace-ascii.\n"
"\n"
" -H, --header <header/@file>\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"
+" (HTTP IMAP SMTP) Extra header to include in information sent.\n"
+" When used within an HTTP request, it is added to the regular re-\n"
+" quest headers.\n"
+"\n"
, stdout);
fputs(
-" to make even trickier stuff than curl would normally do. You\n"
-" should not replace internally set headers without knowing per-\n"
-" fectly well what you are doing. Remove an internal header by\n"
-" giving 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"
+" For an IMAP or SMTP MIME uploaded mail built with --form op-\n"
+" tions, it is prepended to the resulting MIME document, effec-\n"
+" tively including it at the mail global level. It does not affect\n"
+" raw uploaded mails (Added in 7.56.0).\n"
+"\n"
+" You may specify any number of extra headers. Note that if you\n"
+" should add a custom header that has the same name as one of the\n"
, stdout);
fputs(
-" as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
+" internal ones curl would use, your externally set header will be\n"
+" used instead of the internal one. This allows you to make even\n"
+" trickier stuff than curl would normally do. You should not re-\n"
+" place internally set headers without knowing perfectly well what\n"
+" you are doing. Remove an internal header by giving a replacement\n"
+" without content on the right side of the colon, as in: -H\n"
+, stdout);
+ fputs(
+" \"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"
"\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"
" as a part of the header content: do not add newlines or carriage\n"
+, stdout);
+ fputs(
" returns, they will only mess things up for you.\n"
"\n"
" This option can take an argument in @filename style, which then\n"
-, stdout);
- fputs(
" adds a header for each line in the input file. Using @- will\n"
" make curl read the header file from stdin. Added in 7.55.0.\n"
"\n"
-" You need --proxy-header to send custom headers intended for a\n"
+" Please note that most anti-spam utilities check the presence and\n"
+" value of several MIME mail headers: these are \"From:\", \"To:\",\n"
+, stdout);
+ fputs(
+" \"Date:\" and \"Subject:\" among others and should be added with\n"
+" this option.\n"
+"\n"
+" You need --proxy-header to send custom headers intended for an\n"
" HTTP proxy. Added in 7.37.0.\n"
"\n"
-" Passing on a \"Transfer-Encoding: chunked\" header when doing a\n"
-" HTTP request with a request body, will make curl send the data\n"
+" Passing on a \"Transfer-Encoding: chunked\" header when doing an\n"
+" HTTP request with a request body, will make curl send the data\n"
" using chunked encoding.\n"
"\n"
, stdout);
fputs(
-" WARNING: headers set with this option will be set in all re-\n"
-" quests - even after redirects are followed, like when told with\n"
-" -L, --location. This can lead to the header being sent to other\n"
-" hosts than the original host, so sensitive headers should be\n"
-" used with caution combined with following redirects.\n"
+" WARNING: headers set with this option will be set in all HTTP\n"
+" requests - even after redirects are followed, like when told\n"
+" with -L, --location. This can lead to the header being sent to\n"
+" other hosts than the original host, so sensitive headers should\n"
+" be used with caution combined with following redirects.\n"
"\n"
-" This option can be used multiple times to add/replace/remove\n"
-" multiple headers.\n"
+" --header can be used several times in a command line\n"
"\n"
+" Examples:\n"
, stdout);
fputs(
-" Examples:\n"
" curl -H \"X-First-Name: Joe\" https://example.com\n"
" curl -H \"User-Agent: yes-please/2000\" https://example.com\n"
" curl -H \"Host:\" https://example.com\n"
@@ -2003,70 +2211,86 @@ void hugehelp(void)
" display all options available. If the argument \"category\" was\n"
" provided, curl will display all categories and their meanings.\n"
"\n"
+" Providing --help multiple times has no extra effect. Disable it\n"
+" again with --no-help.\n"
+"\n"
" Example:\n"
" curl --help all\n"
"\n"
" See also -v, --verbose.\n"
"\n"
" --hostpubmd5 <md5>\n"
-" (SFTP SCP) Pass a string containing 32 hexadecimal digits. The\n"
, stdout);
fputs(
-" string should be the 128 bit MD5 checksum of the remote host's\n"
+" (SFTP SCP) 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"
" the md5sums match.\n"
"\n"
+" If --hostpubmd5 is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/\n"
"\n"
+, stdout);
+ fputs(
" See also --hostpubsha256.\n"
"\n"
" --hostpubsha256 <sha256>\n"
" (SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash\n"
-, stdout);
- fputs(
" of the remote host's public key. Curl will refuse the connection\n"
" with the host unless the hashes match.\n"
"\n"
+" If --hostpubsha256 is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/\n"
"\n"
" See also --hostpubmd5. Added in 7.80.0.\n"
"\n"
" --hsts <file name>\n"
-" (HTTPS) This option enables HSTS for the transfer. If the file\n"
-" name points to an existing HSTS cache file, that will be used.\n"
-, stdout);
- fputs(
-" After a completed transfer, the cache will be saved to the file\n"
+" (HTTPS) This option enables HSTS for the transfer. If the file\n"
+" name points to an existing HSTS cache file, that will be used.\n"
+" After a completed transfer, the cache will be saved to the file\n"
" name again if it has been modified.\n"
"\n"
+, stdout);
+ fputs(
" Specify a \"\" file name (zero length) to avoid loading/saving and\n"
" make curl just handle HSTS in memory.\n"
"\n"
-" If this option is used several times, curl will load contents\n"
+" If this option is used several times, curl will load contents\n"
" from all the files but the last one will be used for saving.\n"
"\n"
+" --hsts can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl --hsts cache.txt https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --proto. Added in 7.74.0.\n"
"\n"
+, stdout);
+ fputs(
" --http0.9\n"
" (HTTP) Tells curl to be fine with HTTP version 0.9 response.\n"
"\n"
-" HTTP/0.9 is a completely headerless response and therefore you\n"
-" can also connect with this to non-HTTP servers and still get a\n"
+" HTTP/0.9 is a completely headerless response and therefore you\n"
+" can also connect with this to non-HTTP servers and still get a\n"
" response since curl will simply transparently downgrade - if al-\n"
" lowed.\n"
"\n"
" Since curl 7.66.0, HTTP/0.9 is disabled by default.\n"
"\n"
-" Example:\n"
+" Providing --http0.9 multiple times has no extra effect. Disable\n"
, stdout);
fputs(
+" it again with --no-http0.9.\n"
+"\n"
+" Example:\n"
" curl --http0.9 https://example.com\n"
"\n"
" See also --http1.1, --http2 and --http3. Added in 7.64.0.\n"
@@ -2075,103 +2299,127 @@ void hugehelp(void)
" (HTTP) Tells curl to use HTTP version 1.0 instead of using its\n"
" internally preferred HTTP version.\n"
"\n"
+" Providing --http1.0 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --http1.0 https://example.com\n"
"\n"
-" See also --http0.9 and --http1.1. This option overrides\n"
-" --http1.1 and --http2.\n"
-"\n"
-" --http1.1\n"
, stdout);
fputs(
+" See also --http0.9 and --http1.1. This option is mutually exclu-\n"
+" sive to --http1.1 and --http2 and --http2-prior-knowledge and\n"
+" --http3.\n"
+"\n"
+" --http1.1\n"
" (HTTP) Tells curl to use HTTP version 1.1.\n"
"\n"
+" Providing --http1.1 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --http1.1 https://example.com\n"
"\n"
-" See also --http1.1 and --http0.9. This option overrides -0,\n"
-" --http1.0 and --http2. Added in 7.33.0.\n"
+" See also -0, --http1.0 and --http0.9. This option is mutually\n"
+, stdout);
+ fputs(
+" exclusive to -0, --http1.0 and --http2 and --http2-prior-knowl-\n"
+" edge and --http3. Added in 7.33.0.\n"
"\n"
" --http2-prior-knowledge\n"
" (HTTP) Tells curl to issue its non-TLS HTTP requests using\n"
" HTTP/2 without HTTP/1.1 Upgrade. It requires prior knowledge\n"
-, stdout);
- fputs(
" that the server supports HTTP/2 straight away. HTTPS requests\n"
" will still do HTTP/2 the standard way with negotiated protocol\n"
+, stdout);
+ fputs(
" version in the TLS handshake.\n"
"\n"
+" Providing --http2-prior-knowledge multiple times has no extra\n"
+" effect. Disable it again with --no-http2-prior-knowledge.\n"
+"\n"
" Example:\n"
" curl --http2-prior-knowledge https://example.com\n"
"\n"
-" See also --http2 and --http3. --http2-prior-knowledge requires\n"
-" that the underlying libcurl was built to support HTTP/2. This\n"
+" See also --http2 and --http3. --http2-prior-knowledge requires\n"
+" that the underlying libcurl was built to support HTTP/2. This\n"
, stdout);
fputs(
-" option overrides --http1.1 and -0, --http1.0 and --http2. Added\n"
-" in 7.49.0.\n"
+" option is mutually exclusive to --http1.1 and -0, --http1.0 and\n"
+" --http2 and --http3. Added in 7.49.0.\n"
"\n"
" --http2\n"
" (HTTP) Tells curl to use HTTP version 2.\n"
"\n"
-" For HTTPS, this means curl will attempt to negotiate HTTP/2 in\n"
+" For HTTPS, this means curl will attempt to negotiate HTTP/2 in\n"
" the TLS handshake. curl does this by default.\n"
"\n"
" For HTTP, this means curl will attempt to upgrade the request to\n"
" HTTP/2 using the Upgrade: request header.\n"
"\n"
-" Example:\n"
, stdout);
fputs(
+" When curl uses HTTP/2 over HTTPS, it does not itself insist on\n"
+" TLS 1.2 or higher even though that is required by the specifica-\n"
+" tion. A user can add this version requirement with --tlsv1.2.\n"
+"\n"
+" Providing --http2 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
" curl --http2 https://example.com\n"
"\n"
" See also --http1.1 and --http3. --http2 requires that the under-\n"
-" lying libcurl was built to support HTTP/2. This option overrides\n"
-" --http1.1 and -0, --http1.0 and --http2-prior-knowledge. Added\n"
-" in 7.33.0.\n"
+, stdout);
+ fputs(
+" lying libcurl was built to support HTTP/2. This option is mutu-\n"
+" ally exclusive to --http1.1 and -0, --http1.0 and --http2-prior-\n"
+" knowledge and --http3. Added in 7.33.0.\n"
"\n"
" --http3\n"
-" (HTTP) WARNING: this option is experimental. Do not use in pro-\n"
-" duction.\n"
+" (HTTP) **WARNING**: this option is experimental. Do not use in\n"
+" production.\n"
"\n"
+" Tells curl to use HTTP version 3 directly to the host and port\n"
+" number used in the URL. A normal HTTP/3 transaction will be done\n"
, stdout);
fputs(
-" Tells curl to use HTTP version 3 directly to the host and port\n"
-" number used in the URL. A normal HTTP/3 transaction will be done\n"
-" to a host and then get redirected via Alt-Svc, but this option\n"
-" allows a user to circumvent that when you know that the target\n"
+" to a host and then get redirected via Alt-Svc, but this option\n"
+" allows a user to circumvent that when you know that the target\n"
" speaks HTTP/3 on the given host and port.\n"
"\n"
-" This option will make curl fail if a QUIC connection cannot be\n"
-, stdout);
- fputs(
-" established, it cannot fall back to a lower HTTP version on its\n"
+" This option will make curl fail if a QUIC connection cannot be\n"
+" established, it cannot fall back to a lower HTTP version on its\n"
" own.\n"
"\n"
+" Providing --http3 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --http3 https://example.com\n"
"\n"
" See also --http1.1 and --http2. --http3 requires that the under-\n"
-" lying libcurl was built to support HTTP/3. This option overrides\n"
-" --http1.1 and -0, --http1.0 and --http2 and --http2-prior-knowl-\n"
-" edge. Added in 7.66.0.\n"
+" lying libcurl was built to support HTTP/3. This option is mutu-\n"
+" ally exclusive to --http1.1 and -0, --http1.0 and --http2 and\n"
+" --http2-prior-knowledge. Added in 7.66.0.\n"
"\n"
" --ignore-content-length\n"
+" (FTP HTTP) For HTTP, Ignore the Content-Length header. This is\n"
, stdout);
fputs(
-" (FTP HTTP) For HTTP, Ignore the Content-Length header. This is\n"
-" particularly useful for servers running Apache 1.x, which will\n"
-" report incorrect Content-Length for files larger than 2 giga-\n"
+" particularly useful for servers running Apache 1.x, which will\n"
+" report incorrect Content-Length for files larger than 2 giga-\n"
" bytes.\n"
"\n"
-" For FTP (since 7.46.0), skip the RETR command to figure out the\n"
+" For FTP (since 7.46.0), skip the RETR command to figure out the\n"
" size before downloading a file.\n"
"\n"
-" This option does not work for HTTP if libcurl was built to use\n"
+" This option does not work for HTTP if libcurl was built to use\n"
" hyper.\n"
"\n"
+" Providing --ignore-content-length multiple times has no extra\n"
, stdout);
fputs(
+" effect. Disable it again with --no-ignore-content-length.\n"
+"\n"
" Example:\n"
" curl --ignore-content-length https://example.com\n"
"\n"
@@ -2182,103 +2430,167 @@ void hugehelp(void)
" sponse headers can include things like server name, cookies,\n"
" date of the document, HTTP version and more...\n"
"\n"
-" To view the request headers, consider the -v, --verbose option.\n"
-"\n"
-" Example:\n"
, stdout);
fputs(
+" To view the request headers, consider the --verbose option.\n"
+"\n"
+" Providing --include multiple times has no extra effect. Disable\n"
+" it again with --no-include.\n"
+"\n"
+" Example:\n"
" curl -i https://example.com\n"
"\n"
" See also -v, --verbose.\n"
"\n"
" -k, --insecure\n"
" (TLS SFTP SCP) By default, every secure connection curl makes is\n"
-" verified to be secure before the transfer takes place. This op-\n"
-" tion makes curl skip the verification step and proceed without\n"
+" verified to be secure before the transfer takes place. This op-\n"
+, stdout);
+ fputs(
+" tion makes curl skip the verification step and proceed without\n"
" checking.\n"
"\n"
" When this option is not used for protocols using TLS, curl veri-\n"
-, stdout);
- fputs(
-" fies the server's TLS certificate before it continues: that the\n"
-" certificate contains the right name which matches the host name\n"
+" fies the server's TLS certificate before it continues: that the\n"
+" certificate contains the right name which matches the host name\n"
" used in the URL and that the certificate has been signed by a CA\n"
" certificate present in the cert store. See this online resource\n"
+, stdout);
+ fputs(
" for further details:\n"
" https://curl.se/docs/sslcerts.html\n"
"\n"
-" For SFTP and SCP, this option makes curl skip the known_hosts\n"
-, stdout);
- fputs(
-" verification. known_hosts is a file normally stored in the\n"
-" user's home directory in the .ssh subdirectory, which contains\n"
+" For SFTP and SCP, this option makes curl skip the known_hosts\n"
+" verification. known_hosts is a file normally stored in the\n"
+" user's home directory in the \".ssh\" subdirectory, which contains\n"
" host names and their public keys.\n"
"\n"
" WARNING: using this option makes the transfer insecure.\n"
"\n"
+, stdout);
+ fputs(
+" Providing --insecure multiple times has no extra effect. Dis-\n"
+" able it again with --no-insecure.\n"
+"\n"
" Example:\n"
" curl --insecure https://example.com\n"
"\n"
" See also --proxy-insecure, --cacert and --capath.\n"
"\n"
" --interface <name>\n"
-, stdout);
- fputs(
" Perform an operation using a specified interface. You can enter\n"
" interface name, IP address or host name. An example could look\n"
" like:\n"
"\n"
+, stdout);
+ fputs(
" curl --interface eth0:1 https://www.example.com/\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
" On Linux it can be used to specify a VRF, but the binary needs\n"
" to either have CAP_NET_RAW or to be run as root. More informa-\n"
-, stdout);
- fputs(
" tion about Linux VRF: https://www.kernel.org/doc/Documenta-\n"
" tion/networking/vrf.txt\n"
"\n"
+" If --interface is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --interface eth0 https://example.com\n"
"\n"
" See also --dns-interface.\n"
"\n"
" -4, --ipv4\n"
-" This option tells curl to resolve names to IPv4 addresses only,\n"
-" and not for example try IPv6.\n"
+" This option tells curl to use IPv4 addresses only, and not for\n"
+" example try IPv6.\n"
+"\n"
+" Providing --ipv4 multiple times has no extra effect. Disable it\n"
+" again with --no-ipv4.\n"
"\n"
" Example:\n"
" curl --ipv4 https://example.com\n"
"\n"
+" See also --http1.1 and --http2. This option is mutually exclu-\n"
, stdout);
fputs(
-" See also --http1.1 and --http2. This option overrides -6,\n"
-" --ipv6.\n"
+" sive to -6, --ipv6.\n"
"\n"
" -6, --ipv6\n"
-" This option tells curl to resolve names to IPv6 addresses only,\n"
-" and not for example try IPv4.\n"
+" This option tells curl to use IPv6 addresses only, and not for\n"
+" example try IPv4.\n"
+"\n"
+" Providing --ipv6 multiple times has no extra effect. Disable it\n"
+" again with --no-ipv6.\n"
"\n"
" Example:\n"
" curl --ipv6 https://example.com\n"
"\n"
-" See also --http1.1 and --http2. This option overrides -4,\n"
-" --ipv4.\n"
+" See also --http1.1 and --http2. This option is mutually exclu-\n"
+" sive to -4, --ipv4.\n"
"\n"
-" -j, --junk-session-cookies\n"
+" --json <data>\n"
, stdout);
fputs(
+" (HTTP) Sends the specified JSON data in a POST request to the\n"
+" HTTP server. --json works as a shortcut for passing on these\n"
+" three options:\n"
+"\n"
+" --data [arg]\n"
+" --header \"Content-Type: application/json\"\n"
+" --header \"Accept: application/json\"\n"
+"\n"
+" There is no verification that the passed in data is actual JSON\n"
+" or that the syntax is correct.\n"
+"\n"
+, stdout);
+ fputs(
+" If you start the data with the letter @, the rest should be a\n"
+" file name to read the data from, or a single dash (-) if you\n"
+" want curl to read the data from stdin. Posting data from a file\n"
+" named 'foobar' would thus be done with --json @foobar and to in-\n"
+" stead read the data from stdin, use --json @-.\n"
+"\n"
+" If this option is used more than once on the same command line,\n"
+, stdout);
+ fputs(
+" the additional data pieces will be concatenated to the previous\n"
+" before sending.\n"
+"\n"
+" The headers this option sets can be overridden with --header as\n"
+" usual.\n"
+"\n"
+" --json can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+" curl --json '{ \"drink\": \"coffe\" }' https://example.com\n"
+" curl --json '{ \"drink\":' --json ' \"coffe\" }' https://example.com\n"
+, stdout);
+ fputs(
+" curl --json @prepared https://example.com\n"
+" curl --json @- https://example.com < json.txt\n"
+"\n"
+" See also --data-binary and --data-raw. This option is mutually\n"
+" exclusive to -F, --form and -I, --head and -T, --upload-file.\n"
+" Added in 7.82.0.\n"
+"\n"
+" -j, --junk-session-cookies\n"
" (HTTP) When curl is told to read cookies from a given file, this\n"
+, stdout);
+ fputs(
" option will make it discard all \"session cookies\". This will ba-\n"
-" sically have the same effect as if a new session is started.\n"
-" Typical browsers always discard session cookies when they are\n"
+" sically have the same effect as if a new session is started.\n"
+" Typical browsers always discard session cookies when they are\n"
" closed down.\n"
"\n"
-" Example:\n"
-" curl --junk-session-cookies -b cookies.txt https://example.com\n"
+" Providing --junk-session-cookies multiple times has no extra ef-\n"
+" fect. Disable it again with --no-junk-session-cookies.\n"
"\n"
+" Example:\n"
, stdout);
fputs(
+" curl --junk-session-cookies -b cookies.txt https://example.com\n"
+"\n"
" See also -b, --cookie and -c, --cookie-jar.\n"
"\n"
" --keepalive-time <seconds>\n"
@@ -2286,28 +2598,35 @@ void hugehelp(void)
" fore 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"
, stdout);
fputs(
-" effect if --no-keepalive is used.\n"
+" (meaning Linux, recent AIX, HP-UX and more). Keepalives are\n"
+" used by the TCP stack to detect broken networks on idle connec-\n"
+" tions. The number of missed keepalive probes before declaring\n"
+" the connection down is OS dependent and is commonly 9 or 10.\n"
+" This option has no effect if --no-keepalive is used.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
" If unspecified, the option defaults to 60 seconds.\n"
"\n"
+, stdout);
+ fputs(
+" If --keepalive-time is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
" Example:\n"
" curl --keepalive-time 20 https://example.com\n"
"\n"
" See also --no-keepalive and -m, --max-time.\n"
"\n"
" --key-type <type>\n"
-" (TLS) Private key file type. Specify which type your --key pro-\n"
-, stdout);
- fputs(
-" vided private key is. DER, PEM, and ENG are supported. If not\n"
+" (TLS) 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"
-" If this option is used several times, the last one will be used.\n"
-"\n"
+, stdout);
+ fputs(
+" If --key-type is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --key-type DER --key here https://example.com\n"
"\n"
@@ -2316,22 +2635,30 @@ void hugehelp(void)
" --key <key>\n"
" (TLS SSH) Private key file name. Allows you to provide your pri-\n"
" vate key in this separate file. For SSH, if not specified, curl\n"
+" tries the following candidates in order: '~/.ssh/id_rsa',\n"
, stdout);
fputs(
-" tries the following candidates in order: '~/.ssh/id_rsa',\n"
" '~/.ssh/id_dsa', './id_rsa', './id_dsa'.\n"
"\n"
" If curl is built against OpenSSL library, and the engine pkcs11\n"
" is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
" ify a private key located in a PKCS#11 device. A string begin-\n"
" ning with \"pkcs11:\" will be interpreted as a PKCS#11 URI. If a\n"
+" PKCS#11 URI is provided, then the --engine option will be set as\n"
, stdout);
fputs(
-" PKCS#11 URI is provided, then the --engine option will be set as\n"
" \"pkcs11\" if none was provided and the --key-type option will be\n"
" set as \"ENG\" if none was provided.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If curl is built against Secure Transport or Schannel then this\n"
+" option is ignored for TLS protocols (HTTPS, etc). Those backends\n"
+" expect the private key to be already present in the keychain or\n"
+" PKCS#12 file containing the certificate.\n"
+"\n"
+, stdout);
+ fputs(
+" If --key is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
" curl --cert certificate --key here https://example.com\n"
@@ -2339,70 +2666,71 @@ void hugehelp(void)
" See also --key-type and -E, --cert.\n"
"\n"
" --krb <level>\n"
-, stdout);
- fputs(
" (FTP) Enable Kerberos authentication and use. The level must be\n"
" entered and should be one of 'clear', 'safe', 'confidential', or\n"
+, stdout);
+ fputs(
" 'private'. Should you use a level that is not one of these,\n"
" 'private' will instead be used.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --krb is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
" curl --krb clear ftp://example.com/\n"
"\n"
-, stdout);
- fputs(
-" See also --delegation and --ssl. --krb requires that the under-\n"
+" See also --delegation and --ssl. --krb requires that the under-\n"
" lying libcurl was built to support Kerberos.\n"
"\n"
" --libcurl <file>\n"
-" Append this option to any ordinary curl command line, and you\n"
-" will get libcurl-using C source code written to the file that\n"
+, stdout);
+ fputs(
+" Append this option to any ordinary curl command line, and you\n"
+" will get libcurl-using C source code written to the file that\n"
" does the equivalent of what your command-line operation does!\n"
"\n"
" This option is global and does not need to be specified for each\n"
-, stdout);
- fputs(
" use of -:, --next.\n"
"\n"
-" If this option is used several times, the last given file name\n"
-" will be used.\n"
-"\n"
+" If --libcurl is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --libcurl client.c https://example.com\n"
"\n"
" See also -v, --verbose.\n"
"\n"
" --limit-rate <speed>\n"
-" Specify the maximum transfer rate you want curl to use - for\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"
-, stdout);
- fputs(
-" limited pipe and you would like your transfer not to use your\n"
+" limited pipe and you would like your transfer not to use your\n"
" entire bandwidth. To make it slower than it otherwise would be.\n"
"\n"
-" 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. The suffixes (k, M, G, T, P) are 1024 based. For ex-\n"
, 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. The suffixes (k, M, G, T, P) are 1024 based. For ex-\n"
" ample 1k is 1024. Examples: 200K, 3m and 1G.\n"
"\n"
" The rate limiting logic works on averaging the transfer speed to\n"
-" no more than the set threshold over a period of multiple sec-\n"
+, stdout);
+ fputs(
+" no more than the set threshold over a period of multiple sec-\n"
" onds.\n"
"\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 --speed-limit option, that option will take\n"
+" precedence and might cripple the rate-limiting slightly, to help\n"
+" keeping the speed-limit logic working.\n"
"\n"
-, stdout);
- fputs(
-" If this option is used several times, the last one will be used.\n"
+" If --limit-rate is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Examples:\n"
+, stdout);
+ fputs(
" curl --limit-rate 100K https://example.com\n"
" curl --limit-rate 1000 https://example.com\n"
" curl --limit-rate 10M https://example.com\n"
@@ -2411,44 +2739,50 @@ void hugehelp(void)
"\n"
" -l, --list-only\n"
" (FTP POP3) (FTP) When listing an FTP directory, this switch\n"
-, stdout);
- fputs(
" forces a name-only view. This is especially useful if the user\n"
" wants to machine-parse the contents of an FTP directory since\n"
+, stdout);
+ fputs(
" the normal directory view does not use a standard look or for-\n"
" mat. When used like this, the option causes an NLST command to\n"
" be sent to the 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"
" (POP3) When retrieving a specific email from POP3, this switch\n"
+, stdout);
+ fputs(
" 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"
" Note: When combined with -X, --request, this option can be used\n"
-, stdout);
- fputs(
" to send a UIDL command instead, so the user may use the email's\n"
" unique identifier rather than its message-id to make the re-\n"
" quest.\n"
"\n"
+, stdout);
+ fputs(
+" Providing --list-only multiple times has no extra effect. Dis-\n"
+" able it again with --no-list-only.\n"
+"\n"
" Example:\n"
" curl --list-only ftp://example.com/dir/\n"
" See also -Q, --quote and -X, --request.\n"
"\n"
" --local-port <num/range>\n"
-" Set a preferred single number or range (FROM-TO) of local port\n"
+" Set a preferred single number or range (FROM-TO) of local port\n"
+" numbers to use for the connection(s). Note that port numbers by\n"
, stdout);
fputs(
-" numbers to use for the connection(s). Note that port numbers by\n"
-" nature are a scarce resource that will be busy at times so set-\n"
-" ting this range to something too narrow might cause unnecessary\n"
+" nature are a scarce resource that will be busy at times so set-\n"
+" ting this range to something too narrow might cause unnecessary\n"
" connection setup failures.\n"
"\n"
+" If --local-port is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --local-port 1000-3000 https://example.com\n"
"\n"
@@ -2463,86 +2797,101 @@ void hugehelp(void)
" a site to which you will send your authentication info (which is\n"
" plaintext in the case of HTTP Basic authentication).\n"
"\n"
+" Providing --location-trusted multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+" Disable it again with --no-location-trusted.\n"
+"\n"
" Example:\n"
" curl --location-trusted -u user:password https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also -u, --user.\n"
"\n"
" -L, --location\n"
-" (HTTP) If the server reports that the requested page has moved\n"
+" (HTTP) If the server reports that the requested page has moved\n"
" to a different location (indicated with a Location: header and a\n"
-" 3XX response code), this option will make curl redo the request\n"
-" on the new place. If used together with -i, --include or -I,\n"
-" --head, headers from all requested pages will be shown. When au-\n"
+" 3XX response code), this option will make curl redo the request\n"
, stdout);
fputs(
-" thentication is used, curl only sends its credentials to the\n"
-" initial host. If a redirect takes curl to a different host, it\n"
-" will not be able to intercept the user+password. See also --lo-\n"
-" cation-trusted on how to change this. You can limit the amount\n"
-" of redirects to follow by using the --max-redirs option.\n"
-"\n"
-" When curl follows a redirect and if the request is a POST, it\n"
+" on the new place. If used together with --include or -I, --head,\n"
+" headers from all requested pages will be shown. When authentica-\n"
+" tion is used, curl only sends its credentials to the initial\n"
+" host. If a redirect takes curl to a different host, it will not\n"
+" be able to intercept the user+password. See also --location-\n"
+" trusted on how to change this. You can limit the amount of redi-\n"
, stdout);
fputs(
-" will send the following request with a GET if the HTTP response\n"
-" was 301, 302, or 303. If the response code was any other 3xx\n"
+" rects to follow by using the --max-redirs option.\n"
+"\n"
+" When curl follows a redirect and if the request is a POST, it\n"
+" will send the following request with a GET if the HTTP response\n"
+" was 301, 302, or 303. If the response code was any other 3xx\n"
" code, curl will re-send the following request using the same un-\n"
" modified method.\n"
"\n"
" You can tell curl to not change POST requests to GET after a 30x\n"
-" response by using the dedicated options for that: --post301,\n"
-" --post302 and --post303.\n"
-"\n"
, stdout);
fputs(
-" The method set with -X, --request overrides the method curl\n"
-" would otherwise select to use.\n"
+" response by using the dedicated options for that: --post301,\n"
+" --post302 and --post303.\n"
+"\n"
+" The method set with --request overrides the method curl would\n"
+" otherwise select to use.\n"
+"\n"
+" Providing --location multiple times has no extra effect. Dis-\n"
+" able it again with --no-location.\n"
"\n"
" Example:\n"
" curl -L https://example.com\n"
"\n"
" See also --resolve and --alt-svc.\n"
"\n"
+, stdout);
+ fputs(
" --login-options <options>\n"
-" (IMAP POP3 SMTP) Specify the login options to use during server\n"
-" authentication.\n"
+" (IMAP LDAP POP3 SMTP) Specify the login options to use during\n"
+" server authentication.\n"
"\n"
" You can use login options to specify protocol specific options\n"
-, stdout);
- fputs(
" that may be used during authentication. At present only IMAP,\n"
" POP3 and SMTP support login options. For more information about\n"
" login options please see RFC 2384, RFC 5092 and IETF draft\n"
+, stdout);
+ fputs(
" draft-earhart-url-smtp-00.txt\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --login-options is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --login-options 'AUTH=*' imap://example.com\n"
"\n"
-, stdout);
- fputs(
" See also -u, --user. Added in 7.34.0.\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"
+" (SMTP) Specify a single address. This will be used to specify\n"
+" the authentication address (identity) of a submitted message\n"
+, stdout);
+ fputs(
" that is being relayed to another server.\n"
"\n"
+" If --mail-auth is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --mail-auth user@example.come -T mail smtp://example.com/\n"
"\n"
" See also --mail-rcpt and --mail-from.\n"
"\n"
" --mail-from <address>\n"
-, stdout);
- fputs(
" (SMTP) Specify a single address that the given mail should get\n"
" sent from.\n"
"\n"
+, stdout);
+ fputs(
+" If --mail-from is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --mail-from user@example.com -T mail smtp://example.com/\n"
"\n"
@@ -2550,21 +2899,24 @@ void hugehelp(void)
"\n"
" --mail-rcpt-allowfails\n"
" (SMTP) When sending data to multiple recipients, by default curl\n"
-" will abort SMTP conversation if at least one of the recipients\n"
+" will abort SMTP conversation if at least one of the recipients\n"
, stdout);
fputs(
" causes RCPT TO command to return an error.\n"
"\n"
-" The default behavior can be changed by passing --mail-rcpt-al-\n"
-" lowfails command-line option which will make curl ignore errors\n"
+" The default behavior can be changed by passing --mail-rcpt-al-\n"
+" lowfails command-line option which will make curl ignore errors\n"
" and proceed with the remaining valid recipients.\n"
"\n"
-" If all recipients trigger RCPT TO failures and this flag is\n"
-" specified, curl will still abort the SMTP conversation and re-\n"
+" If all recipients trigger RCPT TO failures and this flag is\n"
+" specified, curl will still abort the SMTP conversation and re-\n"
, stdout);
fputs(
" turn the error received from to the last RCPT TO command.\n"
"\n"
+" Providing --mail-rcpt-allowfails multiple times has no extra ef-\n"
+" fect. Disable it again with --no-mail-rcpt-allowfails.\n"
+"\n"
" Example:\n"
" curl --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com\n"
"\n"
@@ -2572,22 +2924,24 @@ void hugehelp(void)
"\n"
" --mail-rcpt <address>\n"
" (SMTP) Specify a single email address, user name or mailing list\n"
+, stdout);
+ fputs(
" name. Repeat this option several times to send to multiple re-\n"
" cipients.\n"
"\n"
-, stdout);
- fputs(
" When performing an address verification (VRFY command), the re-\n"
" cipient 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"
" When performing a mailing list expand (EXPN command), the recip-\n"
" ient should be specified using the mailing list name, such as\n"
+, stdout);
+ fputs(
" \"Friends\" or \"London-Office\". (Added in 7.34.0)\n"
"\n"
+" --mail-rcpt can be used several times in a command line\n"
+"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --mail-rcpt user@example.net smtp://example.com\n"
"\n"
" See also --mail-rcpt-allowfails.\n"
@@ -2595,41 +2949,50 @@ void hugehelp(void)
" -M, --manual\n"
" Manual. Display the huge help text.\n"
"\n"
+" Providing --manual multiple times has no extra effect. Disable\n"
+" it again with --no-manual.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --manual\n"
"\n"
" See also -v, --verbose, --libcurl and --trace.\n"
"\n"
" --max-filesize <bytes>\n"
" (FTP HTTP MQTT) Specify the maximum size (in bytes) of a file to\n"
-" download. If the file requested is larger than this value, the\n"
-, stdout);
- fputs(
+" download. If the file requested is larger than this value, the\n"
" transfer will not start and curl will return with exit code 63.\n"
"\n"
-" A size modifier may be used. For example, Appending 'k' or 'K'\n"
-" will count the number as kilobytes, 'm' or 'M' makes it\n"
-" megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K,\n"
+" A size modifier may be used. For example, Appending 'k' or 'K'\n"
+, stdout);
+ fputs(
+" will count the number as kilobytes, 'm' or 'M' makes it\n"
+" megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K,\n"
" 3m and 1G. (Added in 7.58.0)\n"
"\n"
-" NOTE: The file size is not always known prior to download, and\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"
+" fer ends up being larger than this given limit. If --max-file-\n"
, stdout);
fputs(
-" for such files this option has no effect even if the file trans-\n"
-" fer ends up being larger than this given limit. Example:\n"
+" size is provided several times, the last set value will be used.\n"
+"\n"
+" Example:\n"
" curl --max-filesize 100K https://example.com\n"
"\n"
" See also --limit-rate.\n"
"\n"
" --max-redirs <num>\n"
-" (HTTP) Set maximum number of redirections to follow. When -L,\n"
-" --location is used, to prevent curl from following too many\n"
+" (HTTP) Set maximum number of redirections to follow. When --lo-\n"
+" cation is used, to prevent curl from following too many redi-\n"
+" rects, by default, the limit is set to 50 redirects. Set this\n"
, stdout);
fputs(
-" redirects, by default, the limit is set to 50 redirects. Set\n"
-" this option to -1 to make it unlimited.\n"
+" option to -1 to make it unlimited.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --max-redirs is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --max-redirs 3 --location https://example.com\n"
@@ -2637,86 +3000,102 @@ void hugehelp(void)
" See also -L, --location.\n"
"\n"
" -m, --max-time <fractional seconds>\n"
-" Maximum time in seconds that you allow the whole operation to\n"
+" Maximum time in seconds that you allow each transfer to take.\n"
+" This is useful for preventing your batch jobs from hanging for\n"
, stdout);
fputs(
-" 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"
-" 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.\n"
+" hours due to slow networks or links going down. 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.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If you enable retrying the transfer (--retry) then the maximum\n"
+" time counter is reset each time the transfer is retried. You can\n"
+" use --retry-max-time to limit the retry time.\n"
"\n"
-" Examples:\n"
, stdout);
fputs(
+" If --max-time is provided several times, the last set value will\n"
+" be used.\n"
+"\n"
+" Examples:\n"
" curl --max-time 10 https://example.com\n"
" curl --max-time 2.92 https://example.com\n"
"\n"
-" See also --connect-timeout.\n"
+" See also --connect-timeout and --retry-max-time.\n"
"\n"
" --metalink\n"
" This option was previously used to specify a metalink resource.\n"
" Metalink support has been disabled in curl since 7.78.0 for se-\n"
+, stdout);
+ fputs(
" curity reasons.\n"
"\n"
+" If --metalink is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --metalink file https://example.com\n"
"\n"
" See also -Z, --parallel.\n"
"\n"
" --negotiate\n"
-, stdout);
- fputs(
" (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
"\n"
-" 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 or 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"
+" This option requires a library built with GSS-API or SSPI sup-\n"
+" port. Use --version to see if your curl supports GSS-API/SSPI or\n"
, stdout);
fputs(
-" --user option are not actually used.\n"
+" SPNEGO.\n"
+"\n"
+" When using this option, you must also provide a fake --user op-\n"
+" tion to activate the authentication code properly. Sending a '-u\n"
+" :' is enough as the user name and password from the --user op-\n"
+" tion are not actually used.\n"
"\n"
-" If this option is used several times, only the first one is\n"
+" If this option is used several times, only the first one is\n"
" used.\n"
"\n"
+" Providing --negotiate multiple times has no extra effect.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --negotiate -u : https://example.com\n"
"\n"
" See also --basic, --ntlm, --anyauth and --proxy-negotiate.\n"
"\n"
" --netrc-file <filename>\n"
-" This option is similar to -n, --netrc, except that you provide\n"
-" the path (absolute or relative) to the netrc file that curl\n"
-, stdout);
- fputs(
-" should use. You can only specify one netrc file per invocation.\n"
-" If several --netrc-file options are provided, the last one will\n"
-" be used.\n"
+" This option is similar to -n, --netrc, except that you provide\n"
+" the path (absolute or relative) to the netrc file that curl\n"
+" should use. You can only specify one netrc file per invocation.\n"
"\n"
" It will abide by --netrc-optional if specified.\n"
"\n"
+, stdout);
+ fputs(
+" If --netrc-file is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --netrc-file netrc https://example.com\n"
"\n"
" See also -n, --netrc, -u, --user and -K, --config. This option\n"
-" overrides -n, --netrc.\n"
+" is mutually exclusive to -n, --netrc.\n"
"\n"
" --netrc-optional\n"
+" Similar to -n, --netrc, but this option makes the .netrc usage\n"
+" optional and not mandatory as the --netrc option does.\n"
+"\n"
, stdout);
fputs(
-" Similar to -n, --netrc, but this option makes the .netrc usage\n"
-" optional and not mandatory as the -n, --netrc option does.\n"
+" Providing --netrc-optional multiple times has no extra effect.\n"
+" Disable it again with --no-netrc-optional.\n"
"\n"
" Example:\n"
" curl --netrc-optional https://example.com\n"
"\n"
-" See also --netrc-file. This option overrides -n, --netrc.\n"
+" See also --netrc-file. This option is mutually exclusive to -n,\n"
+" --netrc.\n"
"\n"
" -n, --netrc\n"
" Makes curl scan the .netrc (_netrc on Windows) file in the\n"
@@ -2738,93 +3117,134 @@ void hugehelp(void)
"\n"
" machine host.domain.com\n"
" login myself\n"
-" password secret\"\n"
+" password secret\n"
+"\n"
+" Providing --netrc multiple times has no extra effect. Disable\n"
+" it again with --no-netrc.\n"
"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --netrc https://example.com\n"
"\n"
" See also --netrc-file, -K, --config and -u, --user.\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 re-\n"
-" quests, each with their own specific options, for example, such\n"
+" associated options. This allows you to send several URL re-\n"
+" quests, each with their own specific options, for example, such\n"
" as different user names or custom requests for each.\n"
"\n"
-" -:, --next will reset all local options and only global ones\n"
-" will have their values survive over to the operation following\n"
, stdout);
fputs(
-" the -:, --next instruction. Global options include -v, --ver-\n"
-" bose, --trace, --trace-ascii and --fail-early.\n"
+" --next will reset all local options and only global ones will\n"
+" have their values survive over to the operation following the\n"
+" --next instruction. Global options include -v, --verbose,\n"
+" --trace, --trace-ascii and --fail-early.\n"
"\n"
-" For example, you can do both a GET and a POST in a single com-\n"
+" For example, you can do both a GET and a POST in a single com-\n"
" mand line:\n"
"\n"
" curl www1.example.com --next -d postthis www2.example.com\n"
"\n"
+, stdout);
+ fputs(
+" --next can be used several times in a command line\n"
+"\n"
" Examples:\n"
" curl https://example.com --next -d postthis www2.example.com\n"
" curl -I https://example.com --next https://example.net/\n"
"\n"
-, stdout);
- fputs(
" See also -Z, --parallel and -K, --config. Added in 7.36.0.\n"
"\n"
" --no-alpn\n"
-" (HTTPS) Disable the ALPN TLS extension. ALPN is enabled by de-\n"
-" fault if libcurl was built with an SSL library that supports\n"
-" ALPN. ALPN is used by a libcurl that supports HTTP/2 to negoti-\n"
+" (HTTPS) Disable the ALPN TLS extension. ALPN is enabled by de-\n"
+" fault if libcurl was built with an SSL library that supports\n"
+, stdout);
+ fputs(
+" ALPN. ALPN is used by a libcurl that supports HTTP/2 to negoti-\n"
" ate HTTP/2 support with the server during https sessions.\n"
"\n"
+" Providing --no-alpn multiple times has no extra effect. Disable\n"
+" it again with --alpn.\n"
+"\n"
" Example:\n"
" curl --no-alpn https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --no-npn and --http2. --no-alpn requires that the un-\n"
" derlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"
+, stdout);
+ fputs(
" -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"
" will have the effect that it will output the data in chunks, not\n"
" necessarily exactly when the data arrives. Using this option\n"
-, stdout);
- fputs(
" will disable that buffering.\n"
"\n"
-" Note that this is the negated option name documented. You can\n"
-" thus use --buffer to enforce the buffering.\n"
+" Providing --no-buffer multiple times has no extra effect. Dis-\n"
+, stdout);
+ fputs(
+" able it again with --buffer.\n"
"\n"
" Example:\n"
" curl --no-buffer https://example.com\n"
"\n"
" See also -#, --progress-bar.\n"
"\n"
+" --no-clobber\n"
+" When used in conjunction with the -o, --output, -J, --remote-\n"
+" header-name, -O, --remote-name, or --remote-name-all options,\n"
+" curl avoids overwriting files that already exist. Instead, a dot\n"
+" and a number gets appended to the name of the file that would be\n"
+, stdout);
+ fputs(
+" created, up to filename.100 after which it will not create any\n"
+" file.\n"
+"\n"
+" Note that this is the negated option name documented. You can\n"
+" thus use --clobber to enforce the clobbering, even if --remote-\n"
+" header-name or -J is specified.\n"
+"\n"
+" Providing --no-clobber multiple times has no extra effect. Dis-\n"
+" able it again with --clobber.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --no-clobber --output local/dir/file https://example.com\n"
+" See also -o, --output and -O, --remote-name. Added in 7.83.0.\n"
+"\n"
" --no-keepalive\n"
" Disables the use of keepalive messages on the TCP connection.\n"
" curl otherwise enables them by default.\n"
"\n"
-, stdout);
- fputs(
" Note that this is the negated option name documented. You can\n"
" thus use --keepalive to enforce keepalive.\n"
"\n"
+, stdout);
+ fputs(
+" Providing --no-keepalive multiple times has no extra effect.\n"
+" Disable it again with --keepalive.\n"
+"\n"
" Example:\n"
" curl --no-keepalive https://example.com\n"
"\n"
" See also --keepalive-time.\n"
"\n"
" --no-npn\n"
-" (HTTPS) Disable the NPN TLS extension. NPN is enabled by default\n"
-" if libcurl was built with an SSL library that supports NPN. NPN\n"
+" (HTTPS) In curl 7.86.0 and later, curl never uses NPN.\n"
+"\n"
+" Disable the NPN TLS extension. NPN is enabled by default if\n"
+" libcurl was built with an SSL library that supports NPN. NPN is\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"
+" used by a libcurl that supports HTTP/2 to negotiate HTTP/2 sup-\n"
+" port with the server during https sessions.\n"
+"\n"
+" Providing --no-npn multiple times has no extra effect. Disable\n"
+" it again with --npn.\n"
"\n"
" Example:\n"
" curl --no-npn https://example.com\n"
@@ -2832,36 +3252,44 @@ void hugehelp(void)
" See also --no-alpn and --http2. --no-npn requires that the un-\n"
" derlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"
-" --no-progress-meter\n"
-" Option to switch off the progress meter output without muting or\n"
, stdout);
fputs(
-" otherwise affecting warning and informational messages like -s,\n"
+" --no-progress-meter\n"
+" Option to switch off the progress meter output without muting or\n"
+" otherwise affecting warning and informational messages like\n"
" --silent does.\n"
"\n"
" Note that this is the negated option name documented. You can\n"
" thus use --progress-meter to enable the progress meter again.\n"
"\n"
+" Providing --no-progress-meter multiple times has no extra ef-\n"
+, stdout);
+ fputs(
+" fect. Disable it again with --progress-meter.\n"
+"\n"
" Example:\n"
" curl --no-progress-meter -o store https://example.com\n"
"\n"
" See also -v, --verbose and -s, --silent. Added in 7.67.0.\n"
"\n"
" --no-sessionid\n"
+" (TLS) 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(
-" (TLS) 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"
" there seem to be broken SSL implementations in the wild that may\n"
" require you to disable this in order for you to succeed.\n"
"\n"
-" Note that this is the negated option name documented. You can\n"
-, stdout);
- fputs(
+" Note that this is the negated option name documented. You can\n"
" thus use --sessionid to enforce session-ID caching.\n"
"\n"
+" Providing --no-sessionid multiple times has no extra effect.\n"
+" Disable it again with --sessionid.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --no-sessionid https://example.com\n"
"\n"
" See also -k, --insecure.\n"
@@ -2870,20 +3298,22 @@ void hugehelp(void)
" Comma-separated list of hosts for which not to use a proxy, if\n"
" one is specified. The only wildcard is a single * character,\n"
" which matches all hosts, and effectively disables the proxy.\n"
+" Each name in this list is matched as either a domain which con-\n"
, stdout);
fputs(
-" Each name in this list is matched as either a domain which con-\n"
" tains the hostname, or the hostname itself. For example, lo-\n"
" cal.com would match local.com, local.com:80, and www.local.com,\n"
" but not www.notlocal.com.\n"
"\n"
" Since 7.53.0, This option overrides the environment variables\n"
" that disable the proxy ('no_proxy' and 'NO_PROXY'). If there's\n"
-, stdout);
- fputs(
" an environment variable disabling a proxy, you can set the no-\n"
" proxy list to \"\" to override it.\n"
"\n"
+, stdout);
+ fputs(
+" If --noproxy is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --noproxy \"www.example\" https://example.com\n"
"\n"
@@ -2891,76 +3321,80 @@ void hugehelp(void)
"\n"
" --ntlm-wb\n"
" (HTTP) Enables NTLM much in the style --ntlm does, but hand over\n"
-" the authentication to the separate binary ntlmauth application\n"
+" the authentication to the separate binary ntlmauth application\n"
" that is executed when needed.\n"
"\n"
-" Example:\n"
, stdout);
fputs(
+" Providing --ntlm-wb multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
" curl --ntlm-wb -u user:password https://example.com\n"
"\n"
" See also --ntlm and --proxy-ntlm.\n"
"\n"
-" --ntlm (HTTP) Enables NTLM authentication. The NTLM authentication\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"
+" It is a proprietary protocol, reverse-engineered by clever peo-\n"
, stdout);
fputs(
-" behavior should not be endorsed, you should encourage everyone\n"
-" who uses NTLM to switch to a public and documented authentica-\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"
" tion method instead, such as Digest.\n"
"\n"
-" If you want to enable NTLM for your proxy authentication, then\n"
+" If you want to enable NTLM for your proxy authentication, then\n"
" use --proxy-ntlm.\n"
"\n"
-" If this option is used several times, only the first one is\n"
+" If this option is used several times, only the first one is\n"
" used.\n"
-"\n"
-" Example:\n"
, stdout);
fputs(
+"\n"
+" Providing --ntlm multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
" curl --ntlm -u user:password https://example.com\n"
"\n"
-" See also --proxy-ntlm. --ntlm requires that the underlying\n"
-" libcurl was built to support TLS. This option overrides --basic\n"
-" and --negotiate and --digest and --anyauth.\n"
+" See also --proxy-ntlm. --ntlm requires that the underlying\n"
+" libcurl was built to support TLS. This option is mutually exclu-\n"
+" sive to --basic and --negotiate and --digest and --anyauth.\n"
"\n"
" --oauth2-bearer <token>\n"
-" (IMAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH 2.0\n"
-" server authentication. The Bearer Token is used in conjunction\n"
+" (IMAP LDAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH\n"
, stdout);
fputs(
-" with the user name which can be specified as part of the --url\n"
-" or -u, --user options.\n"
+" 2.0 server authentication. The Bearer Token is used in conjunc-\n"
+" tion with the user name which can be specified as part of the\n"
+" --url or --user options.\n"
"\n"
-" The Bearer Token and user name are formatted according to RFC\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"
+" If --oauth2-bearer is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --oauth2-bearer \"mF_9.B5f-4.1JqM\" https://example.com\n"
"\n"
" See also --basic, --ntlm and --digest. Added in 7.33.0.\n"
"\n"
" --output-dir <dir>\n"
-"\n"
-, stdout);
- fputs(
" This option specifies the directory in which files should be\n"
-" stored, when -O, --remote-name or -o, --output are used.\n"
+" stored, when --remote-name or --output are used.\n"
"\n"
" The given output directory is used for all URLs and output op-\n"
" tions on the command line, up until the first -:, --next.\n"
"\n"
+, stdout);
+ fputs(
" If the specified target directory does not exist, the operation\n"
" will fail unless --create-dirs is also used.\n"
"\n"
-, stdout);
- fputs(
-" If this option is used multiple times, the last specified direc-\n"
-" tory will be used.\n"
+" If --output-dir is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --output-dir \"tmp\" -O https://example.com\n"
@@ -2969,10 +3403,10 @@ void hugehelp(void)
" in 7.73.0.\n"
"\n"
" -o, --output <file>\n"
-" Write output to <file> instead of stdout. If you are using {} or\n"
-" [] to fetch multiple documents, you should quote the URL and you\n"
, stdout);
fputs(
+" Write output to <file> instead of stdout. If you are using {} or\n"
+" [] to fetch multiple documents, you should quote the URL and you\n"
" can use '#' followed by a number in the <file> specifier. That\n"
" variable will be replaced with the current string for the URL\n"
" being fetched. Like in:\n"
@@ -2981,11 +3415,11 @@ void hugehelp(void)
"\n"
" or use several variables like:\n"
"\n"
+, stdout);
+ fputs(
" curl \"http://{site,host}.host[1-5].com\" -o \"#1_#2\"\n"
"\n"
" You may use this option as many times as the number of URLs you\n"
-, stdout);
- fputs(
" have. For example, if you specify two URLs on the same command\n"
" line, you can use it like this:\n"
"\n"
@@ -2993,12 +3427,12 @@ void hugehelp(void)
"\n"
" and the order of the -o options and the URLs does not matter,\n"
" just that the first -o is for the first URL and so on, so the\n"
+, stdout);
+ fputs(
" above command line can also be written as\n"
"\n"
" curl example.com example.net -o aa -o bb\n"
"\n"
-, stdout);
- fputs(
" See also the --create-dirs option to create the local directo-\n"
" ries dynamically. Specifying the output as '-' (a single dash)\n"
" will force the output to be done to stdout.\n"
@@ -3008,40 +3442,47 @@ void hugehelp(void)
"\n"
" curl example.com -o /dev/null\n"
"\n"
+, stdout);
+ fputs(
" Or for Windows use nul:\n"
" curl example.com -o nul\n"
"\n"
+" --output can be used several times in a command line\n"
+"\n"
" Examples:\n"
-, stdout);
- fputs(
" curl -o file https://example.com\n"
" curl \"http://{one,two}.example.com\" -o \"file_#1.txt\"\n"
" curl \"http://{site,host}.host[1-5].com\" -o \"#1_#2\"\n"
" curl -o file https://example.com -o file2 https://example.net\n"
"\n"
+, stdout);
+ fputs(
" See also -O, --remote-name, --remote-name-all and -J, --remote-\n"
" header-name.\n"
"\n"
" --parallel-immediate\n"
" When doing parallel transfers, this option will instruct curl\n"
-, stdout);
- fputs(
" that it should rather prefer opening up more connections in par-\n"
" allel at once rather than waiting to see if new transfers can be\n"
" added as multiplexed streams on another connection.\n"
"\n"
+, stdout);
+ fputs(
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
+" Providing --parallel-immediate multiple times has no extra ef-\n"
+" fect. Disable it again with --no-parallel-immediate.\n"
+"\n"
" Example:\n"
" curl --parallel-immediate -Z https://example.com -o file1 https://example.com -o file2\n"
"\n"
-, stdout);
- fputs(
" See also -Z, --parallel and --parallel-max. Added in 7.68.0.\n"
"\n"
" --parallel-max <num>\n"
-" When asked to do parallel transfers, using -Z, --parallel, this\n"
+, stdout);
+ fputs(
+" When asked to do parallel transfers, using -Z, --parallel, this\n"
" option controls the maximum amount of transfers to do simultane-\n"
" ously.\n"
"\n"
@@ -3049,6 +3490,9 @@ void hugehelp(void)
" use of -:, --next.\n"
" The default is 50.\n"
"\n"
+" If --parallel-max is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
, stdout);
fputs(
@@ -3063,9 +3507,12 @@ void hugehelp(void)
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
-" Example:\n"
+" Providing --parallel multiple times has no extra effect. Dis-\n"
, stdout);
fputs(
+" able it again with --no-parallel.\n"
+"\n"
+" Example:\n"
" curl --parallel https://example.com -o file1 https://example.com -o file2\n"
"\n"
" See also -:, --next and -v, --verbose. Added in 7.66.0.\n"
@@ -3073,46 +3520,52 @@ void hugehelp(void)
" --pass <phrase>\n"
" (SSH TLS) Passphrase for the private key.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --pass is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --pass secret --key file https://example.com\n"
"\n"
" See also --key and -u, --user.\n"
"\n"
" --path-as-is\n"
-, stdout);
- fputs(
" Tell curl to not handle sequences of /../ or /./ in the given\n"
" URL path. Normally curl will squash or merge them according to\n"
" standards but with this option set you tell it not to do that.\n"
"\n"
+" Providing --path-as-is multiple times has no extra effect. Dis-\n"
+" able it again with --no-path-as-is.\n"
+"\n"
+, stdout);
+ fputs(
" Example:\n"
" curl --path-as-is https://example.com/../../etc/passwd\n"
"\n"
" See also --request-target. Added in 7.42.0.\n"
"\n"
" --pinnedpubkey <hashes>\n"
-" (TLS) Tells curl to use the specified public key file (or\n"
-, stdout);
- fputs(
-" hashes) to verify the peer. This can be a path to a file which\n"
+" (TLS) Tells curl to use the specified public key file (or\n"
+" hashes) to verify the peer. This can be a path to a file which\n"
" contains a single public key in PEM or DER format, or any number\n"
" of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
-" rated by ';'.\n"
-"\n"
-" When negotiating a TLS or SSL connection, the server sends a\n"
-" certificate indicating its identity. A public key is extracted\n"
, stdout);
fputs(
-" 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"
+" rated by ';'.\n"
+"\n"
+" When negotiating a TLS or SSL connection, the server sends a\n"
+" 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"
" PEM/DER support:\n"
"\n"
" 7.39.0: OpenSSL, GnuTLS and GSKit\n"
"\n"
+, stdout);
+ fputs(
" 7.43.0: NSS and wolfSSL\n"
"\n"
" 7.47.0: mbedtls\n"
@@ -3122,44 +3575,51 @@ void hugehelp(void)
"\n"
" 7.47.0: mbedtls\n"
"\n"
-, stdout);
- fputs(
" Other SSL backends not supported.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --pinnedpubkey is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Examples:\n"
" curl --pinnedpubkey keyfile https://example.com\n"
+, stdout);
+ fputs(
" curl --pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com\n"
"\n"
" See also --hostpubsha256. Added in 7.39.0.\n"
"\n"
" --post301\n"
" (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
-, stdout);
- fputs(
" requests into GET requests when following a 301 redirection. The\n"
" non-RFC behavior is ubiquitous in web browsers, so curl does the\n"
" conversion by default to maintain consistency. However, a server\n"
+, stdout);
+ fputs(
" may require a POST to remain a POST after such a redirection.\n"
" This option is meaningful only when using -L, --location.\n"
"\n"
+" Providing --post301 multiple times has no extra effect. Disable\n"
+" it again with --no-post301.\n"
+"\n"
" Example:\n"
" curl --post301 --location -d \"data\" https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --post302, --post303 and -L, --location.\n"
"\n"
" --post302\n"
+, stdout);
+ fputs(
" (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
" requests into GET requests when following a 302 redirection. The\n"
" non-RFC behavior is ubiquitous in web browsers, so curl does the\n"
" conversion by default to maintain consistency. However, a server\n"
-" may require a POST to remain a POST after such a redirection.\n"
+" may require a POST to remain a POST after such a redirection.\n"
+" This option is meaningful only when using -L, --location.\n"
+"\n"
, stdout);
fputs(
-" This option is meaningful only when using -L, --location.\n"
+" Providing --post302 multiple times has no extra effect. Disable\n"
+" it again with --no-post302.\n"
"\n"
" Example:\n"
" curl --post302 --location -d \"data\" https://example.com\n"
@@ -3169,74 +3629,82 @@ void hugehelp(void)
" --post303\n"
" (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST\n"
" requests into GET requests when following 303 redirections. A\n"
-" server may require a POST to remain a POST after a 303 redirect-\n"
, stdout);
fputs(
+" server may require a POST to remain a POST after a 303 redirect-\n"
" ion. This option is meaningful only when using -L, --location.\n"
"\n"
+" Providing --post303 multiple times has no extra effect. Disable\n"
+" it again with --no-post303.\n"
+"\n"
" Example:\n"
" curl --post303 --location -d \"data\" https://example.com\n"
"\n"
" See also --post302, --post301 and -L, --location.\n"
"\n"
" --preproxy [protocol://]host[:port]\n"
-" Use the specified SOCKS proxy before connecting to an HTTP or\n"
-" HTTPS -x, --proxy. In such a case curl first connects to the\n"
, stdout);
fputs(
-" SOCKS proxy and then connects (through SOCKS) to the HTTP or\n"
+" Use the specified SOCKS proxy before connecting to an HTTP or\n"
+" HTTPS -x, --proxy. In such a case curl first connects to the\n"
+" SOCKS proxy and then connects (through SOCKS) to the HTTP or\n"
" HTTPS proxy. Hence pre proxy.\n"
"\n"
" The pre proxy string should be specified with a protocol:// pre-\n"
-" fix to specify alternative proxy protocols. Use socks4://,\n"
-" socks4a://, socks5:// or socks5h:// to request the specific\n"
-" SOCKS version to be used. No protocol specified will make curl\n"
-" default to SOCKS4.\n"
-"\n"
+" fix to specify alternative proxy protocols. Use socks4://,\n"
, stdout);
fputs(
-" If the port number is not specified in the proxy string, it is\n"
+" socks4a://, socks5:// or socks5h:// to request the specific\n"
+" SOCKS version to be used. No protocol specified will make curl\n"
+" default to SOCKS4.\n"
+"\n"
+" If the port number is not specified in the proxy string, it is\n"
" assumed to be 1080.\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"
+, stdout);
+ fputs(
" ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
-"\n"
+" If --preproxy is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
-, stdout);
- fputs(
" curl --preproxy socks5://proxy.example -x http://http.example https://example.com\n"
"\n"
" See also -x, --proxy and --socks5. Added in 7.52.0.\n"
"\n"
" -#, --progress-bar\n"
" Make curl display transfer progress as a simple progress bar in-\n"
+, stdout);
+ fputs(
" stead of the standard, more informational, meter.\n"
"\n"
" This progress bar draws a single line of '#' characters across\n"
" the screen and shows a percentage if the transfer size is known.\n"
-, stdout);
- fputs(
" For transfers without a known size, there will be space ship\n"
" (-=o=-) that moves back and forth but only while data is being\n"
" transferred, with a set of flying hash sign symbols on top.\n"
"\n"
+, stdout);
+ fputs(
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
+" Providing --progress-bar multiple times has no extra effect.\n"
+" Disable it again with --no-progress-bar.\n"
+"\n"
" Example:\n"
" curl -# -O https://example.com\n"
"\n"
" See also --styled-output.\n"
"\n"
" --proto-default <protocol>\n"
-, stdout);
- fputs(
" Tells curl to use protocol for any URL missing a scheme name.\n"
"\n"
-" An unknown or unsupported protocol causes error CURLE_UNSUP-\n"
+, stdout);
+ fputs(
+" An unknown or unsupported protocol causes error CURLE_UNSUP-\n"
" PORTED_PROTOCOL (1).\n"
"\n"
" This option does not change the default proxy protocol (http).\n"
@@ -3244,11 +3712,14 @@ void hugehelp(void)
" Without this option set, curl guesses protocol based on the host\n"
" name, see --url for details.\n"
"\n"
-" Example:\n"
-" curl --proto-default https ftp.example.com\n"
+" If --proto-default is provided several times, the last set value\n"
+" will be used.\n"
"\n"
+" Example:\n"
, stdout);
fputs(
+" curl --proto-default https ftp.example.com\n"
+"\n"
" See also --proto and --proto-redir. Added in 7.45.0.\n"
"\n"
" --proto-redir <protocols>\n"
@@ -3258,99 +3729,114 @@ void hugehelp(void)
"\n"
" Example, allow only HTTP and HTTPS on redirect:\n"
"\n"
-" curl --proto-redir -all,http,https http://example.com\n"
-"\n"
, stdout);
fputs(
+" curl --proto-redir -all,http,https http://example.com\n"
+"\n"
" By default curl will only allow HTTP, HTTPS, FTP and FTPS on re-\n"
" direct (since 7.65.2). Specifying all or +all enables all proto-\n"
" cols on redirects, which is not good for security.\n"
"\n"
+" If --proto-redir is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --proto-redir =http,https https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also --proto.\n"
"\n"
" --proto <protocols>\n"
-" Tells curl to limit what protocols it may use for transfers.\n"
-, stdout);
- fputs(
-" Protocols are evaluated left to right, are comma separated, and\n"
-" are each a protocol name or 'all', optionally prefixed by zero\n"
+" Tells curl to limit what protocols it may use for transfers.\n"
+" Protocols are evaluated left to right, are comma separated, and\n"
+" are each a protocol name or 'all', optionally prefixed by zero\n"
" or more modifiers. Available modifiers are:\n"
"\n"
" + Permit this protocol in addition to protocols already permit-\n"
+, stdout);
+ fputs(
" ted (this is the default if no modifier is used).\n"
"\n"
-" - Deny this protocol, removing it from the list of protocols\n"
+" - Deny this protocol, removing it from the list of protocols\n"
" already permitted.\n"
"\n"
-, stdout);
- fputs(
-" = Permit only this protocol (ignoring the list already permit-\n"
-" ted), though subject to later modification by subsequent en-\n"
+" = Permit only this protocol (ignoring the list already permit-\n"
+" ted), though subject to later modification by subsequent en-\n"
" tries in the comma separated list.\n"
"\n"
" For example:\n"
"\n"
" --proto -ftps uses the default protocols, but disables ftps\n"
"\n"
+, stdout);
+ fputs(
" --proto -all,https,+http\n"
" only enables http and https\n"
"\n"
" --proto =http,https\n"
-, stdout);
- fputs(
" 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"
-" tocols, without relying upon support for that protocol being\n"
-" built into curl to avoid an error.\n"
+" Unknown and disabled protocols produce a warning. This allows\n"
+" scripts to safely rely on being able to disable potentially dan-\n"
+" gerous protocols, without relying upon support for that protocol\n"
+" being built into curl to avoid an error.\n"
"\n"
-" This option can be used multiple times, in which case the effect\n"
, stdout);
fputs(
-" is the same as concatenating the protocols into one instance of\n"
+" This option can be used multiple times, in which case the effect\n"
+" is the same as concatenating the protocols into one instance of\n"
" the option.\n"
"\n"
+" If --proto is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
" Example:\n"
" curl --proto =http,https,sftp https://example.com\n"
"\n"
" See also --proto-redir and --proto-default.\n"
"\n"
" --proxy-anyauth\n"
+, stdout);
+ fputs(
" Tells curl to pick a suitable authentication method when commu-\n"
" nicating with the given HTTP proxy. This might cause an extra\n"
" request/response round-trip.\n"
"\n"
-, stdout);
- fputs(
+" Providing --proxy-anyauth multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --proxy-anyauth --proxy-user user:passwd -x proxy https://example.com\n"
"\n"
" See also -x, --proxy, --proxy-basic and --proxy-digest.\n"
"\n"
" --proxy-basic\n"
+, 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"
"\n"
+" Providing --proxy-basic multiple times has no extra effect.\n"
+"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --proxy-basic --proxy-user user:passwd -x proxy https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also -x, --proxy, --proxy-anyauth and --proxy-digest.\n"
"\n"
" --proxy-cacert <file>\n"
" Same as --cacert but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-cacert is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --proxy-cacert CA-file.txt -x https://proxy https://example.com\n"
"\n"
-" See also --proxy-capath, --cacert, --capath and -x, --proxy.\n"
+" See also --proxy-capath, --cacert, --capath and -x, --proxy.\n"
" Added in 7.52.0.\n"
"\n"
, stdout);
@@ -3358,6 +3844,9 @@ void hugehelp(void)
" --proxy-capath <dir>\n"
" Same as --capath but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-capath is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --proxy-capath /local/directory -x https://proxy https://example.com\n"
"\n"
@@ -3365,17 +3854,25 @@ void hugehelp(void)
" 7.52.0.\n"
"\n"
" --proxy-cert-type <type>\n"
+, stdout);
+ fputs(
" Same as --cert-type but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-cert-type is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --proxy-cert-type PEM --proxy-cert file -x https://proxy https://example.com\n"
"\n"
" See also --proxy-cert. Added in 7.52.0.\n"
"\n"
" --proxy-cert <cert[:passwd]>\n"
-" Same as -E, --cert but used in HTTPS proxy context.\n"
+" Same as --cert but used in HTTPS proxy context.\n"
+"\n"
+, stdout);
+ fputs(
+" If --proxy-cert is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --proxy-cert file -x https://proxy https://example.com\n"
@@ -3383,11 +3880,14 @@ void hugehelp(void)
" See also --proxy-cert-type. Added in 7.52.0.\n"
"\n"
" --proxy-ciphers <list>\n"
-, stdout);
- fputs(
" Same as --ciphers but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-ciphers is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --proxy-ciphers ECDHE-ECDSA-AES256-CCM8 -x https://proxy https://example.com\n"
"\n"
" See also --ciphers, --curves and -x, --proxy. Added in 7.52.0.\n"
@@ -3395,6 +3895,9 @@ void hugehelp(void)
" --proxy-crlfile <file>\n"
" Same as --crlfile but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-crlfile is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --proxy-crlfile rejects.txt -x https://proxy https://example.com\n"
"\n"
@@ -3407,51 +3910,59 @@ void hugehelp(void)
" with the given proxy. Use --digest for enabling HTTP Digest with\n"
" a remote host.\n"
"\n"
+" Providing --proxy-digest multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --proxy-digest --proxy-user user:passwd -x proxy https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also -x, --proxy, --proxy-anyauth and --proxy-basic.\n"
"\n"
" --proxy-header <header/@file>\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"
+" the equivalent option to --header but is for proxy communication\n"
+" only like in CONNECT requests when you want a separate header\n"
+" sent to the proxy to what is sent to the actual remote host.\n"
, stdout);
fputs(
+"\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"
" 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 re-\n"
+" Headers specified with this option will not be included in re-\n"
" quests that curl knows will not be sent to a proxy.\n"
"\n"
-" Starting in 7.55.0, this option can take an argument in @file-\n"
, stdout);
fputs(
-" name style, which then adds a header for each line in the input\n"
+" Starting in 7.55.0, this option can take an argument in @file-\n"
+" name style, which then adds a header for each line in the input\n"
" file. Using @- will make curl read the header file from stdin.\n"
"\n"
-" This option can be used multiple times to add/replace/remove\n"
+" This option can be used multiple times to add/replace/remove\n"
" multiple headers.\n"
"\n"
+" --proxy-header can be used several times in a command line\n"
+"\n"
" Examples:\n"
-" curl --proxy-header \"X-First-Name: Joe\" -x http://proxy https://example.com\n"
-" curl --proxy-header \"User-Agent: surprise\" -x http://proxy https://example.com\n"
, stdout);
fputs(
+" curl --proxy-header \"X-First-Name: Joe\" -x http://proxy https://example.com\n"
+" curl --proxy-header \"User-Agent: surprise\" -x http://proxy https://example.com\n"
" curl --proxy-header \"Host:\" -x http://proxy https://example.com\n"
"\n"
" See also -x, --proxy. Added in 7.37.0.\n"
"\n"
" --proxy-insecure\n"
-" Same as -k, --insecure but used in HTTPS proxy context.\n"
+" Same as --insecure but used in HTTPS proxy context.\n"
+"\n"
+" Providing --proxy-insecure multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+" Disable it again with --no-proxy-insecure.\n"
"\n"
" Example:\n"
" curl --proxy-insecure -x https://proxy https://example.com\n"
@@ -3461,9 +3972,12 @@ void hugehelp(void)
" --proxy-key-type <type>\n"
" Same as --key-type but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-key-type is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
, stdout);
fputs(
-" Example:\n"
" curl --proxy-key-type DER --proxy-key here -x https://proxy https://example.com\n"
"\n"
" See also --proxy-key and -x, --proxy. Added in 7.52.0.\n"
@@ -3471,31 +3985,40 @@ void hugehelp(void)
" --proxy-key <key>\n"
" Same as --key but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-key is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --proxy-key here -x https://proxy https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also --proxy-key-type and -x, --proxy. Added in 7.52.0.\n"
"\n"
" --proxy-negotiate\n"
-, stdout);
- fputs(
" 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.\n"
"\n"
+" Providing --proxy-negotiate multiple times has no extra effect.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --proxy-negotiate --proxy-user user:passwd -x proxy https://example.com\n"
"\n"
" See also --proxy-anyauth and --proxy-basic.\n"
"\n"
" --proxy-ntlm\n"
" Tells curl to use HTTP NTLM authentication when communicating\n"
-, stdout);
- fputs(
" with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
" host.\n"
"\n"
+" Providing --proxy-ntlm multiple times has no extra effect.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --proxy-ntlm --proxy-user user:passwd -x http://proxy https://example.com\n"
"\n"
" See also --proxy-negotiate and --proxy-anyauth.\n"
@@ -3503,6 +4026,9 @@ void hugehelp(void)
" --proxy-pass <phrase>\n"
" Same as --pass but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-pass is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --proxy-pass secret --proxy-key here -x https://proxy https://example.com\n"
"\n"
@@ -3511,25 +4037,26 @@ void hugehelp(void)
" See also -x, --proxy and --proxy-key. Added in 7.52.0.\n"
"\n"
" --proxy-pinnedpubkey <hashes>\n"
-" (TLS) Tells curl to use the specified public key file (or\n"
-" hashes) to verify the proxy. This can be a path to a file which\n"
+" (TLS) Tells curl to use the specified public key file (or\n"
+" hashes) to verify the proxy. This can be a path to a file which\n"
" contains a single public key in PEM or DER format, or any number\n"
" of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
" rated by ';'.\n"
"\n"
, stdout);
fputs(
-" When negotiating a TLS or SSL connection, the server sends a\n"
-" 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"
+" When negotiating a TLS or SSL connection, the server sends a\n"
+" 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"
-" If this option is used several times, the last one will be used.\n"
+" If --proxy-pinnedpubkey is provided several times, the last set\n"
+" value will be used.\n"
"\n"
-" Examples:\n"
, stdout);
fputs(
+" Examples:\n"
" curl --proxy-pinnedpubkey keyfile https://example.com\n"
" curl --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com\n"
"\n"
@@ -3539,17 +4066,25 @@ void hugehelp(void)
" This option allows you to change the service name for proxy ne-\n"
" gotiation.\n"
"\n"
+" If --proxy-service-name is provided several times, the last set\n"
+, stdout);
+ fputs(
+" value will be used.\n"
+"\n"
" Example:\n"
" curl --proxy-service-name \"shrubbery\" -x proxy https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --service-name and -x, --proxy. Added in 7.43.0.\n"
"\n"
" --proxy-ssl-allow-beast\n"
" Same as --ssl-allow-beast but used in HTTPS proxy context.\n"
"\n"
+" Providing --proxy-ssl-allow-beast multiple times has no extra\n"
+" effect. Disable it again with --no-proxy-ssl-allow-beast.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --proxy-ssl-allow-beast -x https://proxy https://example.com\n"
"\n"
" See also --ssl-allow-beast and -x, --proxy. Added in 7.52.0.\n"
@@ -3557,6 +4092,10 @@ void hugehelp(void)
" --proxy-ssl-auto-client-cert\n"
" Same as --ssl-auto-client-cert but used in HTTPS proxy context.\n"
"\n"
+" Providing --proxy-ssl-auto-client-cert multiple times has no ex-\n"
+" tra effect. Disable it again with --no-proxy-ssl-auto-client-\n"
+" cert.\n"
+"\n"
" Example:\n"
, stdout);
fputs(
@@ -3580,11 +4119,12 @@ void hugehelp(void)
" you can try setting TLS 1.3 cipher suites by using the --proxy-\n"
" ciphers option.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --proxy-tls13-ciphers is provided several times, the last set\n"
+" value will be used.\n"
"\n"
-" Example:\n"
, stdout);
fputs(
+" Example:\n"
" curl --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy https://example.com\n"
"\n"
" See also --tls13-ciphers and --curves. Added in 7.61.0.\n"
@@ -3592,33 +4132,46 @@ void hugehelp(void)
" --proxy-tlsauthtype <type>\n"
" Same as --tlsauthtype but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-tlsauthtype is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --proxy-tlsauthtype SRP -x https://proxy https://example.com\n"
"\n"
" See also -x, --proxy and --proxy-tlsuser. Added in 7.52.0.\n"
"\n"
" --proxy-tlspassword <string>\n"
-, stdout);
- fputs(
" Same as --tlspassword but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-tlspassword is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
" Example:\n"
" curl --proxy-tlspassword passwd -x https://proxy https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also -x, --proxy and --proxy-tlsuser. Added in 7.52.0.\n"
"\n"
" --proxy-tlsuser <name>\n"
" Same as --tlsuser but used in HTTPS proxy context.\n"
"\n"
+" If --proxy-tlsuser is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --proxy-tlsuser smith -x https://proxy https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also -x, --proxy and --proxy-tlspassword. Added in 7.52.0.\n"
"\n"
" --proxy-tlsv1\n"
-" Same as -1, --tlsv1 but used in HTTPS proxy context.\n"
+, stdout);
+ fputs(
+" Same as --tlsv1 but used in HTTPS proxy context.\n"
+"\n"
+" Providing --proxy-tlsv1 multiple times has no extra effect.\n"
"\n"
" Example:\n"
" curl --proxy-tlsv1 -x https://proxy https://example.com\n"
@@ -3644,60 +4197,65 @@ void hugehelp(void)
" system as they will still be visible for a moment before\n"
" cleared. Such sensitive data should be retrieved from a file in-\n"
" stead or similar and never used in clear text in a command line.\n"
-" If this option is used several times, the last one will be used.\n"
+" If --proxy-user is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
-" curl --proxy-user name:pwd -x proxy https://example.com\n"
-"\n"
, stdout);
fputs(
+" curl --proxy-user name:pwd -x proxy https://example.com\n"
+"\n"
" See also --proxy-pass.\n"
"\n"
" -x, --proxy [protocol://]host[:port]\n"
" Use the specified proxy.\n"
"\n"
-" The proxy string can be specified with a protocol:// prefix. No\n"
+" The proxy string can be specified with a protocol:// prefix. No\n"
" protocol specified or http:// will be treated as HTTP proxy. Use\n"
" socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
" cific SOCKS version to be used.\n"
"\n"
-" HTTPS proxy support via https:// protocol prefix was added in\n"
, stdout);
fputs(
+" Unix domain sockets are supported for socks proxy. Set localhost\n"
+" for the host part. e.g. socks5h://localhost/path/to/socket.sock\n"
+"\n"
+" HTTPS proxy support via https:// protocol prefix was added in\n"
" 7.52.0 for OpenSSL, GnuTLS and NSS.\n"
"\n"
" Unrecognized and unsupported proxy protocols cause an error\n"
" since 7.52.0. Prior versions may ignore the protocol and use\n"
" http:// instead.\n"
"\n"
+, stdout);
+ fputs(
" If the port number is not specified in the proxy string, it is\n"
" assumed to be 1080.\n"
"\n"
" This option overrides existing environment variables that set\n"
-, stdout);
- fputs(
" 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"
" parently be converted to HTTP. It means that certain protocol\n"
-" specific operations might not be available. This is not the case\n"
-" if you can tunnel through the proxy, as one with the -p, --prox-\n"
-" ytunnel option.\n"
-"\n"
, stdout);
fputs(
+" specific operations might not be available. This is not the case\n"
+" if you can tunnel through the proxy, as one with the --proxytun-\n"
+" nel 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"
" ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
" The proxy host can be specified the same way as the proxy envi-\n"
+, stdout);
+ fputs(
" ronment variables, including the protocol prefix (http://) and\n"
" the embedded user + password.\n"
"\n"
-, stdout);
- fputs(
-" If this option is used several times, the last one will be used.\n"
+" If --proxy is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
" curl --proxy http://proxy.example https://example.com\n"
@@ -3705,32 +4263,39 @@ void hugehelp(void)
" See also --socks5 and --proxy-basic.\n"
"\n"
" --proxy1.0 <host[:port]>\n"
-" Use the specified HTTP 1.0 proxy. If the port number is not\n"
-" specified, it is assumed at port 1080.\n"
-"\n"
-" The only difference between this and the HTTP proxy option -x,\n"
+" Use the specified HTTP 1.0 proxy. If the port number is not\n"
, stdout);
fputs(
-" --proxy, is that attempts to use CONNECT through the proxy will\n"
+" specified, it is assumed at port 1080.\n"
+"\n"
+" The only difference between this and the HTTP proxy option -x,\n"
+" --proxy, is that attempts to use CONNECT through the proxy will\n"
" specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
+" Providing --proxy1.0 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --proxy1.0 -x http://proxy https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also -x, --proxy, --socks5 and --preproxy.\n"
"\n"
" -p, --proxytunnel\n"
-" When an HTTP proxy is used -x, --proxy, this option will make\n"
-" curl tunnel through the proxy. The tunnel approach is made with\n"
-, stdout);
- fputs(
-" the HTTP proxy CONNECT request and requires that the proxy al-\n"
+" When an HTTP proxy is used -x, --proxy, this option will make\n"
+" curl tunnel through the proxy. The tunnel approach is made with\n"
+" the HTTP proxy CONNECT request and requires that the proxy al-\n"
" lows direct connect to the remote port number curl wants to tun-\n"
" nel through to.\n"
"\n"
-" To suppress proxy CONNECT response headers when curl is set to\n"
+, stdout);
+ fputs(
+" To suppress proxy CONNECT response headers when curl is set to\n"
" output headers use --suppress-connect-headers.\n"
"\n"
+" Providing --proxytunnel multiple times has no extra effect.\n"
+" Disable it again with --no-proxytunnel.\n"
+"\n"
" Example:\n"
" curl --proxytunnel -x http://proxy https://example.com\n"
"\n"
@@ -3742,93 +4307,98 @@ void hugehelp(void)
" (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
" lic 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"
-, stdout);
- fputs(
" libcurl to be linked against a copy of libssh2 1.2.8 or higher\n"
" that is itself linked against OpenSSL.)\n"
"\n"
+, stdout);
+ fputs(
+" If --pubkey is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --pubkey file.pub sftp://example.com/\n"
"\n"
" See also --pass.\n"
"\n"
" -Q, --quote <command>\n"
-" (FTP SFTP) Send an arbitrary command to the remote FTP or SFTP\n"
-" server. Quote commands are sent BEFORE the transfer takes place\n"
+" (FTP SFTP) Send an arbitrary command to the remote FTP or SFTP\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(
-" (just after the initial PWD command in an FTP transfer, to be\n"
" exact). To make commands take place after a successful transfer,\n"
-" prefix them with a dash '-'. To make commands be sent after curl\n"
-" has changed the working directory, just before the transfer com-\n"
-" mand(s), prefix the command with a '+' (this is only supported\n"
-" for FTP). You may specify any number of commands.\n"
+" prefix them with a dash '-'.\n"
+"\n"
+" (FTP only) To make commands be sent after curl has changed the\n"
+" working directory, just before the file transfer command(s),\n"
+" prefix the command with a '+'. This is not performed when a di-\n"
+" rectory listing is performed.\n"
+"\n"
+" You may specify any number of commands.\n"
"\n"
, stdout);
fputs(
-" By default curl will stop at first failure. To make curl con-\n"
-" tinue even if the command fails, prefix the command with an as-\n"
-" terisk (*). Otherwise, if the server returns failure for one of\n"
+" By default curl will stop at first failure. To make curl con-\n"
+" tinue even if the command fails, prefix the command with an as-\n"
+" terisk (*). Otherwise, if the server returns failure for one of\n"
" the commands, the entire operation will be aborted.\n"
"\n"
-" You must send syntactically correct FTP commands as RFC 959 de-\n"
-" fines to FTP servers, or one of the commands listed below to\n"
+" You must send syntactically correct FTP commands as RFC 959 de-\n"
+" fines to FTP servers, or one of the commands listed below to\n"
" SFTP servers.\n"
"\n"
, stdout);
fputs(
" This option can be used multiple times.\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"
+" 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"
+" acters. Following is the list of all supported SFTP quote com-\n"
" mands:\n"
"\n"
" atime date file\n"
, stdout);
fputs(
-" The atime command sets the last access time of the file\n"
-" named by the file operand. The <date expression> can be\n"
-" all sorts of date strings, see the curl_getdate(3) man\n"
+" The atime command sets the last access time of the file\n"
+" named by the file operand. The <date expression> can be\n"
+" all sorts of date strings, see the curl_getdate(3) man\n"
" page for date expression details. (Added in 7.73.0)\n"
"\n"
" chgrp group file\n"
-" The chgrp command sets the group ID of the file named by\n"
-" the file operand to the group ID specified by the group\n"
+" The chgrp command sets the group ID of the file named by\n"
+" the file operand to the group ID specified by the group\n"
, stdout);
fputs(
" operand. The group operand is a decimal integer group ID.\n"
"\n"
" chmod mode file\n"
-" The chmod command modifies the file mode bits of the\n"
+" The chmod command modifies the file mode bits of the\n"
" specified file. The mode operand is an octal integer mode\n"
" number.\n"
"\n"
" chown user file\n"
" The chown command sets the owner of the file named by the\n"
-" file operand to the user ID specified by the user oper-\n"
+" file operand to the user ID specified by the user oper-\n"
, stdout);
fputs(
" and. The user operand is a decimal integer user ID.\n"
"\n"
" ln source_file target_file\n"
" The ln and symlink commands create a symbolic link at the\n"
-" target_file location pointing to the source_file loca-\n"
+" target_file location pointing to the source_file loca-\n"
" tion.\n"
"\n"
" mkdir directory_name\n"
-" The mkdir command creates the directory named by the di-\n"
+" The mkdir command creates the directory named by the di-\n"
" rectory_name operand.\n"
"\n"
" mtime date file\n"
, stdout);
fputs(
-" The mtime command sets the last modification time of the\n"
+" The mtime command sets the last modification time of the\n"
" file named by the file operand. The <date expression> can\n"
" be all sorts of date strings, see the curl_getdate(3) man\n"
" page for date expression details. (Added in 7.73.0)\n"
@@ -3840,7 +4410,7 @@ void hugehelp(void)
, stdout);
fputs(
" The rename command renames the file or directory named by\n"
-" the source operand to the destination path named by the\n"
+" the source operand to the destination path named by the\n"
" target operand.\n"
"\n"
" rm file\n"
@@ -3848,7 +4418,7 @@ void hugehelp(void)
" erand.\n"
"\n"
" rmdir directory\n"
-" The rmdir command removes the directory entry specified\n"
+" The rmdir command removes the directory entry specified\n"
, stdout);
fputs(
" by the directory operand, provided it is empty.\n"
@@ -3856,17 +4426,26 @@ void hugehelp(void)
" symlink source_file target_file\n"
" See ln.\n"
"\n"
+" --quote can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl --quote \"DELE file\" ftp://example.com/foo\n"
"\n"
" See also -X, --request.\n"
"\n"
" --random-file <file>\n"
-" Specify the path name to file containing what will be considered\n"
-" as random data. The data may be used to seed the random engine\n"
+" Deprecated option. This option is ignored by curl since 7.84.0.\n"
+" Prior to that it only had an effect on curl if built to use old\n"
, stdout);
fputs(
-" for SSL connections. See also the --egd-file option.\n"
+" versions of OpenSSL.\n"
+"\n"
+" Specify the path name to file containing what will be considered\n"
+" as random data. The data may be used to seed the random engine\n"
+" for SSL connections.\n"
+"\n"
+" If --random-file is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --random-file rubbish https://example.com\n"
@@ -3874,78 +4453,131 @@ void hugehelp(void)
" See also --egd-file.\n"
"\n"
" -r, --range <range>\n"
+, stdout);
+ fputs(
" (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
" ment) from an HTTP/1.1, FTP or SFTP server or a local FILE.\n"
" Ranges can be specified in a number of ways.\n"
"\n"
" 0-499 specifies the first 500 bytes\n"
"\n"
-, stdout);
- fputs(
" 500-999 specifies the second 500 bytes\n"
"\n"
" -500 specifies the last 500 bytes\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(*)(HTTP)\n"
"\n"
" 100-199,500-599\n"
" specifies two separate 100-byte ranges(*) (HTTP)\n"
"\n"
" (*) = NOTE that this will cause the server to reply with a mul-\n"
-, stdout);
- fputs(
" tipart response, which will be returned as-is by curl! Parsing\n"
" or otherwise transforming this response is the responsibility of\n"
" the caller.\n"
"\n"
+, stdout);
+ fputs(
" Only digit characters (0-9) are valid in the 'start' and 'stop'\n"
" fields of the 'start-stop' range syntax. If a non-digit charac-\n"
" ter is given in the range, the server's response will be unspec-\n"
" ified, depending on the server's configuration.\n"
"\n"
-, stdout);
- fputs(
" You should also be aware that many HTTP/1.1 servers do not have\n"
" this feature enabled, so that when you attempt to get a range,\n"
+, stdout);
+ fputs(
" you will instead get the whole document.\n"
"\n"
" FTP and SFTP range downloads only support the simple 'start-\n"
" stop' syntax (optionally with one of the numbers omitted). FTP\n"
" use depends on the extended FTP command SIZE.\n"
"\n"
-, stdout);
- fputs(
-" If this option is used several times, the last one will be used.\n"
+" If --range is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
" curl --range 22-44 https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also -C, --continue-at and -a, --append.\n"
"\n"
+" --rate <max request rate>\n"
+" Specify the maximum transfer frequency you allow curl to use -\n"
+" in number of transfer starts per time unit (sometimes called re-\n"
+" quest rate). Without this option, curl will start the next\n"
+" transfer as fast as possible.\n"
+"\n"
+" If given several URLs and a transfer completes faster than the\n"
+, stdout);
+ fputs(
+" allowed rate, curl will wait until the next transfer is started\n"
+" to maintain the requested rate. This option has no effect when\n"
+" --parallel is used.\n"
+"\n"
+" The request rate is provided as \"N/U\" where N is an integer num-\n"
+" ber and U is a time unit. Supported units are 's' (second), 'm'\n"
+" (minute), 'h' (hour) and 'd' /(day, as in a 24 hour unit). The\n"
+, stdout);
+ fputs(
+" default time unit, if no \"/U\" is provided, is number of trans-\n"
+" fers per hour.\n"
+"\n"
+" If curl is told to allow 10 requests per minute, it will not\n"
+" start the next request until 6 seconds have elapsed since the\n"
+" previous transfer was started.\n"
+"\n"
+" This function uses millisecond resolution. If the allowed fre-\n"
+" quency is set more than 1000 per second, it will instead run un-\n"
+" restricted.\n"
+"\n"
+, stdout);
+ fputs(
+" When retrying transfers, enabled with --retry, the separate\n"
+" retry delay logic is used and not this setting.\n"
+"\n"
+" If --rate is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Examples:\n"
+" curl --rate 2/s https://example.com\n"
+" curl --rate 3/h https://example.com\n"
+" curl --rate 14/m https://example.com\n"
+"\n"
+" See also --limit-rate and --retry-delay. Added in 7.84.0.\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 un-\n"
+" tent or transfer encodings and instead makes them passed on un-\n"
" altered, raw.\n"
"\n"
+" Providing --raw multiple times has no extra effect. Disable it\n"
+" again with --no-raw.\n"
+"\n"
" Example:\n"
" curl --raw https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --tr-encoding.\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 -e,\n"
-" --referer URL to make curl automatically set the previous URL\n"
-" when it follows a Location: header. The \";auto\" string can be\n"
, stdout);
fputs(
-" used alone, even if you do not set an initial -e, --referer.\n"
+" (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
+" This can also be set with the --header flag of course. When used\n"
+" with --location you can append \";auto\" to the --referer URL to\n"
+" make curl automatically set the previous URL when it follows a\n"
+" Location: header. The \";auto\" string can be used alone, even if\n"
+" you do not set an initial -e, --referer.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+" If --referer is provided several times, the last set value will\n"
+" be used.\n"
"\n"
" Examples:\n"
" curl --referer \"https://fake.example\" https://example.com\n"
@@ -3957,41 +4589,54 @@ void hugehelp(void)
" -J, --remote-header-name\n"
, stdout);
fputs(
-" (HTTP) This option tells the -O, --remote-name option to use the\n"
-" server-specified Content-Disposition filename instead of ex-\n"
-" tracting a filename from the URL.\n"
+" (HTTP) This option tells the --remote-name option to use the\n"
+" server-specified Content-Disposition filename instead of ex-\n"
+" tracting a filename from the URL. If the server-provided file\n"
+" name contains a path, that will be stripped off before the file\n"
+" name is used.\n"
+"\n"
+" The file is saved in the current directory, or in the directory\n"
+" specified with --output-dir.\n"
"\n"
-" If the server specifies a file name and a file with that name\n"
-" already exists in the current working directory it will not be\n"
-" overwritten and an error will occur. If the server does not\n"
, stdout);
fputs(
+" If the server specifies a file name and a file with that name\n"
+" already exists in the destination directory, it will not be\n"
+" overwritten and an error will occur. If the server does not\n"
" specify a file name then this option has no effect.\n"
"\n"
" 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"
+, stdout);
+ fputs(
" WARNING: Exercise judicious use of this option, especially on\n"
" Windows. A rogue server could send you the name of a DLL or\n"
" other file that could be loaded automatically by Windows or some\n"
-, stdout);
- fputs(
" third party software.\n"
"\n"
+" Providing --remote-header-name multiple times has no extra ef-\n"
+" fect. Disable it again with --no-remote-header-name.\n"
+"\n"
" Example:\n"
" curl -OJ https://example.com/file\n"
"\n"
+, stdout);
+ fputs(
" See also -O, --remote-name.\n"
"\n"
" --remote-name-all\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"
-" all has been used, you must use \"-o -\" or --no-remote-name.\n"
+" This option changes the default action for all given URLs to be\n"
+" dealt with as if --remote-name were used for each one. So if you\n"
+" want to disable that for a specific URL after --remote-name-all\n"
+" has been used, you must use \"-o -\" or --no-remote-name.\n"
"\n"
+" Providing --remote-name-all multiple times has no extra effect.\n"
, stdout);
fputs(
+" Disable it again with --no-remote-name-all.\n"
+"\n"
" Example:\n"
" curl --remote-name-all ftp://example.com/file1 ftp://example.com/file2\n"
"\n"
@@ -4007,15 +4652,15 @@ void hugehelp(void)
fputs(
" want the file saved in a different directory, make sure you\n"
" change the current working directory before invoking curl with\n"
-" this option.\n"
+" this option or use --output-dir.\n"
"\n"
" The remote file name to use for saving is extracted from the\n"
" given URL, nothing else, and if it already exists it will be\n"
" overwritten. If you want the server to be able to choose the\n"
, stdout);
fputs(
-" file name refer to -J, --remote-header-name which can be used in\n"
-" addition to this option. If the server chooses a file name and\n"
+" file name refer to --remote-header-name which can be used in ad-\n"
+" dition to this option. If the server chooses a file name and\n"
" that name already exists it will not be overwritten.\n"
"\n"
" There is no URL decoding done on the file name. If it has %20 or\n"
@@ -4027,22 +4672,48 @@ void hugehelp(void)
fputs(
" have.\n"
"\n"
+" --remote-name can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl -O https://example.com/filename\n"
"\n"
-" See also --remote-name-all.\n"
+" See also --remote-name-all, --output-dir and -J, --remote-\n"
+" header-name.\n"
"\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 lo-\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 lo-\n"
+, stdout);
+ fputs(
" cal file get that same timestamp.\n"
"\n"
+" Providing --remote-time multiple times has no extra effect.\n"
+" Disable it again with --no-remote-time.\n"
+"\n"
" Example:\n"
" curl --remote-time -o foo https://example.com\n"
"\n"
+" See also -O, --remote-name and -z, --time-cond.\n"
+"\n"
+" --remove-on-error\n"
+" When curl returns an error when told to save output in a local\n"
, stdout);
fputs(
-" See also -O, --remote-name and -z, --time-cond.\n"
+" file, this option removes that saved file before exiting. This\n"
+" prevents curl from leaving a partial file in the case of an er-\n"
+" ror during transfer.\n"
+"\n"
+" If the output is not a file, this option has no effect.\n"
+"\n"
+" Providing --remove-on-error multiple times has no extra effect.\n"
+" Disable it again with --no-remove-on-error.\n"
+"\n"
+" Example:\n"
+" curl --remove-on-error -o output https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -f, --fail. Added in 7.83.0.\n"
"\n"
" --request-target <path>\n"
" (HTTP) Tells curl to use an alternative \"target\" (path) instead\n"
@@ -4051,41 +4722,44 @@ void hugehelp(void)
" other data that does not follow the regular URL pattern, like\n"
" \"OPTIONS *\".\n"
"\n"
-" Example:\n"
, stdout);
fputs(
+" If --request-target is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
" curl --request-target \"*\" -X OPTIONS https://example.com\n"
"\n"
" See also -X, --request. Added in 7.55.0.\n"
"\n"
" -X, --request <method>\n"
" (HTTP) Specifies a custom request method to use when communicat-\n"
-" ing with the HTTP server. The specified request method will be\n"
-" used instead of the method otherwise used (which defaults to\n"
-" GET). Read the HTTP 1.1 specification for details and explana-\n"
+" ing with the HTTP server. The specified request method will be\n"
, stdout);
fputs(
-" tions. Common additional HTTP requests include PUT and DELETE,\n"
+" used instead of the method otherwise used (which defaults to\n"
+" GET). Read the HTTP 1.1 specification for details and explana-\n"
+" tions. Common additional HTTP requests include PUT and DELETE,\n"
" but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
" and more.\n"
"\n"
-" Normally you do not need this option. All sorts of GET, HEAD,\n"
+" Normally you do not 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"
-" This option only changes the actual word used in the HTTP re-\n"
, stdout);
fputs(
+" mand line options.\n"
+"\n"
+" This option only changes the actual word used in the HTTP re-\n"
" quest, it does not alter the way curl behaves. So for example if\n"
-" you want to make a proper HEAD request, using -X HEAD will not\n"
-" suffice. You need to use the -I, --head option.\n"
+" you want to make a proper HEAD request, using -X HEAD will not\n"
+" suffice. You need to use the --head option.\n"
"\n"
-" The method string you set with -X, --request will be used for\n"
-" all requests, which if you for example use -L, --location may\n"
-" cause unintended side-effects when curl does not change request\n"
+" The method string you set with --request will be used for all\n"
+" requests, which if you for example use --location may cause un-\n"
, stdout);
fputs(
-" method according to the HTTP 30x response codes - and similar.\n"
+" intended side-effects when curl does not change request method\n"
+" according to the HTTP 30x response codes - and similar.\n"
"\n"
" (FTP) Specifies a custom FTP command to use instead of LIST when\n"
" doing file lists with FTP.\n"
@@ -4093,15 +4767,16 @@ void hugehelp(void)
" (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
" RETR.\n"
"\n"
-" (IMAP) Specifies a custom IMAP command to use instead of LIST.\n"
+" (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"
, stdout);
fputs(
+" (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"
+" If --request is provided several times, the last set value will\n"
+" be used.\n"
"\n"
" Examples:\n"
" curl -X \"DELETE\" https://example.com\n"
@@ -4110,28 +4785,29 @@ void hugehelp(void)
" See also --request-target.\n"
"\n"
" --resolve <[+]host:port:addr[,addr]...>\n"
-" Provide a custom address for a specific host and port pair. Us-\n"
-" ing this, you can make the curl requests(s) use a specified ad-\n"
, stdout);
fputs(
+" Provide a custom address for a specific host and port pair. Us-\n"
+" ing this, you can make the curl requests(s) use a specified ad-\n"
" dress and prevent the otherwise normally resolved address to be\n"
" used. Consider it a sort of /etc/hosts alternative provided on\n"
" the command line. The port number should be the number used for\n"
" the specific protocol the host will be used for. It means you\n"
+, stdout);
+ fputs(
" need several entries if you want to provide address for the same\n"
" host but different ports.\n"
"\n"
-, stdout);
- fputs(
" By specifying '*' as host you can tell curl to resolve any host\n"
" and specific port pair to the specified address. Wildcard is re-\n"
" solved last so any --resolve with a specific host and port will\n"
" be used first.\n"
"\n"
-" The provided address set by this option will be used even if -4,\n"
-" --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n"
+" The provided address set by this option will be used even if\n"
, stdout);
fputs(
+" --ipv4 or --ipv6 is set to make curl use another IP version.\n"
+"\n"
" By prefixing the host with a '+' you can make the entry time out\n"
" after curl's default timeout (1 minute). Note that this will\n"
" only make sense for long running parallel transfers with a lot\n"
@@ -4139,9 +4815,9 @@ void hugehelp(void)
" resolve the host as it normally would once the timeout has ex-\n"
" pired.\n"
"\n"
-" Support for providing the IP address within [brackets] was added\n"
, stdout);
fputs(
+" Support for providing the IP address within [brackets] was added\n"
" in 7.57.0.\n"
"\n"
" Support for providing multiple IP addresses per entry was added\n"
@@ -4154,11 +4830,13 @@ void hugehelp(void)
" This option can be used many times to add many host names to re-\n"
" solve.\n"
"\n"
+, stdout);
+ fputs(
+" --resolve can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl --resolve example.com:443:127.0.0.1 https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --connect-to and --alt-svc.\n"
"\n"
" --retry-all-errors\n"
@@ -4166,49 +4844,57 @@ void hugehelp(void)
"\n"
" This option is the \"sledgehammer\" of retrying. Do not use this\n"
" option by default (eg in curlrc), there may be unintended conse-\n"
-" quences such as sending or receiving duplicate data. Do not use\n"
-" with redirected input or output. You'd be much better off han-\n"
, stdout);
fputs(
+" quences such as sending or receiving duplicate data. Do not use\n"
+" with redirected input or output. You'd be much better off han-\n"
" dling your unique problems in shell script. Please read the ex-\n"
" ample below.\n"
"\n"
" WARNING: For server compatibility curl attempts to retry failed\n"
" flaky transfers as close as possible to how they were started,\n"
-" but this is not possible with redirected input or output. For\n"
-" example, before retrying it removes output data from a failed\n"
, stdout);
fputs(
+" but this is not possible with redirected input or output. For\n"
+" example, before retrying it removes output data from a failed\n"
" partial transfer that was written to an output file. However\n"
" this is not true of data redirected to a | pipe or > file, which\n"
" are not reset. We strongly suggest you do not parse or record\n"
" output via redirect in combination with this option, since you\n"
+, stdout);
+ fputs(
" may receive duplicate data.\n"
"\n"
" By default curl will not error on an HTTP response code that in-\n"
-, stdout);
- fputs(
" dicates an HTTP error, if the transfer was successful. For exam-\n"
" ple, if a server replies 404 Not Found and the reply is fully\n"
" received then that is not an error. When --retry is used then\n"
" curl will retry on some HTTP response codes that indicate tran-\n"
-" sient HTTP errors, but that does not include most 4xx response\n"
-" codes such as 404. If you want to retry on all response codes\n"
, stdout);
fputs(
+" sient HTTP errors, but that does not include most 4xx response\n"
+" codes such as 404. If you want to retry on all response codes\n"
" that indicate HTTP errors (4xx and 5xx) then combine with -f,\n"
" --fail.\n"
"\n"
+" Providing --retry-all-errors multiple times has no extra effect.\n"
+" Disable it again with --no-retry-all-errors.\n"
+"\n"
" Example:\n"
" curl --retry 5 --retry-all-errors https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also --retry. Added in 7.71.0.\n"
"\n"
" --retry-connrefused\n"
-" In addition to the other conditions, consider ECONNREFUSED as a\n"
-" transient error too for --retry. This option is used together\n"
+" In addition to the other conditions, consider ECONNREFUSED as a\n"
+" transient error too for --retry. This option is used together\n"
" with --retry.\n"
"\n"
+" Providing --retry-connrefused multiple times has no extra ef-\n"
+" fect. Disable it again with --no-retry-connrefused.\n"
+"\n"
" Example:\n"
, stdout);
fputs(
@@ -4225,7 +4911,8 @@ void hugehelp(void)
fputs(
" zero will make curl use the default backoff time.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --retry-delay is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --retry-delay 5 --retry https://example.com\n"
@@ -4233,21 +4920,22 @@ void hugehelp(void)
" See also --retry.\n"
"\n"
" --retry-max-time <seconds>\n"
-" The retry timer is reset before the first transfer attempt. Re-\n"
-" tries will be done as usual (see --retry) as long as the timer\n"
+" The retry timer is reset before the first transfer attempt. Re-\n"
+" tries will be done as usual (see --retry) as long as the timer\n"
, stdout);
fputs(
-" has not reached this given limit. Notice that if the timer has\n"
-" not reached the limit, the request will be made and while per-\n"
-" forming, it may take longer than this given time period. To\n"
-" limit a single request's maximum time, use -m, --max-time. Set\n"
+" has not reached this given limit. Notice that if the timer has\n"
+" not reached the limit, the request will be made and while per-\n"
+" forming, it may take longer than this given time period. To\n"
+" limit a single request's maximum time, use -m, --max-time. Set\n"
" this option to zero to not timeout retries.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --retry-max-time is provided several times, the last set\n"
+" value will be used.\n"
"\n"
-" Example:\n"
, stdout);
fputs(
+" Example:\n"
" curl --retry-max-time 30 --retry 10 https://example.com\n"
"\n"
" See also --retry.\n"
@@ -4275,28 +4963,32 @@ void hugehelp(void)
" sponse header if one was present to know when to issue the next\n"
" retry.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --retry is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
" curl --retry 7 https://example.com\n"
"\n"
" See also --retry-max-time.\n"
"\n"
-" --sasl-authzid <identity>\n"
, stdout);
fputs(
-" Use this authorisation identity (authzid), during SASL PLAIN au-\n"
-" thentication, in addition to the authentication identity (auth-\n"
+" --sasl-authzid <identity>\n"
+" Use this authorization identity (authzid), during SASL PLAIN au-\n"
+" thentication, in addition to the authentication identity (auth-\n"
" cid) as specified by -u, --user.\n"
"\n"
-" If the option is not specified, the server will derive the au-\n"
-" thzid from the authcid, but if specified, and depending on the\n"
-" server implementation, it may be used to access another user's\n"
+" If the option is not specified, the server will derive the au-\n"
+" thzid from the authcid, but if specified, and depending on the\n"
+" server implementation, it may be used to access another user's\n"
, stdout);
fputs(
-" inbox, that the user has been granted access to, or a shared\n"
+" inbox, that the user has been granted access to, or a shared\n"
" mailbox for example.\n"
"\n"
+" If --sasl-authzid is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --sasl-authzid zid imap://example.com/\n"
"\n"
@@ -4305,19 +4997,27 @@ void hugehelp(void)
" --sasl-ir\n"
" Enable initial response in SASL authentication.\n"
"\n"
+, stdout);
+ fputs(
+" Providing --sasl-ir multiple times has no extra effect. Disable\n"
+" it again with --no-sasl-ir.\n"
+"\n"
" Example:\n"
" curl --sasl-ir imap://example.com/\n"
"\n"
" See also --sasl-authzid. Added in 7.31.0.\n"
"\n"
" --service-name <name>\n"
-, stdout);
- fputs(
" This option allows you to change the service name for SPNEGO.\n"
"\n"
-" Examples: --negotiate --service-name sockd would use\n"
+" Examples: --negotiate --service-name sockd would use\n"
" sockd/server-name.\n"
"\n"
+, stdout);
+ fputs(
+" If --service-name is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --service-name sockd/server https://example.com\n"
"\n"
@@ -4327,82 +5027,96 @@ void hugehelp(void)
" When used with -s, --silent, it makes curl show an error message\n"
" if it fails.\n"
"\n"
+" This option is global and does not need to be specified for each\n"
, stdout);
fputs(
-" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
+" Providing --show-error multiple times has no extra effect. Dis-\n"
+" able it again with --no-show-error.\n"
+"\n"
" Example:\n"
" curl --show-error --silent https://example.com\n"
"\n"
" See also --no-progress-meter.\n"
"\n"
" -s, --silent\n"
-" Silent or quiet mode. Do not show progress meter or error mes-\n"
-" sages. Makes Curl mute. It will still output the data you ask\n"
+" Silent or quiet mode. Do not show progress meter or error mes-\n"
+" sages. Makes Curl mute. It will still output the data you ask\n"
, stdout);
fputs(
" for, potentially even to the terminal/stdout unless you redirect\n"
" it.\n"
"\n"
-" Use -S, --show-error in addition to this option to disable\n"
-" progress meter but still show error messages.\n"
+" Use --show-error in addition to this option to disable progress\n"
+" meter but still show error messages.\n"
+"\n"
+" Providing --silent multiple times has no extra effect. Disable\n"
+" it again with --no-silent.\n"
"\n"
" Example:\n"
" curl -s https://example.com\n"
"\n"
" See also -v, --verbose, --stderr and --no-progress-meter.\n"
"\n"
-" --socks4 <host[:port]>\n"
-" Use the specified SOCKS4 proxy. If the port number is not speci-\n"
, stdout);
fputs(
+" --socks4 <host[:port]>\n"
+" Use the specified SOCKS4 proxy. If the port number is not speci-\n"
" fied, it is assumed at port 1080. Using this socket type make\n"
" curl resolve the host name and passing the address on to the\n"
" proxy.\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
+" To specify proxy on a unix domain socket, use localhost for\n"
+" host, e.g. socks4://localhost/path/to/socket.sock\n"
+"\n"
+, stdout);
+ fputs(
+" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
-" This option is superfluous since you can specify a socks4 proxy\n"
-" with -x, --proxy using a socks4:// protocol prefix.\n"
+" This option is superfluous since you can specify a socks4 proxy\n"
+" with --proxy using a socks4:// protocol prefix.\n"
"\n"
+" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
+" the same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+" a case curl first connects to the SOCKS proxy and then connects\n"
, stdout);
fputs(
-" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
-" such a case curl first connects to the SOCKS proxy and then con-\n"
-" nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
-"\n"
-" If this option is used several times, the last one will be used.\n"
+" (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
+" If --socks4 is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --socks4 hostname:4096 https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --socks4a, --socks5 and --socks5-hostname.\n"
"\n"
" --socks4a <host[:port]>\n"
" Use the specified SOCKS4a proxy. If the port number is not spec-\n"
+, stdout);
+ fputs(
" ified, it is assumed at port 1080. This asks the proxy to re-\n"
" solve the host name.\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
+" To specify proxy on a unix domain socket, use localhost for\n"
+" host, e.g. socks4a://localhost/path/to/socket.sock\n"
+"\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
" This option is superfluous since you can specify a socks4a proxy\n"
, stdout);
fputs(
-" with -x, --proxy using a socks4a:// protocol prefix.\n"
+" with --proxy using a socks4a:// protocol prefix.\n"
"\n"
" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
-" such a case curl first connects to the SOCKS proxy and then con-\n"
-" nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
-"\n"
-" If this option is used several times, the last one will be used.\n"
+" the same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+" a case curl first connects to the SOCKS proxy and then connects\n"
+" (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
+" If --socks4a is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
, stdout);
fputs(
@@ -4416,9 +5130,11 @@ void hugehelp(void)
" enabled by default. Use --socks5-gssapi to force GSS-API au-\n"
" thentication to SOCKS5 proxies.\n"
"\n"
-" Example:\n"
, stdout);
fputs(
+" Providing --socks5-basic multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
" curl --socks5-basic --socks5 hostname:4096 https://example.com\n"
"\n"
" See also --socks5. Added in 7.55.0.\n"
@@ -4427,26 +5143,34 @@ void hugehelp(void)
" As part of the GSS-API negotiation a protection mode is negoti-\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"
, stdout);
fputs(
+" --socks5-gssapi-nec allows the unprotected exchange of the pro-\n"
" tection mode negotiation.\n"
"\n"
+" Providing --socks5-gssapi-nec multiple times has no extra ef-\n"
+" fect. Disable it again with --no-socks5-gssapi-nec.\n"
+"\n"
" Example:\n"
" curl --socks5-gssapi-nec --socks5 hostname:4096 https://example.com\n"
"\n"
" See also --socks5.\n"
"\n"
" --socks5-gssapi-service <name>\n"
+, stdout);
+ fputs(
" The default service name for a socks server is rcmd/server-fqdn.\n"
" This option allows you to change it.\n"
"\n"
-" Examples: --socks5 proxy-name --socks5-gssapi-service sockd\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.\n"
+"\n"
, stdout);
fputs(
-" 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.\n"
+" If --socks5-gssapi-service is provided several times, the last\n"
+" set value will be used.\n"
"\n"
" Example:\n"
" curl --socks5-gssapi-service sockd --socks5 hostname:4096 https://example.com\n"
@@ -4455,12 +5179,15 @@ void hugehelp(void)
"\n"
" --socks5-gssapi\n"
" Tells curl to use GSS-API authentication when connecting to a\n"
+" SOCKS5 proxy. The GSS-API authentication is enabled by default\n"
, stdout);
fputs(
-" SOCKS5 proxy. The GSS-API authentication is enabled by default\n"
" (if curl is compiled with GSS-API support). Use --socks5-basic\n"
" to force username/password authentication to SOCKS5 proxies.\n"
"\n"
+" Providing --socks5-gssapi multiple times has no extra effect.\n"
+" Disable it again with --no-socks5-gssapi.\n"
+"\n"
" Example:\n"
" curl --socks5-gssapi --socks5 hostname:4096 https://example.com\n"
"\n"
@@ -4469,105 +5196,121 @@ void hugehelp(void)
" --socks5-hostname <host[:port]>\n"
, stdout);
fputs(
-" 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"
+" 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"
" at port 1080.\n"
"\n"
+" To specify proxy on a unix domain socket, use localhost for\n"
+" host, e.g. socks5h://localhost/path/to/socket.sock\n"
+"\n"
" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
-" This option is superfluous since you can specify a socks5 host-\n"
-" name proxy with -x, --proxy using a socks5h:// protocol prefix.\n"
-"\n"
, stdout);
fputs(
+" This option is superfluous since you can specify a socks5 host-\n"
+" name proxy with --proxy using a socks5h:// protocol prefix.\n"
+"\n"
" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
-" such a case curl first connects to the SOCKS proxy and then con-\n"
-" nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
+" the same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+" a case curl first connects to the SOCKS proxy and then connects\n"
+" (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+" If --socks5-hostname is provided several times, the last set\n"
+" value will be used.\n"
"\n"
" Example:\n"
" curl --socks5-hostname proxy.example:7000 https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --socks5 and --socks4a.\n"
"\n"
" --socks5 <host[:port]>\n"
-" Use the specified SOCKS5 proxy - but resolve the host name lo-\n"
-" cally. If the port number is not specified, it is assumed at\n"
+" Use the specified SOCKS5 proxy - but resolve the host name lo-\n"
+" cally. If the port number is not specified, it is assumed at\n"
" port 1080.\n"
"\n"
+, stdout);
+ fputs(
+" To specify proxy on a unix domain socket, use localhost for\n"
+" host, e.g. socks5://localhost/path/to/socket.sock\n"
+"\n"
" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
" This option is superfluous since you can specify a socks5 proxy\n"
-, stdout);
- fputs(
-" with -x, --proxy using a socks5:// protocol prefix.\n"
+" with --proxy using a socks5:// protocol prefix.\n"
"\n"
" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
-" such a case curl first connects to the SOCKS proxy and then con-\n"
-" nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
-"\n"
-" If this option is used several times, the last one will be used.\n"
, stdout);
fputs(
+" the same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+" a case curl first connects to the SOCKS proxy and then connects\n"
+" (through SOCKS) to the HTTP or HTTPS proxy.\n"
+"\n"
" This option (as well as --socks4) does not work with IPV6, FTPS\n"
" or LDAP.\n"
+"\n"
+" If --socks5 is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --socks5 proxy.example:7000 https://example.com\n"
"\n"
" See also --socks5-hostname and --socks4a.\n"
"\n"
" -Y, --speed-limit <speed>\n"
-" If a download is slower than this given speed (in bytes per sec-\n"
-" ond) for speed-time seconds it gets aborted. speed-time is set\n"
-" with -y, --speed-time and is 30 if not set.\n"
-, stdout);
- fputs(
+" If a transfer is slower than this given speed (in bytes per sec-\n"
+" ond) for speed-time seconds it gets aborted. speed-time is set\n"
+" with --speed-time and is 30 if not set.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --speed-limit is provided several times, the last set value\n"
+" will be used.\n"
"\n"
+, stdout);
+ fputs(
" Example:\n"
" curl --speed-limit 300 --speed-time 10 https://example.com\n"
"\n"
" See also -y, --speed-time, --limit-rate and -m, --max-time.\n"
"\n"
" -y, --speed-time <seconds>\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"
+" If a transfer runs slower than speed-limit bytes per second dur-\n"
+" ing a speed-time period, the transfer is aborted. If speed-time\n"
+" is used, the default speed-limit will be 1 unless set with -Y,\n"
" --speed-limit.\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"
+, stdout);
+ fputs(
+" This option controls transfers (in both directions) but will not\n"
+" affect slow connects etc. If this is a concern for you, try the\n"
+" --connect-timeout option.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --speed-time is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --speed-limit 300 --speed-time 10 https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also -Y, --speed-limit and --limit-rate.\n"
"\n"
" --ssl-allow-beast\n"
+, stdout);
+ fputs(
" This option tells curl to not work around a security flaw in the\n"
" SSL3 and TLS1.0 protocols known as BEAST. If this option is not\n"
-" used, the SSL layer may use workarounds known to cause interop-\n"
+" used, the SSL layer may use workarounds known to cause interop-\n"
" erability problems with some older SSL implementations.\n"
"\n"
" WARNING: this option loosens the SSL security, and by using this\n"
+" flag you ask for exactly that.\n"
+"\n"
, stdout);
fputs(
-" flag you ask for exactly that.\n"
+" Providing --ssl-allow-beast multiple times has no extra effect.\n"
+" Disable it again with --no-ssl-allow-beast.\n"
"\n"
" Example:\n"
" curl --ssl-allow-beast https://example.com\n"
@@ -4577,26 +5320,34 @@ void hugehelp(void)
" --ssl-auto-client-cert\n"
" Tell libcurl to automatically locate and use a client certifi-\n"
" cate for authentication, when requested by the server. This op-\n"
-" tion is only supported for Schannel (the native Windows SSL li-\n"
, stdout);
fputs(
+" tion is only supported for Schannel (the native Windows SSL li-\n"
" brary). Prior to 7.77.0 this was the default behavior in libcurl\n"
" with Schannel. Since the server can request any certificate that\n"
" supports client authentication in the OS certificate store it\n"
" could be a privacy violation and unexpected.\n"
"\n"
+" Providing --ssl-auto-client-cert multiple times has no extra ef-\n"
+, stdout);
+ fputs(
+" fect. Disable it again with --no-ssl-auto-client-cert.\n"
+"\n"
" Example:\n"
" curl --ssl-auto-client-cert https://example.com\n"
"\n"
" See also --proxy-ssl-auto-client-cert. Added in 7.77.0.\n"
"\n"
" --ssl-no-revoke\n"
-, stdout);
- fputs(
" (Schannel) This option tells curl to disable certificate revoca-\n"
" tion checks. WARNING: this option loosens the SSL security, and\n"
" by using this flag you ask for exactly that.\n"
"\n"
+, stdout);
+ fputs(
+" Providing --ssl-no-revoke multiple times has no extra effect.\n"
+" Disable it again with --no-ssl-no-revoke.\n"
+"\n"
" Example:\n"
" curl --ssl-no-revoke https://example.com\n"
"\n"
@@ -4604,17 +5355,20 @@ void hugehelp(void)
"\n"
" --ssl-reqd\n"
" (FTP IMAP POP3 SMTP LDAP) Require SSL/TLS for the connection.\n"
-, stdout);
- fputs(
" Terminates the connection if the server does not support\n"
" SSL/TLS.\n"
"\n"
+, stdout);
+ fputs(
" This option is handled in LDAP since version 7.81.0. It is fully\n"
-" supported by the openldap backend and rejected by the generic\n"
+" supported by the OpenLDAP backend and rejected by the generic\n"
" ldap backend if explicit TLS is required.\n"
"\n"
" This option was formerly known as --ftp-ssl-reqd.\n"
"\n"
+" Providing --ssl-reqd multiple times has no extra effect. Dis-\n"
+" able it again with --no-ssl-reqd.\n"
+"\n"
" Example:\n"
" curl --ssl-reqd ftp://example.com\n"
"\n"
@@ -4623,86 +5377,106 @@ void hugehelp(void)
" See also --ssl and -k, --insecure.\n"
"\n"
" --ssl-revoke-best-effort\n"
-" (Schannel) This option tells curl to ignore certificate revoca-\n"
+" (Schannel) This option tells curl to ignore certificate revoca-\n"
" tion checks when they failed due to missing/offline distribution\n"
" points for the revocation check lists.\n"
"\n"
+" Providing --ssl-revoke-best-effort multiple times has no extra\n"
+" effect. Disable it again with --no-ssl-revoke-best-effort.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --ssl-revoke-best-effort https://example.com\n"
"\n"
" See also --crlfile and -k, --insecure. Added in 7.70.0.\n"
"\n"
+" --ssl (FTP IMAP POP3 SMTP LDAP) Warning: this is considered an inse-\n"
+" cure option. Consider using --ssl-reqd instead to be sure curl\n"
+" upgrades to a secure connection.\n"
+"\n"
+" Try to use SSL/TLS for the connection. Reverts to a non-secure\n"
, stdout);
fputs(
-" --ssl (FTP IMAP POP3 SMTP LDAP) Try to use SSL/TLS for the connection.\n"
-" Reverts to a non-secure connection if the server does not sup-\n"
-" port SSL/TLS. See also --ftp-ssl-control and --ssl-reqd for dif-\n"
-" ferent levels of encryption required.\n"
+" connection if the server does not support SSL/TLS. See also\n"
+" --ftp-ssl-control and --ssl-reqd for different levels of encryp-\n"
+" tion required.\n"
"\n"
" This option is handled in LDAP since version 7.81.0. It is fully\n"
-" supported by the openldap backend and ignored by the generic\n"
+" supported by the OpenLDAP backend and ignored by the generic\n"
" ldap backend.\n"
"\n"
-, stdout);
- fputs(
" Please note that a server may close the connection if the nego-\n"
" tiation does not succeed.\n"
"\n"
+, stdout);
+ fputs(
" This option was formerly known as --ftp-ssl. That option name\n"
" can still be used but will be removed in a future version.\n"
"\n"
+" Providing --ssl multiple times has no extra effect. Disable it\n"
+" again with --no-ssl.\n"
+"\n"
" Example:\n"
" curl --ssl pop3://example.com/\n"
"\n"
-" See also -k, --insecure and --ciphers.\n"
+" See also --ssl-reqd, -k, --insecure and --ciphers.\n"
"\n"
" -2, --sslv2\n"
-" (SSL) This option previously asked curl to use SSLv2, but start-\n"
, stdout);
fputs(
-" ing in curl 7.77.0 this instruction is ignored. SSLv2 is widely\n"
+" (SSL) This option previously asked curl to use SSLv2, but start-\n"
+" ing in curl 7.77.0 this instruction is ignored. SSLv2 is widely\n"
" considered insecure (see RFC 6176).\n"
"\n"
+" Providing --sslv2 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --sslv2 https://example.com\n"
"\n"
-" See also --http1.1 and --http2. -2, --sslv2 requires that the\n"
-" underlying libcurl was built to support TLS. This option over-\n"
-" rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
-"\n"
-" -3, --sslv3\n"
+" See also --http1.1 and --http2. -2, --sslv2 requires that the\n"
, stdout);
fputs(
+" underlying libcurl was built to support TLS. This option is mu-\n"
+" tually exclusive to -3, --sslv3 and -1, --tlsv1 and --tlsv1.1\n"
+" and --tlsv1.2.\n"
+"\n"
+" -3, --sslv3\n"
" (SSL) This option previously asked curl to use SSLv3, but start-\n"
" ing in curl 7.77.0 this instruction is ignored. SSLv3 is widely\n"
" considered insecure (see RFC 7568).\n"
"\n"
+" Providing --sslv3 multiple times has no extra effect.\n"
+"\n"
+, stdout);
+ fputs(
" Example:\n"
" curl --sslv3 https://example.com\n"
"\n"
" See also --http1.1 and --http2. -3, --sslv3 requires that the\n"
-" underlying libcurl was built to support TLS. This option over-\n"
-, stdout);
- fputs(
-" rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
+" underlying libcurl was built to support TLS. This option is mu-\n"
+" tually exclusive to -2, --sslv2 and -1, --tlsv1 and --tlsv1.1\n"
+" and --tlsv1.2.\n"
"\n"
" --stderr <file>\n"
-" Redirect all writes to stderr to the specified file instead. If\n"
+" Redirect all writes to stderr to the specified file instead. If\n"
+, stdout);
+ fputs(
" the file name is a plain '-', it is instead written to stdout.\n"
"\n"
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
-"\n"
+" If --stderr is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
-, stdout);
- fputs(
" curl --stderr output.txt https://example.com\n"
"\n"
" See also -v, --verbose and -s, --silent.\n"
"\n"
" --styled-output\n"
+, stdout);
+ fputs(
" Enables the automatic use of bold font styles when writing HTTP\n"
" headers to the terminal. Use --no-styled-output to switch them\n"
" off.\n"
@@ -4710,6 +5484,9 @@ void hugehelp(void)
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
+" Providing --styled-output multiple times has no extra effect.\n"
+" Disable it again with --no-styled-output.\n"
+"\n"
" Example:\n"
, stdout);
fputs(
@@ -4718,14 +5495,16 @@ void hugehelp(void)
" See also -I, --head and -v, --verbose. Added in 7.61.0.\n"
"\n"
" --suppress-connect-headers\n"
-" When -p, --proxytunnel is used and a CONNECT request is made do\n"
-" not output proxy CONNECT response headers. This option is meant\n"
-" to be used with -D, --dump-header or -i, --include which are\n"
-" used to show protocol headers in the output. It has no effect on\n"
+" When --proxytunnel is used and a CONNECT request is made do not\n"
+" output proxy CONNECT response headers. This option is meant to\n"
+" be used with --dump-header or --include which are used to show\n"
+" protocol headers in the output. It has no effect on debug op-\n"
, stdout);
fputs(
-" debug options such as -v, --verbose or --trace, or any statis-\n"
-" tics.\n"
+" tions such as --verbose or --trace, or any statistics.\n"
+"\n"
+" Providing --suppress-connect-headers multiple times has no extra\n"
+" effect. Disable it again with --no-suppress-connect-headers.\n"
"\n"
" Example:\n"
" curl --suppress-connect-headers --include -x proxy https://example.com\n"
@@ -4734,30 +5513,38 @@ void hugehelp(void)
" Added in 7.54.0.\n"
"\n"
" --tcp-fastopen\n"
+, stdout);
+ fputs(
" Enable use of TCP Fast Open (RFC7413).\n"
"\n"
+" Providing --tcp-fastopen multiple times has no extra effect.\n"
+" Disable it again with --no-tcp-fastopen.\n"
+"\n"
" Example:\n"
" curl --tcp-fastopen https://example.com\n"
"\n"
-, stdout);
- fputs(
" See also --false-start. Added in 7.49.0.\n"
"\n"
" --tcp-nodelay\n"
" Turn on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
" page for details about this option.\n"
"\n"
+, stdout);
+ fputs(
" Since 7.50.2, curl sets this option by default and you need to\n"
" explicitly switch it off if you do not want it on.\n"
"\n"
+" Providing --tcp-nodelay multiple times has no extra effect.\n"
+" Disable it again with --no-tcp-nodelay.\n"
+"\n"
" Example:\n"
" curl --tcp-nodelay https://example.com\n"
"\n"
" See also -N, --no-buffer.\n"
"\n"
+" -t, --telnet-option <opt=val>\n"
, stdout);
fputs(
-" -t, --telnet-option <opt=val>\n"
" Pass options to the telnet protocol. Supported options are:\n"
"\n"
" TTYPE=<term> Sets the terminal type.\n"
@@ -4766,6 +5553,8 @@ void hugehelp(void)
"\n"
" NEW_ENV=<var,val> Sets an environment variable.\n"
"\n"
+" --telnet-option can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl -t TTYPE=vt100 telnet://example.com/\n"
"\n"
@@ -4777,7 +5566,8 @@ 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"
-" If this option is used several times, the last one will be used.\n"
+" If --tftp-blksize is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --tftp-blksize 1024 tftp://example.com/file\n"
@@ -4793,35 +5583,39 @@ void hugehelp(void)
" not acknowledge or properly implement TFTP options. When this\n"
" option is used --tftp-blksize is ignored.\n"
"\n"
+" Providing --tftp-no-options multiple times has no extra effect.\n"
+" Disable it again with --no-tftp-no-options.\n"
+"\n"
" Example:\n"
+, stdout);
+ fputs(
" curl --tftp-no-options tftp://192.168.0.1/\n"
"\n"
" See also --tftp-blksize. Added in 7.48.0.\n"
"\n"
" -z, --time-cond <time>\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"
+" if it does not match any internal ones, it is taken as a 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"
-" if it does not match any internal ones, it is taken as a file-\n"
-" name and tries to get the modification date (mtime) from <file>\n"
-" instead. See the curl_getdate(3) man pages for date expression\n"
+" name 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"
+" 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"
-" If this option is used several times, the last one will be used.\n"
+" If --time-cond is provided several times, the last set value\n"
+, stdout);
+ fputs(
+" will be used.\n"
"\n"
" Examples:\n"
" curl -z \"Wed 01 Sep 2021 12:18:00\" https://example.com\n"
" curl -z \"-Wed 01 Sep 2021 12:18:00\" https://example.com\n"
-, stdout);
- fputs(
" curl -z file https://example.com\n"
"\n"
" See also --etag-compare and -R, --remote-time.\n"
@@ -4829,14 +5623,14 @@ void hugehelp(void)
" --tls-max <VERSION>\n"
" (SSL) VERSION defines maximum supported TLS version. The minimum\n"
" acceptable version is set by tlsv1.0, tlsv1.1, tlsv1.2 or\n"
+, stdout);
+ fputs(
" tlsv1.3.\n"
"\n"
" If the connection is done without TLS, this option has no ef-\n"
" fect. This includes QUIC-using (HTTP/3) transfers.\n"
"\n"
" default\n"
-, stdout);
- fputs(
" Use up to recommended TLS version.\n"
"\n"
" 1.0 Use up to TLSv1.0.\n"
@@ -4844,32 +5638,38 @@ void hugehelp(void)
" 1.2 Use up to TLSv1.2.\n"
" 1.3 Use up to TLSv1.3.\n"
"\n"
+" If --tls-max is provided several times, the last set value will be\n"
+, stdout);
+ fputs(
+" used.\n"
+"\n"
" Examples:\n"
" curl --tls-max 1.2 https://example.com\n"
" curl --tls-max 1.3 --tlsv1.2 https://example.com\n"
"\n"
-" See also --tlsv1.0, --tlsv1.1, --tlsv1.2 and --tlsv1.3. --tls-max re-\n"
-" quires that the underlying libcurl was built to support TLS. Added in\n"
-, stdout);
- fputs(
+" See also --tlsv1.0, --tlsv1.1, --tlsv1.2 and --tlsv1.3. --tls-max re-\n"
+" quires that the underlying libcurl was built to support TLS. Added in\n"
" 7.54.0.\n"
"\n"
" --tls13-ciphers <ciphersuite list>\n"
-" (TLS) Specifies which cipher suites to use in the connection if\n"
-" it negotiates TLS 1.3. The list of ciphers suites must specify\n"
-" valid ciphers. Read up on TLS 1.3 cipher suite details on this\n"
+" (TLS) Specifies which cipher suites to use in the connection if\n"
+, stdout);
+ fputs(
+" it negotiates TLS 1.3. The list of ciphers suites must specify\n"
+" valid ciphers. Read up on TLS 1.3 cipher suite details on this\n"
" URL:\n"
"\n"
" https://curl.se/docs/ssl-ciphers.html\n"
"\n"
-" This option is currently used only when curl is built to use\n"
-, stdout);
- fputs(
+" This option is currently used only when curl is built to use\n"
" OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
" you can try setting TLS 1.3 cipher suites by using the --ciphers\n"
" option.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+" If --tls13-ciphers is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --tls13-ciphers TLS_AES_128_GCM_SHA256 https://example.com\n"
@@ -4877,170 +5677,198 @@ void hugehelp(void)
" See also --ciphers and --curves. Added in 7.61.0.\n"
"\n"
" --tlsauthtype <type>\n"
-, stdout);
- fputs(
" Set TLS authentication type. Currently, the only supported op-\n"
" tion is \"SRP\", for TLS-SRP (RFC 5054). If --tlsuser and\n"
+, stdout);
+ fputs(
" --tlspassword are specified but --tlsauthtype is not, then this\n"
" option defaults to \"SRP\". This option works only if the underly-\n"
" ing libcurl is built with TLS-SRP support, which requires\n"
" OpenSSL or GnuTLS with TLS-SRP support.\n"
"\n"
+" If --tlsauthtype is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --tlsauthtype SRP https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also --tlsuser.\n"
"\n"
" --tlspassword <string>\n"
-" Set password for use with the TLS authentication method speci-\n"
+" Set password for use with the TLS authentication method speci-\n"
" fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
"\n"
" This option does not work with TLS 1.3.\n"
"\n"
+" If --tlspassword is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --tlspassword pwd --tlsuser user https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also --tlsuser.\n"
"\n"
" --tlsuser <name>\n"
-, stdout);
- fputs(
" Set username for use with the TLS authentication method speci-\n"
" fied with --tlsauthtype. Requires that --tlspassword also is\n"
" set.\n"
"\n"
" This option does not work with TLS 1.3.\n"
"\n"
+" If --tlsuser is provided several times, the last set value will\n"
+" be used.\n"
" Example:\n"
" curl --tlspassword pwd --tlsuser user https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also --tlspassword.\n"
"\n"
" --tlsv1.0\n"
-" (TLS) Forces curl to use TLS version 1.0 or later when connect-\n"
-, stdout);
- fputs(
+" (TLS) Forces curl to use TLS version 1.0 or later when connect-\n"
" ing to a remote TLS server.\n"
"\n"
-" In old versions of curl this option was documented to allow\n"
+" In old versions of curl this option was documented to allow\n"
" _only_ TLS 1.0. That behavior was inconsistent depending on the\n"
" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
" sion.\n"
"\n"
+, stdout);
+ fputs(
+" Providing --tlsv1.0 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --tlsv1.0 https://example.com\n"
"\n"
" See also --tlsv1.3. Added in 7.34.0.\n"
"\n"
" --tlsv1.1\n"
-, stdout);
- fputs(
-" (TLS) Forces curl to use TLS version 1.1 or later when connect-\n"
+" (TLS) Forces curl to use TLS version 1.1 or later when connect-\n"
" ing to a remote TLS server.\n"
"\n"
-" In old versions of curl this option was documented to allow\n"
+" In old versions of curl this option was documented to allow\n"
" _only_ TLS 1.1. That behavior was inconsistent depending on the\n"
+, stdout);
+ fputs(
" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
" sion.\n"
"\n"
+" Providing --tlsv1.1 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --tlsv1.1 https://example.com\n"
"\n"
-, stdout);
- fputs(
-" See also --tlsv1.3. Added in 7.34.0.\n"
+" See also --tlsv1.3 and --tls-max. Added in 7.34.0.\n"
"\n"
" --tlsv1.2\n"
-" (TLS) Forces curl to use TLS version 1.2 or later when connect-\n"
+" (TLS) Forces curl to use TLS version 1.2 or later when connect-\n"
" ing to a remote TLS server.\n"
"\n"
-" In old versions of curl this option was documented to allow\n"
+, stdout);
+ fputs(
+" In old versions of curl this option was documented to allow\n"
" _only_ TLS 1.2. That behavior was inconsistent depending on the\n"
" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
" sion.\n"
"\n"
+" Providing --tlsv1.2 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --tlsv1.2 https://example.com\n"
"\n"
-" See also --tlsv1.3. Added in 7.34.0.\n"
+" See also --tlsv1.3 and --tls-max. Added in 7.34.0.\n"
"\n"
" --tlsv1.3\n"
-" (TLS) Forces curl to use TLS version 1.3 or later when connect-\n"
+, stdout);
+ fputs(
+" (TLS) Forces curl to use TLS version 1.3 or later when connect-\n"
" ing to a remote TLS server.\n"
"\n"
-" If the connection is done without TLS, this option has no ef-\n"
+" If the connection is done without TLS, this option has no ef-\n"
" fect. This includes QUIC-using (HTTP/3) transfers.\n"
"\n"
" Note that TLS 1.3 is not supported by all TLS backends.\n"
+" Providing --tlsv1.3 multiple times has no extra effect.\n"
"\n"
" Example:\n"
-, stdout);
- fputs(
" curl --tlsv1.3 https://example.com\n"
"\n"
-" See also --tlsv1.2. Added in 7.52.0.\n"
+, stdout);
+ fputs(
+" See also --tlsv1.2 and --tls-max. Added in 7.52.0.\n"
"\n"
" -1, --tlsv1\n"
-" (SSL) Tells curl to use at least TLS version 1.x when negotiat-\n"
-" ing with a remote TLS server. That means TLS version 1.0 or\n"
+" (SSL) Tells curl to use at least TLS version 1.x when negotiat-\n"
+" ing with a remote TLS server. That means TLS version 1.0 or\n"
" higher\n"
"\n"
+" Providing --tlsv1 multiple times has no extra effect.\n"
+"\n"
" Example:\n"
" curl --tlsv1 https://example.com\n"
"\n"
-" See also --http1.1 and --http2. -1, --tlsv1 requires that the\n"
+" See also --http1.1 and --http2. -1, --tlsv1 requires that the\n"
, stdout);
fputs(
-" underlying libcurl was built to support TLS. This option over-\n"
-" rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
+" underlying libcurl was built to support TLS. This option is mu-\n"
+" tually exclusive to --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
"\n"
" --tr-encoding\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"
+" Providing --tr-encoding multiple times has no extra effect.\n"
+" Disable it again with --no-tr-encoding.\n"
+"\n"
+, stdout);
+ fputs(
" Example:\n"
" curl --tr-encoding https://example.com\n"
"\n"
" See also --compressed.\n"
"\n"
" --trace-ascii <file>\n"
-, stdout);
- fputs(
" Enables a full trace dump of all incoming and outgoing data, in-\n"
" cluding descriptive information, to the given output file. Use\n"
" \"-\" as filename to have the output sent to stdout.\n"
"\n"
" This is similar to --trace, but leaves out the hex part and only\n"
+, stdout);
+ fputs(
" shows the ASCII part of the dump. It makes smaller output that\n"
" might be easier to read for untrained humans.\n"
"\n"
-, stdout);
- fputs(
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --trace-ascii is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl --trace-ascii log.txt https://example.com\n"
"\n"
-" See also -v, --verbose and --trace. This option overrides\n"
-" --trace and -v, --verbose.\n"
-"\n"
-" --trace-time\n"
-" Prepends a time stamp to each trace or verbose line that curl\n"
, stdout);
fputs(
+" See also -v, --verbose and --trace. This option is mutually ex-\n"
+" clusive to --trace and -v, --verbose.\n"
+"\n"
+" --trace-time\n"
+" Prepends a time stamp to each trace or verbose line that curl\n"
" displays.\n"
"\n"
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
+" Providing --trace-time multiple times has no extra effect. Dis-\n"
+" able it again with --no-trace-time.\n"
+"\n"
+, stdout);
+ fputs(
" Example:\n"
" curl --trace-time --trace-ascii output https://example.com\n"
"\n"
@@ -5049,28 +5877,32 @@ void hugehelp(void)
" --trace <file>\n"
" Enables a full trace dump of all incoming and outgoing data, in-\n"
" cluding descriptive information, to the given output file. Use\n"
-, stdout);
- fputs(
" \"-\" as filename to have the output sent to stdout. Use \"%\" as\n"
" filename to have the output sent to stderr.\n"
"\n"
+, stdout);
+ fputs(
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --trace is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
" curl --trace log.txt https://example.com\n"
"\n"
-" See also --trace-ascii and --trace-time. This option overrides\n"
-, stdout);
- fputs(
-" -v, --verbose and --trace-ascii.\n"
+" See also --trace-ascii and --trace-time. This option is mutually\n"
+" exclusive to -v, --verbose and --trace-ascii.\n"
"\n"
" --unix-socket <path>\n"
+, stdout);
+ fputs(
" (HTTP) Connect through this Unix domain socket, instead of using\n"
" the network.\n"
"\n"
+" If --unix-socket is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
" Example:\n"
" curl --unix-socket socket-path https://example.com\n"
"\n"
@@ -5096,22 +5928,23 @@ void hugehelp(void)
" mode to allow reading server output while stdin is being up-\n"
" loaded.\n"
"\n"
-" You can specify one -T, --upload-file for each URL on the com-\n"
-" mand line. Each -T, --upload-file + URL pair specifies what to\n"
+" You can specify one --upload-file for each URL on the command\n"
+" line. Each -T, --upload-file + URL pair specifies what to upload\n"
, stdout);
fputs(
-" upload and to where. curl also supports \"globbing\" of the -T,\n"
-" --upload-file argument, meaning that you can upload multiple\n"
-" files to a single URL by using the same URL globbing style sup-\n"
-" ported in the URL.\n"
+" and to where. curl also supports \"globbing\" of the --upload-file\n"
+" argument, meaning that you can upload multiple files to a single\n"
+" URL by using the same URL globbing style supported in the URL.\n"
"\n"
-" When uploading to an SMTP server: the uploaded data is assumed\n"
+" When uploading to an SMTP server: the uploaded data is assumed\n"
" to be RFC 5322 formatted. It has to feature the necessary set of\n"
+" headers and mail body formatted correctly by the user as curl\n"
, stdout);
fputs(
-" headers and mail body formatted correctly by the user as curl\n"
" will not transcode nor encode it further in any way.\n"
"\n"
+" --upload-file can be used several times in a command line\n"
+"\n"
" Examples:\n"
" curl -T file https://example.com\n"
" curl -T \"img[1-1000].png\" ftp://ftp.example.com/\n"
@@ -5120,59 +5953,63 @@ void hugehelp(void)
" See also -G, --get and -I, --head.\n"
"\n"
" --url <url>\n"
+" Specify a URL to fetch. This option is mostly handy when you\n"
, stdout);
fputs(
-" Specify a URL to fetch. This option is mostly handy when you\n"
" want to specify URL(s) in a config file.\n"
"\n"
-" If the given URL is missing a scheme name (such as \"http://\" or\n"
-" \"ftp://\" etc) then curl will make a guess based on the host. If\n"
-" the outermost sub-domain name matches DICT, FTP, IMAP, LDAP,\n"
-" POP3 or SMTP then that protocol will be used, otherwise HTTP\n"
+" If the given URL is missing a scheme name (such as \"http://\" or\n"
+" \"ftp://\" etc) then curl will make a guess based on the host. If\n"
+" the outermost sub-domain name matches DICT, FTP, IMAP, LDAP,\n"
+" POP3 or SMTP then that protocol will be used, otherwise HTTP\n"
+" will be used. Since 7.45.0 guessing can be disabled by setting a\n"
, stdout);
fputs(
-" will be used. Since 7.45.0 guessing can be disabled by setting a\n"
" default protocol, see --proto-default for details.\n"
"\n"
-" 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"
-" name options.\n"
+" To control where this URL is written, use the --output or the\n"
+" --remote-name options.\n"
"\n"
" WARNING: On Windows, particular file:// accesses can be con-\n"
" verted to network accesses by the operating system. Beware!\n"
"\n"
-, stdout);
- fputs(
+" --url can be used several times in a command line\n"
+"\n"
" Example:\n"
" curl --url https://example.com\n"
"\n"
+, stdout);
+ fputs(
" See also -:, --next and -K, --config.\n"
"\n"
" -B, --use-ascii\n"
" (FTP LDAP) Enable ASCII transfer. For FTP, this can also be en-\n"
" forced by using a URL that ends with \";type=A\". This option\n"
" causes data sent to stdout to be in text mode for win32 systems.\n"
+" Providing --use-ascii multiple times has no extra effect. Dis-\n"
+" able it again with --no-use-ascii.\n"
"\n"
" Example:\n"
-" curl -B ftp://example.com/README\n"
-"\n"
, stdout);
fputs(
+" curl -B ftp://example.com/README\n"
+"\n"
" See also --crlf and --data-ascii.\n"
"\n"
" -A, --user-agent <name>\n"
" (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
-" To encode blanks in the string, surround the string with single\n"
-" quote marks. This header can also be set with the -H, --header\n"
-" or the --proxy-header options.\n"
+" To encode blanks in the string, surround the string with single\n"
+" quote marks. This header can also be set with the --header or\n"
+" the --proxy-header options.\n"
"\n"
-" If you give an empty argument to -A, --user-agent (\"\"), it will\n"
+" If you give an empty argument to -A, --user-agent (\"\"), it will\n"
, stdout);
fputs(
-" remove the header completely from the request. If you prefer a\n"
+" remove the header completely from the request. If you prefer a\n"
" blank header, you can set it to a single space (\" \").\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --user-agent is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
" curl -A \"Agent 007\" https://example.com\n"
@@ -5180,10 +6017,10 @@ void hugehelp(void)
" See also -H, --header and --proxy-header.\n"
"\n"
" -u, --user <user:password>\n"
-" Specify the user name and password to use for server authentica-\n"
, stdout);
fputs(
-" tion. Overrides -n, --netrc and --netrc-optional.\n"
+" Specify the user name and password to use for server authentica-\n"
+" tion. Overrides --netrc and --netrc-optional.\n"
"\n"
" If you simply specify the user name, curl will prompt for a\n"
" password.\n"
@@ -5192,27 +6029,27 @@ void hugehelp(void)
" which makes it impossible to use a colon in the user name with\n"
" this option. The password can, still.\n"
"\n"
-" On systems where it works, curl will hide the given option argu-\n"
, stdout);
fputs(
+" On systems where it works, curl will hide the given option argu-\n"
" ment from process listings. This is not enough to protect cre-\n"
" dentials from possibly getting seen by other users on the same\n"
" system as they will still be visible for a moment before\n"
" cleared. Such sensitive data should be retrieved from a file in-\n"
" stead or similar and never used in clear text in a command line.\n"
-" When using Kerberos V5 with a Windows based server you should\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 successfully obtain a Kerberos Ticket. If you do\n"
" not, 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"
-" forest in your setup for example.\n"
-"\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"
@@ -5224,7 +6061,8 @@ void hugehelp(void)
fputs(
" 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"
+" If --user is provided several times, the last set value will be\n"
+" used.\n"
"\n"
" Example:\n"
" curl -u user:secret https://example.com\n"
@@ -5232,16 +6070,16 @@ void hugehelp(void)
" See also -n, --netrc and -K, --config.\n"
"\n"
" -v, --verbose\n"
-" Makes curl verbose during the operation. Useful for debugging\n"
-" and seeing what's going on \"under the hood\". A line starting\n"
+" Makes curl verbose during the operation. Useful for debugging\n"
+" and seeing what's going on \"under the hood\". A line starting\n"
, stdout);
fputs(
-" with '>' means \"header data\" sent by curl, '<' means \"header\n"
-" data\" received by curl that is hidden in normal cases, and a\n"
+" with '>' means \"header data\" sent by curl, '<' means \"header\n"
+" data\" received by curl that is hidden in normal cases, and a\n"
" line starting with '*' means additional info provided by curl.\n"
"\n"
-" If you only want HTTP headers in the output, -i, --include might\n"
-" be the option you are looking for.\n"
+" If you only want HTTP headers in the output, --include might be\n"
+" the option you are looking for.\n"
"\n"
" If you think this option still does not give you enough details,\n"
, stdout);
@@ -5251,17 +6089,20 @@ void hugehelp(void)
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
-" Use -s, --silent to make curl really quiet.\n"
+" Use --silent to make curl really quiet.\n"
+"\n"
+" Providing --verbose multiple times has no extra effect. Disable\n"
+" it again with --no-verbose.\n"
"\n"
" Example:\n"
" curl --verbose https://example.com\n"
"\n"
-" See also -i, --include. This option overrides --trace and\n"
-" --trace-ascii.\n"
-"\n"
-" -V, --version\n"
, stdout);
fputs(
+" See also -i, --include. This option is mutually exclusive to\n"
+" --trace and --trace-ascii.\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"
" other 3rd party libraries linked with the executable.\n"
@@ -5269,9 +6110,9 @@ void hugehelp(void)
" 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"
, stdout);
fputs(
+" The third line (starts with \"Features:\") shows specific features\n"
" libcurl reports to offer. Available features include:\n"
"\n"
" alt-svc\n"
@@ -5282,11 +6123,11 @@ void hugehelp(void)
" name resolves can be done using either the c-ares or the\n"
" threaded resolver backends.\n"
"\n"
+, stdout);
+ fputs(
" brotli Support for automatic brotli compression over HTTP(S).\n"
"\n"
" CharConv\n"
-, stdout);
- fputs(
" curl was built with support for character set conversions\n"
" (like EBCDIC)\n"
"\n"
@@ -5295,11 +6136,11 @@ void hugehelp(void)
" developers only!\n"
"\n"
" gsasl The built-in SASL authentication includes extensions to\n"
+, stdout);
+ fputs(
" support SCRAM because libcurl was built with libgsasl.\n"
"\n"
" GSS-API\n"
-, stdout);
- fputs(
" GSS-API is supported.\n"
"\n"
" HSTS HSTS support is present.\n"
@@ -5312,11 +6153,11 @@ void hugehelp(void)
"\n"
" IDN This curl supports IDN - international domain names.\n"
"\n"
+, stdout);
+ fputs(
" IPv6 You can use IPv6 with this.\n"
"\n"
" Kerberos\n"
-, stdout);
- fputs(
" Kerberos V5 authentication is supported.\n"
"\n"
" Largefile\n"
@@ -5329,11 +6170,11 @@ void hugehelp(void)
" MultiSSL\n"
" This curl supports multiple TLS backends.\n"
"\n"
+, stdout);
+ fputs(
" NTLM NTLM authentication is supported.\n"
"\n"
" NTLM_WB\n"
-, stdout);
- fputs(
" NTLM delegation to winbind helper is supported.\n"
"\n"
" PSL PSL is short for Public Suffix List and means that this\n"
@@ -5343,12 +6184,12 @@ void hugehelp(void)
" SPNEGO SPNEGO authentication is supported.\n"
"\n"
" SSL SSL versions of various protocols are supported, such as\n"
+, stdout);
+ fputs(
" HTTPS, FTPS, POP3S and so on.\n"
"\n"
" SSPI SSPI is supported.\n"
"\n"
-, stdout);
- fputs(
" TLS-SRP\n"
" SRP (Secure Remote Password) authentication is supported\n"
" for TLS.\n"
@@ -5362,11 +6203,14 @@ void hugehelp(void)
" UnixSockets\n"
" Unix sockets support is provided.\n"
"\n"
+, stdout);
+ fputs(
" zstd Automatic decompression (via zstd) of compressed files\n"
" over HTTP is supported.\n"
"\n"
-, stdout);
- fputs(
+" Providing --version multiple times has no extra effect. Disable it\n"
+" again with --no-version.\n"
+"\n"
" Example:\n"
" curl --version\n"
"\n"
@@ -5374,34 +6218,42 @@ void hugehelp(void)
"\n"
" -w, --write-out <format>\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"
, stdout);
fputs(
-" file with \"@filename\" and to tell curl to read the format from\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"
" stdin you write \"@-\".\n"
"\n"
-" The variables present in the output format will be substituted\n"
-" by the value or text that curl thinks fit, as described below.\n"
-" All variables are specified as %{variable_name} and to output a\n"
-" normal % you just write them as %%. You can output a newline by\n"
+" The variables present in the output format will be substituted\n"
, stdout);
fputs(
+" by the value or text that curl thinks fit, as described below.\n"
+" All variables are specified as %{variable_name} and to output a\n"
+" normal % you just write them as %%. You can output a newline by\n"
" using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
-" The output will be written to standard output, but this can be\n"
+" The output will be written to standard output, but this can be\n"
" switched to standard error by using %{stderr}.\n"
"\n"
+, stdout);
+ fputs(
+" Output HTTP headers from the most recent request by using\n"
+" %header{name} where name is the case insensitive name of the\n"
+" header (without the trailing colon). The header contents are ex-\n"
+" actly as sent over the network, with leading and trailing white-\n"
+" space trimmed. Added in curl 7.84.0.\n"
+"\n"
" NOTE: The %-symbol is a special symbol in the win32-environment,\n"
-" where all occurrences of % must be doubled when using this op-\n"
+, stdout);
+ fputs(
+" where all occurrences of % must be doubled when using this op-\n"
" tion.\n"
"\n"
" The variables available are:\n"
"\n"
-, stdout);
- fputs(
-" content_type The Content-Type of the requested document, if\n"
+" content_type The Content-Type of the requested document, if\n"
" there was any.\n"
"\n"
" errormsg The error message. (Added in 7.75.0)\n"
@@ -5410,22 +6262,37 @@ void hugehelp(void)
" 7.75.0)\n"
"\n"
" filename_effective\n"
-" The ultimate filename that curl writes out to.\n"
-" This is only meaningful if curl is told to write\n"
, stdout);
fputs(
-" to a file with the -O, --remote-name or -o,\n"
-" --output option. It's most useful in combination\n"
-" with the -J, --remote-header-name option.\n"
+" The ultimate filename that curl writes out to.\n"
+" This is only meaningful if curl is told to write\n"
+" to a file with the --remote-name or --output op-\n"
+" tion. It's most useful in combination with the\n"
+" --remote-header-name option.\n"
"\n"
" ftp_entry_path The initial path curl ended up in when logging on\n"
+, stdout);
+ fputs(
" to the remote FTP server.\n"
"\n"
-" http_code The numerical response code that was found in the\n"
+" header_json A JSON object with all HTTP response headers from\n"
+" the recent transfer. Values are provided as ar-\n"
+" rays, since in the case of multiple headers there\n"
+" can be multiple values.\n"
+"\n"
+" The header names provided in lowercase, listed in\n"
, stdout);
fputs(
+" order of appearance over the wire. Except for du-\n"
+" plicated headers. They are grouped on the first\n"
+" occurrence of that header, each value is pre-\n"
+" sented in the JSON array.\n"
+"\n"
+" http_code The numerical response code that was found in the\n"
" last retrieved HTTP(S) or FTP(s) transfer.\n"
"\n"
+, stdout);
+ fputs(
" http_connect The numerical code that was found in the last re-\n"
" sponse (from a proxy) to a curl CONNECT request.\n"
"\n"
@@ -5434,9 +6301,9 @@ void hugehelp(void)
"\n"
" json A JSON object with all available keys.\n"
"\n"
+" local_ip The IP address of the local end of the most re-\n"
, stdout);
fputs(
-" local_ip The IP address of the local end of the most re-\n"
" cently done connection - can be either IPv4 or\n"
" IPv6.\n"
"\n"
@@ -5446,21 +6313,22 @@ void hugehelp(void)
" method The http method used in the most recent HTTP re-\n"
" quest. (Added in 7.72.0)\n"
"\n"
-, stdout);
- fputs(
" num_connects Number of new connects made in the recent trans-\n"
" fer.\n"
"\n"
+, stdout);
+ fputs(
" num_headers The number of response headers in the most recent\n"
-" request (restarted at each\n"
-" redirect). Note that the status line IS NOT a header. (Added in 7.73.0)\n"
+" request (restarted at each redirect). Note that\n"
+" the status line IS NOT a header. (Added in\n"
+" 7.73.0)\n"
"\n"
" num_redirects Number of redirects that were followed in the re-\n"
" quest.\n"
"\n"
+" onerror The rest of the output is only shown if the\n"
, stdout);
fputs(
-" onerror The rest of the output is only shown if the\n"
" transfer returned a non-zero error (Added in\n"
" 7.75.0)\n"
"\n"
@@ -5469,10 +6337,10 @@ void hugehelp(void)
" cate verification that was requested. 0 means the\n"
" verification was successful. (Added in 7.52.0)\n"
"\n"
+" redirect_url When an HTTP request was made without --location\n"
, stdout);
fputs(
-" redirect_url When an HTTP request was made without -L, --loca-\n"
-" tion to follow redirects (or when --max-redirs is\n"
+" to follow redirects (or when --max-redirs is\n"
" met), this variable will show the actual URL a\n"
" redirect would have gone to.\n"
"\n"
@@ -5480,10 +6348,10 @@ void hugehelp(void)
" 7.76.0)\n"
"\n"
" remote_ip The remote IP address of the most recently done\n"
-, stdout);
- fputs(
" connection - can be either IPv4 or IPv6.\n"
"\n"
+, stdout);
+ fputs(
" remote_port The remote port number of the most recently done\n"
" connection.\n"
"\n"
@@ -5524,37 +6392,36 @@ void hugehelp(void)
" tion that was requested. 0 means the verification\n"
" was successful.\n"
"\n"
-" stderr From this point on, the -w, --write-out output\n"
-" will be written to standard error. (Added in\n"
-" 7.63.0)\n"
+" stderr From this point on, the --write-out output will\n"
+" be written to standard error. (Added in 7.63.0)\n"
+"\n"
, stdout);
fputs(
-"\n"
-" stdout From this point on, the -w, --write-out output\n"
-" will be written to standard output. This is the\n"
-" default, but can be used to switch back after\n"
+" stdout From this point on, the --write-out output will\n"
+" be written to standard output. This is the de-\n"
+" fault, but can be used to switch back after\n"
" switching to stderr. (Added in 7.63.0)\n"
"\n"
" time_appconnect\n"
-" The time, in seconds, it took from the start un-\n"
-" til the SSL/SSH/etc connect/handshake to the re-\n"
+" The time, in seconds, it took from the start un-\n"
+" til the SSL/SSH/etc connect/handshake to the re-\n"
, stdout);
fputs(
" mote host was completed.\n"
"\n"
-" time_connect The time, in seconds, it took from the start un-\n"
+" time_connect The time, in seconds, it took from the start un-\n"
" til the TCP connect to the remote host (or proxy)\n"
" was completed.\n"
"\n"
" time_namelookup\n"
-" The time, in seconds, it took from the start un-\n"
+" The time, in seconds, it took from the start un-\n"
" til the name resolving was completed.\n"
"\n"
" time_pretransfer\n"
, stdout);
fputs(
-" The time, in seconds, it took from the start un-\n"
-" til the file transfer was just about to begin.\n"
+" The time, in seconds, it took from the start un-\n"
+" til the file transfer was just about to begin.\n"
" This includes all pre-transfer commands and nego-\n"
" tiations that are specific to the particular pro-\n"
" tocol(s) involved.\n"
@@ -5563,20 +6430,20 @@ void hugehelp(void)
, stdout);
fputs(
" steps including name lookup, connect, pretransfer\n"
-" and transfer before the final transaction was\n"
-" started. time_redirect shows the complete execu-\n"
+" and transfer before the final transaction was\n"
+" started. time_redirect shows the complete execu-\n"
" tion time for multiple redirections.\n"
"\n"
" time_starttransfer\n"
-" The time, in seconds, it took from the start un-\n"
-" til the first byte was just about to be trans-\n"
+" The time, in seconds, it took from the start un-\n"
+" til the first byte was just about to be trans-\n"
, stdout);
fputs(
-" ferred. This includes time_pretransfer and also\n"
-" the time the server needed to calculate the re-\n"
+" ferred. This includes time_pretransfer and also\n"
+" the time the server needed to calculate the re-\n"
" sult.\n"
"\n"
-" time_total The total time, in seconds, that the full opera-\n"
+" time_total The total time, in seconds, that the full opera-\n"
" tion lasted.\n"
"\n"
" url The URL that was fetched. (Added in 7.75.0)\n"
@@ -5584,14 +6451,15 @@ void hugehelp(void)
" urlnum The URL index number of this transfer, 0-indexed.\n"
, stdout);
fputs(
-" De-globbed URLs share the same index number as\n"
+" De-globbed URLs share the same index number as\n"
" the origin globbed URL. (Added in 7.75.0)\n"
"\n"
" url_effective The URL that was fetched last. This is most mean-\n"
-" ingful if you have told curl to follow location:\n"
+" ingful if you have told curl to follow location:\n"
" headers.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
+" If --write-out is provided several times, the last set value\n"
+" will be used.\n"
"\n"
" Example:\n"
, stdout);
@@ -5610,6 +6478,9 @@ void hugehelp(void)
" file system does not support extended attributes, a warning is\n"
" issued.\n"
"\n"
+" Providing --xattr multiple times has no extra effect. Disable\n"
+" it again with --no-xattr.\n"
+"\n"
" Example:\n"
" curl --xattr -o storage https://example.com\n"
"\n"
@@ -5617,51 +6488,50 @@ void hugehelp(void)
"\n"
"FILES\n"
" ~/.curlrc\n"
-" Default config file, see -K, --config for details.\n"
+" Default config file, see --config for details.\n"
"\n"
"ENVIRONMENT\n"
-" The environment variables can be specified in lower case or upper case.\n"
, stdout);
fputs(
+" 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"
" is only available in lower case.\n"
"\n"
-" Using an environment variable to set the proxy has the same effect as\n"
-" using the -x, --proxy option.\n"
+" Using an environment variable to set the proxy has the same effect as\n"
+" using the --proxy option.\n"
"\n"
" http_proxy [protocol://]<host>[:port]\n"
" Sets the proxy server to use for HTTP.\n"
" HTTPS_PROXY [protocol://]<host>[:port]\n"
+, stdout);
+ fputs(
" Sets the proxy server to use for HTTPS.\n"
"\n"
" [url-protocol]_PROXY [protocol://]<host>[:port]\n"
-, stdout);
- fputs(
-" Sets the proxy server to use for [url-protocol], where the pro-\n"
-" tocol is a protocol that curl supports and as specified in a\n"
+" Sets the proxy server to use for [url-protocol], where the pro-\n"
+" tocol is a protocol that curl supports and as specified in a\n"
" URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP, etc.\n"
"\n"
" ALL_PROXY [protocol://]<host>[:port]\n"
-" Sets the proxy server to use if no protocol-specific proxy is\n"
+" Sets the proxy server to use if no protocol-specific proxy is\n"
" set.\n"
"\n"
-" NO_PROXY <comma-separated list of hosts/domains>\n"
-" list of host names that should not go through any proxy. If set\n"
, stdout);
fputs(
+" NO_PROXY <comma-separated list of hosts/domains>\n"
+" list of host names that should not go through any proxy. If set\n"
" to an asterisk '*' only, it matches all hosts. Each name in this\n"
" list is matched as either a domain name which contains the host-\n"
" name, or the hostname itself.\n"
"\n"
-" This environment variable disables use of the proxy even when\n"
-" specified with the -x, --proxy option. That is NO_PROXY=di-\n"
-" rect.example.com curl -x http://proxy.example.com http://di-\n"
+" This environment variable disables use of the proxy even when\n"
+" specified with the --proxy option. That is NO_PROXY=direct.exam-\n"
, stdout);
fputs(
-" rect.example.com accesses the target URL directly, and\n"
-" NO_PROXY=direct.example.com curl -x http://proxy.example.com\n"
-" http://somewhere.example.com accesses the target URL through the\n"
-" proxy.\n"
+" ple.com curl -x http://proxy.example.com http://direct.exam-\n"
+" ple.com accesses the target URL directly, and NO_PROXY=di-\n"
+" rect.example.com curl -x http://proxy.example.com http://some-\n"
+" where.example.com accesses the target URL through the proxy.\n"
"\n"
" The list of host names can also be include numerical IP ad-\n"
" dresses, and IPv6 versions should then be given without enclos-\n"
@@ -5705,8 +6575,8 @@ void hugehelp(void)
" SSL backend names (case-insensitive): bearssl, gnutls, gskit,\n"
, stdout);
fputs(
-" mbedtls, mesalink, nss, openssl, rustls, schannel, secure-trans-\n"
-" port, wolfssl\n"
+" mbedtls, nss, openssl, rustls, schannel, secure-transport, wolf-\n"
+" ssl\n"
"\n"
" HOME <dir>\n"
" If set, this is used to find the home directory when that is\n"
@@ -5791,6 +6661,9 @@ void hugehelp(void)
" ror messages that may appear under error conditions. At the time of\n"
" this writing, the exit codes are:\n"
"\n"
+" 0 Success. The operation completed successfully according to the\n"
+" instructions.\n"
+"\n"
" 1 Unsupported protocol. This build of curl has no support for this\n"
" protocol.\n"
"\n"
@@ -5798,50 +6671,50 @@ void hugehelp(void)
"\n"
" 3 URL malformed. The syntax was not correct.\n"
"\n"
-" 4 A feature or option that was needed to perform the desired re-\n"
-" quest was not enabled or was explicitly disabled at build-time.\n"
, stdout);
fputs(
+" 4 A feature or option that was needed to perform the desired re-\n"
+" quest was not enabled or was explicitly disabled at build-time.\n"
" To make curl able to do this, you probably need another build of\n"
" libcurl.\n"
"\n"
-" 5 Could not resolve proxy. The given proxy host could not be re-\n"
+" 5 Could not resolve proxy. The given proxy host could not be re-\n"
" solved.\n"
"\n"
-" 6 Could not resolve host. The given remote host could not be re-\n"
+" 6 Could not resolve host. The given remote host could not be re-\n"
" solved.\n"
"\n"
+, stdout);
+ fputs(
" 7 Failed to connect to host.\n"
"\n"
" 8 Weird server reply. The server sent data curl could not parse.\n"
"\n"
-, stdout);
- fputs(
-" 9 FTP access denied. The server denied login or denied access to\n"
-" the particular resource or directory you wanted to reach. Most\n"
-" often you tried to change to a directory that does not exist on\n"
+" 9 FTP access denied. The server denied login or denied access to\n"
+" the particular resource or directory you wanted to reach. Most\n"
+" often you tried to change to a directory that does not exist on\n"
" the server.\n"
"\n"
-" 10 FTP accept failed. While waiting for the server to connect back\n"
-" when an active FTP session is used, an error code was sent over\n"
-" the control connection or similar.\n"
-"\n"
+" 10 FTP accept failed. While waiting for the server to connect back\n"
, stdout);
fputs(
+" when an active FTP session is used, an error code was sent over\n"
+" the control connection or similar.\n"
+"\n"
" 11 FTP weird PASS reply. Curl could not parse the reply sent to the\n"
" PASS request.\n"
"\n"
-" 12 During an active FTP session while waiting for the server to\n"
+" 12 During an active FTP session while waiting for the server to\n"
" connect back to curl, the timeout expired.\n"
"\n"
" 13 FTP weird PASV reply, Curl could not parse the reply sent to the\n"
" PASV request.\n"
"\n"
-" 14 FTP weird 227 format. Curl could not parse the 227-line the\n"
-" server sent.\n"
-"\n"
, stdout);
fputs(
+" 14 FTP weird 227 format. Curl could not parse the 227-line the\n"
+" server sent.\n"
+"\n"
" 15 FTP cannot use host. Could not resolve the host IP we got in the\n"
" 227-line.\n"
"\n"
@@ -5849,27 +6722,27 @@ void hugehelp(void)
" This is somewhat generic and can be one out of several problems,\n"
" see the error message for details.\n"
"\n"
-" 17 FTP could not set binary. Could not change transfer method to\n"
+" 17 FTP could not set binary. Could not change transfer method to\n"
+, stdout);
+ fputs(
" binary.\n"
"\n"
" 18 Partial file. Only a part of the file was transferred.\n"
"\n"
-, stdout);
- fputs(
" 19 FTP could not download/access the given file, the RETR (or simi-\n"
" lar) command failed.\n"
"\n"
" 21 FTP quote error. A quote command returned error from the server.\n"
-" 22 HTTP page not retrieved. The requested url was not found or re-\n"
-" turned another error with the HTTP error code being 400 or\n"
-" above. This return code only appears if -f, --fail is used.\n"
-"\n"
+" 22 HTTP page not retrieved. The requested URL was not found or re-\n"
+" turned another error with the HTTP error code being 400 or\n"
, stdout);
fputs(
-" 23 Write error. Curl could not write data to a local filesystem or\n"
+" above. This return code only appears if --fail is used.\n"
+"\n"
+" 23 Write error. Curl could not write data to a local filesystem or\n"
" similar.\n"
"\n"
-" 25 FTP could not STOR file. The server denied the STOR operation,\n"
+" 25 FTP could not STOR file. The server denied the STOR operation,\n"
" used for FTP uploading.\n"
"\n"
" 26 Read error. Various reading problems.\n"
@@ -5877,12 +6750,12 @@ void hugehelp(void)
" 27 Out of memory. A memory allocation request failed.\n"
"\n"
" 28 Operation timeout. The specified time-out period was reached ac-\n"
-" cording to the conditions.\n"
-"\n"
, stdout);
fputs(
-" 30 FTP PORT failed. The PORT command failed. Not all FTP servers\n"
-" support the PORT command, try doing a transfer using PASV in-\n"
+" cording to the conditions.\n"
+"\n"
+" 30 FTP PORT failed. The PORT command failed. Not all FTP servers\n"
+" support the PORT command, try doing a transfer using PASV in-\n"
" stead!\n"
"\n"
" 31 FTP could not use REST. The REST command failed. This command is\n"
@@ -5914,23 +6787,21 @@ void hugehelp(void)
"\n"
" 43 Internal error. A function was called with a bad parameter.\n"
"\n"
-" 45 Interface error. A specified outgoing interface could not be\n"
+" 45 Interface error. A specified outgoing interface could not be\n"
" used.\n"
"\n"
" 47 Too many redirects. When following redirects, curl hit the maxi-\n"
" mum amount.\n"
"\n"
-" 48 Unknown option specified to libcurl. This indicates that you\n"
-" passed a weird option to curl that was passed on to libcurl and\n"
+" 48 Unknown option specified to libcurl. This indicates that you\n"
+" passed a weird option to curl that was passed on to libcurl and\n"
, stdout);
fputs(
" rejected. Read up in the manual!\n"
"\n"
" 49 Malformed telnet option.\n"
"\n"
-" 51 The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
-"\n"
-" 52 The server did not reply anything, which here is considered an\n"
+" 52 The server did not reply anything, which here is considered an\n"
" error.\n"
"\n"
" 53 SSL crypto engine not found.\n"
@@ -5941,18 +6812,16 @@ void hugehelp(void)
"\n"
" 56 Failure in receiving network data.\n"
"\n"
-, stdout);
- fputs(
" 58 Problem with the local certificate.\n"
" 59 Could not use specified SSL cipher.\n"
"\n"
-" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
+, stdout);
+ fputs(
+" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
" cates.\n"
"\n"
" 61 Unrecognized transfer encoding.\n"
"\n"
-" 62 Invalid LDAP URL.\n"
-"\n"
" 63 Maximum file size exceeded.\n"
"\n"
" 64 Requested FTP SSL level failed.\n"
@@ -5961,11 +6830,11 @@ void hugehelp(void)
"\n"
" 66 Failed to initialise SSL Engine.\n"
"\n"
-, stdout);
- fputs(
-" 67 The user name, password, or similar was not accepted and curl\n"
+" 67 The user name, password, or similar was not accepted and curl\n"
" failed to log in.\n"
"\n"
+, stdout);
+ fputs(
" 68 File not found on TFTP server.\n"
"\n"
" 69 Permission problem on TFTP server.\n"
@@ -5980,16 +6849,12 @@ void hugehelp(void)
"\n"
" 74 No such user (TFTP).\n"
"\n"
-" 75 Character conversion failed.\n"
-"\n"
-, stdout);
- fputs(
-" 76 Character conversion functions required.\n"
-"\n"
" 77 Problem reading the SSL CA cert (path? access rights?).\n"
"\n"
" 78 The resource referenced in the URL does not exist.\n"
"\n"
+, stdout);
+ fputs(
" 79 An unspecified error occurred during the SSH session.\n"
"\n"
" 80 Failed to shut down the SSL connection.\n"
@@ -6000,8 +6865,6 @@ void hugehelp(void)
"\n"
" 84 The FTP PRET command failed.\n"
"\n"
-, stdout);
- fputs(
" 85 Mismatch of RTSP CSeq numbers.\n"
"\n"
" 86 Mismatch of RTSP Session Identifiers.\n"
@@ -6010,6 +6873,8 @@ void hugehelp(void)
"\n"
" 88 FTP chunk callback reported error.\n"
"\n"
+, stdout);
+ fputs(
" 89 No connection available, the session will be queued.\n"
"\n"
" 90 SSL public key does not matched pinned public key.\n"
@@ -6020,28 +6885,28 @@ void hugehelp(void)
"\n"
" 93 An API function was called from inside a callback.\n"
"\n"
-, stdout);
- fputs(
" 94 An authentication function returned an error.\n"
"\n"
-" 95 A problem was detected in the HTTP/3 layer. This is somewhat\n"
-" generic and can be one out of several problems, see the error\n"
+" 95 A problem was detected in the HTTP/3 layer. This is somewhat\n"
+, stdout);
+ fputs(
+" generic and can be one out of several problems, see the error\n"
" message for details.\n"
"\n"
-" 96 QUIC connection error. This error may be caused by an SSL li-\n"
+" 96 QUIC connection error. This error may be caused by an SSL li-\n"
" brary error. QUIC is the protocol used for HTTP/3 transfers.\n"
"\n"
" XX More error codes will appear here in future releases. The exist-\n"
-, stdout);
- fputs(
" ing ones are meant to never change.\n"
"\n"
"BUGS\n"
-" If you experience any problems with curl, submit an issue in the\n"
+" If you experience any problems with curl, submit an issue in the\n"
+, stdout);
+ fputs(
" project's bug tracker on GitHub: https://github.com/curl/curl/issues\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
-" Daniel Stenberg is the main author, but the whole list of contributors\n"
+" Daniel Stenberg is the main author, but the whole list of contributors\n"
" is found in the separate THANKS file.\n"
"\n"
"WWW\n"
@@ -6052,10 +6917,6 @@ void hugehelp(void)
"\n"
, stdout) ;
}
-#else /* !USE_MANUAL */
-/* built-in manual is disabled, blank function */
-#include "tool_hugehelp.h"
-void hugehelp(void) {}
#endif /* USE_MANUAL */
#else
/*
@@ -6067,4826 +6928,5270 @@ 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.
- Thanks to this operation, the size of this data shrank from 222237
- to 57795 bytes. You can disable the use of compressed help
+ Thanks to this operation, the size of this data shrank from 253328
+ to 63131 bytes. You can disable the use of compressed help
texts by NOT passing -c to the mkhelp.pl tool. */
- 0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
- 0x6b, 0x7b, 0xdc, 0xc6, 0xb5, 0x26, 0xfa, 0xdd, 0xbf, 0x02, 0xbb, 0x73,
- 0x32, 0x24, 0x77, 0x1a, 0xcd, 0xbb, 0x2e, 0x0c, 0xed, 0x31, 0x4d, 0x51,
- 0x16, 0x77, 0x28, 0x91, 0x51, 0x53, 0xb6, 0x33, 0xb6, 0x1f, 0x3d, 0x60,
- 0x37, 0x48, 0xc2, 0xea, 0x06, 0x3a, 0x00, 0x9a, 0x17, 0x67, 0x72, 0x7e,
- 0xfb, 0x59, 0xd7, 0xaa, 0x02, 0xaa, 0xd0, 0x64, 0xd3, 0x76, 0x9c, 0x3d,
- 0x67, 0xf6, 0x4c, 0x2c, 0x89, 0x04, 0x0a, 0x55, 0xab, 0x56, 0xad, 0x5a,
- 0xd7, 0x77, 0x45, 0xd1, 0x43, 0xff, 0xf7, 0x91, 0xfe, 0xf7, 0x11, 0xfe,
- 0x0f, 0xfe, 0xfc, 0x2c, 0x8a, 0xce, 0xca, 0xe2, 0xa7, 0x74, 0x54, 0x87,
- 0x9f, 0xfd, 0xf8, 0xf1, 0x7f, 0x47, 0xfc, 0xff, 0xe0, 0x9d, 0x1f, 0xe0,
- 0xcf, 0xcf, 0x16, 0x8e, 0xbd, 0x1e, 0xd9, 0x17, 0xfe, 0xf7, 0xc7, 0xb5,
- 0xe8, 0xa1, 0x17, 0xfe, 0x77, 0xb4, 0x4a, 0x2f, 0x7c, 0x94, 0x2f, 0xec,
- 0xe3, 0xdf, 0x3f, 0x7e, 0x5c, 0xfc, 0x91, 0x1f, 0x70, 0x56, 0xf8, 0x9f,
- 0x75, 0x7c, 0xef, 0x87, 0x8f, 0xf8, 0x57, 0xf8, 0xc9, 0x67, 0x9f, 0xbd,
- 0x3b, 0x78, 0x7b, 0xa4, 0xaf, 0x8e, 0xe6, 0xe5, 0x24, 0x8a, 0xa3, 0xba,
- 0x4c, 0xf2, 0xea, 0x32, 0x2d, 0xa3, 0x24, 0xfa, 0xf0, 0xfe, 0xe4, 0xb3,
- 0xcf, 0x86, 0x7f, 0x7b, 0x77, 0x7a, 0x36, 0x3c, 0x1e, 0x36, 0x1e, 0xfb,
- 0xbe, 0x98, 0xd5, 0x59, 0x91, 0x57, 0x30, 0x7d, 0x78, 0xa8, 0xfa, 0xf1,
- 0xb3, 0xcf, 0x5e, 0x1d, 0x0d, 0x0f, 0xdf, 0x1f, 0x9f, 0x9d, 0x1f, 0x9f,
- 0xbe, 0x6b, 0x3c, 0x19, 0x65, 0x55, 0x04, 0x43, 0xd5, 0x45, 0x31, 0x89,
- 0x2e, 0x8b, 0xd2, 0x0c, 0x5f, 0x66, 0xf9, 0x55, 0x34, 0x4e, 0xea, 0x24,
- 0xba, 0x2c, 0x8b, 0x69, 0x84, 0xbf, 0x29, 0xe0, 0xb9, 0x2a, 0x2d, 0x6f,
- 0xd2, 0x72, 0x10, 0x1d, 0xd7, 0x51, 0x35, 0x9f, 0xcd, 0x8a, 0xb2, 0xae,
- 0x74, 0xb8, 0xfa, 0x3a, 0xad, 0xd2, 0x68, 0x56, 0x16, 0x75, 0x31, 0x2a,
- 0x26, 0xd5, 0x5e, 0xf4, 0xea, 0xf8, 0xf0, 0xbc, 0x1f, 0xbd, 0x3e, 0x3e,
- 0x39, 0x82, 0xff, 0x9e, 0x9f, 0xd1, 0x7f, 0x86, 0xfd, 0xe8, 0xeb, 0xd3,
- 0xb3, 0x37, 0x47, 0xef, 0xf5, 0x4f, 0xf8, 0x41, 0xf4, 0xe6, 0x1c, 0x7f,
- 0x4b, 0x7f, 0x0c, 0xfb, 0x3a, 0xdc, 0xf1, 0xdb, 0x03, 0xfc, 0x21, 0xfe,
- 0x81, 0xcf, 0x9c, 0xbc, 0xa2, 0x7f, 0xe2, 0x1f, 0xf0, 0xcf, 0xb7, 0x7f,
- 0x3d, 0x87, 0xa1, 0xcf, 0x4e, 0xcf, 0xb6, 0xf9, 0xbf, 0xf0, 0xa3, 0xf7,
- 0xe7, 0x6f, 0xcf, 0xf8, 0xbf, 0xf4, 0x8f, 0x21, 0xfc, 0x63, 0x78, 0x78,
- 0x66, 0x86, 0x1b, 0xd2, 0x0c, 0x86, 0x6f, 0xbf, 0xa2, 0xff, 0x0c, 0xf1,
- 0xbf, 0xfc, 0x03, 0x9a, 0xd3, 0xf9, 0xd1, 0xc9, 0xbb, 0xa3, 0x73, 0x5c,
- 0xe5, 0x39, 0x3c, 0x37, 0x88, 0xce, 0xaf, 0xd3, 0x68, 0x54, 0x4c, 0xa7,
- 0x49, 0x3e, 0x66, 0x0a, 0x8d, 0xd3, 0x2a, 0xbb, 0xca, 0xd3, 0xb1, 0x59,
- 0x6c, 0x11, 0xdd, 0x16, 0xe5, 0xa7, 0xe8, 0x36, 0xab, 0xaf, 0x8b, 0x79,
- 0x1d, 0xcd, 0x81, 0x30, 0x51, 0x96, 0xd7, 0x69, 0x99, 0x8c, 0x90, 0xf2,
- 0x83, 0xcf, 0x1a, 0x54, 0x2e, 0x2e, 0x81, 0xa4, 0x15, 0xd0, 0xef, 0x62,
- 0x5e, 0x4d, 0x8a, 0x64, 0x0c, 0x3f, 0xc0, 0x57, 0x2e, 0xe7, 0x13, 0x20,
- 0x78, 0x36, 0xfa, 0x54, 0x45, 0x93, 0xec, 0x13, 0x11, 0xef, 0xee, 0x5e,
- 0x09, 0xdb, 0xe7, 0x41, 0x93, 0x39, 0x10, 0x36, 0x8f, 0xcd, 0x87, 0xb3,
- 0x51, 0x82, 0x1f, 0x20, 0x6a, 0x46, 0xf3, 0x19, 0x8e, 0xd6, 0x27, 0xd2,
- 0x45, 0xb3, 0xa2, 0x82, 0x97, 0x86, 0xc3, 0x13, 0x98, 0x7a, 0x9e, 0xa7,
- 0x34, 0x8f, 0xaa, 0x0f, 0xff, 0x28, 0x3e, 0x65, 0x29, 0xfc, 0xe5, 0x32,
- 0x9b, 0xa4, 0x11, 0x6f, 0xb0, 0x19, 0x0e, 0x19, 0xa9, 0x4c, 0xab, 0xf9,
- 0x34, 0x8d, 0x70, 0xad, 0xd3, 0xa2, 0x4c, 0x07, 0xd1, 0x41, 0x15, 0xdd,
- 0x17, 0x73, 0x58, 0xdb, 0x64, 0x02, 0x1b, 0x9e, 0x46, 0x17, 0xe9, 0xa4,
- 0xb8, 0xed, 0xe3, 0x06, 0x47, 0xf9, 0x7c, 0x7a, 0x01, 0xaf, 0xc0, 0xf4,
- 0x2f, 0xd3, 0xa4, 0x9e, 0xc3, 0xab, 0xf4, 0x98, 0x0e, 0x37, 0x4d, 0x60,
- 0x15, 0xf0, 0x6e, 0x19, 0x5d, 0xa7, 0xb0, 0xca, 0x6a, 0x96, 0xb5, 0x29,
- 0x01, 0xc4, 0x9c, 0x15, 0xb7, 0x69, 0x99, 0x8e, 0xa3, 0x8b, 0xfb, 0x08,
- 0x96, 0x7d, 0xc1, 0x6c, 0x88, 0xbc, 0x17, 0x25, 0xf0, 0x41, 0xc3, 0x81,
- 0x71, 0x99, 0x4e, 0x92, 0x1a, 0x9e, 0x33, 0x9f, 0x1a, 0xc0, 0x36, 0xa6,
- 0xa9, 0x0e, 0x27, 0xaf, 0xae, 0x6e, 0xaf, 0xd1, 0xcb, 0xe3, 0xb4, 0x4e,
- 0xb2, 0x49, 0x05, 0x9f, 0xc3, 0x63, 0x21, 0xcf, 0xe0, 0x3e, 0xe2, 0x09,
- 0x88, 0xa2, 0xea, 0x3e, 0xaf, 0x93, 0x3b, 0xfa, 0xbc, 0x70, 0x68, 0x3c,
- 0x4e, 0x67, 0x69, 0x3e, 0x4e, 0xf3, 0x7a, 0x10, 0xfd, 0x0d, 0x96, 0x7b,
- 0x99, 0x01, 0x01, 0x12, 0x19, 0x07, 0x3e, 0x0b, 0x5b, 0x3e, 0x2a, 0x33,
- 0x3a, 0x47, 0x3a, 0x5c, 0x96, 0x47, 0xef, 0x5f, 0x1f, 0x46, 0xdb, 0x2f,
- 0x5f, 0x3c, 0xb3, 0xcb, 0xc2, 0x77, 0x47, 0x49, 0x0e, 0x8b, 0x4d, 0x47,
- 0xd9, 0xe5, 0x7d, 0x34, 0x9d, 0x4f, 0xea, 0x6c, 0x06, 0xa4, 0xc6, 0x93,
- 0x87, 0x2c, 0x35, 0x4b, 0xe0, 0x94, 0x20, 0xc9, 0xe8, 0x07, 0xb4, 0xec,
- 0xdb, 0x32, 0xab, 0xf1, 0x80, 0xd1, 0xef, 0x60, 0x72, 0xa9, 0x3d, 0x46,
- 0xc8, 0x51, 0xf0, 0x9d, 0x0b, 0x60, 0x24, 0x20, 0x2e, 0x6e, 0xca, 0xdf,
- 0xe7, 0x05, 0x3d, 0x8c, 0xf4, 0xc7, 0xb5, 0x24, 0x15, 0x4c, 0x64, 0xef,
- 0x33, 0x2b, 0x52, 0x7a, 0xd7, 0x75, 0x3d, 0xdb, 0x5b, 0x5f, 0xaf, 0xb2,
- 0x3a, 0x1d, 0xfc, 0xa3, 0xc8, 0xd3, 0x7e, 0x7d, 0x5b, 0xf4, 0xeb, 0xeb,
- 0x32, 0x4d, 0xff, 0x39, 0x00, 0x36, 0xee, 0x99, 0x67, 0x61, 0x36, 0xf7,
- 0x32, 0xdd, 0xab, 0x14, 0x8e, 0x70, 0xfa, 0xf7, 0x79, 0x9a, 0xe3, 0x77,
- 0x60, 0x76, 0xc9, 0x64, 0x76, 0x9d, 0xc0, 0xfe, 0xa6, 0xc0, 0x90, 0x78,
- 0xce, 0x81, 0x67, 0x70, 0xae, 0xf3, 0x0a, 0xbf, 0xfd, 0xfd, 0x8f, 0x81,
- 0xcf, 0x5e, 0xd2, 0x57, 0xe1, 0xbf, 0x83, 0xf4, 0x2e, 0x99, 0xc2, 0x92,
- 0xf1, 0x63, 0xeb, 0xc8, 0x66, 0xdf, 0x6f, 0xc6, 0x9b, 0x1b, 0x1b, 0x3f,
- 0x0e, 0xea, 0xbb, 0xba, 0xf7, 0xc8, 0x37, 0x36, 0x36, 0x9c, 0x77, 0xf0,
- 0xe1, 0x55, 0xa4, 0x44, 0x34, 0x01, 0x3e, 0xc2, 0x09, 0xfc, 0x9c, 0x96,
- 0x45, 0xb5, 0xf6, 0xc8, 0xb1, 0x92, 0xf8, 0xe7, 0xd6, 0xb7, 0xdf, 0xa5,
- 0x15, 0xb1, 0x92, 0x5d, 0x71, 0x94, 0x94, 0xc0, 0xce, 0x85, 0x91, 0x63,
- 0x29, 0x1c, 0xa3, 0x0b, 0x38, 0xc9, 0x4a, 0x1f, 0x38, 0x7c, 0xf0, 0x34,
- 0x08, 0xbb, 0x04, 0x8e, 0x6f, 0x0e, 0x2f, 0xe4, 0xe9, 0x5d, 0xed, 0x1c,
- 0xff, 0x34, 0x19, 0x5d, 0x47, 0x05, 0xec, 0x49, 0x19, 0xda, 0x0a, 0x77,
- 0x4a, 0x49, 0x39, 0xba, 0xce, 0x6e, 0x80, 0x26, 0x2f, 0x5f, 0x3e, 0x8b,
- 0xe1, 0x3f, 0x2f, 0x7f, 0x5c, 0xbf, 0x29, 0x26, 0x40, 0xa2, 0x9d, 0x1f,
- 0xd7, 0x71, 0xff, 0xff, 0x91, 0xf4, 0x2f, 0xfa, 0xa3, 0x7f, 0x0e, 0xae,
- 0xeb, 0xe9, 0xa4, 0xd7, 0xc9, 0x56, 0x49, 0x0e, 0xff, 0x9b, 0x16, 0xf3,
- 0xbc, 0x36, 0xac, 0x54, 0xe4, 0xc4, 0x13, 0x2a, 0xa8, 0x26, 0x59, 0x0e,
- 0x87, 0x17, 0x79, 0x1e, 0x39, 0x0c, 0x0f, 0x2f, 0x9c, 0x5c, 0x7b, 0xd0,
- 0xeb, 0xd1, 0x35, 0x52, 0x00, 0x78, 0x2b, 0x11, 0x32, 0xd4, 0x19, 0xac,
- 0x0d, 0x5e, 0xcd, 0x49, 0x76, 0xd1, 0x58, 0xfc, 0xb5, 0x0c, 0x1e, 0x2c,
- 0xca, 0x31, 0x0a, 0xfa, 0xd6, 0x34, 0xcc, 0x59, 0x76, 0xbe, 0x19, 0xe9,
- 0x65, 0x83, 0x3f, 0xa0, 0x89, 0x4d, 0xb3, 0x3b, 0x18, 0x01, 0xff, 0x89,
- 0x5f, 0x83, 0x89, 0xf3, 0x68, 0x11, 0xce, 0x98, 0x3e, 0xa3, 0xef, 0xdb,
- 0xb3, 0x0c, 0x53, 0x6f, 0x2c, 0x9d, 0x3e, 0x6a, 0x17, 0x1f, 0xc1, 0xf6,
- 0xcd, 0xe0, 0xad, 0x39, 0x8a, 0x58, 0xbe, 0xa8, 0x60, 0x18, 0x90, 0x14,
- 0x57, 0xb0, 0x33, 0xb0, 0x1b, 0xc8, 0xcd, 0xb8, 0x59, 0xf7, 0xd1, 0x3b,
- 0x60, 0x1a, 0x96, 0x52, 0x0e, 0xd3, 0x4f, 0xd2, 0xba, 0x7e, 0x78, 0xa3,
- 0x2c, 0xe7, 0xee, 0x6d, 0x06, 0x98, 0xb7, 0xeb, 0x0d, 0xe0, 0xb6, 0xbd,
- 0xad, 0xd6, 0xe3, 0xdf, 0x82, 0xcc, 0xb6, 0x47, 0x07, 0x66, 0xf0, 0x8f,
- 0x7f, 0x3a, 0xbc, 0x77, 0x8b, 0xbf, 0xcd, 0xf2, 0x9b, 0xe2, 0x13, 0x90,
- 0x89, 0xee, 0xd7, 0xa4, 0x49, 0x51, 0x14, 0x52, 0xd3, 0x59, 0x6d, 0x6e,
- 0x2f, 0x64, 0x4a, 0xf8, 0xd1, 0x45, 0x72, 0x31, 0xb9, 0x8f, 0xae, 0x93,
- 0x9b, 0x14, 0xd7, 0x3c, 0x03, 0x6e, 0x45, 0x2a, 0xc0, 0x2d, 0x32, 0x21,
- 0xc1, 0x20, 0xa2, 0x63, 0x5c, 0xcc, 0x2f, 0x40, 0xfc, 0xa0, 0xd8, 0x60,
- 0xe2, 0x24, 0x37, 0x45, 0x36, 0xc6, 0x47, 0x75, 0xb8, 0xea, 0x3a, 0x85,
- 0x57, 0xe8, 0xc3, 0x74, 0x67, 0x81, 0xb4, 0xc5, 0x99, 0xd2, 0x81, 0xcb,
- 0x6a, 0xbc, 0xfe, 0x40, 0x4e, 0x26, 0x93, 0xaa, 0x88, 0xa2, 0xab, 0x02,
- 0xcf, 0x0a, 0x49, 0x67, 0x62, 0x76, 0xd8, 0x98, 0xeb, 0x04, 0x2f, 0x39,
- 0xb8, 0xcf, 0xcc, 0x69, 0x28, 0x53, 0x12, 0xd4, 0xb4, 0x5b, 0xc9, 0xa4,
- 0xcf, 0x97, 0x19, 0xbe, 0x23, 0xb4, 0x8a, 0x56, 0xfe, 0xc7, 0x4a, 0x3f,
- 0x5a, 0xf9, 0x9f, 0x2b, 0xc4, 0x13, 0x2b, 0xff, 0xb9, 0x62, 0xf7, 0x1a,
- 0x74, 0xb5, 0x9b, 0x6c, 0x9c, 0x32, 0x5b, 0x1c, 0x9f, 0xdd, 0x3c, 0x8b,
- 0x7e, 0x86, 0xd3, 0x06, 0xd3, 0x1a, 0xa7, 0x77, 0xca, 0x94, 0xba, 0x36,
- 0x78, 0x3b, 0x02, 0xa1, 0x9c, 0xcc, 0xe0, 0x5b, 0xb3, 0xb4, 0x1c, 0x01,
- 0x07, 0x27, 0x57, 0xc0, 0xb3, 0x70, 0x33, 0xeb, 0x70, 0x38, 0x3e, 0xbe,
- 0xc2, 0xcb, 0x02, 0x11, 0x1a, 0xe5, 0xc9, 0x14, 0x4e, 0xc5, 0x09, 0xce,
- 0x28, 0xcb, 0x03, 0xdb, 0xf9, 0xfd, 0x65, 0xfa, 0x62, 0x63, 0x6f, 0x6f,
- 0xfb, 0x8f, 0x5b, 0xbb, 0x69, 0x7d, 0xbd, 0xf1, 0xe3, 0xba, 0xdd, 0xc4,
- 0xe3, 0x4b, 0x22, 0xbc, 0x32, 0xa1, 0x4e, 0x03, 0xef, 0x7b, 0xbd, 0x44,
- 0x60, 0x00, 0xf8, 0x7b, 0x7a, 0x99, 0xdd, 0xf5, 0x55, 0xa1, 0xe2, 0x93,
- 0x97, 0x00, 0xc3, 0xc1, 0x0e, 0xa2, 0xa8, 0xd0, 0xe1, 0xae, 0xe6, 0x69,
- 0x05, 0xb4, 0xbc, 0xbd, 0x4e, 0xea, 0xc8, 0x0c, 0xc0, 0x7b, 0x3b, 0xcd,
- 0xae, 0xae, 0xeb, 0xe8, 0x36, 0xc1, 0xbb, 0x08, 0x54, 0x2b, 0x1a, 0x02,
- 0xaf, 0x7d, 0xb8, 0x84, 0x2e, 0x13, 0xb8, 0x4f, 0x70, 0x17, 0xe9, 0x8e,
- 0x07, 0x09, 0x65, 0xa9, 0x7e, 0x2f, 0x5b, 0x62, 0x74, 0xae, 0xe8, 0x22,
- 0xa9, 0xf0, 0xe8, 0xe6, 0x20, 0x22, 0x6a, 0x50, 0x1a, 0xe6, 0xf8, 0xaf,
- 0x6b, 0x50, 0x0b, 0x88, 0x0a, 0x32, 0x51, 0xba, 0x47, 0x5f, 0xe3, 0x86,
- 0xe2, 0xee, 0x18, 0x4d, 0x00, 0xb6, 0xa9, 0x2f, 0x1b, 0x6d, 0xde, 0xa8,
- 0xe0, 0xd8, 0x81, 0x80, 0x32, 0xbc, 0x81, 0x32, 0x77, 0xd0, 0xe3, 0x75,
- 0xd2, 0x1c, 0x93, 0x8a, 0x54, 0x07, 0xd2, 0x16, 0x60, 0xf2, 0xce, 0x62,
- 0x81, 0x68, 0xc9, 0x27, 0xd4, 0x51, 0x5a, 0xf7, 0x3f, 0xbd, 0x36, 0x2e,
- 0x80, 0xcd, 0x60, 0xb6, 0x20, 0x94, 0x71, 0x65, 0x28, 0x6a, 0x89, 0x2a,
- 0xc4, 0xe6, 0x30, 0x26, 0xfe, 0x30, 0xab, 0xf1, 0xc6, 0x21, 0x25, 0x17,
- 0xe6, 0x0b, 0x44, 0x21, 0x3d, 0x0c, 0x04, 0xb6, 0xb3, 0x7e, 0xba, 0x42,
- 0xe1, 0xd9, 0xe8, 0x26, 0x99, 0x64, 0xa0, 0xac, 0xa6, 0xe6, 0x2d, 0xba,
- 0xee, 0x47, 0xa8, 0x2c, 0x4d, 0xe0, 0xc4, 0x8c, 0x8a, 0xb2, 0x44, 0x83,
- 0x00, 0x77, 0xf0, 0x82, 0x45, 0xe9, 0x34, 0x05, 0x2d, 0xc3, 0x25, 0x27,
- 0x8c, 0x7e, 0x99, 0x64, 0x25, 0x3c, 0x0d, 0x8a, 0x05, 0x49, 0x7d, 0x5a,
- 0x32, 0xcd, 0x0b, 0x47, 0x1d, 0x8d, 0xd2, 0x59, 0x5d, 0x85, 0x56, 0xa3,
- 0x5b, 0x0d, 0x13, 0x29, 0x53, 0xa4, 0xb9, 0xab, 0x7f, 0x11, 0x45, 0x8d,
- 0x4a, 0x40, 0x2a, 0x98, 0x2a, 0x38, 0xa0, 0x92, 0x55, 0x85, 0xd5, 0x9e,
- 0x91, 0x2b, 0x40, 0x8c, 0x11, 0xb5, 0xa7, 0x38, 0x45, 0x7c, 0xb8, 0xe2,
- 0x53, 0x4a, 0xa2, 0x19, 0xb7, 0x90, 0xf5, 0x6f, 0xfe, 0x2e, 0x5e, 0x5e,
- 0x40, 0x49, 0x33, 0x38, 0x7c, 0xd5, 0xec, 0x26, 0x7e, 0x1e, 0xb5, 0x7f,
- 0xb8, 0xd1, 0xc7, 0xd5, 0x35, 0x68, 0x65, 0x95, 0x9c, 0xea, 0x6c, 0x0a,
- 0xdc, 0x72, 0x83, 0x3b, 0x3b, 0x4b, 0xd3, 0xf1, 0x20, 0x3a, 0xbd, 0x44,
- 0xa9, 0x5a, 0xc2, 0xa4, 0x6b, 0xfa, 0x35, 0xde, 0x2a, 0x40, 0x83, 0x31,
- 0x1e, 0x42, 0xab, 0xf8, 0xf0, 0x54, 0x9c, 0xdb, 0x81, 0x24, 0x79, 0x02,
- 0x3f, 0x81, 0xd9, 0x4e, 0x9a, 0x57, 0x10, 0x9d, 0x41, 0x90, 0xde, 0x38,
- 0xbd, 0x8b, 0x34, 0x22, 0x1e, 0xbc, 0x48, 0xeb, 0xdb, 0x34, 0x35, 0xc3,
- 0x55, 0x29, 0xdc, 0x7b, 0xb8, 0x5d, 0xac, 0x12, 0x82, 0x20, 0x64, 0xa5,
- 0x16, 0xc9, 0x7b, 0xfa, 0xe1, 0xfc, 0xec, 0xc3, 0xb9, 0x73, 0x04, 0x71,
- 0x9c, 0xba, 0x98, 0x8c, 0x99, 0xd9, 0x6f, 0xb3, 0x0a, 0xf8, 0x94, 0x89,
- 0x0f, 0x4a, 0x14, 0x0a, 0x38, 0xbc, 0x08, 0xd2, 0x51, 0x0a, 0x57, 0xec,
- 0x98, 0x2d, 0x16, 0xd8, 0x88, 0xaa, 0x06, 0x29, 0xc8, 0x87, 0x09, 0xe7,
- 0xa2, 0xc3, 0xc1, 0x7c, 0xe0, 0x73, 0x55, 0x5d, 0xce, 0x47, 0xa4, 0x0e,
- 0x20, 0xef, 0xe0, 0xbf, 0x49, 0x59, 0x25, 0xb1, 0x8a, 0xdb, 0x40, 0x83,
- 0x80, 0x04, 0x41, 0x83, 0x67, 0x02, 0x53, 0x9b, 0xd0, 0xfa, 0xfb, 0x22,
- 0xcf, 0x1d, 0x39, 0x1a, 0x17, 0xfd, 0x28, 0x8e, 0xe1, 0x43, 0x28, 0x8a,
- 0x61, 0x9f, 0xe3, 0x53, 0xfc, 0x77, 0x99, 0x4e, 0x41, 0xf2, 0xc6, 0x74,
- 0xe4, 0xe4, 0x6a, 0x1c, 0xe0, 0x42, 0xac, 0xbd, 0x75, 0x05, 0x73, 0x05,
- 0xfa, 0xe9, 0xce, 0xe9, 0x70, 0xac, 0x1f, 0xe2, 0x9c, 0x8c, 0x91, 0x17,
- 0xb8, 0xe2, 0xfb, 0xc8, 0x8e, 0x55, 0x36, 0xcd, 0x26, 0x09, 0x72, 0x6b,
- 0x0e, 0xdb, 0x58, 0x59, 0x26, 0x28, 0x66, 0x8e, 0xa9, 0xa0, 0xfc, 0x07,
- 0xf7, 0x4d, 0x49, 0x57, 0x86, 0xac, 0x31, 0x9d, 0xb6, 0xf8, 0x78, 0x8c,
- 0x52, 0x1e, 0x09, 0x0d, 0xfb, 0x02, 0xac, 0x00, 0xaf, 0x18, 0x62, 0x47,
- 0xbd, 0x39, 0xc8, 0xe2, 0x12, 0x04, 0x41, 0x3e, 0xee, 0xc9, 0x64, 0x40,
- 0xb8, 0xe6, 0x78, 0x20, 0x99, 0x63, 0x2b, 0xbc, 0x62, 0x8d, 0xfa, 0xca,
- 0x9b, 0x82, 0xa7, 0x30, 0x62, 0xc2, 0xf0, 0xe9, 0x95, 0x2f, 0x44, 0x70,
- 0x01, 0x16, 0xa4, 0xd0, 0x91, 0xca, 0xce, 0x7f, 0x07, 0xca, 0xe6, 0x13,
- 0x94, 0x8d, 0xe9, 0xdd, 0x6c, 0x92, 0x8d, 0xb2, 0x7a, 0x62, 0xf4, 0x8c,
- 0xa4, 0xc2, 0x2b, 0x12, 0xad, 0x2d, 0x3c, 0x8c, 0xe3, 0x74, 0x8c, 0xe6,
- 0x0f, 0xfc, 0x24, 0xa4, 0x7f, 0xc0, 0x9a, 0xce, 0xde, 0x9f, 0x9e, 0x9f,
- 0x1e, 0x9e, 0x9e, 0x34, 0xad, 0x61, 0xb5, 0x54, 0x23, 0xd2, 0x6e, 0x8b,
- 0xb9, 0xb5, 0x01, 0xe0, 0x08, 0xa2, 0x82, 0x0e, 0xbb, 0x07, 0x57, 0x0d,
- 0xd9, 0x09, 0x70, 0x6d, 0x4c, 0xc1, 0x76, 0x8d, 0x2a, 0xd0, 0x96, 0xa6,
- 0x24, 0x2a, 0x41, 0x1b, 0x31, 0xab, 0x43, 0x75, 0x2d, 0x1b, 0xcd, 0x81,
- 0xf2, 0x20, 0x3a, 0x32, 0xe0, 0xc9, 0x69, 0x72, 0xef, 0x2a, 0x91, 0x44,
- 0x5b, 0x34, 0x63, 0x2c, 0x7d, 0xd1, 0x0a, 0x86, 0x3f, 0x4e, 0x90, 0x4e,
- 0x28, 0xdf, 0x26, 0x60, 0x8e, 0xcd, 0x67, 0x68, 0x3d, 0xc2, 0xb6, 0x31,
- 0x47, 0xc1, 0x89, 0xc3, 0x65, 0xc0, 0xda, 0x70, 0x1d, 0x09, 0x6a, 0xde,
- 0xf6, 0x7d, 0xb4, 0x9f, 0xe1, 0x8f, 0xf7, 0xc8, 0xa2, 0x38, 0x59, 0xa6,
- 0x70, 0x24, 0x8c, 0xc9, 0x27, 0x73, 0xa0, 0x77, 0x8f, 0xd9, 0x47, 0x9d,
- 0x0f, 0x8a, 0xad, 0x0a, 0x3f, 0xd2, 0x72, 0x40, 0xe0, 0x6b, 0x78, 0x77,
- 0xe1, 0x9a, 0x99, 0x5f, 0x27, 0xf7, 0xac, 0xff, 0x92, 0x6e, 0x52, 0xce,
- 0xf3, 0x9c, 0x67, 0x16, 0xbd, 0xcd, 0x46, 0xa0, 0x79, 0xc3, 0x7d, 0x12,
- 0x7d, 0x0b, 0x97, 0x72, 0x71, 0x0b, 0xfb, 0x3a, 0xb7, 0xf6, 0xa3, 0x31,
- 0x8c, 0xd8, 0x3c, 0xc9, 0xe1, 0x18, 0x03, 0x87, 0x7d, 0x78, 0x77, 0x18,
- 0x25, 0x33, 0x20, 0x32, 0xea, 0xc8, 0x24, 0xab, 0xd0, 0x58, 0x76, 0xd6,
- 0x74, 0x7e, 0xb6, 0x3a, 0x5c, 0x93, 0x39, 0x9b, 0xdd, 0x61, 0xcd, 0xf0,
- 0x35, 0x8a, 0xc8, 0x73, 0xe5, 0xff, 0x33, 0xbd, 0x26, 0xf9, 0xfe, 0x87,
- 0x55, 0x93, 0xfa, 0x0b, 0xd2, 0x24, 0xf9, 0x54, 0xb5, 0x26, 0x41, 0xfc,
- 0x80, 0x4a, 0x20, 0xd0, 0xe3, 0x5b, 0x7c, 0x1c, 0x39, 0xdf, 0xd8, 0xe7,
- 0x38, 0xc5, 0xf3, 0x93, 0xa1, 0x9d, 0x04, 0xfb, 0x1f, 0x60, 0x1e, 0xad,
- 0x61, 0xde, 0xa7, 0x60, 0x92, 0xc3, 0x30, 0x42, 0x5a, 0xf3, 0x3c, 0xde,
- 0xbf, 0xfe, 0xd3, 0x4d, 0x06, 0xa3, 0x3b, 0x9a, 0xa6, 0x6a, 0x58, 0xcd,
- 0x55, 0x8e, 0x6f, 0x60, 0x6f, 0x13, 0x15, 0x08, 0x4d, 0xc9, 0xd4, 0xb8,
- 0x36, 0x69, 0x18, 0x5c, 0x08, 0x3c, 0x1a, 0x6d, 0x0c, 0x5e, 0xf6, 0xa3,
- 0xcd, 0xc1, 0x06, 0xfe, 0x67, 0xb3, 0x1f, 0x6d, 0xd1, 0x48, 0xdb, 0x11,
- 0x5b, 0xaf, 0xb2, 0x49, 0xcc, 0x8c, 0xce, 0xd9, 0x6f, 0x88, 0x00, 0x55,
- 0x8a, 0xf4, 0x1a, 0xec, 0x38, 0x3c, 0x8e, 0xe3, 0xc5, 0x5f, 0xe7, 0x07,
- 0x95, 0x7d, 0xc0, 0xf2, 0xd9, 0x04, 0x78, 0x86, 0xcd, 0x32, 0x3d, 0x48,
- 0x22, 0x92, 0x51, 0x69, 0xef, 0x01, 0x93, 0xe4, 0xe8, 0x96, 0xe8, 0x45,
- 0x29, 0x3e, 0xcb, 0xea, 0x63, 0x6b, 0x38, 0x38, 0x09, 0x8f, 0xda, 0x24,
- 0xf4, 0xf7, 0x74, 0x10, 0x1d, 0xbf, 0x05, 0xd7, 0xdf, 0x38, 0xc3, 0x35,
- 0x15, 0xa0, 0x0c, 0xf1, 0xc9, 0x62, 0x89, 0x07, 0xe3, 0xf7, 0x79, 0x23,
- 0x9c, 0xf1, 0x1b, 0x23, 0xa3, 0x0b, 0xc9, 0xdb, 0x3f, 0xfa, 0xa1, 0x12,
- 0x7e, 0x7b, 0x10, 0xbd, 0x92, 0xa5, 0x10, 0x99, 0xf1, 0xe2, 0xa5, 0x07,
- 0x40, 0x8f, 0x07, 0xe5, 0x38, 0xea, 0x55, 0xf3, 0x8b, 0x36, 0xc1, 0xd1,
- 0x65, 0x70, 0x91, 0xf6, 0xd8, 0x59, 0x56, 0x17, 0x33, 0x30, 0xa5, 0x6f,
- 0xaf, 0x91, 0xa3, 0xd9, 0x53, 0x03, 0xe3, 0xac, 0xa3, 0x9b, 0x06, 0xc7,
- 0xd3, 0x51, 0x66, 0xa0, 0xad, 0x67, 0xd5, 0x75, 0x0f, 0xf7, 0x31, 0x69,
- 0xef, 0x1f, 0x8e, 0x30, 0xe0, 0xaf, 0xd2, 0xf7, 0x61, 0x09, 0x78, 0x83,
- 0x34, 0xec, 0xd6, 0x68, 0xf5, 0x3e, 0xad, 0xd7, 0x1c, 0x95, 0xfa, 0xf4,
- 0x6c, 0xdb, 0xa7, 0x99, 0xbb, 0x14, 0x56, 0x2a, 0xf0, 0xfe, 0x9e, 0x15,
- 0xb3, 0xed, 0x48, 0xb5, 0x0a, 0xd6, 0x89, 0x54, 0x07, 0x49, 0x68, 0xa7,
- 0xcd, 0x2e, 0xb5, 0x86, 0x5b, 0xb0, 0x67, 0xe8, 0x83, 0xf3, 0xbf, 0x8f,
- 0xae, 0x18, 0x10, 0x62, 0x70, 0x4d, 0xc1, 0xb5, 0xf8, 0x16, 0x84, 0x52,
- 0x72, 0x85, 0x6f, 0x9a, 0x03, 0x4e, 0x17, 0xe3, 0xac, 0xcc, 0xa6, 0x70,
- 0x46, 0xe0, 0x5a, 0x63, 0xbd, 0x81, 0x2e, 0x43, 0x9e, 0x5d, 0x9b, 0xd0,
- 0x68, 0x74, 0x4c, 0x49, 0x57, 0x82, 0x4b, 0x21, 0x61, 0xa5, 0xc3, 0xb2,
- 0x05, 0xaf, 0x15, 0x8d, 0x19, 0x67, 0x5a, 0xc3, 0x33, 0x6f, 0xc3, 0xe9,
- 0x87, 0x70, 0xb8, 0xcc, 0x2b, 0xce, 0x41, 0x18, 0x1e, 0x9e, 0xf9, 0x27,
- 0x7c, 0x38, 0x7c, 0x63, 0x18, 0x64, 0x0b, 0xb6, 0x7b, 0x66, 0xd5, 0x39,
- 0xe7, 0x4d, 0xf4, 0xcd, 0x79, 0x6f, 0xe2, 0x0f, 0x57, 0xc7, 0x65, 0x02,
- 0xa2, 0x74, 0x77, 0x4d, 0x34, 0x2c, 0x24, 0x7b, 0x63, 0x48, 0x67, 0x90,
- 0xb7, 0x5f, 0x19, 0x21, 0x69, 0x07, 0x79, 0xfb, 0x95, 0x79, 0x76, 0x93,
- 0x38, 0x9d, 0x19, 0x8b, 0xd6, 0xaf, 0x6b, 0x70, 0xc7, 0x08, 0xc9, 0xac,
- 0x0f, 0x33, 0xc3, 0x08, 0x72, 0x97, 0x8b, 0xda, 0x81, 0x26, 0x37, 0xbe,
- 0xd2, 0x64, 0x88, 0x4a, 0xe4, 0x0c, 0x5a, 0x5f, 0xc4, 0x12, 0xad, 0xe1,
- 0xbe, 0x5d, 0x74, 0xcc, 0xc4, 0xb3, 0x7a, 0x0e, 0x06, 0x27, 0x8e, 0x41,
- 0xab, 0x81, 0x4f, 0x91, 0x3b, 0x02, 0x8f, 0x48, 0x3a, 0xc9, 0x53, 0x56,
- 0xcc, 0xc9, 0xd4, 0x40, 0x61, 0x65, 0xfd, 0xa8, 0x37, 0xa8, 0xf0, 0x56,
- 0x95, 0xe3, 0x81, 0x53, 0xee, 0x23, 0x85, 0x86, 0x14, 0x10, 0x9c, 0x9d,
- 0xb1, 0xaa, 0xf0, 0x07, 0x28, 0x9a, 0x2a, 0x52, 0x50, 0x41, 0x09, 0x24,
- 0xff, 0xc3, 0x58, 0x34, 0x91, 0x8a, 0x9f, 0x72, 0x14, 0x38, 0xa3, 0x8f,
- 0xd2, 0x72, 0x79, 0x28, 0x97, 0x67, 0xce, 0x9d, 0x8d, 0x14, 0x79, 0x43,
- 0x3f, 0x32, 0xdc, 0x42, 0xa3, 0xf3, 0x16, 0x88, 0xfe, 0xf1, 0xf5, 0xfb,
- 0xa3, 0xe1, 0x30, 0x7a, 0x7b, 0x74, 0x7e, 0xf4, 0xbe, 0xa1, 0x84, 0xe4,
- 0x45, 0x39, 0x25, 0x63, 0x64, 0x9c, 0x55, 0xb3, 0x49, 0x72, 0x8f, 0x56,
- 0x0a, 0x48, 0xcf, 0xab, 0x12, 0x15, 0x9f, 0x69, 0x8a, 0x6e, 0x8d, 0xf1,
- 0x9c, 0xcc, 0x70, 0x10, 0xc9, 0xb0, 0x7c, 0xf1, 0xde, 0xa2, 0x25, 0x4c,
- 0x2e, 0x5f, 0x7b, 0x85, 0xd3, 0x35, 0x29, 0xae, 0x20, 0xbc, 0x0c, 0xad,
- 0xcf, 0x1e, 0x4f, 0x0c, 0x2a, 0xaf, 0x7d, 0x47, 0x83, 0x24, 0x3d, 0x9f,
- 0xe7, 0x09, 0xe6, 0x16, 0x1c, 0x2f, 0x94, 0x18, 0x78, 0x08, 0x8d, 0xef,
- 0x25, 0xbd, 0xac, 0xfb, 0x11, 0xec, 0x07, 0xbb, 0xbd, 0xdb, 0x73, 0xd2,
- 0xd9, 0x5a, 0xcf, 0xef, 0xc5, 0x7d, 0x2d, 0x9e, 0x49, 0x9e, 0x0a, 0x7f,
- 0xc1, 0x68, 0x6c, 0xb4, 0x31, 0x79, 0x24, 0x8f, 0xcd, 0x88, 0xae, 0xc0,
- 0x66, 0x63, 0x1e, 0xbe, 0x9a, 0x5f, 0x92, 0x0d, 0x1a, 0xad, 0x7e, 0xea,
- 0x47, 0x6f, 0xfb, 0xd1, 0xd7, 0xfd, 0x08, 0x3d, 0xf9, 0x6b, 0xf4, 0xde,
- 0xe6, 0xc6, 0xd6, 0x0e, 0xdb, 0xb0, 0x86, 0xc7, 0x5e, 0x3b, 0x5e, 0x84,
- 0xcd, 0x4f, 0x28, 0x24, 0xf8, 0x21, 0x1c, 0x7c, 0x10, 0x6d, 0xbe, 0xe5,
- 0x9f, 0xec, 0xbc, 0xd8, 0x7d, 0xfe, 0x4c, 0x7e, 0xd8, 0xd2, 0x6c, 0x75,
- 0xfe, 0x64, 0xde, 0xa8, 0x79, 0x80, 0xf3, 0x46, 0x4d, 0x2f, 0xcb, 0x41,
- 0x87, 0x02, 0x8b, 0x50, 0xcc, 0x6c, 0x34, 0xc8, 0x60, 0xf2, 0x97, 0x6c,
- 0x94, 0x8b, 0x87, 0xa6, 0x19, 0x2e, 0x81, 0x97, 0x81, 0x09, 0x80, 0x15,
- 0xcc, 0x26, 0xb1, 0x9f, 0xab, 0xc6, 0x89, 0x24, 0x17, 0xc8, 0xff, 0xa8,
- 0xad, 0x92, 0x8e, 0x16, 0xfa, 0x9a, 0x71, 0xe9, 0xc0, 0x1b, 0x30, 0xb7,
- 0xe4, 0x62, 0x22, 0x26, 0x4c, 0x8b, 0xee, 0xa0, 0x3f, 0x5b, 0x15, 0x1c,
- 0x9e, 0xbd, 0x2d, 0xe6, 0xa8, 0x6e, 0xe2, 0x03, 0xa0, 0x3d, 0xe2, 0x0b,
- 0xcc, 0xd3, 0xc6, 0xf3, 0x9e, 0xdd, 0xc9, 0x7d, 0xdc, 0x18, 0x05, 0xa6,
- 0x06, 0xff, 0x9c, 0x01, 0x2b, 0xf1, 0x74, 0x06, 0x6d, 0xe7, 0x06, 0x99,
- 0xed, 0x1e, 0x27, 0xa2, 0x60, 0x21, 0x25, 0xe4, 0xec, 0x74, 0x48, 0x61,
- 0x11, 0x30, 0xc9, 0x60, 0xa0, 0xbf, 0xcf, 0x81, 0x85, 0x80, 0x29, 0xf1,
- 0x45, 0xb4, 0x3b, 0x1c, 0x7b, 0x1f, 0x78, 0x8f, 0x2e, 0x62, 0x31, 0xc7,
- 0xe4, 0x93, 0x62, 0x1a, 0xd1, 0x6d, 0xe8, 0xda, 0x50, 0xec, 0x80, 0x32,
- 0xef, 0x44, 0xab, 0x5f, 0xac, 0xf5, 0xc9, 0x9c, 0x32, 0x96, 0x95, 0x63,
- 0x55, 0x89, 0xad, 0xe3, 0x9c, 0xca, 0x6b, 0x0a, 0xc9, 0x90, 0x67, 0x0a,
- 0x6f, 0x42, 0x50, 0x35, 0xe1, 0x5c, 0xc1, 0x47, 0x6c, 0x48, 0x04, 0xe9,
- 0x47, 0xb6, 0x9c, 0xdd, 0x26, 0xab, 0x1b, 0xcf, 0x80, 0x9e, 0x85, 0x25,
- 0x1d, 0xda, 0xda, 0x0d, 0x22, 0xb5, 0xf7, 0xcc, 0x23, 0x1a, 0x3a, 0x52,
- 0x28, 0x02, 0x67, 0xc8, 0x16, 0xf5, 0x2e, 0x92, 0xb2, 0x67, 0x8d, 0x49,
- 0x3e, 0x97, 0x78, 0x3a, 0xca, 0xf4, 0x8a, 0xec, 0x05, 0xa6, 0x2c, 0xae,
- 0xf2, 0x0f, 0xce, 0x2a, 0x75, 0x80, 0xf8, 0x02, 0x1f, 0xc9, 0x2a, 0x0e,
- 0x9e, 0x5c, 0x82, 0x02, 0x8a, 0x07, 0x46, 0x9d, 0xaf, 0xe4, 0x8a, 0x13,
- 0x6e, 0x09, 0x30, 0x8b, 0xe3, 0x94, 0x85, 0x63, 0x82, 0xaa, 0x3c, 0xab,
- 0x3e, 0xf8, 0x64, 0x5c, 0xa1, 0x49, 0x5a, 0x01, 0xed, 0xd1, 0x71, 0x3c,
- 0x93, 0xd8, 0xd4, 0x29, 0x05, 0x02, 0x8d, 0x95, 0x74, 0x2a, 0x3a, 0x2a,
- 0x89, 0x60, 0x51, 0x9b, 0x72, 0x32, 0x03, 0xeb, 0x5b, 0xf8, 0x70, 0x02,
- 0xdb, 0x05, 0x87, 0xed, 0x2d, 0x12, 0x0a, 0x95, 0x6f, 0x5c, 0x96, 0xaa,
- 0xb5, 0xc4, 0x15, 0x19, 0x9e, 0x79, 0xab, 0xcb, 0x26, 0xe3, 0x71, 0x46,
- 0x96, 0xcc, 0x04, 0x1d, 0x33, 0xf3, 0x94, 0x5c, 0xe7, 0x42, 0xd4, 0xa9,
- 0xbb, 0x8d, 0x28, 0x3c, 0xae, 0xd1, 0x4c, 0x01, 0x5d, 0x8a, 0x1c, 0x09,
- 0x31, 0x7e, 0xab, 0x47, 0x0a, 0xe3, 0x34, 0xd2, 0x6f, 0xc9, 0xa7, 0x60,
- 0x1d, 0x63, 0xd7, 0xa9, 0xd8, 0x27, 0xe3, 0xcb, 0x7a, 0xb8, 0x49, 0x61,
- 0x68, 0xab, 0x7c, 0x09, 0xec, 0x36, 0x7a, 0x01, 0xc5, 0x01, 0x41, 0x9e,
- 0x1c, 0x3a, 0xae, 0x15, 0x4f, 0xad, 0x0f, 0xb4, 0xc5, 0x27, 0xaf, 0xae,
- 0xf5, 0x51, 0xc7, 0x1f, 0x94, 0xa0, 0x5f, 0x01, 0x74, 0x65, 0x8c, 0x12,
- 0x8d, 0xd5, 0x69, 0x51, 0x94, 0x2c, 0xc8, 0x26, 0x05, 0xf0, 0x71, 0x8f,
- 0x7d, 0xad, 0x32, 0x6d, 0x9c, 0x35, 0xce, 0x12, 0x29, 0xce, 0xa1, 0x53,
- 0xab, 0x36, 0x99, 0x49, 0x0b, 0xbd, 0xaa, 0x07, 0xa7, 0xe6, 0xdc, 0xe2,
- 0x44, 0x23, 0xbd, 0xf6, 0x95, 0xf2, 0xec, 0xaa, 0x28, 0x88, 0xa5, 0xe9,
- 0x30, 0x92, 0xa3, 0xdd, 0xa1, 0x3d, 0x0f, 0x53, 0x89, 0x2b, 0xbd, 0x45,
- 0xa8, 0x28, 0x9b, 0x92, 0xe2, 0x44, 0xdc, 0x62, 0x36, 0xc8, 0x06, 0x35,
- 0x02, 0x4e, 0xdc, 0xfb, 0x70, 0x28, 0x20, 0x61, 0x5f, 0xa5, 0x99, 0x17,
- 0x39, 0x41, 0x4e, 0x68, 0x2d, 0xf1, 0x4d, 0x84, 0x47, 0x30, 0x87, 0x55,
- 0x26, 0xf8, 0x8b, 0x93, 0x1b, 0xe7, 0x28, 0x61, 0x08, 0x2a, 0x47, 0x47,
- 0x5b, 0x9f, 0x86, 0xb8, 0x28, 0x8a, 0x49, 0x9a, 0xd8, 0xe5, 0xe1, 0x7d,
- 0x90, 0xe6, 0xc8, 0xf1, 0xb2, 0xab, 0x20, 0x12, 0x66, 0x46, 0xde, 0x82,
- 0xc6, 0x1b, 0x25, 0x57, 0x49, 0x66, 0x78, 0x4e, 0x4e, 0xc7, 0x98, 0x35,
- 0x53, 0x3c, 0x5a, 0x79, 0x21, 0x2f, 0x50, 0x4c, 0x04, 0xbd, 0x78, 0x22,
- 0xb9, 0xe6, 0x55, 0x6a, 0x1d, 0x6a, 0x32, 0x26, 0x39, 0x6b, 0x1c, 0x6f,
- 0x20, 0xbb, 0x4a, 0x49, 0xf0, 0x92, 0xe3, 0x13, 0x06, 0xeb, 0x0d, 0xa2,
- 0x37, 0xc5, 0x2d, 0xda, 0x97, 0x7d, 0x76, 0x4c, 0x67, 0x18, 0xb5, 0xad,
- 0xe0, 0x09, 0x60, 0xe3, 0x29, 0x28, 0xf5, 0x48, 0x48, 0x72, 0x9e, 0xf1,
- 0x8f, 0x23, 0x27, 0xbe, 0x01, 0x5c, 0x7e, 0xcb, 0xc7, 0x51, 0x17, 0x61,
- 0x76, 0xf3, 0xb2, 0x75, 0x2a, 0xe2, 0x38, 0xb9, 0x00, 0xe5, 0x16, 0xd4,
- 0x9f, 0x78, 0x9e, 0x67, 0x77, 0x71, 0x55, 0x8c, 0x3e, 0xc1, 0x62, 0xf7,
- 0x67, 0x49, 0x7d, 0xfd, 0x45, 0x4b, 0x6f, 0x59, 0x45, 0x19, 0xbd, 0x16,
- 0x45, 0x87, 0xec, 0x6f, 0x44, 0x89, 0x53, 0x32, 0x2f, 0x03, 0x95, 0x64,
- 0x94, 0xe8, 0x03, 0x8c, 0x02, 0x7c, 0x02, 0x9a, 0x1b, 0x6c, 0x1d, 0x0d,
- 0xd6, 0x57, 0x31, 0xd5, 0x1a, 0x8e, 0x82, 0xd2, 0xc6, 0x94, 0x07, 0xb6,
- 0x44, 0xa3, 0x3d, 0x8a, 0xde, 0x15, 0x75, 0xba, 0x87, 0xff, 0x06, 0xf1,
- 0x50, 0xd3, 0x52, 0xe4, 0xc6, 0x4a, 0x90, 0xd0, 0x28, 0xe8, 0x90, 0xbf,
- 0x12, 0xdf, 0x16, 0xe2, 0xef, 0xcb, 0x47, 0x95, 0xa6, 0x76, 0x8b, 0x56,
- 0xbe, 0x5c, 0xe9, 0x47, 0xd7, 0x4c, 0x52, 0x1a, 0x90, 0xd7, 0x08, 0x3b,
- 0x7f, 0x05, 0xc6, 0x73, 0x5e, 0xb7, 0x87, 0xbb, 0xa6, 0x2b, 0x10, 0xd9,
- 0x9d, 0x23, 0x20, 0xb4, 0x01, 0x62, 0x87, 0x9a, 0xa0, 0xc4, 0xe0, 0xb3,
- 0xd6, 0x6b, 0x47, 0xcc, 0xbd, 0x7b, 0xed, 0x0c, 0x0c, 0x4e, 0xa7, 0x08,
- 0x13, 0x9b, 0xff, 0xa0, 0xf5, 0x61, 0x94, 0xa0, 0x6a, 0x46, 0x7d, 0xda,
- 0x5f, 0x18, 0xa6, 0x29, 0x4b, 0xe8, 0xd8, 0x1d, 0x64, 0x10, 0x1d, 0x8c,
- 0x51, 0x6c, 0x00, 0xd5, 0x9f, 0x0f, 0x76, 0xb7, 0x07, 0x1b, 0x8d, 0x2d,
- 0x9e, 0xd4, 0x71, 0x75, 0x33, 0x8a, 0xf6, 0xc9, 0x21, 0x8c, 0xcc, 0x17,
- 0xdc, 0x5a, 0x50, 0xff, 0xe9, 0xae, 0x13, 0x9e, 0xe1, 0xe3, 0xc0, 0xc4,
- 0xd7, 0x11, 0xc8, 0x61, 0x47, 0xe1, 0x3b, 0x5c, 0xd0, 0x80, 0xae, 0xa8,
- 0x80, 0x86, 0x6b, 0xbe, 0x03, 0x16, 0x5f, 0x86, 0xfa, 0x7e, 0x4d, 0x4a,
- 0x4c, 0x7a, 0x97, 0xb1, 0x31, 0xaa, 0xc3, 0x8d, 0x40, 0x00, 0xa4, 0x72,
- 0x55, 0x93, 0x80, 0x21, 0xef, 0xcd, 0x45, 0x7b, 0x38, 0x14, 0x21, 0xb0,
- 0xc0, 0x4b, 0xd2, 0x31, 0xcc, 0xbd, 0x33, 0x36, 0x5a, 0x27, 0x27, 0x0b,
- 0xf0, 0x60, 0x32, 0x02, 0xf9, 0x1e, 0xc7, 0x72, 0x0b, 0x74, 0xce, 0x8e,
- 0xce, 0x34, 0x6a, 0x60, 0x19, 0xee, 0x32, 0x86, 0x08, 0x40, 0x32, 0x4e,
- 0x8b, 0x31, 0x79, 0x9d, 0xbd, 0xbd, 0x1d, 0x9a, 0xf0, 0x60, 0xaf, 0xe7,
- 0x0c, 0xb2, 0x8a, 0xc1, 0x62, 0x60, 0x8d, 0xfc, 0xaa, 0xbe, 0x5e, 0xb3,
- 0x01, 0x30, 0x35, 0xc0, 0x61, 0x22, 0x6c, 0xce, 0xb4, 0xf9, 0x9f, 0xb2,
- 0x17, 0x88, 0x2f, 0x7e, 0x9a, 0x57, 0x35, 0xf9, 0xce, 0xe5, 0xbe, 0xe5,
- 0x95, 0xc0, 0xcc, 0xa6, 0xe9, 0xb4, 0x28, 0xef, 0xbd, 0x89, 0x1c, 0x5f,
- 0x32, 0x3b, 0xca, 0x46, 0x65, 0x15, 0x0b, 0x59, 0x8d, 0x1f, 0xa3, 0xba,
- 0x5d, 0xf5, 0x1b, 0xf1, 0x21, 0x52, 0x52, 0x8c, 0xf9, 0xd5, 0xa6, 0x07,
- 0x85, 0x04, 0x45, 0xae, 0xb2, 0xef, 0xfd, 0x42, 0x82, 0x7d, 0x93, 0xa4,
- 0xaa, 0xe9, 0x72, 0x56, 0xb2, 0xd2, 0x87, 0x50, 0x4c, 0xf3, 0xb2, 0x96,
- 0xe6, 0x7f, 0xd9, 0x78, 0xf8, 0x1f, 0x46, 0x30, 0x97, 0xe4, 0x77, 0xb8,
- 0xc7, 0x8a, 0xc9, 0x0d, 0xbb, 0xfc, 0xe3, 0x58, 0xc2, 0x1e, 0x71, 0x5d,
- 0x34, 0x98, 0xff, 0xd9, 0xce, 0x60, 0xb3, 0xc1, 0xfc, 0xf9, 0x3d, 0x26,
- 0xb5, 0x84, 0x65, 0x19, 0x1a, 0x8a, 0x95, 0x35, 0x13, 0xb3, 0xab, 0x79,
- 0x49, 0x6a, 0xa4, 0xe4, 0xc1, 0x68, 0xfa, 0x0b, 0x2a, 0x3e, 0xd7, 0x05,
- 0xe5, 0x90, 0xc0, 0x85, 0x99, 0x4e, 0x2e, 0xfb, 0x01, 0x67, 0xa0, 0x0a,
- 0x7a, 0x14, 0xce, 0x68, 0x84, 0xd0, 0x50, 0x79, 0x2a, 0x2a, 0x2a, 0x3a,
- 0x3d, 0x23, 0x4c, 0x99, 0x88, 0x46, 0x93, 0x24, 0x9b, 0x8a, 0x09, 0x2c,
- 0x96, 0xf6, 0xc0, 0xf3, 0x5e, 0x70, 0x70, 0x84, 0xac, 0xf6, 0x0b, 0x8c,
- 0xcd, 0x94, 0x15, 0xde, 0xbe, 0xec, 0x28, 0x11, 0xcd, 0x98, 0x9d, 0x10,
- 0xd7, 0xe9, 0xe8, 0x93, 0x0a, 0x51, 0x55, 0x2b, 0xdb, 0xa2, 0x11, 0xb3,
- 0x63, 0x28, 0x00, 0x54, 0x5f, 0xa3, 0x37, 0xba, 0x00, 0x1b, 0x17, 0x23,
- 0xbb, 0x60, 0xeb, 0xcd, 0x47, 0x64, 0x02, 0xa2, 0x44, 0x85, 0x3b, 0xb9,
- 0x4c, 0x22, 0x15, 0xc4, 0xa0, 0x69, 0x81, 0xc5, 0x37, 0x8e, 0xeb, 0x32,
- 0x9b, 0x05, 0x67, 0x47, 0x0e, 0x14, 0xb9, 0xdb, 0x5d, 0x2d, 0xb4, 0x12,
- 0x7f, 0x0e, 0x85, 0x6b, 0x38, 0x80, 0x33, 0x6a, 0x51, 0xb3, 0x7d, 0x0e,
- 0x88, 0xb6, 0x7d, 0xf4, 0x5c, 0x81, 0x3a, 0xa0, 0xd7, 0xfe, 0xb8, 0x30,
- 0x57, 0x2b, 0x98, 0x68, 0xd9, 0x08, 0x55, 0xd9, 0x78, 0x9c, 0x5d, 0xa5,
- 0x98, 0x75, 0x84, 0xf7, 0x6d, 0x3d, 0x01, 0xed, 0x27, 0x70, 0xac, 0xe0,
- 0x57, 0xe9, 0x55, 0x51, 0xa3, 0xae, 0xe1, 0x71, 0x27, 0xbb, 0x15, 0x0d,
- 0x4f, 0xa8, 0x6f, 0xcb, 0xd5, 0xbb, 0x32, 0xd6, 0xb9, 0xe1, 0xf3, 0x62,
- 0x67, 0xf3, 0xf1, 0x20, 0xe3, 0xbe, 0xbd, 0xeb, 0x30, 0xda, 0x88, 0xcc,
- 0x25, 0x54, 0x0d, 0x55, 0x33, 0x55, 0x95, 0x1e, 0x65, 0x10, 0x6a, 0xc1,
- 0xf5, 0x6d, 0x36, 0x4a, 0xd5, 0x29, 0x6a, 0x12, 0x12, 0x26, 0x99, 0x7f,
- 0xe5, 0x4c, 0x51, 0x0c, 0xe0, 0x7b, 0xac, 0x78, 0x63, 0x7c, 0xef, 0x36,
- 0x43, 0xc5, 0xfc, 0xf8, 0x52, 0xee, 0x48, 0x3c, 0xe4, 0x7c, 0x2f, 0x25,
- 0x65, 0x46, 0x61, 0x4c, 0x8c, 0xfb, 0xab, 0x7f, 0x25, 0x74, 0xac, 0x79,
- 0xde, 0xf4, 0xba, 0x98, 0x2a, 0xd6, 0x44, 0xa1, 0x33, 0x7d, 0x49, 0x2e,
- 0x16, 0x8f, 0x4e, 0x24, 0x3b, 0xaf, 0x52, 0x0a, 0xf8, 0xb2, 0x3e, 0x34,
- 0x47, 0x3d, 0x13, 0x73, 0xc4, 0x96, 0x3e, 0xf3, 0x42, 0x6c, 0x7e, 0x1b,
- 0xb6, 0x7b, 0x6f, 0x76, 0x3b, 0x5e, 0xf2, 0xe4, 0x53, 0xaa, 0x9a, 0x8e,
- 0xd4, 0x57, 0x9e, 0x10, 0x41, 0xc0, 0x5c, 0xe1, 0x9c, 0xf9, 0x04, 0x9f,
- 0x00, 0x33, 0x2d, 0xf5, 0x98, 0x63, 0x15, 0x6d, 0x36, 0x74, 0x8d, 0xad,
- 0x69, 0xce, 0x44, 0x2a, 0x59, 0x23, 0x26, 0xb9, 0x8d, 0x24, 0x2b, 0xca,
- 0x66, 0x91, 0x0b, 0x3c, 0x4e, 0xf8, 0x26, 0x01, 0x03, 0x06, 0x53, 0x41,
- 0x24, 0xd7, 0x4d, 0xcf, 0x01, 0x1c, 0x03, 0xf4, 0xb4, 0x69, 0xd6, 0x15,
- 0xa6, 0x38, 0xc8, 0x0e, 0x8a, 0x18, 0xa0, 0xc7, 0xd1, 0x40, 0x6c, 0x0d,
- 0x87, 0xbc, 0x48, 0x77, 0x64, 0x9f, 0x55, 0x41, 0x16, 0xb9, 0x23, 0xce,
- 0x77, 0x18, 0x90, 0x66, 0xc4, 0xd7, 0x24, 0xcd, 0xf1, 0x72, 0x92, 0x5c,
- 0x21, 0x07, 0x67, 0x57, 0x79, 0xc1, 0x09, 0x6e, 0x6d, 0xf6, 0x2c, 0xe0,
- 0x76, 0x22, 0x3f, 0x20, 0x7b, 0x9c, 0xaa, 0x68, 0x15, 0x18, 0x76, 0x32,
- 0x27, 0x15, 0xe6, 0x14, 0x56, 0x35, 0x1c, 0xbe, 0x59, 0x5b, 0x76, 0x37,
- 0x99, 0x4c, 0x31, 0x2d, 0x81, 0x83, 0x42, 0x4a, 0xea, 0xe8, 0xd2, 0x4b,
- 0x58, 0xe9, 0xde, 0xd1, 0x92, 0x42, 0x97, 0x98, 0x50, 0xc3, 0x9b, 0x78,
- 0xd8, 0x67, 0x89, 0x0e, 0x14, 0x9b, 0xa7, 0x71, 0x52, 0x37, 0x24, 0xf8,
- 0x6d, 0x05, 0x26, 0xe5, 0xd5, 0xcd, 0x0e, 0xa8, 0x6c, 0x9c, 0xbf, 0x51,
- 0x6e, 0x7e, 0xbf, 0xa7, 0x7f, 0xdd, 0xfa, 0x7e, 0x0f, 0x8c, 0x5e, 0xe0,
- 0xe7, 0xef, 0xf7, 0x70, 0x99, 0x70, 0xd8, 0x7e, 0xfc, 0xf1, 0xc7, 0x2f,
- 0x7c, 0x86, 0x8e, 0x0e, 0xbe, 0x1d, 0x46, 0xdf, 0xec, 0x50, 0xfe, 0x06,
- 0x25, 0xf8, 0xb5, 0x65, 0xbc, 0xa4, 0x7f, 0xa8, 0x52, 0xe1, 0x11, 0x86,
- 0x0c, 0x48, 0xfd, 0xaa, 0x51, 0x1b, 0xd9, 0x72, 0x03, 0xad, 0x8e, 0x85,
- 0x30, 0x29, 0xfe, 0x12, 0x85, 0xbe, 0x17, 0xd5, 0xe9, 0xaa, 0x00, 0x4e,
- 0xb8, 0x9e, 0xfa, 0x4e, 0xc5, 0x9c, 0xf7, 0x96, 0xdc, 0xfd, 0xf3, 0xfa,
- 0x8a, 0xc5, 0x7b, 0x73, 0x52, 0x22, 0xba, 0x83, 0x93, 0xe1, 0x65, 0x2f,
- 0x98, 0x89, 0xa3, 0x7c, 0x81, 0xf5, 0x03, 0x36, 0x7c, 0x32, 0xbb, 0xc6,
- 0x53, 0x03, 0x1f, 0xf5, 0x75, 0x71, 0xba, 0x58, 0xaa, 0x62, 0x5e, 0x62,
- 0xca, 0xd0, 0xa8, 0x98, 0x4c, 0x38, 0xa5, 0x20, 0x5a, 0xe5, 0xcf, 0xc0,
- 0xe6, 0x8c, 0xd3, 0x35, 0x9e, 0x75, 0x6d, 0x3f, 0x4e, 0x1a, 0x50, 0xd6,
- 0x66, 0xe4, 0x62, 0x9a, 0xd5, 0xb5, 0x26, 0x1b, 0xe1, 0xd3, 0xc0, 0x1e,
- 0x34, 0x99, 0xe0, 0x3a, 0x64, 0xdb, 0x1e, 0xb9, 0x90, 0xcb, 0x79, 0xce,
- 0x13, 0xc3, 0xbd, 0x68, 0xdf, 0x74, 0xb8, 0x37, 0x44, 0x79, 0x50, 0x13,
- 0x27, 0xc5, 0x7c, 0x1c, 0xad, 0xca, 0xe0, 0xed, 0xe9, 0xeb, 0x37, 0x65,
- 0xfe, 0x3a, 0xe3, 0x90, 0x08, 0x5d, 0x38, 0xff, 0x87, 0x64, 0x9f, 0x61,
- 0xdd, 0x1e, 0xfc, 0x75, 0x2f, 0x99, 0xfe, 0xbc, 0x97, 0x82, 0x4a, 0x15,
- 0x6f, 0xed, 0xa5, 0x55, 0x4f, 0x25, 0x62, 0xef, 0x53, 0x7a, 0x0f, 0xbc,
- 0x0b, 0xbc, 0x50, 0xf7, 0x96, 0x94, 0x8b, 0x8e, 0x18, 0xb4, 0xf2, 0xd9,
- 0xd5, 0x86, 0x9e, 0xef, 0x36, 0x4d, 0x01, 0x7a, 0xe1, 0x31, 0xba, 0x10,
- 0x6a, 0x33, 0xe4, 0x93, 0xfb, 0x8a, 0x3f, 0xd1, 0x64, 0x4b, 0xe3, 0xf0,
- 0xc1, 0x1c, 0x94, 0xf6, 0x35, 0x86, 0x62, 0x0a, 0x93, 0x7a, 0x06, 0x46,
- 0x8f, 0xc1, 0x27, 0x35, 0xb7, 0x88, 0x6f, 0xc2, 0x96, 0xf6, 0x3a, 0x27,
- 0x5f, 0x35, 0x91, 0xb8, 0x3d, 0x1c, 0x86, 0xea, 0x4d, 0xc8, 0x5e, 0x0d,
- 0xea, 0x8c, 0xfc, 0x07, 0x28, 0x65, 0x4b, 0x4c, 0xe7, 0x42, 0xd7, 0x58,
- 0x7a, 0x93, 0x15, 0xf3, 0x0a, 0x46, 0x01, 0x0d, 0x44, 0xc7, 0x46, 0xe6,
- 0xf1, 0x9c, 0xef, 0x35, 0xa5, 0xa0, 0x83, 0x09, 0x8f, 0x59, 0xd2, 0x94,
- 0x59, 0x10, 0x56, 0xf6, 0x56, 0xab, 0x39, 0x06, 0x0d, 0x2a, 0xa3, 0x6c,
- 0xe0, 0x4d, 0xd3, 0x9e, 0x1d, 0xeb, 0x23, 0x98, 0x8c, 0x61, 0xd5, 0x8e,
- 0xb5, 0xdf, 0xf4, 0x3e, 0x9d, 0x13, 0xcf, 0xee, 0x61, 0xe2, 0x12, 0x46,
- 0xf5, 0x0d, 0x13, 0x3c, 0xe5, 0x42, 0xa5, 0x37, 0x5d, 0xf6, 0x00, 0xcb,
- 0x23, 0x2d, 0x6b, 0x36, 0x14, 0x3d, 0x1b, 0xf1, 0xfc, 0x64, 0x18, 0xe2,
- 0x92, 0x66, 0x22, 0x27, 0xbe, 0x8f, 0x3a, 0x5f, 0xa2, 0xf7, 0x1c, 0x3c,
- 0x05, 0xdb, 0xe4, 0x78, 0x70, 0xdc, 0xb8, 0xc2, 0x2c, 0x45, 0x7e, 0x65,
- 0xd1, 0xca, 0x97, 0x28, 0xaa, 0x52, 0x78, 0x0f, 0xa0, 0x61, 0x66, 0xd2,
- 0x4c, 0x0e, 0x0f, 0xdc, 0x71, 0x29, 0xb9, 0xa8, 0x7d, 0x15, 0x3b, 0xbf,
- 0x5f, 0xad, 0xd6, 0x58, 0x97, 0xba, 0x20, 0x23, 0xea, 0xec, 0xe8, 0x2d,
- 0xf9, 0xca, 0xe0, 0x52, 0x81, 0x2b, 0x54, 0xc2, 0x22, 0x9a, 0x1d, 0x8e,
- 0xa1, 0xec, 0x46, 0xda, 0x9c, 0x35, 0x39, 0x29, 0x3b, 0x9b, 0x79, 0x96,
- 0xa6, 0xc6, 0x69, 0xa0, 0x19, 0xe5, 0x51, 0xb5, 0x39, 0xb8, 0xbe, 0x9f,
- 0x49, 0xf2, 0xd7, 0xbc, 0x6a, 0x38, 0xaa, 0x8d, 0xd7, 0xaa, 0x26, 0xaf,
- 0x03, 0xfa, 0xd0, 0x9c, 0x31, 0xbd, 0xad, 0xa7, 0x69, 0xa1, 0x3a, 0x7a,
- 0x95, 0x67, 0x3f, 0x8b, 0xed, 0x9d, 0xe6, 0x37, 0x59, 0x59, 0xe4, 0x24,
- 0x19, 0x29, 0xa4, 0x7f, 0x21, 0x96, 0x27, 0x68, 0xdc, 0x2b, 0x87, 0x1f,
- 0xde, 0x9f, 0x7c, 0x3c, 0x3c, 0xf8, 0xf8, 0xd5, 0x87, 0x77, 0xaf, 0x4e,
- 0x8e, 0x56, 0xda, 0x89, 0x12, 0x97, 0x1c, 0xa4, 0x42, 0x5d, 0xbd, 0x42,
- 0x4f, 0x8c, 0x1a, 0x2a, 0x3c, 0x32, 0x27, 0x06, 0x91, 0xe3, 0x81, 0xd2,
- 0xd8, 0xe8, 0x6f, 0x24, 0x64, 0x85, 0xe0, 0xad, 0xe1, 0x2e, 0xe6, 0x68,
- 0xa2, 0x0e, 0x1a, 0x5e, 0x02, 0x3d, 0x83, 0xe2, 0x21, 0xd4, 0x09, 0x06,
- 0x05, 0xfd, 0xad, 0xa4, 0x74, 0x38, 0xde, 0x28, 0x27, 0xaf, 0x6d, 0x5e,
- 0x17, 0xb0, 0x47, 0x42, 0x46, 0x0a, 0xaf, 0x6b, 0x9e, 0x7e, 0x04, 0xf3,
- 0x09, 0x6c, 0x77, 0x65, 0x8d, 0xf0, 0x71, 0xb4, 0x82, 0x23, 0x01, 0xff,
- 0xc6, 0x32, 0xc9, 0x51, 0x59, 0xaf, 0xf4, 0xa3, 0x34, 0xa3, 0x13, 0xa7,
- 0xe9, 0xc6, 0x28, 0xec, 0x29, 0x08, 0xe0, 0x65, 0x2e, 0x60, 0x44, 0x3f,
- 0x61, 0xbe, 0x1e, 0xa4, 0x77, 0x29, 0x1d, 0x69, 0x79, 0xeb, 0x70, 0x5e,
- 0x92, 0x98, 0xf8, 0x16, 0xcc, 0x22, 0xbc, 0x91, 0x5e, 0x69, 0x0a, 0x80,
- 0x3e, 0x04, 0x6a, 0x69, 0xfb, 0xde, 0x28, 0x26, 0xa4, 0x23, 0x90, 0xd7,
- 0x96, 0x7c, 0xec, 0x67, 0x07, 0xe7, 0x6f, 0x42, 0x76, 0xbc, 0x93, 0xa6,
- 0x25, 0xac, 0x48, 0x3e, 0x89, 0xaa, 0x96, 0x03, 0xf2, 0x6e, 0x38, 0x8c,
- 0xa8, 0xc8, 0x62, 0x92, 0x5d, 0x94, 0x09, 0x7e, 0x13, 0x7f, 0x8c, 0x3f,
- 0x05, 0xb6, 0x6e, 0x0d, 0x77, 0xf6, 0x97, 0xc3, 0xe1, 0x1f, 0x36, 0x37,
- 0xd1, 0x81, 0x31, 0x07, 0xba, 0xac, 0xc2, 0x2b, 0x79, 0x05, 0x27, 0x73,
- 0x3a, 0xa8, 0x8a, 0x35, 0xc9, 0xdc, 0x62, 0xc3, 0x24, 0xb9, 0x01, 0xad,
- 0x9f, 0xf8, 0x48, 0x99, 0xba, 0x23, 0x9b, 0xc3, 0x54, 0x9e, 0x80, 0xbc,
- 0x00, 0xbb, 0x61, 0xe2, 0xfb, 0x22, 0x56, 0xb3, 0xd3, 0x21, 0xb3, 0xd5,
- 0x34, 0x19, 0xc1, 0x5f, 0xd1, 0x25, 0xb9, 0x66, 0xf2, 0xcf, 0xcc, 0x09,
- 0xd3, 0x55, 0x0d, 0xd9, 0x2e, 0xa6, 0x8c, 0x1b, 0x2a, 0x3b, 0xf1, 0xa5,
- 0x42, 0xde, 0x3e, 0x5c, 0x36, 0xf5, 0x80, 0xd8, 0xe1, 0x22, 0x19, 0x7d,
- 0xba, 0x4d, 0xca, 0x31, 0x47, 0x20, 0x80, 0x63, 0x2e, 0xb2, 0x49, 0x56,
- 0xdf, 0xb3, 0x9f, 0xaf, 0xad, 0x88, 0x70, 0x12, 0x31, 0x12, 0x10, 0xce,
- 0xd1, 0x55, 0x96, 0xa3, 0x63, 0x84, 0xbc, 0x1b, 0x59, 0xed, 0xba, 0xf8,
- 0xc8, 0x58, 0xb3, 0x7a, 0xba, 0xf9, 0x76, 0x40, 0x41, 0xa7, 0x73, 0x44,
- 0xd3, 0xb4, 0xbc, 0xab, 0x62, 0xd0, 0x15, 0x52, 0xca, 0x3e, 0x51, 0x75,
- 0x0f, 0x66, 0xc1, 0x34, 0x64, 0xaa, 0xd2, 0xed, 0x1f, 0xfd, 0x25, 0xbd,
- 0x1f, 0x5d, 0xa3, 0xb8, 0x33, 0x92, 0x92, 0xfd, 0x9d, 0x29, 0x3a, 0xb6,
- 0xd8, 0x28, 0xce, 0x34, 0x68, 0x97, 0x4a, 0xdc, 0x95, 0xaf, 0x28, 0x5f,
- 0x89, 0xe3, 0xf7, 0xd5, 0x1f, 0x80, 0x43, 0xac, 0x54, 0x0d, 0x91, 0x4c,
- 0x5f, 0xf2, 0x37, 0x71, 0x08, 0x3f, 0xcf, 0xf3, 0x74, 0x22, 0xdb, 0x77,
- 0xbe, 0x68, 0x03, 0xcc, 0xb3, 0x30, 0x65, 0x49, 0xd2, 0x6a, 0x0d, 0xf7,
- 0x9c, 0xb3, 0xe0, 0x93, 0x5a, 0x2f, 0x3b, 0xad, 0xbb, 0x79, 0x3e, 0x78,
- 0xb6, 0x61, 0x7e, 0x35, 0xe8, 0xfc, 0x8c, 0x77, 0x9a, 0x4a, 0xbb, 0xe9,
- 0xcd, 0x3d, 0xe7, 0x00, 0x0c, 0x6d, 0x32, 0xee, 0xb1, 0x6c, 0xf1, 0x9f,
- 0x8d, 0x29, 0x46, 0x81, 0xd2, 0xd6, 0x70, 0xae, 0xb5, 0xaf, 0x77, 0x98,
- 0xac, 0x63, 0x05, 0xb4, 0xce, 0x02, 0xdd, 0x36, 0x97, 0x51, 0x59, 0xc0,
- 0x5e, 0x37, 0xf6, 0x73, 0x95, 0xb5, 0x98, 0xf6, 0x31, 0x11, 0x69, 0xee,
- 0x10, 0x66, 0xed, 0x89, 0x0e, 0xbb, 0x4e, 0x87, 0xdb, 0xb2, 0x5a, 0xa7,
- 0xdc, 0xe2, 0x87, 0x07, 0x64, 0xa6, 0x3d, 0xc1, 0xd1, 0x36, 0x4a, 0xf8,
- 0x52, 0x40, 0xbd, 0xf2, 0x13, 0xea, 0x29, 0x40, 0x4f, 0x3a, 0xb8, 0x4d,
- 0x5d, 0x81, 0x1e, 0xda, 0x07, 0x81, 0xfa, 0xcb, 0x55, 0x05, 0x27, 0xb1,
- 0xca, 0xbf, 0x3d, 0xe5, 0x54, 0x34, 0x54, 0x86, 0xb7, 0xaa, 0x1b, 0xe0,
- 0x24, 0x2a, 0x72, 0x19, 0x5d, 0xa4, 0x6a, 0x9e, 0x91, 0x09, 0x20, 0x11,
- 0x34, 0xdf, 0x31, 0x42, 0x59, 0x93, 0x1c, 0x68, 0xd9, 0xeb, 0x45, 0xab,
- 0xe9, 0xe0, 0x0a, 0xc6, 0xeb, 0xe1, 0x38, 0x9b, 0x7b, 0xf8, 0xdf, 0x2d,
- 0xfa, 0xef, 0x76, 0x6f, 0x4d, 0x2a, 0xf3, 0x5c, 0x26, 0x40, 0xbd, 0xa2,
- 0x7d, 0x2b, 0x72, 0x06, 0x82, 0x55, 0x33, 0xfa, 0x1c, 0x59, 0xeb, 0x12,
- 0x81, 0x6c, 0x79, 0x9f, 0xf0, 0x7e, 0xfb, 0x1a, 0xa5, 0x92, 0x61, 0xca,
- 0x4e, 0xe1, 0x9b, 0x94, 0xbd, 0xd2, 0xb0, 0x32, 0xcc, 0xad, 0x4c, 0xc7,
- 0x4e, 0xd0, 0x64, 0xf4, 0xb1, 0x4c, 0xaf, 0x93, 0xea, 0x3a, 0x9a, 0xd7,
- 0x7c, 0x1c, 0xe0, 0x04, 0xb5, 0x87, 0x9b, 0x4d, 0x32, 0x1b, 0x03, 0x91,
- 0x4f, 0x0f, 0xd4, 0x13, 0x66, 0x77, 0x91, 0xe3, 0xbe, 0x93, 0xe2, 0x56,
- 0x9f, 0x89, 0xa5, 0x6e, 0x2e, 0xa4, 0xa0, 0xc0, 0x6e, 0x92, 0xf3, 0x1a,
- 0x1f, 0x73, 0x93, 0xcf, 0xa7, 0xa8, 0x30, 0x63, 0x51, 0x1f, 0x08, 0xdb,
- 0x4b, 0xa0, 0x18, 0xfa, 0xb8, 0x26, 0xb4, 0x6f, 0xe8, 0x60, 0x9c, 0x07,
- 0x12, 0x43, 0x0d, 0xaf, 0x66, 0x97, 0x12, 0xb0, 0x92, 0x7f, 0xd3, 0xcd,
- 0x2e, 0x7a, 0x60, 0xc5, 0x09, 0xea, 0x6d, 0x25, 0xf0, 0xe1, 0x43, 0xa6,
- 0xa2, 0xda, 0xe8, 0x5c, 0xb2, 0x58, 0x0e, 0x13, 0xeb, 0x09, 0x13, 0xff,
- 0x49, 0xc8, 0xa5, 0xcb, 0x91, 0x81, 0xdf, 0xfe, 0xb8, 0xd2, 0xac, 0xd6,
- 0xc9, 0x9d, 0xb2, 0x6e, 0x0f, 0xc2, 0xb2, 0x67, 0x96, 0x08, 0xf7, 0xc0,
- 0x99, 0x85, 0x47, 0x62, 0x0c, 0xac, 0xcd, 0xab, 0x47, 0x1c, 0x59, 0xe7,
- 0x36, 0xe2, 0x77, 0x34, 0x46, 0x2e, 0x19, 0x4c, 0xee, 0x7e, 0xb4, 0x0f,
- 0xc5, 0xbd, 0xc3, 0xa7, 0x87, 0xce, 0x41, 0x1f, 0xf2, 0x40, 0xef, 0xc5,
- 0x87, 0xbd, 0x9a, 0x7c, 0x4a, 0x06, 0xd1, 0xe9, 0xe1, 0xf0, 0x0c, 0x3f,
- 0x31, 0xc3, 0xac, 0xad, 0x35, 0x4c, 0xe9, 0x6a, 0x0d, 0x97, 0xde, 0xd5,
- 0x69, 0x5e, 0x35, 0x2a, 0x5d, 0x3b, 0x77, 0x5d, 0xc3, 0xb8, 0x9a, 0x87,
- 0xda, 0x48, 0xb7, 0xa2, 0x7c, 0x2f, 0xaa, 0xdf, 0x88, 0xf8, 0xe4, 0x7b,
- 0x1f, 0x9a, 0x01, 0xfd, 0xc7, 0x6b, 0xc6, 0x97, 0xde, 0x57, 0xd6, 0x34,
- 0x39, 0x1b, 0xd5, 0xfc, 0x0a, 0xad, 0xbe, 0x4a, 0x5d, 0x71, 0xe6, 0x0b,
- 0x40, 0x0d, 0x5f, 0x87, 0x92, 0x65, 0x9b, 0xe8, 0x12, 0xd8, 0xa9, 0x58,
- 0x87, 0x45, 0xba, 0x63, 0x5e, 0xd8, 0x51, 0x31, 0x9f, 0x8c, 0x0a, 0x52,
- 0x33, 0xca, 0x72, 0xe0, 0x02, 0x83, 0x80, 0x76, 0xc4, 0x9b, 0xa2, 0xa6,
- 0xea, 0xa5, 0x14, 0xa1, 0x76, 0x39, 0xe8, 0x47, 0xac, 0xbb, 0x9a, 0x58,
- 0x71, 0x86, 0x8c, 0x84, 0x96, 0x04, 0xfb, 0x07, 0x70, 0x3c, 0x23, 0x8e,
- 0xbe, 0xce, 0xe7, 0x98, 0xef, 0xe9, 0xab, 0x29, 0xa8, 0x6d, 0xe2, 0xfd,
- 0x8b, 0x04, 0x5c, 0x9a, 0xb7, 0x2d, 0xc3, 0x2d, 0x6b, 0xa1, 0x66, 0x20,
- 0x58, 0xc6, 0xb3, 0xf9, 0xc5, 0xa7, 0xf4, 0xbe, 0xe1, 0xd2, 0xd8, 0xd9,
- 0x6c, 0xba, 0x34, 0xe8, 0x13, 0x60, 0x80, 0xa5, 0xd1, 0x3e, 0xfe, 0xf7,
- 0xc1, 0xbb, 0x88, 0xb3, 0xf2, 0xf0, 0x79, 0xc9, 0x6d, 0xe1, 0x1b, 0x43,
- 0x7c, 0xf2, 0x51, 0xf3, 0x5a, 0xf2, 0xb4, 0x07, 0xe2, 0xea, 0x01, 0x4a,
- 0xfb, 0x7e, 0xf4, 0x0a, 0x0b, 0xcb, 0x8f, 0xde, 0x7d, 0x4d, 0xac, 0x76,
- 0xb6, 0xb9, 0x45, 0x59, 0x04, 0xc6, 0x7a, 0x1b, 0xd3, 0x47, 0xb8, 0x18,
- 0x83, 0x13, 0x81, 0xe0, 0xe2, 0xf3, 0xb4, 0x87, 0x0c, 0x79, 0x01, 0xef,
- 0x0e, 0x74, 0x7a, 0x51, 0x7d, 0xd3, 0xf8, 0x77, 0x57, 0x1f, 0x0c, 0x41,
- 0x71, 0x5e, 0xfc, 0x6f, 0x16, 0xc8, 0x4b, 0xed, 0xe0, 0x51, 0x5f, 0xde,
- 0xc5, 0x3f, 0x61, 0x13, 0xc5, 0x5b, 0x0f, 0x7f, 0xa3, 0xc1, 0x9d, 0x2d,
- 0x34, 0x4f, 0x46, 0xfb, 0x0e, 0xf1, 0xbf, 0x37, 0x3e, 0x8e, 0x1f, 0x9f,
- 0xa6, 0x5f, 0x84, 0x77, 0x14, 0x17, 0x12, 0x72, 0xc5, 0xda, 0x44, 0x64,
- 0x5a, 0x2a, 0x5d, 0x98, 0x8c, 0x11, 0x40, 0x48, 0x02, 0x78, 0x5e, 0x93,
- 0xdc, 0xa8, 0x9a, 0x31, 0xd7, 0xbe, 0x51, 0x42, 0x7a, 0x7b, 0x4f, 0x47,
- 0xc5, 0xc4, 0xd3, 0x1c, 0x1a, 0x0e, 0x09, 0xb2, 0xd3, 0xb6, 0x44, 0x5b,
- 0x20, 0x23, 0x9d, 0x65, 0xa5, 0x58, 0x47, 0xed, 0xd3, 0x6c, 0x6c, 0x25,
- 0xae, 0xc8, 0xb0, 0x8a, 0x06, 0xbe, 0xca, 0x6f, 0x52, 0xae, 0x14, 0xcd,
- 0x8d, 0x55, 0x60, 0xc7, 0x92, 0x09, 0x99, 0x75, 0xc0, 0x34, 0xc6, 0x7f,
- 0xa4, 0xf9, 0xdd, 0x4a, 0xb6, 0x46, 0xec, 0x01, 0x84, 0x74, 0x99, 0x89,
- 0xde, 0x2f, 0xd5, 0xb4, 0xed, 0xe1, 0x34, 0x6b, 0x8d, 0x33, 0x37, 0xb4,
- 0xb4, 0x8c, 0xf8, 0x55, 0x19, 0x96, 0xf9, 0x1a, 0x3d, 0x0c, 0x3d, 0x87,
- 0x24, 0xbd, 0xd0, 0x56, 0xa8, 0x07, 0x9d, 0x8f, 0x66, 0x76, 0x83, 0xa4,
- 0x53, 0xde, 0x21, 0x95, 0x87, 0xb7, 0xb4, 0x61, 0xd2, 0x14, 0x39, 0xfe,
- 0x99, 0x63, 0x90, 0xe4, 0x3f, 0x02, 0xdc, 0xe8, 0xb0, 0x97, 0xe1, 0x40,
- 0xaa, 0x4e, 0x92, 0x70, 0x3e, 0xa9, 0x83, 0x58, 0x01, 0x2a, 0xf5, 0xf9,
- 0x93, 0xfb, 0x47, 0x19, 0xea, 0xaa, 0xce, 0xa9, 0x3d, 0xee, 0x18, 0xe9,
- 0x9e, 0x15, 0xdb, 0x66, 0x10, 0xb8, 0x85, 0x6a, 0x4c, 0x49, 0x64, 0xde,
- 0xc5, 0xd0, 0x5e, 0x36, 0xfa, 0xc4, 0x15, 0x5c, 0x97, 0x6d, 0x43, 0xd2,
- 0x94, 0x2c, 0x72, 0xb9, 0x6d, 0x60, 0x0b, 0xc8, 0x47, 0x80, 0x61, 0x47,
- 0xe4, 0x49, 0xd4, 0x75, 0x80, 0x01, 0x4c, 0xf8, 0x21, 0xe8, 0x3d, 0x82,
- 0xb9, 0x7e, 0x7c, 0x75, 0xfc, 0x3e, 0x5a, 0x45, 0xcb, 0xaa, 0xed, 0xbc,
- 0x50, 0x65, 0x69, 0x3d, 0xad, 0x47, 0xeb, 0xb3, 0x4f, 0xd9, 0x7a, 0x5e,
- 0x55, 0xe3, 0x8b, 0x35, 0xc3, 0x52, 0xf4, 0x39, 0x64, 0x42, 0xe3, 0x70,
- 0x50, 0x8f, 0x03, 0xb9, 0x1c, 0xda, 0xfc, 0xe6, 0xb8, 0x20, 0x18, 0xfd,
- 0xc3, 0xf8, 0x1e, 0x24, 0x20, 0x4a, 0xfc, 0x4c, 0x59, 0x07, 0x9c, 0x61,
- 0x47, 0xc9, 0x0a, 0x29, 0x87, 0x3d, 0xef, 0x8b, 0x79, 0xfb, 0xac, 0x72,
- 0xe1, 0xa7, 0x38, 0xe8, 0xd8, 0x31, 0xa7, 0x5e, 0x7a, 0xb9, 0xed, 0xac,
- 0x2d, 0xd1, 0xc7, 0x3a, 0xd3, 0x84, 0x70, 0x42, 0xe0, 0x46, 0x1d, 0xa3,
- 0xdf, 0x38, 0x50, 0x58, 0x00, 0xca, 0xff, 0x60, 0xbd, 0x17, 0x99, 0xca,
- 0x5a, 0xa0, 0x32, 0x17, 0x90, 0x9b, 0x5c, 0x0e, 0x60, 0xb1, 0xcb, 0x79,
- 0x65, 0x1c, 0xdf, 0x89, 0xd9, 0xaf, 0x41, 0x48, 0x52, 0x3b, 0xdb, 0x69,
- 0x34, 0x58, 0xb0, 0x34, 0xe8, 0x60, 0xb9, 0x5e, 0x18, 0x99, 0x14, 0x6d,
- 0x55, 0xef, 0x87, 0x5e, 0xe4, 0xd4, 0x67, 0x36, 0x4e, 0x43, 0xed, 0xc6,
- 0xa9, 0xe5, 0x6a, 0x01, 0x75, 0xc2, 0x9c, 0xe0, 0x71, 0x3a, 0xc9, 0xa6,
- 0x19, 0x59, 0xd4, 0xad, 0xef, 0x7b, 0x82, 0x49, 0x67, 0xf3, 0x83, 0x3f,
- 0x1b, 0x2d, 0x75, 0x4e, 0xf0, 0xd7, 0x30, 0x1b, 0x72, 0x72, 0xf2, 0xe7,
- 0xdb, 0xb5, 0xb0, 0x8e, 0x21, 0x6d, 0xa7, 0x63, 0xaa, 0xa5, 0x17, 0x64,
- 0x47, 0x99, 0x73, 0xd4, 0x65, 0x14, 0x59, 0x37, 0x97, 0x1e, 0x78, 0x96,
- 0x67, 0xd1, 0xec, 0xd3, 0xa8, 0xda, 0xdc, 0x6c, 0xbb, 0x37, 0x2b, 0xcb,
- 0x4d, 0xe2, 0x93, 0x49, 0x0c, 0x53, 0x7e, 0x78, 0x7f, 0x1c, 0xad, 0x22,
- 0x7e, 0xc6, 0xf3, 0xdd, 0xcd, 0xad, 0x35, 0x35, 0x10, 0xc5, 0x3d, 0x4b,
- 0x87, 0xdf, 0x2b, 0x2b, 0x43, 0x1b, 0x33, 0x69, 0x5e, 0x17, 0xa8, 0x93,
- 0x8b, 0xb2, 0x64, 0x87, 0x1e, 0xa7, 0x18, 0x3b, 0x02, 0xa5, 0x44, 0x83,
- 0x54, 0x17, 0x29, 0x4c, 0xd2, 0x63, 0x7c, 0x5b, 0xc8, 0xcc, 0xb3, 0x07,
- 0x63, 0xd3, 0xd8, 0x1c, 0x58, 0x73, 0x00, 0xfb, 0x5f, 0x0b, 0xed, 0xdc,
- 0x59, 0x4b, 0x56, 0x55, 0xd2, 0xe1, 0xdd, 0xc3, 0x75, 0x31, 0xae, 0x08,
- 0xe9, 0x2d, 0x7d, 0x15, 0x36, 0x68, 0x3c, 0x09, 0xb1, 0x44, 0xec, 0x9a,
- 0x54, 0x28, 0xcc, 0x5e, 0x6c, 0xeb, 0x31, 0x32, 0xa7, 0x1e, 0xde, 0x21,
- 0x39, 0x69, 0x0c, 0x89, 0x1d, 0xd4, 0x50, 0xdf, 0x55, 0x06, 0x9a, 0xa3,
- 0xfa, 0x61, 0x15, 0xe2, 0x1c, 0xd0, 0x86, 0xc2, 0x43, 0xfe, 0x8b, 0x1c,
- 0x87, 0x4d, 0xd1, 0x29, 0xdb, 0x83, 0x7b, 0x2f, 0x9e, 0xe0, 0x8b, 0x54,
- 0x2a, 0x07, 0x59, 0xd6, 0x26, 0xfa, 0xb8, 0x77, 0x87, 0xc3, 0xeb, 0xeb,
- 0x7a, 0x01, 0xd1, 0x0d, 0xa4, 0x3e, 0x64, 0xf6, 0xe6, 0x61, 0x29, 0x0c,
- 0x7a, 0xef, 0x3e, 0x89, 0xf3, 0x8e, 0xf4, 0x79, 0x93, 0xa6, 0xe8, 0xfb,
- 0xff, 0xf5, 0xd2, 0x8f, 0xa9, 0x22, 0xb5, 0xe5, 0xfc, 0x40, 0x22, 0x38,
- 0x97, 0x1d, 0x1d, 0x63, 0xae, 0x09, 0x20, 0x69, 0x17, 0x8e, 0x4e, 0x20,
- 0xa7, 0x72, 0xc8, 0x64, 0x29, 0xf9, 0x17, 0xf2, 0x92, 0x92, 0xf8, 0x7b,
- 0x92, 0xf4, 0x7b, 0xc0, 0x8f, 0x78, 0xe8, 0xdd, 0xd6, 0x95, 0x51, 0x84,
- 0xac, 0x9e, 0x46, 0xe1, 0x5a, 0x22, 0x9c, 0x6f, 0x8c, 0x95, 0x5c, 0x90,
- 0x23, 0x05, 0x43, 0x2d, 0x55, 0x8e, 0x9c, 0x75, 0x70, 0x5c, 0x56, 0x4f,
- 0xa4, 0xc0, 0xe8, 0xec, 0xf5, 0x77, 0x4e, 0xbd, 0x9a, 0xe7, 0x0a, 0x21,
- 0xe7, 0xe2, 0x9f, 0x4d, 0x8a, 0x11, 0x18, 0x43, 0x98, 0xe9, 0x9c, 0x49,
- 0xc5, 0x00, 0xbb, 0xfe, 0x28, 0xd5, 0x6a, 0xcd, 0x26, 0xc3, 0x23, 0xa9,
- 0x7b, 0xfb, 0xf4, 0xbb, 0x76, 0x60, 0x52, 0xca, 0xc8, 0xbf, 0xf8, 0x81,
- 0x7f, 0x1d, 0x71, 0x66, 0xe5, 0x0f, 0xfb, 0xf5, 0xf5, 0x7c, 0x7a, 0x01,
- 0xfb, 0x99, 0xd7, 0x5f, 0xf4, 0x22, 0xce, 0xe3, 0xb9, 0x14, 0x7a, 0x2e,
- 0xb0, 0x98, 0x33, 0xcd, 0x0d, 0x52, 0x7f, 0x71, 0x83, 0x6a, 0x3c, 0x3b,
- 0x85, 0x4c, 0xb0, 0xf9, 0xdd, 0xb0, 0x79, 0x1c, 0x9f, 0xf0, 0xd4, 0xbc,
- 0x0f, 0xc0, 0x9e, 0x3f, 0xbc, 0xfd, 0xdb, 0x0f, 0x2f, 0xb7, 0x77, 0x92,
- 0xe7, 0xc9, 0xe8, 0xd9, 0xe5, 0x8b, 0x64, 0x77, 0xbc, 0xfb, 0xfc, 0xe5,
- 0xd6, 0x8b, 0xdd, 0xe4, 0xf9, 0xce, 0x65, 0xf2, 0x6c, 0x33, 0xdd, 0x7c,
- 0x79, 0xb9, 0xb5, 0x3d, 0x1e, 0x5f, 0xa6, 0x2f, 0xc6, 0xcf, 0x93, 0xde,
- 0x80, 0x2c, 0x47, 0x9d, 0xba, 0x2f, 0x6a, 0x35, 0x4a, 0x9b, 0x44, 0xc3,
- 0x37, 0x07, 0xf1, 0x66, 0x74, 0x9d, 0xde, 0xe9, 0x01, 0x6b, 0xa6, 0x6e,
- 0x21, 0x88, 0x13, 0x2d, 0xa7, 0x7b, 0xb1, 0x0a, 0x9f, 0x84, 0x15, 0x37,
- 0xe8, 0x75, 0x22, 0xed, 0x97, 0xa9, 0xa8, 0x64, 0xe5, 0x9c, 0x6c, 0xe3,
- 0x13, 0xde, 0xd3, 0x38, 0x0c, 0xae, 0xab, 0x7d, 0xf8, 0x4f, 0xd0, 0x73,
- 0xf2, 0x36, 0x19, 0x5d, 0x53, 0xc1, 0xba, 0x3c, 0x38, 0xe4, 0x10, 0x7f,
- 0x3f, 0x92, 0xbf, 0xa0, 0xe7, 0xdf, 0x19, 0xe3, 0xeb, 0xb2, 0x98, 0xcf,
- 0xce, 0x8a, 0x49, 0x36, 0xba, 0x5f, 0x34, 0x9c, 0xfb, 0x58, 0xe3, 0x17,
- 0x47, 0x2c, 0xc2, 0xb3, 0x2a, 0xfd, 0x77, 0xb0, 0xd7, 0x88, 0xd6, 0x24,
- 0x0e, 0x58, 0xbf, 0x85, 0xff, 0x2d, 0x6f, 0xb1, 0x59, 0x61, 0xff, 0xa0,
- 0xc9, 0x16, 0x8f, 0xb2, 0xd9, 0x35, 0xa6, 0x14, 0xed, 0x53, 0xf6, 0x39,
- 0x46, 0xf2, 0xf8, 0x07, 0x61, 0x53, 0x6d, 0x28, 0x87, 0xbd, 0x12, 0x56,
- 0xd1, 0xb7, 0x45, 0x91, 0xcb, 0x14, 0x77, 0x40, 0x7d, 0x89, 0x52, 0xf4,
- 0x90, 0x79, 0xce, 0x56, 0xfb, 0x21, 0x16, 0x24, 0xaa, 0xc4, 0xb3, 0x4b,
- 0x47, 0x7e, 0x35, 0x90, 0xfa, 0xf5, 0xf9, 0x8c, 0x91, 0x23, 0x28, 0xfc,
- 0xc3, 0xbf, 0x6b, 0x9f, 0x61, 0x9c, 0xbc, 0x30, 0x23, 0xa3, 0x1f, 0xc0,
- 0x66, 0x7d, 0x78, 0x7f, 0xb2, 0xd7, 0x26, 0x92, 0x21, 0x24, 0x45, 0x08,
- 0xab, 0x74, 0x7d, 0x5c, 0x8c, 0xaa, 0xf5, 0xaa, 0x9a, 0x28, 0x21, 0x08,
- 0x4f, 0xe9, 0xf7, 0x66, 0x04, 0xa1, 0xcc, 0xd1, 0xe1, 0xab, 0x37, 0x47,
- 0x31, 0xfc, 0x77, 0x78, 0x10, 0x1f, 0x1c, 0x0d, 0xb7, 0x76, 0x9f, 0xc5,
- 0x87, 0x87, 0x6f, 0x5f, 0x2c, 0xc9, 0x0c, 0xf5, 0xa4, 0xba, 0xd9, 0x1c,
- 0x6c, 0x37, 0x36, 0xbd, 0x98, 0x92, 0x44, 0x4e, 0xc7, 0x71, 0x55, 0x79,
- 0x29, 0xb5, 0x58, 0xc1, 0xca, 0xb9, 0x75, 0x47, 0x92, 0x3a, 0x4e, 0x57,
- 0x78, 0x0c, 0xbb, 0x8b, 0x45, 0xa7, 0xfa, 0xb2, 0xd6, 0x48, 0x70, 0x6a,
- 0x88, 0x49, 0x67, 0xed, 0x07, 0x62, 0x6d, 0x89, 0xdc, 0x45, 0x7f, 0x76,
- 0xdd, 0x6c, 0x68, 0x25, 0x14, 0xa5, 0xc1, 0x42, 0x20, 0x74, 0x97, 0xa5,
- 0x29, 0xd5, 0x58, 0x48, 0x54, 0x2d, 0x93, 0xba, 0xe6, 0xbc, 0xdc, 0xcc,
- 0xba, 0x7f, 0xd6, 0xf2, 0x4b, 0x99, 0xc7, 0xc2, 0xf9, 0x36, 0xea, 0x02,
- 0x4d, 0x22, 0xfb, 0xa4, 0xf5, 0x07, 0x2a, 0x56, 0x83, 0x31, 0x09, 0x4d,
- 0x1e, 0x59, 0xb5, 0x08, 0x13, 0x80, 0x15, 0xe7, 0x66, 0x2c, 0x1d, 0x81,
- 0x2f, 0xf8, 0x03, 0x2e, 0xa0, 0xc6, 0x20, 0x7a, 0xc3, 0xb9, 0x65, 0x6d,
- 0x55, 0x45, 0x80, 0xca, 0x3a, 0xd3, 0xe0, 0x3b, 0x98, 0xba, 0xcb, 0xdd,
- 0x1a, 0xcd, 0x73, 0x1b, 0x3f, 0x8c, 0xfc, 0x8b, 0x4a, 0x41, 0x39, 0x6c,
- 0x34, 0xb5, 0x4c, 0x19, 0x4c, 0x02, 0x94, 0xb6, 0xb2, 0x2c, 0xca, 0x41,
- 0x80, 0x57, 0x2c, 0x77, 0xc4, 0xde, 0xcd, 0xb2, 0x98, 0x5b, 0xc0, 0x56,
- 0xc2, 0x1f, 0x53, 0x96, 0xae, 0xb3, 0x91, 0x4f, 0xe6, 0x9f, 0x65, 0x25,
- 0x6c, 0x83, 0xf1, 0x1c, 0x76, 0xf9, 0x8b, 0x24, 0x40, 0x5e, 0x66, 0x57,
- 0xe1, 0xf4, 0x1b, 0x5b, 0x7d, 0x50, 0x63, 0xf9, 0x94, 0xe6, 0xd6, 0x60,
- 0xfd, 0xb1, 0xf8, 0x26, 0x34, 0x7f, 0xae, 0x62, 0x95, 0x50, 0xf3, 0x6a,
- 0x5a, 0xe0, 0x67, 0x0e, 0x06, 0x5a, 0xf3, 0x15, 0xcc, 0xf7, 0x8e, 0x4c,
- 0x16, 0xa4, 0xf9, 0x46, 0x23, 0xf3, 0x1f, 0x51, 0xf9, 0x88, 0x1d, 0xdb,
- 0x4e, 0x03, 0x8c, 0x15, 0x59, 0xf3, 0x21, 0x04, 0x15, 0xd7, 0x26, 0xca,
- 0xe9, 0xac, 0x01, 0x17, 0x91, 0x11, 0x72, 0x61, 0x42, 0x15, 0x86, 0x21,
- 0x25, 0xb1, 0x70, 0x52, 0x38, 0x68, 0x40, 0x5f, 0x7d, 0xaa, 0x4d, 0x2d,
- 0x89, 0x22, 0xfe, 0x90, 0x6e, 0x09, 0x37, 0x0e, 0x68, 0x50, 0x58, 0xfc,
- 0x86, 0xe8, 0x94, 0x93, 0xc2, 0xea, 0xea, 0x82, 0x89, 0x80, 0x19, 0xa1,
- 0x03, 0x4f, 0x05, 0xc0, 0xd3, 0x67, 0xab, 0xb5, 0x38, 0xc2, 0xc8, 0x3f,
- 0xa0, 0x43, 0x75, 0xa1, 0xe9, 0x33, 0x56, 0x71, 0x93, 0xdd, 0x0b, 0x7a,
- 0x18, 0xa5, 0x40, 0x90, 0xc1, 0xc2, 0x32, 0x82, 0xc2, 0x13, 0xe0, 0x34,
- 0xae, 0x77, 0xd4, 0x70, 0x53, 0x55, 0x48, 0x31, 0x0b, 0x4e, 0x14, 0xe7,
- 0xc9, 0x73, 0x6c, 0x9f, 0x19, 0x03, 0x8a, 0xd6, 0xb0, 0x6b, 0x93, 0xca,
- 0x96, 0x0d, 0x56, 0x7e, 0x32, 0x83, 0xa5, 0x66, 0xd0, 0x09, 0xe2, 0xd5,
- 0x60, 0xd2, 0x4c, 0xca, 0x54, 0x3f, 0x91, 0x17, 0xed, 0x59, 0xc9, 0x3c,
- 0x62, 0xdf, 0x25, 0x68, 0xca, 0x0c, 0x9d, 0x09, 0x68, 0xb9, 0xa1, 0xd9,
- 0xe6, 0xb0, 0x64, 0x49, 0xed, 0x03, 0xd6, 0x61, 0x61, 0xf7, 0x90, 0x7c,
- 0x56, 0x52, 0xbc, 0xcf, 0xf3, 0xde, 0x63, 0xb7, 0xe8, 0xe7, 0x6b, 0xfd,
- 0x60, 0x86, 0x99, 0x19, 0xcc, 0xe6, 0xd7, 0x23, 0x2c, 0xd0, 0xa4, 0xa8,
- 0x34, 0x2e, 0x0a, 0x1b, 0xc8, 0xe8, 0x75, 0x8c, 0x3e, 0x61, 0x30, 0xed,
- 0x5a, 0xc3, 0xf1, 0x33, 0xbc, 0x3d, 0x97, 0x46, 0x6b, 0x15, 0x9f, 0x87,
- 0x45, 0xdb, 0xa3, 0x8a, 0x74, 0xe3, 0x96, 0x80, 0xc9, 0xfd, 0xf0, 0x03,
- 0x28, 0x9e, 0x3f, 0xf4, 0xda, 0xb3, 0xfb, 0x01, 0xa4, 0xd8, 0x0f, 0xc0,
- 0x8b, 0x3f, 0x70, 0xdd, 0xf4, 0x0f, 0x37, 0xe8, 0x4f, 0xc0, 0x30, 0x4b,
- 0x35, 0xc1, 0x90, 0x2e, 0x5b, 0x6c, 0x4d, 0xdf, 0x2e, 0xe3, 0x0a, 0x72,
- 0xce, 0xb7, 0xe7, 0x6d, 0xc0, 0x18, 0x66, 0x17, 0x45, 0xb9, 0x7e, 0x04,
- 0x76, 0x6f, 0x3e, 0xcd, 0xc5, 0xec, 0x65, 0x5e, 0x25, 0x29, 0xc0, 0x98,
- 0xbc, 0xd1, 0xca, 0x1f, 0x56, 0x1c, 0xce, 0xea, 0x87, 0x3c, 0x8d, 0x65,
- 0xca, 0xba, 0x1e, 0x69, 0x2c, 0x99, 0xa3, 0xad, 0x28, 0x26, 0x1f, 0xf9,
- 0x32, 0x38, 0xbd, 0xc2, 0xbf, 0x93, 0x4f, 0x31, 0x02, 0xc5, 0xb5, 0xea,
- 0x85, 0xf5, 0x52, 0x60, 0xc9, 0xfe, 0xec, 0xfa, 0xbe, 0xc2, 0xcb, 0x4a,
- 0xe6, 0x63, 0xb4, 0x41, 0x9c, 0x62, 0x30, 0x4f, 0x4e, 0x85, 0x21, 0xef,
- 0x31, 0x3e, 0x42, 0x16, 0x3d, 0x0a, 0xc4, 0x86, 0x24, 0x85, 0xf9, 0xac,
- 0xc4, 0x2b, 0x26, 0x60, 0x2d, 0xe9, 0x75, 0x5e, 0x29, 0xa2, 0x4a, 0x0e,
- 0xa7, 0x66, 0xc2, 0xfb, 0xa4, 0x93, 0x7d, 0x5f, 0xb8, 0x45, 0x1a, 0x16,
- 0x34, 0x12, 0x61, 0x25, 0x34, 0xe9, 0xc7, 0x95, 0x05, 0xfd, 0x28, 0xe0,
- 0xc7, 0xa4, 0x62, 0x0e, 0xae, 0x01, 0xd2, 0xb5, 0xa0, 0xa7, 0xcd, 0x06,
- 0x4d, 0xe3, 0x98, 0xa0, 0x7c, 0x67, 0x0c, 0xbf, 0x8b, 0x2c, 0x42, 0x89,
- 0x4a, 0xf7, 0x58, 0xa0, 0x3e, 0x9b, 0x78, 0xf2, 0x57, 0x8a, 0x0d, 0x14,
- 0xc0, 0x10, 0x0f, 0x3c, 0xc2, 0xc0, 0xde, 0xe6, 0x02, 0xd4, 0x39, 0x2c,
- 0xc8, 0xe3, 0x37, 0xa2, 0x94, 0x27, 0xc9, 0xae, 0x93, 0x52, 0xf7, 0x80,
- 0x83, 0x01, 0x2f, 0x78, 0x4f, 0x07, 0xc6, 0xf9, 0x7c, 0xce, 0x48, 0x86,
- 0x9e, 0x26, 0xdc, 0xf3, 0x14, 0xe6, 0x3f, 0xc0, 0x0a, 0x62, 0xbd, 0x47,
- 0x23, 0x31, 0x4d, 0x62, 0xff, 0xa9, 0xda, 0x5c, 0xee, 0xc2, 0x37, 0xed,
- 0x47, 0xe4, 0xb3, 0xce, 0xfd, 0xda, 0x6b, 0x3f, 0x22, 0xd5, 0xfb, 0xf0,
- 0x14, 0x4e, 0x0a, 0x85, 0x96, 0xc0, 0x9b, 0x46, 0x7e, 0xc2, 0x55, 0x9c,
- 0x5c, 0xa1, 0x4f, 0xe2, 0x73, 0x04, 0xd4, 0xc1, 0x52, 0x18, 0xfc, 0xd7,
- 0xfa, 0xe6, 0x60, 0x23, 0xb4, 0x02, 0xa4, 0xba, 0x60, 0x87, 0x48, 0xe8,
- 0x07, 0x69, 0x5b, 0x17, 0xc5, 0xc3, 0x73, 0x64, 0xb2, 0xc0, 0xf5, 0x37,
- 0x83, 0x2f, 0x84, 0x67, 0x13, 0x9f, 0xb6, 0x7f, 0x42, 0x8e, 0x02, 0xf8,
- 0xca, 0xe7, 0x06, 0x2f, 0x32, 0x2f, 0x08, 0x7c, 0x04, 0xb4, 0x95, 0xc9,
- 0xa4, 0x81, 0x3c, 0xdb, 0xeb, 0xa0, 0x77, 0x4e, 0xf5, 0x27, 0x69, 0x9b,
- 0xec, 0x6d, 0x10, 0x15, 0xf2, 0xbc, 0x9b, 0x90, 0x86, 0x80, 0x83, 0x12,
- 0x87, 0xac, 0x4a, 0xaa, 0x75, 0xfc, 0x77, 0xce, 0x78, 0x66, 0x18, 0x00,
- 0xd1, 0xf2, 0xd6, 0xb8, 0xe0, 0xac, 0x0a, 0x64, 0x68, 0xd9, 0x6c, 0x59,
- 0xe7, 0xe0, 0xda, 0x7c, 0xd3, 0x8c, 0xa2, 0x55, 0xa4, 0x64, 0xc0, 0x79,
- 0x48, 0xe9, 0xe6, 0xa4, 0xb8, 0x1b, 0x1e, 0x58, 0x3f, 0x2b, 0x44, 0x8e,
- 0x8f, 0x7c, 0x96, 0xcd, 0xc1, 0xd0, 0xf8, 0x59, 0xc5, 0x33, 0x92, 0x18,
- 0x15, 0x1f, 0x3f, 0x3f, 0x1b, 0x53, 0x84, 0xf5, 0x6c, 0x42, 0x30, 0xc7,
- 0x5a, 0x4f, 0x4d, 0xb6, 0x85, 0xc7, 0xe6, 0x9b, 0x6b, 0x51, 0xef, 0xff,
- 0xa1, 0xbc, 0xda, 0x37, 0xa7, 0x6f, 0x8f, 0xd6, 0x07, 0x48, 0xa5, 0x72,
- 0xe4, 0xb1, 0xc7, 0x16, 0x3e, 0xf6, 0xdd, 0xab, 0xaf, 0x3f, 0x1e, 0x9e,
- 0xbe, 0x7b, 0x7d, 0xfc, 0x75, 0xf3, 0xe1, 0x68, 0xd5, 0xcd, 0xc1, 0xdf,
- 0x1e, 0x6c, 0xac, 0xb5, 0x5f, 0xdf, 0xc6, 0xd7, 0x17, 0x7e, 0x60, 0x67,
- 0x4d, 0xd3, 0xd2, 0xf6, 0xa2, 0xde, 0x1f, 0x3f, 0x0c, 0x8f, 0xde, 0x9f,
- 0xbd, 0x3f, 0x45, 0x7c, 0xb6, 0x3f, 0xfe, 0xd0, 0xf5, 0xca, 0x6e, 0xe3,
- 0x95, 0x83, 0xb3, 0xb3, 0x57, 0x07, 0xe7, 0x07, 0xdd, 0x8f, 0x3f, 0xeb,
- 0xfe, 0xc2, 0xc1, 0x0c, 0xb1, 0xf1, 0x38, 0xc9, 0xe0, 0x15, 0x70, 0x5f,
- 0xe7, 0x18, 0xcf, 0xd7, 0x40, 0x32, 0xe6, 0xf1, 0xad, 0x8e, 0x83, 0xe6,
- 0xfc, 0x55, 0x5a, 0xcf, 0x6e, 0xe7, 0xd9, 0x98, 0x6b, 0x2a, 0xc5, 0x2e,
- 0xb8, 0x2e, 0x34, 0xf9, 0x16, 0x3d, 0x93, 0xed, 0x61, 0x5e, 0xac, 0xc1,
- 0xf5, 0xa0, 0x09, 0xc2, 0x7d, 0x49, 0xbc, 0xc1, 0x77, 0x09, 0xc6, 0x4f,
- 0x3e, 0x2e, 0x5b, 0xae, 0x79, 0x95, 0x72, 0xe5, 0x46, 0x81, 0xa4, 0x3c,
- 0x06, 0xc6, 0x1a, 0x63, 0x9d, 0x78, 0x71, 0x83, 0x02, 0x18, 0x45, 0x1f,
- 0x71, 0xae, 0x84, 0x32, 0xd3, 0x76, 0x4e, 0xb0, 0x3a, 0x50, 0x27, 0x70,
- 0x76, 0xbc, 0xe1, 0x46, 0xf3, 0x5a, 0x4f, 0x01, 0xb1, 0xd0, 0x38, 0x9c,
- 0x72, 0x21, 0x37, 0x9a, 0xab, 0x92, 0x99, 0x14, 0x76, 0xb2, 0xf5, 0x91,
- 0x20, 0x5c, 0x8a, 0x6b, 0x7e, 0x2e, 0xdc, 0x1c, 0x28, 0x51, 0x5e, 0x3e,
- 0xd7, 0xc2, 0xb9, 0x30, 0x97, 0xce, 0xf9, 0x73, 0x4f, 0x7b, 0xd3, 0x8a,
- 0x95, 0x2a, 0x5b, 0x98, 0x3f, 0x6a, 0xb0, 0xfb, 0x97, 0x82, 0x39, 0x9f,
- 0x4c, 0x04, 0x69, 0xc7, 0x73, 0xf9, 0xbc, 0x4d, 0xee, 0xb2, 0xe9, 0x7c,
- 0x1a, 0xd1, 0x9a, 0x59, 0x3f, 0x96, 0x27, 0x35, 0x3a, 0x8c, 0x9e, 0x42,
- 0xce, 0x36, 0xc3, 0xa9, 0x63, 0x8a, 0xaa, 0xf1, 0xfc, 0x04, 0xee, 0x22,
- 0xb8, 0xb9, 0xd5, 0x61, 0x40, 0x49, 0x2c, 0x14, 0xed, 0xaa, 0x5a, 0x1e,
- 0x23, 0xd0, 0x21, 0x12, 0xcc, 0xd6, 0x51, 0x48, 0x1d, 0x96, 0x6d, 0x2e,
- 0x48, 0x69, 0x03, 0xab, 0x54, 0x15, 0x3f, 0x27, 0x0d, 0x3e, 0x2d, 0xb3,
- 0x62, 0x6c, 0x82, 0xdf, 0x5a, 0x8b, 0x16, 0xc5, 0x1c, 0xce, 0xa8, 0xf5,
- 0x37, 0x9e, 0x8f, 0x1a, 0xeb, 0xfb, 0xa2, 0x21, 0x95, 0x82, 0x6a, 0x62,
- 0xfb, 0xf3, 0xc1, 0xf6, 0x16, 0x42, 0xe8, 0xb9, 0x76, 0xb2, 0x40, 0xba,
- 0xa2, 0x35, 0x9e, 0x4d, 0x15, 0xab, 0xa4, 0x1a, 0xfc, 0x6b, 0x3c, 0x46,
- 0xd5, 0x02, 0x9e, 0x69, 0x6c, 0xef, 0xd6, 0x46, 0x90, 0x6d, 0x1e, 0xf7,
- 0xf2, 0xf6, 0x60, 0x73, 0x67, 0x39, 0xae, 0xa3, 0xaa, 0x9a, 0x69, 0x72,
- 0x47, 0x43, 0x04, 0xd9, 0xae, 0x88, 0xf6, 0xdf, 0x9c, 0x0e, 0xcf, 0x37,
- 0xf7, 0xce, 0x4e, 0xdf, 0xc3, 0x7f, 0xf1, 0xef, 0x5b, 0xf4, 0xf7, 0xad,
- 0x2f, 0xda, 0xc3, 0xbe, 0x96, 0x62, 0x01, 0xad, 0x8f, 0x66, 0x6c, 0x53,
- 0x14, 0x15, 0x62, 0xa9, 0x39, 0x03, 0xa1, 0x61, 0x90, 0xa1, 0x92, 0x3b,
- 0x32, 0x60, 0x16, 0x6d, 0xbe, 0x73, 0x3e, 0xa5, 0xf9, 0xc4, 0x83, 0xc8,
- 0xcf, 0x59, 0xce, 0x6a, 0xd5, 0x04, 0x05, 0x5e, 0x48, 0x81, 0x8b, 0xda,
- 0x7e, 0x15, 0x86, 0x87, 0x91, 0x8a, 0x68, 0xf6, 0x4e, 0xf4, 0x23, 0x4a,
- 0x3e, 0x6d, 0xfe, 0x6a, 0x34, 0x01, 0x3b, 0x25, 0xc5, 0xec, 0xb0, 0x71,
- 0xca, 0x71, 0x47, 0xfc, 0x49, 0xc8, 0xc8, 0x92, 0x82, 0xeb, 0x92, 0x41,
- 0x28, 0x5b, 0x33, 0xa3, 0xa3, 0xa2, 0xe1, 0x4e, 0x98, 0x4f, 0x42, 0xb8,
- 0x7f, 0x0a, 0xb6, 0xd1, 0x1e, 0x8e, 0x92, 0xfc, 0x5d, 0xff, 0xab, 0x82,
- 0xa8, 0xbe, 0x3b, 0x3d, 0x8f, 0x92, 0xcb, 0x4b, 0xc5, 0x5a, 0xa2, 0xc2,
- 0x2e, 0xd4, 0xb5, 0xd7, 0xc9, 0x47, 0x23, 0xe7, 0x39, 0x90, 0x25, 0x25,
- 0x17, 0xf2, 0xf9, 0xc9, 0x70, 0x1d, 0xdd, 0xaf, 0x9c, 0x65, 0x3b, 0x7c,
- 0x77, 0xdc, 0x6f, 0x84, 0x70, 0xdc, 0x64, 0xb6, 0x35, 0x34, 0xe3, 0x04,
- 0x6b, 0xbd, 0x4d, 0x3b, 0xe7, 0x36, 0x32, 0x60, 0xaa, 0x83, 0xa8, 0x47,
- 0x1b, 0xda, 0x63, 0x70, 0xb0, 0x1e, 0xed, 0x6b, 0x8f, 0x2b, 0x88, 0xc8,
- 0xca, 0xa3, 0xf9, 0x22, 0x56, 0xf2, 0xbd, 0x0f, 0x15, 0x42, 0x2e, 0x27,
- 0x04, 0x9c, 0x43, 0xb5, 0xa0, 0x87, 0x26, 0x16, 0x2e, 0x8c, 0x16, 0xd5,
- 0x93, 0x81, 0xb7, 0x78, 0x60, 0x1a, 0x17, 0xfe, 0x8e, 0xc3, 0x12, 0xd3,
- 0x5e, 0xa4, 0x21, 0x3b, 0x93, 0xbe, 0x63, 0x87, 0x36, 0x63, 0xc3, 0xc4,
- 0x28, 0x5a, 0xc7, 0x4f, 0x29, 0x73, 0x80, 0xc8, 0x43, 0xab, 0x35, 0xbb,
- 0xc2, 0xd4, 0x99, 0x76, 0xb5, 0xbe, 0x9d, 0x48, 0x9b, 0xc3, 0x0f, 0x40,
- 0x2f, 0x84, 0xdf, 0xf6, 0x1c, 0xbf, 0x48, 0xed, 0xd5, 0x22, 0x51, 0x86,
- 0x7c, 0xa9, 0xc6, 0x98, 0x4e, 0xa8, 0x2a, 0xfc, 0xe4, 0x07, 0x13, 0xfe,
- 0x9f, 0x26, 0xa8, 0xe3, 0x9a, 0xc0, 0xa8, 0x56, 0x45, 0xeb, 0x41, 0x22,
- 0x50, 0x6c, 0x41, 0x10, 0x15, 0x03, 0x9a, 0xa2, 0xa9, 0xed, 0xe1, 0xb8,
- 0x9b, 0x03, 0x5e, 0x0c, 0x52, 0x39, 0xd7, 0xdb, 0xdc, 0x7a, 0x3e, 0xd8,
- 0x80, 0xff, 0x07, 0xfb, 0x22, 0x3e, 0x17, 0x82, 0x8f, 0xb7, 0x20, 0xe1,
- 0xe6, 0xc9, 0xf4, 0xae, 0xcd, 0x92, 0x2c, 0x3e, 0x8a, 0xf2, 0xaa, 0xf7,
- 0xf8, 0xdb, 0x16, 0x37, 0xd2, 0xdc, 0xb4, 0xc9, 0x58, 0x7e, 0xa2, 0x67,
- 0xbc, 0x9c, 0x3f, 0xed, 0x56, 0x55, 0x49, 0xe4, 0x88, 0xb4, 0xbd, 0x9d,
- 0x9d, 0xed, 0x3d, 0xfd, 0x37, 0x9c, 0xa7, 0xbd, 0x17, 0xf0, 0x83, 0x5f,
- 0x02, 0x67, 0xf1, 0x06, 0x25, 0x21, 0x57, 0xfb, 0x36, 0xb3, 0x1d, 0x5f,
- 0x36, 0xbc, 0xca, 0xed, 0x3a, 0xe9, 0x68, 0xbf, 0xb8, 0xbc, 0xac, 0xd2,
- 0xba, 0x7d, 0x07, 0x1f, 0xca, 0x23, 0xeb, 0xef, 0xa5, 0xdd, 0x8a, 0xa9,
- 0x90, 0x6c, 0xa2, 0x82, 0x47, 0x49, 0xdd, 0x94, 0x91, 0x3c, 0xdc, 0x20,
- 0x54, 0xfb, 0xdc, 0x78, 0x82, 0x93, 0x42, 0x98, 0xf5, 0xef, 0x08, 0x78,
- 0xa7, 0x0d, 0xd9, 0xb7, 0x00, 0xd0, 0xa5, 0xfa, 0x94, 0xcd, 0x66, 0x68,
- 0x6f, 0x50, 0x8b, 0x05, 0x3c, 0x26, 0x26, 0x86, 0x4d, 0xa9, 0x14, 0x8c,
- 0x06, 0x2c, 0xb9, 0xc6, 0x54, 0x92, 0xac, 0xb1, 0xee, 0x8b, 0xf4, 0xd2,
- 0x8f, 0xc4, 0x4a, 0x8a, 0x8a, 0x0b, 0x4c, 0x28, 0x98, 0x6a, 0x63, 0x04,
- 0x21, 0xcc, 0x13, 0x11, 0x69, 0x97, 0x0e, 0x6a, 0x97, 0xa0, 0x3b, 0xf4,
- 0x03, 0xd2, 0xc6, 0x56, 0xcc, 0x1b, 0x0f, 0xe6, 0xf0, 0xf8, 0x7f, 0x1d,
- 0x59, 0x18, 0x74, 0x83, 0x33, 0xce, 0x75, 0x84, 0xa1, 0x72, 0xcf, 0xa8,
- 0x17, 0x1f, 0x46, 0x31, 0x21, 0xb3, 0x3a, 0x99, 0x5e, 0x45, 0xcb, 0x33,
- 0x4f, 0xca, 0x31, 0xde, 0x9c, 0x0c, 0x31, 0xb9, 0x8e, 0xb8, 0x4d, 0xfe,
- 0x45, 0x24, 0x1d, 0x73, 0x98, 0xd8, 0xa6, 0x3c, 0x1d, 0x0f, 0x64, 0x2d,
- 0x18, 0x06, 0x6e, 0x39, 0x1f, 0xdb, 0xc2, 0xeb, 0x59, 0x8e, 0x16, 0x31,
- 0xe9, 0x91, 0x5e, 0xad, 0x9b, 0x02, 0x9d, 0x30, 0x64, 0xdd, 0xbc, 0xfe,
- 0x57, 0x05, 0x30, 0xbb, 0xb4, 0x10, 0xa0, 0xd4, 0xe3, 0xb5, 0x8e, 0xc3,
- 0x68, 0x67, 0x63, 0x63, 0xb9, 0x93, 0x66, 0xc1, 0x06, 0x9c, 0x93, 0x34,
- 0xe2, 0x93, 0x84, 0xdd, 0x8a, 0xe2, 0x9f, 0x92, 0x92, 0x9d, 0xee, 0x9d,
- 0xd8, 0x48, 0x6b, 0xc6, 0xe5, 0x84, 0x15, 0x71, 0x14, 0xc3, 0x24, 0x86,
- 0x34, 0xa0, 0x86, 0xba, 0xc1, 0xec, 0xdf, 0xa2, 0x4c, 0x6e, 0x69, 0x85,
- 0xd4, 0x16, 0x6b, 0x04, 0x63, 0x44, 0xb9, 0x0c, 0x06, 0xc8, 0xc8, 0x82,
- 0x72, 0x0c, 0x30, 0x44, 0x6d, 0xc0, 0xe6, 0x13, 0x52, 0x44, 0x69, 0x14,
- 0xe9, 0x9f, 0xe1, 0xa9, 0x15, 0x59, 0x1e, 0x33, 0x4a, 0x90, 0x3c, 0x48,
- 0x51, 0x74, 0xec, 0x53, 0x21, 0x27, 0x80, 0x99, 0x82, 0x6d, 0xf1, 0x5a,
- 0x6b, 0xd9, 0x49, 0x71, 0xa0, 0x6f, 0x06, 0x21, 0x9c, 0x25, 0x03, 0x09,
- 0x0c, 0x2f, 0xf3, 0x75, 0x72, 0x6b, 0x7e, 0xca, 0x8b, 0xdb, 0x1c, 0x63,
- 0x2f, 0x1c, 0x3e, 0xd1, 0x2d, 0xc7, 0xc9, 0xd6, 0x69, 0x1e, 0xaa, 0xca,
- 0x6d, 0x44, 0x10, 0xe4, 0x39, 0xc7, 0xc7, 0xf5, 0x2e, 0xad, 0x25, 0x65,
- 0x8c, 0xe7, 0x2e, 0xf9, 0x2c, 0x52, 0xac, 0x0b, 0x93, 0xf0, 0x71, 0x9c,
- 0x29, 0xd3, 0xc8, 0xf8, 0xeb, 0xe8, 0x0e, 0xe1, 0xec, 0x0d, 0x6e, 0x0d,
- 0x80, 0x9e, 0xeb, 0x3e, 0x1c, 0xbe, 0x9e, 0xba, 0xd1, 0x79, 0xfa, 0x61,
- 0x31, 0xa4, 0x13, 0xb2, 0x08, 0xfe, 0xc1, 0x8b, 0x26, 0x00, 0x60, 0x2d,
- 0x25, 0xab, 0x08, 0x1a, 0x4b, 0x29, 0x9a, 0xec, 0xf2, 0xa3, 0x35, 0x68,
- 0xc6, 0x5a, 0xa8, 0xf8, 0xdc, 0x81, 0x15, 0xc1, 0xe4, 0xb9, 0x72, 0x6c,
- 0x80, 0x83, 0x64, 0xa2, 0x20, 0xfa, 0xc5, 0xd1, 0x74, 0x9b, 0x10, 0xab,
- 0x99, 0x4f, 0x84, 0x2a, 0xd9, 0x9c, 0xac, 0xe7, 0xf8, 0xc2, 0xb2, 0xb3,
- 0x05, 0x5e, 0x0c, 0x3a, 0x83, 0xe5, 0x21, 0xe4, 0x79, 0xdb, 0x37, 0x41,
- 0x40, 0x46, 0x0c, 0xe4, 0x7b, 0x4d, 0x50, 0x35, 0x45, 0x5f, 0xa4, 0xce,
- 0xed, 0x75, 0xe1, 0xf9, 0xc3, 0xd9, 0xc2, 0xb2, 0x70, 0x32, 0x02, 0x35,
- 0x85, 0x03, 0x62, 0x59, 0x02, 0x85, 0x09, 0x6e, 0xa8, 0xe2, 0xa1, 0x11,
- 0xce, 0x03, 0x6d, 0x36, 0x4d, 0xa8, 0x92, 0x34, 0x88, 0xcd, 0x73, 0x83,
- 0xeb, 0x00, 0x31, 0x73, 0x51, 0x54, 0xc2, 0x39, 0x88, 0xb0, 0x02, 0xcc,
- 0x96, 0x94, 0x74, 0x2b, 0x08, 0xc2, 0x2a, 0x5e, 0x1e, 0x54, 0xc7, 0xd9,
- 0xa5, 0x81, 0x32, 0x6c, 0x24, 0xe1, 0xe3, 0xdd, 0x64, 0x88, 0x77, 0x84,
- 0x8c, 0x05, 0xfa, 0x0e, 0x7a, 0xd8, 0x99, 0x91, 0x68, 0x5c, 0x86, 0x50,
- 0xbd, 0xce, 0x1c, 0x58, 0x24, 0x38, 0x92, 0xd7, 0x9e, 0x52, 0x56, 0x65,
- 0xf5, 0x3c, 0xa9, 0x1f, 0x57, 0x80, 0xd2, 0x25, 0x2b, 0x59, 0x58, 0xba,
- 0x09, 0xea, 0x81, 0x48, 0x11, 0x71, 0xf4, 0x2f, 0x11, 0xa6, 0x23, 0xce,
- 0xa3, 0x89, 0xc9, 0x0b, 0xda, 0xe5, 0x06, 0x78, 0xdc, 0x9b, 0xf1, 0x05,
- 0x39, 0xcb, 0x63, 0xee, 0xb5, 0xb7, 0x94, 0xc8, 0x75, 0xd8, 0xd1, 0x91,
- 0xb9, 0x2e, 0x93, 0xee, 0xa3, 0x0c, 0xf9, 0xdf, 0x0f, 0x08, 0xdd, 0xb3,
- 0x44, 0x82, 0xd6, 0x2e, 0x50, 0x2a, 0xc1, 0x52, 0xc8, 0x05, 0xad, 0x35,
- 0xda, 0x3c, 0xa6, 0xea, 0x4f, 0xc7, 0x81, 0xf4, 0x25, 0x0a, 0x42, 0x03,
- 0x3d, 0x27, 0xf7, 0x76, 0x40, 0x07, 0x35, 0xc2, 0xf4, 0xf4, 0xb0, 0x1d,
- 0x50, 0xcc, 0x17, 0xbc, 0x5c, 0xcc, 0xde, 0x10, 0x2c, 0x28, 0xfe, 0xe6,
- 0x5e, 0x4f, 0x82, 0xa9, 0x03, 0x55, 0x93, 0x78, 0x68, 0x83, 0x20, 0xa8,
- 0xf5, 0x81, 0x12, 0xaa, 0x20, 0xd9, 0xd6, 0x1e, 0x0e, 0x1b, 0x2f, 0x6e,
- 0x7e, 0xfe, 0xcd, 0xc1, 0xc9, 0x87, 0xa3, 0xcd, 0x3f, 0x47, 0xf8, 0xaf,
- 0x2d, 0xfe, 0xd7, 0x56, 0x2f, 0xc4, 0x6f, 0x20, 0x80, 0x57, 0x3e, 0x5f,
- 0x89, 0xaa, 0xfb, 0xe9, 0x45, 0x31, 0x31, 0x1c, 0x27, 0xa4, 0xd0, 0x90,
- 0x6e, 0x5f, 0x12, 0x87, 0x0d, 0x3a, 0x97, 0xc4, 0x68, 0xda, 0xd7, 0x51,
- 0x25, 0x69, 0xd4, 0x2a, 0x4a, 0x29, 0xa0, 0xec, 0xc2, 0x69, 0xd4, 0x84,
- 0x2e, 0xa4, 0x12, 0x9a, 0x02, 0xcb, 0xe7, 0x9d, 0xa9, 0xed, 0xb4, 0xfb,
- 0x2a, 0xb4, 0x2a, 0x57, 0xde, 0x88, 0x58, 0xe4, 0xbb, 0x93, 0x18, 0xdc,
- 0x0d, 0xc9, 0x90, 0x30, 0xcc, 0x02, 0xc9, 0x01, 0x04, 0xba, 0x6e, 0x9a,
- 0x0a, 0xf2, 0xdb, 0x92, 0x27, 0x8e, 0x88, 0x79, 0xf7, 0x0a, 0xd8, 0x85,
- 0xf7, 0x93, 0x5e, 0x2c, 0xb4, 0x6a, 0x7c, 0xb7, 0x3d, 0xdc, 0x85, 0xe8,
- 0x82, 0x0e, 0x60, 0xed, 0x09, 0xa1, 0x89, 0x69, 0xd2, 0x99, 0x29, 0x59,
- 0x20, 0x41, 0x38, 0x2e, 0x5c, 0x47, 0x9d, 0xd3, 0xe8, 0x4f, 0x65, 0x8c,
- 0x62, 0xb1, 0x47, 0x8d, 0xf0, 0x34, 0x7b, 0xd3, 0x07, 0x36, 0xf8, 0x36,
- 0xb1, 0x38, 0x33, 0xa4, 0x2b, 0x53, 0x12, 0xdd, 0xd4, 0xcb, 0x39, 0xcd,
- 0x41, 0x39, 0x5f, 0x85, 0xab, 0x6b, 0xcd, 0x4d, 0x86, 0xd0, 0xed, 0xa3,
- 0x6d, 0x71, 0xd2, 0x37, 0xaa, 0x45, 0xb1, 0xaa, 0x73, 0x13, 0xcf, 0xe2,
- 0x3a, 0x91, 0xc2, 0x99, 0x89, 0xc9, 0x19, 0x70, 0xf5, 0x0a, 0xe1, 0x55,
- 0x4c, 0x4a, 0x9f, 0x38, 0x30, 0xa7, 0xea, 0x09, 0xc1, 0x03, 0xa7, 0x50,
- 0x44, 0x98, 0xe8, 0x63, 0xb8, 0x1f, 0xbe, 0x7f, 0x3f, 0x49, 0xd7, 0xd4,
- 0xb8, 0xd3, 0xfb, 0x7c, 0xfd, 0x6d, 0xf1, 0x33, 0x4c, 0x3e, 0x91, 0x8f,
- 0x84, 0x94, 0x02, 0xb9, 0xe4, 0x3b, 0x67, 0x6e, 0xa5, 0x24, 0xc3, 0xa5,
- 0xb8, 0xa2, 0xa3, 0xe1, 0xdd, 0xc0, 0xd6, 0x2f, 0xa4, 0xec, 0x52, 0x05,
- 0x8a, 0xc7, 0x3f, 0xa2, 0xbe, 0x68, 0x83, 0x3a, 0xf7, 0xce, 0x57, 0x92,
- 0x00, 0x3f, 0x17, 0x92, 0x7c, 0x68, 0x18, 0x4d, 0xee, 0xd5, 0x76, 0x60,
- 0xa2, 0xad, 0x34, 0x76, 0xdf, 0xb4, 0x2e, 0xf4, 0xab, 0x43, 0x2f, 0x77,
- 0x57, 0x18, 0x44, 0xdf, 0xa9, 0xbe, 0xe1, 0xf4, 0xf3, 0xb1, 0x57, 0x50,
- 0x44, 0x60, 0xaa, 0x0d, 0xf8, 0x38, 0x51, 0x35, 0x34, 0xd7, 0x15, 0x03,
- 0x5a, 0x0c, 0x46, 0x47, 0xa2, 0x8d, 0xd1, 0x57, 0xd9, 0x5c, 0x49, 0xfd,
- 0x66, 0x06, 0x64, 0xed, 0xd3, 0xa2, 0xc1, 0x42, 0x96, 0xb4, 0x20, 0x82,
- 0x35, 0xa1, 0x8b, 0x56, 0xde, 0xc6, 0xa4, 0x2d, 0x3b, 0x6d, 0x49, 0x17,
- 0x59, 0x25, 0x08, 0xc2, 0x50, 0x91, 0x82, 0x10, 0x98, 0xf1, 0xc5, 0xd0,
- 0xac, 0xbf, 0x88, 0x79, 0xa0, 0x8a, 0x98, 0x83, 0x91, 0x0b, 0xb0, 0x9f,
- 0xdc, 0x9e, 0xa1, 0x8a, 0x32, 0x8b, 0x1f, 0x4b, 0x0a, 0x33, 0xc6, 0x63,
- 0x1c, 0xec, 0x21, 0x53, 0xac, 0xac, 0xb8, 0x3f, 0x99, 0x29, 0x1d, 0xb9,
- 0x00, 0x0d, 0x2b, 0x70, 0x06, 0x12, 0x1b, 0xb1, 0x92, 0xa6, 0x37, 0x7e,
- 0x0a, 0xf1, 0x58, 0xda, 0x01, 0xf1, 0x6b, 0xa4, 0x4b, 0x38, 0x68, 0xe3,
- 0x55, 0x21, 0x22, 0x88, 0xbe, 0xd0, 0x60, 0x59, 0xb2, 0xf1, 0x47, 0xa1,
- 0x40, 0x97, 0xe1, 0x25, 0x37, 0x20, 0xd1, 0x50, 0x39, 0x45, 0x05, 0x0d,
- 0xf0, 0xd9, 0x03, 0xaa, 0xc0, 0x85, 0xcc, 0xb4, 0x33, 0x13, 0xf4, 0xe1,
- 0xb7, 0x40, 0x29, 0x78, 0x60, 0x8c, 0x4e, 0x15, 0xa0, 0x7d, 0x56, 0x88,
- 0x04, 0x3f, 0xe1, 0x0f, 0x7f, 0x9a, 0xe7, 0x9f, 0x62, 0x69, 0xb5, 0x10,
- 0xab, 0xe6, 0xeb, 0x3a, 0x7f, 0xe9, 0xa6, 0x8a, 0xc7, 0x99, 0x97, 0x9c,
- 0xd6, 0x00, 0xed, 0x03, 0x49, 0xf8, 0x93, 0x82, 0x81, 0x59, 0x81, 0xde,
- 0x68, 0x92, 0x25, 0xd1, 0x73, 0x23, 0x4e, 0xdb, 0xe2, 0x81, 0x3e, 0x24,
- 0x87, 0x2a, 0x4f, 0xb1, 0xc0, 0x3e, 0xa1, 0xd6, 0x2e, 0xe8, 0xc4, 0x72,
- 0x0a, 0xb1, 0x33, 0xe0, 0xdd, 0x72, 0x74, 0x4d, 0x10, 0x31, 0xe8, 0x34,
- 0xe3, 0x88, 0xa4, 0x0f, 0x7b, 0x26, 0xec, 0x49, 0xa3, 0x8a, 0xde, 0x22,
- 0x83, 0x20, 0xbb, 0xe0, 0xad, 0x0c, 0xbf, 0x57, 0x91, 0x46, 0x1f, 0xc5,
- 0xe9, 0x9a, 0xf9, 0x06, 0x87, 0xeb, 0x93, 0x4a, 0x7d, 0x4d, 0xbe, 0xc4,
- 0x74, 0x52, 0xd9, 0x7b, 0xc5, 0xac, 0xd2, 0x5e, 0x30, 0xe4, 0x0a, 0xc8,
- 0x8b, 0x6e, 0x8c, 0x1b, 0x86, 0xac, 0xb9, 0xf4, 0xa6, 0x86, 0x18, 0x96,
- 0x3c, 0x3b, 0x34, 0x3a, 0xf1, 0x6c, 0xdc, 0x2b, 0x12, 0xe1, 0x82, 0xe1,
- 0x1c, 0xcb, 0xca, 0xa0, 0x14, 0xb6, 0xf9, 0xe1, 0x50, 0x0c, 0x0b, 0xdc,
- 0x4c, 0xba, 0xa4, 0xa7, 0x70, 0x8b, 0x30, 0x01, 0xa6, 0xe8, 0xe0, 0xde,
- 0x78, 0xbe, 0xbb, 0x81, 0xb7, 0x27, 0x62, 0x19, 0xf3, 0x6d, 0x22, 0xf2,
- 0x9f, 0xb2, 0xe0, 0xbd, 0xf8, 0xc8, 0x79, 0x61, 0x76, 0x4d, 0xc0, 0x14,
- 0xdd, 0x65, 0xdc, 0xda, 0x3e, 0x98, 0xe8, 0xc4, 0x41, 0x4c, 0x0e, 0x6a,
- 0xc4, 0x8c, 0xcd, 0x0b, 0xe3, 0xf8, 0xb2, 0xf6, 0xce, 0xb3, 0xc3, 0x69,
- 0x4b, 0xfb, 0x05, 0xed, 0xab, 0x76, 0x2b, 0x4c, 0x09, 0xff, 0xfa, 0x13,
- 0xb2, 0xaf, 0x71, 0x7e, 0xee, 0xa8, 0x9c, 0x7c, 0xcd, 0x23, 0xe3, 0x4f,
- 0x02, 0x47, 0x04, 0xbf, 0x12, 0x13, 0x1d, 0xf7, 0xf1, 0xbf, 0x9e, 0x16,
- 0x4d, 0xe8, 0x8f, 0x98, 0x97, 0x8b, 0x51, 0x5d, 0xc1, 0xbc, 0xd4, 0xfa,
- 0x1a, 0x8d, 0x0d, 0x08, 0x39, 0xb9, 0x04, 0x4f, 0xbb, 0x73, 0x05, 0xd1,
- 0x1a, 0xd0, 0xcf, 0x63, 0x5a, 0x0d, 0xd8, 0xa4, 0x4e, 0xa7, 0xbd, 0x59,
- 0x23, 0xe0, 0x85, 0x01, 0x3e, 0x3e, 0x05, 0x54, 0x2a, 0xe3, 0xf9, 0xb5,
- 0xf0, 0xbe, 0x61, 0x85, 0x6e, 0x05, 0x27, 0x4f, 0x69, 0x3a, 0x04, 0xde,
- 0x66, 0x53, 0xf9, 0xd0, 0x67, 0xc1, 0x18, 0x89, 0xf8, 0x43, 0x90, 0xf0,
- 0x7d, 0x07, 0x65, 0x33, 0x60, 0xf1, 0x69, 0x8a, 0xc0, 0xc6, 0xb3, 0x9d,
- 0x9d, 0x85, 0x57, 0x48, 0x4d, 0x96, 0x38, 0xa6, 0xf4, 0x8d, 0x6a, 0x38,
- 0xeb, 0xe2, 0xbb, 0x44, 0x65, 0x58, 0xd4, 0xe7, 0xdf, 0x3d, 0xa9, 0xbf,
- 0xbd, 0xc1, 0x1b, 0xcf, 0x9f, 0x3f, 0x8f, 0xe2, 0x73, 0x66, 0x31, 0x3e,
- 0x22, 0x7e, 0xd6, 0x72, 0x9e, 0xde, 0x3e, 0x9e, 0xc1, 0x16, 0x02, 0x05,
- 0x8e, 0xca, 0xc9, 0x25, 0xc3, 0xa5, 0x52, 0x8f, 0x1e, 0x86, 0x7d, 0xbf,
- 0xc1, 0x4a, 0x83, 0xe8, 0xe4, 0x35, 0x87, 0xd6, 0x0e, 0xdf, 0xe3, 0xdf,
- 0x50, 0x35, 0x61, 0x67, 0x2a, 0xc1, 0x8a, 0x50, 0x97, 0x71, 0x0a, 0xe3,
- 0xbc, 0xfd, 0xa6, 0x8d, 0xe2, 0xb0, 0x7a, 0x3a, 0x5c, 0xdf, 0x7e, 0xb9,
- 0xb1, 0x16, 0xa8, 0x1b, 0xc2, 0x36, 0x40, 0x89, 0xe3, 0xf5, 0xde, 0x08,
- 0xa4, 0x4c, 0x3c, 0x48, 0x31, 0x98, 0x31, 0x10, 0x88, 0x55, 0xac, 0x25,
- 0x12, 0xba, 0xbf, 0x12, 0x24, 0xbe, 0x38, 0xa9, 0x46, 0x59, 0xd6, 0x26,
- 0x02, 0x8e, 0xb6, 0x00, 0x0f, 0x4f, 0x3b, 0xca, 0x8a, 0xf6, 0xc0, 0xc2,
- 0xc7, 0x29, 0xd1, 0x96, 0x92, 0x29, 0x17, 0x02, 0xe3, 0x7d, 0x8a, 0x1d,
- 0x28, 0x83, 0x70, 0x5b, 0x27, 0x19, 0x55, 0x14, 0x27, 0x0c, 0x29, 0xac,
- 0x5a, 0x21, 0x42, 0xde, 0x34, 0xcb, 0x81, 0xe8, 0x91, 0x84, 0xbb, 0x2c,
- 0x5e, 0xa4, 0xa1, 0x30, 0x77, 0x85, 0x28, 0xa5, 0x94, 0x50, 0x4e, 0xa9,
- 0x3d, 0xbf, 0x3f, 0x3b, 0x33, 0x25, 0xcb, 0xf4, 0x27, 0x8c, 0xbf, 0x3f,
- 0x09, 0x93, 0xc8, 0x29, 0xe1, 0x66, 0xc8, 0x94, 0xc6, 0x56, 0xcd, 0x4b,
- 0xec, 0x33, 0xba, 0x6f, 0xd2, 0xe4, 0xa9, 0xb6, 0xe3, 0x31, 0xc0, 0x01,
- 0x1a, 0xe5, 0xb2, 0x01, 0x58, 0x1e, 0x0a, 0x59, 0x9c, 0x42, 0x77, 0xda,
- 0x28, 0x69, 0x38, 0x3c, 0xf1, 0x24, 0x98, 0x54, 0xa7, 0x99, 0xf8, 0x2a,
- 0xd5, 0x59, 0x27, 0x23, 0x34, 0x67, 0xc9, 0x16, 0x2d, 0xa8, 0x85, 0xfb,
- 0x8b, 0x9d, 0xad, 0xad, 0x7e, 0xb4, 0x3b, 0xd8, 0x74, 0x81, 0x8b, 0x92,
- 0x89, 0x07, 0x26, 0x29, 0x09, 0xfe, 0x1e, 0x9a, 0x11, 0x75, 0x71, 0xb7,
- 0x78, 0x46, 0x02, 0x61, 0xa4, 0xc5, 0xcb, 0xe8, 0x82, 0x08, 0x61, 0x99,
- 0xf4, 0xbe, 0xdb, 0xda, 0xdd, 0xdd, 0x7c, 0xb9, 0x77, 0x16, 0xef, 0x6e,
- 0x6d, 0x22, 0x9a, 0x11, 0x9b, 0x57, 0x36, 0x23, 0xd6, 0xad, 0x9f, 0x8d,
- 0xb2, 0x31, 0x43, 0x60, 0x4e, 0x26, 0xf7, 0xe1, 0x34, 0xaa, 0x5e, 0x31,
- 0x4b, 0xf3, 0xaa, 0x9a, 0x44, 0xd5, 0x47, 0xae, 0xc2, 0x5f, 0xaf, 0x3e,
- 0xb2, 0x8f, 0xa4, 0x27, 0x00, 0x44, 0x59, 0x40, 0x01, 0x37, 0x3b, 0x23,
- 0xd7, 0x41, 0x62, 0x4a, 0x7d, 0x05, 0x60, 0xc8, 0xec, 0x03, 0xfb, 0x03,
- 0xda, 0xa0, 0x42, 0xc1, 0x54, 0x65, 0xb5, 0xa2, 0x59, 0x87, 0x5a, 0x3d,
- 0x3a, 0x5c, 0xe3, 0x4d, 0xd3, 0xbd, 0xb4, 0xe5, 0xef, 0x3c, 0xd3, 0x3e,
- 0x57, 0x32, 0xfa, 0x37, 0x5a, 0x0e, 0xc6, 0x34, 0x55, 0x94, 0x26, 0x54,
- 0x38, 0xa9, 0xeb, 0x62, 0xcf, 0x8f, 0x02, 0x7a, 0x36, 0x1b, 0x16, 0x76,
- 0x9e, 0x1f, 0x41, 0x58, 0xa4, 0x29, 0xe9, 0x3d, 0xa4, 0xbc, 0x24, 0x3d,
- 0x3a, 0x04, 0xe2, 0x0f, 0x9b, 0xbd, 0x7a, 0xba, 0x1e, 0xd3, 0xb6, 0x05,
- 0x4a, 0xb4, 0xf4, 0x31, 0xe3, 0xcf, 0xf1, 0xc6, 0x2f, 0x7b, 0xc0, 0xb4,
- 0x78, 0xaa, 0x95, 0xba, 0xe6, 0x9e, 0x32, 0x74, 0x6d, 0xb1, 0x98, 0x64,
- 0xff, 0x5d, 0x87, 0xdb, 0x4e, 0x0b, 0x36, 0xa8, 0xb1, 0x01, 0x21, 0x4b,
- 0x65, 0x09, 0x67, 0x5e, 0xd9, 0x76, 0x35, 0xcb, 0x2e, 0xcd, 0xf9, 0xf4,
- 0x97, 0x4f, 0x50, 0xae, 0xe8, 0x75, 0xf4, 0xff, 0xa0, 0x12, 0x2c, 0xff,
- 0x2c, 0x93, 0x5b, 0x85, 0x10, 0xc7, 0x7f, 0xc2, 0x77, 0xb8, 0x3a, 0xd7,
- 0x5b, 0x31, 0xbf, 0xb7, 0x70, 0xc9, 0x02, 0xba, 0x83, 0xed, 0x16, 0xa5,
- 0xf1, 0x97, 0x71, 0xf5, 0x54, 0x6d, 0x67, 0x06, 0x36, 0xa6, 0x25, 0xb4,
- 0xfd, 0x00, 0x82, 0xb1, 0x34, 0x50, 0x25, 0x94, 0x9a, 0xaa, 0x40, 0x69,
- 0xdc, 0xe5, 0x5d, 0xe0, 0xf6, 0x49, 0xc6, 0x97, 0x69, 0x6c, 0x0a, 0xc9,
- 0x12, 0xff, 0xb2, 0xaf, 0xb0, 0x45, 0x75, 0xd3, 0x17, 0x99, 0x04, 0xdc,
- 0x31, 0xdc, 0xb6, 0xfc, 0x15, 0x75, 0x22, 0x26, 0x57, 0xb8, 0xa9, 0x79,
- 0xd7, 0x1c, 0xe1, 0x29, 0xd6, 0xf5, 0x92, 0x86, 0xe4, 0x74, 0x1c, 0xc2,
- 0x0c, 0x91, 0xbe, 0x97, 0x10, 0x85, 0x79, 0x4e, 0x7c, 0x43, 0x81, 0x3a,
- 0x82, 0x16, 0x6c, 0x25, 0x4d, 0x9a, 0xcb, 0x32, 0xc3, 0xc8, 0x54, 0x99,
- 0xd6, 0xf3, 0x52, 0xea, 0x3b, 0xb1, 0x18, 0x06, 0x4f, 0x1b, 0x47, 0x42,
- 0x02, 0xf7, 0x98, 0xa4, 0x54, 0xf1, 0xd3, 0xe4, 0xcd, 0xa0, 0xae, 0x08,
- 0x1e, 0x51, 0xa8, 0xe5, 0x3a, 0xcd, 0x4d, 0x27, 0x57, 0x37, 0x53, 0x46,
- 0xd1, 0x69, 0xc6, 0x85, 0xec, 0x0c, 0xcb, 0x5f, 0x34, 0x9c, 0xbc, 0x55,
- 0x77, 0xc6, 0xc9, 0xfa, 0x5d, 0x7c, 0x7b, 0x7b, 0x1b, 0xe3, 0x7d, 0x6e,
- 0x59, 0xc4, 0xc0, 0x53, 0x88, 0x57, 0x81, 0x0e, 0x3d, 0xf9, 0x7d, 0x51,
- 0x92, 0xf9, 0x29, 0x22, 0x4e, 0x7e, 0x7c, 0x79, 0x91, 0xd5, 0x84, 0x12,
- 0x22, 0x5c, 0x45, 0xaf, 0x89, 0xb8, 0x92, 0xe9, 0x90, 0xab, 0x47, 0x03,
- 0x5d, 0x01, 0xa2, 0xd8, 0xb5, 0x20, 0x0a, 0xf2, 0xa8, 0x4e, 0x11, 0x63,
- 0x09, 0x3b, 0x54, 0xee, 0x45, 0xf1, 0x9b, 0xa8, 0x77, 0x28, 0xab, 0x3d,
- 0x87, 0x27, 0xf6, 0x9a, 0x6b, 0xe1, 0x87, 0x83, 0xdd, 0x2d, 0x83, 0xae,
- 0xe6, 0x26, 0x90, 0x8b, 0x6d, 0xfa, 0x10, 0xd0, 0x13, 0x0a, 0xdc, 0x68,
- 0x9b, 0x6b, 0x1b, 0xea, 0xbb, 0x82, 0x55, 0x08, 0x1c, 0x39, 0x63, 0xc4,
- 0x78, 0x5a, 0x7a, 0x82, 0x39, 0x71, 0x9a, 0xb0, 0x09, 0x3c, 0xf7, 0x0b,
- 0x45, 0x84, 0x50, 0xf5, 0x4b, 0xe3, 0xd3, 0x7e, 0x82, 0x9c, 0xf0, 0x14,
- 0x41, 0x23, 0x2e, 0x1e, 0x94, 0x7a, 0x8e, 0x00, 0xb0, 0x5d, 0xb3, 0xb1,
- 0x2c, 0xc1, 0x9e, 0x1a, 0x0a, 0x5b, 0x69, 0x45, 0x50, 0xa8, 0x3f, 0x24,
- 0x4a, 0x8b, 0x64, 0x62, 0x41, 0x22, 0xd8, 0xfc, 0x11, 0x27, 0xee, 0x97,
- 0x0f, 0x77, 0x1f, 0xaa, 0x16, 0x12, 0x08, 0x97, 0xd1, 0xc3, 0x8e, 0x78,
- 0x45, 0x6f, 0x89, 0x5c, 0x3f, 0xfb, 0xea, 0x97, 0x49, 0x8d, 0xff, 0x7f,
- 0x49, 0xa8, 0x72, 0xbb, 0xa9, 0x8d, 0xec, 0x96, 0xd0, 0xfd, 0x62, 0x0e,
- 0xd9, 0x23, 0x04, 0xae, 0x25, 0x77, 0xdf, 0x88, 0x2a, 0x39, 0xda, 0x1c,
- 0x47, 0x75, 0xe8, 0x2e, 0xbd, 0xbe, 0x42, 0x1a, 0x05, 0xc5, 0xc5, 0x49,
- 0x70, 0x29, 0x6c, 0xb8, 0x04, 0x05, 0xd3, 0x12, 0xcf, 0x3d, 0xd5, 0x04,
- 0xc7, 0xda, 0x4c, 0xdc, 0x37, 0x2c, 0x49, 0x09, 0x3f, 0xfc, 0xfa, 0x98,
- 0xca, 0xfb, 0xe0, 0xae, 0xcb, 0x05, 0x77, 0x90, 0xe7, 0x4f, 0x7d, 0xbc,
- 0xad, 0x8b, 0xfd, 0x2a, 0xcb, 0x55, 0x8f, 0x49, 0x38, 0xde, 0x17, 0xcc,
- 0x57, 0x17, 0xb5, 0x2f, 0xb1, 0x25, 0x5d, 0x5c, 0xda, 0x69, 0x1a, 0xa2,
- 0xab, 0xbe, 0x9a, 0xd8, 0x82, 0xe9, 0x20, 0xbd, 0xe8, 0xeb, 0xaa, 0x51,
- 0x26, 0x95, 0x5a, 0xfd, 0xb8, 0xad, 0x5e, 0x91, 0xa9, 0x3d, 0xbe, 0xd5,
- 0x7d, 0x5e, 0x27, 0x77, 0xa9, 0x5f, 0x05, 0x22, 0x9f, 0x6f, 0xb3, 0x89,
- 0x63, 0x62, 0xb7, 0x82, 0x3b, 0x86, 0x74, 0x69, 0xa3, 0x9f, 0x3b, 0x81,
- 0x5e, 0x60, 0x78, 0x2f, 0x14, 0x28, 0x37, 0x0e, 0x07, 0x50, 0x5a, 0xff,
- 0x4b, 0x6a, 0x01, 0xe1, 0xfe, 0x20, 0xe3, 0x52, 0x81, 0x69, 0xdc, 0xc1,
- 0x4c, 0xb7, 0x45, 0xa9, 0x18, 0x0b, 0x0f, 0x87, 0xb9, 0x60, 0x9f, 0xa3,
- 0x57, 0xe8, 0x4b, 0x89, 0x9d, 0x61, 0xb9, 0xac, 0x9b, 0xa8, 0x24, 0x3e,
- 0x76, 0x56, 0x44, 0x05, 0x8c, 0x01, 0xc9, 0x10, 0x1e, 0x8e, 0xb3, 0xe6,
- 0x1c, 0xea, 0x31, 0xc7, 0x8d, 0x12, 0xf4, 0xc2, 0x5d, 0xa4, 0x40, 0xc8,
- 0xff, 0x68, 0x13, 0xef, 0xf3, 0x87, 0xa9, 0xb7, 0x2c, 0xf9, 0x16, 0x53,
- 0x8f, 0x7b, 0xac, 0x6a, 0x29, 0xd9, 0xe7, 0x4e, 0xcc, 0x90, 0x52, 0x9a,
- 0xd9, 0x5d, 0x6f, 0x62, 0x87, 0x41, 0xa1, 0x8b, 0x1c, 0xfa, 0xf9, 0xaf,
- 0xb5, 0xeb, 0xc4, 0x8c, 0x94, 0xaf, 0x89, 0x93, 0x0f, 0x0f, 0xc7, 0x01,
- 0x05, 0xda, 0x7b, 0xb7, 0xe5, 0x89, 0x76, 0x14, 0xc3, 0x11, 0x28, 0x92,
- 0x06, 0xfc, 0x5f, 0x33, 0x33, 0x5f, 0x50, 0xd1, 0x53, 0x1c, 0x1e, 0x4e,
- 0x11, 0x57, 0xc4, 0xaf, 0xe9, 0xad, 0xcf, 0xdc, 0x14, 0x8f, 0x5f, 0x1c,
- 0xe5, 0xf0, 0x73, 0xcf, 0x45, 0x8d, 0x16, 0x6b, 0x76, 0x1c, 0xa7, 0xb0,
- 0xac, 0xfa, 0xa1, 0x4c, 0x3d, 0x3e, 0xd2, 0x7f, 0x85, 0xfb, 0x27, 0xaa,
- 0x82, 0xb4, 0xd6, 0x6f, 0x12, 0x0c, 0x71, 0xe2, 0xe9, 0x6e, 0xd4, 0x5d,
- 0xce, 0x3a, 0xf7, 0x58, 0xf7, 0x0e, 0x7b, 0xa7, 0x06, 0xf7, 0xee, 0xff,
- 0xa4, 0xf5, 0x11, 0x3f, 0x5b, 0x36, 0xc0, 0x1c, 0x8e, 0x4a, 0xda, 0x57,
- 0x61, 0x45, 0x6a, 0x44, 0xb5, 0xbc, 0xa8, 0xf1, 0x74, 0xcc, 0x8e, 0x20,
- 0xde, 0x50, 0x47, 0xc4, 0x9c, 0xba, 0x09, 0xdb, 0xd2, 0x19, 0x57, 0xf8,
- 0x7e, 0x6e, 0x75, 0x3b, 0xf6, 0xba, 0x99, 0x3a, 0x79, 0x64, 0xc2, 0x05,
- 0x9c, 0x6a, 0x38, 0x33, 0xcc, 0x94, 0x9d, 0xec, 0xe7, 0x5f, 0xd6, 0xee,
- 0x55, 0x6b, 0x2f, 0x41, 0x9a, 0xdc, 0x0d, 0x2c, 0x6e, 0xd1, 0x65, 0x1d,
- 0x7e, 0xf5, 0x73, 0xfe, 0x93, 0xae, 0xb2, 0xe5, 0xdf, 0x36, 0xcc, 0xf3,
- 0x84, 0x77, 0xe9, 0x3d, 0x0a, 0xd2, 0x2e, 0xd2, 0x12, 0x02, 0xea, 0x81,
- 0x6b, 0x90, 0x81, 0xba, 0xe1, 0x28, 0x07, 0xf6, 0x91, 0x6e, 0xb5, 0x80,
- 0x7a, 0xd7, 0xaf, 0xc1, 0xb8, 0x58, 0x6c, 0xd2, 0x44, 0x83, 0xa4, 0x37,
- 0x19, 0xc6, 0x0b, 0xbb, 0x0c, 0x7b, 0x55, 0x02, 0xa1, 0x98, 0xb7, 0x66,
- 0xe9, 0xbb, 0xa1, 0x39, 0x4a, 0xcc, 0x22, 0xf7, 0x5b, 0x74, 0x51, 0x16,
- 0xb7, 0x15, 0x19, 0x24, 0x1a, 0x7b, 0x48, 0xd8, 0xd5, 0x7d, 0xed, 0xc1,
- 0x6d, 0x01, 0x39, 0x26, 0xa6, 0xd5, 0xd4, 0x9b, 0xf3, 0xb7, 0x27, 0xdc,
- 0x74, 0x96, 0x91, 0x9f, 0x10, 0x0f, 0x40, 0xa6, 0x3b, 0xbf, 0x98, 0x66,
- 0x35, 0x6a, 0x88, 0x35, 0x4b, 0x6f, 0xbd, 0x10, 0x3c, 0x78, 0x2a, 0x4a,
- 0x1a, 0x13, 0xcf, 0xc9, 0x2c, 0x94, 0x25, 0x23, 0xa6, 0x84, 0x83, 0x16,
- 0xed, 0xd8, 0x40, 0xcb, 0x5b, 0x3b, 0x87, 0x9c, 0x55, 0x4e, 0xaa, 0xec,
- 0x6b, 0xdc, 0x09, 0x7c, 0x22, 0xe0, 0xed, 0x31, 0x7a, 0x22, 0x3a, 0x97,
- 0x26, 0xd4, 0x0b, 0xcf, 0x90, 0x0e, 0x15, 0x5f, 0x73, 0x53, 0x13, 0xb4,
- 0x75, 0xd2, 0x54, 0x76, 0x3d, 0xc4, 0x26, 0xa3, 0xfc, 0xda, 0x0e, 0xc7,
- 0xae, 0xfe, 0x8b, 0x9a, 0x17, 0x6a, 0x80, 0x92, 0xcd, 0x33, 0x2f, 0x31,
- 0x72, 0xa1, 0x46, 0xbe, 0x5f, 0x73, 0x2b, 0x2a, 0x98, 0x46, 0x10, 0x4c,
- 0xee, 0x5c, 0xc3, 0x70, 0xd0, 0x2e, 0xae, 0x18, 0x69, 0x72, 0x64, 0x56,
- 0x80, 0x45, 0x18, 0x46, 0x9a, 0xca, 0xa9, 0x69, 0x33, 0x81, 0xcd, 0x60,
- 0x74, 0xb4, 0x09, 0xd1, 0x79, 0x8b, 0xa3, 0x77, 0x3b, 0x16, 0x1c, 0x0b,
- 0xcb, 0xf6, 0x39, 0xae, 0x6c, 0x5b, 0x5b, 0xf5, 0xc7, 0x12, 0x9a, 0x36,
- 0xe1, 0x67, 0x53, 0x5f, 0xdb, 0xa2, 0x19, 0x23, 0xf6, 0x13, 0x05, 0x24,
- 0x66, 0xdc, 0x77, 0x72, 0x9c, 0x32, 0x8c, 0x6b, 0x36, 0x5c, 0x10, 0xec,
- 0x62, 0x9a, 0xa6, 0xe5, 0x95, 0x7a, 0x24, 0x58, 0xcb, 0xf4, 0xa0, 0xc8,
- 0xc5, 0xdb, 0xf8, 0x3f, 0x62, 0x56, 0x1b, 0xa8, 0xfc, 0x65, 0x8e, 0x38,
- 0x4a, 0x82, 0x57, 0xba, 0x12, 0x8f, 0x59, 0x3c, 0x8d, 0x93, 0x1c, 0x16,
- 0x8f, 0x2d, 0x93, 0xab, 0x4f, 0x30, 0xfc, 0xe7, 0x93, 0x62, 0x5e, 0xdd,
- 0xaf, 0x78, 0x35, 0x26, 0xe4, 0x83, 0x88, 0xa4, 0x13, 0x2f, 0x06, 0x5e,
- 0x49, 0x05, 0x66, 0xaf, 0x09, 0xe3, 0x1a, 0xcc, 0xf3, 0x4f, 0x56, 0x05,
- 0xe0, 0x3a, 0xe5, 0x8a, 0xe1, 0x2a, 0x3e, 0xb5, 0xc9, 0xbf, 0xe2, 0x7c,
- 0xf9, 0x7f, 0xb8, 0x9f, 0x0d, 0x52, 0x99, 0xe0, 0xd4, 0xd8, 0x65, 0xf2,
- 0x38, 0x9f, 0x89, 0x4d, 0x89, 0x49, 0x3a, 0xfb, 0x87, 0x6a, 0x2e, 0x8d,
- 0x19, 0x10, 0xaf, 0x4b, 0x6e, 0x07, 0xa4, 0x79, 0x49, 0x36, 0x39, 0x98,
- 0x04, 0x4d, 0x47, 0xf1, 0xb9, 0xf8, 0x0e, 0xe8, 0xb6, 0x95, 0x9c, 0x9e,
- 0x28, 0x3a, 0x2b, 0xb8, 0x5b, 0xaa, 0xbd, 0x88, 0x93, 0x46, 0xc7, 0x93,
- 0xcb, 0xa2, 0xb8, 0x48, 0xca, 0x30, 0x95, 0xa9, 0xd3, 0xe3, 0x45, 0xca,
- 0x1d, 0x24, 0x39, 0x83, 0xc6, 0xca, 0xcf, 0x2f, 0xf9, 0xcd, 0x01, 0xc7,
- 0x03, 0x5d, 0x9f, 0x49, 0x28, 0xc7, 0x74, 0x32, 0xb6, 0x53, 0x8f, 0x1a,
- 0xf3, 0xa0, 0x9e, 0xcd, 0xb8, 0x55, 0xfd, 0x80, 0x73, 0x07, 0x0b, 0xd6,
- 0xd3, 0xdb, 0x38, 0x00, 0x3b, 0x62, 0x83, 0xc6, 0x58, 0x9c, 0x82, 0x85,
- 0x00, 0x94, 0x84, 0xae, 0x0e, 0x15, 0x49, 0x89, 0xb1, 0x7e, 0x95, 0x2f,
- 0x1d, 0x58, 0x02, 0x3f, 0x03, 0x36, 0x24, 0x47, 0xac, 0xdc, 0x70, 0x4e,
- 0x21, 0x09, 0x25, 0xa9, 0xe3, 0x5a, 0xd2, 0x70, 0x1e, 0x47, 0x3d, 0xd6,
- 0x82, 0xe1, 0x5f, 0x4b, 0x18, 0xcd, 0xcd, 0xd7, 0xf0, 0x9f, 0x75, 0x51,
- 0x4c, 0x3e, 0x1f, 0x4d, 0xc7, 0x48, 0x86, 0xa5, 0x06, 0x5a, 0xda, 0x9d,
- 0xc1, 0xf7, 0x6a, 0xdb, 0xf1, 0xe9, 0x5f, 0xd4, 0xad, 0xeb, 0x76, 0x41,
- 0x5a, 0x83, 0xed, 0xf4, 0x63, 0x2f, 0x00, 0x7e, 0xfd, 0x98, 0x06, 0xbe,
- 0x26, 0xfe, 0x20, 0xdd, 0x3e, 0x3e, 0xa7, 0x9f, 0x48, 0xaf, 0xc0, 0xc0,
- 0xf1, 0x69, 0xd8, 0xfc, 0xe9, 0x24, 0xbd, 0xe2, 0xdd, 0xda, 0x3f, 0x39,
- 0xfa, 0xe6, 0xe8, 0xc4, 0xbb, 0xd9, 0xbf, 0x1e, 0x0e, 0xd7, 0x3f, 0xa5,
- 0xe5, 0x45, 0x5a, 0x16, 0xd5, 0x1a, 0x2e, 0x0f, 0x83, 0x90, 0xf8, 0xa4,
- 0x29, 0xaf, 0x70, 0x2e, 0xbc, 0x5b, 0x8b, 0x99, 0x9a, 0xb0, 0x1d, 0xed,
- 0xf3, 0x8c, 0x7c, 0x52, 0x1a, 0x68, 0x12, 0x2c, 0x82, 0xd4, 0x0c, 0xd1,
- 0xf5, 0x3d, 0x2a, 0x53, 0x0a, 0x86, 0x24, 0x01, 0x6c, 0x75, 0x02, 0xb6,
- 0x8c, 0xa2, 0x57, 0xcc, 0xa4, 0x5c, 0xc4, 0x8a, 0x12, 0xdc, 0xae, 0xc2,
- 0x7b, 0x65, 0x46, 0xe8, 0x71, 0xd1, 0x2b, 0xf9, 0x28, 0x41, 0xe8, 0x20,
- 0x99, 0x18, 0x91, 0x9d, 0x4d, 0xc7, 0xd3, 0xbf, 0xc4, 0x07, 0xc3, 0xf8,
- 0xd5, 0xd1, 0xc9, 0xd1, 0xd7, 0x07, 0xe7, 0x47, 0xdc, 0xdb, 0x51, 0x83,
- 0x0a, 0x61, 0xdd, 0xd3, 0xa4, 0x94, 0xfe, 0x45, 0x28, 0x13, 0x99, 0xa6,
- 0x76, 0x51, 0x9d, 0x71, 0xe3, 0x6d, 0xdb, 0x3e, 0x26, 0x41, 0x6b, 0xb5,
- 0xa6, 0xf2, 0x9c, 0xf0, 0x70, 0x70, 0xba, 0x27, 0x53, 0x99, 0xaa, 0xb7,
- 0x82, 0x64, 0x02, 0x5a, 0x4f, 0x15, 0x7d, 0xc8, 0xb1, 0x8a, 0x37, 0x33,
- 0x18, 0x38, 0xbc, 0x7a, 0xd7, 0x6f, 0x69, 0x49, 0xeb, 0xb4, 0x5e, 0xff,
- 0xb5, 0x22, 0x8d, 0x9e, 0xf7, 0x4f, 0x55, 0x4f, 0xcb, 0x40, 0x3d, 0xdc,
- 0x9e, 0xde, 0x23, 0x75, 0xce, 0x46, 0x97, 0x04, 0x39, 0x08, 0x55, 0x35,
- 0x69, 0xf0, 0x26, 0xb5, 0x16, 0x0d, 0x3b, 0xa0, 0x14, 0xe4, 0x8c, 0x34,
- 0xc5, 0x57, 0xf4, 0x60, 0xab, 0x93, 0x9c, 0x83, 0x5c, 0x95, 0xdb, 0x2e,
- 0x73, 0x01, 0xa8, 0x51, 0xd2, 0x70, 0xaa, 0xd1, 0x75, 0x3a, 0x35, 0x00,
- 0xda, 0x98, 0x81, 0x4b, 0x69, 0x9e, 0x8c, 0x88, 0x23, 0x50, 0xbf, 0x24,
- 0x7d, 0x2f, 0x52, 0x72, 0xd0, 0xa0, 0x39, 0x5d, 0xf8, 0xd9, 0x7d, 0x35,
- 0x35, 0xda, 0x2a, 0xa9, 0x74, 0x94, 0x52, 0xed, 0x09, 0xcb, 0x69, 0x40,
- 0x45, 0x49, 0x4e, 0x6a, 0xac, 0x9f, 0x0a, 0x8b, 0x10, 0x32, 0x53, 0x2f,
- 0xf1, 0xdd, 0xf6, 0xa9, 0x33, 0xa9, 0x13, 0x9c, 0xa5, 0x41, 0x3f, 0xe2,
- 0x2e, 0xda, 0x62, 0xc4, 0xe1, 0x0c, 0x97, 0xf1, 0x21, 0xb7, 0x59, 0x80,
- 0xce, 0x83, 0x85, 0xab, 0xa1, 0x22, 0xfd, 0x50, 0x61, 0xe9, 0x2f, 0x6e,
- 0x98, 0xc7, 0xbb, 0xba, 0x9c, 0xff, 0xd2, 0x90, 0xa1, 0x6f, 0xba, 0xe7,
- 0xc9, 0x30, 0xcc, 0x38, 0xd2, 0x9b, 0x56, 0x2b, 0x84, 0xc3, 0xd9, 0xd1,
- 0x8e, 0x08, 0x6d, 0x74, 0xb0, 0xc5, 0xfe, 0x82, 0xfa, 0x57, 0xbf, 0x79,
- 0xb1, 0xa9, 0xcb, 0x8f, 0xd3, 0x99, 0xd7, 0x93, 0x6d, 0xf5, 0xb5, 0xf6,
- 0x6e, 0x34, 0xe6, 0x80, 0x62, 0x76, 0x48, 0xe6, 0x8d, 0x7a, 0xa7, 0x8e,
- 0xce, 0xde, 0x9f, 0xd3, 0x47, 0x4e, 0xf0, 0x2f, 0x92, 0x61, 0x58, 0x85,
- 0xa0, 0xf0, 0xa5, 0xd1, 0x34, 0x66, 0x71, 0xa7, 0x94, 0x48, 0x65, 0x12,
- 0x9d, 0xb5, 0x3c, 0x89, 0x2b, 0xe1, 0xa4, 0x97, 0x9e, 0x48, 0x07, 0xda,
- 0x35, 0xaf, 0xe8, 0xb9, 0xc6, 0xc2, 0x58, 0x53, 0xaa, 0x82, 0x73, 0x10,
- 0xc4, 0x62, 0x9a, 0x05, 0x97, 0xf3, 0x69, 0xd6, 0xc4, 0x29, 0xfe, 0x12,
- 0x8d, 0x04, 0xe1, 0xc9, 0x8e, 0x9b, 0xc8, 0x22, 0xd4, 0xe3, 0x90, 0xf8,
- 0x56, 0x54, 0x66, 0x57, 0xd7, 0xb0, 0x13, 0x30, 0x8f, 0x81, 0x5d, 0x27,
- 0x7f, 0x82, 0x01, 0x99, 0xa8, 0x81, 0x88, 0x9f, 0x23, 0x81, 0xaa, 0xb6,
- 0x2d, 0x13, 0xd7, 0x82, 0x5c, 0x2e, 0x01, 0x34, 0x79, 0x4d, 0x7d, 0x41,
- 0x29, 0x66, 0x04, 0x39, 0xaa, 0x94, 0xe6, 0xf4, 0x26, 0x2f, 0x1b, 0x80,
- 0x2a, 0xb1, 0xfb, 0xda, 0x3d, 0xfd, 0x5e, 0x5a, 0x91, 0xb0, 0x12, 0xaf,
- 0x7d, 0x4b, 0x13, 0xea, 0xd4, 0x43, 0x86, 0xe8, 0x05, 0x6b, 0x9d, 0x62,
- 0x51, 0xe6, 0x81, 0x83, 0x0c, 0x84, 0x57, 0x79, 0xcb, 0x0b, 0x95, 0x6d,
- 0x0b, 0x18, 0x5e, 0xc8, 0x1b, 0x6d, 0x94, 0xeb, 0xf4, 0x0e, 0xed, 0xba,
- 0x0c, 0xa3, 0x90, 0x32, 0x15, 0x26, 0x0e, 0xb5, 0xbd, 0x17, 0x7e, 0x2b,
- 0x42, 0x5c, 0xc5, 0x22, 0xcb, 0x09, 0xdb, 0x36, 0x58, 0xb0, 0xab, 0xb2,
- 0xc8, 0x04, 0xd3, 0x08, 0xec, 0xc0, 0x69, 0x56, 0x74, 0x7c, 0x76, 0xf3,
- 0xac, 0x99, 0x1c, 0xc6, 0xee, 0x56, 0xd2, 0xdd, 0x80, 0xaa, 0xed, 0x10,
- 0x22, 0xd7, 0x9b, 0xc3, 0xb7, 0x69, 0xba, 0xe8, 0xac, 0x34, 0xb9, 0x99,
- 0xc8, 0x3b, 0xde, 0xf7, 0x5f, 0xd1, 0xe4, 0xc8, 0x24, 0xa1, 0x37, 0x48,
- 0x92, 0x20, 0x14, 0xf1, 0x95, 0xd8, 0xd5, 0xc2, 0xcb, 0x17, 0x29, 0x7c,
- 0x31, 0x2b, 0xca, 0x56, 0xf0, 0xce, 0x4b, 0x4c, 0x03, 0xfe, 0x1b, 0x5d,
- 0xab, 0x65, 0x8d, 0x2f, 0x52, 0x06, 0x16, 0xbe, 0x40, 0xb0, 0x4d, 0x35,
- 0x5f, 0xfe, 0x9c, 0x1d, 0x12, 0x9f, 0x91, 0xae, 0x83, 0xb9, 0x55, 0x5c,
- 0x12, 0x5f, 0x94, 0x7e, 0x46, 0xf3, 0xc8, 0x40, 0x2f, 0xeb, 0xa3, 0x49,
- 0x75, 0xb3, 0x74, 0x78, 0xcb, 0xd9, 0x82, 0xa5, 0x12, 0x9c, 0x9c, 0x37,
- 0xab, 0x1b, 0xde, 0xf7, 0xb3, 0xbe, 0x33, 0xe7, 0xb0, 0xa8, 0xa9, 0x6e,
- 0x82, 0xa2, 0xe6, 0x91, 0xb2, 0x66, 0xf8, 0x8d, 0x49, 0x62, 0x16, 0x99,
- 0xe2, 0xc1, 0xad, 0x23, 0x20, 0x8f, 0xd0, 0xf7, 0xd1, 0x42, 0x46, 0xee,
- 0x06, 0x10, 0x2c, 0x7e, 0x4c, 0x14, 0x05, 0x8d, 0x91, 0x33, 0xf0, 0x7d,
- 0x11, 0x2e, 0x67, 0x07, 0xc3, 0x6f, 0x5a, 0x62, 0xc5, 0x13, 0x24, 0x3e,
- 0xb8, 0x3d, 0xa6, 0x8c, 0x32, 0xf3, 0xe2, 0x58, 0xc1, 0xf3, 0x06, 0xb4,
- 0x7c, 0xc4, 0x79, 0x83, 0x89, 0x78, 0xe7, 0xcd, 0x23, 0xed, 0xa2, 0xf3,
- 0x16, 0x60, 0x94, 0x63, 0x75, 0x86, 0x38, 0x27, 0x2e, 0xa7, 0x53, 0x46,
- 0xa5, 0xf5, 0x81, 0xa3, 0x46, 0x27, 0x0d, 0xf3, 0x0e, 0xe8, 0x68, 0xf9,
- 0x35, 0x40, 0x34, 0xcf, 0x65, 0x0e, 0x1a, 0xbd, 0xe0, 0x9d, 0x33, 0xdd,
- 0xcf, 0xa5, 0x0f, 0x9a, 0x1c, 0x50, 0xef, 0x9c, 0x91, 0xfd, 0xd6, 0xc1,
- 0xac, 0xcb, 0x9e, 0x1a, 0xd8, 0xaf, 0x27, 0x9e, 0x1a, 0xcd, 0x3b, 0xeb,
- 0x3a, 0x35, 0x2e, 0x78, 0x4e, 0x60, 0xab, 0x58, 0xdb, 0x49, 0x2a, 0x47,
- 0xb9, 0xb1, 0x49, 0x58, 0x01, 0xac, 0xcc, 0xbe, 0x01, 0x23, 0x2a, 0x47,
- 0x7e, 0xf4, 0xcd, 0x60, 0x5f, 0xb9, 0xf5, 0xe8, 0x64, 0x9c, 0x4b, 0x31,
- 0xe9, 0x78, 0x40, 0xab, 0x20, 0xd7, 0x96, 0x0b, 0x86, 0x87, 0x9c, 0x15,
- 0xc6, 0xe1, 0xd6, 0x49, 0x84, 0x10, 0xb6, 0xaa, 0x14, 0x53, 0xdf, 0xa3,
- 0x66, 0xbe, 0xdd, 0xa3, 0x48, 0xff, 0xf7, 0xe5, 0x34, 0x2c, 0x67, 0xaa,
- 0x6d, 0x81, 0x84, 0x76, 0x06, 0x29, 0x5f, 0xa8, 0xc9, 0x81, 0xca, 0x8e,
- 0xf6, 0xeb, 0xc2, 0x34, 0x9c, 0x9a, 0x32, 0xfc, 0x1c, 0xbf, 0x0b, 0xc2,
- 0xf4, 0xa0, 0xad, 0x25, 0x01, 0xd0, 0x84, 0x10, 0xdb, 0x24, 0x58, 0x48,
- 0xca, 0x4e, 0xa0, 0x35, 0x27, 0x27, 0xc5, 0xa8, 0x0a, 0x0f, 0xda, 0xc0,
- 0x05, 0x16, 0xb0, 0x44, 0xe4, 0xd3, 0x9c, 0x73, 0xa2, 0xeb, 0xad, 0xad,
- 0xc9, 0x41, 0x64, 0x38, 0x6e, 0x0f, 0x93, 0xfa, 0x79, 0x66, 0xb6, 0xb1,
- 0x02, 0xa2, 0x50, 0xe4, 0x04, 0x77, 0x83, 0x6e, 0x22, 0x09, 0x59, 0x3f,
- 0x85, 0xa7, 0x43, 0x34, 0x59, 0xbe, 0x09, 0x74, 0x5d, 0x34, 0xe2, 0xf1,
- 0xcf, 0x5a, 0xbd, 0xb5, 0xc6, 0x79, 0x15, 0x93, 0x47, 0xe5, 0x12, 0xa1,
- 0x37, 0xf7, 0xcd, 0x5f, 0x3d, 0x13, 0xfd, 0xd5, 0xbb, 0xa1, 0x5e, 0x0d,
- 0x96, 0xea, 0x55, 0xca, 0xf0, 0x06, 0xdc, 0xd9, 0x1e, 0x1e, 0x31, 0xd8,
- 0x38, 0x40, 0xb2, 0xb2, 0x98, 0x5f, 0x5d, 0xcb, 0x90, 0x7e, 0x4f, 0x4d,
- 0xf8, 0x84, 0x87, 0x68, 0x93, 0x30, 0x5c, 0x44, 0x5a, 0x52, 0xec, 0x07,
- 0x1d, 0xd1, 0xce, 0xdc, 0xa2, 0x55, 0xb6, 0x75, 0xc9, 0xc1, 0x1c, 0x80,
- 0x92, 0x56, 0x10, 0x1b, 0x9c, 0x86, 0x34, 0x76, 0xc4, 0x0c, 0x76, 0xea,
- 0x8e, 0x28, 0x28, 0xf6, 0x0a, 0x3a, 0x4b, 0x3d, 0xe2, 0x74, 0xdc, 0x40,
- 0xe0, 0x6c, 0x55, 0xc0, 0x87, 0xa5, 0x7a, 0x6a, 0x6d, 0xe9, 0xdd, 0x6b,
- 0x10, 0x35, 0xad, 0xaf, 0x37, 0x96, 0xcd, 0x51, 0xc1, 0x01, 0x66, 0x37,
- 0x3b, 0x31, 0xce, 0x40, 0x5d, 0x2e, 0xfa, 0xd3, 0x67, 0xf4, 0xd3, 0x81,
- 0xb7, 0x7b, 0x1e, 0xa8, 0xc4, 0xdf, 0xe7, 0x60, 0x25, 0x56, 0xb6, 0x61,
- 0x13, 0x16, 0x3c, 0xe5, 0x63, 0x6c, 0xf2, 0x4b, 0x8a, 0x94, 0xf6, 0x6c,
- 0xc5, 0x26, 0x1e, 0x9c, 0xb7, 0x88, 0x3b, 0xca, 0x49, 0xff, 0x91, 0x57,
- 0x0d, 0x02, 0x4a, 0x76, 0x33, 0x73, 0x70, 0x7b, 0x3b, 0xc0, 0x49, 0x66,
- 0xce, 0xfb, 0x42, 0xbb, 0x30, 0x1f, 0x35, 0x34, 0x8c, 0x0b, 0x02, 0x90,
- 0x2b, 0x80, 0x53, 0x66, 0xb1, 0xbe, 0xc5, 0xe7, 0x6e, 0x9a, 0x7c, 0x12,
- 0xe5, 0x72, 0x47, 0x98, 0x2b, 0xf6, 0x20, 0x5b, 0x91, 0xd9, 0xfa, 0x11,
- 0xa1, 0x82, 0xd9, 0x75, 0x36, 0x38, 0x51, 0x94, 0xfe, 0xda, 0xf4, 0x11,
- 0x42, 0x4e, 0xe3, 0xef, 0x84, 0x50, 0x50, 0xb4, 0x3e, 0xc0, 0xf5, 0x0f,
- 0x2b, 0xf8, 0x00, 0xcd, 0xc4, 0xbc, 0xfb, 0xfb, 0x26, 0x5c, 0x37, 0xe9,
- 0xbd, 0xb9, 0x31, 0xd8, 0x1c, 0x6c, 0x0d, 0xb6, 0x9f, 0xc2, 0x68, 0xf6,
- 0x88, 0x2d, 0x66, 0x34, 0xfd, 0xd8, 0xbf, 0x07, 0xa3, 0x3d, 0xfb, 0x4d,
- 0x18, 0xed, 0xd9, 0xbf, 0x0d, 0xa3, 0x3d, 0xfb, 0x37, 0x63, 0x34, 0xa1,
- 0xf7, 0x56, 0xb2, 0xb1, 0xb3, 0xb7, 0x93, 0xee, 0x6c, 0xed, 0xed, 0xed,
- 0x3e, 0xdb, 0xfc, 0x35, 0xd9, 0x6d, 0xc7, 0x63, 0xb7, 0x67, 0xff, 0x2e,
- 0xec, 0x26, 0x86, 0xbf, 0x61, 0xb6, 0xd4, 0x63, 0xb7, 0xa1, 0xe4, 0x72,
- 0x6a, 0xb3, 0x0c, 0x64, 0x0c, 0x7d, 0x8b, 0x53, 0x05, 0xa4, 0xa8, 0x51,
- 0x6b, 0x9b, 0xdc, 0x5e, 0x43, 0x1d, 0x3d, 0xa7, 0x0d, 0xe0, 0x80, 0x0e,
- 0x7a, 0x7c, 0x16, 0x99, 0x09, 0x38, 0x5c, 0x63, 0xc1, 0xd0, 0xc9, 0xfe,
- 0x09, 0x86, 0x0d, 0x61, 0x8d, 0x67, 0xb8, 0x7e, 0xae, 0x83, 0xaa, 0x2c,
- 0xd8, 0x59, 0x08, 0xf1, 0x1c, 0x08, 0xb7, 0xb7, 0x8f, 0xe4, 0x8a, 0xf9,
- 0xf1, 0x2f, 0x82, 0x08, 0x37, 0x69, 0x02, 0xb7, 0xb1, 0x9d, 0xd2, 0xbf,
- 0x03, 0x9b, 0x2a, 0xc5, 0x37, 0x5f, 0x6e, 0x0d, 0x36, 0x9f, 0xbd, 0x40,
- 0x5c, 0xb2, 0xbe, 0xfd, 0xfb, 0xd6, 0x72, 0xa1, 0x95, 0x36, 0xbb, 0x4a,
- 0x20, 0xa5, 0xc9, 0xac, 0xcd, 0xef, 0x86, 0xe4, 0x06, 0xf1, 0xaa, 0xc9,
- 0x23, 0x71, 0x18, 0x75, 0x21, 0x9f, 0x02, 0xa3, 0x12, 0x67, 0xb6, 0xf1,
- 0xe1, 0x16, 0xf0, 0x69, 0x71, 0xbd, 0xa0, 0xfb, 0xef, 0x90, 0xfc, 0xb8,
- 0x55, 0xab, 0x61, 0x2b, 0xda, 0xcc, 0x06, 0xc9, 0xef, 0x55, 0xf1, 0x86,
- 0xa4, 0x66, 0x8c, 0x4e, 0xcc, 0x98, 0x3a, 0x63, 0x2e, 0xaf, 0xf9, 0x34,
- 0x27, 0x21, 0x3f, 0x71, 0x15, 0x57, 0xf8, 0xb7, 0xc2, 0x1c, 0x2f, 0x2b,
- 0x3c, 0x60, 0x24, 0xd3, 0xf2, 0xb8, 0x51, 0xc3, 0xf0, 0xcc, 0xa7, 0x84,
- 0x3e, 0xd8, 0x45, 0x86, 0x66, 0x68, 0xe0, 0x37, 0xa1, 0x83, 0x19, 0xfd,
- 0xd7, 0x26, 0x02, 0x22, 0x92, 0x3d, 0xb4, 0x7e, 0xfc, 0xda, 0x3e, 0x58,
- 0x2c, 0xe1, 0x26, 0x13, 0x8c, 0x98, 0xc0, 0xea, 0x74, 0x73, 0xa5, 0x78,
- 0x71, 0x16, 0x6f, 0xd6, 0x9c, 0x78, 0x0f, 0x25, 0x51, 0x50, 0x1f, 0x63,
- 0xc4, 0xb2, 0x0b, 0x40, 0x19, 0x52, 0xf7, 0x04, 0xb7, 0x6c, 0xd3, 0x49,
- 0x49, 0x51, 0x7b, 0x93, 0xc2, 0x08, 0x32, 0x44, 0x19, 0x4d, 0x53, 0x74,
- 0x29, 0x64, 0xd5, 0x34, 0x74, 0x2d, 0xa2, 0x99, 0xa5, 0x8a, 0x3a, 0x4d,
- 0xc9, 0xc7, 0x86, 0x47, 0xa0, 0x61, 0xee, 0xf9, 0xa3, 0xd9, 0x14, 0x7c,
- 0xc0, 0x14, 0x3d, 0x0a, 0x77, 0x11, 0xfe, 0x5e, 0x5a, 0x10, 0x3c, 0xcd,
- 0x49, 0xa7, 0x54, 0xed, 0xb6, 0xcb, 0x03, 0xf6, 0xdb, 0x62, 0x2b, 0xd0,
- 0x4c, 0x31, 0x2b, 0x61, 0x3e, 0xab, 0xa8, 0x88, 0x94, 0x01, 0x81, 0xd9,
- 0xb5, 0x4f, 0x5f, 0x05, 0xb1, 0xfc, 0xa6, 0xb8, 0x4d, 0x6f, 0x3a, 0x20,
- 0xf4, 0x1b, 0x0d, 0xcc, 0x1a, 0xbd, 0x9c, 0x71, 0x6e, 0x18, 0xef, 0xaf,
- 0x4c, 0x0b, 0x96, 0x2c, 0xbf, 0x4e, 0x11, 0x89, 0x40, 0x8a, 0x23, 0xc8,
- 0xd7, 0x14, 0xc8, 0xc6, 0x2d, 0x0b, 0xca, 0x2d, 0x52, 0x39, 0x0f, 0x8b,
- 0xb8, 0xc9, 0x92, 0x36, 0x97, 0x89, 0x78, 0x6a, 0x1e, 0xc0, 0xdf, 0x5d,
- 0x28, 0xff, 0xf6, 0xa7, 0xff, 0xd9, 0x56, 0x83, 0xfb, 0x5f, 0x91, 0xa7,
- 0x66, 0x3e, 0x9d, 0x09, 0xd6, 0xe2, 0x03, 0xb0, 0x6f, 0x11, 0xb9, 0x3c,
- 0xbf, 0x25, 0x38, 0x08, 0xce, 0x0c, 0x11, 0x94, 0x20, 0x8d, 0x0d, 0x18,
- 0x54, 0x14, 0xc9, 0xba, 0xea, 0xec, 0xb1, 0xc1, 0x40, 0x23, 0x06, 0x57,
- 0x4d, 0x5f, 0x93, 0x8e, 0xd1, 0xdc, 0xed, 0xbb, 0xe9, 0x45, 0x6d, 0x7a,
- 0xf0, 0xc2, 0xc8, 0x05, 0x08, 0xaa, 0x45, 0xc0, 0xa3, 0xc1, 0x2e, 0x09,
- 0x0d, 0xb4, 0x04, 0x2e, 0x84, 0xbf, 0x4e, 0x5d, 0x78, 0x43, 0xd3, 0x6d,
- 0x88, 0xd3, 0x32, 0x38, 0x54, 0x02, 0x2c, 0x25, 0xc5, 0xa3, 0x6d, 0xf4,
- 0x1c, 0x8a, 0x3b, 0xf6, 0x64, 0xea, 0x3d, 0xe9, 0xdc, 0x32, 0x97, 0x46,
- 0x6d, 0x09, 0x92, 0x85, 0x1a, 0x86, 0xfc, 0xee, 0x5c, 0xe5, 0x6c, 0x2f,
- 0xb7, 0x08, 0x5c, 0xba, 0xda, 0xd4, 0x01, 0x91, 0x70, 0x45, 0x67, 0x7a,
- 0xc5, 0xb9, 0xa1, 0x8b, 0x0a, 0x82, 0x5b, 0xbd, 0x29, 0xa8, 0x1f, 0x64,
- 0x64, 0xba, 0x53, 0x90, 0x73, 0x1c, 0x8f, 0xec, 0xec, 0x3e, 0xfa, 0x3a,
- 0x41, 0x72, 0x91, 0x6b, 0x24, 0x49, 0xa7, 0x5e, 0xb0, 0xb0, 0x2a, 0x30,
- 0x88, 0x2f, 0xae, 0x0a, 0xfa, 0xbb, 0x5b, 0xb5, 0x5f, 0xa5, 0x4c, 0x6e,
- 0xcc, 0xd2, 0xca, 0xc7, 0x98, 0x36, 0xa4, 0xb8, 0x73, 0xd4, 0x21, 0xd0,
- 0xaf, 0x55, 0x75, 0x6a, 0x2a, 0x97, 0x25, 0xa8, 0x59, 0xf6, 0x3a, 0x7f,
- 0x6b, 0x9d, 0xda, 0xc2, 0x2c, 0x09, 0x76, 0x4a, 0x6f, 0xc6, 0xed, 0xe4,
- 0x0f, 0x99, 0xf4, 0x7e, 0xf0, 0x04, 0x0a, 0x3d, 0xd3, 0x89, 0xa2, 0x0f,
- 0x6b, 0xe9, 0xe8, 0xa8, 0xbc, 0x9f, 0xa1, 0xbb, 0x9d, 0x5f, 0x96, 0x5b,
- 0x08, 0xd7, 0xcd, 0x35, 0x8c, 0x0b, 0xa1, 0x0d, 0x3f, 0x54, 0x4e, 0xa7,
- 0x54, 0x52, 0x9d, 0x31, 0xce, 0x83, 0x2d, 0x0f, 0xc1, 0xbe, 0x52, 0x55,
- 0x1a, 0x15, 0xae, 0x31, 0x7b, 0xe9, 0x0c, 0xce, 0x41, 0x3b, 0x48, 0x45,
- 0x23, 0x54, 0xad, 0xbe, 0xd7, 0x92, 0x14, 0x12, 0xad, 0x52, 0x50, 0x5c,
- 0x21, 0xe5, 0x30, 0x2b, 0x61, 0x4d, 0xb5, 0x7a, 0x79, 0xd1, 0xd3, 0xc1,
- 0x49, 0xc3, 0xb6, 0xf5, 0xb8, 0x8e, 0xa7, 0x70, 0xe9, 0xfd, 0xe2, 0xc5,
- 0x5d, 0x4e, 0x92, 0x1b, 0xa0, 0xc9, 0x93, 0xaa, 0x40, 0xb5, 0xce, 0x9a,
- 0xea, 0x49, 0x1b, 0x1b, 0x56, 0x27, 0x57, 0xb1, 0x40, 0x0c, 0x77, 0x1c,
- 0x03, 0xa7, 0x1a, 0x4a, 0x4e, 0x3c, 0xe3, 0x1e, 0x52, 0xe9, 0x8a, 0x09,
- 0x67, 0x92, 0x78, 0xd5, 0x24, 0x5c, 0x81, 0x7d, 0x46, 0xe9, 0xe9, 0xa5,
- 0x47, 0x50, 0x4d, 0xf6, 0xd1, 0x79, 0x72, 0xc5, 0x4e, 0x6e, 0x93, 0x91,
- 0xee, 0x20, 0x5b, 0x62, 0x57, 0x94, 0x34, 0xe7, 0x6e, 0x39, 0x40, 0x04,
- 0x38, 0xf4, 0x53, 0x10, 0x3a, 0xf1, 0x3b, 0x20, 0x7b, 0xec, 0x81, 0xd3,
- 0x63, 0xc4, 0x41, 0xa4, 0x83, 0xd5, 0x44, 0x04, 0xe5, 0x0c, 0x3f, 0x33,
- 0x08, 0xe1, 0x8a, 0x8f, 0x8a, 0x52, 0xc0, 0xbd, 0x31, 0x6f, 0x1c, 0xa4,
- 0x15, 0x25, 0xcb, 0x57, 0x06, 0x45, 0xb5, 0x99, 0x6b, 0xcc, 0x49, 0xf2,
- 0xda, 0xbd, 0xc8, 0x43, 0xd1, 0x98, 0x30, 0xd0, 0x93, 0x18, 0xf3, 0x82,
- 0xad, 0xc4, 0x15, 0x41, 0x52, 0x3d, 0x5c, 0x65, 0x66, 0x36, 0xd1, 0x81,
- 0x2b, 0xe3, 0xfd, 0x8c, 0x08, 0xd8, 0x88, 0xca, 0x76, 0x60, 0xa6, 0x07,
- 0x83, 0xab, 0xf8, 0x20, 0xd9, 0xae, 0xb2, 0x25, 0xb2, 0x93, 0x28, 0xb6,
- 0x19, 0x11, 0x16, 0xa3, 0x12, 0xfc, 0x2f, 0x9c, 0x02, 0xd1, 0x5b, 0xf2,
- 0x11, 0x09, 0x52, 0xdd, 0x8b, 0x9d, 0xd3, 0xc5, 0xd1, 0x17, 0x2b, 0x9d,
- 0xeb, 0x66, 0xe6, 0x9a, 0x62, 0x62, 0x33, 0x45, 0x94, 0x53, 0xdc, 0x6e,
- 0xe9, 0x74, 0x55, 0xb4, 0x39, 0x1a, 0xbf, 0xc7, 0x05, 0xa7, 0xf3, 0x0b,
- 0xee, 0xec, 0x60, 0x90, 0xd4, 0x97, 0x66, 0x7f, 0x97, 0x45, 0xf1, 0x1f,
- 0x4f, 0x40, 0x1b, 0xb0, 0xc4, 0xa1, 0x83, 0xf0, 0x33, 0xde, 0x07, 0x78,
- 0x14, 0x31, 0x40, 0xd1, 0x6c, 0xfb, 0x47, 0xb6, 0x63, 0xfb, 0x80, 0xd0,
- 0x9b, 0x8f, 0x3d, 0x1d, 0xf8, 0x70, 0xc5, 0x79, 0xe1, 0x70, 0x24, 0x88,
- 0x12, 0x9a, 0xc3, 0xdd, 0xe0, 0x28, 0x10, 0x35, 0x07, 0x79, 0x88, 0x6e,
- 0xda, 0xc1, 0x69, 0x44, 0x9d, 0x49, 0xaf, 0x70, 0xbb, 0x26, 0x64, 0xf0,
- 0x0b, 0x9f, 0xf7, 0x4d, 0xef, 0x56, 0xce, 0xce, 0xd4, 0xda, 0xde, 0xae,
- 0x5d, 0xed, 0xc0, 0x1c, 0xe4, 0x3d, 0xaa, 0x38, 0xf3, 0xa8, 0x51, 0xb0,
- 0xda, 0x6f, 0x2a, 0x22, 0x84, 0x58, 0xd5, 0x81, 0x07, 0xf4, 0x98, 0xbd,
- 0x23, 0xea, 0xd1, 0x89, 0xfc, 0x05, 0x9b, 0x27, 0x0c, 0xb0, 0x78, 0xaf,
- 0xa8, 0x5c, 0x63, 0x73, 0x63, 0xc3, 0xb6, 0xb7, 0xe8, 0xe8, 0x69, 0x21,
- 0xdb, 0xa6, 0xad, 0x2d, 0xe8, 0x66, 0xc8, 0x72, 0xd3, 0xd7, 0xc2, 0xd8,
- 0x17, 0xb6, 0xab, 0x05, 0x81, 0x01, 0x27, 0x19, 0xcb, 0xb6, 0x76, 0x78,
- 0x09, 0x3f, 0x69, 0x3a, 0x4c, 0x58, 0x35, 0x8c, 0xdd, 0x8d, 0xdc, 0x85,
- 0x84, 0x7a, 0x5c, 0x00, 0x59, 0x8f, 0x68, 0x8e, 0xd5, 0x5e, 0xe3, 0x9d,
- 0xb6, 0x9d, 0xc5, 0xe2, 0x2c, 0xe3, 0xa6, 0x4f, 0x7a, 0x6c, 0xa2, 0xaf,
- 0xee, 0x6d, 0x44, 0x8f, 0x62, 0x32, 0x9c, 0x75, 0x41, 0xb3, 0x62, 0x30,
- 0x1f, 0x9e, 0xff, 0x20, 0x04, 0x94, 0xb3, 0xb8, 0x6f, 0xc5, 0x7f, 0x38,
- 0x58, 0x42, 0xb0, 0x53, 0x60, 0x0c, 0xe1, 0xa8, 0x84, 0x34, 0xef, 0x95,
- 0xf2, 0x34, 0xfb, 0x69, 0x98, 0x16, 0x82, 0x76, 0xd9, 0xd7, 0xe8, 0xe2,
- 0x48, 0x09, 0x2a, 0x96, 0x35, 0xe1, 0xa5, 0xb9, 0xc6, 0xdb, 0xc7, 0xad,
- 0xc1, 0xae, 0xc1, 0x82, 0x59, 0xb6, 0x43, 0x63, 0xa3, 0xa9, 0x45, 0xb3,
- 0x5c, 0xf5, 0x79, 0x93, 0x7f, 0x10, 0xe7, 0x36, 0x26, 0x34, 0xdb, 0xf6,
- 0x95, 0x81, 0x00, 0xb8, 0x28, 0x39, 0x28, 0xee, 0x68, 0x00, 0x8d, 0x4a,
- 0xee, 0x36, 0x2b, 0x25, 0x42, 0x6a, 0x7d, 0x72, 0x97, 0xcb, 0xa0, 0xf2,
- 0xde, 0xc6, 0x6a, 0x1a, 0x17, 0x0e, 0xe0, 0x9d, 0x41, 0x9f, 0x6c, 0x85,
- 0x90, 0x39, 0x86, 0xec, 0x63, 0xa4, 0xb3, 0x95, 0x5b, 0x9b, 0x44, 0x09,
- 0x86, 0xee, 0xa5, 0xa2, 0x02, 0x72, 0xd6, 0xf1, 0x85, 0x0a, 0x06, 0x76,
- 0x9f, 0x98, 0x03, 0x4e, 0x38, 0x16, 0xda, 0x33, 0x17, 0x05, 0x3d, 0x90,
- 0x36, 0x7f, 0x82, 0xe1, 0x2a, 0x78, 0x25, 0xba, 0xbf, 0x28, 0xf5, 0x4b,
- 0x49, 0x7e, 0xc2, 0x51, 0x2b, 0x53, 0x43, 0xe6, 0x77, 0xa3, 0x74, 0xe0,
- 0x71, 0xe1, 0x49, 0xec, 0x8e, 0x50, 0xcd, 0x29, 0x85, 0x88, 0x87, 0x47,
- 0x9a, 0x95, 0x53, 0xd2, 0xf5, 0xae, 0x53, 0x85, 0x11, 0xc6, 0x54, 0x01,
- 0x41, 0x0f, 0xf5, 0x54, 0x3d, 0x4c, 0x41, 0xc7, 0x9e, 0x67, 0x11, 0x6d,
- 0x0e, 0xe1, 0x11, 0xcf, 0x4b, 0x27, 0xf1, 0xbc, 0x77, 0x9d, 0xc1, 0xae,
- 0xe6, 0x3d, 0xd2, 0x1c, 0xec, 0x85, 0x23, 0x1f, 0xf5, 0x16, 0x3b, 0x9f,
- 0x38, 0xd9, 0x29, 0x9f, 0x05, 0x81, 0x8b, 0x1b, 0x49, 0x8e, 0xfd, 0xa8,
- 0x71, 0xe0, 0x2c, 0x86, 0x27, 0x4e, 0xcc, 0x22, 0x21, 0x17, 0x79, 0x67,
- 0x95, 0xbc, 0x61, 0x0e, 0x92, 0x2c, 0x38, 0x7f, 0xf2, 0xa1, 0x8c, 0x53,
- 0xaa, 0x60, 0xcb, 0x6b, 0x5b, 0x0f, 0x93, 0x4c, 0x31, 0x28, 0xca, 0x05,
- 0x32, 0x48, 0xe5, 0x20, 0x3a, 0x23, 0x6e, 0x84, 0xc0, 0xc3, 0x07, 0x5a,
- 0x73, 0x4a, 0x0d, 0x60, 0x72, 0x4f, 0x68, 0x6f, 0xe6, 0xd3, 0xc4, 0xdd,
- 0x5e, 0x0f, 0x38, 0xa0, 0xe2, 0x55, 0x41, 0x8e, 0x4a, 0xe1, 0x63, 0x24,
- 0xe1, 0xa8, 0xcc, 0x66, 0x35, 0x2b, 0x8d, 0x5d, 0x21, 0xed, 0x56, 0x30,
- 0xf7, 0x6a, 0x52, 0x5c, 0x24, 0x13, 0xc1, 0xc0, 0x94, 0x92, 0x20, 0x4d,
- 0xfa, 0x68, 0x34, 0xfe, 0x44, 0xf1, 0x89, 0xec, 0xe9, 0x07, 0xe8, 0x71,
- 0xc9, 0xf1, 0x5e, 0x9f, 0x92, 0x26, 0xef, 0x16, 0x23, 0x46, 0x9a, 0x4f,
- 0x50, 0xef, 0xbc, 0x28, 0xbe, 0xec, 0xcb, 0xe9, 0x55, 0x48, 0x59, 0x2a,
- 0xa8, 0xaa, 0x9c, 0x33, 0xe5, 0xf9, 0x81, 0x08, 0xd3, 0x7a, 0x3c, 0x4f,
- 0x9b, 0xf5, 0x55, 0x2b, 0x92, 0xff, 0x2b, 0x0e, 0x4d, 0x2a, 0xf2, 0x31,
- 0xbd, 0xe3, 0x25, 0xcf, 0x36, 0x58, 0x3c, 0x84, 0x6d, 0x36, 0xc5, 0x3d,
- 0xd5, 0x8f, 0xae, 0xd9, 0x61, 0x84, 0x33, 0x4c, 0x9d, 0xc9, 0x69, 0x99,
- 0xae, 0x43, 0xab, 0xac, 0xe2, 0xa3, 0x15, 0xfb, 0x39, 0x66, 0xa9, 0x2a,
- 0x9c, 0xbc, 0x27, 0x0b, 0x28, 0xf3, 0x80, 0x34, 0xb5, 0x52, 0x2d, 0x24,
- 0x3a, 0xcd, 0xcf, 0x60, 0x05, 0xea, 0xac, 0xe9, 0x16, 0xa7, 0x76, 0x2d,
- 0x6c, 0x50, 0xd0, 0xd8, 0xa8, 0xea, 0xc6, 0x17, 0xc5, 0xf8, 0xbe, 0xd9,
- 0x3f, 0x79, 0x2b, 0x20, 0x5c, 0xcd, 0xa3, 0x5d, 0x3d, 0x94, 0xbd, 0x13,
- 0x25, 0xae, 0x0d, 0x11, 0x45, 0xd4, 0x57, 0xc1, 0xa2, 0x46, 0x9b, 0x3b,
- 0xc7, 0x6f, 0x42, 0xcc, 0x70, 0xaa, 0xd4, 0x5c, 0x80, 0xc0, 0x7f, 0xaf,
- 0x48, 0x81, 0x29, 0xd7, 0x06, 0xd1, 0x71, 0x2e, 0x69, 0x68, 0x52, 0xda,
- 0xcd, 0x95, 0x7e, 0xb9, 0x5b, 0x22, 0x18, 0xe0, 0x95, 0x4a, 0xb2, 0xe1,
- 0xa9, 0xdd, 0x30, 0x42, 0xa5, 0x8c, 0x2c, 0x2c, 0xb3, 0x2d, 0x92, 0xe1,
- 0x5a, 0x40, 0xfd, 0x25, 0xb1, 0x91, 0x9f, 0x3d, 0x82, 0x41, 0x45, 0x4d,
- 0x6f, 0x60, 0x28, 0x53, 0xa9, 0xee, 0x50, 0xdc, 0x0c, 0x9c, 0x13, 0x37,
- 0x6b, 0x47, 0x69, 0xbb, 0x26, 0x07, 0x9a, 0x8a, 0x08, 0x02, 0xbe, 0xa3,
- 0xaa, 0xa6, 0x8b, 0xa0, 0xa1, 0xa9, 0x08, 0x7e, 0x21, 0x1d, 0x60, 0x36,
- 0x02, 0x12, 0x83, 0x9a, 0x42, 0xfe, 0x6f, 0xfa, 0x20, 0x39, 0x7a, 0x43,
- 0xc2, 0x56, 0xc8, 0xbf, 0xb5, 0x15, 0x3e, 0x85, 0xac, 0xa0, 0xd2, 0xb4,
- 0x6b, 0x4c, 0x58, 0xa1, 0x5c, 0x2f, 0xc7, 0x4a, 0x70, 0xd8, 0x44, 0x11,
- 0x9e, 0x15, 0x28, 0x3f, 0x74, 0x0a, 0x8d, 0xb5, 0x48, 0x65, 0x70, 0x59,
- 0x09, 0xc4, 0x03, 0xc2, 0x51, 0xf7, 0x55, 0x4d, 0xf3, 0x43, 0x1d, 0x00,
- 0x16, 0xd2, 0xaa, 0x7d, 0x7c, 0xd2, 0x49, 0x30, 0x2c, 0xb8, 0x9c, 0x22,
- 0x61, 0x96, 0xb4, 0xc8, 0x19, 0x6f, 0x1e, 0x0a, 0xb3, 0x37, 0xa9, 0x11,
- 0x15, 0x3a, 0x28, 0x31, 0xa5, 0x70, 0x35, 0xb7, 0xfb, 0x44, 0x5e, 0x86,
- 0x35, 0x87, 0xdf, 0x85, 0xe1, 0x25, 0xff, 0xdc, 0x4f, 0x2f, 0xa4, 0xb4,
- 0x25, 0x6c, 0x06, 0x5e, 0xb0, 0xc7, 0x44, 0xf2, 0x13, 0x55, 0x72, 0xa7,
- 0xf5, 0x88, 0x25, 0x2f, 0x65, 0x24, 0x8f, 0xd3, 0x64, 0xc2, 0x06, 0x29,
- 0xce, 0xcd, 0xc7, 0x0c, 0x67, 0x1d, 0xa2, 0x7a, 0xd4, 0xd1, 0x08, 0x1c,
- 0x86, 0x76, 0x12, 0x9a, 0x39, 0x1a, 0xd4, 0xc9, 0x45, 0x0f, 0x47, 0xe7,
- 0xe9, 0xc0, 0xf3, 0x20, 0xc7, 0x81, 0x4e, 0x43, 0x08, 0x82, 0xfc, 0x91,
- 0x27, 0x43, 0xcb, 0x2c, 0xf4, 0xbe, 0x46, 0x83, 0xb7, 0x6d, 0xae, 0x13,
- 0xc5, 0xa5, 0xb9, 0xaa, 0xa0, 0x36, 0xcb, 0x45, 0xfe, 0x00, 0xd3, 0x4f,
- 0x53, 0xe0, 0xc3, 0xb1, 0x0a, 0x71, 0xe2, 0xa5, 0x2a, 0xb9, 0x4c, 0xb5,
- 0xe3, 0xb5, 0xe8, 0x47, 0xc5, 0x08, 0x48, 0x47, 0x51, 0x0a, 0x96, 0x55,
- 0x79, 0x00, 0xcb, 0x8f, 0xd5, 0x12, 0x54, 0x43, 0x8c, 0xce, 0x8c, 0x12,
- 0x4b, 0xf4, 0x99, 0x6a, 0x92, 0xcd, 0x34, 0xa1, 0xaa, 0x1f, 0xa5, 0x52,
- 0x09, 0x87, 0xbd, 0x76, 0x69, 0x37, 0xe6, 0xb1, 0xaf, 0x6c, 0x99, 0x12,
- 0x15, 0xed, 0xfe, 0x39, 0x41, 0xef, 0xed, 0x6a, 0x6b, 0xf4, 0x9d, 0x8d,
- 0x4d, 0x9a, 0xec, 0xce, 0xc6, 0xf3, 0xb5, 0xa7, 0x1c, 0x9d, 0x65, 0xf1,
- 0x4f, 0x9b, 0x77, 0x43, 0xe3, 0x2a, 0x98, 0x54, 0x69, 0x4c, 0xd5, 0x9b,
- 0x61, 0x1f, 0xe1, 0x79, 0x2b, 0xdf, 0x8f, 0xfc, 0x81, 0xf8, 0x92, 0x94,
- 0x7c, 0x0a, 0x84, 0x1f, 0x8a, 0x02, 0x78, 0x81, 0x90, 0xe3, 0xab, 0x6b,
- 0xec, 0x2b, 0xe8, 0xe9, 0xed, 0xf6, 0x1d, 0xae, 0x9a, 0xc2, 0x8b, 0x81,
- 0x37, 0x26, 0xa1, 0x57, 0x19, 0x22, 0x4e, 0x08, 0x4f, 0xcf, 0xa9, 0xe7,
- 0x29, 0x80, 0x3a, 0x60, 0xbb, 0x96, 0x49, 0x81, 0xa7, 0xa4, 0x24, 0x53,
- 0xdc, 0xe7, 0xde, 0xf8, 0x9e, 0x54, 0x93, 0x78, 0x9d, 0xe5, 0x59, 0x75,
- 0x8d, 0x55, 0xbf, 0x98, 0x83, 0x7b, 0x95, 0xfa, 0x0d, 0xad, 0x41, 0xc5,
- 0x10, 0xa9, 0x06, 0xd6, 0x3b, 0x35, 0x6c, 0xc7, 0x0a, 0x4a, 0xde, 0x68,
- 0xc1, 0xaa, 0xe1, 0x5f, 0x72, 0x9b, 0x2d, 0xbb, 0xcc, 0x10, 0x83, 0x66,
- 0x24, 0x61, 0x4b, 0x16, 0x2e, 0x5c, 0x8c, 0x86, 0xbb, 0x84, 0x47, 0xcd,
- 0x42, 0x82, 0xbc, 0x1b, 0x0e, 0x89, 0x07, 0x86, 0x1c, 0x46, 0x8a, 0xce,
- 0x51, 0x43, 0xf2, 0xd6, 0x89, 0x31, 0xe9, 0x55, 0xe4, 0xa6, 0xd3, 0x21,
- 0x08, 0xb9, 0x0d, 0xbc, 0x40, 0xd1, 0x03, 0x51, 0x52, 0x2d, 0x2c, 0xfc,
- 0xec, 0x3b, 0xcc, 0x40, 0x7a, 0x69, 0x7e, 0xbc, 0x46, 0xd0, 0xd9, 0x58,
- 0xa4, 0xbf, 0x3c, 0x5b, 0x19, 0x4e, 0x58, 0x92, 0xbb, 0xea, 0xd1, 0x0c,
- 0xde, 0x46, 0x5b, 0x15, 0x5b, 0xd5, 0xb8, 0x46, 0x5d, 0x5b, 0xef, 0xc0,
- 0xd2, 0xf7, 0x34, 0x04, 0x4d, 0x6e, 0x72, 0x4c, 0x1b, 0xf8, 0x91, 0x54,
- 0x7d, 0x6f, 0xda, 0xc4, 0x83, 0x4e, 0xca, 0x16, 0x1a, 0xce, 0xd0, 0x96,
- 0x85, 0x57, 0x01, 0xa3, 0x87, 0x11, 0x77, 0x05, 0x31, 0x5c, 0x1b, 0x7f,
- 0xf3, 0x97, 0xf1, 0x47, 0x4e, 0xc4, 0x14, 0xb6, 0x76, 0x84, 0xa5, 0xfb,
- 0x9d, 0x08, 0x44, 0x0f, 0x51, 0xcd, 0x2e, 0x49, 0x0b, 0x37, 0x57, 0x68,
- 0x5a, 0x3f, 0x98, 0xfa, 0xd4, 0x15, 0xfc, 0xc9, 0x24, 0xfd, 0xfc, 0x4b,
- 0x2c, 0xd9, 0xec, 0xa1, 0x31, 0xb3, 0xb2, 0x1c, 0x81, 0x2d, 0x28, 0x80,
- 0x4b, 0xdc, 0x17, 0x9b, 0x01, 0xe2, 0x4a, 0xbe, 0x25, 0x39, 0xfd, 0x3f,
- 0xe7, 0x7f, 0x84, 0xa3, 0x6f, 0x04, 0x0b, 0x7b, 0xfc, 0xf6, 0x00, 0xdb,
- 0x2f, 0x59, 0x70, 0x27, 0xa7, 0xfc, 0x54, 0xd1, 0xe6, 0xdc, 0x64, 0x1f,
- 0x72, 0x50, 0x04, 0x3b, 0xfe, 0x49, 0x6c, 0x84, 0x8b, 0xdd, 0xa8, 0x86,
- 0xba, 0x81, 0x85, 0x49, 0x46, 0xf6, 0x24, 0xab, 0x31, 0x28, 0x35, 0x01,
- 0xdd, 0xf4, 0x04, 0xa8, 0x8f, 0x6f, 0xad, 0x7c, 0xd9, 0xae, 0xb1, 0xc6,
- 0x03, 0xb1, 0xb2, 0xbf, 0x62, 0xcb, 0x92, 0xab, 0xbe, 0x4a, 0xf5, 0x68,
- 0xe5, 0xcf, 0x08, 0xb0, 0x80, 0xed, 0x39, 0xf8, 0x9b, 0x72, 0x8e, 0x18,
- 0x2c, 0x40, 0xd2, 0xf0, 0x3b, 0x00, 0xbf, 0xa4, 0x67, 0x60, 0xb3, 0x56,
- 0x8f, 0xa1, 0xf3, 0xa9, 0xd1, 0x6d, 0x73, 0xed, 0x6a, 0x65, 0xaf, 0x78,
- 0xd8, 0x75, 0xf9, 0xbd, 0x84, 0x1e, 0x32, 0xaa, 0x35, 0xb2, 0x0e, 0x6a,
- 0x9e, 0x11, 0x4f, 0x85, 0xda, 0x24, 0x26, 0xa3, 0x11, 0xe1, 0x7e, 0xd2,
- 0x75, 0x81, 0xb2, 0xe4, 0xea, 0x2a, 0x58, 0x50, 0x08, 0x24, 0xc0, 0xc3,
- 0x8b, 0x6b, 0xbe, 0x04, 0xb5, 0x98, 0xac, 0x40, 0xb4, 0xbe, 0xba, 0x91,
- 0x20, 0x1e, 0xc3, 0x91, 0x32, 0x9f, 0x1e, 0xca, 0xc6, 0xde, 0x53, 0xb9,
- 0xcd, 0x32, 0x97, 0x25, 0xcd, 0xbe, 0x8b, 0x59, 0x14, 0x66, 0x2d, 0xe6,
- 0x2d, 0x61, 0x2e, 0xf4, 0xf0, 0xd3, 0x4f, 0x4d, 0x58, 0xf7, 0x32, 0x01,
- 0x76, 0xbb, 0x97, 0x42, 0x8a, 0x09, 0xa2, 0xcc, 0x88, 0x57, 0xce, 0xbb,
- 0x4d, 0x27, 0x14, 0x87, 0x15, 0x80, 0x8f, 0x18, 0x36, 0x8c, 0x37, 0x27,
- 0x17, 0x4d, 0x56, 0x10, 0x41, 0xc8, 0xc7, 0x25, 0x50, 0x1f, 0x63, 0x2d,
- 0xde, 0x20, 0xb0, 0x8f, 0x76, 0x90, 0x55, 0xa0, 0x3f, 0x44, 0x87, 0x10,
- 0xbb, 0xd4, 0xde, 0x6c, 0x04, 0x5e, 0x42, 0x97, 0x89, 0x0d, 0x5e, 0xb8,
- 0x78, 0x7f, 0xed, 0xb0, 0x92, 0xca, 0xa2, 0x75, 0xa2, 0x38, 0x23, 0xac,
- 0xb4, 0xe1, 0x69, 0xb7, 0xb6, 0x5f, 0xbc, 0x08, 0x46, 0x3d, 0x18, 0x96,
- 0x19, 0x18, 0x1b, 0xc9, 0xe4, 0xe1, 0x7c, 0xb3, 0x2d, 0x4a, 0x5c, 0x5b,
- 0xa9, 0xaf, 0x1f, 0xbb, 0x36, 0x25, 0xf8, 0x55, 0x3f, 0xfa, 0x46, 0x12,
- 0x71, 0x8a, 0x6a, 0x81, 0x5c, 0x6f, 0x64, 0x49, 0xe3, 0x75, 0x02, 0x54,
- 0xe8, 0x50, 0xa1, 0x52, 0xa9, 0xb1, 0x15, 0x84, 0x69, 0x69, 0x0b, 0x28,
- 0x48, 0x1d, 0x2c, 0x3f, 0x41, 0x73, 0x25, 0xb0, 0x0e, 0xae, 0xb2, 0x22,
- 0x66, 0xed, 0x40, 0x4c, 0x5c, 0x89, 0x34, 0x71, 0xfc, 0x22, 0x35, 0x3d,
- 0x1b, 0xf0, 0x78, 0x65, 0x77, 0xad, 0x46, 0x2d, 0x8c, 0x89, 0x91, 0x23,
- 0x4e, 0x58, 0x76, 0x45, 0x58, 0x20, 0xad, 0xe1, 0x08, 0xd8, 0xf4, 0x2a,
- 0xad, 0x7d, 0x6c, 0x2b, 0x07, 0x1f, 0x61, 0xc1, 0xe0, 0x81, 0x23, 0x26,
- 0xc8, 0x5c, 0xfb, 0xd2, 0xeb, 0x3c, 0xbb, 0xd4, 0x53, 0x0f, 0x3a, 0xf9,
- 0x2d, 0x3a, 0x47, 0xbf, 0xe4, 0x50, 0xcb, 0xbe, 0xe9, 0xbc, 0x98, 0xab,
- 0xd8, 0xfb, 0x32, 0xd8, 0x66, 0x0c, 0x23, 0x02, 0x1c, 0x88, 0xa2, 0x4e,
- 0x57, 0x75, 0x9d, 0x8c, 0xae, 0xed, 0xbd, 0x4e, 0x90, 0x1b, 0xa6, 0xf9,
- 0x8f, 0xd0, 0x97, 0xbc, 0x21, 0x93, 0x50, 0x7f, 0xd3, 0x7d, 0x13, 0xc3,
- 0xc3, 0x6a, 0x62, 0x81, 0x3a, 0xc1, 0xf9, 0x84, 0x28, 0x51, 0x89, 0x85,
- 0x86, 0x62, 0x07, 0x9e, 0xf6, 0xae, 0x3d, 0x7c, 0xd7, 0xa1, 0x93, 0xbf,
- 0xf7, 0xb6, 0x8c, 0xc0, 0x76, 0xab, 0x61, 0x1a, 0xdb, 0xa6, 0x37, 0xee,
- 0xfd, 0x98, 0x98, 0x30, 0x60, 0x08, 0xb6, 0x3e, 0xc6, 0x75, 0x5a, 0x94,
- 0x53, 0xe2, 0xac, 0xab, 0x22, 0xe5, 0x59, 0x52, 0xab, 0x0e, 0x26, 0xed,
- 0x3e, 0xa5, 0x3e, 0xd4, 0xe5, 0x1c, 0x01, 0xaa, 0xd9, 0xff, 0x4a, 0x5f,
- 0xf2, 0x8d, 0x29, 0xbc, 0x29, 0xfa, 0xcd, 0x15, 0x67, 0x68, 0x7b, 0xd2,
- 0x9e, 0x11, 0x89, 0xa5, 0x27, 0x1f, 0x3b, 0xf3, 0xa4, 0x4f, 0x24, 0xdb,
- 0x40, 0x81, 0x46, 0xbe, 0xe4, 0xd9, 0x44, 0xcf, 0x7d, 0x95, 0xfd, 0xcc,
- 0xe6, 0x81, 0xe0, 0x0a, 0x68, 0x04, 0x99, 0x7c, 0xe5, 0x29, 0x06, 0x9e,
- 0x5e, 0x01, 0x43, 0x71, 0xc1, 0x0a, 0x03, 0xfb, 0x79, 0xc2, 0xdf, 0x05,
- 0x0b, 0xe1, 0x3b, 0x0e, 0x0d, 0x8a, 0x32, 0xbd, 0x9a, 0xe3, 0xed, 0x49,
- 0x64, 0x5a, 0xd5, 0xa6, 0xab, 0xfa, 0xc4, 0x2c, 0x9b, 0x69, 0x35, 0x8a,
- 0x57, 0xa4, 0x07, 0x6f, 0xad, 0xd1, 0x92, 0x73, 0xa0, 0x56, 0x3d, 0xcf,
- 0x39, 0xc1, 0x88, 0xba, 0xce, 0xcc, 0x2f, 0x7e, 0xa2, 0xc0, 0x7c, 0x21,
- 0x2b, 0xa7, 0x69, 0xe5, 0x16, 0x60, 0x26, 0x4a, 0x2f, 0x3d, 0x37, 0x55,
- 0x4a, 0x75, 0x5e, 0x78, 0xd9, 0x70, 0xc5, 0x52, 0xad, 0x12, 0x80, 0x81,
- 0xb4, 0xd1, 0xe9, 0xfe, 0x67, 0x27, 0xdd, 0x8a, 0xd4, 0x58, 0xa2, 0x0a,
- 0x4d, 0xa1, 0x3d, 0x1c, 0x35, 0x24, 0x54, 0xa5, 0x5a, 0xea, 0x65, 0xd9,
- 0x77, 0x49, 0x1a, 0x22, 0xf6, 0xb4, 0xc1, 0xa5, 0x8e, 0x05, 0xd7, 0x96,
- 0x02, 0x57, 0xb0, 0x6e, 0x82, 0x99, 0x81, 0xfd, 0xba, 0x0f, 0x61, 0x3e,
- 0xb1, 0x7d, 0xf7, 0x93, 0xf1, 0x6d, 0xa2, 0xe8, 0xeb, 0xbc, 0xdd, 0xb8,
- 0xc4, 0x05, 0x0b, 0x46, 0xa6, 0x22, 0xd0, 0x9a, 0xc6, 0x6f, 0x5f, 0x6c,
- 0x87, 0x15, 0x90, 0x9d, 0x48, 0xfb, 0x15, 0x11, 0x9a, 0xa1, 0xa6, 0x6f,
- 0x06, 0x82, 0xb1, 0xc4, 0x34, 0x09, 0x3c, 0x23, 0xa6, 0xd5, 0xa4, 0x11,
- 0x20, 0xa4, 0x69, 0x97, 0x09, 0xc8, 0xcb, 0x9f, 0x66, 0x57, 0xb6, 0xab,
- 0x51, 0xe0, 0xc0, 0x52, 0x4b, 0x24, 0x0f, 0xbc, 0x51, 0xae, 0xdf, 0xd7,
- 0x91, 0xcc, 0xe7, 0xf3, 0x2f, 0x1b, 0x03, 0x06, 0xae, 0xe0, 0x75, 0xc1,
- 0xf6, 0x1f, 0x5d, 0x65, 0x9d, 0x44, 0x60, 0x2a, 0x50, 0x4a, 0x9d, 0x01,
- 0x04, 0xa8, 0xae, 0x8b, 0x54, 0x76, 0x2e, 0x27, 0x67, 0xa7, 0x95, 0x1b,
- 0x9a, 0x2c, 0x15, 0x2c, 0x9f, 0xee, 0x9e, 0x32, 0xdd, 0xe9, 0xff, 0x55,
- 0x5c, 0xe7, 0xf8, 0x0f, 0x1c, 0x1e, 0x47, 0xff, 0x7c, 0x33, 0x98, 0x64,
- 0xbe, 0xbe, 0x78, 0xc3, 0x68, 0xaa, 0x78, 0x09, 0x49, 0x21, 0xb6, 0x23,
- 0xd3, 0x1a, 0xde, 0xdd, 0x01, 0x21, 0x89, 0x45, 0x7e, 0x48, 0x2b, 0x21,
- 0xf1, 0x4a, 0xbd, 0xb2, 0x9c, 0x97, 0xb9, 0xca, 0x34, 0x28, 0x0c, 0x33,
- 0x73, 0x33, 0x50, 0xff, 0x86, 0x80, 0x25, 0xd0, 0xbd, 0xf0, 0x1e, 0x86,
- 0x42, 0xef, 0x3f, 0xdf, 0xbf, 0x9e, 0x5f, 0x51, 0x1b, 0x1e, 0x8c, 0x88,
- 0xf6, 0x1e, 0xb5, 0x6a, 0x75, 0x44, 0xb3, 0xb7, 0xb0, 0x76, 0xaa, 0xb3,
- 0x08, 0x25, 0xa5, 0xa1, 0x38, 0x44, 0x16, 0xf0, 0x1e, 0xd1, 0xe6, 0x43,
- 0x82, 0x74, 0x85, 0x35, 0xdb, 0x3e, 0x13, 0x4d, 0x10, 0xa1, 0x2d, 0xea,
- 0xea, 0x82, 0x15, 0xdc, 0xa6, 0x17, 0x9f, 0x7f, 0x89, 0xe1, 0x8b, 0xbb,
- 0xc1, 0x75, 0x3d, 0x9d, 0xb0, 0x8a, 0x8c, 0x84, 0x5b, 0xc7, 0x7f, 0xf6,
- 0xa2, 0x05, 0x3a, 0x5f, 0x51, 0x76, 0x0f, 0xeb, 0x20, 0x40, 0x39, 0x43,
- 0x5e, 0x16, 0xc5, 0xc2, 0x11, 0x91, 0x2a, 0xec, 0x9f, 0x27, 0xba, 0x38,
- 0x45, 0xbb, 0x5c, 0xca, 0x6a, 0x13, 0x3d, 0x99, 0x25, 0xec, 0x05, 0xc3,
- 0x67, 0x21, 0x84, 0xaf, 0x4a, 0x19, 0x28, 0xec, 0x25, 0xd2, 0x9b, 0xe6,
- 0xf3, 0xbe, 0x02, 0x24, 0x65, 0xd5, 0x02, 0xd2, 0xa8, 0xd5, 0x25, 0x5d,
- 0x3d, 0xfe, 0x6c, 0x5e, 0xc7, 0xff, 0xc0, 0x29, 0xa6, 0x7e, 0xdf, 0x0b,
- 0x56, 0x73, 0x7c, 0x69, 0xbe, 0xb8, 0x4e, 0xc9, 0x66, 0x9a, 0x76, 0x12,
- 0xad, 0xf4, 0x59, 0x69, 0xff, 0xf3, 0x0a, 0x39, 0x9d, 0x35, 0x6b, 0xf6,
- 0xef, 0xf3, 0x42, 0x44, 0x5b, 0x34, 0x2e, 0x3c, 0x75, 0x16, 0x0b, 0x5e,
- 0xe9, 0x89, 0x8a, 0x66, 0xff, 0xe0, 0xc4, 0x7f, 0xe8, 0xd1, 0xd4, 0xfb,
- 0xf8, 0xaf, 0x1f, 0x7a, 0x76, 0xf6, 0x3f, 0xd0, 0xe6, 0xfc, 0x39, 0xcb,
- 0xff, 0x8c, 0x2b, 0xf8, 0xa1, 0xf7, 0xd4, 0x3d, 0x16, 0xab, 0xd4, 0xf9,
- 0x8a, 0xf3, 0x91, 0xc6, 0x37, 0x7a, 0x2b, 0x51, 0x37, 0x90, 0x92, 0x9b,
- 0xa3, 0x95, 0x5d, 0x1a, 0xdd, 0xc8, 0x52, 0x0d, 0xe4, 0xb2, 0x25, 0x0c,
- 0xd0, 0xc5, 0xd2, 0x01, 0x4d, 0xbb, 0x7b, 0xcf, 0x65, 0x69, 0x1f, 0x40,
- 0x1a, 0x1b, 0xf3, 0x9d, 0xb4, 0xbb, 0xcc, 0x36, 0xb0, 0x21, 0x36, 0x52,
- 0xca, 0xb3, 0x05, 0x3e, 0xf6, 0x2f, 0x1e, 0xf3, 0xba, 0x77, 0xd1, 0xfc,
- 0x15, 0xbe, 0x40, 0x96, 0x2b, 0x8d, 0x21, 0x07, 0x99, 0x50, 0xdc, 0xa5,
- 0x76, 0x91, 0xb0, 0x08, 0x72, 0x4e, 0xcf, 0xe3, 0x7b, 0xee, 0x92, 0x01,
- 0x8d, 0x82, 0xb9, 0x47, 0x55, 0x3a, 0xcd, 0x40, 0x83, 0xa7, 0xa0, 0xd3,
- 0x84, 0xcd, 0xdb, 0x75, 0x14, 0xff, 0x54, 0xd2, 0x5d, 0xcd, 0x12, 0x74,
- 0xa1, 0xa3, 0x93, 0x46, 0x2c, 0x5f, 0x5e, 0x26, 0x13, 0x66, 0x01, 0x0f,
- 0xaf, 0xe0, 0x90, 0x65, 0xf5, 0x79, 0x0f, 0x94, 0x9f, 0x3f, 0x63, 0xe0,
- 0x24, 0xcd, 0xff, 0x0c, 0x8c, 0x34, 0x87, 0xad, 0xb2, 0xa7, 0xf2, 0x2e,
- 0x9e, 0xde, 0xc3, 0xa4, 0x57, 0x1e, 0x3a, 0x99, 0x23, 0xae, 0xac, 0xd4,
- 0x34, 0xae, 0x76, 0x7e, 0x2d, 0x1f, 0x49, 0x69, 0x88, 0xc1, 0x07, 0x4e,
- 0x9f, 0xf9, 0xbc, 0xef, 0x81, 0x8d, 0x7d, 0xf2, 0x42, 0x53, 0xae, 0x58,
- 0x25, 0xfb, 0xeb, 0xf3, 0xd3, 0xbf, 0xfc, 0x59, 0x07, 0xf8, 0xa1, 0xf7,
- 0x5d, 0xcc, 0x3f, 0x25, 0x94, 0xc4, 0xbd, 0xe8, 0xf4, 0x2f, 0xcb, 0x73,
- 0xee, 0xa2, 0x0f, 0x7c, 0xc9, 0x7f, 0x21, 0x36, 0x5e, 0x34, 0x2c, 0xd5,
- 0xf5, 0xe8, 0x4b, 0xa0, 0xe7, 0xa4, 0xf7, 0x04, 0x5d, 0x43, 0x65, 0x39,
- 0xb3, 0x19, 0x82, 0xfa, 0x28, 0x30, 0x60, 0xcd, 0xc0, 0x80, 0xa4, 0x34,
- 0x5e, 0x14, 0xe4, 0x5d, 0xa8, 0xfd, 0x9e, 0xd3, 0xd4, 0xe6, 0xf6, 0xef,
- 0xc2, 0x4b, 0x94, 0xe8, 0x2e, 0x0a, 0x6e, 0x33, 0x0f, 0x59, 0xd3, 0xeb,
- 0xf4, 0x78, 0xf4, 0xe1, 0xe2, 0xc4, 0xac, 0x9e, 0x20, 0x88, 0x9b, 0x86,
- 0x8f, 0x2b, 0x56, 0xb6, 0xa8, 0x69, 0x01, 0xda, 0x4d, 0x2b, 0x7f, 0x58,
- 0xa1, 0xe1, 0x30, 0xc4, 0x4c, 0xf7, 0x1f, 0xc5, 0x2d, 0xb9, 0x9f, 0xc5,
- 0x9f, 0x43, 0xa1, 0x5c, 0xc9, 0x5e, 0x11, 0x2c, 0x85, 0xcb, 0x62, 0x32,
- 0x96, 0xa8, 0x32, 0x70, 0x38, 0xef, 0xb0, 0x9a, 0x40, 0xa8, 0x47, 0x20,
- 0x21, 0x24, 0xd2, 0x2c, 0x9f, 0x0d, 0xe5, 0x12, 0x48, 0xba, 0x89, 0x38,
- 0x5f, 0x9d, 0x0c, 0xbb, 0x84, 0xd9, 0x1c, 0x26, 0x32, 0xbd, 0x48, 0xc9,
- 0x4f, 0xa5, 0xd0, 0x75, 0xb1, 0x04, 0x1e, 0x02, 0xbe, 0x9e, 0xf6, 0x11,
- 0xa1, 0x84, 0x67, 0xc1, 0xae, 0xc3, 0x32, 0xac, 0x37, 0xa8, 0xe3, 0x99,
- 0x20, 0x97, 0x66, 0xb0, 0x53, 0x48, 0x3e, 0x09, 0x2f, 0x96, 0xce, 0xab,
- 0x6a, 0x08, 0xfe, 0xc9, 0x8a, 0xfe, 0x20, 0x81, 0x0a, 0x7d, 0x2c, 0x11,
- 0x2d, 0x4a, 0xf6, 0x6b, 0xe0, 0xbd, 0xf0, 0x9d, 0x64, 0x3c, 0xc7, 0x9b,
- 0x7b, 0xc6, 0x3a, 0x4f, 0xe4, 0xf1, 0xf0, 0xf0, 0x2e, 0xda, 0xb7, 0x26,
- 0x10, 0x55, 0x42, 0xfe, 0x05, 0xe3, 0x6f, 0x99, 0xf1, 0x7d, 0x20, 0xb1,
- 0x44, 0x9a, 0x57, 0x87, 0x3f, 0x8b, 0x88, 0x9a, 0xa6, 0x80, 0xc9, 0x78,
- 0xcd, 0xad, 0xb7, 0xd4, 0xf5, 0x0d, 0x48, 0x3e, 0x38, 0xc3, 0x6f, 0x33,
- 0xb2, 0x6e, 0xc0, 0xa4, 0x1f, 0x73, 0xe2, 0x23, 0xaf, 0xc3, 0x03, 0xef,
- 0x8b, 0xf9, 0x12, 0x17, 0xbe, 0x2a, 0xa6, 0xd8, 0xf8, 0x73, 0xbc, 0xc7,
- 0x29, 0x24, 0x84, 0x16, 0x4c, 0x60, 0xc1, 0x99, 0x0b, 0xcb, 0x60, 0x1c,
- 0x7a, 0x51, 0xb8, 0xbf, 0x98, 0x69, 0xae, 0xeb, 0x7d, 0x8a, 0x6e, 0x15,
- 0x76, 0xf2, 0xb3, 0xed, 0x21, 0x87, 0x61, 0x75, 0x45, 0xbc, 0x25, 0xf8,
- 0xb1, 0x84, 0x03, 0x61, 0xec, 0xbe, 0x4e, 0x10, 0x1f, 0x91, 0x97, 0x1f,
- 0x07, 0x54, 0x8a, 0x3d, 0x12, 0xe3, 0xe6, 0x4c, 0x30, 0x22, 0x3c, 0x01,
- 0xc2, 0xab, 0x2d, 0xcc, 0xcd, 0x2c, 0x1a, 0x28, 0xf0, 0xbe, 0xe5, 0xeb,
- 0xd0, 0x57, 0x06, 0x63, 0x83, 0xd3, 0x16, 0x04, 0x26, 0xd1, 0xca, 0xe7,
- 0x6b, 0x2b, 0xdd, 0x8d, 0xcf, 0x8c, 0xea, 0xdc, 0x04, 0x88, 0xd7, 0x0c,
- 0x92, 0x8a, 0xb0, 0x76, 0x61, 0x68, 0x72, 0x16, 0x4d, 0x31, 0x31, 0x2e,
- 0xa5, 0x9d, 0xa4, 0x3a, 0x82, 0xaa, 0x0e, 0xc1, 0xbe, 0x30, 0x0c, 0x6e,
- 0x96, 0xd3, 0xb9, 0x64, 0x40, 0x6f, 0x66, 0x6f, 0x37, 0x3e, 0xcc, 0x0d,
- 0xb4, 0xaa, 0x3d, 0x57, 0xcd, 0xf6, 0x9d, 0xe8, 0x18, 0x21, 0xc4, 0x86,
- 0xcf, 0xea, 0xe0, 0x70, 0x5c, 0x14, 0x8b, 0x74, 0xea, 0x95, 0xcf, 0x57,
- 0xf9, 0x6e, 0xb2, 0x0e, 0x32, 0xe7, 0xdb, 0x2b, 0xd1, 0x0f, 0x41, 0x94,
- 0x3c, 0x7a, 0xd1, 0x99, 0x8e, 0x30, 0xeb, 0xc2, 0xc7, 0xa3, 0x7d, 0x8c,
- 0x66, 0x7d, 0x41, 0x91, 0x4c, 0x79, 0x7e, 0x7f, 0x9d, 0x7e, 0xd4, 0xd2,
- 0x82, 0x17, 0x8e, 0x02, 0x1b, 0x44, 0x7f, 0x7e, 0x89, 0x8f, 0xab, 0x11,
- 0xb0, 0x12, 0x0d, 0x06, 0x20, 0x7e, 0xaa, 0x69, 0x1b, 0xd5, 0xc4, 0x83,
- 0x6d, 0x41, 0xbe, 0x94, 0xed, 0x57, 0x3c, 0x6a, 0x72, 0xd1, 0xa8, 0xb9,
- 0xcc, 0xbe, 0x44, 0xfe, 0x55, 0xf9, 0x39, 0x26, 0x9a, 0x9a, 0x3c, 0xf4,
- 0x28, 0x0d, 0x74, 0x65, 0x1e, 0x9b, 0x3a, 0x25, 0xf1, 0xc5, 0x21, 0x27,
- 0xbc, 0xb8, 0xc8, 0xa4, 0xef, 0x0b, 0x43, 0x78, 0x52, 0x2e, 0x2a, 0xb6,
- 0xac, 0x64, 0x00, 0x5b, 0xb8, 0xd4, 0xc3, 0x7d, 0x41, 0x28, 0xb7, 0x1a,
- 0x03, 0x8f, 0xf4, 0x7b, 0x63, 0x93, 0xc8, 0xdc, 0xe2, 0x23, 0x09, 0x7a,
- 0x98, 0x64, 0xd6, 0xe7, 0xf8, 0x1d, 0x83, 0x12, 0xef, 0xe5, 0xde, 0x49,
- 0x8b, 0xb1, 0xe8, 0x45, 0x8c, 0xcf, 0x59, 0x17, 0xbd, 0x72, 0x7b, 0x33,
- 0xef, 0xae, 0x2f, 0x6a, 0x5f, 0x4c, 0x25, 0x00, 0x01, 0x00, 0x17, 0x5c,
- 0xd9, 0x45, 0x52, 0xa5, 0xcf, 0x76, 0xf8, 0x93, 0x4c, 0xa4, 0x4a, 0x0f,
- 0xbb, 0x75, 0xa6, 0x5a, 0x1c, 0xb1, 0xc6, 0x82, 0xda, 0x1a, 0x18, 0xa1,
- 0xfc, 0xa1, 0xfa, 0x05, 0x76, 0x53, 0xcd, 0x85, 0x9e, 0x78, 0x87, 0x82,
- 0xaa, 0x78, 0x55, 0x13, 0x14, 0xce, 0xf3, 0x67, 0xce, 0xa4, 0x07, 0x0f,
- 0x18, 0xdd, 0x6d, 0xf1, 0x29, 0x6b, 0x6c, 0xaf, 0xc9, 0xb0, 0xab, 0x17,
- 0x5a, 0x46, 0xb7, 0x05, 0xf7, 0x95, 0x90, 0x45, 0x1a, 0x47, 0xe1, 0x43,
- 0x07, 0xc8, 0x3d, 0x01, 0x7f, 0x56, 0xd6, 0x69, 0x7f, 0x78, 0x21, 0x53,
- 0x3b, 0x56, 0x8f, 0xbe, 0xcf, 0x93, 0x60, 0xc6, 0x7e, 0x98, 0xaf, 0x31,
- 0x1e, 0x70, 0x39, 0x2f, 0xe9, 0xce, 0x91, 0xc7, 0x58, 0x35, 0x50, 0x5c,
- 0x1b, 0xd1, 0xc4, 0xdf, 0x1e, 0xbc, 0xfb, 0x70, 0x70, 0xf2, 0x6b, 0xf5,
- 0x14, 0x7e, 0x44, 0x68, 0xa3, 0x09, 0xfc, 0x2a, 0x3f, 0xb2, 0xf1, 0x35,
- 0xbc, 0x10, 0x9e, 0xda, 0x3f, 0xa5, 0xdf, 0x8a, 0x9e, 0x48, 0x5e, 0x95,
- 0x8d, 0xf0, 0x39, 0x10, 0x84, 0xc1, 0x1e, 0x83, 0x0e, 0x08, 0x61, 0x0b,
- 0x75, 0xfd, 0xb8, 0xaf, 0x30, 0xae, 0xf4, 0xcf, 0xf3, 0xbe, 0xc5, 0x70,
- 0x6d, 0xd7, 0xed, 0x20, 0x08, 0x12, 0xb2, 0x3e, 0xa6, 0x1e, 0x86, 0xe1,
- 0xd8, 0xb9, 0x72, 0x4e, 0xf2, 0x41, 0x9c, 0x9a, 0xb3, 0xa4, 0xfa, 0xc4,
- 0x2e, 0x91, 0x9e, 0xbe, 0xcf, 0xe1, 0x1f, 0xae, 0x1a, 0x37, 0xa8, 0x92,
- 0x81, 0x53, 0x68, 0x10, 0x1c, 0x4d, 0xbe, 0xb0, 0xc2, 0xea, 0xc8, 0x15,
- 0xdb, 0xf0, 0xf3, 0x15, 0x97, 0x5a, 0x69, 0x1a, 0x10, 0x39, 0x07, 0x87,
- 0x87, 0xdd, 0x58, 0x7a, 0xff, 0xe2, 0x72, 0x35, 0x97, 0x94, 0xbd, 0x69,
- 0x39, 0x28, 0x8b, 0x8b, 0x02, 0x4c, 0xfe, 0x65, 0xa0, 0xaa, 0x0c, 0x38,
- 0xa5, 0xb7, 0x45, 0xf6, 0x4e, 0x8b, 0xeb, 0x82, 0x61, 0x3c, 0xf7, 0x65,
- 0xdd, 0xe1, 0x1d, 0x63, 0x48, 0x72, 0x07, 0xc6, 0x54, 0xd5, 0x7a, 0x5c,
- 0xef, 0x87, 0xe1, 0xd1, 0x7b, 0xda, 0x8a, 0xb3, 0x83, 0xe1, 0xd0, 0x40,
- 0x48, 0x4a, 0x7a, 0xaa, 0x67, 0x6a, 0x52, 0x40, 0x94, 0x82, 0x58, 0x42,
- 0x68, 0xcd, 0x6a, 0x36, 0xb5, 0x68, 0x2a, 0x35, 0xcf, 0xe7, 0x53, 0x90,
- 0x15, 0xa0, 0xe2, 0x8f, 0x31, 0xf5, 0x77, 0x18, 0x2a, 0xcd, 0xa6, 0xeb,
- 0x40, 0x55, 0x47, 0xce, 0x78, 0xe2, 0x92, 0xdb, 0xd7, 0x54, 0x96, 0xcc,
- 0x3b, 0x9d, 0x68, 0x7a, 0x86, 0x53, 0x65, 0xdb, 0x0f, 0xba, 0xb2, 0x7a,
- 0xc3, 0xe3, 0xf3, 0xa3, 0xe8, 0xe0, 0xc3, 0xf9, 0x9b, 0x1e, 0x6f, 0x5e,
- 0x1b, 0x46, 0x98, 0x02, 0x0f, 0x70, 0xc2, 0x52, 0xad, 0x88, 0x51, 0xa8,
- 0xa5, 0x60, 0x92, 0x10, 0xf9, 0xfb, 0xec, 0x37, 0x9f, 0xc4, 0x02, 0x81,
- 0xad, 0xea, 0x7d, 0xd8, 0xdd, 0x2e, 0x03, 0xac, 0xf0, 0x40, 0x8f, 0x57,
- 0xe5, 0x26, 0x3a, 0xc5, 0x9d, 0xbc, 0xd1, 0xdd, 0x65, 0x5b, 0xda, 0xbe,
- 0x32, 0x3f, 0xf0, 0x8e, 0xc9, 0x19, 0x96, 0x8e, 0xca, 0x98, 0x68, 0xbc,
- 0xce, 0xe9, 0xe3, 0x02, 0xb2, 0x8d, 0x6a, 0x17, 0xf9, 0x51, 0x02, 0xed,
- 0x68, 0x6c, 0x73, 0x1e, 0x93, 0x6d, 0x42, 0xbd, 0xa5, 0x0d, 0x9a, 0xbd,
- 0xb8, 0xca, 0x39, 0x44, 0x0d, 0x93, 0x4e, 0xca, 0xb1, 0x41, 0x90, 0xf3,
- 0xf5, 0x70, 0xcd, 0x89, 0xc7, 0xaa, 0x25, 0x4a, 0xaf, 0xfb, 0x20, 0x81,
- 0x50, 0x07, 0xd7, 0xcf, 0x34, 0xfc, 0x36, 0x51, 0x22, 0x9b, 0xf7, 0x1e,
- 0xae, 0xa4, 0xa5, 0x08, 0x04, 0xba, 0x3c, 0x6c, 0x3b, 0xe9, 0xa7, 0xec,
- 0x62, 0xa3, 0x2b, 0x74, 0x67, 0x2f, 0x5a, 0xee, 0xb2, 0x4c, 0x8e, 0x27,
- 0x6a, 0x14, 0xbd, 0xa8, 0x1c, 0x21, 0xd4, 0xa1, 0x9a, 0xbf, 0x25, 0xf9,
- 0x65, 0xfb, 0xfc, 0x67, 0xf8, 0x38, 0x1f, 0x72, 0x7d, 0x38, 0xfb, 0x7b,
- 0xe5, 0x05, 0x2e, 0xda, 0x60, 0x7c, 0x10, 0x53, 0xbe, 0x9f, 0x50, 0xac,
- 0x9a, 0xe6, 0x5b, 0xd0, 0x7e, 0xb7, 0xc3, 0xc1, 0xe7, 0x67, 0xab, 0x98,
- 0x69, 0xa5, 0x8e, 0xf1, 0x73, 0x8a, 0xfc, 0xd2, 0x78, 0x01, 0xa4, 0x1a,
- 0xaf, 0xa5, 0x54, 0xc8, 0x0a, 0x70, 0x38, 0xde, 0x37, 0x81, 0xe9, 0x0e,
- 0x1e, 0xdd, 0x8e, 0x3b, 0xba, 0xcc, 0xe0, 0x12, 0x88, 0xaf, 0x0c, 0x26,
- 0xce, 0xe1, 0xb7, 0xaf, 0x22, 0xcb, 0x92, 0x9a, 0x35, 0xae, 0x05, 0xb8,
- 0xdc, 0x2e, 0xa6, 0xab, 0x31, 0x94, 0xd3, 0xe0, 0x06, 0x38, 0x7b, 0x40,
- 0xb1, 0xef, 0x71, 0x9a, 0xce, 0x4c, 0xe7, 0xf7, 0x8c, 0x40, 0x3a, 0xb2,
- 0x4a, 0x82, 0xdd, 0x53, 0x4c, 0xb1, 0x08, 0x00, 0xa9, 0x98, 0xf8, 0x2b,
- 0x66, 0x36, 0x99, 0x24, 0xab, 0xeb, 0xe2, 0x96, 0xc2, 0xec, 0x9b, 0xcf,
- 0xb7, 0x5f, 0x80, 0xc2, 0x75, 0x4f, 0xed, 0xd6, 0x2d, 0xad, 0xa8, 0x9d,
- 0x61, 0x30, 0x6d, 0xd3, 0x06, 0x1c, 0x5d, 0xb0, 0x04, 0x41, 0x97, 0x8d,
- 0x2a, 0x34, 0x09, 0xc9, 0xb1, 0x28, 0x58, 0x8b, 0x3e, 0x54, 0x39, 0xd0,
- 0x4f, 0x1d, 0xfe, 0x44, 0x2c, 0x2a, 0x3d, 0x47, 0x42, 0x71, 0xfe, 0xe8,
- 0xc0, 0x39, 0x27, 0xa0, 0xb2, 0x0f, 0x8f, 0xff, 0xd7, 0x51, 0x3f, 0x7a,
- 0x7f, 0x74, 0xfe, 0xbe, 0x1f, 0x0d, 0xcf, 0x4f, 0xdf, 0x77, 0xb4, 0x53,
- 0xaa, 0x19, 0xb5, 0x18, 0xc9, 0xa5, 0x89, 0x66, 0x7c, 0xf2, 0x1b, 0x7d,
- 0x47, 0xa8, 0xea, 0x89, 0x45, 0x6a, 0x95, 0x3e, 0x9e, 0x56, 0xc4, 0x31,
- 0x70, 0xab, 0x2e, 0x5c, 0x18, 0xef, 0xf8, 0x23, 0x98, 0x03, 0xd9, 0x10,
- 0x97, 0x6b, 0x2e, 0x30, 0x9a, 0x2d, 0x58, 0xdf, 0x18, 0xa3, 0xd1, 0x93,
- 0x7e, 0xaf, 0xa9, 0x3b, 0x1d, 0xcc, 0x21, 0x65, 0x32, 0x55, 0xa3, 0x2f,
- 0x79, 0x4f, 0x81, 0x49, 0xb1, 0xf7, 0x2e, 0xb9, 0xf9, 0x2d, 0x20, 0xfb,
- 0x03, 0xac, 0x0b, 0x1a, 0xee, 0xda, 0xc0, 0x4d, 0x8c, 0xae, 0x8a, 0x69,
- 0xca, 0xf1, 0x18, 0x72, 0xea, 0xa9, 0x08, 0xac, 0x22, 0xd3, 0x4d, 0x2e,
- 0x04, 0x0f, 0xac, 0x31, 0x19, 0xda, 0xe5, 0x95, 0x46, 0xe2, 0xb3, 0x59,
- 0xe9, 0x2c, 0xcd, 0xe1, 0x90, 0x51, 0x7b, 0x91, 0x15, 0x9d, 0xd5, 0xca,
- 0x23, 0x3a, 0x10, 0x39, 0xd2, 0x45, 0x5f, 0x0b, 0x48, 0x31, 0x20, 0xe0,
- 0x26, 0xfe, 0x67, 0x8b, 0x65, 0x58, 0xf7, 0x18, 0xcc, 0x88, 0xbf, 0x60,
- 0x00, 0xb3, 0xe1, 0x0f, 0x0f, 0xe2, 0xc3, 0xbc, 0x4f, 0xf0, 0x02, 0xc4,
- 0xc2, 0xee, 0x18, 0x8d, 0xc5, 0xb6, 0x10, 0x45, 0x20, 0xde, 0xa0, 0xe4,
- 0xc4, 0x1c, 0xac, 0x06, 0xfc, 0xaf, 0x66, 0x9d, 0x93, 0x96, 0x69, 0xab,
- 0xe9, 0x07, 0xd1, 0x99, 0x3c, 0xa5, 0x79, 0x19, 0x9e, 0xa8, 0x23, 0x31,
- 0x37, 0xb1, 0x5d, 0x81, 0x95, 0xb1, 0xfb, 0x82, 0x2c, 0xd3, 0xba, 0xbe,
- 0x5a, 0xa8, 0xb2, 0x1d, 0x18, 0xe2, 0x78, 0xe1, 0x96, 0x29, 0x0c, 0x83,
- 0x38, 0x3a, 0x0d, 0x60, 0x52, 0x6d, 0x61, 0xf3, 0x34, 0xbd, 0x56, 0xea,
- 0x93, 0xc5, 0xd9, 0x4e, 0x60, 0xbb, 0x54, 0x2a, 0x18, 0x86, 0x62, 0x8f,
- 0xa2, 0x0f, 0x39, 0xc3, 0x85, 0x53, 0x11, 0x46, 0x4e, 0x59, 0x38, 0x63,
- 0x43, 0x38, 0xec, 0x2a, 0x80, 0x79, 0xa5, 0x7c, 0xff, 0x8f, 0x0b, 0xb2,
- 0x45, 0x71, 0xd1, 0x7e, 0x73, 0x1e, 0x0a, 0x70, 0x50, 0x56, 0x8b, 0x5e,
- 0xd9, 0x32, 0x9a, 0x04, 0x53, 0xb9, 0xfe, 0xba, 0xb5, 0x52, 0x2a, 0x2b,
- 0xf6, 0x16, 0x7a, 0xe6, 0x6e, 0x9b, 0xa4, 0x27, 0x51, 0x3d, 0x83, 0x91,
- 0x76, 0x35, 0x03, 0xdc, 0x36, 0x71, 0x8a, 0x79, 0xb5, 0xc1, 0xe2, 0xb4,
- 0x5c, 0x50, 0x84, 0xe7, 0xf9, 0x04, 0x8b, 0xd2, 0x5a, 0xa8, 0xb2, 0x42,
- 0xc9, 0xa7, 0xe8, 0x0b, 0xc8, 0x7e, 0x4f, 0xc7, 0x72, 0x36, 0xfe, 0xbe,
- 0x16, 0x59, 0x3a, 0x51, 0xef, 0x58, 0xa5, 0x7b, 0x8f, 0x3b, 0x5e, 0x31,
- 0x46, 0x9a, 0xd3, 0xac, 0x3a, 0xcb, 0x33, 0x44, 0x9e, 0x2f, 0xca, 0x75,
- 0x3c, 0x2d, 0xd8, 0xa3, 0x27, 0x02, 0xd5, 0x41, 0xb3, 0xfa, 0x03, 0x49,
- 0x55, 0xaa, 0xc3, 0x93, 0x78, 0x85, 0xa1, 0x07, 0x81, 0xa2, 0x7f, 0xe9,
- 0x33, 0x69, 0x20, 0xb8, 0x69, 0x53, 0x06, 0x51, 0xa8, 0xb6, 0x43, 0x52,
- 0x9a, 0x28, 0xb9, 0xb6, 0xa9, 0x89, 0xcb, 0x69, 0xa3, 0x38, 0x99, 0xde,
- 0x33, 0xac, 0xe9, 0xaf, 0x54, 0x9d, 0x88, 0x2b, 0x42, 0x03, 0x36, 0x1d,
- 0x81, 0x2a, 0x92, 0xdc, 0xd4, 0x3c, 0xd4, 0x64, 0x8d, 0x36, 0x3f, 0x56,
- 0xa5, 0xf5, 0x7c, 0xe6, 0x2b, 0x40, 0xc7, 0x67, 0x76, 0x48, 0xe9, 0x60,
- 0x58, 0x70, 0x8a, 0x2f, 0x5e, 0xe7, 0xce, 0x24, 0x11, 0x52, 0xd5, 0x6c,
- 0x80, 0xbd, 0xe7, 0x3d, 0x14, 0x00, 0xd4, 0x90, 0x3c, 0xb5, 0xa7, 0x0b,
- 0xae, 0x53, 0x2f, 0xdf, 0xc1, 0xd5, 0x20, 0xea, 0x21, 0x64, 0x68, 0x8f,
- 0xa6, 0x2a, 0x50, 0x23, 0xd2, 0xe6, 0x43, 0xdf, 0x05, 0xa2, 0x34, 0x66,
- 0xeb, 0x1f, 0x36, 0xad, 0xcc, 0x65, 0x54, 0x66, 0xda, 0x9f, 0xd5, 0x0f,
- 0x79, 0x76, 0x47, 0x87, 0x7f, 0xed, 0x33, 0x7f, 0xe9, 0x32, 0xd6, 0xa2,
- 0x59, 0x29, 0x92, 0x1a, 0x62, 0x4d, 0x36, 0x66, 0xc7, 0xcd, 0x55, 0x61,
- 0xff, 0xdd, 0x81, 0x02, 0x48, 0x51, 0x51, 0x77, 0x93, 0x42, 0xfe, 0xc2,
- 0xf4, 0x7e, 0x80, 0xcf, 0x0d, 0xc6, 0xc5, 0x14, 0x8e, 0xbd, 0xf7, 0x8d,
- 0x29, 0x95, 0xbf, 0x7b, 0xca, 0x74, 0x6c, 0x93, 0xe2, 0x54, 0x19, 0x9a,
- 0x65, 0xc8, 0x47, 0x5a, 0x41, 0x64, 0x67, 0xc5, 0x62, 0x82, 0x3a, 0xc7,
- 0x50, 0xb3, 0x3e, 0x3a, 0xd6, 0xe1, 0x19, 0xe9, 0x6d, 0x20, 0x00, 0x4c,
- 0xce, 0x85, 0xf0, 0x6b, 0x34, 0x3e, 0x51, 0xe1, 0xfa, 0x2a, 0xb3, 0x1e,
- 0x3b, 0xf6, 0xc6, 0xaa, 0x2d, 0x4a, 0xd1, 0x25, 0x6a, 0x09, 0xd0, 0x46,
- 0x95, 0x17, 0x90, 0x6e, 0x96, 0x9b, 0x4e, 0xb9, 0xaf, 0xb4, 0x3b, 0x33,
- 0x97, 0xbf, 0xd3, 0x05, 0xc2, 0xcd, 0xa5, 0xa3, 0x31, 0x35, 0x93, 0xae,
- 0x0d, 0xfc, 0x2f, 0xaf, 0xd1, 0x4d, 0xc7, 0xb2, 0x5d, 0x87, 0xc3, 0xd7,
- 0xfe, 0xf4, 0x27, 0x2b, 0x02, 0x5b, 0x49, 0x16, 0xda, 0xf1, 0xb9, 0xb7,
- 0xf7, 0x3d, 0x45, 0x3f, 0x7e, 0x8c, 0xbf, 0x87, 0x7f, 0xfe, 0xd8, 0xd3,
- 0xd3, 0xcc, 0x0d, 0x1c, 0xc4, 0x64, 0x90, 0xdd, 0xe8, 0x3b, 0x97, 0x5f,
- 0x6d, 0x90, 0x3a, 0x49, 0x53, 0x3a, 0x3f, 0x3c, 0xe3, 0xe3, 0x57, 0x72,
- 0xc2, 0x06, 0xad, 0x0e, 0xc5, 0x0f, 0x59, 0x39, 0x28, 0xf0, 0xa5, 0xe1,
- 0x97, 0x62, 0xf1, 0x24, 0x7c, 0x5c, 0x75, 0x38, 0x7a, 0xad, 0x1f, 0xd9,
- 0x9c, 0x9c, 0x5b, 0x3e, 0xfb, 0x09, 0x68, 0xfc, 0x57, 0xe8, 0x4d, 0x64,
- 0x64, 0xc3, 0x41, 0x74, 0xa0, 0xe6, 0x05, 0xff, 0x80, 0xba, 0x3f, 0x54,
- 0x18, 0x73, 0xba, 0x85, 0x09, 0x19, 0x97, 0x07, 0x37, 0xb6, 0xe3, 0xf2,
- 0xcd, 0x5a, 0xfb, 0x0f, 0xe5, 0x68, 0xba, 0x69, 0x63, 0xbf, 0x32, 0xab,
- 0x3e, 0xe1, 0xf2, 0xa4, 0x12, 0x59, 0x52, 0xdc, 0x04, 0x22, 0x88, 0xbc,
- 0x1a, 0xd3, 0xc4, 0xd0, 0x52, 0x30, 0xbd, 0x0d, 0x16, 0xcc, 0xc3, 0x1a,
- 0xdb, 0x19, 0x70, 0x39, 0xdd, 0x22, 0xdd, 0x1d, 0x1a, 0xcf, 0x18, 0x69,
- 0xf8, 0xc1, 0xa7, 0x5c, 0x40, 0x44, 0xef, 0xe1, 0xcf, 0xc2, 0x0e, 0x07,
- 0xba, 0xc5, 0x04, 0x61, 0x2c, 0xd8, 0x27, 0x42, 0x1e, 0x2b, 0xd3, 0x7a,
- 0x41, 0x4f, 0x01, 0x93, 0x24, 0xc9, 0x49, 0x75, 0xd1, 0x19, 0x98, 0x22,
- 0x86, 0x43, 0x1d, 0x30, 0x7f, 0x06, 0xd7, 0xc1, 0xab, 0x7b, 0xad, 0x1d,
- 0xf0, 0x3a, 0x4c, 0x4b, 0x0a, 0x95, 0x5a, 0x7f, 0x23, 0x41, 0xb5, 0x64,
- 0xa8, 0xd2, 0x8c, 0x4b, 0x98, 0x03, 0xf7, 0xfe, 0x24, 0xd8, 0x45, 0x2d,
- 0xd9, 0xc6, 0xf4, 0x09, 0xd5, 0xb9, 0xbd, 0xc8, 0x84, 0x54, 0xd4, 0x53,
- 0xdd, 0x80, 0x35, 0x18, 0x08, 0x27, 0x88, 0x43, 0x20, 0xcc, 0x09, 0xf8,
- 0x27, 0x5d, 0x1a, 0x58, 0xcd, 0x7c, 0x9b, 0xa3, 0xcb, 0xb4, 0xf2, 0xad,
- 0x4d, 0x9a, 0xfc, 0x34, 0xd4, 0x07, 0xf0, 0x31, 0x9a, 0x42, 0x99, 0x2e,
- 0xd7, 0xf5, 0xa1, 0xa5, 0x29, 0xb1, 0x9b, 0xd8, 0x6b, 0x3d, 0xc1, 0x3f,
- 0xab, 0x3e, 0x65, 0xfc, 0x8b, 0x38, 0x9b, 0x3d, 0xdc, 0x60, 0x06, 0xf9,
- 0x53, 0x9b, 0x27, 0x36, 0x84, 0xa7, 0xb9, 0x46, 0xab, 0xf9, 0xd5, 0x15,
- 0x81, 0xde, 0xfa, 0xd9, 0xb3, 0x75, 0xe5, 0x00, 0x5e, 0x48, 0x23, 0x6a,
- 0xb8, 0xb0, 0x88, 0x36, 0x8d, 0x8e, 0x11, 0x23, 0x81, 0x68, 0xcf, 0x29,
- 0x9a, 0xa3, 0x9a, 0x77, 0x27, 0xaa, 0x15, 0x16, 0x23, 0xb2, 0x10, 0xb3,
- 0x6a, 0x5e, 0x99, 0xc6, 0x3a, 0xcf, 0xb6, 0xa4, 0xcf, 0x28, 0x9b, 0xc6,
- 0xeb, 0x78, 0xa8, 0x52, 0xbf, 0x5a, 0x20, 0xe0, 0x7d, 0xc4, 0x41, 0x3a,
- 0xcc, 0xf4, 0xd9, 0xe7, 0x83, 0xe7, 0x3b, 0x83, 0x8d, 0xb6, 0xdc, 0xe7,
- 0x34, 0x76, 0x4e, 0x2d, 0x62, 0x65, 0xab, 0x23, 0xdf, 0x5d, 0x5e, 0x41,
- 0x07, 0xb7, 0x69, 0xd6, 0x80, 0x91, 0x65, 0x6e, 0x8d, 0xc3, 0xbd, 0x4d,
- 0x4a, 0xd3, 0xac, 0xc1, 0xc5, 0x8c, 0x6d, 0xab, 0x17, 0x97, 0x44, 0xd1,
- 0xc1, 0xf2, 0x7c, 0xe6, 0xb2, 0xc2, 0x72, 0x9a, 0x69, 0x27, 0x73, 0x55,
- 0x93, 0x78, 0x34, 0x1a, 0xc5, 0xa4, 0x70, 0xed, 0xb3, 0x1e, 0xb8, 0x2e,
- 0x5a, 0x58, 0x58, 0x43, 0x1d, 0xa6, 0xb2, 0xe3, 0x87, 0x87, 0x87, 0xa2,
- 0x30, 0x9e, 0x5f, 0xb7, 0x34, 0x37, 0xd3, 0xfd, 0x40, 0xd4, 0xd6, 0x60,
- 0x95, 0x7d, 0x75, 0x3d, 0xaf, 0xf1, 0x40, 0xb2, 0xa5, 0xa5, 0xb7, 0x9c,
- 0x81, 0x65, 0x69, 0xb5, 0x2e, 0x2b, 0x80, 0x2b, 0xfa, 0x36, 0x85, 0xd9,
- 0x6f, 0x0a, 0x52, 0xa6, 0x0c, 0x11, 0xc9, 0x2f, 0xca, 0xd8, 0x16, 0x91,
- 0xca, 0xf5, 0x8d, 0xb9, 0x0d, 0x2d, 0x74, 0x86, 0x55, 0x28, 0xed, 0x5f,
- 0x47, 0xa1, 0xcf, 0x26, 0x99, 0xe4, 0x8b, 0x26, 0xf2, 0xad, 0xf6, 0xd8,
- 0x4f, 0x10, 0x1c, 0x0d, 0xf2, 0xcb, 0xb4, 0x1a, 0xbf, 0xc1, 0x5d, 0xae,
- 0x96, 0xdb, 0x66, 0x79, 0xb3, 0x63, 0xa7, 0xc3, 0x32, 0x1e, 0x0d, 0x6a,
- 0xda, 0xd0, 0x68, 0xf5, 0x90, 0xfa, 0x92, 0x61, 0x4f, 0x59, 0x3a, 0xee,
- 0x87, 0xd7, 0x98, 0x4a, 0x3a, 0x81, 0x7d, 0x07, 0x62, 0x54, 0x24, 0x41,
- 0x69, 0xcd, 0xc3, 0xe1, 0xc9, 0xfa, 0xf9, 0xc9, 0xd0, 0x2b, 0xb8, 0xb9,
- 0xc7, 0x30, 0x12, 0x85, 0x8b, 0x9a, 0x81, 0x0a, 0xa6, 0x3c, 0x75, 0xef,
- 0x14, 0x4d, 0xc2, 0x1c, 0x5e, 0xfe, 0x42, 0x10, 0xfc, 0x78, 0x9e, 0x9b,
- 0x22, 0x4d, 0x13, 0xc6, 0xc9, 0xd3, 0x9c, 0x30, 0xe6, 0x50, 0x09, 0xa3,
- 0x93, 0x49, 0x09, 0xf9, 0x55, 0xf4, 0xee, 0xe0, 0x1c, 0xeb, 0x2e, 0x6b,
- 0xc9, 0x48, 0xbb, 0x2c, 0x3c, 0x09, 0xa2, 0x1d, 0xf1, 0x4c, 0x47, 0x9b,
- 0x64, 0xa4, 0xad, 0xe0, 0xac, 0x0b, 0x8f, 0xb9, 0xa2, 0x52, 0x86, 0xfe,
- 0x05, 0xbb, 0x1a, 0xdc, 0xbb, 0xce, 0xad, 0x83, 0x97, 0x9c, 0x8b, 0xc0,
- 0x65, 0x8c, 0xe0, 0x4e, 0x32, 0xf1, 0x82, 0xbb, 0xf9, 0x5e, 0xee, 0x50,
- 0xd9, 0x22, 0x73, 0x9a, 0x28, 0x72, 0x30, 0x29, 0xae, 0x32, 0xc2, 0x40,
- 0xe1, 0x6d, 0xe6, 0xa2, 0x3b, 0x89, 0xba, 0x7b, 0x90, 0xc5, 0x4c, 0xd8,
- 0x48, 0x60, 0x4a, 0x5b, 0x1d, 0xf4, 0xf8, 0xdc, 0xe2, 0x0d, 0x6d, 0x36,
- 0x44, 0x9a, 0x1c, 0x2b, 0x50, 0x87, 0x8f, 0x83, 0x81, 0x62, 0x33, 0x1b,
- 0x81, 0x71, 0x38, 0xba, 0x1f, 0x30, 0x12, 0x4f, 0xd5, 0xac, 0x0d, 0xc8,
- 0x1a, 0xdd, 0xaa, 0x4c, 0x74, 0x02, 0x73, 0x93, 0x82, 0x85, 0xad, 0xb2,
- 0xc6, 0x27, 0xef, 0x92, 0xf0, 0xe0, 0x32, 0x51, 0x9c, 0x66, 0x1b, 0xc2,
- 0xaf, 0xf1, 0x26, 0xbf, 0xf2, 0x74, 0xa7, 0x6f, 0x15, 0x74, 0x6d, 0xdc,
- 0x6f, 0xf7, 0xd8, 0xb3, 0xfd, 0xdc, 0xd1, 0x07, 0x4b, 0x14, 0x73, 0x1b,
- 0x00, 0x73, 0x3b, 0xd8, 0x60, 0xef, 0xe6, 0x7e, 0xbb, 0x1d, 0x72, 0xe9,
- 0xf7, 0x0c, 0x6d, 0x20, 0x96, 0x53, 0xca, 0x1b, 0x96, 0x3c, 0xb4, 0x86,
- 0xfb, 0xfa, 0xc8, 0x69, 0xb2, 0xdd, 0x02, 0x36, 0xa7, 0x22, 0x36, 0xfd,
- 0x1d, 0x27, 0x31, 0x62, 0x0c, 0xff, 0x36, 0x03, 0x11, 0x71, 0x1b, 0xb6,
- 0x97, 0xd9, 0x20, 0x3a, 0xb7, 0x9d, 0x7b, 0xf9, 0xa4, 0xb2, 0x59, 0x91,
- 0x9a, 0xbc, 0x7d, 0x84, 0x07, 0xd6, 0xac, 0xa6, 0xff, 0xb9, 0xa2, 0x98,
- 0xb8, 0x85, 0xc7, 0x76, 0xc7, 0x97, 0x66, 0xfe, 0x5e, 0x33, 0x44, 0x1b,
- 0x07, 0xef, 0xdb, 0xd9, 0x72, 0xb6, 0x87, 0xe2, 0xf9, 0x78, 0x69, 0x14,
- 0xb4, 0xba, 0xc5, 0xf3, 0x79, 0x73, 0x74, 0xf0, 0xaa, 0x13, 0xd2, 0xee,
- 0xb7, 0x68, 0x93, 0x68, 0x9c, 0xea, 0x17, 0x29, 0xf7, 0x0b, 0x9f, 0x8b,
- 0xab, 0x2e, 0xa1, 0xcd, 0x31, 0x8c, 0xcf, 0x50, 0x86, 0x29, 0xc1, 0xf9,
- 0x85, 0x7d, 0x73, 0xe2, 0xc4, 0xe8, 0xf4, 0xce, 0xb9, 0x69, 0x5b, 0xe2,
- 0xb2, 0x45, 0xf3, 0x8b, 0x4b, 0x57, 0x97, 0x6d, 0xb6, 0x8b, 0x9c, 0xfe,
- 0xf8, 0xd6, 0xb8, 0xf4, 0xb4, 0x6d, 0xad, 0x6b, 0x3a, 0xed, 0x26, 0x57,
- 0xe9, 0xe7, 0xc5, 0x64, 0xdc, 0x5b, 0x76, 0xa4, 0xe3, 0xf6, 0x60, 0x4f,
- 0xcb, 0xd2, 0x60, 0x31, 0xfb, 0x1d, 0xfe, 0xd3, 0xdb, 0xf2, 0xf8, 0x8a,
- 0xce, 0xf3, 0xa4, 0xb8, 0x28, 0x2e, 0x2f, 0x17, 0xa4, 0xa4, 0x70, 0x77,
- 0x2c, 0xaa, 0xb4, 0xe5, 0x63, 0xd3, 0x43, 0x6e, 0xc2, 0xf7, 0x2e, 0xb8,
- 0x77, 0x5a, 0x09, 0x22, 0xac, 0x27, 0x89, 0xbc, 0x02, 0x6e, 0xed, 0x69,
- 0x18, 0x4e, 0x50, 0xf4, 0x5e, 0xb2, 0xab, 0xd5, 0x28, 0x26, 0x4c, 0x2e,
- 0x03, 0xf4, 0x92, 0x48, 0xae, 0x0c, 0xb7, 0xc2, 0x06, 0xe6, 0xfb, 0xc7,
- 0x3f, 0xbf, 0xff, 0xd1, 0x43, 0x72, 0xe3, 0x00, 0x03, 0xd6, 0x31, 0x53,
- 0x0e, 0x20, 0x85, 0x62, 0xeb, 0x2a, 0x9d, 0x5c, 0xda, 0xc6, 0xcb, 0x38,
- 0xca, 0x74, 0xc0, 0x19, 0xf7, 0x5a, 0x7a, 0x5c, 0xd1, 0xb8, 0x81, 0xd2,
- 0x37, 0x0b, 0x76, 0x2d, 0x38, 0x22, 0xd8, 0xca, 0x75, 0x42, 0xc7, 0xc6,
- 0xd4, 0xcf, 0x98, 0x76, 0x8a, 0xca, 0x87, 0x5c, 0x5c, 0x16, 0x4a, 0x4b,
- 0xc3, 0x7c, 0x50, 0xb7, 0xba, 0x95, 0x8f, 0xe0, 0xb1, 0x89, 0xa9, 0x2c,
- 0x29, 0xc3, 0x11, 0xed, 0x38, 0x50, 0x66, 0xf3, 0x8f, 0xef, 0x7f, 0xfc,
- 0x27, 0xfc, 0x5f, 0xef, 0x51, 0xbd, 0xac, 0x98, 0x13, 0xdc, 0x0e, 0x61,
- 0xee, 0x5d, 0x7b, 0x0d, 0x02, 0xe3, 0x3e, 0x4e, 0xef, 0xd3, 0x0b, 0x10,
- 0xd4, 0x95, 0x82, 0xce, 0xc5, 0xd3, 0x2a, 0xda, 0x9f, 0x82, 0xac, 0xc9,
- 0x3a, 0xe0, 0x08, 0xdf, 0xe0, 0x6b, 0x30, 0x7b, 0x79, 0xcf, 0xf4, 0x8f,
- 0xbb, 0x2a, 0x4a, 0xd8, 0xa2, 0xa9, 0x20, 0x95, 0x08, 0x4c, 0x4b, 0xd3,
- 0x39, 0x49, 0x15, 0x8f, 0x9e, 0x83, 0x0f, 0x1b, 0xd7, 0x60, 0x9d, 0xaf,
- 0xd3, 0x58, 0x44, 0x6c, 0xa0, 0x68, 0x3c, 0x07, 0x3b, 0x09, 0x08, 0x38,
- 0xfa, 0xc4, 0x6e, 0x3a, 0x8c, 0x11, 0x5c, 0x65, 0xb4, 0xff, 0xfc, 0x7c,
- 0x30, 0xc7, 0x59, 0x30, 0x1a, 0x4c, 0x2b, 0x0b, 0x73, 0xfb, 0x88, 0x23,
- 0x05, 0x71, 0x12, 0x9c, 0x05, 0x0e, 0xb4, 0x87, 0x24, 0x8e, 0xd8, 0xe1,
- 0xc8, 0x05, 0xde, 0x15, 0xcf, 0x88, 0xac, 0x86, 0xc5, 0xac, 0xa9, 0xb8,
- 0x40, 0x56, 0x03, 0xfa, 0x49, 0x7f, 0xd1, 0x44, 0x8d, 0xc3, 0x60, 0x12,
- 0x94, 0x71, 0x8c, 0x61, 0x4c, 0x37, 0x19, 0x1b, 0x54, 0x2f, 0xb7, 0x85,
- 0x0f, 0x55, 0xdf, 0x27, 0x08, 0x06, 0x90, 0x4e, 0xf8, 0xea, 0x09, 0xb5,
- 0x38, 0xb5, 0x76, 0xa1, 0xdc, 0x8b, 0x70, 0xd6, 0xb1, 0x47, 0x1e, 0x01,
- 0x79, 0x48, 0x44, 0x93, 0x30, 0x77, 0xc4, 0xb5, 0x18, 0x8c, 0x14, 0x90,
- 0xde, 0x4a, 0xae, 0x2c, 0xa0, 0x8b, 0x18, 0xcf, 0xd4, 0x3d, 0x93, 0xba,
- 0x8c, 0x31, 0xe4, 0x22, 0xbe, 0x4c, 0x49, 0x83, 0x28, 0xda, 0x5b, 0x0c,
- 0xd0, 0x1a, 0x0e, 0xa3, 0xcd, 0xd1, 0xb3, 0xdd, 0xdd, 0xdd, 0x88, 0xe3,
- 0xcd, 0x51, 0xef, 0xb8, 0xa6, 0x1b, 0xe5, 0xfd, 0xd1, 0xe1, 0xe9, 0xdb,
- 0xb7, 0x47, 0xef, 0x5e, 0x1d, 0xbd, 0x32, 0x27, 0x5f, 0x67, 0x6f, 0xd8,
- 0xc5, 0xbb, 0x7b, 0x31, 0xe9, 0x7d, 0x1c, 0x6d, 0xee, 0x6e, 0xc4, 0x5b,
- 0xbb, 0x1b, 0x11, 0xf0, 0x66, 0x62, 0x0a, 0xa9, 0x93, 0x09, 0xe2, 0x2e,
- 0x45, 0xd7, 0x73, 0x50, 0xe4, 0xb1, 0x6d, 0x57, 0x8d, 0xa0, 0x5b, 0x0a,
- 0xf6, 0x1a, 0xe5, 0x69, 0x8d, 0x0e, 0x33, 0x4f, 0x45, 0x4e, 0xc6, 0x83,
- 0x9e, 0xed, 0xc4, 0x62, 0xd3, 0x42, 0x44, 0x3f, 0x26, 0x8e, 0xdd, 0xda,
- 0xc0, 0x4f, 0x0d, 0xa2, 0xd7, 0xa0, 0x66, 0x5e, 0x16, 0x77, 0x11, 0x1b,
- 0x0a, 0x60, 0x0e, 0xa5, 0x7e, 0x3e, 0x48, 0xf3, 0x75, 0x7c, 0x7b, 0x9b,
- 0xdf, 0xfe, 0x9d, 0x53, 0xbb, 0xba, 0x4f, 0xf7, 0xee, 0xc6, 0x92, 0x4d,
- 0xbf, 0xa6, 0x28, 0x40, 0xa6, 0xc9, 0x1d, 0x83, 0x52, 0x0b, 0x3a, 0xf3,
- 0x02, 0xa8, 0xca, 0xdd, 0x97, 0x4d, 0xe0, 0x0d, 0x98, 0x0a, 0x35, 0x2d,
- 0xd6, 0x22, 0xfe, 0x30, 0xb4, 0xc9, 0x90, 0x3d, 0x6f, 0x6f, 0x0e, 0xce,
- 0xf0, 0xe1, 0xe8, 0xec, 0xfd, 0xe9, 0x77, 0x7f, 0xb3, 0xa0, 0x08, 0x37,
- 0x9b, 0x5a, 0x28, 0x20, 0x80, 0x12, 0x40, 0x17, 0xd0, 0xf4, 0x73, 0x3f,
- 0xbd, 0xca, 0xa0, 0x13, 0xba, 0xfe, 0x19, 0x55, 0x47, 0x88, 0xe4, 0x58,
- 0xdf, 0x51, 0x50, 0x2f, 0x05, 0x54, 0x9c, 0x98, 0x8d, 0x04, 0x76, 0xda,
- 0x87, 0x18, 0xa3, 0x70, 0x15, 0xce, 0xe3, 0x2e, 0xe3, 0x36, 0xed, 0x59,
- 0x3e, 0xe6, 0x16, 0x0a, 0x8d, 0x48, 0x50, 0x5d, 0xce, 0x1b, 0x3e, 0x1e,
- 0x8d, 0xfc, 0x0c, 0x16, 0x43, 0x11, 0xce, 0xca, 0x6c, 0x9a, 0x94, 0xd9,
- 0xe4, 0xbe, 0xd1, 0xd5, 0x4f, 0x0b, 0x14, 0x28, 0x15, 0xc1, 0xf6, 0xad,
- 0x2b, 0x7c, 0x71, 0xa7, 0x6d, 0xd7, 0x39, 0x3d, 0x98, 0xe1, 0x5a, 0x99,
- 0xcd, 0x98, 0x5a, 0x4f, 0xe0, 0x9a, 0xc6, 0x56, 0x2d, 0xc7, 0x28, 0x77,
- 0xa6, 0x41, 0x75, 0x13, 0xfa, 0x76, 0xa3, 0xc1, 0x0f, 0x46, 0xc5, 0xed,
- 0xea, 0x7a, 0x10, 0xbd, 0x3e, 0x3e, 0x39, 0x5a, 0x8b, 0x5e, 0xa7, 0xb5,
- 0xd4, 0x1f, 0x6b, 0xa5, 0x10, 0xaa, 0x9f, 0xff, 0x41, 0x0a, 0xbf, 0xe9,
- 0x6b, 0x23, 0x90, 0x20, 0xc1, 0xd4, 0x6e, 0xb6, 0xf0, 0x49, 0xf7, 0xd5,
- 0x5a, 0x66, 0x66, 0x01, 0xa2, 0x25, 0xaa, 0x5c, 0x9a, 0x29, 0xae, 0x79,
- 0x2d, 0xc2, 0x62, 0xa1, 0xe2, 0x19, 0x45, 0x02, 0x1b, 0xb8, 0xc6, 0x4f,
- 0x44, 0xdd, 0x98, 0x4d, 0x7e, 0x1a, 0xce, 0x5b, 0x8a, 0x97, 0x38, 0x11,
- 0x24, 0xab, 0x66, 0x13, 0x14, 0x82, 0x21, 0xa8, 0xcd, 0x49, 0x6a, 0x6b,
- 0xee, 0xe9, 0xc4, 0x83, 0x2d, 0x6c, 0x3b, 0x72, 0x70, 0x97, 0xc6, 0x46,
- 0xd2, 0xc0, 0xa3, 0x76, 0xf0, 0x78, 0xb9, 0x1d, 0x53, 0xf3, 0x0e, 0xfe,
- 0xb8, 0xc1, 0xbf, 0x02, 0x4d, 0x2f, 0x08, 0x47, 0x83, 0x0e, 0x39, 0x98,
- 0xad, 0xa3, 0x34, 0x4e, 0xaa, 0x51, 0x96, 0x39, 0xfb, 0xf7, 0x46, 0xf7,
- 0x0f, 0x13, 0x3a, 0xf9, 0xcf, 0xf5, 0x2f, 0x17, 0xe0, 0x4d, 0x1f, 0xdd,
- 0xc1, 0x38, 0x4a, 0x5a, 0x3a, 0x40, 0xa3, 0xc9, 0x7c, 0x9c, 0x6a, 0x82,
- 0xb4, 0xda, 0x62, 0x0d, 0xce, 0x0f, 0x59, 0x75, 0xc4, 0xff, 0x36, 0x0b,
- 0x0c, 0xa3, 0x3c, 0x58, 0x94, 0xa6, 0x2a, 0x25, 0xe6, 0x45, 0xd9, 0x0b,
- 0x3e, 0x75, 0x3e, 0x5a, 0xb1, 0x46, 0x18, 0x42, 0x27, 0xcd, 0xb8, 0x45,
- 0xac, 0x28, 0x77, 0x58, 0xfb, 0x97, 0x34, 0xab, 0xff, 0xf8, 0xb1, 0x6b,
- 0x69, 0xa0, 0x4a, 0x9e, 0x5c, 0xae, 0x33, 0xaf, 0x02, 0x41, 0x55, 0x2b,
- 0x7b, 0x6c, 0xe2, 0x45, 0x91, 0x6b, 0x24, 0xfa, 0x56, 0xb3, 0xde, 0xfa,
- 0x52, 0x04, 0x7e, 0xc7, 0xcf, 0x4c, 0xee, 0x03, 0xda, 0xb3, 0x7c, 0xdd,
- 0xbd, 0x01, 0xda, 0x96, 0xac, 0xf9, 0x46, 0x61, 0x70, 0x54, 0xc5, 0x55,
- 0xe4, 0x5b, 0x51, 0x48, 0x3b, 0x8e, 0x42, 0xa6, 0x04, 0x83, 0x5b, 0x97,
- 0xd9, 0xe8, 0x53, 0x86, 0x39, 0xac, 0x55, 0x3d, 0x27, 0x15, 0x3f, 0xc9,
- 0xdd, 0x59, 0x9a, 0xde, 0xc7, 0xe3, 0x82, 0x28, 0x1d, 0x36, 0xca, 0x50,
- 0x25, 0x42, 0x5f, 0x21, 0x76, 0xa1, 0xd1, 0xd9, 0xf0, 0x6a, 0xcc, 0x91,
- 0x35, 0x6a, 0x3b, 0xe2, 0x25, 0xd0, 0xce, 0xce, 0x02, 0x3d, 0x37, 0x41,
- 0x6c, 0x61, 0xe2, 0x07, 0x85, 0x33, 0xa4, 0x3e, 0x9c, 0x62, 0x68, 0xa8,
- 0xa0, 0x93, 0xdd, 0x38, 0x88, 0xde, 0xa7, 0xd3, 0xe2, 0xc6, 0x36, 0xc8,
- 0xc4, 0x75, 0x0b, 0x8d, 0xbc, 0x92, 0x56, 0xd1, 0x10, 0x13, 0x9d, 0xdb,
- 0x94, 0x51, 0xd3, 0x78, 0x22, 0x5a, 0xc1, 0x24, 0x19, 0x55, 0x1c, 0xfc,
- 0x8b, 0xb0, 0xeb, 0x88, 0xd9, 0x3e, 0x4f, 0x90, 0x4c, 0xd0, 0x84, 0x41,
- 0xf0, 0xe8, 0x7c, 0x0f, 0xd8, 0x3f, 0xea, 0xbd, 0x01, 0x55, 0x74, 0xaf,
- 0x67, 0x1a, 0x0c, 0x4b, 0xba, 0x71, 0xda, 0xe2, 0x1c, 0xb2, 0xbd, 0x73,
- 0xaf, 0xf7, 0x34, 0x43, 0x20, 0xb1, 0x3d, 0x5b, 0xab, 0x9c, 0x36, 0x75,
- 0xba, 0x7e, 0x85, 0x94, 0xa9, 0x9b, 0xed, 0x13, 0x1a, 0xdf, 0xb5, 0x0f,
- 0x07, 0x80, 0x53, 0xfa, 0x2e, 0x3e, 0xa4, 0x8f, 0xc7, 0x6f, 0x68, 0xbc,
- 0x3f, 0xf7, 0x4c, 0x30, 0xab, 0xfd, 0x2b, 0x98, 0xf8, 0x67, 0xa1, 0xb4,
- 0x56, 0x71, 0x30, 0x30, 0x97, 0x50, 0x77, 0x01, 0xb9, 0x55, 0x12, 0xdb,
- 0xb4, 0x80, 0x60, 0xc6, 0xc7, 0xe3, 0x75, 0xb3, 0xe9, 0x9c, 0xf0, 0x1e,
- 0x30, 0xd5, 0x18, 0xe8, 0xa5, 0xc4, 0x04, 0x36, 0x30, 0x97, 0xc6, 0x71,
- 0x71, 0x19, 0x53, 0xc5, 0x15, 0xdc, 0x76, 0x9f, 0x30, 0xe1, 0xd6, 0x39,
- 0x75, 0x04, 0x2d, 0x47, 0xcd, 0x2b, 0xc6, 0xe3, 0x50, 0x0e, 0x6f, 0xc2,
- 0x09, 0xbe, 0xa5, 0xf1, 0xac, 0x6a, 0xd1, 0x26, 0xef, 0xe4, 0x9e, 0x84,
- 0x3f, 0xe9, 0xf5, 0x3c, 0xbd, 0xe5, 0x9a, 0x16, 0x44, 0x69, 0x96, 0xe2,
- 0x4a, 0xcf, 0x91, 0x4e, 0xa5, 0x96, 0x7d, 0xb6, 0xeb, 0x68, 0xd1, 0xe4,
- 0xd6, 0x98, 0x72, 0x1c, 0x89, 0x42, 0x6b, 0xf3, 0x99, 0x76, 0x6a, 0x7a,
- 0xb0, 0x70, 0x83, 0x1a, 0x31, 0xa1, 0x01, 0xa4, 0x99, 0xa8, 0x20, 0xd6,
- 0xbe, 0x34, 0xe5, 0xd7, 0x55, 0x7d, 0x8f, 0xb7, 0x81, 0x00, 0xa8, 0x06,
- 0x12, 0xfd, 0x60, 0xd2, 0x0c, 0x97, 0x23, 0x8b, 0x62, 0xbb, 0x87, 0x68,
- 0x4e, 0xf4, 0x12, 0x21, 0x49, 0x90, 0x1a, 0x82, 0xc4, 0xcf, 0x39, 0xc7,
- 0x5f, 0xc6, 0x21, 0x7c, 0x55, 0xda, 0x3d, 0x41, 0xa6, 0x4e, 0xc6, 0x2e,
- 0xb5, 0x38, 0x1d, 0xd8, 0x40, 0xd8, 0x34, 0x15, 0xb6, 0x5d, 0xf7, 0x82,
- 0x76, 0xa2, 0xe8, 0x84, 0x8a, 0x2c, 0x57, 0x7a, 0x6c, 0x25, 0x38, 0xf1,
- 0x55, 0xab, 0x48, 0x9a, 0x8e, 0x25, 0xb9, 0x9f, 0x78, 0x09, 0x49, 0x08,
- 0xe0, 0xc4, 0xd7, 0x0d, 0xb6, 0x9f, 0x07, 0x3e, 0x4d, 0x49, 0x54, 0x28,
- 0x2b, 0xc8, 0x5a, 0x02, 0x13, 0xc2, 0x2b, 0xc8, 0xda, 0x63, 0x20, 0x95,
- 0x14, 0x9d, 0x2c, 0x72, 0xda, 0xb8, 0xd3, 0x7b, 0xa8, 0xa1, 0x72, 0xa3,
- 0xdd, 0x87, 0x9c, 0x2a, 0xfd, 0x27, 0x56, 0xc3, 0xf5, 0x1d, 0x9f, 0x25,
- 0x27, 0x28, 0xa7, 0xb9, 0x02, 0x65, 0x05, 0xe2, 0x7e, 0x9c, 0x9d, 0x20,
- 0xdf, 0x8f, 0x3a, 0x71, 0xf1, 0xbe, 0x3d, 0x78, 0xff, 0xee, 0xf8, 0xdd,
- 0xd7, 0x7b, 0xb6, 0xe1, 0x12, 0x09, 0x46, 0xd3, 0x6c, 0xa3, 0xd5, 0x25,
- 0x9d, 0xba, 0x25, 0x12, 0xf7, 0x24, 0x93, 0x49, 0x67, 0x9b, 0xcf, 0x28,
- 0x66, 0x01, 0xce, 0x21, 0x88, 0x32, 0xe5, 0xb8, 0x30, 0x7b, 0x32, 0xb4,
- 0x52, 0x53, 0xb0, 0x1f, 0x88, 0x20, 0x75, 0x81, 0x3e, 0x8b, 0x00, 0xec,
- 0x53, 0x7c, 0xd2, 0x47, 0xd5, 0x1c, 0xab, 0xa0, 0x1c, 0x0d, 0x19, 0x19,
- 0x7a, 0x42, 0x8c, 0x53, 0xb8, 0xbc, 0xc3, 0xdd, 0x97, 0xa8, 0xb4, 0x05,
- 0xf1, 0x7a, 0xd1, 0x5f, 0x1a, 0xc8, 0xa1, 0xa9, 0xf8, 0x16, 0x21, 0xa3,
- 0x93, 0xfb, 0x8d, 0x4e, 0xa4, 0x25, 0x3c, 0x26, 0x61, 0xa0, 0x93, 0x2f,
- 0xe3, 0x34, 0x2c, 0x4b, 0x0f, 0xe3, 0x53, 0x09, 0xf8, 0x10, 0xa5, 0x65,
- 0x64, 0x32, 0xe7, 0xa3, 0xc6, 0x70, 0xd6, 0xf2, 0x53, 0x5b, 0x0a, 0x6a,
- 0x48, 0xb0, 0x38, 0xaa, 0xc9, 0xe9, 0x20, 0x9a, 0xdd, 0xd2, 0xaa, 0xb2,
- 0xa2, 0xec, 0x0b, 0x2b, 0xd5, 0x28, 0x45, 0xfe, 0x26, 0x8c, 0x66, 0x36,
- 0x49, 0x6d, 0x19, 0xf4, 0x72, 0xae, 0x45, 0x92, 0xd1, 0xaf, 0xd1, 0x88,
- 0x8f, 0xdf, 0x81, 0x64, 0xd8, 0x8b, 0xfe, 0xab, 0x48, 0x97, 0xf0, 0x10,
- 0xc2, 0xeb, 0x1f, 0x40, 0xf3, 0x89, 0x0f, 0xae, 0x48, 0xe4, 0xdd, 0xa7,
- 0x55, 0x0c, 0xcf, 0x27, 0x55, 0xba, 0x0e, 0xc6, 0xea, 0xc6, 0x72, 0x03,
- 0xf1, 0xf5, 0xb5, 0x9c, 0xa2, 0x78, 0xa0, 0xa5, 0x1c, 0x71, 0x72, 0x95,
- 0x6a, 0x7d, 0x47, 0xca, 0x3e, 0x46, 0x44, 0x9e, 0x72, 0x4b, 0x3c, 0xae,
- 0x59, 0x41, 0x9c, 0xcc, 0xa2, 0x7d, 0x34, 0x94, 0xae, 0x8a, 0xf2, 0xfe,
- 0x0b, 0x0f, 0xb8, 0x1e, 0x8b, 0xff, 0xf0, 0x19, 0xe1, 0x3c, 0xcc, 0x6a,
- 0x20, 0xfd, 0xc5, 0x96, 0xf6, 0x88, 0xb4, 0x77, 0x06, 0x19, 0x44, 0xda,
- 0xc5, 0xcc, 0x6b, 0x95, 0x8a, 0x88, 0x44, 0x0c, 0x73, 0xa7, 0x65, 0x59,
- 0x4e, 0x7e, 0x39, 0xab, 0xe1, 0x9c, 0xa8, 0x85, 0xc9, 0x5e, 0xd9, 0x14,
- 0x4d, 0x33, 0x4c, 0x40, 0x93, 0x8f, 0x05, 0x40, 0x06, 0x8c, 0x40, 0xaf,
- 0x06, 0x91, 0x3a, 0x88, 0x8c, 0x8c, 0xef, 0xc1, 0x44, 0x7b, 0xf4, 0x41,
- 0xfb, 0x3d, 0xe7, 0x16, 0x6d, 0x9b, 0x0e, 0xf2, 0x7d, 0x5a, 0x9e, 0x69,
- 0x0c, 0x68, 0x53, 0x6c, 0x02, 0xe3, 0xeb, 0x92, 0xe9, 0x23, 0x1d, 0x0d,
- 0xdd, 0x43, 0x4b, 0x24, 0x02, 0xf2, 0xbb, 0x99, 0xd4, 0x23, 0xc2, 0xc0,
- 0x59, 0xa9, 0xf8, 0x8e, 0x4b, 0x17, 0x96, 0xd0, 0x36, 0xc2, 0xa8, 0xdd,
- 0x9c, 0xe1, 0xda, 0x0d, 0x0d, 0xab, 0x1f, 0x28, 0x3d, 0x9b, 0x5f, 0x4c,
- 0xc7, 0xbb, 0xd1, 0x3e, 0xfc, 0xc7, 0x33, 0x0e, 0xa8, 0x98, 0x67, 0x78,
- 0x08, 0x06, 0x02, 0x8a, 0x7b, 0x54, 0x74, 0xb8, 0xa8, 0x50, 0x1c, 0xc2,
- 0xf8, 0xd7, 0xed, 0x2d, 0x60, 0x91, 0xbb, 0x44, 0xdb, 0x7f, 0xc0, 0x2a,
- 0xaf, 0xb2, 0x9a, 0x71, 0xa6, 0xbb, 0x50, 0x36, 0x1d, 0x37, 0x2d, 0x52,
- 0x74, 0x73, 0xeb, 0x45, 0x84, 0xa5, 0xb8, 0x6f, 0x5f, 0xed, 0x82, 0xc4,
- 0x4e, 0x47, 0x9f, 0xaa, 0xf9, 0x54, 0x19, 0x8b, 0x2b, 0x61, 0x48, 0x44,
- 0x79, 0x50, 0x66, 0x30, 0xf1, 0x49, 0x36, 0x42, 0xf0, 0x8b, 0x7e, 0x23,
- 0xa7, 0xe3, 0x52, 0x73, 0x3a, 0x1c, 0xe7, 0x95, 0x51, 0x77, 0x28, 0x91,
- 0x90, 0xd3, 0x74, 0x03, 0xd1, 0x76, 0xa0, 0x01, 0x7c, 0x1c, 0x5d, 0x7e,
- 0x60, 0xd6, 0x2e, 0xbd, 0x0d, 0x96, 0x98, 0xe9, 0xee, 0x68, 0x73, 0xb4,
- 0xf3, 0x72, 0x63, 0x6b, 0xe3, 0xd9, 0xce, 0x46, 0xb2, 0x9b, 0x5c, 0x6c,
- 0x5c, 0x6e, 0x6d, 0x6c, 0xef, 0xbc, 0xd8, 0xdd, 0x19, 0x6d, 0x6f, 0x6d,
- 0x26, 0x2f, 0xa2, 0x6a, 0xa9, 0xcc, 0x09, 0x19, 0xb9, 0xba, 0x4e, 0xb6,
- 0x76, 0x9f, 0x05, 0xf6, 0x8f, 0x7f, 0x11, 0xed, 0xf3, 0x9f, 0x4f, 0xd9,
- 0xc5, 0x24, 0xfa, 0x8a, 0x2a, 0x6b, 0x63, 0x2d, 0xff, 0x1e, 0xbe, 0x39,
- 0xc0, 0x21, 0xc1, 0xa8, 0xba, 0xf6, 0x7d, 0x37, 0xde, 0xce, 0x38, 0x7b,
- 0x31, 0x88, 0x0e, 0x17, 0xef, 0x45, 0x97, 0x22, 0xea, 0xec, 0x0c, 0xff,
- 0x1b, 0x3e, 0x9d, 0xfe, 0xb2, 0xad, 0x10, 0xba, 0xbc, 0x7b, 0xf5, 0xcd,
- 0xa7, 0xb7, 0xe7, 0x7f, 0xbd, 0x7b, 0xfb, 0xf5, 0x5f, 0x37, 0x4f, 0x5f,
- 0x8d, 0xa7, 0x6f, 0x7f, 0xfa, 0xeb, 0xf6, 0xdb, 0x9f, 0x46, 0x3f, 0xff,
- 0xed, 0xa7, 0x83, 0xfb, 0xd3, 0xf3, 0xbf, 0xed, 0xbe, 0x9d, 0xbe, 0xff,
- 0xf4, 0xf6, 0xa7, 0x6f, 0xa6, 0xef, 0x5e, 0xfd, 0xf5, 0xf3, 0xa7, 0xed,
- 0x0c, 0xec, 0x79, 0x13, 0xd6, 0x76, 0xa3, 0xe5, 0x5d, 0x43, 0xc1, 0xb9,
- 0x6f, 0x30, 0x1e, 0x83, 0x46, 0x38, 0xe1, 0x54, 0xbb, 0xf7, 0xa1, 0x82,
- 0x5b, 0xbe, 0x19, 0x9e, 0xdb, 0x00, 0xba, 0x89, 0x93, 0xab, 0x3c, 0xba,
- 0xf4, 0x01, 0x19, 0x49, 0xab, 0x9d, 0x81, 0x9a, 0xc5, 0x0e, 0x29, 0x4c,
- 0xbc, 0xbf, 0xe3, 0x84, 0x34, 0x1e, 0x0b, 0xfb, 0x40, 0xa5, 0xe2, 0x03,
- 0x21, 0xf3, 0x41, 0x71, 0xe2, 0x24, 0x30, 0xd8, 0x0e, 0xc1, 0x93, 0x1e,
- 0x43, 0xc0, 0x12, 0x48, 0x12, 0xb7, 0x37, 0x8d, 0x80, 0x1c, 0xd2, 0x78,
- 0x46, 0x43, 0xe2, 0x4e, 0x8f, 0xc5, 0xc2, 0xd9, 0x91, 0x0b, 0x58, 0xb0,
- 0x88, 0x4c, 0xb9, 0x2e, 0x3b, 0x57, 0x02, 0x6e, 0x54, 0x6d, 0x99, 0x98,
- 0x44, 0xbd, 0x9e, 0x83, 0x94, 0xb9, 0xfa, 0x73, 0x5a, 0x16, 0x52, 0x19,
- 0xbf, 0x46, 0x2b, 0xbd, 0x29, 0xb2, 0x71, 0x24, 0x48, 0xa0, 0xeb, 0x8a,
- 0x84, 0xed, 0x5d, 0x1d, 0x56, 0x89, 0x24, 0x74, 0x4a, 0x84, 0xc1, 0x86,
- 0x21, 0x89, 0x34, 0x06, 0x9a, 0xf1, 0x71, 0x11, 0xd8, 0x90, 0x77, 0xd8,
- 0x8a, 0x22, 0xf2, 0x5d, 0x6a, 0x98, 0xaa, 0x6d, 0x4e, 0x53, 0x66, 0xa9,
- 0xd4, 0x94, 0x32, 0x52, 0xa9, 0x3a, 0xb8, 0x82, 0xae, 0x65, 0x62, 0x00,
- 0x5e, 0xd1, 0xd2, 0x87, 0x01, 0x99, 0x8f, 0xf6, 0xe8, 0x09, 0xbd, 0xb2,
- 0xc8, 0xc9, 0xd8, 0x6c, 0x51, 0xb0, 0xd3, 0xe2, 0x6d, 0x18, 0x6f, 0x63,
- 0xf0, 0xb2, 0xa3, 0x8f, 0x59, 0x03, 0x0a, 0x1b, 0xa1, 0x4a, 0xb2, 0x5c,
- 0xf0, 0x53, 0x49, 0xe3, 0x47, 0xff, 0x20, 0x12, 0x13, 0xd1, 0xbf, 0x35,
- 0xeb, 0xcf, 0x5b, 0x1f, 0x3e, 0xb9, 0x8e, 0x4f, 0x64, 0x95, 0xc3, 0x85,
- 0xd8, 0x7e, 0x84, 0xd4, 0x3c, 0x92, 0x18, 0x26, 0x65, 0x50, 0xfb, 0xcd,
- 0x95, 0x9c, 0x10, 0x1a, 0xf0, 0xb3, 0x38, 0x59, 0xc7, 0x1a, 0xf6, 0x12,
- 0x21, 0xc4, 0x55, 0xa3, 0x98, 0x4e, 0xe2, 0x60, 0x34, 0x2a, 0x98, 0x10,
- 0x6e, 0x06, 0x21, 0xa5, 0x7a, 0xb6, 0xaa, 0x7c, 0xb9, 0xb2, 0x69, 0x7e,
- 0x0c, 0xff, 0xce, 0xcd, 0x64, 0xe8, 0xac, 0x60, 0xab, 0x31, 0x8e, 0x41,
- 0x14, 0xb7, 0xf9, 0x55, 0x89, 0x11, 0xa5, 0x18, 0xd9, 0x3f, 0x09, 0x25,
- 0x08, 0x85, 0x4e, 0x80, 0x9b, 0x42, 0xf8, 0xec, 0xd9, 0x60, 0xa3, 0xdf,
- 0xa0, 0x8a, 0x44, 0x0e, 0x17, 0x66, 0x10, 0x3e, 0xc4, 0x25, 0xbc, 0x8d,
- 0x4b, 0xb2, 0x07, 0x3e, 0xbd, 0x39, 0xd8, 0xec, 0xcb, 0x5f, 0xb7, 0xc4,
- 0x29, 0x89, 0x7f, 0xdf, 0x6e, 0xfa, 0x97, 0x9b, 0x5c, 0xb3, 0xd1, 0x37,
- 0x2f, 0x6f, 0x2c, 0x44, 0x51, 0x37, 0xbc, 0x83, 0x17, 0x49, 0x83, 0x65,
- 0xe0, 0x4d, 0xbf, 0x6b, 0x74, 0xe6, 0x1d, 0x34, 0xc7, 0xe7, 0xc5, 0xf9,
- 0x06, 0x88, 0xc0, 0xea, 0x0e, 0xf4, 0x14, 0x42, 0xe1, 0xb7, 0x97, 0xea,
- 0x06, 0xef, 0x10, 0x98, 0x39, 0xd4, 0x90, 0xce, 0x94, 0xfa, 0x19, 0xb9,
- 0x62, 0x11, 0x18, 0xbc, 0x0c, 0x1c, 0x79, 0xc7, 0xa1, 0xf2, 0x56, 0xfb,
- 0x28, 0xc2, 0xaf, 0x1f, 0x73, 0x14, 0x03, 0xe4, 0xdc, 0x7c, 0x1a, 0x25,
- 0x36, 0x9f, 0x44, 0x09, 0x7c, 0xcf, 0xa5, 0x04, 0x50, 0x66, 0xd0, 0x74,
- 0xdc, 0x38, 0x38, 0x14, 0x1b, 0xfd, 0x0e, 0x4a, 0x6c, 0x34, 0x28, 0xb1,
- 0xa8, 0xbf, 0x3d, 0x3d, 0x81, 0xb8, 0x23, 0x45, 0x19, 0xa3, 0x9b, 0x13,
- 0x0e, 0xcb, 0x55, 0xfa, 0x18, 0x42, 0xc1, 0xf1, 0xaa, 0xb0, 0x09, 0x1f,
- 0x25, 0x26, 0xa3, 0x68, 0xc0, 0x74, 0x36, 0xd3, 0x2d, 0x48, 0x2c, 0xfe,
- 0x20, 0x86, 0x00, 0x1d, 0xd0, 0x2d, 0x27, 0x2b, 0x82, 0x7e, 0x40, 0x0b,
- 0xff, 0x30, 0x23, 0x19, 0x80, 0x56, 0x45, 0xad, 0xf9, 0xe6, 0x14, 0x68,
- 0x02, 0x21, 0xdf, 0x35, 0x3b, 0x0b, 0xd3, 0xae, 0x39, 0xd4, 0x04, 0x95,
- 0x55, 0xe9, 0x77, 0x2a, 0x44, 0x21, 0x23, 0x47, 0x69, 0x72, 0x9b, 0x60,
- 0x6a, 0x9b, 0x74, 0x64, 0xd7, 0x49, 0x86, 0xba, 0xee, 0x89, 0x58, 0x43,
- 0xef, 0x9c, 0x8c, 0xd2, 0x28, 0xb2, 0x87, 0x71, 0xc4, 0x43, 0x0a, 0xc6,
- 0x0a, 0xa5, 0xa8, 0xda, 0xce, 0xd6, 0x81, 0x10, 0x1c, 0xc5, 0xcb, 0xf2,
- 0x50, 0x17, 0x8d, 0xe5, 0xf9, 0xca, 0xdb, 0xab, 0x27, 0x08, 0xa6, 0x96,
- 0x34, 0xea, 0x1c, 0xd9, 0xec, 0x40, 0xb0, 0x37, 0x1a, 0x57, 0xd4, 0xe4,
- 0x78, 0xd1, 0x50, 0x4b, 0x0e, 0x13, 0x97, 0x46, 0xd3, 0x12, 0x1b, 0x01,
- 0x93, 0xc3, 0x45, 0x81, 0xcb, 0x98, 0x8c, 0x83, 0x50, 0xb9, 0xb6, 0xcf,
- 0xd7, 0xcd, 0xf3, 0xec, 0xca, 0xc4, 0x26, 0x5f, 0x33, 0x63, 0x7b, 0x82,
- 0x0d, 0x9b, 0x53, 0xbc, 0x0c, 0xb0, 0xf9, 0x93, 0xce, 0xff, 0x56, 0x10,
- 0xe1, 0x9d, 0x99, 0x48, 0xf3, 0x07, 0xb9, 0x74, 0xc6, 0xde, 0x70, 0x4e,
- 0xf5, 0x90, 0xe1, 0x10, 0x65, 0x24, 0x2f, 0xb3, 0xdf, 0x67, 0x0b, 0xa7,
- 0x12, 0x9b, 0x86, 0x5f, 0x70, 0x79, 0x29, 0x02, 0x7f, 0xff, 0xc1, 0x89,
- 0xcc, 0xf9, 0x68, 0x35, 0xc2, 0x56, 0x5e, 0x91, 0xac, 0xcc, 0xd1, 0x42,
- 0xe4, 0xcb, 0x81, 0xdc, 0x33, 0xaf, 0x3c, 0x31, 0x34, 0x4b, 0x5c, 0xf7,
- 0xa4, 0x2b, 0xb4, 0xc9, 0xab, 0x3a, 0x94, 0x91, 0x0d, 0xe6, 0xf4, 0x13,
- 0x27, 0x7a, 0x4a, 0xc3, 0x3d, 0x23, 0x45, 0x3d, 0x92, 0x31, 0x3d, 0x56,
- 0xec, 0xbc, 0x68, 0x44, 0x44, 0x77, 0xb1, 0x66, 0xfb, 0x28, 0x0d, 0xba,
- 0x39, 0x35, 0x24, 0x90, 0xb7, 0xc3, 0x9c, 0x6a, 0xbc, 0xb2, 0xed, 0x32,
- 0x89, 0xbb, 0x59, 0x5a, 0x66, 0x53, 0xea, 0x47, 0x31, 0x88, 0x5e, 0xd9,
- 0x42, 0x13, 0x2c, 0xad, 0x07, 0xb9, 0xd4, 0xa6, 0xca, 0x78, 0x1e, 0xae,
- 0xc7, 0x08, 0x75, 0x03, 0x6a, 0x9c, 0x85, 0x6d, 0xa9, 0xe5, 0xb1, 0xc9,
- 0xfc, 0x64, 0x9c, 0x6a, 0xbe, 0x40, 0xdb, 0xa0, 0xe1, 0x80, 0xa6, 0xe6,
- 0x8b, 0x4a, 0x5a, 0x27, 0xd6, 0x86, 0x49, 0xce, 0x1a, 0x91, 0x7e, 0xdb,
- 0x4d, 0xf7, 0x36, 0xaa, 0x3d, 0x82, 0x3b, 0x84, 0x43, 0xa8, 0xe6, 0x8b,
- 0x14, 0x85, 0x42, 0xc5, 0x53, 0xdd, 0xa8, 0xf0, 0x99, 0x9b, 0x2c, 0x89,
- 0x0e, 0x26, 0x75, 0x3c, 0xbc, 0x19, 0xf5, 0xc5, 0x6e, 0x30, 0x94, 0xf2,
- 0xda, 0x5d, 0x51, 0xb8, 0x51, 0xfa, 0x4c, 0x60, 0xaa, 0x17, 0x35, 0x44,
- 0xa3, 0xae, 0x56, 0x6c, 0xfc, 0x69, 0x7a, 0x20, 0xee, 0xa2, 0x2b, 0xf3,
- 0x18, 0x07, 0xc1, 0xef, 0x45, 0x92, 0x7c, 0xaa, 0x74, 0x49, 0x12, 0xa0,
- 0x63, 0x68, 0x8c, 0x06, 0x8d, 0x1e, 0x70, 0xf5, 0xb6, 0x9c, 0xf9, 0xdc,
- 0xcd, 0x10, 0x71, 0x94, 0xff, 0xfa, 0xe1, 0xf8, 0xd0, 0x75, 0xdc, 0x98,
- 0xa4, 0xae, 0x76, 0x7b, 0x75, 0x9b, 0x45, 0xd5, 0x17, 0x24, 0x44, 0xee,
- 0xa2, 0x85, 0x74, 0x95, 0x32, 0x60, 0x2d, 0xdc, 0x6b, 0xec, 0x2d, 0x59,
- 0x6e, 0xde, 0x6d, 0x08, 0x5a, 0xf9, 0x53, 0xce, 0xfa, 0xf6, 0x2f, 0x3e,
- 0xeb, 0x5b, 0x03, 0x33, 0xd4, 0xaf, 0x7c, 0xd6, 0xb7, 0x97, 0x3d, 0xeb,
- 0x0b, 0x2f, 0xa1, 0xae, 0x53, 0xdf, 0x9e, 0x9d, 0x23, 0x05, 0x44, 0xf1,
- 0x6f, 0x76, 0xb4, 0x8b, 0x19, 0xe9, 0x35, 0x16, 0xb3, 0x38, 0x66, 0xeb,
- 0x3d, 0x04, 0x30, 0x24, 0x2d, 0xee, 0x8c, 0xe0, 0x3f, 0xe6, 0x1e, 0xb2,
- 0x6e, 0x43, 0x93, 0x13, 0x06, 0xc5, 0x13, 0x59, 0x6d, 0x31, 0x33, 0x02,
- 0x70, 0x99, 0xd9, 0x08, 0x1b, 0x1c, 0x4c, 0x08, 0xb9, 0x9c, 0x92, 0x78,
- 0xd8, 0xa0, 0x16, 0x0b, 0xaf, 0x9c, 0x53, 0x96, 0x52, 0x74, 0x30, 0x23,
- 0x57, 0xc6, 0xe6, 0xe0, 0x4e, 0xe3, 0x81, 0x01, 0x57, 0x71, 0x99, 0x12,
- 0x91, 0xc1, 0x22, 0x13, 0xd0, 0x81, 0xd6, 0x74, 0x70, 0x60, 0xb6, 0xe8,
- 0x27, 0x78, 0x82, 0xa8, 0xa3, 0x10, 0x9a, 0x9c, 0x5b, 0x18, 0xf5, 0xbe,
- 0x4a, 0x3c, 0x44, 0xed, 0xfb, 0x3a, 0x80, 0x25, 0x44, 0x97, 0x2f, 0x92,
- 0x61, 0x95, 0xcd, 0x4a, 0xb8, 0xea, 0x81, 0x90, 0x6b, 0xfd, 0x08, 0xeb,
- 0xaf, 0x88, 0x08, 0x08, 0xc4, 0x62, 0x12, 0x68, 0xa8, 0x45, 0xfb, 0x15,
- 0x06, 0x84, 0x05, 0xe0, 0xc3, 0x83, 0x44, 0xf9, 0x39, 0xd5, 0x1a, 0x49,
- 0xad, 0x40, 0x94, 0x4e, 0x60, 0xc1, 0x0e, 0x1b, 0xa1, 0xde, 0xa8, 0x98,
- 0xaa, 0x47, 0x8b, 0xa3, 0xf3, 0x04, 0xa7, 0xd5, 0xe7, 0x41, 0xc5, 0x88,
- 0x6f, 0x47, 0x9e, 0xee, 0x67, 0xcb, 0xdf, 0xa5, 0x41, 0x46, 0x59, 0xb6,
- 0x65, 0x5c, 0xab, 0x60, 0xcd, 0x61, 0xc4, 0x0c, 0x19, 0x5d, 0xd2, 0x5c,
- 0xda, 0xae, 0x1e, 0x49, 0x7e, 0x61, 0x31, 0xd8, 0x6c, 0x0c, 0x6a, 0x02,
- 0x63, 0x22, 0xe9, 0xb9, 0xfd, 0x1f, 0xa7, 0x7f, 0x4a, 0x0c, 0x33, 0xdc,
- 0x34, 0xdd, 0xbc, 0x38, 0xa2, 0xf4, 0x08, 0xfe, 0x82, 0x84, 0xb2, 0x39,
- 0x18, 0x68, 0x80, 0xcb, 0xd0, 0xb9, 0x85, 0xb1, 0x8a, 0xa2, 0xf8, 0x94,
- 0xa5, 0x1e, 0x70, 0xda, 0x98, 0x7a, 0x32, 0xb3, 0xf3, 0xcf, 0xb6, 0x46,
- 0x6c, 0xc8, 0x38, 0xed, 0x67, 0x38, 0x18, 0x0c, 0x02, 0x20, 0xbb, 0x37,
- 0x59, 0x7a, 0xdb, 0x50, 0x8f, 0x64, 0x66, 0x7d, 0x86, 0x64, 0xe5, 0x84,
- 0x9a, 0xb4, 0x95, 0x6c, 0xd4, 0x81, 0x19, 0xb2, 0x78, 0x0f, 0xb3, 0xe5,
- 0xb6, 0xab, 0x23, 0x4a, 0xf1, 0x89, 0x77, 0xaa, 0x0a, 0xc1, 0xbe, 0x61,
- 0x7f, 0xbf, 0xc8, 0xfa, 0xb7, 0x6d, 0x47, 0xf3, 0x3e, 0xc6, 0x60, 0xcb,
- 0x7b, 0xad, 0x1b, 0x72, 0x6f, 0x14, 0x9c, 0x1a, 0x83, 0x4f, 0x78, 0x92,
- 0x82, 0x1a, 0xef, 0x65, 0xb6, 0xcb, 0x30, 0xbf, 0x1c, 0x6a, 0x20, 0x52,
- 0xd3, 0x00, 0x14, 0x8b, 0x1c, 0x2c, 0xc6, 0x53, 0xd4, 0x76, 0x3b, 0x1c,
- 0xb5, 0xd6, 0xd3, 0xcb, 0x5f, 0x92, 0x44, 0xb2, 0xaa, 0x4e, 0xb9, 0x38,
- 0x18, 0x94, 0x98, 0x51, 0x2a, 0x01, 0x54, 0xe0, 0xac, 0xb6, 0xe3, 0x0a,
- 0x83, 0x23, 0xc1, 0x30, 0x36, 0x85, 0x91, 0x9b, 0xca, 0x92, 0xe8, 0x46,
- 0xec, 0x38, 0x34, 0xad, 0x99, 0x44, 0xe5, 0x05, 0xaa, 0x89, 0xa3, 0x12,
- 0xe7, 0x11, 0xfb, 0x1d, 0x78, 0x04, 0xfb, 0xc3, 0xb4, 0x1e, 0xa4, 0xd6,
- 0x86, 0x16, 0xc0, 0x4e, 0x49, 0x22, 0x48, 0xf2, 0xd8, 0xb8, 0xbd, 0xda,
- 0x33, 0xf7, 0x56, 0x7b, 0xda, 0xce, 0x7b, 0xa6, 0xf9, 0x80, 0xcd, 0xeb,
- 0xe1, 0xa6, 0x47, 0xd2, 0xd6, 0x95, 0x0b, 0x1a, 0x8c, 0xc6, 0x15, 0x82,
- 0x7c, 0x68, 0xe9, 0x59, 0xa2, 0x23, 0xc9, 0x8d, 0xe9, 0x7e, 0xcb, 0xf8,
- 0x95, 0x11, 0x5a, 0x59, 0xc1, 0x91, 0x0f, 0x0f, 0x16, 0xcc, 0x6e, 0x46,
- 0x6d, 0x74, 0x6a, 0x1d, 0x1d, 0x7f, 0x85, 0xdd, 0xeb, 0x4b, 0x34, 0xd4,
- 0x91, 0x4d, 0x99, 0xc4, 0x0c, 0x4b, 0x0c, 0x8f, 0x16, 0xf3, 0xd2, 0x03,
- 0xe2, 0x20, 0xe1, 0x2f, 0x90, 0xa3, 0x82, 0x32, 0xea, 0x1d, 0x0e, 0x3d,
- 0x14, 0xb8, 0x01, 0x83, 0x2a, 0x5d, 0x87, 0x53, 0x5c, 0xad, 0x57, 0xd5,
- 0x04, 0xbf, 0x57, 0x51, 0x03, 0x8c, 0xe0, 0x6d, 0x40, 0x6c, 0xce, 0x0a,
- 0x39, 0x30, 0x7b, 0xbf, 0xb1, 0xe1, 0x0e, 0x98, 0x8a, 0x61, 0x31, 0xea,
- 0x7e, 0xf3, 0x91, 0xa2, 0xfe, 0x41, 0x36, 0xd7, 0xac, 0x02, 0xf7, 0x41,
- 0x76, 0xb1, 0x4a, 0x33, 0x19, 0x93, 0x60, 0xc6, 0x44, 0x18, 0x1b, 0x0c,
- 0x2b, 0x7f, 0x47, 0x90, 0x47, 0x60, 0xcb, 0x10, 0xfe, 0xd0, 0x96, 0xc1,
- 0x0b, 0x19, 0x07, 0x55, 0x75, 0x8d, 0xdd, 0x80, 0xcc, 0x2f, 0x4c, 0x53,
- 0xed, 0x70, 0x13, 0x02, 0x83, 0xf5, 0xe1, 0xc6, 0x46, 0x6d, 0x80, 0xa9,
- 0xea, 0xce, 0xe2, 0xf0, 0xa1, 0x92, 0x98, 0x2e, 0xcd, 0xf2, 0x3e, 0x91,
- 0x24, 0x4b, 0xdf, 0x47, 0xf2, 0xde, 0xf2, 0x0e, 0xf4, 0xbb, 0x7b, 0xf3,
- 0x32, 0xd5, 0x7d, 0x24, 0xc4, 0x58, 0x92, 0xa3, 0x9d, 0x20, 0x38, 0x5a,
- 0x43, 0x41, 0x52, 0x98, 0x16, 0x6e, 0x53, 0xd7, 0x8e, 0x15, 0x9d, 0x71,
- 0x1b, 0x4f, 0x8c, 0xea, 0xb8, 0x08, 0x8b, 0x7c, 0x99, 0xdb, 0x32, 0x0a,
- 0x33, 0x8a, 0xd3, 0x6e, 0x1c, 0x1b, 0x77, 0x96, 0x5d, 0x80, 0x32, 0xe6,
- 0xda, 0x71, 0x12, 0xa4, 0x81, 0xeb, 0xcc, 0x66, 0x80, 0x52, 0x97, 0x1b,
- 0xe8, 0xfa, 0x11, 0x05, 0x70, 0x27, 0x70, 0x41, 0x05, 0x5a, 0x2a, 0x74,
- 0x81, 0x02, 0x3b, 0x2b, 0x43, 0xa8, 0x89, 0x3d, 0xeb, 0x38, 0xbc, 0xbd,
- 0xbd, 0x1d, 0x2c, 0x0a, 0xb8, 0xfd, 0xe2, 0xb4, 0xfc, 0xe6, 0x70, 0xa7,
- 0x79, 0x74, 0x02, 0x22, 0xeb, 0xce, 0x41, 0x50, 0x17, 0x2c, 0x2d, 0x9b,
- 0xa8, 0x1a, 0x7d, 0xf3, 0xfe, 0x75, 0xdf, 0x84, 0x64, 0x14, 0xc6, 0x9a,
- 0x92, 0xad, 0xaa, 0x80, 0xc1, 0x96, 0x66, 0x74, 0xe2, 0xb9, 0x81, 0xe3,
- 0xe1, 0xc1, 0xd9, 0xc7, 0x77, 0x47, 0xe7, 0x1f, 0xdf, 0x1f, 0x7c, 0x8b,
- 0x24, 0xe4, 0xbb, 0x04, 0x54, 0x4c, 0xcc, 0x92, 0x2b, 0x8b, 0x02, 0xb4,
- 0x85, 0xb7, 0x24, 0x3c, 0x73, 0x82, 0x30, 0xef, 0xa8, 0x3f, 0xa1, 0x96,
- 0x0c, 0x32, 0x4f, 0x9c, 0xcc, 0x9e, 0x23, 0x38, 0x90, 0x5e, 0x9f, 0xd2,
- 0x32, 0x4f, 0x27, 0x83, 0xa2, 0xbc, 0x42, 0xf9, 0xb1, 0xfe, 0x4a, 0x34,
- 0x81, 0xe0, 0x70, 0xeb, 0x52, 0x68, 0x81, 0x51, 0xb1, 0x9b, 0xf2, 0x12,
- 0xc3, 0x40, 0x4b, 0x33, 0xbf, 0xbb, 0x75, 0x4b, 0x1e, 0x81, 0x71, 0x5e,
- 0xd9, 0x01, 0x1c, 0x56, 0xdf, 0xa1, 0x8b, 0x7d, 0x76, 0xb3, 0xb3, 0xc8,
- 0x54, 0xac, 0x1b, 0x6e, 0x2b, 0x94, 0xba, 0x93, 0x9b, 0x54, 0xc4, 0x03,
- 0xfc, 0xc0, 0x2d, 0xc8, 0x49, 0x39, 0xfb, 0xbc, 0x1f, 0xc0, 0x06, 0x26,
- 0xdb, 0xb0, 0x30, 0x28, 0xd0, 0x04, 0xf0, 0x85, 0xa5, 0x44, 0x4b, 0x0b,
- 0x01, 0x98, 0xed, 0x52, 0xab, 0xef, 0x70, 0x77, 0x6f, 0x0d, 0xda, 0x16,
- 0xb1, 0x75, 0x0b, 0x46, 0xf1, 0x33, 0xdf, 0xdf, 0x0d, 0x1f, 0x76, 0x23,
- 0xff, 0xcf, 0x84, 0x74, 0xcf, 0x7e, 0x19, 0xe9, 0x9e, 0x3d, 0x9d, 0x74,
- 0x3b, 0x4f, 0x20, 0xdd, 0xb3, 0xdf, 0x9e, 0x74, 0x3b, 0x41, 0xd2, 0x39,
- 0x93, 0x8d, 0x7f, 0x42, 0xd2, 0xfd, 0x34, 0xcf, 0x3f, 0xc5, 0xb0, 0x6a,
- 0x54, 0x97, 0x63, 0x51, 0xb4, 0x3b, 0x9c, 0x51, 0x06, 0x6b, 0x84, 0xa2,
- 0x83, 0xdc, 0x02, 0x4c, 0x7a, 0x0e, 0xd2, 0x6b, 0x0a, 0x12, 0xc4, 0x4e,
- 0x10, 0x8d, 0xaa, 0x77, 0x79, 0x7f, 0xad, 0xe3, 0x23, 0x43, 0x88, 0xc9,
- 0x6a, 0x84, 0x7e, 0x76, 0x74, 0x5a, 0xf4, 0x64, 0x36, 0x3a, 0x6c, 0x4f,
- 0xd4, 0x4a, 0x16, 0x64, 0xde, 0xb1, 0xae, 0xe0, 0xfa, 0xa6, 0xab, 0x99,
- 0x24, 0x8e, 0x34, 0x0c, 0x25, 0xf8, 0x61, 0x41, 0x05, 0xc1, 0x54, 0xe8,
- 0x4b, 0x69, 0x22, 0xa1, 0x43, 0x67, 0xd2, 0x8b, 0xc5, 0x17, 0x89, 0xe7,
- 0xf7, 0x33, 0x1c, 0x30, 0xba, 0x28, 0x8b, 0xdb, 0x8a, 0x62, 0x9e, 0x93,
- 0x5b, 0x2c, 0x8a, 0xd0, 0x19, 0xb6, 0x26, 0x17, 0xb1, 0xd7, 0x48, 0xca,
- 0x2e, 0x13, 0x4f, 0x2d, 0x1f, 0x4d, 0x0a, 0x14, 0xa8, 0xe3, 0x27, 0xb8,
- 0x55, 0x42, 0x3b, 0x13, 0xc5, 0x17, 0xfa, 0xe5, 0xe5, 0x43, 0xd8, 0x17,
- 0x5c, 0x6b, 0x89, 0x6f, 0xf3, 0x9d, 0x3b, 0xb2, 0x3f, 0x88, 0x7f, 0x4a,
- 0x1a, 0xb8, 0xc7, 0x9f, 0xd2, 0x74, 0x96, 0x4c, 0x08, 0x62, 0x19, 0x6b,
- 0x3b, 0xf6, 0x3b, 0xca, 0x2b, 0x1b, 0xec, 0x57, 0x29, 0x18, 0x09, 0x57,
- 0x5e, 0xb9, 0xa6, 0x06, 0xdd, 0x16, 0xcc, 0x2f, 0x53, 0xca, 0x77, 0xc0,
- 0x3c, 0x83, 0x0b, 0xcf, 0x40, 0x24, 0x55, 0x5a, 0xab, 0x2a, 0xcc, 0x14,
- 0x50, 0x69, 0xbf, 0xb0, 0x3a, 0x50, 0xc4, 0xe3, 0x9b, 0x5e, 0x37, 0x54,
- 0xe3, 0x74, 0x93, 0x61, 0xf5, 0x65, 0xbb, 0xeb, 0x61, 0x6b, 0x04, 0x6a,
- 0x7f, 0xd1, 0x68, 0xe6, 0xcd, 0x2c, 0x82, 0x4f, 0x14, 0x46, 0x8b, 0xc0,
- 0xe4, 0xd1, 0x7b, 0x30, 0x44, 0xa6, 0x1e, 0xe3, 0x6a, 0xef, 0x46, 0x9e,
- 0xc5, 0xf9, 0xe1, 0xd9, 0xc7, 0xbf, 0x1c, 0x1d, 0x9d, 0x1d, 0xbf, 0x3a,
- 0x39, 0x92, 0x73, 0x69, 0x7e, 0xf4, 0xee, 0xfc, 0x9b, 0x13, 0xc4, 0x2b,
- 0x1d, 0x7d, 0xc2, 0x24, 0x5a, 0x49, 0xa2, 0x6b, 0x1f, 0x2b, 0xc9, 0x72,
- 0x93, 0xbb, 0xad, 0x0f, 0xb4, 0xc1, 0xde, 0xd5, 0xd1, 0xc1, 0xf1, 0x77,
- 0x60, 0xc5, 0x9e, 0xc5, 0x1f, 0xbe, 0x33, 0xe6, 0xeb, 0x5a, 0xd3, 0x83,
- 0xc5, 0xa8, 0x37, 0x6d, 0x7f, 0x93, 0xc1, 0xc0, 0x89, 0xe3, 0xbc, 0xb0,
- 0x1b, 0xd8, 0x59, 0x4a, 0xf9, 0x2b, 0xeb, 0x12, 0x08, 0x14, 0x90, 0x1b,
- 0xb5, 0x8b, 0x5f, 0x54, 0xc7, 0x89, 0x53, 0xad, 0xf8, 0x6c, 0x23, 0xd2,
- 0x4a, 0xd6, 0x25, 0xcf, 0x43, 0x8b, 0x25, 0xb7, 0x96, 0xbd, 0x7c, 0x1b,
- 0x44, 0x21, 0xfe, 0x6f, 0x94, 0x0a, 0x36, 0xb9, 0xff, 0x9e, 0xfa, 0x5a,
- 0x45, 0xfb, 0xf8, 0xdf, 0x2f, 0x02, 0xa6, 0xf6, 0x1a, 0xe8, 0x9f, 0x65,
- 0x76, 0x83, 0xb6, 0x12, 0x3c, 0xcc, 0x66, 0x02, 0x3e, 0x3b, 0x30, 0x29,
- 0x3a, 0x52, 0xc4, 0x85, 0xa3, 0x50, 0x01, 0x0d, 0x8d, 0x1a, 0x72, 0xce,
- 0x53, 0x7a, 0x24, 0x86, 0x3c, 0xcd, 0x68, 0x19, 0x70, 0xea, 0xab, 0xa3,
- 0xf7, 0xfd, 0xe8, 0xec, 0xe8, 0x2d, 0xc3, 0xec, 0x1c, 0xbd, 0xfb, 0x9a,
- 0xb2, 0xa6, 0xd5, 0xb1, 0x49, 0x98, 0x77, 0x9c, 0x5c, 0x5a, 0x87, 0x7a,
- 0x64, 0xf3, 0x16, 0xc0, 0xeb, 0x64, 0xc6, 0x54, 0x15, 0x68, 0x44, 0xbf,
- 0x3b, 0x7c, 0xbf, 0x21, 0x2a, 0x2c, 0x4d, 0xa8, 0x41, 0x2d, 0x3f, 0x97,
- 0xdb, 0x45, 0x4c, 0xac, 0x6b, 0xee, 0x54, 0xb4, 0x0f, 0xff, 0xf9, 0x22,
- 0xe8, 0x0e, 0x19, 0xbe, 0x59, 0xf3, 0xb7, 0x49, 0x74, 0x78, 0x53, 0x7c,
- 0x44, 0xad, 0xe9, 0x39, 0x4b, 0x95, 0x77, 0x6a, 0xe6, 0x3b, 0x02, 0xec,
- 0xd6, 0x88, 0x7b, 0x41, 0xf0, 0x32, 0x52, 0xa9, 0x72, 0xa0, 0x1e, 0xd0,
- 0xc3, 0x37, 0x7d, 0x3c, 0x7e, 0xd4, 0xf2, 0xd5, 0x6e, 0x42, 0x10, 0xc0,
- 0x93, 0xf2, 0x5d, 0x15, 0x3b, 0xd6, 0xa4, 0x87, 0xa3, 0x0e, 0x3e, 0xce,
- 0xc6, 0x84, 0xa1, 0x4c, 0x16, 0x66, 0x51, 0x62, 0x09, 0x4c, 0x14, 0xad,
- 0xfc, 0xbf, 0xeb, 0x68, 0x3b, 0xae, 0x67, 0xe3, 0x8f, 0x65, 0x95, 0xac,
- 0xb4, 0x6f, 0x76, 0xe7, 0xd7, 0x63, 0xfc, 0x75, 0xb4, 0x32, 0x30, 0x8f,
- 0xca, 0xdf, 0xf1, 0xe7, 0x21, 0x06, 0xd0, 0xfb, 0x9c, 0xbd, 0x96, 0x5a,
- 0x8f, 0x7c, 0x3a, 0x4b, 0xf3, 0xe1, 0xf0, 0x04, 0xfd, 0x9a, 0x65, 0x82,
- 0x66, 0xaa, 0x8a, 0xde, 0x34, 0xbf, 0xa2, 0x0e, 0x61, 0xb3, 0x4f, 0xa3,
- 0x6a, 0x73, 0xd3, 0xef, 0xf7, 0x6b, 0xd2, 0x84, 0x4d, 0x6d, 0xf9, 0xd9,
- 0x5f, 0x0e, 0x87, 0x7f, 0xd8, 0xdc, 0x24, 0x70, 0x81, 0x55, 0x2c, 0xb7,
- 0x7e, 0xbe, 0xbb, 0xb9, 0xb5, 0x16, 0xb2, 0x36, 0x3c, 0xe4, 0x73, 0xb2,
- 0x3e, 0xdc, 0x73, 0x41, 0xf9, 0xff, 0x82, 0xa5, 0x62, 0x06, 0x1e, 0xa7,
- 0x58, 0x53, 0x8a, 0x41, 0x26, 0x93, 0x56, 0x4b, 0xc5, 0xb6, 0x1e, 0x06,
- 0x2b, 0xfd, 0x8a, 0xeb, 0x19, 0x7a, 0x3c, 0xff, 0xbd, 0x9e, 0x61, 0x68,
- 0x03, 0xca, 0xc0, 0x8d, 0xb2, 0x1a, 0xf3, 0xa6, 0x0c, 0xc3, 0x76, 0xb2,
- 0x93, 0xbb, 0xae, 0xac, 0x6a, 0x34, 0xd8, 0x48, 0xd9, 0xda, 0x8f, 0x63,
- 0xa1, 0x56, 0xa0, 0x70, 0xc2, 0x4b, 0x93, 0x96, 0x19, 0xf5, 0x22, 0xe6,
- 0x20, 0x3c, 0x6a, 0x4e, 0xbe, 0xb6, 0xa1, 0xbf, 0x73, 0x8a, 0x9a, 0xa3,
- 0x7a, 0x95, 0xb6, 0xa4, 0xf7, 0xf4, 0x40, 0x6e, 0xf4, 0x82, 0x23, 0xfe,
- 0xde, 0xc2, 0x80, 0x0c, 0x7f, 0xd7, 0xe3, 0xf4, 0x4b, 0x04, 0x02, 0x13,
- 0x84, 0x44, 0xfa, 0x51, 0x5f, 0x06, 0x6f, 0x08, 0x89, 0xf2, 0x22, 0xda,
- 0x9f, 0xc0, 0x4a, 0x26, 0x61, 0x14, 0xb5, 0x23, 0xca, 0x2f, 0x8d, 0xfe,
- 0x92, 0x96, 0x17, 0x69, 0x59, 0x54, 0x2d, 0x68, 0x25, 0x1a, 0x58, 0x50,
- 0x33, 0x11, 0x9d, 0x03, 0x86, 0x91, 0x26, 0x93, 0x7e, 0x2c, 0x0e, 0xb9,
- 0x48, 0xb6, 0xcb, 0xc3, 0xf8, 0x5f, 0x21, 0x94, 0x27, 0x3c, 0x91, 0x55,
- 0x72, 0x99, 0xe2, 0x9f, 0x84, 0x7b, 0x31, 0xc6, 0x2f, 0x25, 0x13, 0xf8,
- 0x77, 0xd1, 0x76, 0x49, 0xac, 0x08, 0xf3, 0xaf, 0xc0, 0xad, 0xc2, 0xa3,
- 0xa1, 0xb8, 0x22, 0x8c, 0x60, 0x99, 0x87, 0xf4, 0xe9, 0xac, 0x18, 0x0a,
- 0xb3, 0x51, 0xd6, 0x59, 0xa5, 0xfd, 0xae, 0xe1, 0x9a, 0x0d, 0x1f, 0xba,
- 0x76, 0xf0, 0x5f, 0x7d, 0x3d, 0xc0, 0x26, 0x31, 0x0e, 0xd6, 0xe3, 0xf2,
- 0x8e, 0x8d, 0x4d, 0x9d, 0x22, 0x12, 0x8a, 0xd9, 0x28, 0x86, 0x84, 0x92,
- 0xf1, 0x7e, 0xbd, 0x40, 0xa2, 0xf2, 0x86, 0xcb, 0x56, 0xfa, 0xc2, 0x7e,
- 0xa8, 0x9c, 0xf8, 0x80, 0x61, 0x5c, 0x5d, 0x0a, 0x52, 0x06, 0x32, 0x02,
- 0x45, 0x8d, 0xd9, 0x87, 0x22, 0xb8, 0x8d, 0x82, 0x9c, 0x89, 0xbe, 0xd4,
- 0xbe, 0xe8, 0x91, 0x7e, 0xaa, 0x26, 0x27, 0x29, 0x61, 0xf0, 0x5b, 0xe7,
- 0x19, 0x4b, 0xcf, 0x9e, 0xc3, 0x88, 0xdd, 0xaf, 0x84, 0xea, 0x12, 0xdd,
- 0x96, 0xd8, 0xbc, 0x2f, 0x77, 0xb3, 0x8e, 0x3b, 0x3b, 0x8d, 0x48, 0x7f,
- 0x3f, 0xe0, 0x89, 0x09, 0xf7, 0x01, 0xe2, 0x62, 0x56, 0xba, 0x03, 0x65,
- 0x5a, 0x5c, 0x06, 0x69, 0xdd, 0x6b, 0xf8, 0xde, 0x7f, 0x7c, 0xb6, 0x18,
- 0x25, 0x00, 0x71, 0x77, 0x92, 0x89, 0x40, 0x7c, 0x4a, 0xc4, 0x8c, 0x4a,
- 0xf3, 0x24, 0x94, 0x60, 0x3c, 0x73, 0xda, 0x7a, 0xc2, 0x77, 0xa2, 0xe2,
- 0x5c, 0xe2, 0x3d, 0x3c, 0xca, 0x79, 0x7a, 0xf7, 0x08, 0x0c, 0xa8, 0x87,
- 0x78, 0xd3, 0x5a, 0xa4, 0x21, 0x3f, 0xfa, 0x2f, 0xe1, 0x5a, 0x03, 0xcd,
- 0x41, 0xd0, 0x0a, 0x83, 0xd1, 0xaf, 0x12, 0xe7, 0x89, 0x09, 0xbd, 0x24,
- 0x26, 0xfd, 0x62, 0x1f, 0xe8, 0x95, 0x7a, 0x3d, 0x4b, 0x86, 0x0d, 0x34,
- 0xe7, 0xbb, 0x6c, 0x3a, 0x9f, 0x5a, 0xbf, 0x2e, 0xbd, 0x87, 0x92, 0x82,
- 0x50, 0xab, 0x4d, 0x72, 0x07, 0x83, 0x21, 0xc7, 0x64, 0x65, 0xb5, 0x23,
- 0xaf, 0x05, 0xdc, 0x8a, 0x16, 0x8f, 0x95, 0x04, 0x1e, 0xb5, 0xb3, 0xd2,
- 0x86, 0x13, 0x0a, 0x5c, 0xc0, 0x84, 0xc6, 0xa8, 0xb1, 0xd4, 0xa2, 0x93,
- 0xd1, 0x9d, 0x78, 0xbe, 0x4f, 0x02, 0x5f, 0x89, 0x66, 0x99, 0x88, 0x65,
- 0x9a, 0x0c, 0x7b, 0x4a, 0x31, 0xbe, 0x47, 0x1c, 0x66, 0xa6, 0x4b, 0x92,
- 0xcb, 0xcc, 0x0f, 0x7f, 0xe7, 0x4b, 0x55, 0x44, 0xd0, 0xbb, 0x80, 0x91,
- 0x6e, 0xb3, 0x71, 0x7d, 0x3d, 0xc0, 0xd8, 0x9d, 0x7a, 0x0e, 0x2a, 0x81,
- 0x24, 0xc6, 0xc0, 0x72, 0x16, 0x82, 0x47, 0x0b, 0x42, 0xc8, 0x08, 0x47,
- 0x10, 0x6d, 0x23, 0x4e, 0xa3, 0xc2, 0x22, 0x62, 0x52, 0x2d, 0x28, 0x0c,
- 0xbd, 0xce, 0x46, 0x8a, 0x01, 0xb2, 0x4f, 0x40, 0x12, 0x5c, 0x5e, 0x66,
- 0x77, 0x7e, 0xa4, 0x4c, 0x81, 0xcc, 0x06, 0x7a, 0xe6, 0xf1, 0x54, 0xae,
- 0x7c, 0xe2, 0x8e, 0xd2, 0x7f, 0x11, 0x59, 0xcb, 0x6d, 0x86, 0xa8, 0x5d,
- 0x36, 0xe7, 0xc8, 0x50, 0x63, 0xf4, 0x4f, 0xd9, 0xa4, 0x08, 0x06, 0xc1,
- 0x41, 0x0e, 0xac, 0x4c, 0x79, 0x84, 0xb7, 0x2b, 0x1a, 0xa2, 0x43, 0xc0,
- 0xe6, 0xab, 0x44, 0x7e, 0xcf, 0x08, 0xed, 0x2b, 0x57, 0xfc, 0xd0, 0xd7,
- 0xf6, 0x21, 0xaf, 0xba, 0x5c, 0x5e, 0xe1, 0xdb, 0x8b, 0x17, 0x01, 0x0f,
- 0xae, 0x7e, 0xea, 0x47, 0x60, 0x5b, 0x7c, 0xdd, 0x8f, 0xce, 0xc1, 0x4e,
- 0x58, 0x23, 0xe3, 0x62, 0x73, 0x63, 0x6b, 0x87, 0x9a, 0xdb, 0x8d, 0x59,
- 0xa1, 0x0d, 0xb4, 0x12, 0x65, 0xc7, 0xd7, 0xe6, 0x27, 0xa4, 0x19, 0x3e,
- 0x3e, 0xb0, 0x85, 0x84, 0x88, 0x43, 0xf3, 0x97, 0x7e, 0xb4, 0x3d, 0xa5,
- 0x1d, 0xdf, 0xfc, 0xba, 0x03, 0xba, 0x07, 0x58, 0xd3, 0x36, 0xf4, 0x2b,
- 0xae, 0xb2, 0x91, 0x20, 0x45, 0xa3, 0xf8, 0xc6, 0xc3, 0x7b, 0xa5, 0x89,
- 0x68, 0x86, 0x3f, 0x78, 0x93, 0xbc, 0xcc, 0xb5, 0xbc, 0x30, 0xad, 0x7d,
- 0xb5, 0x3b, 0x12, 0x52, 0x18, 0xa4, 0xfd, 0x35, 0xfa, 0xa6, 0xa8, 0xe7,
- 0x55, 0x82, 0xf5, 0xfb, 0x59, 0x31, 0xe6, 0x4b, 0xd1, 0x14, 0x45, 0xa2,
- 0x05, 0x1a, 0x7b, 0x88, 0x08, 0xe3, 0x20, 0x0a, 0x8e, 0x94, 0xf6, 0xe3,
- 0x71, 0xd5, 0x0a, 0x9e, 0xf8, 0x6f, 0x78, 0x6c, 0x69, 0x5a, 0x7c, 0x52,
- 0x0d, 0x70, 0x18, 0x23, 0xf4, 0x59, 0xc5, 0xac, 0xad, 0xf6, 0x23, 0xcf,
- 0xce, 0xd0, 0xcc, 0x87, 0x4b, 0x5f, 0x7a, 0x11, 0x4f, 0x29, 0xf4, 0x37,
- 0xc2, 0x16, 0xb9, 0x82, 0x44, 0x8e, 0x34, 0x8a, 0x0d, 0x8d, 0xaa, 0x09,
- 0x3e, 0x30, 0xb9, 0xef, 0xfb, 0x14, 0xa0, 0x6a, 0x37, 0x34, 0x69, 0x95,
- 0x64, 0xee, 0x94, 0x2c, 0x6d, 0x43, 0x71, 0xd2, 0xdf, 0xe8, 0x6e, 0xaf,
- 0xba, 0xc5, 0xa4, 0x11, 0x68, 0x9b, 0xc0, 0x26, 0x4b, 0x60, 0xcd, 0x35,
- 0xdf, 0xdc, 0x78, 0xea, 0x9b, 0x6f, 0x97, 0x13, 0xcc, 0xde, 0x0e, 0x93,
- 0x6a, 0x71, 0x6f, 0x7f, 0xda, 0xf2, 0x18, 0x34, 0x5b, 0xa7, 0x04, 0xbb,
- 0x84, 0x9d, 0x9d, 0x9e, 0x6d, 0xaf, 0x19, 0x8c, 0x57, 0x46, 0x65, 0x11,
- 0x74, 0x6c, 0xd3, 0x35, 0xcc, 0x09, 0x0c, 0xb2, 0x95, 0x49, 0xc0, 0x76,
- 0xbe, 0x93, 0x8c, 0x5a, 0x2b, 0xd3, 0x55, 0x46, 0xdf, 0xa3, 0x44, 0x06,
- 0x0b, 0x1b, 0x94, 0xd2, 0x15, 0x4b, 0x4e, 0x51, 0x2b, 0xac, 0x6d, 0x6f,
- 0xb6, 0xf6, 0xed, 0x97, 0x60, 0x75, 0x94, 0x60, 0x6e, 0x50, 0x5f, 0x80,
- 0x98, 0x00, 0xf3, 0x22, 0x83, 0x0b, 0x4b, 0xd8, 0x72, 0x70, 0x80, 0xda,
- 0x93, 0xe4, 0x3a, 0x8f, 0x40, 0x72, 0xab, 0x64, 0xfb, 0xd9, 0x07, 0x29,
- 0xd1, 0xc2, 0x28, 0x03, 0xac, 0xc0, 0x9a, 0xdc, 0x6a, 0x0c, 0x9e, 0xa1,
- 0xa9, 0x4b, 0x2b, 0xf3, 0x40, 0x67, 0x93, 0x16, 0x86, 0x0d, 0x5d, 0x20,
- 0x48, 0x9c, 0x86, 0x87, 0x89, 0x60, 0x1b, 0x09, 0xda, 0xed, 0xdd, 0xc9,
- 0xf0, 0xdc, 0x49, 0x06, 0x6a, 0x4b, 0xd7, 0xd4, 0x14, 0x86, 0x3b, 0x09,
- 0xe4, 0x4e, 0xf1, 0xc4, 0xc9, 0xf1, 0xf0, 0xdc, 0xe3, 0x6e, 0xc4, 0x63,
- 0xd9, 0x8b, 0x86, 0x18, 0xd4, 0x75, 0xf0, 0xd2, 0x69, 0xf7, 0xa4, 0x09,
- 0x0c, 0x67, 0x39, 0x69, 0x54, 0x38, 0x2b, 0x9d, 0x34, 0x19, 0x7f, 0x12,
- 0x38, 0xc5, 0x3f, 0xb3, 0xc7, 0x58, 0xc0, 0x20, 0x34, 0x0b, 0xa6, 0x9a,
- 0x5f, 0xc4, 0x4e, 0x5f, 0x35, 0xb6, 0x23, 0xee, 0xa7, 0x17, 0x05, 0x46,
- 0x7c, 0x41, 0x15, 0xfb, 0xe4, 0x8b, 0xa8, 0x55, 0xe1, 0x2b, 0x26, 0x91,
- 0x74, 0xe2, 0x6b, 0xc4, 0x40, 0x47, 0xd2, 0x66, 0x98, 0xbc, 0xf3, 0xf8,
- 0xf4, 0xa3, 0x98, 0x0b, 0x09, 0xe1, 0x26, 0x55, 0x01, 0xe5, 0x66, 0x1c,
- 0x70, 0x6d, 0x62, 0xbb, 0x60, 0xf2, 0xd5, 0x92, 0x09, 0x67, 0x02, 0x2b,
- 0x4b, 0x69, 0x98, 0xcc, 0x7d, 0x84, 0xd2, 0x90, 0xb2, 0x9b, 0xde, 0xcc,
- 0xba, 0xa3, 0x09, 0x6b, 0x9c, 0x8d, 0xb9, 0x8a, 0xaf, 0x6a, 0xb6, 0xc5,
- 0x63, 0x5c, 0x68, 0x14, 0xc0, 0x94, 0xe2, 0x85, 0x8d, 0x05, 0xaa, 0x8e,
- 0x9d, 0xe4, 0x48, 0x46, 0xa3, 0x46, 0xbf, 0x81, 0x40, 0xd9, 0x0f, 0x35,
- 0x19, 0x0a, 0xb5, 0xb8, 0xa8, 0x8b, 0x48, 0x31, 0xf8, 0x3f, 0x1c, 0xbf,
- 0x3a, 0x69, 0x77, 0x89, 0x20, 0x2c, 0x01, 0xb3, 0x54, 0x84, 0xff, 0xd1,
- 0x2b, 0x84, 0x76, 0xc4, 0xab, 0xe3, 0x9d, 0xe7, 0x19, 0x7c, 0x3f, 0x62,
- 0x93, 0xf0, 0x32, 0x63, 0x55, 0xee, 0xda, 0x6a, 0x37, 0x95, 0x76, 0x91,
- 0x45, 0x1a, 0x38, 0x28, 0x39, 0x74, 0xb4, 0x3b, 0x40, 0x18, 0x96, 0x57,
- 0x68, 0x45, 0x88, 0x85, 0x3b, 0x48, 0x75, 0x63, 0x26, 0xff, 0x15, 0x09,
- 0x48, 0x5d, 0x6d, 0x17, 0x42, 0x7a, 0x12, 0x88, 0xc3, 0x44, 0xba, 0xef,
- 0x80, 0x32, 0xb4, 0x4e, 0x68, 0x7e, 0x9e, 0x7e, 0x8b, 0x86, 0x0e, 0xb6,
- 0xa2, 0x30, 0x85, 0x4a, 0xcd, 0xee, 0x12, 0x45, 0x29, 0x28, 0x80, 0xab,
- 0xaf, 0xdf, 0x9f, 0xbe, 0x8d, 0xcf, 0x4f, 0xd7, 0x90, 0x17, 0x69, 0xe8,
- 0xee, 0xc4, 0xe4, 0x4a, 0x53, 0x9c, 0x1d, 0xc4, 0x7a, 0x09, 0x50, 0xac,
- 0x56, 0xd8, 0x69, 0xcc, 0x22, 0x71, 0xd2, 0xf4, 0xf4, 0x2d, 0x0f, 0xb2,
- 0x27, 0x67, 0x65, 0x98, 0x94, 0x26, 0x60, 0xd8, 0x51, 0x82, 0xe6, 0x97,
- 0xa6, 0xc1, 0x38, 0x85, 0xa4, 0x17, 0xd8, 0xc2, 0xa9, 0xba, 0x8f, 0x04,
- 0x6f, 0xb1, 0x42, 0x76, 0xa8, 0x02, 0xe8, 0x9e, 0x26, 0x57, 0xc3, 0x34,
- 0xe9, 0x40, 0xc4, 0x37, 0x06, 0xfb, 0xaa, 0x0b, 0x10, 0x11, 0x49, 0x59,
- 0x16, 0xb7, 0xaa, 0x2a, 0x10, 0x42, 0x2d, 0xf0, 0x0a, 0x4c, 0x1d, 0xb9,
- 0xa1, 0xbc, 0xef, 0xc6, 0x59, 0xe4, 0x0e, 0x3d, 0xd2, 0x4a, 0x63, 0x69,
- 0x87, 0xbb, 0xb3, 0x53, 0x78, 0xf5, 0xc6, 0xdb, 0x1b, 0xcb, 0x62, 0xf1,
- 0xb9, 0xf8, 0xad, 0x6d, 0x1e, 0xc0, 0x09, 0xc6, 0x75, 0x39, 0x47, 0xfc,
- 0xc6, 0x8e, 0xc2, 0xb7, 0x13, 0x4a, 0x06, 0x6c, 0x81, 0x7f, 0xf4, 0xa5,
- 0x83, 0x1b, 0x16, 0x3b, 0xa0, 0xe3, 0xd4, 0xe2, 0xcf, 0x5d, 0x4b, 0x35,
- 0xec, 0x9f, 0x3c, 0x21, 0x24, 0xed, 0x70, 0xd1, 0x00, 0x9f, 0x4c, 0x2c,
- 0xfc, 0x87, 0x54, 0x11, 0x65, 0xd8, 0xd5, 0x12, 0x0e, 0xa7, 0xa6, 0x95,
- 0x53, 0x63, 0x22, 0x12, 0x68, 0xf8, 0x53, 0xcf, 0x58, 0xc2, 0x1f, 0xb2,
- 0xd0, 0xae, 0xcb, 0x62, 0x3c, 0x1f, 0x11, 0x0f, 0x60, 0x4e, 0x4b, 0x56,
- 0xdf, 0x47, 0x17, 0xdc, 0x20, 0x52, 0x91, 0xb3, 0x71, 0x68, 0x8b, 0x7b,
- 0xc2, 0xce, 0xe6, 0xb6, 0x4a, 0xcd, 0x4f, 0x21, 0x3e, 0x27, 0x45, 0x0c,
- 0xc8, 0x56, 0xa2, 0xaa, 0xc9, 0x94, 0x2d, 0xa7, 0xb2, 0xed, 0x8f, 0xc2,
- 0x74, 0x89, 0x68, 0x55, 0x5a, 0x19, 0x79, 0x12, 0x17, 0x9b, 0xae, 0x53,
- 0xc7, 0x69, 0xcd, 0xdd, 0x4a, 0xd8, 0x9e, 0xa6, 0xbc, 0xc8, 0xaf, 0x92,
- 0x0a, 0x24, 0x6b, 0x73, 0xbc, 0xb5, 0xa7, 0xf0, 0x85, 0xbb, 0x7b, 0x51,
- 0x4c, 0x4e, 0xa9, 0x72, 0xcf, 0xf6, 0x1d, 0x5e, 0x86, 0x49, 0x42, 0x7d,
- 0x57, 0x4f, 0xfa, 0xce, 0x77, 0x3a, 0xb8, 0xe3, 0xf8, 0xd2, 0x4d, 0xcd,
- 0x93, 0x64, 0x64, 0x67, 0x5f, 0x45, 0xf6, 0x50, 0x93, 0xb5, 0x2b, 0x4e,
- 0x82, 0x43, 0xa4, 0x94, 0x80, 0x0c, 0x4f, 0x40, 0x55, 0xc1, 0xd8, 0x1e,
- 0x6a, 0x06, 0xfa, 0xd1, 0x68, 0x55, 0xa1, 0x13, 0x0d, 0xb6, 0xd5, 0x89,
- 0xfc, 0x6a, 0xcf, 0x80, 0x3b, 0xa2, 0xe4, 0x6f, 0x0d, 0xb7, 0xfd, 0xdd,
- 0x77, 0xce, 0xe5, 0x8f, 0x3e, 0x99, 0xb5, 0xbe, 0x8f, 0x9f, 0xe3, 0x22,
- 0x1f, 0x8d, 0x0b, 0x77, 0xba, 0x9e, 0x59, 0xc2, 0x7c, 0x0d, 0xfa, 0x93,
- 0xa4, 0x58, 0x2a, 0x20, 0x77, 0x5d, 0x5c, 0xa5, 0x74, 0x39, 0xb0, 0x4b,
- 0x1b, 0xd3, 0x78, 0x6d, 0x1e, 0x2f, 0xeb, 0x53, 0xf1, 0x71, 0xa0, 0x5c,
- 0x90, 0xee, 0x25, 0x4d, 0xc1, 0x35, 0xc5, 0xd7, 0x4d, 0x62, 0x55, 0xd6,
- 0x59, 0x7d, 0x8d, 0x91, 0x6b, 0x69, 0x4f, 0x3d, 0x8f, 0x03, 0x8d, 0xc8,
- 0x2c, 0x5b, 0x56, 0x02, 0xb1, 0x4e, 0xeb, 0xa2, 0x2b, 0x04, 0x59, 0xb8,
- 0x92, 0x8a, 0xc1, 0x51, 0x99, 0x8a, 0xab, 0xb3, 0x32, 0x1d, 0xe0, 0xbd,
- 0x14, 0x2c, 0x6c, 0xff, 0x30, 0xe1, 0xc4, 0x37, 0x0e, 0x70, 0x25, 0xce,
- 0xa9, 0xb4, 0x99, 0x7d, 0xad, 0x3d, 0x63, 0xdc, 0x9e, 0xac, 0x0e, 0xf9,
- 0x75, 0xb4, 0x45, 0x10, 0xf5, 0x79, 0x2a, 0xd8, 0xcf, 0x3f, 0x4a, 0x67,
- 0xb5, 0xb9, 0x97, 0xff, 0xa4, 0x5c, 0x3b, 0x68, 0x24, 0x5c, 0xf8, 0x96,
- 0x79, 0x8b, 0xe9, 0xa9, 0x7e, 0x02, 0x3b, 0x96, 0x62, 0x25, 0xc9, 0x35,
- 0x0b, 0xee, 0x6b, 0x8c, 0xdc, 0x69, 0x96, 0x19, 0x1b, 0x0e, 0x84, 0x94,
- 0x32, 0x45, 0xf3, 0xdf, 0x47, 0x8f, 0xb0, 0x92, 0x81, 0x5b, 0x24, 0xa0,
- 0x34, 0x33, 0x0d, 0xa5, 0xd8, 0xdd, 0x8f, 0xd1, 0x49, 0x7a, 0xac, 0xea,
- 0x4a, 0x3c, 0xb6, 0x69, 0x19, 0x3c, 0x42, 0xe5, 0xd2, 0x8c, 0x94, 0x91,
- 0xcb, 0x46, 0x8e, 0x73, 0xc6, 0x08, 0x5e, 0x88, 0xd5, 0xde, 0x8f, 0x3a,
- 0x88, 0x66, 0x41, 0xe2, 0x5c, 0xec, 0xa2, 0x06, 0x24, 0x15, 0x02, 0xa3,
- 0xcb, 0xc8, 0x92, 0xed, 0xcd, 0x2c, 0xef, 0x59, 0x17, 0x55, 0xb4, 0xbd,
- 0xb1, 0xd9, 0x87, 0xff, 0x6c, 0xa1, 0x87, 0x1b, 0xfe, 0xdc, 0x36, 0x88,
- 0x0d, 0x8d, 0x63, 0x22, 0x90, 0x38, 0xe8, 0x21, 0x65, 0x2f, 0x0e, 0x9c,
- 0xa5, 0xbb, 0xbb, 0x00, 0x72, 0x75, 0x13, 0xe3, 0x24, 0x5e, 0x30, 0x55,
- 0x4b, 0x48, 0x4a, 0x08, 0x99, 0x7b, 0x31, 0x21, 0xc5, 0x59, 0x10, 0x2c,
- 0xf6, 0x20, 0xaa, 0x18, 0xc1, 0xa6, 0xb5, 0x9b, 0xfa, 0xc8, 0x86, 0xbb,
- 0xf0, 0xfc, 0xb4, 0x89, 0x48, 0x15, 0x69, 0xb8, 0x01, 0x2b, 0xbd, 0xeb,
- 0x2a, 0x90, 0xc7, 0x5d, 0x76, 0x7a, 0xae, 0x63, 0x67, 0x41, 0x95, 0x35,
- 0x0a, 0xb8, 0xc3, 0x3a, 0x4a, 0x52, 0xef, 0x61, 0xe6, 0x24, 0xf0, 0x37,
- 0x12, 0xd1, 0x3b, 0xcc, 0xfc, 0x0b, 0x2d, 0x49, 0xe1, 0x7f, 0x6d, 0x07,
- 0x1d, 0x2f, 0xda, 0x1f, 0x34, 0xad, 0xad, 0xbe, 0x6b, 0xf5, 0xb3, 0x46,
- 0xe6, 0x10, 0xb7, 0x66, 0xe5, 0xe7, 0x43, 0xc1, 0x4b, 0x76, 0xac, 0x59,
- 0x47, 0x5b, 0x95, 0x4e, 0x04, 0x30, 0x7b, 0x5e, 0x2d, 0x9b, 0x4b, 0x7a,
- 0xb2, 0x64, 0xb0, 0x47, 0x53, 0xb7, 0x78, 0xc1, 0xc9, 0xa4, 0x8e, 0xab,
- 0x9b, 0x51, 0x53, 0xb3, 0xc0, 0xd0, 0x9f, 0x12, 0x71, 0x5f, 0xfe, 0xe2,
- 0x85, 0x7d, 0x8e, 0xdf, 0x1e, 0x88, 0x49, 0x1e, 0x0d, 0xdf, 0x12, 0x9e,
- 0xaf, 0xe3, 0x50, 0xa5, 0x31, 0xcc, 0x46, 0x88, 0xce, 0x38, 0x9e, 0x97,
- 0x0c, 0x2b, 0x86, 0x97, 0x4d, 0xfb, 0x0a, 0x6f, 0xdc, 0xa7, 0x9d, 0x5c,
- 0x84, 0xc3, 0x78, 0x63, 0x6b, 0x9e, 0xa5, 0xc1, 0xb0, 0xb5, 0x06, 0x50,
- 0x47, 0xde, 0x08, 0xc7, 0x7c, 0x50, 0x0b, 0xb1, 0x10, 0x61, 0x32, 0xbb,
- 0xd6, 0x44, 0xa2, 0x83, 0xda, 0x64, 0x72, 0x93, 0x3c, 0xc6, 0x65, 0xb7,
- 0xb9, 0x88, 0x88, 0x80, 0xf4, 0x44, 0x42, 0x98, 0x78, 0x47, 0x63, 0x9e,
- 0xec, 0x0e, 0x9c, 0x3a, 0xa9, 0x9a, 0x4e, 0x6a, 0xa6, 0x87, 0xda, 0x70,
- 0x45, 0x91, 0x6b, 0x59, 0x61, 0xc4, 0xb8, 0x5f, 0x11, 0xd9, 0x77, 0x0c,
- 0xb7, 0xbd, 0xb5, 0xfd, 0x62, 0xa7, 0xcf, 0x7f, 0xdf, 0xdd, 0x78, 0xc9,
- 0xcc, 0x7b, 0x7c, 0x74, 0xfe, 0x3a, 0x1a, 0x97, 0x70, 0x74, 0xda, 0x81,
- 0x0a, 0xfc, 0x59, 0x9c, 0x26, 0xe5, 0x35, 0x58, 0x92, 0xd8, 0x59, 0x23,
- 0xae, 0xa6, 0xf5, 0x2c, 0xde, 0xd8, 0x08, 0xa5, 0x6e, 0xfe, 0x8b, 0x23,
- 0x56, 0x4d, 0x5e, 0x5b, 0x39, 0xf8, 0x70, 0xfe, 0xe6, 0xf3, 0xff, 0x5c,
- 0x89, 0xb2, 0x69, 0x32, 0x5b, 0x5e, 0xf7, 0x69, 0x94, 0xec, 0xb7, 0x80,
- 0x45, 0xd0, 0x58, 0x8c, 0x71, 0x6f, 0xbb, 0xfb, 0x95, 0x36, 0xb9, 0xd8,
- 0xf4, 0xfa, 0x96, 0xc7, 0x1b, 0x19, 0x74, 0xca, 0x33, 0x6c, 0xbd, 0xf2,
- 0x1b, 0x01, 0x27, 0x4e, 0x5b, 0xeb, 0xb4, 0x5d, 0x32, 0x57, 0xd9, 0x40,
- 0xad, 0xef, 0xd7, 0xe8, 0x16, 0x43, 0xd7, 0xf8, 0xc5, 0x14, 0xc3, 0x4e,
- 0x63, 0xb5, 0x4f, 0x83, 0xe0, 0xb5, 0x95, 0x20, 0xf3, 0x95, 0x29, 0x36,
- 0x26, 0x62, 0x6d, 0x3c, 0x67, 0x49, 0xff, 0xb4, 0x9e, 0x4d, 0x96, 0x2c,
- 0x48, 0xc1, 0x2f, 0x1d, 0x82, 0xa7, 0xd8, 0x52, 0x9e, 0x9c, 0x1e, 0xc8,
- 0x2d, 0x8f, 0x07, 0x31, 0xa2, 0x11, 0xcb, 0xd1, 0x4c, 0x73, 0xd2, 0xe9,
- 0xdf, 0xa8, 0x23, 0x79, 0xbb, 0x41, 0x8a, 0xd3, 0x13, 0x77, 0xc3, 0xaa,
- 0xa8, 0x1c, 0x85, 0xa0, 0x89, 0x1a, 0x2c, 0xb0, 0x40, 0xa5, 0x29, 0x9e,
- 0xdf, 0xe6, 0x2c, 0x96, 0x20, 0x10, 0xcd, 0xb4, 0x4d, 0xa0, 0x5f, 0x93,
- 0x3e, 0xb8, 0x03, 0x1e, 0x7d, 0xf0, 0xa1, 0x98, 0xec, 0x33, 0xb4, 0x3e,
- 0xab, 0x30, 0x81, 0xbe, 0x75, 0x41, 0x94, 0xb9, 0x5b, 0x51, 0x61, 0xbd,
- 0xf4, 0xa0, 0xc0, 0x64, 0x33, 0x8c, 0xaa, 0xc1, 0x99, 0xb5, 0x05, 0xf1,
- 0xc1, 0x1b, 0x89, 0x8c, 0xc1, 0x0b, 0x6a, 0x41, 0x84, 0x42, 0x0c, 0x2c,
- 0x60, 0x74, 0xd0, 0x89, 0x5a, 0x7a, 0x89, 0xf6, 0x37, 0x4a, 0xa1, 0x5a,
- 0x23, 0xf1, 0xea, 0x30, 0xd1, 0xf1, 0x3d, 0x45, 0x8f, 0x9c, 0x89, 0xef,
- 0x0f, 0xcf, 0xce, 0xa3, 0xf3, 0x53, 0xd7, 0x09, 0xc6, 0x68, 0xac, 0x84,
- 0x23, 0x05, 0x16, 0x79, 0x19, 0x0e, 0x2d, 0xe9, 0x44, 0x4d, 0xf7, 0x6a,
- 0xf5, 0x20, 0xb1, 0xd2, 0x40, 0xe5, 0x37, 0x33, 0xc1, 0x0c, 0x6d, 0x52,
- 0x2b, 0x80, 0x80, 0x43, 0xd4, 0x6b, 0x47, 0x63, 0xd9, 0x8e, 0x30, 0x55,
- 0x99, 0x8e, 0x35, 0xc1, 0xa5, 0x82, 0x11, 0x4f, 0xaf, 0x0a, 0xe4, 0x30,
- 0xbb, 0x75, 0x55, 0x8a, 0x5e, 0x26, 0xc8, 0x67, 0x37, 0xc9, 0x24, 0x1b,
- 0x3b, 0x54, 0x09, 0x46, 0x43, 0x08, 0x14, 0xd0, 0x3e, 0x43, 0xa9, 0x4c,
- 0x57, 0x54, 0xda, 0x49, 0xe4, 0x42, 0x7a, 0xa9, 0xbb, 0x41, 0x92, 0x56,
- 0x30, 0x7a, 0x38, 0x49, 0xae, 0x7c, 0x4b, 0xd5, 0xc9, 0x91, 0x72, 0xa0,
- 0x82, 0x6a, 0xbb, 0x97, 0xd4, 0xd9, 0xcc, 0xdb, 0x4f, 0x8e, 0x90, 0xfb,
- 0xde, 0x2e, 0xda, 0x19, 0xf2, 0xad, 0xe1, 0xda, 0x29, 0x99, 0x32, 0x43,
- 0xfc, 0x2d, 0x6e, 0x0c, 0x57, 0x58, 0xb1, 0xdf, 0xda, 0xd7, 0x27, 0x1d,
- 0xaa, 0x16, 0x7b, 0x37, 0x8e, 0x06, 0x28, 0x51, 0x75, 0xe3, 0xac, 0xf9,
- 0x67, 0xec, 0x31, 0x47, 0xac, 0x59, 0x3b, 0xfc, 0x32, 0x70, 0x23, 0xd0,
- 0xd7, 0x96, 0x95, 0x41, 0xec, 0x0b, 0x36, 0x8d, 0x63, 0xc9, 0x33, 0x49,
- 0x5e, 0x13, 0xbc, 0xe1, 0xe1, 0x57, 0x9c, 0x09, 0xe1, 0xd9, 0xa1, 0x9c,
- 0x34, 0xf7, 0x3e, 0x9d, 0xa5, 0x49, 0xa3, 0xc6, 0xbe, 0x79, 0xb9, 0x1a,
- 0xb8, 0x5d, 0xf2, 0x4d, 0x9a, 0x70, 0x9b, 0xbf, 0x59, 0x9d, 0x3c, 0xc6,
- 0x6e, 0x6c, 0xf1, 0x34, 0x33, 0x68, 0x99, 0x11, 0x9b, 0x8d, 0x4a, 0xc1,
- 0xd5, 0x6f, 0xde, 0xbf, 0xfe, 0x9b, 0xee, 0xe1, 0x5a, 0x5f, 0x78, 0xb9,
- 0xe3, 0x3b, 0x4e, 0x32, 0x8e, 0x4d, 0x3f, 0x10, 0x94, 0xf4, 0x06, 0x05,
- 0xf8, 0x5f, 0xfc, 0xcf, 0x00, 0x5e, 0x1a, 0xf7, 0x53, 0x8e, 0x56, 0x31,
- 0x91, 0x0a, 0x9e, 0x1b, 0x8a, 0x9b, 0x6d, 0x7b, 0xb0, 0x4b, 0xae, 0xf0,
- 0xd7, 0x87, 0xbb, 0xdb, 0x5b, 0x9b, 0x6b, 0x83, 0x68, 0xb5, 0x75, 0x99,
- 0xaf, 0x05, 0x97, 0xe9, 0xae, 0xb2, 0x41, 0x7b, 0xc4, 0x77, 0x40, 0x2e,
- 0x5f, 0x3d, 0xfa, 0xee, 0xec, 0x9d, 0xb7, 0x46, 0x58, 0x93, 0x97, 0x2a,
- 0xd7, 0xb5, 0x46, 0x6b, 0x01, 0x35, 0xc6, 0xd7, 0x0a, 0x27, 0x44, 0xe8,
- 0x8e, 0x02, 0xc9, 0x68, 0xaf, 0xcb, 0x0c, 0x2d, 0xf7, 0x1e, 0x92, 0xa4,
- 0x77, 0x52, 0xe4, 0x63, 0xb0, 0x7b, 0x4f, 0xb1, 0x59, 0x5c, 0xda, 0x03,
- 0xb3, 0xfc, 0xc1, 0xd5, 0x3d, 0xf6, 0x04, 0x35, 0xaf, 0xa5, 0x1c, 0x6c,
- 0x93, 0xa7, 0x1d, 0x15, 0xe7, 0x24, 0x3a, 0x87, 0xe4, 0x2d, 0x67, 0xf7,
- 0xe6, 0x7e, 0x5e, 0xf8, 0x5b, 0xfa, 0x21, 0xf5, 0x7f, 0x36, 0x50, 0xab,
- 0xd7, 0x73, 0x81, 0x78, 0x8d, 0xea, 0x50, 0xca, 0xc9, 0x83, 0x4b, 0xa2,
- 0xcf, 0x3c, 0x2a, 0xd1, 0xa3, 0xef, 0xa4, 0x8d, 0x38, 0x9d, 0x0b, 0x9a,
- 0xc7, 0xfb, 0x2e, 0xa6, 0x90, 0x12, 0x46, 0x32, 0xf6, 0x29, 0x7e, 0xff,
- 0x45, 0x17, 0x32, 0x40, 0xf4, 0xf6, 0xaf, 0xe7, 0xe7, 0x6b, 0xc1, 0x8c,
- 0x10, 0x7a, 0x7d, 0x55, 0x53, 0x1a, 0xd6, 0x58, 0x59, 0xe3, 0x94, 0xa0,
- 0xc2, 0xe3, 0x6c, 0x4e, 0xfe, 0x68, 0xa0, 0x29, 0x3a, 0x5e, 0xa1, 0xcc,
- 0xd4, 0xf0, 0x4b, 0xbc, 0x1d, 0xdd, 0x08, 0x04, 0x0e, 0xdf, 0x0f, 0x79,
- 0x72, 0x4c, 0xf0, 0xde, 0xf8, 0x60, 0xb8, 0xcb, 0x51, 0x92, 0x37, 0xbb,
- 0xce, 0x92, 0xd0, 0xa6, 0xbb, 0x28, 0xbd, 0xa3, 0x12, 0xda, 0x71, 0x1a,
- 0x3d, 0xf3, 0x2d, 0xd8, 0x03, 0xa9, 0xdb, 0x57, 0x83, 0x9d, 0x83, 0x29,
- 0xaa, 0xb6, 0x93, 0x75, 0x22, 0x2c, 0xd3, 0x0f, 0x26, 0x61, 0x84, 0xf4,
- 0x05, 0x4e, 0xc9, 0x60, 0x55, 0xa0, 0x9d, 0x94, 0xe1, 0x26, 0x61, 0x90,
- 0x58, 0xc0, 0x34, 0x0c, 0x2d, 0x5f, 0xf6, 0x5c, 0x26, 0x4e, 0x5a, 0x46,
- 0x77, 0x5e, 0x86, 0x9b, 0x89, 0xd1, 0xca, 0x99, 0x68, 0x7b, 0x10, 0x4d,
- 0x06, 0x45, 0xe3, 0xa4, 0xed, 0xbe, 0x08, 0x9c, 0xb4, 0x77, 0xa7, 0xe7,
- 0x47, 0x7b, 0xd2, 0x71, 0x49, 0x5b, 0x74, 0x48, 0xc9, 0xb3, 0xd4, 0xad,
- 0x50, 0x49, 0xab, 0x00, 0x6a, 0xa1, 0x54, 0xd6, 0x8d, 0xee, 0x87, 0xe4,
- 0x1b, 0x21, 0x41, 0xa0, 0x4c, 0xe0, 0x78, 0x66, 0xed, 0xd5, 0x1c, 0x68,
- 0x95, 0x01, 0xc1, 0x7a, 0x67, 0x0e, 0xa7, 0xd0, 0x86, 0xfb, 0x9d, 0x12,
- 0x08, 0x4e, 0x9f, 0x10, 0xea, 0x59, 0xf7, 0xf7, 0x78, 0x88, 0x35, 0x60,
- 0x72, 0x95, 0x0d, 0x1e, 0x71, 0xca, 0x9c, 0x63, 0xd1, 0x99, 0x47, 0xd0,
- 0x2d, 0x30, 0x6c, 0x46, 0x40, 0xfb, 0xb0, 0x89, 0x8b, 0x0d, 0x03, 0x52,
- 0x5f, 0x74, 0x35, 0xfc, 0xa9, 0xcd, 0xb9, 0xb2, 0x8d, 0x3b, 0xd4, 0xd1,
- 0xa6, 0xd6, 0xbc, 0x38, 0xa1, 0x4c, 0xc8, 0x3a, 0x3e, 0xf1, 0x9d, 0x36,
- 0xc6, 0xc3, 0x6c, 0x3a, 0x17, 0xf6, 0xd9, 0x16, 0x03, 0x53, 0x9d, 0xc0,
- 0x68, 0xc4, 0x9b, 0x87, 0x7a, 0x8b, 0xf5, 0x69, 0x61, 0x1c, 0x08, 0xa4,
- 0xcc, 0xbd, 0xe7, 0x52, 0x12, 0x17, 0xa2, 0xab, 0x23, 0x8b, 0x8d, 0x4b,
- 0xfe, 0x47, 0xca, 0x55, 0x97, 0x04, 0xab, 0xdd, 0x0d, 0xe7, 0x05, 0xaa,
- 0xe4, 0x5e, 0xd0, 0x06, 0x0f, 0xdf, 0x88, 0x37, 0x49, 0x23, 0x97, 0x54,
- 0xab, 0x79, 0xae, 0x5d, 0xb5, 0x7e, 0x67, 0xc3, 0xdb, 0xd9, 0xb1, 0x6d,
- 0x97, 0xa0, 0x4b, 0x71, 0x43, 0x23, 0xc4, 0xe0, 0xf0, 0x43, 0xb3, 0x7f,
- 0xd4, 0xfe, 0x65, 0xc9, 0x40, 0x45, 0xc9, 0x24, 0xea, 0xa8, 0x81, 0x7a,
- 0x2b, 0x5c, 0x21, 0x65, 0x49, 0xe8, 0xfd, 0x90, 0x27, 0xd9, 0xd0, 0xa3,
- 0x36, 0x14, 0x13, 0x6d, 0x77, 0x7b, 0x7b, 0x5d, 0x4c, 0xdc, 0x8c, 0x4a,
- 0x4f, 0x12, 0xd7, 0x04, 0x08, 0xe6, 0xf6, 0x80, 0xc2, 0x98, 0x39, 0x63,
- 0x17, 0x10, 0x7f, 0x20, 0x37, 0x50, 0x58, 0xe8, 0x02, 0x41, 0x02, 0xa2,
- 0x9f, 0x8a, 0x0b, 0xf1, 0xe3, 0x23, 0xa0, 0xd8, 0x95, 0xa7, 0x1a, 0xa0,
- 0x8f, 0x91, 0x7a, 0x1c, 0x80, 0x7a, 0x00, 0x04, 0x1b, 0xcf, 0x39, 0xc0,
- 0x88, 0xf3, 0x91, 0x62, 0x58, 0x2a, 0x6f, 0xa6, 0xec, 0x82, 0xe8, 0x8a,
- 0x5a, 0x12, 0x50, 0xb5, 0x9a, 0x40, 0x6d, 0xb6, 0x86, 0x83, 0x1b, 0x7f,
- 0x0b, 0x31, 0x37, 0xdd, 0xed, 0x4e, 0x46, 0xe8, 0x50, 0x87, 0xa1, 0x05,
- 0xf9, 0x9a, 0xbb, 0xb0, 0xd9, 0x9a, 0x61, 0x20, 0xe0, 0x5c, 0xb8, 0xc0,
- 0xcb, 0xba, 0xd2, 0x50, 0x1e, 0xbc, 0x5b, 0x92, 0xa3, 0x28, 0xa3, 0xf1,
- 0xe6, 0x40, 0xf5, 0x7b, 0xd5, 0xd0, 0xac, 0x3a, 0x23, 0xfd, 0xbb, 0x30,
- 0x5f, 0x82, 0x9e, 0xf6, 0x21, 0x2e, 0xcd, 0x24, 0x30, 0xcd, 0x2a, 0x0b,
- 0xa2, 0x5a, 0xfe, 0xab, 0x73, 0x9f, 0x0c, 0x2f, 0x6d, 0x2e, 0x93, 0xbd,
- 0x64, 0xde, 0xda, 0x1a, 0xbc, 0x5c, 0x16, 0x48, 0xad, 0xdd, 0xee, 0xcc,
- 0x15, 0x76, 0x69, 0x9d, 0xe0, 0x56, 0x2f, 0x48, 0xe1, 0xe5, 0x32, 0x81,
- 0x14, 0x2c, 0xd7, 0x79, 0xc5, 0x29, 0x44, 0xad, 0x82, 0x70, 0x1d, 0x23,
- 0x32, 0x31, 0xef, 0x76, 0x2d, 0xd8, 0x5b, 0xf3, 0x84, 0xfa, 0x13, 0x0d,
- 0x04, 0x85, 0x01, 0x68, 0xcd, 0x24, 0x6a, 0xa1, 0xa8, 0x3e, 0xcf, 0xe1,
- 0x7e, 0x13, 0x28, 0xa2, 0xd8, 0xef, 0xf8, 0x82, 0xb1, 0x55, 0xdc, 0x72,
- 0xf4, 0x46, 0x2e, 0x2b, 0x2d, 0x74, 0x32, 0x74, 0x51, 0x2d, 0x45, 0xc9,
- 0xff, 0x45, 0x2d, 0xc2, 0xb4, 0xb3, 0xa1, 0x43, 0x46, 0x03, 0xf2, 0xd7,
- 0xd1, 0x44, 0x4a, 0x00, 0xab, 0xdf, 0x19, 0x2c, 0xc0, 0xd5, 0xe1, 0xd9,
- 0xbb, 0xa3, 0xaf, 0x4f, 0xd7, 0x1e, 0xf2, 0x15, 0xbb, 0x1b, 0x61, 0xb2,
- 0xd7, 0x13, 0x2d, 0xc4, 0x91, 0xbc, 0x74, 0x52, 0x98, 0xbe, 0x1e, 0x0e,
- 0xe3, 0x83, 0xb3, 0x63, 0x52, 0x4f, 0x86, 0x43, 0xf8, 0x4b, 0x57, 0x5b,
- 0xe6, 0x81, 0x74, 0x14, 0x8f, 0xbf, 0x21, 0x97, 0xbf, 0x42, 0xe3, 0x48,
- 0xf2, 0x4a, 0x4a, 0x15, 0x27, 0x92, 0xf4, 0x4d, 0xfb, 0xa1, 0x68, 0x9a,
- 0xf8, 0x81, 0xb6, 0x1e, 0x76, 0x76, 0xbc, 0x4e, 0xdf, 0xc2, 0x72, 0x27,
- 0x5a, 0x50, 0xd8, 0x80, 0xf3, 0xe0, 0x27, 0xb8, 0x85, 0x0e, 0x55, 0x4d,
- 0x10, 0x65, 0xb5, 0xde, 0x0a, 0xd4, 0x51, 0xbc, 0x5c, 0xd0, 0x0f, 0x2a,
- 0x8e, 0xd0, 0x70, 0xb1, 0x30, 0x63, 0xc1, 0x61, 0xa5, 0xa6, 0xf6, 0xb2,
- 0x6b, 0x79, 0x27, 0x49, 0x73, 0xe4, 0x0e, 0x3e, 0x93, 0xfb, 0x01, 0xb5,
- 0xe7, 0x0b, 0x35, 0x57, 0x59, 0x89, 0xe7, 0xd1, 0xde, 0x0a, 0x25, 0xc9,
- 0xe5, 0xc5, 0xfc, 0xea, 0xda, 0x37, 0x02, 0xd9, 0xbd, 0x60, 0x22, 0xd9,
- 0x22, 0x59, 0x49, 0x4b, 0x84, 0x59, 0x7a, 0x97, 0x39, 0xbd, 0xa8, 0x72,
- 0x50, 0x1a, 0xb4, 0xb2, 0xbc, 0x93, 0xa3, 0xf3, 0x2f, 0x69, 0x60, 0xbc,
- 0xe4, 0x89, 0xb0, 0x10, 0x95, 0x48, 0x8e, 0x25, 0x85, 0xcb, 0x05, 0xa6,
- 0x10, 0x50, 0x6a, 0x7e, 0x3d, 0xa1, 0xbb, 0x12, 0x94, 0x12, 0x72, 0xc2,
- 0x4a, 0x10, 0x8a, 0x50, 0x3e, 0xcc, 0x17, 0x9a, 0x87, 0xa6, 0x2e, 0x47,
- 0xa4, 0xc0, 0x71, 0xc9, 0x44, 0x08, 0xd4, 0xa3, 0x55, 0x4b, 0x50, 0x81,
- 0xc2, 0x01, 0x3a, 0x23, 0xe9, 0x22, 0x79, 0x5f, 0xc7, 0xe8, 0x83, 0xb6,
- 0x2f, 0x31, 0x5c, 0xd3, 0x7c, 0x4b, 0x38, 0x2a, 0xe4, 0xc8, 0x46, 0x5c,
- 0x11, 0x38, 0x9a, 0xc9, 0x45, 0x55, 0x4c, 0xe6, 0xb5, 0xc4, 0xc6, 0xd1,
- 0x0b, 0x8d, 0x85, 0xbf, 0x6b, 0x91, 0x3a, 0x87, 0x68, 0x68, 0x5b, 0x31,
- 0x11, 0x72, 0x34, 0x8a, 0x89, 0x4d, 0xc5, 0x40, 0x1a, 0xd5, 0xe1, 0x40,
- 0xb7, 0x08, 0x47, 0xdc, 0x22, 0x67, 0x1c, 0x74, 0x12, 0x80, 0xa0, 0xbb,
- 0x31, 0x5a, 0x86, 0xcf, 0x0a, 0xba, 0xe5, 0x0d, 0xf2, 0x98, 0xae, 0x1b,
- 0x65, 0xda, 0xac, 0x2c, 0x6b, 0x5e, 0x49, 0x7e, 0x72, 0x63, 0x98, 0xe3,
- 0x34, 0x5d, 0xe6, 0x02, 0x8f, 0x1c, 0xa8, 0x89, 0xfa, 0x2d, 0xfe, 0x4c,
- 0x42, 0x19, 0x79, 0xe6, 0x92, 0x5d, 0x9e, 0x99, 0xcc, 0xb4, 0x79, 0xe5,
- 0x4b, 0xb1, 0x93, 0xbb, 0xa9, 0x36, 0x1a, 0xc2, 0xbc, 0xe4, 0xf4, 0x06,
- 0x6e, 0x21, 0x1d, 0xb4, 0x85, 0x84, 0x05, 0x92, 0xb5, 0xe3, 0xf9, 0x9c,
- 0xa7, 0xcb, 0xf5, 0x10, 0xc5, 0x99, 0xc7, 0x48, 0xc6, 0x34, 0x26, 0xd4,
- 0xc2, 0x93, 0x74, 0x30, 0x74, 0x06, 0xbc, 0xd4, 0x79, 0x20, 0xd8, 0x61,
- 0x88, 0xaa, 0x90, 0x11, 0xe8, 0xbc, 0x49, 0x28, 0x0d, 0x56, 0x84, 0x8d,
- 0xf3, 0x0d, 0x17, 0x5a, 0xee, 0x69, 0x84, 0x37, 0x9f, 0x5b, 0xb2, 0x18,
- 0xda, 0xec, 0xda, 0xa0, 0x0b, 0x6b, 0x3a, 0x48, 0x4a, 0xfb, 0x43, 0x4f,
- 0x0b, 0xb6, 0xb8, 0x4b, 0x23, 0xc9, 0xc8, 0x17, 0x2a, 0x45, 0xab, 0x1f,
- 0xe5, 0x2f, 0x28, 0xed, 0xbe, 0xcd, 0x72, 0xd0, 0x2f, 0xab, 0x35, 0xc5,
- 0x56, 0x5a, 0x88, 0xa4, 0x44, 0x40, 0x4a, 0x36, 0x8f, 0x18, 0xd5, 0x03,
- 0x0e, 0x30, 0x72, 0xef, 0x04, 0x74, 0x68, 0x9b, 0xec, 0x0d, 0xd5, 0x98,
- 0xeb, 0xfb, 0x59, 0xe6, 0xe7, 0x6e, 0xa8, 0x3c, 0xa6, 0x31, 0xa8, 0x03,
- 0x66, 0x1e, 0x7d, 0xc8, 0xb3, 0x3b, 0x9b, 0x50, 0x63, 0xb0, 0xf8, 0x5d,
- 0x7f, 0xb4, 0xf4, 0x9e, 0x08, 0xcc, 0xce, 0x0b, 0xfb, 0x12, 0x79, 0x69,
- 0xa1, 0xab, 0xbb, 0x6b, 0x34, 0xb7, 0xcb, 0x7a, 0xb6, 0xba, 0xb9, 0x46,
- 0x5f, 0x14, 0x04, 0x2c, 0xc9, 0xe7, 0x09, 0xb5, 0xd7, 0xe4, 0xb8, 0xaa,
- 0xdb, 0x34, 0x84, 0x12, 0x0d, 0x10, 0xe3, 0x5f, 0x3a, 0x44, 0x90, 0x54,
- 0xa2, 0x67, 0x29, 0x95, 0x9a, 0x0b, 0x67, 0xb0, 0x00, 0x27, 0x24, 0xf4,
- 0xa4, 0x55, 0xe0, 0x0c, 0x3b, 0xf4, 0x11, 0x84, 0x04, 0x05, 0xee, 0x5c,
- 0x2f, 0x61, 0x2e, 0x50, 0x3d, 0x40, 0xbd, 0xc9, 0x38, 0xc6, 0xa4, 0xed,
- 0xe8, 0xaa, 0x2c, 0x7c, 0x1d, 0x02, 0x21, 0x3e, 0x90, 0x06, 0x6b, 0x5c,
- 0x42, 0x92, 0xe6, 0x37, 0x59, 0x59, 0xe4, 0xd4, 0xf9, 0xe7, 0x26, 0x29,
- 0x33, 0xca, 0xac, 0xe9, 0xbd, 0x39, 0x7d, 0x7b, 0xd4, 0x33, 0xba, 0x34,
- 0x59, 0xc2, 0x99, 0xf4, 0x1f, 0xf0, 0x40, 0xad, 0xdc, 0x2d, 0x0d, 0xb9,
- 0x7a, 0x40, 0xeb, 0xc1, 0x16, 0xda, 0x74, 0x11, 0x53, 0xeb, 0x00, 0x0c,
- 0x68, 0x08, 0xe6, 0x0a, 0xd8, 0xdc, 0x92, 0x73, 0xc3, 0xb9, 0x8d, 0x89,
- 0x32, 0x19, 0xe7, 0xf6, 0x15, 0xb7, 0xa1, 0x66, 0x81, 0xf0, 0x3b, 0xdc,
- 0x71, 0x91, 0xf3, 0x92, 0xe5, 0xce, 0x49, 0x46, 0xec, 0xd1, 0x25, 0x37,
- 0x3d, 0xed, 0xbf, 0xeb, 0xff, 0x5d, 0x99, 0xde, 0x7b, 0x09, 0xc8, 0xe9,
- 0xe4, 0x72, 0xa5, 0xc1, 0x77, 0xd1, 0x4a, 0x85, 0xa6, 0x4b, 0xbd, 0xe2,
- 0x40, 0x41, 0x39, 0xd7, 0x96, 0x0f, 0x01, 0xd5, 0xf1, 0xf9, 0xf6, 0x63,
- 0xcc, 0xe6, 0xd3, 0x7b, 0xfc, 0x62, 0xfb, 0x77, 0xe6, 0xdb, 0xfc, 0xe9,
- 0xde, 0x53, 0x04, 0xc7, 0x93, 0xe5, 0x45, 0x3f, 0xd0, 0xb4, 0x3d, 0x94,
- 0xc2, 0x67, 0xca, 0xf7, 0x82, 0x98, 0xc3, 0x2e, 0xfa, 0x76, 0x62, 0xab,
- 0xe9, 0xad, 0x5d, 0xac, 0x39, 0xba, 0xd6, 0x03, 0x22, 0x10, 0x77, 0x5e,
- 0xbf, 0xc5, 0xaa, 0x18, 0x65, 0x6e, 0xea, 0x8c, 0xd7, 0x5d, 0xd4, 0xc9,
- 0xd3, 0x36, 0xd7, 0x2d, 0x8d, 0xd6, 0xd9, 0xb8, 0xae, 0x2f, 0x4d, 0x0d,
- 0x35, 0x4a, 0x96, 0x95, 0x88, 0x8b, 0x6b, 0x33, 0x33, 0xe4, 0x4b, 0x7d,
- 0x17, 0x0e, 0xa8, 0xdf, 0xd1, 0xef, 0xd2, 0xa6, 0xa9, 0x19, 0x25, 0x93,
- 0x1b, 0x3e, 0x72, 0x47, 0x42, 0x93, 0x3d, 0xa4, 0xd5, 0x90, 0xde, 0x89,
- 0xb0, 0x94, 0x54, 0xaf, 0x29, 0x55, 0x77, 0x53, 0x5b, 0x15, 0xcc, 0x77,
- 0x36, 0xa9, 0x16, 0x74, 0x60, 0xb8, 0x1e, 0x41, 0x6a, 0x30, 0xa9, 0x9f,
- 0x6b, 0x30, 0xc1, 0xcb, 0x80, 0xe5, 0xc0, 0xd2, 0xa4, 0x6b, 0x7a, 0x35,
- 0x2f, 0x6f, 0x08, 0x09, 0xe5, 0x86, 0xe1, 0x91, 0xb9, 0xbc, 0xc2, 0xee,
- 0x87, 0xec, 0x43, 0x40, 0xd8, 0x38, 0x33, 0xc4, 0xcc, 0xf7, 0x52, 0xd0,
- 0xa6, 0xa3, 0xaf, 0x79, 0x16, 0x66, 0x82, 0x26, 0x39, 0x11, 0xfd, 0xe1,
- 0x6c, 0x8a, 0x78, 0xe5, 0x6f, 0xe2, 0x20, 0x27, 0x97, 0x78, 0xbf, 0xd9,
- 0xd5, 0x57, 0x34, 0x4c, 0xf4, 0xf3, 0x63, 0x46, 0x48, 0xa0, 0xdb, 0xb0,
- 0x54, 0xad, 0xc9, 0x7e, 0xd0, 0xde, 0xe3, 0x5d, 0x34, 0x2e, 0xb8, 0xc2,
- 0x91, 0xb3, 0xd6, 0x28, 0x6b, 0x93, 0x53, 0xb7, 0x08, 0x48, 0x40, 0x02,
- 0x63, 0xc0, 0xff, 0x7e, 0xf1, 0x09, 0x76, 0x3b, 0x86, 0xc3, 0xda, 0x01,
- 0xe4, 0x76, 0x7b, 0x7b, 0xbb, 0x39, 0x68, 0x44, 0xd5, 0x99, 0x08, 0x31,
- 0x22, 0x3f, 0x57, 0x35, 0xa9, 0x0e, 0xf0, 0xcc, 0xd6, 0x60, 0xc1, 0x19,
- 0x5b, 0xec, 0x3d, 0x08, 0x1c, 0xd2, 0x47, 0x7d, 0x24, 0x78, 0xf0, 0x8f,
- 0x17, 0x0d, 0xd7, 0xfe, 0x15, 0x1c, 0xf8, 0xf5, 0x47, 0x1a, 0xc6, 0x01,
- 0x6d, 0xcd, 0x8d, 0x10, 0xb5, 0x60, 0x8f, 0xf3, 0x22, 0x4e, 0x26, 0xb3,
- 0xbc, 0xa3, 0xf1, 0xd3, 0x2b, 0x76, 0x0f, 0x10, 0x5b, 0x1d, 0x9c, 0x9c,
- 0xbd, 0x23, 0xbc, 0x4d, 0xec, 0x3d, 0x9c, 0x57, 0x9c, 0xd1, 0x84, 0x3f,
- 0x23, 0xf3, 0x8d, 0xbd, 0x08, 0x94, 0x49, 0x37, 0xf6, 0x81, 0x84, 0x38,
- 0x02, 0x8f, 0x96, 0xad, 0x86, 0x5a, 0x38, 0xbd, 0xd0, 0x31, 0xa0, 0x81,
- 0x31, 0x1c, 0x8c, 0x0b, 0xbe, 0x5d, 0xd5, 0xf8, 0x6d, 0x5f, 0x4a, 0xf0,
- 0x55, 0xfb, 0x6d, 0x6d, 0xcb, 0x9e, 0x98, 0xb1, 0x1b, 0xef, 0x9a, 0x06,
- 0x12, 0x45, 0x24, 0xcd, 0x00, 0xbc, 0x2a, 0x4a, 0xdb, 0x1c, 0x40, 0xfd,
- 0x23, 0x26, 0x1e, 0x2f, 0xd9, 0xcc, 0x92, 0xd0, 0x45, 0xbb, 0xa2, 0x98,
- 0x53, 0xcb, 0x6b, 0x88, 0x4c, 0xea, 0xa5, 0xdb, 0x92, 0xc0, 0x7b, 0xf9,
- 0x2c, 0x6f, 0x63, 0x73, 0xeb, 0x68, 0xa1, 0xa2, 0x7a, 0x0f, 0x70, 0x5e,
- 0x7b, 0x44, 0x2c, 0x2c, 0xaa, 0x87, 0xbd, 0x5d, 0xc4, 0x2a, 0xef, 0xfa,
- 0xfc, 0xd5, 0x8b, 0x39, 0x4a, 0xd0, 0xd6, 0x17, 0x84, 0x51, 0x58, 0xa3,
- 0xe6, 0x27, 0xf0, 0x7b, 0x02, 0x07, 0xcc, 0x60, 0xc4, 0x08, 0x08, 0x92,
- 0x26, 0x53, 0x50, 0xf1, 0x72, 0xad, 0x49, 0x23, 0xe8, 0xe6, 0x2a, 0xf3,
- 0x6a, 0x30, 0xe6, 0x89, 0x48, 0xf4, 0x46, 0x7b, 0xe1, 0x56, 0xa5, 0x1a,
- 0x7f, 0x06, 0x6f, 0x1a, 0x77, 0xf8, 0x50, 0x7d, 0x3d, 0xbd, 0x4e, 0x32,
- 0x96, 0x32, 0x12, 0x38, 0x68, 0xc2, 0x69, 0x50, 0x22, 0xc5, 0x65, 0x08,
- 0xc2, 0x2e, 0xc6, 0xcc, 0x17, 0x74, 0x87, 0x61, 0x93, 0x56, 0x98, 0x82,
- 0x8f, 0xe9, 0xa3, 0xa5, 0x1e, 0x19, 0xca, 0x76, 0xd8, 0x45, 0x69, 0x40,
- 0xad, 0xc8, 0x63, 0x3c, 0x02, 0x36, 0x10, 0xbe, 0xc1, 0xf0, 0x92, 0xf4,
- 0xdc, 0xed, 0x46, 0xc2, 0xd7, 0x26, 0x8c, 0x72, 0xd2, 0x60, 0x56, 0x86,
- 0x80, 0xc1, 0x8a, 0x29, 0xdd, 0x69, 0xd1, 0xaf, 0xc9, 0x56, 0xbe, 0x72,
- 0xae, 0x5c, 0xd1, 0x97, 0x14, 0x83, 0x99, 0x6a, 0xa1, 0xd1, 0x3c, 0x46,
- 0xe1, 0xeb, 0x5d, 0x17, 0x73, 0x3a, 0x40, 0xe8, 0x48, 0xa0, 0x6f, 0x22,
- 0x3f, 0xa4, 0x39, 0x95, 0x9d, 0x35, 0xb7, 0xf2, 0x09, 0xcc, 0x2e, 0x23,
- 0x2e, 0xa5, 0xd9, 0xfc, 0xa1, 0xcf, 0x4e, 0x8b, 0x2b, 0x4c, 0x31, 0x88,
- 0x2f, 0x9a, 0x28, 0x68, 0x2e, 0x64, 0x54, 0x17, 0xff, 0x99, 0xc2, 0x4a,
- 0x4a, 0x86, 0xb3, 0x08, 0x53, 0x92, 0x0a, 0x67, 0xaa, 0xd4, 0xce, 0x0f,
- 0xcf, 0x9c, 0xd2, 0x9c, 0x41, 0x48, 0x4f, 0xb5, 0x39, 0xb5, 0xda, 0xf1,
- 0x0e, 0x7e, 0x30, 0x5d, 0xd4, 0x0d, 0xe4, 0xb7, 0xdb, 0x1d, 0xbb, 0x10,
- 0x67, 0x83, 0xcc, 0x0f, 0x9f, 0xb0, 0x39, 0x76, 0xc0, 0x65, 0xf1, 0x5d,
- 0x5c, 0xd8, 0xaf, 0xd6, 0xee, 0xe4, 0x8f, 0xba, 0x48, 0xde, 0xf9, 0xf7,
- 0xc8, 0xbb, 0xe6, 0x35, 0x62, 0x49, 0xec, 0x81, 0x10, 0x05, 0x44, 0xd8,
- 0x83, 0xd7, 0x07, 0x0e, 0x8f, 0xf5, 0x64, 0x67, 0xef, 0x7c, 0x88, 0x24,
- 0x71, 0xf5, 0xe1, 0xbd, 0xf5, 0xf0, 0x05, 0xd2, 0x6e, 0x26, 0xd3, 0x36,
- 0x47, 0x7e, 0xe3, 0xdb, 0x23, 0x9f, 0xe5, 0xcb, 0x83, 0xac, 0xd1, 0x25,
- 0xe1, 0xdf, 0x1d, 0xb9, 0x77, 0x75, 0x68, 0x43, 0xa1, 0xdf, 0xe4, 0xf2,
- 0xc0, 0x4f, 0x9a, 0x63, 0x3d, 0x4d, 0x7d, 0xbc, 0xdf, 0x53, 0x13, 0xe5,
- 0xe4, 0x42, 0x58, 0x84, 0xf7, 0xd3, 0x3e, 0xf0, 0xf4, 0x56, 0x44, 0x6f,
- 0xa9, 0xa0, 0xd6, 0xde, 0x55, 0xd3, 0x39, 0x05, 0xe0, 0xbc, 0xaa, 0x30,
- 0x7b, 0x76, 0x13, 0xc6, 0x14, 0x84, 0x87, 0x6e, 0x93, 0x32, 0x97, 0xc6,
- 0x8b, 0x6e, 0xe2, 0x34, 0x5c, 0x43, 0x46, 0x38, 0x30, 0xde, 0x7d, 0x5c,
- 0xf9, 0x9e, 0xe5, 0x2a, 0x23, 0x54, 0x96, 0xa0, 0x67, 0x88, 0x8e, 0xbd,
- 0x21, 0x22, 0x57, 0xde, 0x76, 0x9e, 0x7c, 0xf7, 0xe0, 0x8b, 0xd3, 0xb2,
- 0xfb, 0xd8, 0x37, 0x49, 0xc6, 0x67, 0xdf, 0x9c, 0xa3, 0x16, 0x65, 0x08,
- 0x2d, 0xec, 0x09, 0x5c, 0xd5, 0xfa, 0x46, 0x5c, 0x30, 0xaa, 0xf6, 0xd3,
- 0xa1, 0x53, 0x98, 0xdb, 0xaa, 0xbe, 0xa1, 0x5a, 0x33, 0x77, 0xee, 0xb9,
- 0xc7, 0x18, 0x72, 0x24, 0xb2, 0x71, 0x10, 0xd9, 0x4f, 0x45, 0x07, 0xce,
- 0x78, 0xa5, 0x52, 0x3c, 0x1a, 0x3c, 0xec, 0x8a, 0xc6, 0x79, 0xfc, 0x8a,
- 0xda, 0x48, 0xe2, 0x2d, 0x15, 0x21, 0xd4, 0x7e, 0x87, 0xf0, 0xa0, 0x64,
- 0x49, 0x4d, 0x85, 0x61, 0x6f, 0x2e, 0xb6, 0xb9, 0x71, 0xb2, 0xb2, 0xb8,
- 0x19, 0xa5, 0x23, 0xc6, 0x39, 0x7f, 0x04, 0xd3, 0xa2, 0x7d, 0x53, 0x4b,
- 0x5c, 0x37, 0x68, 0xc1, 0x12, 0x12, 0xd0, 0xf5, 0x1c, 0x8e, 0x01, 0xea,
- 0xa1, 0xdc, 0xf3, 0x89, 0xab, 0x49, 0x0a, 0xb4, 0x6a, 0xe9, 0x36, 0xc2,
- 0x09, 0x3b, 0x33, 0xf6, 0x58, 0x8c, 0x5a, 0x43, 0x62, 0x04, 0x68, 0x2a,
- 0xf5, 0xdd, 0x17, 0x65, 0xf1, 0x29, 0x65, 0xa9, 0x46, 0x5e, 0x17, 0x42,
- 0x51, 0x66, 0xd3, 0x4d, 0x6a, 0x09, 0x41, 0x71, 0x10, 0x88, 0xf9, 0x69,
- 0xe2, 0x67, 0x22, 0xd0, 0xd9, 0x56, 0x44, 0x3d, 0xab, 0x5e, 0x64, 0xf4,
- 0x3a, 0x41, 0xd9, 0x91, 0x91, 0x2b, 0x0f, 0x80, 0xb5, 0x8c, 0x99, 0xa8,
- 0xff, 0xc2, 0x2b, 0xcd, 0xec, 0xba, 0x7b, 0xa5, 0x05, 0xb6, 0x74, 0x79,
- 0x8e, 0xb6, 0x23, 0x2f, 0xc5, 0xc3, 0x8d, 0x7e, 0x0e, 0x4d, 0x16, 0xa5,
- 0x30, 0x4a, 0xb4, 0xcf, 0xa7, 0xe5, 0xee, 0x9e, 0xca, 0xb2, 0xdb, 0xb1,
- 0x92, 0x43, 0x4c, 0x0c, 0x8c, 0xd5, 0x77, 0x32, 0x8e, 0x24, 0xb7, 0x8f,
- 0x5c, 0x64, 0xea, 0x51, 0xe0, 0x2c, 0x61, 0xf4, 0x14, 0x1a, 0x67, 0x0b,
- 0x0d, 0x88, 0x48, 0x85, 0x5e, 0xa9, 0x21, 0xe5, 0x0e, 0xd9, 0x40, 0x00,
- 0xb9, 0xfb, 0xc8, 0x9f, 0x80, 0xfb, 0x4e, 0xe8, 0xb7, 0x52, 0x3c, 0x26,
- 0x26, 0x73, 0xf4, 0x9f, 0xd8, 0x8a, 0x21, 0xc1, 0x0c, 0x89, 0xb4, 0x6c,
- 0xb3, 0x17, 0x7f, 0xd9, 0x74, 0x32, 0xe0, 0xc3, 0x40, 0x13, 0x13, 0x94,
- 0x2b, 0x83, 0xbd, 0x8a, 0xcd, 0x40, 0x5d, 0x6d, 0x9e, 0x26, 0xd8, 0x56,
- 0x90, 0x8e, 0xd0, 0x1f, 0x43, 0xdb, 0xae, 0x10, 0x8c, 0xb4, 0xda, 0x4c,
- 0xfa, 0x22, 0x73, 0x3e, 0xa7, 0x78, 0x34, 0x13, 0x4d, 0xd4, 0x94, 0x39,
- 0x80, 0xda, 0xe5, 0x65, 0x0b, 0x53, 0xef, 0x05, 0xbe, 0x81, 0x70, 0x52,
- 0x92, 0x10, 0x59, 0x94, 0x91, 0xe9, 0xb9, 0xc0, 0x1f, 0xab, 0xd1, 0x01,
- 0xd7, 0x4a, 0x31, 0x0b, 0xd5, 0x06, 0x4e, 0xd8, 0x87, 0x48, 0x27, 0x94,
- 0x66, 0xc4, 0xde, 0x19, 0xfc, 0x69, 0xdf, 0xfe, 0x75, 0xef, 0xc5, 0x06,
- 0x83, 0x29, 0xa2, 0xc9, 0x3e, 0xb0, 0x4f, 0xb4, 0xbd, 0x20, 0x70, 0xd1,
- 0x50, 0xa3, 0x19, 0x78, 0x08, 0xfe, 0x34, 0xcf, 0x75, 0x74, 0x43, 0xc5,
- 0xec, 0xb0, 0x6d, 0xcc, 0xca, 0x68, 0xe2, 0xf1, 0x5a, 0x5f, 0x7e, 0xdd,
- 0xe1, 0xb7, 0x0d, 0x96, 0x16, 0x8d, 0x1d, 0xcd, 0x89, 0xd9, 0x70, 0x75,
- 0x25, 0x2f, 0x3e, 0xd2, 0x5f, 0xd9, 0xf7, 0xb9, 0xf2, 0xee, 0xf4, 0xe3,
- 0xd9, 0xfb, 0xd3, 0xef, 0xfe, 0xb6, 0xb2, 0x36, 0x30, 0x75, 0xb8, 0x65,
- 0xba, 0xe2, 0x27, 0x9c, 0x47, 0x8d, 0xcf, 0x5a, 0x7f, 0x31, 0x7f, 0x83,
- 0x33, 0x5f, 0x85, 0x1f, 0xd5, 0x59, 0xc3, 0x30, 0x3e, 0x28, 0x03, 0x63,
- 0xbf, 0x95, 0x3c, 0x4c, 0x86, 0xb6, 0x1d, 0x98, 0xb9, 0xd7, 0xc3, 0xff,
- 0xea, 0x1a, 0x61, 0xa3, 0x96, 0x3f, 0xb7, 0x3c, 0x60, 0xcf, 0x01, 0xdd,
- 0xef, 0x2d, 0x77, 0x80, 0xef, 0xfa, 0x1a, 0xf1, 0x6c, 0x9c, 0xde, 0x7a,
- 0x32, 0x8d, 0x6f, 0x2f, 0x1e, 0x48, 0x0d, 0x38, 0x3f, 0x79, 0x0b, 0xca,
- 0x04, 0x96, 0x70, 0x0b, 0x8a, 0x45, 0x7d, 0x3f, 0x49, 0xe5, 0x6d, 0xba,
- 0xf5, 0x39, 0xfe, 0x84, 0x4d, 0x02, 0x69, 0x95, 0x8f, 0x29, 0xd1, 0x31,
- 0xb0, 0x26, 0xe2, 0x4e, 0x15, 0xb0, 0x7e, 0x1c, 0x92, 0x43, 0xb4, 0xb3,
- 0xd9, 0x24, 0x0b, 0x16, 0x55, 0x6b, 0x89, 0x4e, 0x7a, 0x07, 0xc2, 0x88,
- 0x6a, 0x9e, 0xd1, 0xb8, 0x44, 0xd8, 0xb6, 0x27, 0x44, 0x04, 0x79, 0xfd,
- 0xbf, 0xb0, 0x2c, 0x9c, 0x09, 0xd1, 0x08, 0x2a, 0xc3, 0x0f, 0xda, 0x74,
- 0x6e, 0x93, 0x95, 0xe9, 0xea, 0x85, 0x66, 0xb8, 0x32, 0x23, 0xf4, 0x3b,
- 0x2f, 0x97, 0x93, 0xea, 0x1e, 0x51, 0xe3, 0x84, 0x83, 0x63, 0xda, 0xa5,
- 0xbc, 0xcd, 0x46, 0x65, 0x51, 0x15, 0x97, 0x52, 0x51, 0x6b, 0x7d, 0x40,
- 0xc7, 0xc7, 0xc3, 0xe8, 0x36, 0xbd, 0x50, 0x4c, 0x98, 0x81, 0x1f, 0x7a,
- 0xa5, 0x3e, 0x22, 0x98, 0x99, 0x50, 0x66, 0x69, 0x8d, 0xbb, 0xa1, 0x95,
- 0x7e, 0x08, 0xf8, 0x8c, 0xef, 0xa4, 0x82, 0x13, 0x4a, 0x9e, 0x05, 0x18,
- 0x72, 0x34, 0xa1, 0x1b, 0x3e, 0x9a, 0xa5, 0xfe, 0x09, 0x98, 0xb0, 0xae,
- 0x63, 0xae, 0x67, 0x27, 0x8f, 0x86, 0x80, 0xbb, 0xc4, 0xd8, 0xcc, 0x4a,
- 0x94, 0xae, 0x68, 0x4b, 0x88, 0x33, 0xfc, 0x13, 0x06, 0x63, 0x8a, 0x4b,
- 0x2f, 0x60, 0x2c, 0x05, 0x2a, 0xa2, 0x59, 0x48, 0xad, 0x74, 0x9a, 0x8f,
- 0x8b, 0x92, 0xd2, 0x12, 0xf1, 0x4c, 0x6a, 0x5d, 0x52, 0x9a, 0x8f, 0x8a,
- 0x79, 0x89, 0x95, 0xf4, 0xdc, 0x50, 0xc8, 0xef, 0xd7, 0x77, 0x7b, 0xcd,
- 0x20, 0x6e, 0xba, 0x0b, 0x56, 0xb5, 0xa6, 0x7a, 0x6d, 0x69, 0x5c, 0xc2,
- 0xb8, 0x80, 0x7a, 0x71, 0x3b, 0xbb, 0x11, 0x6c, 0xff, 0x20, 0xfb, 0x61,
- 0x01, 0x55, 0xf0, 0xc4, 0xc0, 0xe6, 0xbc, 0xca, 0xae, 0x42, 0xe0, 0x26,
- 0xc7, 0x97, 0x16, 0xf8, 0xce, 0xea, 0xae, 0x34, 0x1b, 0x51, 0x3d, 0x4a,
- 0x11, 0x23, 0x2d, 0x36, 0xe0, 0x2c, 0xe6, 0x3c, 0x00, 0x45, 0x18, 0xe6,
- 0xbe, 0x7f, 0xa3, 0x64, 0x0e, 0x3c, 0x05, 0xbf, 0xe8, 0xa8, 0x35, 0x97,
- 0x68, 0x4e, 0x96, 0xb5, 0xd6, 0xc2, 0xfd, 0x5f, 0x3d, 0xd0, 0x3f, 0xc7,
- 0xcf, 0x1a, 0xb6, 0xd6, 0x3a, 0x02, 0xcd, 0x9c, 0x52, 0x12, 0x28, 0x56,
- 0x72, 0x33, 0x55, 0xf8, 0xdf, 0x63, 0xda, 0x76, 0x2d, 0xff, 0xe5, 0xc4,
- 0x13, 0x57, 0x24, 0x14, 0xf8, 0x83, 0xad, 0xf8, 0x22, 0x05, 0x5d, 0xbb,
- 0x8c, 0xf6, 0x6b, 0x54, 0x68, 0xc3, 0xc5, 0xbf, 0xa6, 0xf6, 0x57, 0xda,
- 0xeb, 0xb9, 0xf9, 0xf3, 0x5f, 0xf1, 0xeb, 0xd1, 0x39, 0xe9, 0xc3, 0x9c,
- 0x3d, 0x79, 0x8a, 0xe5, 0x9d, 0x51, 0xb4, 0xe5, 0x75, 0xe9, 0xd6, 0x5e,
- 0x65, 0x41, 0x91, 0x23, 0x23, 0xf1, 0x40, 0x2a, 0x36, 0xf0, 0xc4, 0x16,
- 0xf9, 0x4f, 0xf3, 0x7c, 0x14, 0xf4, 0xcd, 0x89, 0x29, 0x6f, 0x53, 0x92,
- 0xa4, 0x47, 0x10, 0x17, 0x91, 0x35, 0xea, 0x57, 0x10, 0x5e, 0xc9, 0x16,
- 0xb4, 0xc5, 0xb1, 0x9f, 0xb1, 0x02, 0x53, 0x77, 0xd2, 0x2a, 0x34, 0x42,
- 0x16, 0xac, 0x5b, 0x6b, 0xad, 0x5a, 0x50, 0x6f, 0x65, 0x0e, 0x68, 0xbb,
- 0xb0, 0x01, 0x4b, 0x87, 0x76, 0x34, 0x22, 0x14, 0x53, 0x4c, 0x4b, 0xc6,
- 0xb2, 0x97, 0xd6, 0x70, 0xcf, 0x9e, 0xef, 0x6e, 0xfc, 0xde, 0x39, 0xc2,
- 0x4d, 0x4e, 0xe8, 0x4d, 0x5f, 0x7f, 0x7c, 0x39, 0xf8, 0x6a, 0xf7, 0x32,
- 0xde, 0x19, 0x6c, 0xfe, 0xd7, 0xdf, 0xdf, 0xf6, 0x7e, 0x49, 0xd2, 0x53,
- 0x83, 0x17, 0x17, 0xf6, 0xda, 0x66, 0xdf, 0x01, 0x42, 0x7a, 0x45, 0xfb,
- 0xf0, 0x9f, 0x2f, 0x16, 0x65, 0xfb, 0xe9, 0xc6, 0xb2, 0xb6, 0xd6, 0xe8,
- 0x1d, 0xa5, 0x7a, 0xac, 0xa0, 0x8c, 0xa9, 0x44, 0xf6, 0x51, 0x9f, 0xa9,
- 0x39, 0x55, 0x9f, 0xef, 0xee, 0xf8, 0x94, 0x01, 0x98, 0xa6, 0x60, 0x4f,
- 0xc5, 0x5a, 0xdf, 0x14, 0x17, 0x7d, 0x33, 0x2d, 0xda, 0xd3, 0x20, 0x69,
- 0x1d, 0x84, 0x4c, 0x75, 0x7f, 0x38, 0xf3, 0xa9, 0x6c, 0x1e, 0x05, 0xea,
- 0xf4, 0x1f, 0xde, 0x9f, 0x70, 0xa9, 0x9f, 0x3c, 0x19, 0x6e, 0xfe, 0x66,
- 0xdc, 0xa0, 0x5a, 0x4d, 0xc9, 0x70, 0xb7, 0xf3, 0x19, 0x08, 0x94, 0x3a,
- 0x9b, 0x38, 0x82, 0x71, 0x31, 0xee, 0x6b, 0x2b, 0x1f, 0x98, 0x1a, 0xb3,
- 0x3a, 0x93, 0x33, 0x18, 0x73, 0x84, 0x10, 0xc6, 0xec, 0x64, 0x83, 0x98,
- 0x21, 0x37, 0x38, 0x35, 0x5c, 0x15, 0x90, 0xcf, 0x38, 0xc6, 0xb4, 0x62,
- 0x20, 0x17, 0xa5, 0x96, 0x53, 0x0c, 0x99, 0x61, 0x1f, 0x1f, 0x9d, 0xf1,
- 0x6e, 0x6a, 0xde, 0xda, 0xec, 0x6c, 0xe7, 0x4c, 0x93, 0xf5, 0x48, 0x84,
- 0x93, 0xff, 0x45, 0xec, 0x6e, 0x39, 0xad, 0x57, 0x4f, 0x67, 0x3d, 0xd8,
- 0xfe, 0xe5, 0x58, 0xdc, 0xe3, 0x16, 0x62, 0xf2, 0xff, 0x12, 0x94, 0x08,
- 0xfa, 0x31, 0x83, 0xc6, 0xc4, 0x5c, 0x0a, 0xd8, 0xdd, 0xdf, 0xf8, 0x79,
- 0xf3, 0x10, 0xb8, 0x1c, 0x17, 0x44, 0x4a, 0xfe, 0xb6, 0x44, 0xfc, 0x23,
- 0x8d, 0x87, 0x14, 0xf2, 0x90, 0x8b, 0x31, 0x57, 0xd5, 0x63, 0x4c, 0x63,
- 0xd6, 0xdb, 0x9d, 0xf9, 0x16, 0xa5, 0xcf, 0x3f, 0xfe, 0xe9, 0x3b, 0xe2,
- 0xbe, 0xff, 0x91, 0xd0, 0x54, 0x52, 0xd4, 0x3b, 0xcc, 0x76, 0xa8, 0xc2,
- 0x51, 0x35, 0x74, 0x1a, 0x46, 0x2b, 0x73, 0xdb, 0xe7, 0xf9, 0xc0, 0xcb,
- 0xd4, 0x2f, 0x8c, 0xfc, 0x29, 0x2b, 0x7f, 0x58, 0x91, 0x28, 0xb8, 0x86,
- 0xff, 0xa4, 0x0e, 0x44, 0x14, 0x78, 0x99, 0xb7, 0xee, 0x74, 0x89, 0xf7,
- 0x9d, 0x17, 0x18, 0x32, 0x16, 0x90, 0x6e, 0x76, 0x99, 0x12, 0xae, 0x8f,
- 0x53, 0x91, 0x2b, 0xdd, 0x49, 0x0c, 0x9a, 0xfd, 0xa5, 0x1a, 0xa5, 0x38,
- 0x4b, 0x4f, 0x83, 0xc3, 0x47, 0x68, 0xb1, 0x68, 0xb0, 0x13, 0x60, 0x56,
- 0x96, 0x77, 0x84, 0xab, 0x7b, 0xc8, 0x10, 0xc0, 0x0f, 0xff, 0x00, 0xd9,
- 0xda, 0xaf, 0x6f, 0x8b, 0x7f, 0xba, 0x21, 0xe3, 0x1e, 0xfa, 0xe1, 0x7a,
- 0xb8, 0x84, 0x8f, 0x7f, 0xd8, 0x44, 0x70, 0x05, 0x2f, 0xab, 0xa4, 0xa0,
- 0xce, 0xce, 0x46, 0x60, 0x1b, 0x1b, 0x72, 0x51, 0xab, 0x33, 0xf3, 0x49,
- 0xc4, 0xb8, 0xea, 0xa3, 0x55, 0xfd, 0xcf, 0x01, 0xfe, 0xf7, 0xfb, 0xcd,
- 0x78, 0xf7, 0x47, 0xfb, 0xd9, 0x3f, 0x6c, 0x7e, 0xfc, 0xc3, 0x56, 0x2f,
- 0x84, 0x9b, 0xe1, 0xa0, 0xe6, 0x39, 0x05, 0x07, 0x15, 0x95, 0xc2, 0x48,
- 0xcd, 0xa9, 0x64, 0xd5, 0xd9, 0xa2, 0x1c, 0x92, 0x48, 0xfe, 0x4e, 0x62,
- 0x38, 0xae, 0x65, 0xc8, 0x0b, 0x88, 0xb1, 0x66, 0x6f, 0x02, 0x4d, 0xf8,
- 0x65, 0x91, 0x55, 0xd2, 0x47, 0x48, 0x44, 0x96, 0xa7, 0xef, 0xa0, 0x00,
- 0xbb, 0x77, 0xb0, 0x3d, 0x10, 0x75, 0x55, 0xd1, 0x29, 0x7d, 0x7a, 0xc8,
- 0x49, 0x05, 0x4d, 0x38, 0x89, 0x1a, 0xf1, 0xf7, 0x22, 0xba, 0xb8, 0x88,
- 0x9c, 0xb0, 0xfb, 0x67, 0x01, 0x4d, 0x48, 0x04, 0x19, 0xf9, 0xd0, 0x34,
- 0xc6, 0x09, 0x2f, 0x9a, 0x3c, 0x51, 0x81, 0xc0, 0xa1, 0xc9, 0x1b, 0x19,
- 0x48, 0x97, 0xb5, 0xe7, 0x97, 0xf9, 0x09, 0x93, 0xb0, 0x4d, 0xe8, 0x56,
- 0x64, 0x6e, 0x81, 0x12, 0xcc, 0xa4, 0xdc, 0xd0, 0xcf, 0xf4, 0x48, 0xa0,
- 0x82, 0x48, 0xfa, 0x71, 0x15, 0xc4, 0x6c, 0x4a, 0x2e, 0x40, 0x93, 0x6b,
- 0x48, 0x75, 0xa2, 0x07, 0x09, 0x95, 0x0b, 0x8b, 0x47, 0x9e, 0x54, 0x1d,
- 0x04, 0x71, 0x49, 0xe1, 0x56, 0x82, 0x32, 0xa1, 0x88, 0x38, 0x0b, 0x62,
- 0xd5, 0x0c, 0x92, 0xe4, 0x4a, 0x6d, 0x5b, 0xbc, 0xc4, 0x3f, 0x15, 0x44,
- 0x97, 0x91, 0xc5, 0x23, 0xf5, 0xf2, 0xdb, 0xf0, 0xce, 0x1d, 0xdf, 0x83,
- 0x58, 0xe3, 0x4e, 0x52, 0xa6, 0x85, 0x8b, 0x3a, 0x69, 0xf5, 0xba, 0xac,
- 0xa2, 0x95, 0x78, 0x25, 0x5a, 0x75, 0xfc, 0x5f, 0xe3, 0xa4, 0xba, 0x5e,
- 0x0b, 0xde, 0x2a, 0x26, 0x9e, 0x69, 0xe5, 0x9a, 0x34, 0x39, 0x27, 0xad,
- 0x98, 0x05, 0x5a, 0xa0, 0x25, 0x2d, 0xc7, 0x74, 0x18, 0x67, 0xc3, 0x81,
- 0x0b, 0x2a, 0xc6, 0x19, 0x95, 0x17, 0xde, 0x8b, 0x93, 0xd3, 0xd6, 0x71,
- 0x99, 0x1b, 0xda, 0xaf, 0x24, 0x5a, 0x1f, 0xa7, 0x37, 0xeb, 0xf9, 0x7c,
- 0x32, 0xd9, 0x7b, 0x04, 0xed, 0x81, 0xd2, 0xe6, 0xf9, 0xf6, 0xe3, 0xa7,
- 0xec, 0xb8, 0x95, 0xcc, 0x4d, 0xe2, 0x75, 0x78, 0x6c, 0xef, 0x51, 0x83,
- 0xc2, 0x83, 0x4b, 0x16, 0xcc, 0x14, 0xdd, 0x85, 0x1a, 0xbf, 0x86, 0x54,
- 0xfb, 0xe5, 0x62, 0x6a, 0xc9, 0x59, 0xeb, 0xef, 0xb6, 0x42, 0x39, 0x36,
- 0x8f, 0xbf, 0x90, 0x5b, 0xff, 0xc4, 0x9a, 0xe7, 0xc0, 0x1d, 0xed, 0x41,
- 0x44, 0xdb, 0x2b, 0xdb, 0xd1, 0x4b, 0x35, 0x73, 0x27, 0xce, 0xa6, 0x53,
- 0xe0, 0x23, 0xbf, 0x8e, 0x85, 0xab, 0x17, 0xc7, 0x54, 0x0d, 0x16, 0x99,
- 0x3c, 0x1f, 0x1b, 0xcb, 0x08, 0x40, 0xda, 0x69, 0xe6, 0x57, 0xb0, 0xdf,
- 0x8d, 0x64, 0x3e, 0xc8, 0xbd, 0x2b, 0xa8, 0xa6, 0x0c, 0xee, 0x89, 0xea,
- 0x19, 0x45, 0xc9, 0x40, 0x17, 0x24, 0x88, 0x21, 0x1b, 0x24, 0xa7, 0xc0,
- 0x01, 0x7c, 0x3d, 0xf6, 0xe3, 0x2a, 0x98, 0x75, 0x84, 0x46, 0xc2, 0x28,
- 0x6d, 0x60, 0xa4, 0xde, 0x26, 0x8c, 0x9a, 0x6d, 0x01, 0x65, 0x11, 0x39,
- 0xcf, 0x86, 0x60, 0xd8, 0x88, 0x6a, 0x0f, 0x47, 0x0a, 0x3c, 0x5e, 0x2a,
- 0xa2, 0x2e, 0xdc, 0xa1, 0x5d, 0x42, 0xb9, 0x1d, 0x8c, 0x4b, 0x2e, 0x28,
- 0x35, 0x6e, 0xf4, 0xfe, 0xf7, 0x6e, 0x81, 0xf0, 0x80, 0x3a, 0xe8, 0x6f,
- 0x70, 0x14, 0xff, 0xaf, 0x45, 0xcc, 0xb9, 0xb9, 0x90, 0x73, 0x97, 0x4a,
- 0x04, 0xb3, 0x1f, 0x9f, 0x26, 0x77, 0xcd, 0x48, 0xdc, 0x8b, 0xa6, 0x79,
- 0xe4, 0x3e, 0x18, 0xac, 0xbd, 0x65, 0x36, 0x4c, 0xaa, 0x4f, 0x4c, 0xba,
- 0x71, 0x61, 0x79, 0xd1, 0x61, 0x45, 0xd6, 0x05, 0x9b, 0x53, 0x59, 0xd4,
- 0x79, 0x10, 0x31, 0xad, 0x4b, 0x6c, 0x01, 0xed, 0xd6, 0xca, 0x33, 0x46,
- 0x1f, 0xdd, 0xad, 0x86, 0x5b, 0xf8, 0x93, 0x55, 0x86, 0x7c, 0x91, 0xe4,
- 0x81, 0xe2, 0xc5, 0x2a, 0x90, 0x83, 0xf8, 0xdb, 0xb3, 0x82, 0x6f, 0xac,
- 0x29, 0xe4, 0x0c, 0x7c, 0x2f, 0x60, 0x79, 0x3f, 0x96, 0x57, 0x70, 0x17,
- 0x36, 0x37, 0x36, 0xba, 0x38, 0xe5, 0x72, 0x09, 0xa4, 0xa0, 0x66, 0xe1,
- 0x5c, 0x83, 0x07, 0x9a, 0x61, 0xfa, 0xc6, 0x83, 0xdd, 0x25, 0x05, 0x02,
- 0x95, 0x41, 0x48, 0x92, 0x76, 0x7f, 0x58, 0x3a, 0x08, 0xeb, 0x11, 0x4a,
- 0x0e, 0xfc, 0x53, 0xd2, 0xcf, 0x7d, 0x4d, 0xa5, 0x4c, 0xaf, 0x10, 0x88,
- 0x1a, 0x1d, 0x36, 0x08, 0x32, 0x09, 0xfa, 0x4a, 0x9e, 0x96, 0xff, 0x6d,
- 0x4e, 0xf2, 0x6f, 0x71, 0x78, 0x6d, 0xda, 0x2e, 0x1d, 0xdc, 0x46, 0x37,
- 0x92, 0x05, 0x7b, 0x16, 0xa3, 0x97, 0x31, 0xda, 0x9f, 0x5d, 0x97, 0x49,
- 0xe5, 0x37, 0xc7, 0x1b, 0x0e, 0xdf, 0x44, 0x14, 0x46, 0x3f, 0x83, 0xa7,
- 0xf8, 0x19, 0xa3, 0x59, 0x3a, 0xcd, 0xbc, 0x7e, 0x6f, 0xff, 0x10, 0xad,
- 0x81, 0xf3, 0xe7, 0xa5, 0xf7, 0xd4, 0xf2, 0xe5, 0xa1, 0xf4, 0x5a, 0x67,
- 0x02, 0x7c, 0x8c, 0x75, 0x67, 0x71, 0x52, 0xc5, 0x9e, 0x1c, 0x3a, 0x6f,
- 0xc3, 0x49, 0x62, 0x90, 0x07, 0xe1, 0x1b, 0x30, 0x17, 0x3c, 0x47, 0xfc,
- 0x75, 0x60, 0x99, 0xf5, 0xc1, 0x60, 0x1d, 0x6d, 0xae, 0x75, 0xf8, 0x43,
- 0x8b, 0x64, 0xc4, 0x2b, 0xd3, 0x1a, 0x8e, 0x52, 0xd9, 0xa9, 0x79, 0x36,
- 0x46, 0xcf, 0xa5, 0x53, 0xb9, 0x03, 0xa9, 0xf4, 0xf7, 0x39, 0xa8, 0xa9,
- 0x84, 0xef, 0x93, 0x96, 0x84, 0x52, 0x9a, 0x4e, 0x1b, 0x1e, 0x3c, 0xcf,
- 0x8b, 0xc4, 0xe9, 0x8e, 0x95, 0x00, 0x2d, 0x93, 0x59, 0xea, 0x02, 0xfe,
- 0x70, 0x49, 0x3b, 0x61, 0x62, 0x66, 0xb5, 0xc6, 0x96, 0x09, 0xc5, 0x36,
- 0x79, 0x02, 0x7b, 0x2b, 0x8d, 0x42, 0xa4, 0x47, 0x1a, 0xc0, 0xff, 0x07,
- 0xf3, 0x76, 0x9d, 0x3c, 0xdb, 0xe3, 0x85, 0xd0, 0x90, 0x94, 0x48, 0x1f,
- 0xb3, 0x4f, 0xa8, 0xc1, 0xbf, 0x3b, 0x5b, 0x2d, 0xfe, 0xcd, 0xe0, 0xe8,
- 0x8f, 0x67, 0xf3, 0x0b, 0xea, 0x1e, 0x78, 0x0d, 0xd4, 0x09, 0xe0, 0xab,
- 0x10, 0x0f, 0x37, 0x8b, 0x15, 0xd8, 0x0f, 0xc0, 0x96, 0xa1, 0x39, 0xf8,
- 0x1a, 0xd7, 0xa0, 0x0e, 0x75, 0x52, 0xd3, 0xb4, 0xea, 0x79, 0x25, 0xf8,
- 0x23, 0x5c, 0x6c, 0xc8, 0x40, 0x46, 0xec, 0x6a, 0x9e, 0xa5, 0xec, 0x28,
- 0xc8, 0x54, 0x37, 0xc1, 0x40, 0x09, 0xd6, 0x2b, 0x52, 0xc8, 0x84, 0x46,
- 0x23, 0xe7, 0x9f, 0x8f, 0xf1, 0xcd, 0x11, 0x6c, 0x93, 0xbe, 0x6e, 0xdb,
- 0xc2, 0xe3, 0x9a, 0xb1, 0xf3, 0x23, 0x6c, 0x38, 0x76, 0x5a, 0x64, 0xaf,
- 0x2d, 0x61, 0xaf, 0xa2, 0xcd, 0xcc, 0x66, 0xb2, 0x8f, 0x45, 0x8b, 0xe1,
- 0xa3, 0x67, 0x3b, 0x14, 0xe5, 0x41, 0xba, 0x55, 0xd7, 0xc9, 0xd6, 0xee,
- 0x33, 0x99, 0xb6, 0xf6, 0x2c, 0x21, 0xb7, 0xc7, 0x0a, 0xff, 0x6a, 0x7d,
- 0x9d, 0x63, 0xc1, 0x18, 0x6b, 0xf4, 0x2c, 0x2a, 0x4a, 0x47, 0xc0, 0x67,
- 0xff, 0xbc, 0x12, 0x2e, 0x10, 0x56, 0xbf, 0x3e, 0x47, 0x80, 0x31, 0x37,
- 0x8f, 0x1a, 0x28, 0x9e, 0x38, 0x3a, 0x56, 0x5f, 0x29, 0x2d, 0xfe, 0x75,
- 0xc1, 0x12, 0x6e, 0x57, 0xf4, 0xba, 0x3d, 0xe4, 0x22, 0x81, 0x6c, 0x26,
- 0xad, 0x15, 0xaf, 0x0a, 0x05, 0x2a, 0xc4, 0xee, 0x80, 0x2e, 0x81, 0x30,
- 0xce, 0x59, 0x53, 0xda, 0x82, 0x87, 0x80, 0x42, 0x68, 0x61, 0xb4, 0x1d,
- 0xce, 0xc0, 0x02, 0xa3, 0x9b, 0xd5, 0xae, 0x83, 0x91, 0xb3, 0x70, 0x39,
- 0xd6, 0xcf, 0x75, 0xa6, 0xf3, 0x0b, 0x0f, 0xc1, 0x4d, 0x19, 0xc3, 0x74,
- 0xf2, 0xa3, 0x10, 0xad, 0x53, 0x17, 0x6d, 0xcf, 0xa9, 0x05, 0x3d, 0xb3,
- 0x44, 0xf0, 0xdc, 0x3d, 0x8d, 0x0e, 0xb9, 0x06, 0xe6, 0x8c, 0x93, 0xcc,
- 0xee, 0x29, 0x0f, 0xd8, 0x23, 0x38, 0xf0, 0xc2, 0x3a, 0x32, 0x82, 0x84,
- 0x62, 0x3c, 0x63, 0xf0, 0xf9, 0x60, 0xfb, 0xe5, 0x60, 0x63, 0x4f, 0x9b,
- 0x3e, 0xf6, 0xa3, 0xaf, 0xf3, 0x39, 0xee, 0x08, 0x2e, 0xfa, 0xeb, 0xe1,
- 0x5f, 0xb2, 0xda, 0x7f, 0x61, 0x67, 0x1b, 0x5f, 0x78, 0x37, 0xe4, 0x87,
- 0x6e, 0x8b, 0xc9, 0x25, 0xbc, 0x18, 0x78, 0xec, 0x39, 0x3e, 0x06, 0xfc,
- 0x36, 0xae, 0x3d, 0x08, 0x40, 0x61, 0xb0, 0xee, 0x49, 0xed, 0xec, 0x04,
- 0x26, 0xd5, 0x5f, 0xf6, 0xa3, 0x6d, 0x4b, 0x96, 0x14, 0x79, 0x64, 0xb4,
- 0x8b, 0x64, 0xf4, 0x89, 0x38, 0x8a, 0xc0, 0x89, 0x4c, 0x57, 0xd5, 0xdf,
- 0x1b, 0x2c, 0xa2, 0x21, 0x9a, 0xe0, 0x7f, 0x4b, 0x99, 0xc2, 0xad, 0xd7,
- 0xcd, 0x49, 0x1d, 0xa5, 0x9b, 0x9b, 0x2f, 0x2e, 0x76, 0x37, 0x5f, 0xbc,
- 0x7c, 0x7e, 0xb9, 0xb3, 0xb3, 0xbb, 0x35, 0x1e, 0xad, 0x2c, 0x79, 0xd1,
- 0xa1, 0x31, 0x0c, 0xa3, 0xf2, 0x80, 0xcd, 0x90, 0x47, 0x0b, 0x99, 0x4e,
- 0xb0, 0x8a, 0xc3, 0xc9, 0x0f, 0xe7, 0xed, 0x3e, 0xec, 0x33, 0xf4, 0x60,
- 0x50, 0x57, 0xd0, 0xad, 0xed, 0xcd, 0xf5, 0x67, 0x83, 0x9d, 0xc1, 0x96,
- 0xa9, 0x9b, 0x65, 0xd4, 0xbf, 0x9a, 0x2a, 0x75, 0x02, 0xb9, 0x66, 0x54,
- 0x34, 0x95, 0xe5, 0x02, 0xba, 0x6c, 0x7e, 0x42, 0xb1, 0x0f, 0x5b, 0x34,
- 0x86, 0x30, 0xcc, 0x9b, 0x2e, 0x4c, 0x0f, 0x65, 0x35, 0x79, 0xad, 0xa4,
- 0xf2, 0x18, 0x27, 0x61, 0xe2, 0xe1, 0xb8, 0xcd, 0x17, 0xd9, 0xdf, 0xe7,
- 0x59, 0x0d, 0x3a, 0x3e, 0xae, 0x13, 0x43, 0xfc, 0xda, 0x11, 0x9c, 0xba,
- 0x7a, 0xd0, 0x1a, 0xb4, 0x8b, 0x9e, 0x2f, 0x9c, 0x15, 0x64, 0xc1, 0xc1,
- 0xad, 0x24, 0x20, 0x9d, 0x8c, 0xc4, 0x36, 0x3e, 0x51, 0x65, 0x55, 0x0d,
- 0xc2, 0x16, 0x44, 0xd3, 0x9b, 0xe2, 0x16, 0xb9, 0xa9, 0x4f, 0x75, 0x70,
- 0x01, 0x74, 0x61, 0x6e, 0x4d, 0xc0, 0xc9, 0x75, 0x52, 0xb7, 0x64, 0x1b,
- 0x69, 0xcb, 0x0f, 0x18, 0x73, 0x5a, 0xf1, 0xdc, 0xa2, 0xc6, 0x82, 0x17,
- 0x2b, 0xb8, 0xd2, 0x84, 0x1a, 0x31, 0x66, 0x38, 0xd5, 0xcb, 0xe2, 0x37,
- 0x74, 0x41, 0xe4, 0x3c, 0xf2, 0x66, 0x67, 0x46, 0x70, 0xf1, 0x79, 0xe2,
- 0x71, 0xd4, 0x43, 0x11, 0xb5, 0x6c, 0xf4, 0x4d, 0x60, 0xae, 0xfb, 0x16,
- 0xe3, 0x9a, 0xb5, 0xae, 0x2e, 0x08, 0x1f, 0x7d, 0xe1, 0xc9, 0x4c, 0xb8,
- 0xfd, 0xeb, 0x33, 0xe1, 0xd6, 0x7f, 0x7f, 0x26, 0x34, 0x5c, 0xa8, 0xf8,
- 0xf1, 0x5d, 0x7c, 0xc8, 0x49, 0x1a, 0xff, 0x3e, 0x4c, 0xb8, 0xf5, 0xeb,
- 0x31, 0xe1, 0xe6, 0xb2, 0x4c, 0xb8, 0xfd, 0x18, 0x26, 0x84, 0xfd, 0x9e,
- 0xa0, 0x9e, 0xd1, 0x60, 0xc2, 0x9d, 0xa5, 0x98, 0x90, 0xb9, 0x90, 0xd8,
- 0xb0, 0x93, 0x0f, 0x71, 0xce, 0x2e, 0x62, 0x19, 0x08, 0xf2, 0x70, 0x32,
- 0xc3, 0xe3, 0x45, 0x4e, 0xd2, 0x18, 0xd4, 0x03, 0x9f, 0x62, 0x56, 0xff,
- 0x57, 0xee, 0xf5, 0xf6, 0x6f, 0x22, 0x70, 0x36, 0x1f, 0xda, 0xeb, 0x32,
- 0xe5, 0xb4, 0xa2, 0xef, 0x35, 0xbb, 0x0b, 0xbe, 0xf5, 0x23, 0xb9, 0x90,
- 0xf7, 0x50, 0xb3, 0xf8, 0xb1, 0x6d, 0xb2, 0x85, 0x0c, 0x89, 0xe1, 0xe9,
- 0xe1, 0x5f, 0x86, 0x92, 0x9e, 0x24, 0x9a, 0x9e, 0x6a, 0x82, 0xec, 0xd2,
- 0x04, 0x03, 0x81, 0x10, 0x1f, 0x3d, 0xeb, 0x82, 0x6a, 0x5e, 0x1a, 0xe9,
- 0x88, 0x58, 0xf2, 0x26, 0xc7, 0x90, 0x1a, 0xc0, 0x70, 0x6a, 0x0e, 0x47,
- 0x76, 0x74, 0xd4, 0xce, 0x3e, 0x1c, 0x3c, 0x11, 0x93, 0x28, 0x25, 0xf1,
- 0xa7, 0xdc, 0x79, 0x71, 0xb5, 0xbe, 0x2e, 0x09, 0x3f, 0x87, 0x1e, 0x5d,
- 0xd3, 0xc4, 0xc3, 0x45, 0xb3, 0x93, 0x79, 0xbd, 0xa1, 0xce, 0x87, 0xb3,
- 0xd2, 0xa4, 0xf9, 0x06, 0xdc, 0x59, 0xe6, 0xb7, 0x1a, 0x03, 0x0d, 0x41,
- 0x9b, 0x4a, 0x1f, 0x0a, 0x87, 0xde, 0xf8, 0x9e, 0x57, 0x08, 0x9a, 0xdd,
- 0x35, 0x80, 0xce, 0xd1, 0x79, 0x0c, 0x7c, 0x9b, 0x13, 0xf6, 0x8b, 0x59,
- 0xa2, 0x0e, 0x52, 0x09, 0x56, 0x52, 0x55, 0x8c, 0x3e, 0x55, 0x3b, 0x30,
- 0x64, 0x3b, 0x78, 0xc6, 0xbf, 0x48, 0xf0, 0x37, 0xfc, 0xf7, 0x5d, 0xfc,
- 0x2e, 0x06, 0x68, 0xf9, 0x5f, 0xd7, 0xf8, 0x4f, 0x49, 0xc2, 0x97, 0xce,
- 0x0a, 0xee, 0x2e, 0x8f, 0xc2, 0x84, 0x76, 0x21, 0x99, 0x0c, 0xa8, 0xe5,
- 0xbb, 0xc2, 0xf6, 0x04, 0x70, 0x57, 0xed, 0xe2, 0x3d, 0x7b, 0x85, 0x33,
- 0x46, 0xca, 0xd3, 0xc8, 0x3b, 0x5d, 0x19, 0x14, 0x4e, 0x7b, 0x2b, 0x85,
- 0x8b, 0xb4, 0x9f, 0x90, 0x70, 0xb6, 0xbb, 0x01, 0xd4, 0x28, 0x24, 0xd0,
- 0xde, 0x0d, 0x6c, 0xf2, 0xf9, 0xd4, 0x38, 0xc3, 0x36, 0x37, 0x5e, 0xf8,
- 0xce, 0xc7, 0x0f, 0x0a, 0xe7, 0x62, 0xbb, 0x30, 0x51, 0xfd, 0x00, 0xc1,
- 0x53, 0x5c, 0x58, 0x78, 0x9b, 0xd0, 0x67, 0x31, 0xd2, 0x1f, 0xf0, 0x75,
- 0x8c, 0x53, 0xb6, 0x51, 0x2f, 0xd8, 0xcb, 0xe1, 0xd7, 0xfb, 0xd7, 0x05,
- 0x7d, 0x0d, 0x87, 0x94, 0x56, 0x88, 0x9a, 0xa7, 0xee, 0xe5, 0x5d, 0xa0,
- 0x1b, 0x51, 0x73, 0x0a, 0xbf, 0xb4, 0xcd, 0x57, 0xfe, 0xb8, 0xb3, 0x81,
- 0xbb, 0xaa, 0xa3, 0xc0, 0x21, 0x2a, 0x26, 0x85, 0x20, 0x95, 0xfe, 0x71,
- 0x3b, 0xf9, 0xdd, 0x9d, 0x57, 0x2a, 0x6e, 0x0c, 0x0f, 0xf2, 0x61, 0x52,
- 0x94, 0x8c, 0xf8, 0x2e, 0x92, 0x88, 0x16, 0xfe, 0x61, 0x7e, 0xfc, 0xc4,
- 0xdc, 0x66, 0xed, 0xab, 0x4d, 0xdf, 0x6a, 0x28, 0xff, 0xbb, 0x4d, 0xc7,
- 0x8a, 0x57, 0x4b, 0x19, 0x70, 0xe8, 0x8a, 0xd2, 0xa2, 0xc8, 0xbb, 0x8a,
- 0x13, 0x6b, 0x4a, 0x8b, 0x12, 0xf6, 0x69, 0xd0, 0x7c, 0xcd, 0x0f, 0x61,
- 0x28, 0xf8, 0xa0, 0x07, 0xc6, 0xa1, 0xf9, 0x21, 0x9c, 0x3e, 0xcd, 0x5e,
- 0xab, 0xbe, 0xd7, 0xa7, 0x22, 0x99, 0xf4, 0xb9, 0x60, 0x29, 0xec, 0xeb,
- 0x6d, 0x7c, 0x64, 0x5c, 0x26, 0xb7, 0x8e, 0x53, 0x85, 0xf1, 0xd6, 0x2f,
- 0x29, 0xf5, 0xc3, 0x56, 0x3a, 0xa0, 0x17, 0x02, 0xd3, 0x81, 0xab, 0x40,
- 0x4a, 0x76, 0x35, 0x2a, 0x11, 0xe5, 0x4e, 0x1a, 0xc0, 0xd3, 0x58, 0x33,
- 0x6c, 0x38, 0x04, 0x2a, 0xd7, 0x55, 0xaa, 0x88, 0xa9, 0xb6, 0xb5, 0xad,
- 0xe0, 0xb5, 0x12, 0x48, 0xeb, 0x20, 0x00, 0x66, 0x60, 0x7d, 0xdd, 0x5a,
- 0x7f, 0x96, 0x08, 0xa2, 0x2b, 0xbe, 0xda, 0x97, 0x1a, 0x1e, 0xa9, 0x56,
- 0xbe, 0x20, 0x41, 0x93, 0x60, 0x41, 0x40, 0x75, 0x9d, 0xcd, 0xda, 0x8a,
- 0x47, 0xfc, 0x79, 0xf1, 0x79, 0xbc, 0x66, 0xfa, 0x87, 0x14, 0x37, 0x69,
- 0x45, 0x56, 0x30, 0x43, 0xd5, 0x80, 0x44, 0xb8, 0x26, 0x87, 0x9f, 0x5c,
- 0xca, 0x04, 0x33, 0x43, 0x85, 0xc9, 0xd2, 0xb7, 0xa1, 0x03, 0xe1, 0x97,
- 0x13, 0xce, 0x58, 0x16, 0xa3, 0x6b, 0x10, 0xa8, 0x75, 0xc9, 0xd5, 0x7b,
- 0xe8, 0x3b, 0x8a, 0x30, 0x85, 0x5a, 0x5a, 0x58, 0x72, 0x5a, 0x45, 0x31,
- 0xfb, 0x77, 0x77, 0xb9, 0xff, 0x61, 0xe9, 0xdc, 0xa9, 0x98, 0x72, 0xf7,
- 0xc7, 0x92, 0xe5, 0xd4, 0xd4, 0x0b, 0x40, 0x82, 0xc7, 0x2a, 0x97, 0xf7,
- 0x55, 0xa0, 0x7f, 0xf1, 0x20, 0x26, 0x8a, 0x11, 0xfd, 0x97, 0xe2, 0xb7,
- 0x43, 0xc1, 0x47, 0x48, 0x3e, 0xdc, 0xda, 0x73, 0x74, 0x9d, 0x4e, 0xb9,
- 0xdd, 0x9d, 0x8f, 0xa0, 0x83, 0x09, 0x4b, 0x39, 0x73, 0x09, 0x63, 0x9a,
- 0xe7, 0xc6, 0xbf, 0x61, 0xaf, 0x3a, 0xed, 0x72, 0xc0, 0x68, 0xf9, 0x87,
- 0x30, 0xfc, 0xd1, 0xc7, 0x0f, 0xef, 0x86, 0x1f, 0xce, 0x62, 0xaf, 0x3f,
- 0xcc, 0xfb, 0xf3, 0xa3, 0x57, 0x58, 0xef, 0x71, 0x7e, 0x7a, 0x78, 0x7a,
- 0x12, 0xad, 0x6e, 0xae, 0x2d, 0xdc, 0x41, 0xb3, 0x67, 0xa6, 0x29, 0x96,
- 0x8d, 0x4f, 0xb1, 0x38, 0x31, 0x53, 0x58, 0x45, 0x2a, 0xfb, 0xa3, 0x7d,
- 0x2b, 0xac, 0xde, 0xf2, 0x3a, 0x8b, 0xaf, 0xec, 0x0a, 0xae, 0xd5, 0x8a,
- 0x7c, 0x92, 0x32, 0x8a, 0x9b, 0xf8, 0x4e, 0x85, 0x3b, 0x01, 0xe8, 0xfa,
- 0x3e, 0x85, 0x83, 0x29, 0x41, 0xd6, 0x85, 0x63, 0x5a, 0x5e, 0xee, 0xba,
- 0xdb, 0xc9, 0xe5, 0xb5, 0x97, 0x56, 0xc0, 0x3e, 0xa4, 0x55, 0xe2, 0xdb,
- 0xb6, 0xa2, 0x01, 0x46, 0x22, 0xbd, 0xb9, 0xe9, 0xaa, 0xde, 0x6d, 0xb9,
- 0x53, 0xec, 0x73, 0x96, 0x7d, 0xaa, 0x30, 0xff, 0x18, 0x06, 0x62, 0xe4,
- 0x5f, 0xea, 0x85, 0x6a, 0x5e, 0xa1, 0xfe, 0xe1, 0x92, 0x4b, 0x45, 0xd8,
- 0x92, 0xac, 0xb1, 0x0f, 0xa2, 0xb3, 0xb2, 0xf0, 0xb3, 0x11, 0xe9, 0x8d,
- 0x71, 0x9a, 0x67, 0x7c, 0xcd, 0x9a, 0xb9, 0x0b, 0xc2, 0xa1, 0x24, 0x6f,
- 0xc3, 0x03, 0xf8, 0x5b, 0x67, 0x9f, 0x08, 0x54, 0x38, 0xf5, 0xfb, 0x54,
- 0xd1, 0xdb, 0x48, 0x78, 0x04, 0x6f, 0xb2, 0x73, 0xc2, 0xf1, 0xf0, 0x2a,
- 0xa3, 0x16, 0x45, 0xdd, 0xd7, 0x60, 0x5f, 0xf0, 0x73, 0x49, 0x34, 0x91,
- 0x8e, 0x89, 0x44, 0x64, 0xb5, 0xd2, 0x59, 0x4b, 0x47, 0x0e, 0x5a, 0x93,
- 0x88, 0x98, 0x37, 0xd1, 0xc7, 0x9d, 0xeb, 0xf3, 0xf6, 0xc9, 0x3d, 0xb9,
- 0x60, 0x07, 0xbf, 0x6a, 0xf6, 0x1e, 0x11, 0xf8, 0x06, 0x9c, 0x0a, 0xcf,
- 0x8a, 0x21, 0xc3, 0x68, 0x36, 0x7d, 0xc2, 0x99, 0xc2, 0xc9, 0xbd, 0x36,
- 0x73, 0xf3, 0xaa, 0x9b, 0x39, 0x6d, 0x67, 0x55, 0x71, 0x4f, 0x9f, 0xed,
- 0x0e, 0xb6, 0xd6, 0x1a, 0x39, 0x47, 0x98, 0xd9, 0x01, 0xa4, 0xfa, 0x13,
- 0xfe, 0xa9, 0x40, 0x00, 0xf8, 0x77, 0x5e, 0x86, 0x67, 0xe7, 0xb3, 0x60,
- 0x75, 0x80, 0xa0, 0xb5, 0x33, 0x24, 0x6d, 0xd5, 0x55, 0x51, 0x8c, 0x05,
- 0x56, 0x95, 0x61, 0x54, 0x9f, 0xc6, 0xf3, 0x4c, 0xbc, 0xcf, 0x5b, 0x84,
- 0x5b, 0xc2, 0xa2, 0xc2, 0x51, 0x3c, 0xc6, 0x7e, 0x24, 0x4b, 0x93, 0x42,
- 0xcd, 0x4c, 0xbd, 0x80, 0xab, 0x2f, 0xdd, 0xfb, 0xb2, 0x7d, 0x99, 0x9e,
- 0x35, 0x78, 0x2e, 0x45, 0xc8, 0x23, 0x0a, 0x52, 0x4c, 0xd2, 0x4b, 0xd2,
- 0x97, 0x09, 0x2e, 0xad, 0x4f, 0xbf, 0xa4, 0x5c, 0x36, 0x53, 0x43, 0x15,
- 0x06, 0x4a, 0x4f, 0xa8, 0xc9, 0x4a, 0xc2, 0xde, 0x36, 0x23, 0x89, 0x34,
- 0xcb, 0x7a, 0x05, 0x76, 0x6b, 0xa5, 0x6f, 0x90, 0x00, 0x27, 0xf7, 0x94,
- 0xea, 0x92, 0xdd, 0xf1, 0x61, 0xfa, 0x39, 0x2d, 0x0b, 0x3f, 0xb5, 0x92,
- 0xb4, 0x16, 0x85, 0xb7, 0x47, 0xcb, 0xfc, 0x06, 0x04, 0x14, 0x65, 0x8a,
- 0x9a, 0x1f, 0xe2, 0x57, 0x3d, 0x1e, 0xff, 0x13, 0xac, 0x0d, 0x31, 0xde,
- 0x44, 0x5c, 0x9a, 0xb9, 0x64, 0xd4, 0x37, 0x23, 0xd3, 0x64, 0x38, 0xe7,
- 0xcc, 0x4d, 0x10, 0xd0, 0xed, 0x9e, 0x91, 0xe1, 0x3c, 0x8b, 0x9d, 0x74,
- 0xe2, 0x31, 0xda, 0x77, 0xb6, 0xf6, 0xd6, 0x64, 0x17, 0x5c, 0x22, 0x02,
- 0xbc, 0x81, 0xe0, 0x17, 0x25, 0xd7, 0x97, 0xdf, 0x71, 0x14, 0xbd, 0x4a,
- 0xb1, 0x8d, 0x1f, 0x57, 0xc6, 0xd8, 0x7a, 0x27, 0xf4, 0x20, 0x14, 0x14,
- 0xac, 0xc8, 0x6a, 0x8d, 0xb4, 0xa4, 0xd2, 0x46, 0xfb, 0xd2, 0x4e, 0xd1,
- 0x9f, 0x52, 0x73, 0xce, 0x21, 0x49, 0xf1, 0xb9, 0x21, 0x83, 0xd4, 0xd9,
- 0xb8, 0xb4, 0x58, 0xa5, 0xb6, 0x38, 0x9a, 0xce, 0x47, 0xdf, 0xd3, 0x11,
- 0x17, 0x92, 0x61, 0x8d, 0x62, 0x50, 0x64, 0xe7, 0x56, 0xf3, 0x8b, 0x9f,
- 0xa4, 0xcb, 0x1d, 0x7a, 0x6a, 0x4a, 0x21, 0x83, 0xf8, 0x19, 0x60, 0x57,
- 0xe1, 0x01, 0x0e, 0xdf, 0xd6, 0x70, 0x66, 0x43, 0xc3, 0x51, 0x9a, 0x61,
- 0xe6, 0x24, 0xc1, 0x5b, 0x16, 0xa3, 0x29, 0x05, 0xc1, 0xac, 0x52, 0x3d,
- 0x9b, 0x1d, 0x22, 0x35, 0xbe, 0xc4, 0xa3, 0xc8, 0x45, 0x57, 0xad, 0x8b,
- 0x96, 0x69, 0xc9, 0x45, 0x84, 0xa6, 0xbc, 0x16, 0x1f, 0xef, 0x1c, 0x4b,
- 0x25, 0x63, 0xd5, 0xff, 0x13, 0xfe, 0xe1, 0xaf, 0xa1, 0x59, 0x2d, 0x0c,
- 0x64, 0x56, 0xe9, 0x84, 0x8f, 0x93, 0xd8, 0xa3, 0xd7, 0xbb, 0x3e, 0xe0,
- 0x48, 0x8f, 0xc5, 0x63, 0x93, 0xcc, 0x58, 0xe2, 0x03, 0x1f, 0x72, 0xed,
- 0x72, 0xa0, 0x4c, 0x3e, 0x33, 0x9d, 0x79, 0x15, 0x84, 0xc1, 0x20, 0x88,
- 0x8a, 0x9d, 0x88, 0x9a, 0x7a, 0x36, 0x63, 0x1f, 0x88, 0xd7, 0x65, 0xfc,
- 0x12, 0x6b, 0x92, 0x11, 0x22, 0x16, 0x11, 0x5d, 0x25, 0xc9, 0x5a, 0x3b,
- 0x88, 0x6a, 0x79, 0xec, 0xac, 0xa8, 0xb9, 0x9d, 0x29, 0x96, 0x2f, 0xa3,
- 0xa6, 0x53, 0xa2, 0x9b, 0x76, 0xd6, 0x75, 0x9b, 0xf6, 0x8d, 0x06, 0x8f,
- 0xc3, 0x72, 0xbe, 0x1b, 0xea, 0x35, 0x52, 0x1f, 0xa5, 0x59, 0xde, 0xa8,
- 0x9a, 0xdb, 0x56, 0x80, 0x21, 0xc5, 0x9b, 0x4b, 0xab, 0xc8, 0xdb, 0x67,
- 0x7a, 0xa1, 0xde, 0x14, 0xd9, 0x78, 0x51, 0x57, 0x2a, 0xaf, 0x99, 0x79,
- 0xb0, 0x58, 0xc1, 0x14, 0x4c, 0x93, 0xc7, 0xc8, 0x02, 0x17, 0xf9, 0x18,
- 0x26, 0xa6, 0xa5, 0x26, 0x65, 0xdd, 0xe4, 0x18, 0x23, 0xcd, 0x93, 0x5a,
- 0x0f, 0x98, 0x23, 0x9d, 0x71, 0x96, 0x54, 0xe9, 0x96, 0xa3, 0x7d, 0x36,
- 0x22, 0x8c, 0x9c, 0x80, 0xd5, 0xd4, 0xd1, 0xda, 0xf4, 0x31, 0x37, 0x93,
- 0xcb, 0x55, 0xfd, 0x0a, 0xf8, 0xfb, 0x29, 0x17, 0x93, 0x5c, 0x6f, 0xae,
- 0x6a, 0xe6, 0x21, 0xee, 0x68, 0x91, 0x9c, 0x54, 0x9d, 0x2d, 0xd6, 0xc0,
- 0x66, 0x88, 0x60, 0x89, 0x8d, 0xf1, 0xb2, 0x9a, 0x98, 0xa5, 0x55, 0xa8,
- 0xab, 0x55, 0xa6, 0xd2, 0x87, 0x7e, 0xea, 0x35, 0xd6, 0xcd, 0x35, 0x8c,
- 0x6d, 0xaa, 0x02, 0xb8, 0x1c, 0x87, 0x94, 0x1f, 0xf1, 0xa4, 0x71, 0x87,
- 0x6a, 0x86, 0xf9, 0x94, 0xa6, 0xe0, 0x54, 0x70, 0x8d, 0x91, 0xed, 0xb0,
- 0x97, 0x78, 0xdd, 0x64, 0x14, 0x03, 0xaf, 0xe6, 0xe3, 0x18, 0x64, 0xd2,
- 0xec, 0x09, 0x44, 0xb7, 0x44, 0x30, 0xff, 0xa6, 0x42, 0x31, 0x5b, 0x81,
- 0x38, 0x46, 0x0f, 0x04, 0x2b, 0xfb, 0x4f, 0xf4, 0x39, 0x98, 0xbf, 0x70,
- 0xe9, 0x55, 0xa3, 0x0e, 0x78, 0xdc, 0xaa, 0xfd, 0x6c, 0x3c, 0xf9, 0x80,
- 0x1a, 0x81, 0x64, 0xea, 0xec, 0x84, 0xed, 0x6c, 0x88, 0x6e, 0x40, 0x57,
- 0x75, 0x1e, 0x6f, 0x87, 0xec, 0xc4, 0x07, 0xc6, 0xb3, 0xa2, 0x11, 0xc9,
- 0x28, 0xcd, 0xa5, 0xb8, 0xdd, 0xf9, 0x12, 0x9b, 0xc8, 0xde, 0xbe, 0x4c,
- 0x09, 0xc9, 0x45, 0xfa, 0x1d, 0xf3, 0x93, 0x54, 0x42, 0xea, 0x0a, 0xf3,
- 0x30, 0xf3, 0x04, 0xfc, 0x7f, 0x74, 0x0d, 0xd0, 0x87, 0x70, 0x62, 0x59,
- 0x5a, 0x3d, 0x6d, 0x73, 0x79, 0x21, 0xff, 0x82, 0xad, 0x0d, 0x21, 0x87,
- 0x77, 0x6d, 0xee, 0x28, 0xc1, 0x84, 0x8c, 0x70, 0x05, 0xd1, 0x50, 0x44,
- 0x51, 0xac, 0x4f, 0xe1, 0x9d, 0xa7, 0xa5, 0x96, 0x8e, 0xf7, 0x99, 0xd2,
- 0x66, 0x9e, 0x92, 0x83, 0xe7, 0xce, 0xe0, 0xf0, 0x80, 0x61, 0x93, 0x6b,
- 0xc4, 0x60, 0xbc, 0x33, 0x44, 0x78, 0x02, 0x49, 0xcc, 0xb8, 0x98, 0xf0,
- 0xd3, 0x37, 0xb3, 0xa7, 0x74, 0x6e, 0xfe, 0xa1, 0x38, 0xdf, 0x91, 0x78,
- 0x16, 0x68, 0xa0, 0x65, 0xed, 0x77, 0x7a, 0xe3, 0x1a, 0xc3, 0x4b, 0xfd,
- 0x61, 0x37, 0xdd, 0xe8, 0xa1, 0xdf, 0x88, 0x6e, 0x34, 0xf6, 0x3a, 0x15,
- 0x61, 0xac, 0xdb, 0x5a, 0xbd, 0xa7, 0x12, 0xaf, 0x55, 0xb4, 0x6c, 0x89,
- 0xe6, 0x50, 0x49, 0xeb, 0x87, 0xf9, 0xdb, 0xd6, 0xc2, 0xf6, 0xb2, 0x45,
- 0x3a, 0x68, 0x06, 0x23, 0xc6, 0xf5, 0xfd, 0x2c, 0x8d, 0xf6, 0xf1, 0xbf,
- 0x0b, 0xe8, 0x66, 0x1e, 0xfc, 0x6d, 0x48, 0x67, 0x86, 0xc7, 0x84, 0x2e,
- 0xf7, 0xa7, 0x9c, 0x1a, 0xf6, 0xeb, 0xf0, 0x5f, 0x5a, 0xd6, 0x83, 0x47,
- 0xf0, 0x11, 0x1d, 0x3f, 0xfc, 0xef, 0xf7, 0x22, 0x09, 0x7e, 0xec, 0xa4,
- 0xcb, 0x51, 0x5f, 0x68, 0xf3, 0xdb, 0x91, 0xe5, 0x57, 0x26, 0x00, 0x51,
- 0xf9, 0x31, 0x54, 0xc8, 0x66, 0xd7, 0x68, 0x8a, 0xed, 0x87, 0x00, 0x79,
- 0x1c, 0xbe, 0x90, 0xc7, 0x7e, 0x9b, 0xe5, 0xcb, 0xe0, 0x47, 0x87, 0xaf,
- 0xde, 0x1c, 0xc5, 0xf0, 0xdf, 0xe1, 0x41, 0x7c, 0x70, 0x34, 0xdc, 0xda,
- 0x7d, 0x16, 0x1f, 0x1e, 0xbe, 0x7d, 0xf1, 0x4b, 0x89, 0x22, 0xc3, 0xd3,
- 0x16, 0xce, 0xcb, 0x1b, 0x69, 0xe4, 0xd9, 0x08, 0x2e, 0x3e, 0x4c, 0xa6,
- 0x72, 0x62, 0xfb, 0x3c, 0x2c, 0x20, 0x93, 0x3c, 0xf6, 0xdb, 0x90, 0x49,
- 0x06, 0x2f, 0xd3, 0x9f, 0xa8, 0xdf, 0xd5, 0xaf, 0x20, 0xb0, 0x75, 0xc8,
- 0xe5, 0x09, 0xc2, 0xd7, 0xda, 0x83, 0x6e, 0x5f, 0x52, 0x18, 0x5e, 0x09,
- 0xc8, 0x41, 0x40, 0x37, 0x79, 0xb2, 0x72, 0x22, 0xc0, 0x09, 0xbe, 0x76,
- 0x22, 0x1f, 0xc3, 0x77, 0xdb, 0x3e, 0x0e, 0x55, 0x4f, 0x48, 0x3b, 0x79,
- 0xd2, 0x16, 0xc8, 0x57, 0x7f, 0x27, 0x55, 0x82, 0xf4, 0x18, 0x7f, 0x2b,
- 0xb8, 0x26, 0x2a, 0xda, 0xe7, 0x3f, 0xd7, 0xbf, 0x0c, 0xb1, 0xa8, 0xa2,
- 0xca, 0xa0, 0x2e, 0x2d, 0x45, 0x54, 0xb8, 0x45, 0x0a, 0x60, 0x2d, 0x66,
- 0xbc, 0xc6, 0x78, 0x6f, 0xdd, 0x3e, 0xc6, 0x44, 0x56, 0xcf, 0x04, 0x54,
- 0x9c, 0x23, 0x86, 0xe0, 0x43, 0x97, 0x95, 0xe9, 0xa7, 0x64, 0x92, 0x72,
- 0xd1, 0x09, 0x92, 0x3a, 0x5f, 0xac, 0x4c, 0x4f, 0x83, 0x80, 0xc9, 0x84,
- 0xd9, 0x19, 0x37, 0x09, 0x41, 0x04, 0x3a, 0xfd, 0xda, 0xde, 0x20, 0x45,
- 0x64, 0xbe, 0x78, 0xa8, 0xa4, 0xaa, 0x53, 0xee, 0x44, 0x61, 0x1e, 0x1f,
- 0xbc, 0x8a, 0xa1, 0x4b, 0x18, 0x3a, 0x9c, 0x11, 0x09, 0x61, 0x85, 0x87,
- 0xa7, 0xef, 0xde, 0x1d, 0x1d, 0xb6, 0xb3, 0x9a, 0x0c, 0xbc, 0x8a, 0xf5,
- 0x5f, 0x04, 0x6b, 0xce, 0xb8, 0x6b, 0xb5, 0xe4, 0x05, 0xf0, 0xf7, 0xe1,
- 0x1f, 0xb7, 0x02, 0x33, 0xa4, 0xbf, 0x14, 0x18, 0x23, 0x6e, 0x10, 0x26,
- 0xfc, 0xe6, 0xf5, 0x0b, 0x08, 0x70, 0x9f, 0x0b, 0xd2, 0x4b, 0xd1, 0x70,
- 0x44, 0x2f, 0x57, 0x48, 0x44, 0xf2, 0xcb, 0xc9, 0x2c, 0xa8, 0x5e, 0x7c,
- 0x3c, 0x5e, 0x97, 0x32, 0x6b, 0xfd, 0x76, 0xd7, 0xc9, 0xe1, 0x0e, 0x42,
- 0x88, 0x80, 0x13, 0x17, 0x97, 0xdc, 0x6e, 0x79, 0x9a, 0x94, 0x9f, 0x30,
- 0x31, 0xca, 0xa9, 0x1b, 0x27, 0x4c, 0x39, 0xea, 0xf4, 0x33, 0x1e, 0x87,
- 0xd0, 0x7f, 0x29, 0x86, 0xa9, 0xd8, 0x1c, 0x14, 0x95, 0xe0, 0xc9, 0x90,
- 0x38, 0xcb, 0xeb, 0x3d, 0x4c, 0x96, 0xd7, 0xd7, 0xf3, 0xf4, 0x16, 0x3f,
- 0xc3, 0x90, 0xf0, 0x08, 0xe1, 0xeb, 0x77, 0x14, 0xe1, 0x36, 0x99, 0x1c,
- 0x3f, 0xbe, 0x77, 0xdc, 0xcf, 0x53, 0xee, 0x25, 0x0e, 0x4c, 0x47, 0x1d,
- 0x16, 0x05, 0xe0, 0xc6, 0xa3, 0xd5, 0x1b, 0x66, 0xa6, 0x76, 0xea, 0x84,
- 0x57, 0xc0, 0x27, 0xe8, 0x3f, 0xc2, 0xe3, 0x63, 0x2e, 0x3a, 0xe8, 0x42,
- 0xc8, 0xb7, 0x2d, 0x72, 0x28, 0x1e, 0x59, 0x35, 0x86, 0xd0, 0xdd, 0x4d,
- 0x3a, 0x72, 0x3c, 0x86, 0xd8, 0x0b, 0x94, 0x93, 0xb4, 0x73, 0x52, 0xc2,
- 0x76, 0xdb, 0x2d, 0xe5, 0xa8, 0x83, 0x08, 0xee, 0x2b, 0x96, 0x12, 0x97,
- 0x57, 0x54, 0xbb, 0x8f, 0x0f, 0xd3, 0x61, 0x8d, 0x03, 0x01, 0x1e, 0x86,
- 0xcf, 0x52, 0xdf, 0x37, 0x65, 0xab, 0x00, 0x75, 0x71, 0x1f, 0x84, 0xf6,
- 0x1a, 0x2c, 0xe4, 0x98, 0xae, 0x1c, 0x60, 0xf8, 0x73, 0x36, 0xaf, 0x03,
- 0xdd, 0x38, 0x06, 0x82, 0xa1, 0xfc, 0x65, 0xdc, 0xee, 0xb0, 0x8d, 0x6e,
- 0x43, 0x77, 0x4f, 0xb9, 0x77, 0x07, 0xfa, 0x32, 0xab, 0x7a, 0x9c, 0x75,
- 0x54, 0x06, 0x1a, 0x74, 0x20, 0x2a, 0xdd, 0xbd, 0x48, 0xa3, 0x90, 0x03,
- 0x86, 0x28, 0x66, 0x59, 0x75, 0x9d, 0x9c, 0xa5, 0x6d, 0x5e, 0x30, 0xaf,
- 0xa8, 0x88, 0x58, 0x3a, 0xc1, 0xd8, 0x95, 0x81, 0xbd, 0xef, 0xe2, 0xd7,
- 0x98, 0x12, 0x14, 0xbf, 0x03, 0x12, 0xee, 0x45, 0xff, 0x55, 0xa4, 0x3d,
- 0x27, 0x77, 0xa0, 0x5b, 0x34, 0x3f, 0x66, 0x68, 0x4c, 0xfc, 0x88, 0x0f,
- 0xae, 0x88, 0xdf, 0xe1, 0x70, 0xce, 0xca, 0xac, 0xfa, 0x15, 0x47, 0x7f,
- 0x03, 0x52, 0x61, 0xef, 0x71, 0xc3, 0x3d, 0x06, 0xbd, 0xad, 0x91, 0xd1,
- 0xfc, 0x3c, 0x74, 0x81, 0x2b, 0x4c, 0x63, 0x97, 0x2e, 0xd3, 0xc0, 0x72,
- 0xfc, 0x6d, 0x14, 0x1a, 0x33, 0xfa, 0x2f, 0xd3, 0x62, 0xda, 0x89, 0x1d,
- 0x4d, 0x14, 0xca, 0x87, 0x55, 0x99, 0x4f, 0xe9, 0xfd, 0xa3, 0x6c, 0x23,
- 0xf3, 0xdc, 0x6f, 0x42, 0x0c, 0x33, 0x3a, 0x96, 0x36, 0x38, 0x3f, 0x8c,
- 0x28, 0x23, 0xe2, 0x57, 0xb1, 0x0b, 0x4c, 0x75, 0xd7, 0x52, 0x9a, 0x1e,
- 0xd5, 0x14, 0xc1, 0x7f, 0x16, 0x12, 0xe6, 0x37, 0xa3, 0xc9, 0xaf, 0xbb,
- 0x7c, 0xa6, 0xf0, 0xf2, 0x34, 0xe8, 0x6a, 0x8f, 0xd8, 0xa1, 0xf0, 0xda,
- 0x36, 0x89, 0xb6, 0x4f, 0xa2, 0x87, 0x6d, 0x78, 0xeb, 0xc3, 0xb3, 0x35,
- 0x94, 0xe1, 0x85, 0xea, 0xaf, 0xc5, 0x11, 0x73, 0x35, 0xe0, 0x40, 0x9e,
- 0x62, 0xa8, 0x65, 0xa3, 0x64, 0xb7, 0xfc, 0x62, 0x6d, 0xd8, 0x69, 0xbb,
- 0xf7, 0xeb, 0x2a, 0xc4, 0xcb, 0xeb, 0xc0, 0x08, 0x63, 0xf5, 0xc8, 0xbd,
- 0x09, 0x60, 0x26, 0x46, 0xbf, 0xd0, 0x18, 0x21, 0x10, 0xad, 0x86, 0x29,
- 0x42, 0x5f, 0x69, 0xd0, 0xf9, 0x31, 0x5a, 0xe0, 0xe3, 0xa8, 0x4e, 0xf8,
- 0x78, 0x0b, 0x08, 0xfe, 0xf4, 0x0b, 0xc4, 0xdb, 0x57, 0x97, 0xf2, 0x01,
- 0x74, 0x3a, 0xfe, 0xc5, 0xa2, 0xea, 0x59, 0x2b, 0x24, 0xe8, 0xa9, 0xdf,
- 0x44, 0x4a, 0x34, 0x2b, 0x5f, 0x7f, 0x55, 0xc9, 0xe1, 0xe5, 0x0c, 0x9a,
- 0xd1, 0x1f, 0x21, 0x34, 0x7e, 0xe7, 0xaa, 0x4c, 0xb7, 0x28, 0xd3, 0x09,
- 0xb0, 0xfc, 0xdf, 0xaa, 0xcc, 0xff, 0x5b, 0x95, 0xf9, 0x5b, 0x54, 0x65,
- 0xfe, 0xcb, 0x0b, 0x0b, 0xfd, 0x33, 0xf6, 0x84, 0xf2, 0x42, 0x7f, 0x90,
- 0x5f, 0xb1, 0xc8, 0xb0, 0x31, 0xee, 0x42, 0xa5, 0xe3, 0x65, 0x48, 0x7e,
- 0x20, 0x4b, 0x66, 0x23, 0x41, 0xaf, 0xdb, 0x7f, 0xa8, 0xb9, 0x6c, 0x33,
- 0x5d, 0xdc, 0xc9, 0x55, 0x94, 0x61, 0xd8, 0xaa, 0x74, 0x9c, 0x27, 0x3e,
- 0xfe, 0x87, 0x1c, 0x96, 0x27, 0x05, 0xae, 0xdb, 0xf3, 0xed, 0x55, 0xd7,
- 0xe5, 0xfc, 0x02, 0x64, 0xc0, 0x7d, 0xef, 0xa9, 0x4a, 0x40, 0x63, 0xbc,
- 0x45, 0xe4, 0xdb, 0xd9, 0x0e, 0x92, 0xaf, 0x9a, 0xc4, 0x44, 0x14, 0xc4,
- 0xcc, 0xf4, 0x5c, 0x95, 0xf6, 0x62, 0x6a, 0x3d, 0xf7, 0xdb, 0xdc, 0x51,
- 0xed, 0x8f, 0xfc, 0x42, 0x85, 0xb6, 0x3d, 0xdc, 0xf2, 0x1a, 0x2d, 0x8d,
- 0x30, 0xaf, 0x8b, 0x78, 0x34, 0xc9, 0x40, 0x7a, 0x51, 0xcc, 0x60, 0x31,
- 0x89, 0x5a, 0x0f, 0xff, 0x86, 0x74, 0x6a, 0x7f, 0xe9, 0x17, 0x07, 0xd6,
- 0x82, 0xa3, 0x06, 0x42, 0x91, 0x1a, 0x7d, 0x0c, 0x05, 0xd6, 0x9e, 0x07,
- 0xad, 0xe8, 0x7a, 0x52, 0x6d, 0x6e, 0xdb, 0x20, 0x8a, 0xfc, 0x65, 0x8e,
- 0x00, 0x90, 0xa1, 0x80, 0x0a, 0x5f, 0xf7, 0x43, 0x83, 0x8c, 0x2a, 0xe9,
- 0x29, 0xf4, 0x16, 0x25, 0x57, 0xb0, 0xd7, 0x84, 0xc0, 0xf7, 0xf2, 0x96,
- 0x90, 0x0e, 0x24, 0xf6, 0x10, 0xfc, 0xb3, 0x4b, 0x7b, 0x52, 0x63, 0x11,
- 0xc3, 0x42, 0x35, 0xb8, 0x8a, 0x6e, 0xbd, 0xcd, 0xc1, 0x36, 0x37, 0x3f,
- 0xd0, 0xd4, 0x34, 0x99, 0xa7, 0xd7, 0x7d, 0x87, 0x26, 0x40, 0x5d, 0xcd,
- 0xd5, 0x9b, 0x7b, 0x93, 0x4c, 0xb2, 0xb1, 0x3e, 0x3f, 0x88, 0xde, 0xa3,
- 0xb7, 0x68, 0x3e, 0xe3, 0xce, 0xb7, 0x38, 0x34, 0x8e, 0x1d, 0xc9, 0xef,
- 0x43, 0xc3, 0x35, 0x1b, 0xc5, 0x82, 0xb8, 0xfa, 0xf0, 0xfe, 0xc4, 0xcf,
- 0x6b, 0xd5, 0x0d, 0xa5, 0xf2, 0x97, 0x2a, 0x5d, 0x1f, 0x17, 0xa3, 0x6a,
- 0x1d, 0x77, 0x4d, 0x3f, 0x7c, 0x5d, 0x4f, 0x27, 0x8b, 0x3d, 0x51, 0x19,
- 0x67, 0x45, 0x20, 0xd2, 0x24, 0x7a, 0x7d, 0xe7, 0x9c, 0x43, 0xad, 0xf5,
- 0x78, 0xc4, 0x64, 0x99, 0x83, 0xe3, 0x0c, 0xbf, 0xf7, 0xfa, 0xe7, 0x50,
- 0x65, 0x3e, 0x2c, 0x08, 0xfe, 0x1f, 0x5e, 0x7a, 0x94, 0x17, 0x17, 0x00,
- 0xe9, 0x4c, 0x9c, 0x16, 0x98, 0x4e, 0xe5, 0xbd, 0xbf, 0x37, 0xec, 0x1e,
- 0xab, 0xcb, 0x7b, 0xcc, 0xf6, 0x26, 0x75, 0x41, 0x36, 0xa3, 0xb5, 0xe3,
- 0xa6, 0x4a, 0x87, 0xd1, 0xff, 0x98, 0xb3, 0xda, 0x0a, 0x88, 0xb0, 0x58,
- 0x47, 0x66, 0xd1, 0xbf, 0xbc, 0x5e, 0xc7, 0x67, 0x7e, 0x58, 0xdb, 0xc7,
- 0x83, 0xa3, 0xe1, 0xc7, 0xcd, 0xad, 0x17, 0x1f, 0xbf, 0x3e, 0x7c, 0xfb,
- 0x71, 0xf8, 0xe6, 0x00, 0x75, 0xbb, 0x27, 0x0a, 0xff, 0xe6, 0xd8, 0x12,
- 0xfc, 0xa6, 0xe8, 0x5d, 0x13, 0xc9, 0x67, 0xb3, 0xe3, 0x54, 0xa2, 0xa9,
- 0xf2, 0x18, 0xa7, 0x8e, 0xfb, 0xe8, 0x6f, 0x22, 0xd1, 0xdc, 0x0f, 0x0c,
- 0xdf, 0x9f, 0xfd, 0x36, 0x06, 0x09, 0x7c, 0x84, 0xc0, 0x7a, 0x1e, 0x96,
- 0xfb, 0xf0, 0xa4, 0x29, 0x5c, 0xdb, 0xe7, 0xaa, 0xb4, 0x85, 0xc4, 0x31,
- 0x0f, 0xff, 0x56, 0xc4, 0x31, 0x1f, 0x68, 0x1a, 0xb0, 0xbf, 0x23, 0x7d,
- 0xc8, 0xa6, 0x0e, 0xea, 0x5b, 0x0d, 0xca, 0xd0, 0x63, 0xbf, 0x15, 0x55,
- 0x68, 0xf0, 0x6a, 0x8a, 0x0e, 0x84, 0xdf, 0x8a, 0x20, 0xb6, 0xd1, 0xf8,
- 0x63, 0x88, 0x72, 0xb3, 0xd9, 0x45, 0x0b, 0xaa, 0x20, 0xa7, 0x27, 0x7e,
- 0x33, 0x6a, 0xc0, 0xd0, 0xbf, 0x16, 0x15, 0x16, 0xad, 0xf6, 0x43, 0xbf,
- 0xe9, 0x57, 0xd9, 0x6f, 0xb4, 0x20, 0xf0, 0x98, 0xc1, 0x01, 0xd8, 0x77,
- 0x70, 0xe5, 0x1b, 0x95, 0xa1, 0x85, 0x49, 0xe4, 0xf7, 0x9a, 0x34, 0x84,
- 0x40, 0xc5, 0x83, 0xed, 0x18, 0xf0, 0x22, 0xe1, 0x46, 0x47, 0x8a, 0x57,
- 0x3a, 0x1c, 0x9e, 0x1d, 0xc7, 0xda, 0xe9, 0x8f, 0x7b, 0x65, 0x70, 0x5f,
- 0x14, 0x2e, 0x31, 0xd3, 0xae, 0x41, 0xef, 0x3a, 0x14, 0x7c, 0x4a, 0xe9,
- 0x27, 0x07, 0x55, 0xcb, 0x0b, 0x56, 0x6b, 0x3c, 0x94, 0xae, 0x2d, 0x17,
- 0xd3, 0x0b, 0xfb, 0x84, 0xfb, 0x89, 0xb3, 0x0b, 0x56, 0x4e, 0x06, 0x2e,
- 0xa9, 0x27, 0x6e, 0xbf, 0x9c, 0x0b, 0x13, 0x25, 0xa6, 0x7b, 0xb4, 0xad,
- 0x2f, 0x68, 0xdf, 0x62, 0x53, 0x99, 0xea, 0x5c, 0x69, 0x7b, 0x51, 0x2f,
- 0xfe, 0x10, 0xed, 0xf5, 0x3c, 0x12, 0x9d, 0x62, 0x39, 0x5e, 0x55, 0xa7,
- 0x53, 0x8a, 0xe7, 0x96, 0x84, 0x5a, 0x8c, 0x4d, 0x51, 0x2b, 0xd7, 0xe8,
- 0xbd, 0xc6, 0x8e, 0x3a, 0xd6, 0x79, 0xa7, 0x26, 0x53, 0x79, 0xe5, 0x25,
- 0xaa, 0x72, 0x5f, 0x1f, 0x9a, 0x3e, 0xee, 0x19, 0xb6, 0x29, 0x25, 0xad,
- 0x09, 0x83, 0x92, 0x26, 0x7c, 0xcd, 0xa6, 0x79, 0x4e, 0x89, 0xf4, 0x52,
- 0x8b, 0x80, 0xb9, 0xf4, 0xa3, 0x40, 0x71, 0x0c, 0xa7, 0x54, 0x57, 0x3c,
- 0xe2, 0xac, 0xa8, 0xaa, 0xec, 0x02, 0x74, 0x92, 0x2b, 0xd1, 0x07, 0xaa,
- 0x94, 0x2b, 0x8e, 0x18, 0x8f, 0x13, 0x69, 0x49, 0x8a, 0x92, 0x05, 0x6b,
- 0x6e, 0x93, 0x88, 0x56, 0x4a, 0x01, 0x59, 0x0e, 0x9e, 0x4a, 0xc8, 0x18,
- 0xe6, 0xa7, 0x05, 0x93, 0x37, 0x19, 0x7e, 0x22, 0x95, 0x04, 0xec, 0x24,
- 0x9a, 0x16, 0x4c, 0x7a, 0xb2, 0xe9, 0xdb, 0x4a, 0xc5, 0x04, 0xbb, 0x09,
- 0x80, 0x04, 0x18, 0x62, 0xc5, 0x70, 0x85, 0xbd, 0x24, 0xa9, 0x8c, 0x9c,
- 0xea, 0x24, 0x6d, 0x8d, 0x7a, 0x99, 0x62, 0xb2, 0xff, 0x4d, 0x2a, 0xdb,
- 0x2a, 0x0e, 0xa3, 0xce, 0xfa, 0xd5, 0xd2, 0xb4, 0x8b, 0x27, 0xbc, 0x07,
- 0x6a, 0xfe, 0x62, 0xfa, 0x44, 0xe0, 0x17, 0xa3, 0x9a, 0x3b, 0x6b, 0x53,
- 0x19, 0xb2, 0xc5, 0x59, 0x1e, 0xfc, 0x3b, 0xe8, 0x34, 0x86, 0x9f, 0xf7,
- 0x66, 0xbf, 0xd4, 0x7d, 0x8d, 0x87, 0xc1, 0x91, 0x2e, 0x8e, 0x24, 0x5e,
- 0x02, 0x54, 0xa1, 0xd9, 0x1f, 0xa0, 0x1b, 0x62, 0xa0, 0x59, 0x67, 0xee,
- 0xf5, 0xd6, 0x08, 0x83, 0x0b, 0x5c, 0x66, 0x77, 0x58, 0x97, 0xef, 0xb7,
- 0xa5, 0x6a, 0x57, 0xe9, 0x17, 0xa5, 0x7a, 0x95, 0x0d, 0x89, 0x6b, 0x42,
- 0xa3, 0x26, 0x98, 0x59, 0x37, 0x89, 0xfb, 0x83, 0xa7, 0x57, 0x5b, 0xec,
- 0x81, 0x6e, 0xb4, 0x01, 0x07, 0x6c, 0x80, 0x70, 0x39, 0x38, 0x0d, 0x25,
- 0xc1, 0x19, 0xf8, 0x8a, 0x30, 0x36, 0xac, 0x67, 0xa0, 0x01, 0xc5, 0x19,
- 0x70, 0x60, 0x06, 0x3e, 0xeb, 0xc6, 0x6a, 0x30, 0xb5, 0x09, 0x37, 0x59,
- 0x62, 0x36, 0xd4, 0xae, 0x96, 0xe9, 0x21, 0x6d, 0xb5, 0x93, 0x4e, 0x3b,
- 0x10, 0xef, 0x0c, 0x3a, 0x5b, 0x21, 0x78, 0xb1, 0x77, 0xc3, 0xa1, 0x0f,
- 0x18, 0x90, 0x97, 0xe9, 0xa8, 0xb8, 0xca, 0xb3, 0x9f, 0x71, 0x44, 0x32,
- 0x3a, 0xdb, 0x05, 0xac, 0x0d, 0xc8, 0x06, 0x4d, 0x7e, 0xd7, 0xf2, 0x07,
- 0x5f, 0x4a, 0x52, 0x99, 0x1d, 0xdd, 0x5d, 0x58, 0x07, 0x86, 0xd0, 0x3a,
- 0x42, 0x88, 0x8a, 0x12, 0x71, 0xa8, 0x38, 0x28, 0x15, 0x67, 0xa1, 0x29,
- 0xbd, 0xe0, 0x0f, 0x7b, 0xbb, 0xa3, 0xdb, 0x2a, 0xdd, 0x09, 0x3a, 0x1a,
- 0x02, 0xe1, 0x48, 0x4b, 0x43, 0x2c, 0x64, 0xf5, 0x93, 0x00, 0x16, 0xc2,
- 0x4d, 0x75, 0xa8, 0xff, 0x05, 0xb2, 0x76, 0xb0, 0xff, 0x9a, 0x69, 0xe9,
- 0x03, 0x86, 0x56, 0xa8, 0xaf, 0x98, 0xd0, 0x98, 0xef, 0xe3, 0x81, 0xa0,
- 0x46, 0x60, 0x83, 0x37, 0xa2, 0x72, 0xa0, 0x91, 0x9c, 0xb1, 0xd8, 0x92,
- 0x50, 0xcf, 0xb6, 0x66, 0x73, 0x37, 0x93, 0x0c, 0xf4, 0x70, 0x07, 0xb7,
- 0x03, 0x4c, 0x75, 0xd1, 0xee, 0x1d, 0x92, 0x73, 0x82, 0x86, 0xa5, 0xc0,
- 0xc1, 0xa6, 0xdc, 0x19, 0xcd, 0xe0, 0xa2, 0x88, 0x51, 0x8f, 0x27, 0x8e,
- 0x0a, 0x01, 0xbd, 0xf6, 0x59, 0x89, 0x9a, 0xbb, 0x17, 0xa9, 0x22, 0x24,
- 0x11, 0x4f, 0xc1, 0x34, 0x70, 0x80, 0x01, 0xf6, 0xeb, 0x42, 0x7c, 0x1a,
- 0x4d, 0x6f, 0x81, 0x5f, 0x23, 0xe2, 0x8d, 0x72, 0x45, 0x9b, 0xb5, 0x04,
- 0xd4, 0xc3, 0x9d, 0x22, 0xd7, 0x63, 0x48, 0x1e, 0x4c, 0xa2, 0x35, 0x7c,
- 0xcd, 0x9b, 0x90, 0x1b, 0x7f, 0x7a, 0xac, 0x25, 0xcd, 0x08, 0x48, 0x99,
- 0x98, 0xe7, 0x39, 0x62, 0x1c, 0x0b, 0xc8, 0x8a, 0xe1, 0x95, 0x3e, 0x8a,
- 0x0f, 0x16, 0xdc, 0x12, 0x5d, 0x8b, 0x67, 0x2a, 0x26, 0xdb, 0x8b, 0xbd,
- 0x97, 0x41, 0x3a, 0x2c, 0xe0, 0xdf, 0x00, 0x97, 0xe3, 0x49, 0xc0, 0x1c,
- 0xbf, 0x2d, 0x2e, 0xc7, 0xb9, 0x99, 0x39, 0x5e, 0x1b, 0xbe, 0x9c, 0x37,
- 0x85, 0x4c, 0xb7, 0x20, 0x08, 0x12, 0xa7, 0xfd, 0x24, 0x37, 0x2e, 0xf4,
- 0x42, 0x28, 0xde, 0x41, 0x42, 0x64, 0x14, 0x4a, 0x98, 0x6a, 0x17, 0x3f,
- 0xa9, 0x7c, 0x5c, 0x15, 0x89, 0xb1, 0x16, 0xa8, 0x22, 0xa5, 0x3c, 0x3e,
- 0x44, 0x2a, 0x44, 0xa2, 0xd1, 0x4d, 0xfa, 0x27, 0xb3, 0x1d, 0xff, 0x16,
- 0x2e, 0x8b, 0x46, 0x6c, 0xf4, 0x69, 0x30, 0x22, 0x02, 0x1b, 0xf2, 0x88,
- 0xa0, 0xf4, 0x26, 0x5c, 0x14, 0xfb, 0xce, 0xed, 0xfe, 0xc5, 0x83, 0xd7,
- 0x3b, 0x1d, 0x7a, 0x7c, 0x4d, 0x31, 0x8f, 0x1a, 0xc2, 0x57, 0xa5, 0x2f,
- 0xb9, 0xba, 0xe0, 0xdc, 0x85, 0x4f, 0x2f, 0x16, 0xf8, 0x66, 0xdc, 0xa5,
- 0x4f, 0x64, 0x2d, 0xd6, 0x17, 0xe3, 0xfb, 0x1d, 0xd2, 0x36, 0xd5, 0x44,
- 0x49, 0xf5, 0x6a, 0xc1, 0xf5, 0x72, 0x91, 0xd6, 0xb7, 0xa8, 0x9a, 0xd2,
- 0x06, 0x69, 0x33, 0x0e, 0x47, 0x24, 0xc9, 0x9e, 0x81, 0x4e, 0x13, 0x2a,
- 0x8d, 0xa4, 0x6e, 0xac, 0x2a, 0xdd, 0xb8, 0x97, 0xaf, 0x71, 0x6b, 0x6a,
- 0x12, 0xa6, 0x27, 0x0a, 0x58, 0x95, 0x0d, 0xae, 0xe9, 0xde, 0x08, 0x44,
- 0xa1, 0x8d, 0x56, 0x04, 0x37, 0x00, 0x53, 0xb4, 0xba, 0x48, 0x1e, 0xdc,
- 0x7c, 0x12, 0x83, 0xe0, 0x07, 0x7e, 0xa5, 0x1c, 0xac, 0xbe, 0xcf, 0x2b,
- 0x69, 0xbb, 0xb5, 0xa6, 0x11, 0x76, 0x22, 0xdc, 0xc2, 0x70, 0xf1, 0xb9,
- 0xa4, 0x72, 0x08, 0xa1, 0xf4, 0xa4, 0x34, 0xbe, 0xe5, 0x65, 0x3f, 0x62,
- 0x86, 0x5f, 0x28, 0xc9, 0xb4, 0x4b, 0x14, 0xb3, 0x83, 0x58, 0x7e, 0x9b,
- 0xcc, 0xe0, 0x67, 0x09, 0x17, 0xdd, 0x4f, 0x93, 0x71, 0x1a, 0x85, 0xf2,
- 0xa9, 0x89, 0x33, 0xdd, 0x89, 0xb5, 0x12, 0x6c, 0x69, 0xd9, 0xcd, 0x0e,
- 0xe9, 0x76, 0xb7, 0x93, 0x89, 0x17, 0xc4, 0x44, 0xa1, 0x2a, 0x60, 0x02,
- 0xe2, 0xf5, 0xd6, 0x74, 0x5b, 0xc9, 0x54, 0x71, 0x55, 0x10, 0xe9, 0xa3,
- 0x9e, 0x33, 0x67, 0xd5, 0x7e, 0xd3, 0xf5, 0xc6, 0x22, 0x8b, 0x60, 0x6b,
- 0x12, 0xdb, 0x99, 0xa4, 0x3d, 0x7f, 0xa9, 0x2a, 0x94, 0x9c, 0xc4, 0xa6,
- 0x0b, 0x99, 0xfa, 0xb9, 0x7a, 0x05, 0xef, 0xdc, 0xb3, 0x44, 0x5f, 0x90,
- 0xfe, 0xcc, 0x32, 0x7e, 0x2c, 0xcb, 0x89, 0x1f, 0xc8, 0x71, 0x5c, 0xc8,
- 0x99, 0xb2, 0x33, 0xbf, 0x56, 0x82, 0xa0, 0x2b, 0xac, 0x24, 0x43, 0x21,
- 0x90, 0xe3, 0xb5, 0x3a, 0x44, 0xfc, 0x87, 0xe1, 0xe1, 0xd9, 0x5a, 0x74,
- 0x66, 0x03, 0xdb, 0x64, 0xfe, 0x71, 0xd7, 0xac, 0x83, 0xe6, 0x5d, 0xc8,
- 0x77, 0xac, 0xb4, 0xa5, 0x0c, 0xc7, 0xa9, 0x25, 0x75, 0x80, 0xf8, 0xd5,
- 0xf4, 0x75, 0xa5, 0x14, 0xd5, 0x5f, 0xfd, 0x82, 0x68, 0xad, 0xe5, 0x80,
- 0x60, 0xc8, 0x19, 0xe1, 0x55, 0x9c, 0x03, 0xae, 0x74, 0xc2, 0x00, 0x11,
- 0x02, 0x2c, 0x51, 0xcf, 0x1c, 0x8d, 0xdc, 0x33, 0xc7, 0xd2, 0xd2, 0x5b,
- 0xc3, 0x11, 0x21, 0xb4, 0xe4, 0xdf, 0xc1, 0x81, 0xa7, 0xb5, 0x10, 0x9a,
- 0x25, 0xde, 0x7c, 0x7c, 0x8b, 0x36, 0x16, 0x01, 0xc6, 0x7f, 0x9e, 0x86,
- 0x5a, 0x80, 0xdc, 0x93, 0x32, 0x25, 0x07, 0x66, 0x3c, 0x68, 0x37, 0x0e,
- 0x77, 0x32, 0x0b, 0x64, 0x72, 0x19, 0xc1, 0x64, 0xf0, 0xf9, 0xea, 0x68,
- 0x5e, 0xc9, 0x7a, 0x36, 0x58, 0xd7, 0xd8, 0x71, 0x82, 0xfa, 0xdb, 0x93,
- 0x5d, 0x35, 0x2a, 0x66, 0xf7, 0x48, 0x0c, 0x78, 0xac, 0xaa, 0xae, 0xb7,
- 0x40, 0x5c, 0x6e, 0x0d, 0x5e, 0x30, 0xb8, 0xce, 0x35, 0x28, 0x4c, 0x81,
- 0xe6, 0xbc, 0x9c, 0xe6, 0xce, 0xdd, 0xa3, 0xdb, 0xe3, 0x89, 0x25, 0x34,
- 0x58, 0x5b, 0x96, 0xaf, 0x99, 0xf1, 0x68, 0xf3, 0xe1, 0xef, 0x51, 0xb5,
- 0x4c, 0x47, 0x86, 0xb6, 0x79, 0xfd, 0x57, 0xe4, 0x6d, 0x6e, 0x80, 0xb6,
- 0x2f, 0x5e, 0x05, 0x8f, 0x9b, 0x91, 0x99, 0x23, 0x64, 0xe9, 0x35, 0x1c,
- 0x29, 0x1f, 0x73, 0x36, 0xf6, 0x45, 0x06, 0xd4, 0x2c, 0xef, 0x8d, 0x2f,
- 0xa2, 0x29, 0x74, 0x5e, 0x13, 0x02, 0x20, 0xbd, 0x15, 0xc4, 0x96, 0x1c,
- 0x44, 0x7f, 0xa5, 0x8f, 0xca, 0xdb, 0x8c, 0xc7, 0x41, 0x09, 0xe3, 0x5f,
- 0x1d, 0xbd, 0x3e, 0x7d, 0x7f, 0xd4, 0x04, 0xc8, 0xaa, 0xa9, 0x05, 0x44,
- 0x44, 0x09, 0xd1, 0xed, 0xd9, 0x51, 0x23, 0x2b, 0x45, 0xbe, 0x95, 0x6c,
- 0xee, 0x0c, 0xbd, 0x47, 0xd1, 0xd9, 0xb7, 0xaf, 0xcc, 0xec, 0x50, 0x4b,
- 0xcc, 0x69, 0x56, 0x3a, 0x68, 0x9f, 0x77, 0xb9, 0x35, 0x1c, 0x65, 0x8e,
- 0xac, 0x0d, 0x50, 0xd0, 0x71, 0xb2, 0xb7, 0xce, 0x8f, 0xd2, 0xd0, 0xb9,
- 0x78, 0x40, 0x21, 0x2f, 0xa9, 0x75, 0x7d, 0x55, 0x21, 0x84, 0xa5, 0x19,
- 0xd4, 0xb3, 0x7b, 0x48, 0xfb, 0x23, 0xac, 0x7d, 0x71, 0x26, 0x60, 0xb3,
- 0x28, 0xec, 0x20, 0x15, 0xf8, 0x86, 0xe6, 0xcc, 0xf3, 0x07, 0x02, 0x95,
- 0xbd, 0xd7, 0x58, 0x68, 0x4f, 0x39, 0x0a, 0xac, 0x5b, 0xa0, 0xc7, 0x0e,
- 0xcf, 0x8a, 0xa9, 0xa6, 0xec, 0x73, 0x5f, 0x2f, 0x49, 0x45, 0x69, 0xd0,
- 0x10, 0xbe, 0xe2, 0x79, 0xed, 0xe0, 0xab, 0xab, 0x15, 0xc2, 0x5b, 0xa8,
- 0x15, 0xef, 0xb6, 0x66, 0x94, 0xf9, 0xae, 0xfc, 0x69, 0xc5, 0xe2, 0x80,
- 0x90, 0xca, 0x63, 0xac, 0xf0, 0x76, 0x7a, 0x0e, 0x6c, 0x38, 0x72, 0xc9,
- 0x43, 0xc5, 0x2d, 0xba, 0xde, 0xc1, 0xa3, 0x20, 0x76, 0xaa, 0xba, 0x98,
- 0xa1, 0x32, 0xc6, 0xa0, 0x95, 0xd8, 0xa7, 0x91, 0xf2, 0x93, 0xf1, 0x26,
- 0xe2, 0x92, 0x0f, 0x2e, 0x02, 0x09, 0x35, 0x77, 0xcf, 0xf2, 0x39, 0xb7,
- 0x29, 0xce, 0x15, 0x72, 0x4d, 0xd7, 0x86, 0xc3, 0x80, 0x14, 0xb4, 0xdb,
- 0xd3, 0x5a, 0x35, 0x76, 0x2a, 0x0b, 0x18, 0x23, 0x59, 0xf5, 0x29, 0x5a,
- 0xfd, 0x4f, 0x58, 0x20, 0x01, 0x88, 0xdf, 0x66, 0x15, 0x37, 0x8f, 0xd3,
- 0x7c, 0x91, 0xb4, 0xd4, 0x22, 0x0d, 0x9d, 0x27, 0xd1, 0x04, 0x45, 0x6c,
- 0x18, 0xf0, 0x40, 0x29, 0xd1, 0x97, 0xd6, 0xec, 0x35, 0x22, 0xad, 0x1a,
- 0x33, 0xd2, 0xc8, 0x65, 0x4a, 0x3e, 0x0a, 0xe8, 0xee, 0xdc, 0x19, 0x8f,
- 0xe2, 0xce, 0x78, 0x2c, 0xab, 0xfb, 0xbc, 0x46, 0xf9, 0xc6, 0xa2, 0x78,
- 0x54, 0x94, 0xa4, 0x14, 0x20, 0xcf, 0xdb, 0x53, 0x56, 0x11, 0xb8, 0xec,
- 0xcb, 0xdd, 0x97, 0x40, 0x69, 0x1f, 0x24, 0x33, 0xe7, 0x40, 0x3a, 0xbe,
- 0x22, 0x9d, 0xac, 0x29, 0x35, 0xad, 0x60, 0xf8, 0x3b, 0x3a, 0x5c, 0x66,
- 0x28, 0xf2, 0xef, 0xa6, 0xd4, 0x7f, 0x14, 0xe1, 0x8f, 0xfc, 0xcb, 0x7d,
- 0xe8, 0x0c, 0xf3, 0x44, 0x30, 0x0a, 0xbf, 0x64, 0x84, 0x64, 0x11, 0xf5,
- 0xd2, 0x16, 0xe7, 0xbd, 0xea, 0xb5, 0x83, 0xe8, 0x43, 0x4e, 0x35, 0x4b,
- 0xc2, 0x85, 0x72, 0x55, 0x65, 0x39, 0x6c, 0x1b, 0x6c, 0x33, 0x5c, 0x56,
- 0x01, 0x59, 0xf4, 0xf7, 0xa6, 0x0c, 0x12, 0x39, 0xdd, 0x4a, 0xe4, 0xa2,
- 0xc3, 0x6b, 0x8a, 0x94, 0x54, 0x7c, 0x45, 0xaf, 0x41, 0xfe, 0x06, 0x2a,
- 0x50, 0xd8, 0x99, 0x04, 0xcb, 0xa1, 0xb1, 0x31, 0x57, 0x2f, 0x9d, 0x4c,
- 0x18, 0x19, 0x8e, 0x5a, 0x51, 0xa3, 0x9d, 0xc7, 0xf0, 0x7c, 0x54, 0xeb,
- 0xe3, 0xda, 0xbf, 0xde, 0xe5, 0x46, 0x28, 0x83, 0xd8, 0xab, 0x50, 0x91,
- 0x7b, 0x05, 0x73, 0x43, 0xf3, 0x11, 0x10, 0x0d, 0xca, 0xba, 0xc4, 0x98,
- 0x36, 0xbc, 0xa4, 0xae, 0xd3, 0xee, 0x37, 0x24, 0x4c, 0x90, 0xd0, 0xe8,
- 0xba, 0x66, 0x75, 0x22, 0x8c, 0xc8, 0x42, 0xe6, 0x0e, 0x3f, 0x69, 0x0e,
- 0x4a, 0x95, 0xd6, 0x95, 0x55, 0x23, 0x12, 0x12, 0x85, 0xb4, 0x6b, 0xca,
- 0x2a, 0xdd, 0xc3, 0x21, 0x9d, 0xc6, 0x0c, 0x19, 0xc6, 0x8f, 0x31, 0xcf,
- 0xe7, 0x63, 0xd6, 0xa6, 0xf7, 0x69, 0x36, 0xe9, 0x1d, 0x69, 0x81, 0xc0,
- 0x20, 0x5f, 0x98, 0x82, 0x99, 0xcf, 0x3a, 0x70, 0x62, 0xd0, 0x97, 0x8f,
- 0x6d, 0xce, 0x29, 0x59, 0x92, 0x17, 0xc3, 0x2e, 0x8a, 0x8a, 0x11, 0xdf,
- 0xa4, 0x9f, 0xe6, 0xe4, 0xe3, 0x55, 0x5a, 0xe3, 0x6f, 0x57, 0xb7, 0xd7,
- 0x90, 0x1c, 0xe1, 0xe1, 0x66, 0x08, 0xd1, 0x48, 0xe8, 0x70, 0xcd, 0x69,
- 0x18, 0xb4, 0x38, 0xd0, 0x89, 0x6c, 0x30, 0x0c, 0xdb, 0x9c, 0x7a, 0x37,
- 0xf8, 0xe8, 0xfa, 0xaa, 0x9c, 0x45, 0x57, 0xa0, 0x46, 0xcf, 0x1e, 0xa0,
- 0x2a, 0x3f, 0xe9, 0xd1, 0x94, 0x5f, 0x3d, 0x7e, 0xe5, 0xd2, 0x52, 0xc8,
- 0x06, 0x74, 0x0b, 0x0f, 0x47, 0xec, 0xc9, 0x29, 0xae, 0x42, 0x4e, 0xbd,
- 0x93, 0xcd, 0x68, 0xd6, 0x66, 0x16, 0xe2, 0xd3, 0x6f, 0xc2, 0xc3, 0x35,
- 0xb6, 0x84, 0x47, 0xd0, 0x61, 0xe9, 0xfc, 0x8d, 0x61, 0xa8, 0x69, 0xc2,
- 0x27, 0xec, 0x0a, 0x24, 0x9f, 0x7e, 0xc4, 0x2f, 0xd2, 0xbb, 0x9e, 0x16,
- 0x63, 0x04, 0x4a, 0x4a, 0x1f, 0xa4, 0x05, 0x3e, 0xa8, 0xb4, 0x10, 0x80,
- 0xa9, 0xca, 0x5d, 0x17, 0x0d, 0x02, 0x27, 0x5f, 0x77, 0xda, 0xc7, 0x2c,
- 0x6e, 0x5b, 0xf5, 0x52, 0xc6, 0x85, 0xc3, 0xd3, 0xcb, 0xee, 0x12, 0xf2,
- 0xa8, 0x18, 0xd5, 0xce, 0x0a, 0xf0, 0x81, 0x0e, 0x86, 0xa5, 0xbb, 0x2b,
- 0xb0, 0x32, 0x84, 0x1b, 0x22, 0x8f, 0xcd, 0x43, 0x2b, 0xc3, 0x07, 0xbd,
- 0x5d, 0x86, 0x1f, 0xf2, 0x8d, 0xd8, 0xda, 0x62, 0xde, 0x9c, 0xf0, 0x70,
- 0xcd, 0x0d, 0xd6, 0x1d, 0xa6, 0x39, 0x84, 0x36, 0x58, 0xfa, 0x7d, 0xfb,
- 0x9a, 0xb3, 0x9e, 0x1d, 0xdd, 0x61, 0xf3, 0x60, 0xe7, 0x06, 0xcb, 0x37,
- 0x3c, 0x2a, 0x4c, 0x72, 0x38, 0x7c, 0xf3, 0x72, 0x94, 0x7e, 0xa4, 0xb9,
- 0x71, 0xe3, 0x9d, 0x8f, 0x8b, 0x09, 0x32, 0x11, 0x6c, 0xd4, 0xfb, 0x29,
- 0x2a, 0xc5, 0x56, 0x02, 0x4b, 0xb3, 0xce, 0x44, 0xb0, 0x42, 0x41, 0x71,
- 0xa7, 0xdf, 0xb3, 0x0d, 0xdc, 0xc1, 0xf6, 0xf6, 0x7b, 0x51, 0x64, 0x20,
- 0xbf, 0xc1, 0xea, 0x85, 0x79, 0x53, 0xae, 0xb1, 0x90, 0xc8, 0x9d, 0x23,
- 0x3e, 0xd6, 0x41, 0x90, 0xa0, 0x97, 0x74, 0xfa, 0x09, 0x71, 0x81, 0x8c,
- 0x96, 0xf5, 0x31, 0xf7, 0x63, 0x8c, 0xce, 0xe2, 0xf8, 0x69, 0xdd, 0x6d,
- 0x5e, 0x52, 0xbb, 0x9d, 0x77, 0x43, 0x04, 0xc2, 0xcf, 0x3b, 0x66, 0xe3,
- 0x7e, 0xd0, 0x9c, 0x48, 0x6f, 0x76, 0x8f, 0x16, 0xe1, 0xfc, 0x64, 0x58,
- 0x82, 0x37, 0x90, 0xcc, 0x1c, 0x39, 0xbe, 0x80, 0x0d, 0x97, 0x96, 0xe3,
- 0xa3, 0x2e, 0x99, 0x8b, 0x4a, 0x0e, 0x5e, 0x66, 0x24, 0xc4, 0xe1, 0xbb,
- 0xbf, 0xbf, 0x08, 0xc7, 0x38, 0xa6, 0x7a, 0x8e, 0x6f, 0xad, 0x54, 0x52,
- 0xfd, 0x0e, 0xa7, 0x93, 0x5c, 0x54, 0xc5, 0x64, 0x8e, 0x1e, 0x96, 0xa4,
- 0xbe, 0xe6, 0x1d, 0xba, 0xd4, 0x79, 0x76, 0xee, 0x67, 0x5e, 0xfb, 0x5a,
- 0xbb, 0xb7, 0xa3, 0xf0, 0x18, 0x15, 0xb3, 0x12, 0xcb, 0x0a, 0x87, 0x77,
- 0x6f, 0xab, 0x3c, 0x6d, 0xa7, 0xc8, 0x7a, 0x88, 0xdd, 0x94, 0x32, 0xc0,
- 0x78, 0xdd, 0x77, 0x88, 0x7c, 0xb5, 0x75, 0x87, 0x8c, 0x53, 0x0c, 0x24,
- 0x31, 0x77, 0x50, 0x0d, 0x84, 0xb9, 0x8d, 0xa2, 0x87, 0xce, 0x66, 0x27,
- 0xe3, 0x96, 0xd3, 0x07, 0x18, 0x16, 0x1e, 0xb0, 0xab, 0x62, 0xa8, 0x62,
- 0xb3, 0x2a, 0x4f, 0xd4, 0x09, 0x03, 0x76, 0x50, 0xbe, 0x6b, 0x06, 0x8d,
- 0x83, 0xbd, 0x68, 0x26, 0xee, 0x99, 0x76, 0x27, 0x63, 0x49, 0x8b, 0x0a,
- 0x3c, 0xfe, 0x61, 0x66, 0xd6, 0xc1, 0xeb, 0xf7, 0xad, 0xf7, 0x84, 0x3c,
- 0x7d, 0x27, 0xd8, 0x42, 0x6e, 0x03, 0xf4, 0xb1, 0xf8, 0xbc, 0xa1, 0x32,
- 0x73, 0x29, 0x99, 0x8b, 0x0e, 0x80, 0x89, 0x23, 0xd7, 0x3c, 0x17, 0x83,
- 0xf8, 0x16, 0x58, 0x7b, 0xec, 0xbd, 0x3a, 0x3a, 0x39, 0x22, 0x7a, 0xf6,
- 0x02, 0xed, 0x1e, 0x2f, 0x8b, 0xc2, 0x8c, 0x63, 0x1d, 0x0b, 0xdf, 0xf5,
- 0x6d, 0xf3, 0x35, 0xd7, 0x4d, 0x86, 0x2b, 0x03, 0x5d, 0x74, 0x01, 0x0c,
- 0x88, 0x93, 0x10, 0x64, 0x18, 0x8b, 0x7a, 0xb7, 0x67, 0x94, 0xd6, 0x42,
- 0xb5, 0x34, 0x54, 0xd8, 0x87, 0xde, 0x14, 0x35, 0x89, 0xa8, 0x6b, 0xc9,
- 0x38, 0x2d, 0x3d, 0x22, 0x83, 0x85, 0xc3, 0x9f, 0xe4, 0x7a, 0x0b, 0xee,
- 0x8b, 0x89, 0x89, 0x19, 0xa2, 0x96, 0x93, 0x95, 0xc1, 0x7d, 0x61, 0xd9,
- 0x86, 0xd6, 0xc7, 0x61, 0xf7, 0xae, 0xc0, 0x00, 0x0a, 0xd8, 0xb4, 0xcd,
- 0xd2, 0x17, 0x10, 0x1e, 0x66, 0xd5, 0x9c, 0x79, 0x9a, 0x5e, 0x8d, 0x63,
- 0x61, 0xbe, 0xa7, 0x94, 0x01, 0xb8, 0x14, 0xc2, 0xe4, 0xff, 0xac, 0xba,
- 0x5e, 0x32, 0xb6, 0xa2, 0x13, 0x70, 0xe8, 0x5e, 0xf6, 0x79, 0x64, 0x90,
- 0x83, 0xfb, 0xf4, 0x47, 0x10, 0xda, 0x82, 0x2c, 0x3d, 0xb2, 0x1b, 0x5e,
- 0x1f, 0x9f, 0x1c, 0xad, 0x45, 0xef, 0x25, 0x65, 0x05, 0xcd, 0xab, 0xfb,
- 0x1a, 0x7b, 0xea, 0xe2, 0x00, 0xab, 0xd9, 0x00, 0x54, 0x28, 0x86, 0x32,
- 0x40, 0x5b, 0x65, 0x5c, 0x8c, 0x82, 0x09, 0x40, 0x6b, 0x92, 0xe8, 0xc2,
- 0x51, 0x87, 0xf5, 0xcd, 0xc1, 0x66, 0xdf, 0xf5, 0x03, 0xd9, 0x6a, 0x21,
- 0x4e, 0xb1, 0x91, 0x76, 0xdc, 0xf4, 0xe9, 0xb6, 0xd7, 0xf1, 0x3d, 0x7e,
- 0xb8, 0xf2, 0x03, 0x75, 0x14, 0xec, 0xb3, 0x9e, 0x84, 0xdb, 0xe4, 0xde,
- 0xb7, 0x11, 0x37, 0xe2, 0x9d, 0x97, 0x2f, 0x1b, 0x5a, 0x60, 0xe5, 0xf4,
- 0x33, 0xdf, 0xdd, 0xd8, 0xa0, 0xb5, 0x79, 0xe8, 0x91, 0xf0, 0x8b, 0xf8,
- 0x25, 0xbd, 0xd8, 0x7c, 0xad, 0x4a, 0x61, 0xef, 0xc7, 0xdd, 0xef, 0xc5,
- 0xf8, 0x9b, 0xc0, 0xe7, 0xe8, 0x52, 0xed, 0x7c, 0xeb, 0x25, 0x7e, 0x2e,
- 0xf0, 0x16, 0x3d, 0xcc, 0x74, 0x2c, 0x2e, 0x2f, 0xd1, 0x69, 0x8e, 0x4f,
- 0x2a, 0x36, 0xfb, 0x6d, 0x52, 0x8e, 0xfd, 0xe5, 0x6e, 0xf4, 0xe3, 0xcd,
- 0xae, 0xe5, 0x52, 0x96, 0x10, 0xd5, 0x67, 0xe0, 0x7e, 0xa2, 0xfb, 0x66,
- 0xf5, 0x3f, 0xd7, 0x18, 0xd6, 0xa4, 0x3d, 0xd0, 0x26, 0xcc, 0x68, 0xf3,
- 0xe5, 0xcb, 0x3e, 0xce, 0x6c, 0xf7, 0xe5, 0xcb, 0x4e, 0x6c, 0x4e, 0xe7,
- 0x33, 0xb7, 0x85, 0x75, 0x46, 0xe3, 0xeb, 0x96, 0x69, 0x2a, 0xf8, 0x4c,
- 0x14, 0xfe, 0x0e, 0xfe, 0x26, 0xfa, 0x3c, 0x7a, 0x77, 0x7a, 0x7e, 0xe4,
- 0xf8, 0x69, 0xe9, 0x60, 0x73, 0x0a, 0x87, 0xe3, 0x4e, 0xa1, 0xb4, 0x96,
- 0x19, 0xa6, 0xa3, 0xb3, 0x33, 0x6a, 0x3a, 0x9f, 0xf8, 0x5e, 0x1e, 0x82,
- 0xd8, 0xd0, 0xe8, 0x83, 0x62, 0x3f, 0xa8, 0xa0, 0xe0, 0x0b, 0x9b, 0x32,
- 0x6e, 0xb0, 0xbb, 0x24, 0x5e, 0x57, 0x78, 0xee, 0xfe, 0x23, 0x8a, 0xce,
- 0x92, 0xb2, 0xf2, 0x0b, 0x56, 0xd1, 0xdd, 0xa1, 0xce, 0x1d, 0x71, 0x9e,
- 0x15, 0xe5, 0xd4, 0x38, 0xa4, 0x4d, 0x90, 0x43, 0x4c, 0x71, 0xf9, 0x77,
- 0x76, 0x91, 0x4d, 0xb2, 0xfa, 0xbe, 0xc3, 0xcb, 0x83, 0x9d, 0x5b, 0xcb,
- 0x40, 0x0a, 0x1e, 0x42, 0x86, 0x66, 0x57, 0x59, 0xed, 0xf6, 0x14, 0x58,
- 0x05, 0x2e, 0x5c, 0x23, 0x6f, 0x28, 0xd7, 0x10, 0x48, 0xdc, 0x7d, 0xa5,
- 0x42, 0xb0, 0x0c, 0xae, 0xea, 0xc3, 0x7f, 0x14, 0xb3, 0x15, 0xcf, 0x7b,
- 0x93, 0x4e, 0xc6, 0x6c, 0x17, 0xd9, 0x17, 0x62, 0x7a, 0x52, 0xce, 0x31,
- 0xf9, 0x87, 0xee, 0x28, 0x3e, 0x9a, 0x50, 0x9f, 0x29, 0xf7, 0xe3, 0x01,
- 0x6f, 0x17, 0xa1, 0xf0, 0x53, 0xe6, 0x9f, 0x02, 0xdd, 0xe0, 0x30, 0x7d,
- 0x67, 0x7f, 0x56, 0x1c, 0x82, 0x98, 0x20, 0x42, 0x8e, 0x0c, 0xe2, 0xb5,
- 0x00, 0xe2, 0x10, 0xeb, 0x38, 0x9d, 0x69, 0x79, 0x5c, 0xde, 0x1c, 0x07,
- 0x0e, 0xd9, 0x65, 0x76, 0x35, 0x2f, 0xc3, 0x95, 0x54, 0xe4, 0xe9, 0x92,
- 0xd4, 0x3a, 0x12, 0x7a, 0xa8, 0x30, 0xde, 0x26, 0xa5, 0x78, 0xfa, 0xa7,
- 0xe8, 0x60, 0x54, 0xa1, 0xa3, 0x3e, 0x27, 0x85, 0x57, 0xb9, 0x4e, 0x3c,
- 0xf8, 0x0c, 0xda, 0xca, 0x4b, 0xd0, 0xcb, 0xd1, 0x45, 0x27, 0x29, 0xa1,
- 0x14, 0x7c, 0xa0, 0xd1, 0x0c, 0xc0, 0x8d, 0xc4, 0x39, 0x90, 0x0b, 0x51,
- 0x8d, 0xa1, 0x8e, 0x6a, 0x44, 0x82, 0x40, 0xd1, 0x82, 0x69, 0x7e, 0x8e,
- 0xb1, 0x55, 0x7c, 0x9a, 0xfc, 0xb3, 0xd7, 0x05, 0xf6, 0x4f, 0x00, 0x79,
- 0x89, 0xf2, 0xd1, 0x87, 0xf6, 0x45, 0xa1, 0x48, 0x3b, 0xca, 0xf2, 0x91,
- 0xb7, 0x09, 0x9e, 0xbf, 0xcd, 0x27, 0x45, 0x32, 0x6e, 0xba, 0x5b, 0x99,
- 0x5c, 0xdc, 0x11, 0x43, 0x36, 0xd7, 0x4b, 0x24, 0xc4, 0xbd, 0xe6, 0x5d,
- 0x8e, 0x56, 0x1d, 0xd8, 0x69, 0x3a, 0x3c, 0x8e, 0x13, 0x8f, 0x05, 0x28,
- 0xf2, 0x0a, 0xc3, 0x28, 0xaf, 0x0d, 0x68, 0x2e, 0x81, 0x06, 0x0a, 0xbc,
- 0x5f, 0x95, 0xee, 0x56, 0x7a, 0x57, 0xc3, 0x3f, 0xd3, 0xb1, 0xeb, 0x54,
- 0x8c, 0x86, 0xc7, 0xff, 0xeb, 0xe8, 0xf7, 0x4e, 0x53, 0x60, 0xca, 0x6d,
- 0x6d, 0xc5, 0x3b, 0x3b, 0xcb, 0xdd, 0x9d, 0x87, 0x84, 0x6f, 0x56, 0xe4,
- 0xe4, 0x2b, 0x8e, 0x13, 0xa9, 0x09, 0x4b, 0xf0, 0xa7, 0xc9, 0x0c, 0xd7,
- 0xde, 0xd4, 0x65, 0x6e, 0x0d, 0x26, 0xd4, 0xb7, 0xdc, 0xaf, 0x4a, 0xf2,
- 0x06, 0x0c, 0xb2, 0x72, 0x32, 0x11, 0x9f, 0x23, 0x50, 0x9e, 0xa3, 0xbc,
- 0x94, 0x0d, 0x43, 0x1c, 0x7f, 0x19, 0x74, 0x52, 0x13, 0x74, 0x93, 0x85,
- 0x2c, 0xe7, 0x22, 0x5f, 0x02, 0xf3, 0xe1, 0xb8, 0x05, 0x73, 0xd4, 0x94,
- 0x22, 0x20, 0xe4, 0x8a, 0xc4, 0x08, 0x0e, 0x77, 0x3a, 0x88, 0xfc, 0xf8,
- 0x2d, 0xb5, 0x35, 0xc2, 0x49, 0xc1, 0x5c, 0x97, 0x27, 0xe2, 0xed, 0xb2,
- 0xe5, 0x26, 0x65, 0xac, 0xd3, 0x75, 0xe8, 0x94, 0xb2, 0x2a, 0x88, 0x59,
- 0x11, 0x65, 0xb4, 0xff, 0xe1, 0xfd, 0x49, 0x07, 0xac, 0xd6, 0x90, 0x58,
- 0x0b, 0x79, 0xa0, 0xf7, 0x3e, 0xa5, 0x1e, 0x22, 0x25, 0x08, 0xe5, 0x2b,
- 0x50, 0x3a, 0x9d, 0xb6, 0x2d, 0x8d, 0x9e, 0x52, 0xe2, 0x7c, 0x0d, 0xf9,
- 0x92, 0x51, 0x55, 0x50, 0xc9, 0x80, 0xd7, 0xa6, 0x4d, 0x8d, 0x72, 0xc1,
- 0xb0, 0x2e, 0x27, 0x89, 0x6c, 0xc4, 0xbc, 0xc4, 0x94, 0x36, 0xda, 0x46,
- 0x9f, 0xef, 0xc7, 0x02, 0x5c, 0x40, 0xad, 0xbe, 0xdc, 0x4e, 0x62, 0xb6,
- 0x3e, 0x29, 0x62, 0xf6, 0x88, 0x7a, 0x7f, 0xc6, 0x08, 0x68, 0x4f, 0xa7,
- 0x19, 0xa7, 0x7e, 0x6e, 0x87, 0x92, 0x02, 0x93, 0xa3, 0xea, 0xc2, 0x01,
- 0x11, 0x6a, 0xc6, 0x4e, 0x71, 0xd6, 0x9a, 0x77, 0x97, 0xde, 0x64, 0x08,
- 0x23, 0x8d, 0xaf, 0xb4, 0x01, 0x15, 0x28, 0xb9, 0x21, 0x23, 0xa8, 0x68,
- 0x81, 0xb0, 0x4e, 0xa2, 0x13, 0x99, 0xdf, 0x9e, 0x84, 0xd2, 0x59, 0xed,
- 0xd5, 0xa9, 0x35, 0xb2, 0x5b, 0x43, 0x8b, 0x4d, 0x26, 0x70, 0xfe, 0xfa,
- 0x26, 0x50, 0x82, 0x6b, 0x14, 0xd9, 0x89, 0x73, 0x4a, 0x72, 0x13, 0x51,
- 0x6b, 0x6c, 0xed, 0xef, 0x5e, 0xcb, 0xac, 0x74, 0xed, 0x29, 0xd3, 0x5e,
- 0x02, 0x65, 0x35, 0x3d, 0xa9, 0xb7, 0x44, 0x3d, 0xf3, 0xc2, 0x81, 0x84,
- 0x88, 0xf1, 0xc9, 0x53, 0x06, 0x5c, 0xfc, 0x72, 0xe7, 0xc1, 0x3a, 0xd0,
- 0x3e, 0xe2, 0x71, 0x72, 0x45, 0x01, 0x41, 0x14, 0x4a, 0x0e, 0x1f, 0x3b,
- 0x87, 0xed, 0xbf, 0x78, 0x47, 0x30, 0xe8, 0x2a, 0xbf, 0x8c, 0x03, 0xde,
- 0x29, 0x6d, 0x37, 0xe8, 0x6c, 0x4f, 0x4d, 0xe8, 0x09, 0xc4, 0xb3, 0xa7,
- 0xce, 0x18, 0xe2, 0x69, 0xd2, 0xa3, 0x27, 0xfa, 0x58, 0x30, 0x86, 0x1b,
- 0x3b, 0x38, 0x0b, 0x87, 0x8c, 0x69, 0x16, 0xbf, 0xca, 0x40, 0x1d, 0xa8,
- 0xb8, 0xdf, 0x00, 0x59, 0x70, 0x34, 0x9e, 0x11, 0x63, 0x8c, 0x6d, 0x17,
- 0xfb, 0x4d, 0x84, 0x46, 0x82, 0x36, 0x60, 0x5e, 0x31, 0x49, 0x02, 0x70,
- 0x04, 0xba, 0xfa, 0x97, 0x89, 0x92, 0x68, 0x15, 0xd2, 0xc4, 0xfa, 0xa5,
- 0x88, 0x66, 0xf2, 0x6f, 0x39, 0xcc, 0x9c, 0xeb, 0x1a, 0xa0, 0x8e, 0xe9,
- 0x02, 0x40, 0xe9, 0xb2, 0xd4, 0x44, 0x51, 0xfd, 0x38, 0x61, 0x87, 0x0d,
- 0x55, 0x4b, 0x58, 0xa4, 0xb3, 0xb6, 0x0a, 0x09, 0x93, 0xba, 0x2d, 0xf1,
- 0x66, 0x65, 0x2f, 0xa7, 0xa6, 0x24, 0x0b, 0x66, 0xdb, 0x08, 0x86, 0x1d,
- 0x38, 0x29, 0xc2, 0x6a, 0x15, 0x11, 0x7a, 0x41, 0x67, 0x86, 0xda, 0x7d,
- 0x63, 0x71, 0x54, 0x73, 0xe2, 0x1e, 0x36, 0x8c, 0x0c, 0xe7, 0x85, 0x20,
- 0xb5, 0x87, 0xd2, 0xd5, 0x28, 0x6d, 0x17, 0x1f, 0x71, 0xb5, 0x1a, 0xce,
- 0xd4, 0x8c, 0xfe, 0x18, 0xdb, 0x96, 0xf3, 0xab, 0xf7, 0x29, 0x18, 0x72,
- 0x36, 0xdb, 0x93, 0x1c, 0x12, 0x9f, 0x75, 0x38, 0xff, 0x44, 0x67, 0xb2,
- 0xd3, 0x40, 0x23, 0xdb, 0x49, 0x67, 0x61, 0xc2, 0x83, 0x4e, 0x47, 0x75,
- 0x1a, 0x79, 0x7a, 0x87, 0x3d, 0x56, 0xbb, 0x87, 0xf3, 0x6d, 0xb9, 0x6f,
- 0x0f, 0xde, 0xbf, 0x3b, 0x7e, 0xf7, 0xf5, 0x1e, 0x0a, 0x83, 0xb4, 0x1c,
- 0xa1, 0x4e, 0x1e, 0xfd, 0x34, 0x1f, 0x67, 0x23, 0x16, 0x8f, 0xd2, 0xe3,
- 0xa9, 0x81, 0xd9, 0x90, 0x4a, 0x48, 0x8d, 0x40, 0xfb, 0xbd, 0x96, 0x42,
- 0x54, 0x0a, 0x84, 0x88, 0x13, 0x65, 0x71, 0x35, 0x37, 0x1c, 0x34, 0x22,
- 0xc5, 0x92, 0x82, 0xa8, 0x94, 0x93, 0x83, 0xdb, 0xc2, 0x8c, 0x8b, 0x51,
- 0x06, 0x50, 0xfb, 0x5e, 0x9d, 0x9c, 0x44, 0x7e, 0x47, 0x43, 0xae, 0x3f,
- 0x61, 0x0f, 0x0c, 0x25, 0x0a, 0x6b, 0xe9, 0x07, 0x6a, 0x6f, 0x28, 0x57,
- 0x1b, 0xf2, 0x1d, 0x4c, 0x0f, 0x2d, 0x45, 0xa2, 0xdc, 0xfd, 0x69, 0x40,
- 0x2b, 0xa5, 0x82, 0xbe, 0xb2, 0xc6, 0x8e, 0x6e, 0x97, 0x35, 0xea, 0xb7,
- 0x4b, 0xde, 0xe1, 0xa7, 0xff, 0x15, 0x12, 0x34, 0xeb, 0xe4, 0x18, 0xea,
- 0x94, 0x36, 0xed, 0xe3, 0xdf, 0x50, 0x79, 0xec, 0x8f, 0xb1, 0x74, 0x7e,
- 0x51, 0x14, 0xf7, 0x9a, 0x6d, 0xf6, 0x06, 0x64, 0x39, 0x67, 0xdb, 0x50,
- 0xf3, 0x2a, 0x60, 0x7d, 0x36, 0x26, 0xe0, 0x40, 0x53, 0x94, 0xd9, 0x3f,
- 0x38, 0xe3, 0x14, 0xd4, 0x17, 0x31, 0xf5, 0x2a, 0xbc, 0x89, 0x7c, 0xc9,
- 0x74, 0x9b, 0x96, 0xe2, 0xc3, 0x31, 0x48, 0x7e, 0x70, 0x8f, 0x0c, 0xa2,
- 0x61, 0x01, 0xcf, 0x87, 0xd4, 0xf2, 0x84, 0x31, 0x08, 0xb5, 0x5d, 0x03,
- 0xed, 0x13, 0xcd, 0xc7, 0xe6, 0x6d, 0xe3, 0xbd, 0xcc, 0x29, 0x17, 0xcd,
- 0xf5, 0xfa, 0xb9, 0x46, 0x74, 0xcc, 0x2e, 0x52, 0xa3, 0xf9, 0xe1, 0x17,
- 0x28, 0xfe, 0x8e, 0x8c, 0xd8, 0x8b, 0x81, 0x96, 0x3d, 0xdc, 0xdb, 0x38,
- 0xce, 0x8b, 0x30, 0x41, 0x1f, 0xa9, 0x88, 0x35, 0x89, 0x1e, 0xf2, 0xc1,
- 0xc1, 0x86, 0x6e, 0x76, 0xfc, 0x7c, 0xeb, 0x49, 0x3b, 0xdd, 0xfe, 0x55,
- 0xfb, 0xe4, 0x94, 0x58, 0x95, 0xae, 0x09, 0x7b, 0x84, 0x7f, 0xc3, 0xee,
- 0x1b, 0x27, 0x10, 0x40, 0xe1, 0x77, 0x27, 0x07, 0x88, 0x01, 0x72, 0x52,
- 0xb4, 0x86, 0xbc, 0xac, 0xb2, 0x53, 0x6e, 0xcf, 0x22, 0x0f, 0xb9, 0x20,
- 0x99, 0xee, 0xcb, 0xa2, 0x42, 0xf4, 0xad, 0x73, 0x90, 0xeb, 0xd5, 0x6b,
- 0x0f, 0x22, 0xe7, 0xd2, 0x4f, 0xa3, 0x3a, 0x37, 0x71, 0x43, 0xd5, 0x32,
- 0xaa, 0xe4, 0xc6, 0x66, 0xb2, 0x77, 0x0a, 0x77, 0xad, 0x5d, 0x6f, 0x2b,
- 0x5e, 0xc4, 0x49, 0xc6, 0xfb, 0xac, 0x43, 0x25, 0x91, 0x53, 0xd7, 0xee,
- 0x26, 0xe2, 0x34, 0x00, 0x49, 0xfd, 0xe1, 0x04, 0x6a, 0x44, 0x92, 0x2a,
- 0x3a, 0x2f, 0x1a, 0xc9, 0x45, 0xc8, 0xf2, 0x9b, 0x82, 0x7e, 0x23, 0x79,
- 0x31, 0x81, 0xac, 0xd2, 0xac, 0xb3, 0xca, 0xfd, 0xbc, 0x45, 0x55, 0x75,
- 0xb0, 0x6a, 0x91, 0x25, 0xac, 0x85, 0x41, 0x79, 0xaa, 0xc8, 0x42, 0xef,
- 0x68, 0x35, 0x9f, 0x7f, 0xf9, 0xf3, 0x29, 0xc6, 0x53, 0xd3, 0xa7, 0xeb,
- 0xea, 0x9a, 0x5e, 0x4e, 0x27, 0xe8, 0x7b, 0x71, 0xc0, 0x78, 0xf4, 0x52,
- 0x95, 0x3b, 0x35, 0x33, 0xbe, 0xdb, 0xee, 0xdb, 0xd2, 0xa0, 0x06, 0x18,
- 0x5a, 0x5b, 0x37, 0x10, 0x96, 0x6a, 0xd0, 0x09, 0x26, 0xd1, 0x31, 0xba,
- 0x2e, 0x0a, 0x81, 0x7b, 0xea, 0xba, 0x4c, 0x22, 0x52, 0xc2, 0x08, 0x0e,
- 0xb7, 0x43, 0x47, 0x32, 0x6d, 0x4e, 0x6c, 0xfa, 0x89, 0x57, 0xb9, 0xe4,
- 0x36, 0x4f, 0x6a, 0x34, 0x38, 0x6b, 0xaa, 0x20, 0x3c, 0x1f, 0xa3, 0x80,
- 0xc8, 0xe5, 0x11, 0x4a, 0xf5, 0x07, 0xf1, 0xc3, 0xea, 0x49, 0x98, 0x3c,
- 0x52, 0x32, 0xe2, 0x12, 0x25, 0x78, 0x99, 0x73, 0x11, 0x89, 0xed, 0x83,
- 0x4a, 0x5c, 0x43, 0x26, 0x7e, 0xde, 0x8c, 0x26, 0xd3, 0x4c, 0xb3, 0x9a,
- 0x24, 0xd7, 0x1f, 0xb7, 0x36, 0xba, 0x2e, 0x31, 0x1c, 0x48, 0xe1, 0xa5,
- 0xf0, 0x34, 0x56, 0xc6, 0x57, 0x40, 0xd7, 0xbc, 0x85, 0x9c, 0xc5, 0x3b,
- 0x12, 0x91, 0x2c, 0xd8, 0x9d, 0x06, 0x7f, 0x74, 0xd1, 0xbf, 0x23, 0x5b,
- 0x49, 0xba, 0x74, 0xb9, 0x4a, 0x43, 0x52, 0xb1, 0x03, 0x87, 0xe1, 0x4f,
- 0xa5, 0xfc, 0xc2, 0x3a, 0x79, 0xe9, 0xbe, 0xf0, 0x0f, 0x10, 0xba, 0x75,
- 0x96, 0xbd, 0x1d, 0x3b, 0x2f, 0x47, 0x92, 0x78, 0xdd, 0x76, 0x6e, 0x4b,
- 0x20, 0x3b, 0x62, 0xf3, 0xbd, 0xc3, 0x5a, 0x38, 0xff, 0x50, 0x2a, 0xba,
- 0x8a, 0x30, 0xf5, 0x72, 0x3a, 0x06, 0xa0, 0x55, 0xc5, 0xc8, 0xf9, 0x95,
- 0xa2, 0x80, 0x15, 0x99, 0x80, 0xa3, 0xf9, 0x1e, 0x1e, 0x98, 0x76, 0x14,
- 0x90, 0x94, 0x7d, 0x3d, 0x78, 0x9a, 0x72, 0x9a, 0xd8, 0xbe, 0x61, 0x89,
- 0x48, 0xe5, 0x89, 0xdf, 0x34, 0x4e, 0xe5, 0x37, 0xfb, 0xab, 0xe0, 0x4d,
- 0x2a, 0x82, 0xa1, 0x7d, 0xc0, 0x2f, 0x3d, 0xf1, 0xde, 0xa2, 0xe0, 0x71,
- 0x8c, 0x8d, 0xfe, 0x8a, 0xe5, 0xcc, 0x1e, 0xef, 0xb6, 0x27, 0xbb, 0xe7,
- 0x67, 0xaa, 0x94, 0x47, 0x6a, 0xa0, 0x23, 0xbe, 0xa9, 0x9c, 0x50, 0xb8,
- 0x29, 0x96, 0x30, 0xe3, 0x3e, 0xde, 0x10, 0x5f, 0x3c, 0xa6, 0xd1, 0xba,
- 0x14, 0x0a, 0xba, 0x3d, 0xa0, 0x7b, 0x3c, 0x48, 0x2f, 0x5a, 0xc5, 0x51,
- 0xd6, 0x8c, 0xc9, 0xe2, 0x83, 0xb1, 0x49, 0x0d, 0x92, 0x98, 0xea, 0x09,
- 0x2b, 0x2b, 0xed, 0x3a, 0x29, 0xb4, 0x5a, 0xd0, 0xc3, 0x0c, 0xca, 0xdf,
- 0x7c, 0x92, 0x94, 0x13, 0xe2, 0xfa, 0xcb, 0xf9, 0x24, 0x64, 0xcd, 0xa3,
- 0xb4, 0x93, 0xd6, 0xde, 0x59, 0x55, 0xcd, 0xc5, 0xd7, 0x61, 0x5b, 0xba,
- 0x6b, 0xc7, 0xa8, 0x68, 0x02, 0xf3, 0xa1, 0x4f, 0x57, 0x13, 0x4c, 0x22,
- 0xed, 0x3a, 0xcb, 0x1c, 0xef, 0x12, 0x73, 0xc7, 0x60, 0xa2, 0xb1, 0xbb,
- 0x40, 0x18, 0xe7, 0x0a, 0x27, 0x45, 0x87, 0x7e, 0x86, 0x3c, 0x58, 0x82,
- 0xde, 0x8c, 0xb7, 0x77, 0x6b, 0xb8, 0xde, 0xe9, 0xd9, 0xf9, 0xf1, 0xe9,
- 0xbb, 0x61, 0xf4, 0x9f, 0xbd, 0xe5, 0x59, 0xa1, 0xb1, 0x35, 0xbd, 0xff,
- 0x04, 0x23, 0xf8, 0xbb, 0x48, 0xc7, 0x5b, 0x8a, 0x2b, 0x1a, 0x91, 0xc5,
- 0x06, 0x0e, 0x41, 0xb3, 0x49, 0xa6, 0xfb, 0x5c, 0xb4, 0xcf, 0xed, 0x71,
- 0xba, 0x3c, 0x4f, 0x8e, 0xc5, 0x38, 0x02, 0xfd, 0x0d, 0x2e, 0x3a, 0x7d,
- 0x51, 0xda, 0xea, 0x08, 0x93, 0xb4, 0x3a, 0x01, 0x79, 0x5e, 0x6d, 0xdc,
- 0x0c, 0x35, 0x2e, 0x9b, 0x3e, 0x2a, 0xba, 0x75, 0xad, 0x81, 0xdc, 0x1a,
- 0x3e, 0x7c, 0x15, 0xca, 0x15, 0xd4, 0xa8, 0xcf, 0x91, 0x17, 0x6c, 0x4c,
- 0x42, 0xfc, 0x53, 0xab, 0x7c, 0x79, 0xa9, 0xaa, 0x1d, 0x6a, 0x60, 0xf6,
- 0xf5, 0xd1, 0x39, 0x7a, 0x76, 0x09, 0x7c, 0xc8, 0xce, 0x8f, 0x3c, 0xe4,
- 0xa2, 0xfa, 0x26, 0x46, 0x3d, 0x57, 0xbc, 0x21, 0x3c, 0x71, 0x60, 0xa6,
- 0x4d, 0x92, 0x3c, 0x08, 0xb5, 0x00, 0xa6, 0xd3, 0x21, 0x50, 0xa3, 0xb0,
- 0x5d, 0x05, 0xd5, 0xcd, 0x69, 0xd8, 0x55, 0xc1, 0xf1, 0xcf, 0x3e, 0x9c,
- 0x8b, 0x73, 0x1b, 0xa3, 0xc9, 0xe7, 0x47, 0x7d, 0xaf, 0x81, 0x19, 0xf5,
- 0x40, 0xa3, 0x6a, 0xe8, 0x3a, 0x1d, 0x5d, 0xe7, 0xc5, 0xa4, 0xb8, 0xc2,
- 0x2d, 0x21, 0x35, 0xf2, 0xdb, 0xf4, 0xe2, 0xd5, 0xc1, 0x37, 0xa8, 0xd8,
- 0xa1, 0xa3, 0xfa, 0xec, 0xfd, 0xe9, 0xd9, 0xeb, 0xe3, 0x77, 0xaf, 0xfa,
- 0xd1, 0xe1, 0xe9, 0xd9, 0xdf, 0xfa, 0xd1, 0xdb, 0xd3, 0x6f, 0x8e, 0x3e,
- 0xf3, 0x12, 0x99, 0xa8, 0x79, 0xa2, 0xc7, 0xa8, 0xef, 0xd0, 0x93, 0x88,
- 0xf6, 0x97, 0xe3, 0xd6, 0xe2, 0x3e, 0xc2, 0xee, 0x75, 0x7e, 0x60, 0xb2,
- 0x4f, 0xe8, 0x88, 0x03, 0xe9, 0x40, 0x99, 0x79, 0x73, 0x74, 0xf0, 0xaa,
- 0xef, 0xf5, 0xc1, 0x1d, 0x9e, 0xd3, 0xc7, 0x70, 0x7d, 0x66, 0xd1, 0xd4,
- 0xc1, 0x94, 0xcd, 0x5c, 0x52, 0xd5, 0x38, 0x2b, 0x81, 0x05, 0x05, 0xf0,
- 0x2b, 0x01, 0x15, 0x8e, 0xbb, 0x92, 0x32, 0xa5, 0xbf, 0xf4, 0x8c, 0x09,
- 0xbc, 0xb0, 0xb0, 0x17, 0xb5, 0x66, 0xd7, 0xd0, 0x12, 0xc8, 0x7c, 0x2a,
- 0xdc, 0x54, 0xb0, 0x00, 0xb7, 0xc2, 0xa8, 0x03, 0xb7, 0xbd, 0xdf, 0x40,
- 0x4b, 0x24, 0x31, 0xc8, 0xf1, 0x8a, 0xe4, 0x5e, 0x90, 0x31, 0x52, 0xbc,
- 0x5e, 0x2b, 0xb2, 0xab, 0x2e, 0x6d, 0x03, 0xc2, 0xc5, 0x36, 0x16, 0xdd,
- 0x34, 0x89, 0x82, 0xe7, 0x23, 0xf1, 0x94, 0x40, 0x7d, 0x21, 0x05, 0x88,
- 0x00, 0xfa, 0xb1, 0xe0, 0x2f, 0x04, 0x7c, 0x1d, 0xf3, 0x4b, 0x60, 0xcb,
- 0x94, 0x33, 0xc8, 0xb5, 0xdb, 0xb3, 0xc6, 0x04, 0xe3, 0x63, 0xf5, 0x80,
- 0x2d, 0xd2, 0x74, 0xf5, 0xc4, 0xa8, 0xdb, 0x93, 0x11, 0xfb, 0xd5, 0x23,
- 0xdc, 0x94, 0x12, 0xae, 0xfb, 0x11, 0xd7, 0x19, 0xb0, 0xf8, 0x74, 0x8b,
- 0x4d, 0x3f, 0x55, 0xd6, 0x50, 0x5d, 0xa2, 0x10, 0xf0, 0xa8, 0xe7, 0x29,
- 0x06, 0x4d, 0xc7, 0xbb, 0x6e, 0xe9, 0x49, 0x10, 0x25, 0xb9, 0x84, 0x51,
- 0x30, 0x85, 0x21, 0x66, 0x9f, 0x8d, 0x5b, 0x2e, 0xd5, 0xee, 0x9d, 0x2c,
- 0x73, 0xf0, 0x42, 0xee, 0xb4, 0xce, 0x64, 0x34, 0x82, 0xdd, 0x97, 0xfb,
- 0xc3, 0x9c, 0xf2, 0xed, 0x8d, 0x3b, 0x1b, 0x9a, 0x43, 0xb5, 0xae, 0x8a,
- 0x62, 0x4e, 0xb9, 0x63, 0x90, 0x09, 0x8f, 0x74, 0xab, 0xaf, 0x3b, 0x04,
- 0xa3, 0x1b, 0xea, 0x31, 0x20, 0x6b, 0x46, 0x44, 0x9d, 0x1c, 0xc3, 0x71,
- 0x08, 0x60, 0x32, 0x8f, 0x0b, 0x9c, 0x11, 0x27, 0xdb, 0x91, 0x82, 0x4b,
- 0xd4, 0x87, 0xb1, 0xfc, 0x0f, 0x9f, 0x9d, 0x9e, 0x6d, 0x07, 0xbf, 0x8c,
- 0xbf, 0x78, 0xe8, 0xd3, 0xde, 0x9e, 0xbd, 0x3f, 0x3a, 0x7f, 0xef, 0x7f,
- 0xe3, 0xf8, 0xed, 0x41, 0x78, 0x75, 0xf8, 0x8b, 0xae, 0x6f, 0x90, 0x24,
- 0xc0, 0xaf, 0xf8, 0x35, 0x51, 0x0e, 0x4c, 0xfc, 0x46, 0x20, 0x79, 0x6c,
- 0x75, 0xf8, 0xb6, 0x83, 0x9a, 0xf8, 0x8b, 0x05, 0x6b, 0x7a, 0x73, 0x74,
- 0x72, 0xe6, 0xaf, 0xe9, 0x9b, 0xf7, 0xaf, 0xff, 0xd6, 0x4c, 0x59, 0xdb,
- 0xde, 0x09, 0x7c, 0xf5, 0x5f, 0xec, 0x7f, 0xff, 0x8e, 0xf3, 0x84, 0xce,
- 0x8f, 0x96, 0x70, 0xb5, 0x7f, 0x17, 0xbd, 0x3b, 0x81, 0x5d, 0x5b, 0xaa,
- 0x62, 0xa9, 0xa9, 0x4a, 0x34, 0xf5, 0xbf, 0xaa, 0x98, 0x80, 0xee, 0xb6,
- 0xff, 0xfd, 0x9f, 0x08, 0x0f, 0x84, 0x0a, 0x86, 0xf7, 0xe0, 0x66, 0x2a,
- 0xbf, 0xef, 0xe3, 0x7f, 0x7f, 0x1c, 0x0c, 0x06, 0x5f, 0xf8, 0x1d, 0x80,
- 0xc9, 0x3b, 0x69, 0x76, 0x04, 0x1f, 0xc4, 0xd4, 0xf5, 0x96, 0x53, 0x88,
- 0x0a, 0xc5, 0xa9, 0x30, 0x1e, 0x63, 0xaf, 0xb3, 0x04, 0x1b, 0x74, 0x47,
- 0x1f, 0xaa, 0xa0, 0x06, 0x80, 0x54, 0xb7, 0xe0, 0x06, 0x46, 0xe1, 0x96,
- 0x46, 0x11, 0x2c, 0x3f, 0x56, 0xab, 0x35, 0xc1, 0x23, 0xb2, 0x4a, 0x41,
- 0x32, 0xf6, 0x80, 0x6f, 0x68, 0x2a, 0xf4, 0xd9, 0x12, 0xc3, 0x31, 0x6c,
- 0x05, 0xdb, 0xcb, 0x3f, 0xd7, 0xcb, 0x4c, 0x96, 0x3e, 0x36, 0xd3, 0x0f,
- 0x3a, 0xd4, 0x68, 0x5b, 0xc9, 0x39, 0x4f, 0xc9, 0x52, 0x14, 0x37, 0x4a,
- 0xe8, 0x9e, 0x43, 0x66, 0x5b, 0x4f, 0xeb, 0xd1, 0x3a, 0xae, 0xb3, 0x6a,
- 0x68, 0xc2, 0x46, 0x95, 0xf5, 0xdc, 0xa7, 0x6e, 0x9d, 0x0c, 0x41, 0xcf,
- 0x70, 0x7a, 0xa4, 0x53, 0x5f, 0x6a, 0xd1, 0x6f, 0x1c, 0x1b, 0x8e, 0x15,
- 0x16, 0x5f, 0xbc, 0xba, 0x58, 0xcd, 0x23, 0x17, 0x74, 0x43, 0x3b, 0xb8,
- 0x7b, 0xf2, 0xd9, 0x41, 0x66, 0xf0, 0x0d, 0x42, 0xba, 0x2e, 0x94, 0xd9,
- 0x31, 0x15, 0x8f, 0x3a, 0xed, 0x5e, 0x36, 0xae, 0x28, 0xf5, 0x4d, 0xbb,
- 0x9b, 0xae, 0xc5, 0xff, 0x01, 0xa8, 0x71, 0xe9, 0x9a, 0xab, 0xee, 0x1d,
- 0x5c, 0x69, 0xb0, 0x6a, 0xc9, 0xc5, 0x67, 0x5a, 0xf9, 0xcf, 0x15, 0x34,
- 0x08, 0xe8, 0xf5, 0x20, 0x2a, 0x94, 0x72, 0x2d, 0x9a, 0xbc, 0x81, 0x3e,
- 0xf5, 0x24, 0xa4, 0x95, 0x28, 0x86, 0xf9, 0x4c, 0x16, 0xb3, 0xc3, 0x3c,
- 0xb4, 0x84, 0x41, 0xf4, 0x6d, 0x36, 0x19, 0x8f, 0x92, 0x92, 0xb2, 0xb6,
- 0xfd, 0xfb, 0x5e, 0xd8, 0x84, 0x8f, 0x7c, 0x55, 0xd0, 0x57, 0xed, 0xc9,
- 0x91, 0xb4, 0x9a, 0x0e, 0xae, 0x0f, 0x94, 0x96, 0x9b, 0xcd, 0xc0, 0xec,
- 0xa2, 0x2e, 0x9c, 0x05, 0x66, 0x1f, 0xa5, 0x31, 0xde, 0xbd, 0xcd, 0xf6,
- 0xf0, 0xcd, 0x7d, 0xd5, 0xb0, 0x63, 0xbc, 0xe3, 0x87, 0x4e, 0xb3, 0xd9,
- 0xcd, 0x0e, 0x79, 0x54, 0x9f, 0xf5, 0xf9, 0x5f, 0xcf, 0x6c, 0x2d, 0xb1,
- 0x63, 0x47, 0xb3, 0x3d, 0xc7, 0xd6, 0xcf, 0xf1, 0x99, 0xe2, 0xba, 0x0c,
- 0xfc, 0x8d, 0xe2, 0x82, 0x2f, 0x05, 0x69, 0x10, 0x1e, 0x33, 0x65, 0x6e,
- 0xde, 0x09, 0xe6, 0x84, 0x4e, 0x4e, 0x86, 0xf6, 0x9c, 0x8e, 0xb6, 0x4a,
- 0x6f, 0xa5, 0x32, 0x1e, 0x6f, 0x7c, 0x16, 0x6d, 0xb5, 0xd5, 0xcd, 0x68,
- 0x9a, 0xe5, 0xf3, 0x3a, 0x45, 0x0d, 0x9c, 0x4a, 0x52, 0xc5, 0x1e, 0xe3,
- 0x66, 0xd8, 0x01, 0xca, 0x32, 0x9a, 0x80, 0x38, 0x0d, 0xd3, 0x5c, 0x7c,
- 0x73, 0x93, 0x02, 0xe6, 0x5a, 0xce, 0x73, 0xca, 0x80, 0xc4, 0x4c, 0xab,
- 0xc9, 0x24, 0xb5, 0xe5, 0x86, 0x95, 0xce, 0x7e, 0x52, 0xf8, 0x2e, 0x51,
- 0xba, 0x7d, 0x81, 0x3f, 0x8e, 0x73, 0x86, 0xd0, 0x40, 0xac, 0x91, 0x4a,
- 0xea, 0xd5, 0xfc, 0x5b, 0xc2, 0x16, 0xdc, 0xd1, 0x92, 0x0b, 0x2f, 0x23,
- 0x99, 0x19, 0x86, 0x0f, 0x2d, 0xb3, 0x09, 0x79, 0xad, 0x8c, 0x44, 0xba,
- 0xa5, 0x93, 0x5f, 0x20, 0x0e, 0x02, 0xd5, 0x1d, 0x0a, 0x21, 0xd0, 0xef,
- 0xe4, 0x47, 0xfc, 0x66, 0x54, 0xab, 0xeb, 0x09, 0x7d, 0xc9, 0x74, 0x11,
- 0xe4, 0x37, 0x60, 0x23, 0xdd, 0x29, 0xd8, 0x54, 0x65, 0x27, 0x5c, 0x31,
- 0xdc, 0x81, 0xdf, 0x5f, 0x94, 0x08, 0x20, 0x5a, 0x57, 0x3f, 0x12, 0xf4,
- 0x10, 0x21, 0x0f, 0x79, 0xb2, 0x19, 0x8d, 0xc4, 0x06, 0x00, 0x6d, 0xeb,
- 0x43, 0xad, 0x2f, 0x99, 0xe2, 0x33, 0xfb, 0x39, 0xc4, 0x57, 0xa7, 0xa4,
- 0x0c, 0xa4, 0xca, 0xe2, 0x0f, 0xbd, 0x5c, 0xf0, 0xa1, 0x4b, 0x42, 0x03,
- 0x47, 0x12, 0x9a, 0x16, 0x15, 0xb7, 0x7a, 0x6c, 0xcd, 0xa8, 0x82, 0xcd,
- 0xb9, 0xf3, 0xc0, 0x38, 0x94, 0xdd, 0x05, 0xdc, 0x2a, 0xc5, 0x8b, 0xf8,
- 0x7a, 0x6b, 0x88, 0xe7, 0xbb, 0x83, 0x8d, 0xc7, 0x57, 0xdc, 0x59, 0xd7,
- 0x1b, 0x77, 0x1e, 0xe2, 0x9f, 0xd0, 0x16, 0x4b, 0x22, 0x79, 0xd1, 0x25,
- 0x57, 0x96, 0xf7, 0x0a, 0x30, 0x17, 0x39, 0x37, 0xff, 0xde, 0xce, 0xce,
- 0xf6, 0xde, 0xe6, 0x16, 0xee, 0xd2, 0x06, 0x58, 0xa6, 0x4b, 0x36, 0xe2,
- 0x13, 0x84, 0x00, 0x9c, 0x38, 0x81, 0x45, 0xc0, 0x3d, 0x16, 0x57, 0x37,
- 0xa3, 0xa6, 0x92, 0x00, 0x5b, 0x87, 0x5e, 0xbb, 0x98, 0x82, 0xb0, 0x6d,
- 0x7f, 0x25, 0xa6, 0xbc, 0x52, 0x7b, 0x6f, 0x5c, 0x34, 0x37, 0xce, 0x6e,
- 0x90, 0x4a, 0xcf, 0x47, 0x5d, 0x80, 0xf2, 0x81, 0xf2, 0x85, 0xcd, 0x08,
- 0x1e, 0x76, 0xf0, 0x20, 0xb8, 0x2e, 0x65, 0xb7, 0x54, 0x93, 0x74, 0x7c,
- 0x05, 0x16, 0xd5, 0x74, 0x9a, 0x96, 0x3d, 0x3c, 0x99, 0xf4, 0x32, 0x75,
- 0x23, 0x7f, 0xc5, 0x06, 0xa9, 0xba, 0x44, 0xdb, 0x87, 0x78, 0xa6, 0x7d,
- 0xe5, 0x55, 0xbe, 0xac, 0xa6, 0x57, 0x04, 0x08, 0x07, 0xf4, 0x2c, 0x47,
- 0x6b, 0x7d, 0x06, 0x64, 0x32, 0xb9, 0xcd, 0xd6, 0xb2, 0xc0, 0xfc, 0xe8,
- 0x90, 0xed, 0x47, 0x31, 0x5e, 0x03, 0xa9, 0x13, 0xc4, 0xaa, 0x1f, 0xcf,
- 0x67, 0x13, 0x46, 0xd6, 0xe7, 0x0c, 0x6a, 0x3b, 0xc5, 0x50, 0x6f, 0x0f,
- 0x6a, 0x99, 0x4d, 0x51, 0x5d, 0xee, 0xa2, 0x45, 0x09, 0x94, 0x14, 0x25,
- 0x22, 0x23, 0x6e, 0x85, 0x94, 0x81, 0x29, 0x7e, 0xef, 0x22, 0xad, 0xa9,
- 0x46, 0x1b, 0x6c, 0x7a, 0xf4, 0xde, 0x7a, 0xa9, 0x4b, 0xe3, 0x89, 0x9a,
- 0x6b, 0x18, 0x2b, 0xce, 0x60, 0xb2, 0x78, 0x34, 0x2f, 0x26, 0x88, 0x51,
- 0x88, 0x48, 0x41, 0x58, 0x48, 0x29, 0xed, 0xda, 0x07, 0xd1, 0xd9, 0x24,
- 0xc5, 0xee, 0xe4, 0xa6, 0x0d, 0x97, 0x2f, 0x62, 0xd8, 0x36, 0xa3, 0xe2,
- 0xd4, 0xee, 0xb0, 0xf2, 0x6b, 0x0c, 0x7f, 0x68, 0x0c, 0x78, 0x3a, 0x03,
- 0x05, 0x48, 0x12, 0x39, 0x3d, 0x9c, 0x03, 0xda, 0xb2, 0x88, 0xea, 0x7a,
- 0xfd, 0x00, 0xf6, 0x24, 0xf9, 0x74, 0x1f, 0x39, 0x52, 0x99, 0x1a, 0xa2,
- 0x4f, 0x30, 0x42, 0x81, 0xae, 0x41, 0x86, 0x2f, 0xa4, 0x90, 0xcb, 0x35,
- 0x7b, 0xe0, 0xee, 0x39, 0x8e, 0x49, 0x59, 0x7c, 0xe9, 0x38, 0xe4, 0x19,
- 0xa9, 0x1d, 0xa0, 0x28, 0x33, 0x40, 0x98, 0xe0, 0x94, 0x4e, 0xad, 0x24,
- 0xc7, 0x15, 0xf9, 0x25, 0xed, 0x48, 0x8a, 0xbe, 0xe9, 0x50, 0x60, 0xd8,
- 0x8f, 0xf4, 0x41, 0xad, 0x65, 0x90, 0xd0, 0x1e, 0xf9, 0x0e, 0x15, 0xb0,
- 0x30, 0xb4, 0x58, 0xcd, 0x02, 0xb7, 0xc5, 0xf9, 0x94, 0x33, 0x89, 0x52,
- 0x48, 0x72, 0x1e, 0x50, 0x15, 0xc5, 0x0c, 0x29, 0x19, 0x51, 0x4a, 0xf0,
- 0xa2, 0x37, 0xc5, 0x2d, 0x2a, 0x67, 0xa1, 0xc0, 0x95, 0x22, 0x62, 0x95,
- 0xf3, 0x54, 0xaa, 0x7f, 0x12, 0x77, 0x9d, 0x14, 0x6e, 0xfc, 0xdf, 0x70,
- 0x69, 0xcc, 0xa8, 0x98, 0xe5, 0x0b, 0x71, 0x79, 0x87, 0x7a, 0x6f, 0xa0,
- 0x23, 0x86, 0xf1, 0x20, 0x40, 0x49, 0x00, 0xdd, 0x88, 0xaa, 0x88, 0xe0,
- 0x0e, 0xa5, 0x3c, 0xca, 0x2b, 0x6a, 0x43, 0xe9, 0xf8, 0x81, 0x70, 0x31,
- 0x68, 0x92, 0x23, 0x05, 0x11, 0x6e, 0xae, 0x1c, 0x87, 0x01, 0x4a, 0x08,
- 0xfb, 0xce, 0xcc, 0x88, 0x0e, 0x60, 0x31, 0xbd, 0xd0, 0x72, 0x98, 0x36,
- 0xe8, 0x66, 0x5f, 0xd0, 0xe6, 0x7c, 0x15, 0x15, 0xcf, 0x29, 0x1f, 0xb4,
- 0xb4, 0x7d, 0xcc, 0x1e, 0x55, 0x0b, 0x4f, 0x00, 0x9a, 0x94, 0x4a, 0x42,
- 0x02, 0x4b, 0x3d, 0x6f, 0x8e, 0x99, 0x2f, 0x01, 0x00, 0xff, 0x70, 0xd1,
- 0xa7, 0x2a, 0xf3, 0x12, 0x8d, 0x62, 0x8a, 0xd7, 0xcd, 0x5e, 0xe2, 0x36,
- 0x5a, 0x58, 0x83, 0x01, 0x9d, 0x0f, 0xe4, 0x1f, 0xef, 0xfe, 0x9e, 0x70,
- 0xe5, 0x7b, 0x62, 0xeb, 0xde, 0x61, 0x35, 0x30, 0xfe, 0xce, 0xc6, 0x0e,
- 0xaa, 0x3b, 0xf0, 0xe2, 0x9c, 0x32, 0x5f, 0xb4, 0xc6, 0x82, 0x92, 0xb8,
- 0x29, 0xc2, 0x08, 0xe3, 0x4e, 0xee, 0x3d, 0xed, 0x82, 0x68, 0xc2, 0x6e,
- 0xca, 0x5c, 0x55, 0x25, 0xe1, 0x0a, 0x4d, 0x9f, 0x19, 0x70, 0x34, 0x45,
- 0x44, 0xaf, 0x15, 0xcc, 0x81, 0x86, 0x50, 0x86, 0x60, 0xa5, 0x4a, 0x77,
- 0x4c, 0xb7, 0x08, 0x90, 0xab, 0x52, 0x7a, 0x8d, 0xa5, 0x49, 0x09, 0x52,
- 0xc2, 0xbb, 0xea, 0x32, 0x8a, 0xed, 0xb2, 0x47, 0x8d, 0x2f, 0x91, 0xbe,
- 0x1c, 0xd2, 0xc4, 0x71, 0xa3, 0xa9, 0xe3, 0x73, 0x8a, 0x37, 0xe7, 0xce,
- 0x9d, 0xf5, 0xbf, 0x78, 0xed, 0x61, 0xf0, 0xbb, 0x2a, 0x82, 0x81, 0x60,
- 0xad, 0xb0, 0x67, 0x61, 0x67, 0xcd, 0xa5, 0xcd, 0x66, 0xc6, 0xfc, 0x6a,
- 0x28, 0xa4, 0xe8, 0xac, 0xc0, 0x9d, 0x66, 0xb4, 0x8a, 0xf3, 0xc0, 0x5d,
- 0xd8, 0xbd, 0xbb, 0x5b, 0x63, 0xe2, 0x32, 0xe7, 0x8a, 0x30, 0x89, 0x2f,
- 0x7d, 0x9d, 0x1b, 0x4f, 0xfd, 0xf2, 0x17, 0x3b, 0xce, 0x78, 0x37, 0x70,
- 0xdd, 0x2e, 0x79, 0xa3, 0xf3, 0xb5, 0xea, 0x7a, 0xf9, 0x9f, 0xb7, 0xb0,
- 0xca, 0xf9, 0x03, 0x78, 0xf3, 0x83, 0xfe, 0x83, 0x1c, 0xd0, 0xf6, 0x82,
- 0xe4, 0xad, 0xa0, 0xad, 0xd8, 0xcf, 0x78, 0x25, 0xf2, 0x8f, 0x11, 0xe3,
- 0x56, 0x2d, 0xe2, 0x23, 0x44, 0x2f, 0x7a, 0x7f, 0xf4, 0xfa, 0xc3, 0xf0,
- 0xe8, 0x15, 0xe1, 0xc3, 0x26, 0x7e, 0x6e, 0x5a, 0x2e, 0x0c, 0xc0, 0x27,
- 0x0f, 0x06, 0x2d, 0x58, 0x71, 0x34, 0xb3, 0x5d, 0xa4, 0x2f, 0x84, 0xee,
- 0xcc, 0x2e, 0xed, 0xe1, 0x31, 0x44, 0x76, 0x57, 0x6e, 0x08, 0xff, 0x04,
- 0x1a, 0x8b, 0xc2, 0xd4, 0xde, 0xae, 0x85, 0xb0, 0xd6, 0xfc, 0xf0, 0x38,
- 0x9d, 0x80, 0x18, 0xdb, 0xe7, 0xba, 0x18, 0xaf, 0x35, 0xd3, 0x5b, 0x63,
- 0x94, 0x81, 0xd6, 0x93, 0xce, 0x04, 0x0b, 0x6d, 0x0a, 0xe2, 0x80, 0x33,
- 0x3c, 0xd0, 0x96, 0xd2, 0x7b, 0x88, 0xd2, 0x77, 0xf4, 0x66, 0xe5, 0xc4,
- 0xd6, 0x20, 0xf9, 0x51, 0x32, 0x91, 0x21, 0x21, 0x37, 0x92, 0x5a, 0x3d,
- 0x76, 0x6f, 0x78, 0x6b, 0x56, 0xb3, 0xba, 0x95, 0x86, 0xe4, 0x41, 0x5c,
- 0x90, 0x40, 0xc5, 0xd6, 0x03, 0xa8, 0x85, 0xd0, 0x64, 0x92, 0xc9, 0x55,
- 0x01, 0x17, 0xd7, 0xf5, 0xd4, 0xc0, 0xb7, 0x31, 0x70, 0x6f, 0x85, 0x96,
- 0x5b, 0x5b, 0x9f, 0x0b, 0xda, 0x6c, 0x94, 0xef, 0x9d, 0x32, 0xce, 0x26,
- 0xda, 0xb1, 0x56, 0x40, 0x11, 0xc1, 0xd9, 0x09, 0x33, 0x14, 0x64, 0x4c,
- 0xa2, 0x07, 0x93, 0xd0, 0x33, 0xb2, 0x7e, 0x4e, 0xcb, 0xa2, 0x1d, 0x22,
- 0x56, 0xe7, 0xb7, 0x5e, 0x06, 0xee, 0xdc, 0x7f, 0xf7, 0xac, 0x7b, 0x87,
- 0x1f, 0x76, 0x7f, 0x09, 0x33, 0xfa, 0x4c, 0x36, 0x4d, 0xee, 0x38, 0x8e,
- 0xdc, 0xc5, 0x67, 0x9c, 0xd4, 0xa2, 0xe6, 0x79, 0xc9, 0xce, 0x0f, 0x72,
- 0x35, 0x58, 0xec, 0x1b, 0x2e, 0x81, 0x32, 0x2c, 0x24, 0xea, 0x1c, 0x85,
- 0xc4, 0xfc, 0x14, 0x54, 0xbc, 0xbd, 0x24, 0x2e, 0x71, 0x91, 0x72, 0x2e,
- 0x45, 0x82, 0xf4, 0xc3, 0xf8, 0xca, 0x2a, 0x56, 0x20, 0xcb, 0xd4, 0xd6,
- 0xf0, 0xc7, 0x64, 0x96, 0x4b, 0xa6, 0x02, 0x7d, 0x3f, 0x00, 0xd4, 0xc3,
- 0x6a, 0x08, 0xb0, 0xb8, 0xc6, 0x9a, 0x38, 0x71, 0x66, 0x92, 0x4d, 0xb3,
- 0x9a, 0x60, 0xaa, 0xb2, 0x91, 0x5e, 0xd7, 0x97, 0x36, 0xe4, 0xcf, 0x9c,
- 0xde, 0x76, 0x6d, 0xa1, 0xae, 0xa2, 0x63, 0x09, 0x04, 0x08, 0x8c, 0xd2,
- 0x6f, 0xb6, 0x9f, 0x96, 0x9d, 0x24, 0xe4, 0x39, 0x82, 0xb2, 0xb9, 0xa6,
- 0xdc, 0x2a, 0xbf, 0xf6, 0x5f, 0x2a, 0x9a, 0x28, 0x0a, 0x84, 0x2a, 0x09,
- 0x61, 0x1b, 0xe1, 0x92, 0x58, 0x9b, 0xcb, 0xd5, 0x4b, 0x21, 0x99, 0x3e,
- 0x8c, 0xfb, 0x01, 0xe3, 0x64, 0x05, 0x7a, 0x13, 0xcf, 0x0b, 0x0f, 0x35,
- 0x6b, 0x9a, 0x71, 0x75, 0x8c, 0x60, 0x91, 0xcb, 0x8c, 0x56, 0x30, 0xaf,
- 0xe3, 0x2e, 0x9b, 0xce, 0xa7, 0x34, 0x44, 0x9f, 0xf1, 0xdd, 0xa6, 0xe8,
- 0xc9, 0xd1, 0xed, 0xa5, 0x73, 0xd1, 0x9d, 0xca, 0x84, 0x02, 0x9c, 0x0e,
- 0x45, 0xcd, 0xfa, 0x9a, 0x3a, 0x15, 0xe4, 0x84, 0xfe, 0x7b, 0xf0, 0xbf,
- 0x61, 0xd5, 0xed, 0x0d, 0x73, 0x06, 0x36, 0x37, 0x7e, 0x95, 0x63, 0x10,
- 0xed, 0xe7, 0xf3, 0xe9, 0x17, 0xfe, 0x22, 0x7d, 0xd1, 0x47, 0xec, 0x2f,
- 0x95, 0x6e, 0x36, 0x90, 0x24, 0x5c, 0x8d, 0x0a, 0xb9, 0x60, 0xe5, 0x76,
- 0x4b, 0xd8, 0x3e, 0x57, 0x15, 0x38, 0x6a, 0x13, 0x91, 0xd2, 0xe6, 0xe1,
- 0xb0, 0x8f, 0x40, 0x8e, 0xd7, 0x15, 0xdb, 0x8a, 0xf3, 0xd9, 0xc0, 0x5b,
- 0x93, 0xca, 0x39, 0xe3, 0xff, 0x85, 0xcf, 0x6f, 0x48, 0x01, 0x8b, 0x84,
- 0xb7, 0x30, 0x75, 0x49, 0xf6, 0xd0, 0x04, 0xb2, 0xb3, 0x2a, 0x94, 0xce,
- 0x25, 0x62, 0x8f, 0x64, 0xb1, 0x77, 0x13, 0xb3, 0x27, 0x98, 0x71, 0xfb,
- 0xf7, 0x90, 0x28, 0xcc, 0x1e, 0x7d, 0x85, 0xfa, 0x02, 0xe5, 0xc7, 0x77,
- 0x63, 0x39, 0xba, 0x72, 0x61, 0x31, 0x83, 0x77, 0x36, 0x5e, 0xf4, 0xa3,
- 0x9d, 0xad, 0x97, 0x7d, 0x2c, 0xd9, 0xc4, 0xff, 0x6c, 0xe1, 0x7f, 0xb6,
- 0xf1, 0x91, 0x5d, 0x50, 0x69, 0x17, 0xa8, 0x72, 0xe1, 0x1e, 0x7a, 0x82,
- 0x4a, 0x85, 0x77, 0xc0, 0x45, 0x31, 0x77, 0xb4, 0xba, 0xc4, 0x21, 0xb8,
- 0x26, 0x7d, 0xb1, 0x9c, 0xba, 0x4d, 0x32, 0x62, 0x49, 0x2f, 0xd7, 0x9e,
- 0xea, 0x4f, 0x45, 0x95, 0xb6, 0xc9, 0xb4, 0xf0, 0x67, 0x7d, 0x0d, 0x4c,
- 0x85, 0xc4, 0x56, 0x5a, 0xea, 0x80, 0x40, 0xe2, 0x39, 0xe7, 0xca, 0x79,
- 0x04, 0xc5, 0xaf, 0x70, 0xd0, 0x02, 0x59, 0x16, 0x6e, 0xe5, 0x6c, 0xc2,
- 0x56, 0x20, 0x0a, 0x97, 0x0a, 0x19, 0x97, 0xfd, 0x96, 0x95, 0xdb, 0x43,
- 0xdb, 0xa0, 0x97, 0x07, 0xf6, 0x67, 0x42, 0xbe, 0x07, 0x05, 0x3e, 0xa5,
- 0x8a, 0x48, 0x27, 0x97, 0x93, 0xcf, 0x29, 0x3b, 0xc9, 0x25, 0x6f, 0xa6,
- 0x71, 0x6f, 0x84, 0xda, 0xff, 0x98, 0x64, 0x5d, 0x11, 0x43, 0xe9, 0x1d,
- 0xd0, 0x9e, 0x3b, 0x02, 0x44, 0xe6, 0xfe, 0xb3, 0xf7, 0xf6, 0xc0, 0x69,
- 0x5b, 0x15, 0xa8, 0xbd, 0x69, 0x1c, 0x51, 0xd8, 0x06, 0x96, 0x56, 0x24,
- 0xb8, 0x8b, 0x5a, 0x84, 0x02, 0x83, 0x13, 0x4b, 0x52, 0x71, 0x97, 0x70,
- 0x19, 0x92, 0x51, 0x47, 0xfb, 0xfa, 0x7c, 0xf0, 0xec, 0x99, 0x41, 0x43,
- 0xe4, 0xca, 0xd5, 0x62, 0x6a, 0xca, 0x54, 0x59, 0x98, 0x93, 0x63, 0x29,
- 0x3e, 0x40, 0x27, 0xf1, 0x5e, 0x28, 0x10, 0xaf, 0x3a, 0xbd, 0x54, 0x26,
- 0xc1, 0x1d, 0x40, 0xe2, 0x88, 0x72, 0x89, 0x52, 0x6d, 0x9d, 0x8e, 0x4d,
- 0xd5, 0xf9, 0x3c, 0x9b, 0xe4, 0x20, 0x3a, 0x58, 0xe9, 0x5d, 0xed, 0x77,
- 0x87, 0x0f, 0x68, 0x94, 0xbf, 0x87, 0x40, 0x8c, 0x9e, 0x3f, 0x45, 0xf6,
- 0xd9, 0x2b, 0xc1, 0x11, 0x82, 0x55, 0xc2, 0x2d, 0xc8, 0xae, 0x7f, 0xce,
- 0xc6, 0xd1, 0xbe, 0x36, 0x8c, 0x0c, 0x23, 0x02, 0xe3, 0x51, 0x83, 0x27,
- 0x81, 0x27, 0x2a, 0x36, 0xcb, 0xf5, 0xf1, 0x68, 0x55, 0x46, 0x58, 0xeb,
- 0x83, 0xd1, 0x4d, 0x39, 0x01, 0xc3, 0x83, 0xe1, 0x49, 0x74, 0x76, 0x72,
- 0x70, 0xfc, 0x0e, 0xde, 0x89, 0xfd, 0xb0, 0x94, 0x69, 0xee, 0x41, 0xb8,
- 0xce, 0x9e, 0x3d, 0xd1, 0x6a, 0x00, 0xd2, 0xfc, 0x90, 0x8f, 0xbc, 0x3f,
- 0x26, 0x95, 0xa1, 0x81, 0x57, 0x11, 0xcf, 0xb5, 0xc2, 0xa7, 0xab, 0xb6,
- 0xc5, 0xee, 0x58, 0x03, 0x33, 0xde, 0xad, 0xbe, 0xe5, 0xad, 0x02, 0xe6,
- 0xc9, 0x8c, 0x63, 0x3e, 0xb4, 0x1a, 0xa4, 0x9d, 0x4d, 0xe6, 0xa5, 0xc9,
- 0xc3, 0x9c, 0xd8, 0x82, 0x05, 0xae, 0x73, 0x86, 0xa6, 0x46, 0x28, 0xad,
- 0x0a, 0xdd, 0x60, 0xe5, 0x4f, 0x44, 0x65, 0xa8, 0x58, 0xd3, 0x2a, 0x54,
- 0x12, 0x45, 0xc2, 0xc1, 0x57, 0x10, 0x40, 0x30, 0x13, 0x96, 0x21, 0xf8,
- 0xa0, 0x95, 0xca, 0xf3, 0x9c, 0x5f, 0x14, 0x77, 0x7d, 0x1b, 0x1b, 0xe1,
- 0xf4, 0x26, 0xd1, 0xf6, 0x29, 0xd1, 0xfe, 0x0a, 0xa4, 0x25, 0x35, 0x4c,
- 0x10, 0x80, 0xb1, 0x82, 0x9b, 0xa5, 0x62, 0x0f, 0x54, 0x1f, 0xfc, 0x61,
- 0x0a, 0xe6, 0x01, 0x0c, 0xe8, 0x66, 0x67, 0x2c, 0xcb, 0xc2, 0x0d, 0x96,
- 0xc3, 0xff, 0x65, 0xd3, 0x64, 0x89, 0x60, 0x35, 0xe6, 0x30, 0xe5, 0xb1,
- 0xe6, 0xf2, 0x34, 0x7a, 0x6e, 0x3d, 0x6b, 0x1a, 0x53, 0xf4, 0xa1, 0xac,
- 0xad, 0x38, 0x1e, 0x51, 0x31, 0xb2, 0x29, 0xb8, 0xb3, 0xe5, 0xe6, 0x39,
- 0x33, 0x6d, 0x93, 0xf5, 0x9e, 0xb4, 0xb8, 0xac, 0x5c, 0x72, 0x4d, 0x2e,
- 0x49, 0x1a, 0x4b, 0xda, 0x6e, 0x99, 0xe6, 0xbf, 0x55, 0xeb, 0x4d, 0xee,
- 0xc0, 0xdd, 0x9d, 0x9f, 0x40, 0x1f, 0xb7, 0xed, 0x97, 0xbd, 0xa9, 0x70,
- 0x37, 0x0d, 0xc2, 0xf3, 0xe1, 0x28, 0x55, 0x14, 0xea, 0xe9, 0x40, 0xcf,
- 0xac, 0x4b, 0x69, 0xdb, 0x53, 0xca, 0x36, 0x1a, 0xdf, 0x74, 0x47, 0x5b,
- 0x52, 0x1e, 0x86, 0x1b, 0x49, 0xbb, 0xa3, 0x2f, 0xea, 0xe3, 0x39, 0x24,
- 0x04, 0xed, 0xeb, 0xe2, 0x36, 0x0e, 0xf5, 0xc1, 0x30, 0x09, 0xc9, 0xe2,
- 0x89, 0xa8, 0xe8, 0x69, 0xcc, 0x80, 0xae, 0xe5, 0x14, 0x1b, 0x35, 0x0d,
- 0xc7, 0xb0, 0xb5, 0x6b, 0x70, 0x51, 0x54, 0xc9, 0x55, 0xa0, 0x59, 0x41,
- 0xc6, 0xa0, 0x9c, 0x8b, 0x13, 0xd7, 0xd0, 0xfa, 0x99, 0x14, 0x17, 0xc0,
- 0xd1, 0xdc, 0x6c, 0x49, 0x5c, 0x66, 0x9a, 0xe1, 0xd5, 0xc0, 0xf8, 0xd0,
- 0xc2, 0x9e, 0x40, 0x39, 0x3a, 0xa8, 0x15, 0xf1, 0x5e, 0x9f, 0x48, 0xb4,
- 0x7c, 0x5f, 0x2c, 0x4b, 0x13, 0xb3, 0xe4, 0x65, 0x37, 0xa6, 0xc0, 0xbd,
- 0xb8, 0x22, 0x70, 0xea, 0x69, 0x5a, 0x37, 0xea, 0x30, 0x1d, 0x42, 0x7a,
- 0x7a, 0x03, 0x7d, 0x8a, 0x9c, 0xcc, 0x7f, 0x9f, 0x67, 0x29, 0x41, 0x6d,
- 0xa5, 0x26, 0xae, 0x42, 0x64, 0xd6, 0x61, 0x23, 0x1a, 0x16, 0x1f, 0x35,
- 0x54, 0xf7, 0xf4, 0x06, 0xd8, 0x05, 0x90, 0x2c, 0x6f, 0x69, 0xa3, 0x0e,
- 0x71, 0x69, 0x53, 0x50, 0xd7, 0x28, 0x33, 0x42, 0xf0, 0x52, 0xa9, 0xca,
- 0x50, 0x0a, 0x75, 0x08, 0x5d, 0x8c, 0xd2, 0x81, 0x49, 0xb5, 0x4a, 0xaa,
- 0x4f, 0xbe, 0x2d, 0xd8, 0x8f, 0x66, 0x45, 0xcd, 0xfa, 0x15, 0x42, 0x38,
- 0xdf, 0xa4, 0xe6, 0xa2, 0x83, 0xb9, 0x80, 0x36, 0x98, 0x4c, 0xd6, 0xab,
- 0x7a, 0x8c, 0x5a, 0xec, 0x3c, 0x9f, 0xe0, 0x24, 0x71, 0x28, 0x75, 0x86,
- 0xb7, 0x19, 0xa2, 0x0e, 0xb5, 0x98, 0xf0, 0xb8, 0x92, 0xf2, 0x14, 0xcd,
- 0xb5, 0x2a, 0xe8, 0x9a, 0xae, 0xab, 0x05, 0x7f, 0x22, 0x6a, 0xa0, 0xdf,
- 0x4a, 0xc4, 0x25, 0x15, 0xde, 0x62, 0xbc, 0x64, 0x22, 0x64, 0x83, 0x59,
- 0x97, 0x85, 0x0c, 0x5f, 0xd2, 0x59, 0x79, 0x83, 0x6b, 0x82, 0xe3, 0x7d,
- 0x51, 0x54, 0x54, 0x17, 0x0d, 0x44, 0x82, 0xcf, 0xcb, 0xa1, 0x5d, 0xc4,
- 0x2b, 0x0c, 0x70, 0xbf, 0xb3, 0x64, 0x9b, 0x03, 0x6a, 0xde, 0xb3, 0xe3,
- 0x34, 0x39, 0xa8, 0x5b, 0xc9, 0x37, 0xae, 0xae, 0xe0, 0x63, 0xbb, 0x3e,
- 0xd0, 0xe1, 0x00, 0x3e, 0x68, 0xdc, 0x53, 0x24, 0xbc, 0xa8, 0x1a, 0x1d,
- 0xdb, 0x2f, 0x76, 0x62, 0xe2, 0x87, 0x92, 0x02, 0x9a, 0x4d, 0xcd, 0xd4,
- 0x10, 0xd4, 0xd8, 0xbd, 0x51, 0xa1, 0x42, 0xed, 0x61, 0x1e, 0xd9, 0xd2,
- 0x06, 0xe3, 0xb4, 0xa6, 0x40, 0x5e, 0x85, 0x82, 0x8b, 0xe9, 0x6f, 0xda,
- 0x7c, 0x05, 0x42, 0x43, 0x70, 0x54, 0xe6, 0x02, 0x54, 0x3e, 0x9a, 0x80,
- 0x3d, 0x12, 0x08, 0x61, 0x37, 0x5c, 0x7e, 0x98, 0x6c, 0x32, 0x47, 0xd3,
- 0x79, 0x32, 0xc7, 0xcf, 0x99, 0xb8, 0x0e, 0x77, 0xb1, 0x31, 0x85, 0xb9,
- 0xb2, 0x9f, 0x34, 0x81, 0xa0, 0xc3, 0xd7, 0xe9, 0x62, 0xa5, 0xdd, 0x50,
- 0x4d, 0x83, 0xa7, 0x76, 0xaf, 0x90, 0x0e, 0xc3, 0x83, 0xdd, 0xb1, 0x7d,
- 0xa7, 0x23, 0x42, 0x23, 0x8c, 0x8f, 0x90, 0x56, 0x66, 0x3e, 0xdc, 0xe7,
- 0x49, 0x5a, 0x06, 0x04, 0x5b, 0xfb, 0x50, 0xa1, 0x07, 0xdb, 0x3e, 0xee,
- 0xe4, 0xd4, 0x40, 0x50, 0x14, 0x64, 0xc2, 0x54, 0x71, 0x9a, 0x41, 0x61,
- 0x36, 0x89, 0x97, 0xb2, 0x8b, 0x81, 0x0c, 0xca, 0x2e, 0x61, 0xb6, 0x60,
- 0x6b, 0x56, 0x42, 0xf3, 0x95, 0x8a, 0x92, 0xc6, 0x94, 0xd4, 0x96, 0x0d,
- 0xe0, 0x61, 0xf0, 0x4b, 0xab, 0xda, 0x83, 0x80, 0x5e, 0x5b, 0x6b, 0xa4,
- 0xb6, 0x16, 0x8d, 0xe6, 0xbd, 0xbf, 0xb7, 0xc9, 0x23, 0x5b, 0x8f, 0xcc,
- 0x4f, 0xfd, 0xcf, 0x76, 0x36, 0x5e, 0x3e, 0x7b, 0x4a, 0x6b, 0x94, 0x9d,
- 0xc4, 0xeb, 0x7c, 0xc1, 0xff, 0x88, 0x75, 0x68, 0x5f, 0x80, 0x24, 0x4f,
- 0x92, 0x20, 0xc9, 0xe3, 0x44, 0x48, 0x07, 0x82, 0xcf, 0x22, 0x11, 0xc2,
- 0x7d, 0x7e, 0xaa, 0x4f, 0x55, 0xbb, 0x7d, 0x54, 0x57, 0xfe, 0x88, 0xcd,
- 0xc2, 0x0a, 0xea, 0x5b, 0x4d, 0xef, 0xfb, 0x12, 0x22, 0x80, 0x3d, 0xb3,
- 0xbf, 0x44, 0x00, 0x3c, 0xe5, 0xfc, 0x27, 0x4f, 0x11, 0x00, 0xc9, 0xef,
- 0x24, 0x01, 0x4c, 0xa5, 0xd7, 0x63, 0xcf, 0xbf, 0x72, 0xcd, 0xff, 0x95,
- 0x00, 0x41, 0x09, 0x90, 0xfc, 0x0a, 0x22, 0x60, 0x69, 0x09, 0xb0, 0xcb,
- 0x3d, 0x94, 0xda, 0x0c, 0xec, 0xd5, 0xba, 0xa1, 0x4d, 0x8d, 0x03, 0xac,
- 0x9b, 0x2e, 0x5f, 0x2d, 0x17, 0x86, 0xd4, 0x39, 0x71, 0x36, 0x55, 0x30,
- 0xc5, 0xb9, 0x50, 0xa6, 0xda, 0x35, 0x8c, 0xa0, 0xb0, 0xc1, 0x0b, 0x47,
- 0xf6, 0x62, 0x66, 0xda, 0x81, 0xd5, 0x26, 0x35, 0x0d, 0x44, 0x47, 0xd4,
- 0x35, 0x5d, 0x81, 0xf2, 0x36, 0xcb, 0x48, 0x6e, 0x80, 0x76, 0x0a, 0x8c,
- 0x1f, 0x7d, 0x3d, 0x1c, 0xc6, 0x07, 0x67, 0xc7, 0xd1, 0x03, 0xde, 0x1a,
- 0x7c, 0xc5, 0x99, 0x63, 0xb6, 0xb4, 0x02, 0xd8, 0xa0, 0xaa, 0xdd, 0x8c,
- 0x5f, 0xbc, 0xb3, 0xbb, 0x8b, 0xea, 0xd6, 0x9a, 0xcb, 0x06, 0xd3, 0xa6,
- 0xbd, 0x9f, 0x07, 0x55, 0xd4, 0xa8, 0x90, 0x57, 0x6a, 0xa8, 0x9d, 0x48,
- 0xc6, 0xb4, 0xb6, 0x53, 0x25, 0x14, 0x0e, 0x74, 0x6e, 0xa3, 0x28, 0xa7,
- 0x07, 0xbc, 0xc4, 0x28, 0x6c, 0x25, 0x40, 0x6d, 0x00, 0x36, 0x5f, 0x3e,
- 0xdb, 0x04, 0x41, 0x70, 0xcf, 0xf9, 0x55, 0xf2, 0xf2, 0xce, 0x60, 0x7b,
- 0x7d, 0x67, 0xb0, 0x83, 0x82, 0x5e, 0xb2, 0xb9, 0xa9, 0xf6, 0x5a, 0x86,
- 0x0f, 0x67, 0x2b, 0xb1, 0xbc, 0x7f, 0x77, 0x74, 0x18, 0x71, 0xd5, 0x35,
- 0x75, 0xc3, 0x6a, 0x39, 0x89, 0x1c, 0x80, 0x13, 0xe1, 0x1d, 0x3e, 0x9f,
- 0x9e, 0xcb, 0xd6, 0x23, 0x87, 0x7a, 0x0a, 0x08, 0xcf, 0x3a, 0x37, 0x13,
- 0x41, 0x11, 0xce, 0x4e, 0x03, 0xed, 0x4d, 0x00, 0xbf, 0xf2, 0xe1, 0xb5,
- 0x1c, 0x92, 0x38, 0x04, 0x7b, 0x22, 0x63, 0x38, 0x93, 0xfa, 0x35, 0xb9,
- 0xa3, 0x93, 0x19, 0xd4, 0x15, 0xd2, 0xe1, 0x4c, 0xb1, 0x61, 0x61, 0xcf,
- 0x67, 0x22, 0xf7, 0x8b, 0x71, 0xd8, 0x55, 0x51, 0x39, 0x9a, 0x1a, 0xf7,
- 0xc6, 0xe5, 0xdf, 0xc7, 0xf9, 0x60, 0x59, 0xdf, 0x4c, 0x56, 0x2f, 0x72,
- 0xc1, 0x18, 0x7a, 0xb0, 0x7c, 0x10, 0xcf, 0x4b, 0xd7, 0x82, 0xc4, 0xdd,
- 0xd2, 0xbe, 0x2b, 0x99, 0xdf, 0x50, 0x64, 0xb1, 0xff, 0xc4, 0x19, 0xca,
- 0x8c, 0x1f, 0xf8, 0x99, 0x8e, 0x1e, 0x70, 0x56, 0xe2, 0xc7, 0x78, 0xac,
- 0x32, 0x4d, 0x26, 0x32, 0x2b, 0xe7, 0x3b, 0xfe, 0x2f, 0xa9, 0x03, 0x30,
- 0x25, 0x4b, 0xfb, 0xc5, 0xba, 0x12, 0x58, 0x76, 0xa6, 0x60, 0x7c, 0x19,
- 0xd3, 0xa4, 0x1e, 0x69, 0x63, 0x30, 0xb8, 0xae, 0xb3, 0x19, 0x5c, 0x35,
- 0x4f, 0xf2, 0x22, 0x05, 0xe9, 0xc5, 0x0e, 0xac, 0x7f, 0x05, 0xcf, 0x05,
- 0x2f, 0x13, 0x31, 0xf8, 0x50, 0x24, 0x23, 0xd1, 0x54, 0x02, 0x2d, 0xb8,
- 0x45, 0xa4, 0x20, 0xad, 0x1d, 0x6d, 0x0c, 0x5c, 0x21, 0x1d, 0x83, 0x21,
- 0x00, 0xb2, 0xbd, 0x2a, 0x94, 0xd1, 0xdb, 0x85, 0x56, 0xd9, 0x65, 0x64,
- 0x5a, 0x8c, 0x61, 0x0c, 0xc6, 0xa6, 0x87, 0xe8, 0xb0, 0x02, 0x9f, 0xb8,
- 0xd6, 0xbe, 0x65, 0x42, 0x37, 0x67, 0x5d, 0xc8, 0x8d, 0xf3, 0xe0, 0xb5,
- 0xf6, 0x6b, 0xdd, 0x34, 0x72, 0xd7, 0xfd, 0x8b, 0xaf, 0x1a, 0xfd, 0xca,
- 0x53, 0xec, 0x07, 0xd9, 0xbc, 0x68, 0x95, 0xaa, 0x80, 0x04, 0xe8, 0x52,
- 0x75, 0x7d, 0xd7, 0x23, 0x10, 0xaa, 0xa7, 0xa1, 0x13, 0xb1, 0x36, 0x88,
- 0x1e, 0x72, 0x5f, 0x04, 0x6c, 0x0d, 0xef, 0x16, 0x5b, 0xd8, 0x9e, 0xf1,
- 0xbf, 0x95, 0xe7, 0x80, 0xb7, 0x3d, 0x0e, 0x74, 0x93, 0x31, 0xbd, 0x6c,
- 0x17, 0xd9, 0x10, 0xdc, 0x01, 0xfa, 0xff, 0x7a, 0x11, 0xfe, 0xbb, 0xdb,
- 0x10, 0xce, 0xb9, 0x6c, 0x74, 0x5a, 0xdd, 0x7b, 0xbe, 0xb1, 0xb1, 0xf1,
- 0x4b, 0xda, 0xad, 0x8a, 0x85, 0xe2, 0x0b, 0x82, 0x07, 0xcf, 0x7f, 0xa3,
- 0x46, 0xaf, 0x2d, 0x01, 0x62, 0xa9, 0xe1, 0x0f, 0x98, 0xf2, 0x61, 0xb0,
- 0x91, 0xc9, 0xc3, 0x7e, 0x4b, 0x3e, 0xf8, 0x94, 0x89, 0xc2, 0xf0, 0x32,
- 0xec, 0x67, 0xf0, 0xf9, 0xef, 0x81, 0xc3, 0xff, 0xdf, 0xc6, 0x6b, 0xa0,
- 0xfa, 0xd2, 0x52, 0x5e, 0x83, 0xdd, 0xff, 0xeb, 0x34, 0xf8, 0xb7, 0x3b,
- 0xf0, 0xdd, 0xec, 0xb0, 0x8a, 0xb5, 0x11, 0x58, 0xbc, 0x02, 0x7f, 0xea,
- 0x61, 0x5c, 0xb3, 0x8a, 0x23, 0x82, 0x7e, 0x31, 0xed, 0x8e, 0xcf, 0xbe,
- 0x79, 0xd6, 0x27, 0x28, 0xe6, 0xa1, 0x8f, 0x4a, 0x7e, 0xf2, 0xea, 0xe0,
- 0x6c, 0xf0, 0x14, 0xa9, 0xf2, 0x6b, 0x09, 0x13, 0x2b, 0x9d, 0xba, 0xa4,
- 0xca, 0xdf, 0xc8, 0x81, 0x31, 0x4b, 0xd3, 0x71, 0xcc, 0x59, 0x36, 0xfb,
- 0xf4, 0x8f, 0x60, 0x02, 0x9b, 0x82, 0x5c, 0xd3, 0x61, 0xc1, 0xe4, 0x1b,
- 0x49, 0x3d, 0x74, 0x32, 0x25, 0xe9, 0x65, 0x50, 0xf1, 0x72, 0x41, 0xc5,
- 0xc7, 0x42, 0xbc, 0xca, 0x77, 0x4c, 0x16, 0xf9, 0x78, 0x8d, 0x71, 0xcc,
- 0xe8, 0xcb, 0xc4, 0x9e, 0x92, 0x34, 0x8a, 0x72, 0xe4, 0x0a, 0xbb, 0xdc,
- 0x68, 0x07, 0x3d, 0xf7, 0x19, 0x12, 0x30, 0x95, 0x97, 0x7e, 0xc8, 0x27,
- 0xef, 0xde, 0x2e, 0x85, 0x13, 0x84, 0xb8, 0x2b, 0xd2, 0xf6, 0x06, 0x86,
- 0x3c, 0x05, 0x19, 0xf7, 0x77, 0xbf, 0x34, 0x1c, 0x4a, 0x6f, 0x6f, 0x6c,
- 0x34, 0x27, 0xbc, 0x6c, 0x06, 0x62, 0x6b, 0xc1, 0xf8, 0x2f, 0x1a, 0x39,
- 0x2e, 0x4d, 0x20, 0xba, 0x99, 0xb9, 0x69, 0xb7, 0xbd, 0x4d, 0xab, 0xae,
- 0x94, 0xdd, 0x85, 0xfb, 0xee, 0x2e, 0xa6, 0xb1, 0xdd, 0x98, 0xfc, 0xc6,
- 0x69, 0x3b, 0x6d, 0xc1, 0xec, 0x6e, 0x26, 0x67, 0xa7, 0x32, 0x71, 0xcd,
- 0x27, 0x9a, 0x5b, 0x7f, 0x7c, 0xe9, 0xbe, 0xe0, 0xf9, 0xa5, 0x18, 0xa5,
- 0x4b, 0x22, 0xa6, 0x62, 0x55, 0x37, 0x66, 0x65, 0x93, 0x83, 0x37, 0x35,
- 0x10, 0x6a, 0x61, 0x45, 0xfe, 0xe6, 0xd7, 0x51, 0x38, 0xef, 0x2e, 0x2e,
- 0xc6, 0x2c, 0xf2, 0xba, 0x2c, 0x10, 0x8b, 0xd7, 0xd4, 0x8f, 0xb1, 0xa4,
- 0x9b, 0x57, 0x0e, 0x50, 0x0a, 0xd6, 0x1b, 0x23, 0x4e, 0x48, 0x44, 0x54,
- 0xf3, 0xf2, 0x10, 0x45, 0x6a, 0x46, 0x69, 0x3d, 0x1a, 0x58, 0x46, 0xa4,
- 0x3e, 0x5e, 0x23, 0xac, 0xc9, 0x2d, 0x39, 0x71, 0x10, 0x2e, 0xa1, 0x3e,
- 0x17, 0xf8, 0x52, 0xe7, 0x92, 0x0e, 0x8f, 0x9f, 0xa6, 0xd9, 0x76, 0xa0,
- 0xac, 0xfc, 0x77, 0x66, 0x73, 0x4f, 0x44, 0xb1, 0x2c, 0xb3, 0xac, 0xde,
- 0x50, 0x92, 0x30, 0xef, 0x05, 0x3d, 0x21, 0xf1, 0x45, 0x9a, 0x78, 0x85,
- 0xfa, 0x3e, 0x98, 0xb2, 0xba, 0x5c, 0x8d, 0x54, 0x4f, 0x4a, 0x2e, 0x83,
- 0x42, 0x3e, 0x06, 0x16, 0xae, 0xef, 0xb1, 0x54, 0xf0, 0x56, 0x30, 0xc2,
- 0xda, 0x73, 0x1c, 0x9e, 0x6c, 0xd3, 0x6c, 0xce, 0x4f, 0x86, 0x6e, 0xc3,
- 0xf6, 0x8a, 0x92, 0x00, 0x09, 0x25, 0xef, 0xab, 0xa3, 0x83, 0xe1, 0xf9,
- 0x20, 0xb4, 0x01, 0x3e, 0x92, 0x8e, 0xc5, 0xcd, 0xc4, 0xf6, 0x35, 0x93,
- 0xe4, 0x1e, 0x1b, 0xdc, 0x09, 0xf8, 0x1e, 0xce, 0x8d, 0xa7, 0xa6, 0x83,
- 0xa3, 0x93, 0x87, 0xd1, 0x69, 0xa8, 0x98, 0xc1, 0xef, 0xa2, 0x04, 0x3b,
- 0x2b, 0x95, 0x91, 0xa6, 0x26, 0x93, 0x18, 0x9f, 0xea, 0xaa, 0x8a, 0x09,
- 0x66, 0x30, 0xe2, 0x77, 0x9a, 0x2e, 0xbf, 0x05, 0x78, 0xbe, 0xee, 0xfc,
- 0x27, 0x88, 0x9d, 0x28, 0x3d, 0xb5, 0x70, 0x10, 0x25, 0x16, 0x27, 0xa4,
- 0x19, 0x1c, 0xa5, 0x40, 0x7d, 0x2c, 0xc1, 0xb9, 0x53, 0xa7, 0x86, 0xea,
- 0x93, 0x26, 0x7d, 0x8d, 0x6a, 0x42, 0x16, 0x4d, 0x96, 0xcf, 0x0f, 0x69,
- 0xee, 0xf6, 0x92, 0x77, 0xa4, 0x24, 0xe9, 0xb4, 0xc6, 0x20, 0xee, 0xfa,
- 0x44, 0xd8, 0x05, 0x39, 0x2d, 0xcb, 0xe7, 0xaf, 0x79, 0x5d, 0xc4, 0xa3,
- 0x09, 0xe6, 0x35, 0xc7, 0x70, 0x4c, 0xeb, 0x80, 0xfb, 0xc5, 0x6d, 0x4b,
- 0xdd, 0x84, 0x14, 0x26, 0xb4, 0x21, 0x96, 0xce, 0x8c, 0x2d, 0x12, 0xf1,
- 0x48, 0xf0, 0x27, 0x0c, 0x05, 0xca, 0xb4, 0xaf, 0x84, 0xd7, 0xe2, 0xe1,
- 0x6a, 0xfa, 0x33, 0xfa, 0xec, 0xbb, 0x91, 0xc4, 0x7d, 0xdb, 0x53, 0xcb,
- 0x82, 0x99, 0xd1, 0x76, 0x85, 0x20, 0xc1, 0xfc, 0xb6, 0xc0, 0x9c, 0xb3,
- 0x85, 0x4e, 0x43, 0x6c, 0xbd, 0xbe, 0xca, 0x28, 0x92, 0x04, 0x2d, 0xa2,
- 0xf8, 0xc7, 0xb8, 0xcb, 0xb0, 0xaa, 0xf6, 0x70, 0x17, 0xd8, 0x50, 0x7a,
- 0x6d, 0x10, 0x9d, 0x81, 0x2c, 0xa7, 0xb4, 0xf1, 0xe7, 0x83, 0xe7, 0xcf,
- 0xe1, 0x28, 0x30, 0x74, 0x62, 0xd2, 0xc4, 0x16, 0x26, 0x88, 0xaa, 0x8c,
- 0x53, 0x49, 0x84, 0x40, 0xa1, 0x9b, 0x5c, 0xe7, 0x31, 0x10, 0x7d, 0xd8,
- 0x05, 0xed, 0x4c, 0xcc, 0x8a, 0xc9, 0x38, 0x10, 0x9a, 0x11, 0x8d, 0x90,
- 0x81, 0x3c, 0x8d, 0x95, 0xd6, 0x57, 0x59, 0x22, 0xb7, 0x7c, 0x42, 0x8a,
- 0xfd, 0x77, 0x3a, 0x6c, 0x0c, 0x55, 0xd5, 0x84, 0xe0, 0x5a, 0x7b, 0x32,
- 0x5b, 0x90, 0x52, 0x12, 0xee, 0x83, 0x3e, 0xba, 0x8f, 0x60, 0x39, 0x13,
- 0x71, 0xe7, 0xe3, 0x8e, 0x1a, 0xbc, 0xec, 0x27, 0x71, 0x72, 0x8b, 0xaf,
- 0x9e, 0xce, 0xce, 0xad, 0x81, 0x9a, 0xc5, 0x79, 0xcf, 0x5b, 0xfe, 0x25,
- 0x78, 0x81, 0xb0, 0x8f, 0x11, 0x03, 0xcd, 0x03, 0x45, 0x92, 0xad, 0x58,
- 0x5b, 0x20, 0x3a, 0x35, 0xf5, 0xdb, 0x25, 0x20, 0x8e, 0x36, 0x0a, 0xc2,
- 0xd1, 0x45, 0xa3, 0xeb, 0x14, 0x94, 0xd0, 0xc1, 0x53, 0x04, 0x4b, 0x9b,
- 0xf7, 0x5c, 0x31, 0xf3, 0xeb, 0x0b, 0x16, 0x43, 0x94, 0x65, 0x11, 0x0e,
- 0xca, 0x09, 0x97, 0x4f, 0xbb, 0x09, 0x7f, 0x3b, 0x3e, 0xd1, 0x81, 0x8f,
- 0xc7, 0xa1, 0xbe, 0xed, 0x84, 0x6f, 0x45, 0x40, 0x5a, 0x84, 0x3c, 0x85,
- 0x46, 0x04, 0xb6, 0xf9, 0xfa, 0xfb, 0x1c, 0x3b, 0x4d, 0x03, 0x4d, 0xd6,
- 0xe1, 0xb6, 0x11, 0x97, 0xb7, 0xb4, 0x77, 0xd6, 0x3e, 0x67, 0x9e, 0x45,
- 0xc3, 0xb9, 0x60, 0x75, 0x5a, 0x79, 0x8f, 0x52, 0x1e, 0x60, 0x07, 0x98,
- 0xbd, 0x39, 0x37, 0xfe, 0x75, 0x87, 0xdf, 0x7e, 0xc8, 0x8e, 0x06, 0x8e,
- 0x19, 0x4f, 0x78, 0xe1, 0x38, 0x77, 0xb1, 0xa5, 0x05, 0xe0, 0x05, 0x68,
- 0xf1, 0x02, 0x53, 0x50, 0x31, 0xf7, 0x0d, 0x37, 0x2d, 0x50, 0x59, 0x6c,
- 0x85, 0x92, 0x76, 0x2a, 0xa4, 0xe6, 0xa9, 0xf9, 0x64, 0x9c, 0xcc, 0xa8,
- 0x96, 0x20, 0x95, 0xda, 0x8a, 0x32, 0xfd, 0x89, 0xa3, 0x4a, 0xda, 0x19,
- 0x37, 0xcd, 0x41, 0xa5, 0x6c, 0x3b, 0x88, 0x1b, 0xaf, 0x65, 0x97, 0x04,
- 0x95, 0x98, 0x8d, 0x40, 0x8d, 0x40, 0x32, 0x52, 0x0d, 0x0e, 0x51, 0x76,
- 0xbc, 0x70, 0x59, 0x28, 0xc9, 0xb0, 0x16, 0x27, 0x45, 0x58, 0x50, 0x73,
- 0xb9, 0xc7, 0xf1, 0x65, 0x3d, 0x33, 0x7b, 0xf9, 0x14, 0x1e, 0xc3, 0xf7,
- 0x7c, 0x68, 0xad, 0x45, 0x76, 0x5d, 0x35, 0x79, 0xc4, 0x0d, 0xc5, 0x7c,
- 0x0b, 0x17, 0x5a, 0x55, 0x23, 0x56, 0x9d, 0xbf, 0x95, 0x8f, 0x3a, 0xd8,
- 0xd9, 0x55, 0x8e, 0x62, 0xd0, 0x3d, 0xd7, 0x0f, 0x1f, 0x6c, 0x29, 0x7d,
- 0x40, 0xc0, 0x04, 0xa9, 0xfc, 0x1c, 0xcf, 0xa9, 0x88, 0x63, 0x9a, 0x51,
- 0x72, 0xd9, 0x7a, 0x71, 0x79, 0x49, 0xe0, 0x89, 0x20, 0x36, 0xea, 0x32,
- 0xbb, 0x98, 0x07, 0x02, 0x8a, 0xd4, 0x08, 0xd6, 0x22, 0x3d, 0xf1, 0x37,
- 0xed, 0x37, 0x18, 0x9e, 0xee, 0x69, 0xe4, 0x6e, 0xd3, 0xe5, 0x69, 0x67,
- 0x3b, 0xb4, 0x05, 0x0d, 0x19, 0xbb, 0xe1, 0x1d, 0xf7, 0x45, 0x87, 0xfb,
- 0x9c, 0xe0, 0x7b, 0x48, 0x1f, 0xd0, 0xf3, 0xad, 0x6b, 0xef, 0x3e, 0xdc,
- 0xef, 0x51, 0x77, 0xaf, 0xa5, 0x54, 0x8c, 0x9b, 0x83, 0xf1, 0x4c, 0xdc,
- 0x53, 0xde, 0xec, 0x74, 0x6f, 0xfc, 0x17, 0x70, 0xc4, 0xe2, 0x90, 0x73,
- 0x4e, 0x4f, 0xb8, 0xbb, 0x64, 0x65, 0x71, 0xb1, 0x79, 0xd4, 0x93, 0x60,
- 0x98, 0x97, 0x5a, 0x95, 0x5e, 0x7a, 0xc9, 0x8b, 0x0c, 0xbf, 0x35, 0x81,
- 0x49, 0x4e, 0x08, 0x98, 0x3a, 0xcd, 0x47, 0xe5, 0x3d, 0x73, 0xd9, 0xa3,
- 0x4e, 0xdc, 0xaf, 0x2a, 0x48, 0x44, 0x40, 0x04, 0xa5, 0x88, 0xb0, 0xb9,
- 0x2b, 0x6d, 0x1e, 0x16, 0x24, 0xde, 0xd4, 0x05, 0xdc, 0x04, 0xa9, 0x2b,
- 0x15, 0xa2, 0x06, 0x67, 0x01, 0x55, 0x78, 0x46, 0x16, 0x69, 0x6e, 0xa8,
- 0x6e, 0x0e, 0x86, 0xb8, 0xfd, 0x03, 0xc5, 0xfc, 0xee, 0xec, 0xd8, 0x68,
- 0x94, 0xfe, 0x32, 0x21, 0x45, 0xb1, 0x3b, 0xac, 0xd9, 0x50, 0x3f, 0x6b,
- 0xa0, 0x67, 0x00, 0x79, 0x3b, 0x6b, 0x17, 0xea, 0x0b, 0xfd, 0xc5, 0xb6,
- 0x31, 0x1f, 0xe2, 0x8e, 0x08, 0x86, 0xfe, 0xe5, 0x9c, 0x5a, 0xb1, 0x19,
- 0xe0, 0xae, 0xa5, 0x4f, 0x23, 0xb0, 0xdc, 0x6c, 0xfb, 0xd1, 0x25, 0x0d,
- 0x8d, 0xc3, 0x26, 0x4c, 0x38, 0xca, 0x66, 0xd7, 0xf0, 0x79, 0xe7, 0xa4,
- 0x6d, 0xf5, 0x79, 0xec, 0x9b, 0x2d, 0x4f, 0xe0, 0x0d, 0x4f, 0x9a, 0xb2,
- 0x4e, 0xfd, 0xca, 0x40, 0x2b, 0xd0, 0x18, 0x14, 0x4e, 0xcb, 0x1e, 0xc3,
- 0x9b, 0xad, 0xbe, 0x64, 0x2a, 0x07, 0xfa, 0xb6, 0x51, 0xdd, 0x78, 0xae,
- 0x95, 0x65, 0x56, 0xe3, 0x45, 0x5c, 0xc8, 0x72, 0x3e, 0x52, 0x0e, 0x16,
- 0xd6, 0x1a, 0xf0, 0x78, 0x11, 0xc3, 0x88, 0x8d, 0x53, 0x8f, 0x53, 0x6d,
- 0x6b, 0xd4, 0xc8, 0x2c, 0x91, 0x0a, 0x98, 0x31, 0xe5, 0xe3, 0xd9, 0xe6,
- 0xf3, 0x67, 0x6b, 0x4f, 0xa0, 0x2f, 0x7c, 0xf0, 0x91, 0xc2, 0x8d, 0x49,
- 0x8c, 0x40, 0xad, 0xf0, 0x3c, 0x82, 0x0d, 0x0b, 0x7d, 0xf1, 0x9f, 0x5b,
- 0x03, 0x97, 0xaa, 0x7a, 0x76, 0x2b, 0x6d, 0x03, 0xe9, 0xc1, 0x17, 0xe6,
- 0x63, 0x64, 0x3f, 0xa4, 0x8f, 0x9a, 0x40, 0xc8, 0x96, 0x17, 0xf3, 0x6c,
- 0x42, 0xd5, 0x71, 0xda, 0x19, 0x8f, 0xa4, 0x8c, 0xef, 0xf6, 0x6f, 0xd3,
- 0x99, 0xc3, 0x00, 0xf1, 0xb6, 0x4e, 0x80, 0xcd, 0xed, 0x78, 0x93, 0xf0,
- 0xc5, 0x27, 0xd5, 0xcd, 0xa6, 0xcc, 0x94, 0xfe, 0x3e, 0x68, 0xfe, 0x6b,
- 0xcb, 0xe1, 0x0b, 0x3b, 0xc0, 0x2f, 0xe7, 0x8b, 0xed, 0x5f, 0x99, 0x2f,
- 0xb6, 0x9f, 0xc8, 0x17, 0xcf, 0x77, 0x9f, 0xbd, 0x78, 0x12, 0x5f, 0x6c,
- 0xff, 0x5a, 0x7c, 0xe1, 0x6c, 0xcb, 0xef, 0xc3, 0x17, 0x0e, 0x63, 0x3e,
- 0x8d, 0x2f, 0xb4, 0x00, 0x20, 0xd8, 0xe6, 0xf8, 0xbd, 0x82, 0x07, 0x51,
- 0xf1, 0x2e, 0x42, 0x25, 0x31, 0xb2, 0x9a, 0xbc, 0xe3, 0xc1, 0x3b, 0x72,
- 0xff, 0x13, 0x46, 0x86, 0x45, 0xdf, 0x65, 0x20, 0x1a, 0x63, 0x5b, 0x5d,
- 0x90, 0x9f, 0x6f, 0x36, 0x49, 0x80, 0x5b, 0x56, 0xe2, 0x15, 0x0d, 0x9c,
- 0x2b, 0xae, 0xac, 0x83, 0xcb, 0xc4, 0x75, 0x1c, 0xbf, 0x7f, 0xa9, 0xce,
- 0xbf, 0xda, 0x85, 0xc8, 0x44, 0x16, 0x90, 0xac, 0xfa, 0xae, 0x7e, 0x7a,
- 0xa1, 0x07, 0xef, 0xbe, 0x53, 0xed, 0xd3, 0x64, 0x80, 0x7b, 0xd0, 0x31,
- 0x62, 0xfe, 0x4e, 0xb0, 0xb2, 0xaf, 0x32, 0x45, 0x98, 0xec, 0xc6, 0x51,
- 0x5a, 0x5d, 0x14, 0x13, 0x24, 0x67, 0x8e, 0xa2, 0xe0, 0x7e, 0x92, 0x8a,
- 0xe6, 0x8b, 0x3b, 0x87, 0x5c, 0x8e, 0x81, 0xab, 0x76, 0x3a, 0x05, 0x95,
- 0x0d, 0x57, 0xed, 0x4a, 0x9d, 0x81, 0x24, 0xb9, 0x80, 0xbd, 0xd9, 0x98,
- 0x0c, 0x29, 0x76, 0xd5, 0x6d, 0x86, 0x39, 0x4a, 0xd4, 0x46, 0x32, 0xd0,
- 0x41, 0xe7, 0xdf, 0xbe, 0x80, 0xab, 0xb1, 0xa0, 0xf8, 0x78, 0xb9, 0x4d,
- 0xb4, 0xe0, 0xe1, 0xb4, 0x83, 0xee, 0x9e, 0x36, 0xeb, 0x34, 0xdb, 0x45,
- 0x8d, 0x20, 0x4c, 0xa8, 0x8a, 0x47, 0x9d, 0xe5, 0x42, 0xf9, 0x50, 0x61,
- 0x5d, 0x3c, 0x33, 0x51, 0xd1, 0x7a, 0x4e, 0xde, 0x2f, 0xe5, 0x6c, 0xee,
- 0x46, 0x87, 0x60, 0x43, 0x47, 0x87, 0x06, 0x37, 0x1e, 0x7f, 0x4b, 0x68,
- 0x1d, 0x40, 0xd0, 0x10, 0xe2, 0x87, 0xac, 0x94, 0xa3, 0x9f, 0xf6, 0x5d,
- 0x29, 0x09, 0x95, 0x79, 0x78, 0xf0, 0x43, 0x88, 0x8a, 0x50, 0xfb, 0x89,
- 0x4d, 0xaa, 0x83, 0x71, 0xbc, 0xe2, 0x15, 0x4e, 0x74, 0x3c, 0x9f, 0xce,
- 0xb4, 0x33, 0x26, 0x7a, 0x00, 0xe2, 0x8c, 0x30, 0xcc, 0x15, 0xc8, 0x4a,
- 0x10, 0x00, 0x30, 0x02, 0x1e, 0x6a, 0x54, 0x80, 0xe2, 0x44, 0x6a, 0xd7,
- 0x38, 0x0e, 0xad, 0x2c, 0x29, 0x6e, 0x30, 0x85, 0xa4, 0x3b, 0xae, 0x9b,
- 0xdd, 0xe9, 0x7c, 0x5c, 0xe1, 0x71, 0x7a, 0x31, 0xbf, 0x52, 0x00, 0x7c,
- 0x83, 0x8c, 0xd5, 0x3c, 0x76, 0x54, 0xb5, 0x87, 0xbd, 0x89, 0xd2, 0x3e,
- 0xf7, 0x0f, 0xcf, 0xef, 0xa9, 0x1f, 0x4a, 0x9d, 0x55, 0xbe, 0xbe, 0x3b,
- 0x5a, 0xde, 0xa0, 0xeb, 0xd8, 0x65, 0x87, 0x1c, 0xf1, 0x9d, 0xec, 0xc4,
- 0x52, 0x6c, 0xd7, 0x26, 0x74, 0x9f, 0xa8, 0x6c, 0x47, 0x25, 0x66, 0x6c,
- 0xb3, 0x4d, 0xdb, 0x3c, 0x73, 0x33, 0xba, 0x5a, 0xce, 0x9f, 0x7a, 0x34,
- 0x8b, 0x2f, 0x13, 0x6c, 0xfd, 0xeb, 0xc1, 0xa0, 0x49, 0x2d, 0xb1, 0x9c,
- 0xbb, 0xf3, 0xc3, 0xb3, 0xe8, 0x35, 0x0a, 0xd3, 0x53, 0x78, 0x32, 0x5a,
- 0x85, 0x4b, 0xff, 0xf9, 0xce, 0xe6, 0xf6, 0xd2, 0x77, 0xbe, 0xfb, 0xbd,
- 0x25, 0xed, 0xdd, 0x4b, 0xf8, 0x33, 0x8d, 0x49, 0xd5, 0x69, 0xfa, 0xb3,
- 0x5e, 0xfa, 0x4b, 0xca, 0x8b, 0x10, 0x3c, 0xc4, 0xf9, 0xbc, 0xcc, 0xb5,
- 0xc3, 0x11, 0xac, 0xe7, 0xe3, 0xbb, 0xd3, 0x57, 0x47, 0x27, 0x07, 0x7f,
- 0x33, 0x5d, 0x1c, 0xf0, 0x63, 0x8a, 0xbc, 0xfd, 0x11, 0x6c, 0xa8, 0xfb,
- 0x8f, 0x55, 0x0a, 0x33, 0xad, 0x57, 0xb7, 0xd7, 0xa8, 0xd5, 0x82, 0x07,
- 0x65, 0x78, 0x95, 0x36, 0xbb, 0x5f, 0x30, 0x56, 0xc7, 0x82, 0x5e, 0x5a,
- 0xec, 0x44, 0xc6, 0x7d, 0xd8, 0x18, 0x80, 0xc2, 0x20, 0x95, 0xb2, 0x18,
- 0x67, 0x74, 0xef, 0x33, 0x07, 0xb0, 0x33, 0x91, 0x9e, 0x82, 0x22, 0x29,
- 0x3d, 0x6c, 0x46, 0xf6, 0x1f, 0xa1, 0xfb, 0x9c, 0x85, 0x33, 0x62, 0x80,
- 0x5c, 0x5e, 0xb6, 0xda, 0xb0, 0x12, 0x30, 0x1c, 0xa1, 0x83, 0x3c, 0x65,
- 0xbb, 0x84, 0x96, 0xcb, 0xed, 0xd6, 0xbb, 0x3e, 0xdf, 0x22, 0x17, 0x73,
- 0x44, 0xbf, 0x76, 0xb6, 0xa7, 0x26, 0xb5, 0x28, 0x9d, 0xe4, 0x69, 0x2d,
- 0x75, 0xee, 0xd1, 0x3e, 0xfc, 0xf9, 0xf9, 0x4d, 0x32, 0xf1, 0xb0, 0xd6,
- 0x93, 0xaa, 0x32, 0xc7, 0xda, 0x5c, 0x54, 0xf8, 0xa6, 0x11, 0x1a, 0x03,
- 0x85, 0xb6, 0x4d, 0xc7, 0xe6, 0x49, 0x90, 0x37, 0x7b, 0xde, 0x5d, 0x74,
- 0xfe, 0xb7, 0xb3, 0xa3, 0xcf, 0xf7, 0xf1, 0x9a, 0xfb, 0x02, 0x31, 0x66,
- 0xaa, 0xc6, 0xad, 0x47, 0x85, 0x8a, 0x1e, 0x69, 0xbe, 0x7b, 0x75, 0x3c,
- 0x3c, 0x3b, 0x39, 0x3d, 0xfc, 0x7c, 0xff, 0x3b, 0x74, 0x10, 0x81, 0x7e,
- 0x74, 0xef, 0xbc, 0x6b, 0x7e, 0x16, 0x69, 0xcf, 0x06, 0xbf, 0x75, 0xc8,
- 0xd1, 0xb7, 0x1f, 0x8f, 0xde, 0x7d, 0xf3, 0xf9, 0xfe, 0x4d, 0x52, 0xf6,
- 0x71, 0x7d, 0xfc, 0x36, 0xd6, 0x44, 0xe7, 0x37, 0x59, 0x59, 0xe4, 0x18,
- 0xe9, 0x8a, 0xe0, 0x97, 0x19, 0x1e, 0xb4, 0x25, 0xb7, 0xa6, 0x96, 0x35,
- 0xdd, 0xd4, 0x9b, 0x1b, 0x1b, 0x42, 0x96, 0x47, 0x1b, 0xb0, 0x7f, 0x91,
- 0xb6, 0xd5, 0x97, 0xd9, 0xd5, 0xc0, 0x39, 0x38, 0x68, 0x9c, 0x5f, 0x4c,
- 0x3e, 0x55, 0xd9, 0xcf, 0x69, 0x04, 0x93, 0x9e, 0xcc, 0x3d, 0x35, 0x74,
- 0xf5, 0x9c, 0xfb, 0x3c, 0xc0, 0x16, 0xe0, 0xdf, 0xa2, 0xaf, 0x4e, 0xfe,
- 0x82, 0xfd, 0xbb, 0x4d, 0xaa, 0x0a, 0x75, 0x33, 0x84, 0xab, 0xe2, 0x8b,
- 0xdd, 0xcd, 0xad, 0x35, 0xb9, 0x5a, 0x04, 0xc6, 0xf6, 0x02, 0xe8, 0xf4,
- 0xc9, 0x83, 0x46, 0xfc, 0x59, 0x7b, 0x5f, 0xb6, 0xf0, 0xa3, 0x6d, 0xfb,
- 0x1c, 0x0d, 0x6b, 0x13, 0xf2, 0x06, 0xd5, 0x22, 0xc3, 0x6f, 0xe1, 0xd0,
- 0x21, 0x24, 0x85, 0x17, 0xd2, 0xa7, 0x49, 0x69, 0xd4, 0xc9, 0xc1, 0xc0,
- 0x84, 0xe9, 0x48, 0x5a, 0xc0, 0x42, 0x3d, 0xf0, 0x5f, 0xac, 0x57, 0x36,
- 0x08, 0xbe, 0xb9, 0xb1, 0xb5, 0x13, 0xd5, 0xe1, 0x9e, 0x8c, 0x8b, 0x7a,
- 0x68, 0xe3, 0x18, 0x70, 0xd0, 0xbc, 0xfe, 0x2f, 0xde, 0xaf, 0xc2, 0x5b,
- 0xe9, 0x54, 0xfb, 0x10, 0x44, 0x56, 0xc1, 0x7d, 0x4c, 0x89, 0x90, 0x7a,
- 0xa2, 0xb4, 0x09, 0xc1, 0x62, 0x15, 0x6f, 0x8a, 0x48, 0xd8, 0x88, 0x22,
- 0xc4, 0x21, 0x60, 0x27, 0xc0, 0x3b, 0x49, 0xaf, 0x30, 0x3e, 0x25, 0x1b,
- 0x53, 0xd9, 0xde, 0x52, 0x21, 0xad, 0x25, 0x19, 0xa1, 0xbb, 0x88, 0x20,
- 0x8f, 0xb9, 0xe8, 0x9d, 0x1b, 0xc2, 0x80, 0x88, 0x33, 0xd1, 0xe1, 0xc6,
- 0xec, 0x04, 0xd7, 0xb3, 0x1b, 0xfe, 0x58, 0x77, 0xb1, 0x45, 0x6f, 0xc7,
- 0xf4, 0x7d, 0xca, 0xb6, 0x59, 0xba, 0xea, 0xa6, 0x6d, 0xbe, 0xdc, 0x1a,
- 0x6c, 0x3e, 0x7b, 0x81, 0x38, 0xd4, 0xeb, 0x0f, 0x6d, 0x98, 0x4c, 0xa2,
- 0x79, 0x8f, 0xbd, 0x68, 0xdc, 0x63, 0xcd, 0xbe, 0x65, 0xd1, 0x3e, 0xfe,
- 0x35, 0xd8, 0x8f, 0x2a, 0xa2, 0x7d, 0x7c, 0xaf, 0x91, 0x48, 0xa7, 0xa1,
- 0xac, 0x41, 0x41, 0x99, 0x16, 0x63, 0xd6, 0xad, 0xb1, 0x5f, 0x92, 0x05,
- 0x69, 0xeb, 0x68, 0xcd, 0xc8, 0xe9, 0x4d, 0xa4, 0xa8, 0xc3, 0xe3, 0xa4,
- 0x2f, 0x21, 0xa7, 0x77, 0x0c, 0x69, 0x00, 0xf3, 0xfc, 0x94, 0x3f, 0x42,
- 0x68, 0xc3, 0x1c, 0xfd, 0x7d, 0x1c, 0x08, 0x6f, 0x2b, 0xd4, 0x91, 0x80,
- 0x66, 0x5f, 0x68, 0x12, 0x61, 0x62, 0xfa, 0x26, 0x31, 0x6e, 0x6f, 0x2a,
- 0x6d, 0x77, 0xaa, 0x40, 0x77, 0x32, 0x0c, 0x12, 0x65, 0x6e, 0x4b, 0x32,
- 0x2e, 0x99, 0x40, 0x4d, 0x8e, 0x58, 0x0e, 0x05, 0x39, 0xcc, 0xb3, 0x52,
- 0xfb, 0x15, 0x61, 0xe9, 0xc8, 0xeb, 0xc8, 0x24, 0x09, 0xe6, 0x47, 0x53,
- 0xa6, 0x0c, 0x61, 0x5f, 0x01, 0xe3, 0x5f, 0x49, 0x36, 0x3a, 0x2f, 0x4d,
- 0xbc, 0xfc, 0x34, 0xa9, 0xd5, 0x29, 0xae, 0x65, 0x4d, 0x60, 0x70, 0x82,
- 0x06, 0xba, 0xb1, 0xb5, 0xd9, 0x5b, 0x61, 0xd4, 0x08, 0x18, 0x14, 0x87,
- 0x40, 0x15, 0x02, 0x34, 0x08, 0xd2, 0x19, 0x38, 0x9a, 0xd0, 0x22, 0x89,
- 0xa7, 0xd3, 0xd6, 0x41, 0x54, 0x8c, 0x21, 0xaa, 0x3f, 0x1c, 0xc8, 0x6e,
- 0xbe, 0xaf, 0xa0, 0x96, 0x63, 0x6c, 0xed, 0xb6, 0x1a, 0xaf, 0x99, 0x0e,
- 0x07, 0x84, 0xce, 0xc5, 0xbc, 0x11, 0x68, 0x51, 0x84, 0xe4, 0x1c, 0xcd,
- 0xa7, 0xdc, 0x2a, 0x84, 0x7b, 0xff, 0x71, 0x3a, 0x86, 0x64, 0xd3, 0xa5,
- 0xc2, 0x14, 0xf8, 0xb5, 0x75, 0xce, 0xec, 0x52, 0x99, 0x8a, 0x5e, 0x03,
- 0xaf, 0x6d, 0x4f, 0x6b, 0xac, 0x3c, 0xbd, 0x75, 0xc7, 0xb2, 0x46, 0x9e,
- 0x19, 0xef, 0xf7, 0x6e, 0x03, 0xff, 0x73, 0xd4, 0xfb, 0x16, 0x86, 0xdf,
- 0xd8, 0x84, 0x7d, 0x9b, 0x45, 0x5b, 0x1b, 0x5b, 0x9b, 0xd1, 0xe6, 0xd6,
- 0xde, 0xe6, 0x8b, 0xbd, 0x8d, 0x8d, 0x25, 0x1a, 0xd3, 0xc0, 0x28, 0xf1,
- 0xaf, 0x32, 0x0c, 0x1d, 0xde, 0xe5, 0xf4, 0x62, 0xe0, 0x94, 0xab, 0x98,
- 0xe0, 0xc7, 0xd5, 0x19, 0xdd, 0xee, 0x2a, 0xd9, 0xb8, 0x14, 0x26, 0x15,
- 0x26, 0xe1, 0x45, 0xfb, 0xdf, 0x1c, 0xbd, 0x1f, 0x1e, 0x9f, 0xbe, 0xfb,
- 0x22, 0xe8, 0x84, 0x94, 0x5f, 0xe2, 0x5e, 0x67, 0x70, 0xa4, 0x0c, 0x10,
- 0xa3, 0x0d, 0x63, 0x60, 0x60, 0x48, 0xfd, 0xed, 0x74, 0xc6, 0x41, 0x93,
- 0xc2, 0x47, 0xda, 0x0c, 0x36, 0x1a, 0xa5, 0xb3, 0x9a, 0xe1, 0xd8, 0x34,
- 0x5a, 0xa2, 0x99, 0x93, 0x12, 0xe5, 0x20, 0x47, 0xd8, 0x46, 0x5f, 0xff,
- 0xb6, 0x69, 0xfe, 0xb6, 0xe5, 0xcb, 0x00, 0xfe, 0xc5, 0x76, 0x17, 0xea,
- 0x95, 0x1b, 0xd0, 0xa8, 0x18, 0x84, 0x53, 0xbb, 0x1f, 0xc2, 0x7c, 0xfb,
- 0x0d, 0xc6, 0x62, 0x44, 0x58, 0xec, 0x68, 0x9e, 0x06, 0x22, 0x46, 0xa3,
- 0x5a, 0xb5, 0x17, 0x36, 0xb4, 0xaa, 0xe8, 0xaf, 0x1f, 0x8e, 0x0f, 0x63,
- 0x8e, 0xf1, 0x93, 0xd8, 0x5d, 0x87, 0x13, 0x6d, 0x52, 0xee, 0xbc, 0x09,
- 0x85, 0xeb, 0x8d, 0x9c, 0xd4, 0xf8, 0xf9, 0x8c, 0x41, 0xfd, 0xb0, 0x21,
- 0x0e, 0x63, 0xee, 0xbb, 0x14, 0x6d, 0x0f, 0x87, 0x19, 0x5d, 0x8d, 0x17,
- 0xe1, 0xe1, 0x1b, 0xf2, 0x34, 0xb4, 0x9f, 0xdb, 0x0c, 0x3d, 0xb7, 0xe9,
- 0x3f, 0xb7, 0x15, 0x7a, 0x6e, 0xcb, 0x7f, 0x6e, 0x3b, 0xf4, 0x9c, 0xb3,
- 0x01, 0xfe, 0xf1, 0xd2, 0x5b, 0x52, 0x18, 0x0d, 0x3f, 0xb5, 0xe8, 0x00,
- 0x78, 0x8f, 0x6f, 0x5b, 0xef, 0xe8, 0xc2, 0x93, 0xd0, 0xf0, 0x0a, 0x1b,
- 0x2e, 0x32, 0x7e, 0xd6, 0xbe, 0x33, 0x8c, 0xeb, 0x72, 0xdd, 0x1e, 0x38,
- 0x5f, 0x73, 0x80, 0x05, 0x5a, 0x3e, 0xe3, 0xe5, 0xbc, 0xc4, 0x72, 0x8f,
- 0x3b, 0x0d, 0x80, 0x03, 0xa6, 0xf6, 0xa4, 0xda, 0xdc, 0xd6, 0x38, 0x51,
- 0xb4, 0x2f, 0x7f, 0x99, 0x63, 0x63, 0x6c, 0x0c, 0x22, 0xfb, 0xaa, 0xf6,
- 0xc9, 0x10, 0xcc, 0x4e, 0xdb, 0x04, 0x4c, 0xda, 0x0d, 0xd3, 0x6b, 0x11,
- 0xbd, 0x57, 0xd9, 0x16, 0x60, 0x7e, 0x3c, 0xcf, 0x43, 0xd6, 0x31, 0xf5,
- 0xab, 0xf0, 0x1e, 0xf2, 0x1a, 0x91, 0xe2, 0xfc, 0x9a, 0xbf, 0x8e, 0xf7,
- 0xaf, 0x4e, 0x4d, 0xc6, 0xe6, 0xd6, 0xe4, 0x9a, 0xdf, 0xdf, 0x1a, 0x0e,
- 0xac, 0x03, 0xc4, 0x85, 0xd3, 0xa8, 0x97, 0xb4, 0x89, 0x04, 0x1e, 0x81,
- 0x6f, 0xcb, 0xe0, 0x8d, 0xa9, 0x1a, 0x1b, 0xb9, 0x08, 0xaa, 0x6a, 0x1f,
- 0xde, 0x9f, 0x78, 0x36, 0x9b, 0xd9, 0x7c, 0xa4, 0xfd, 0xa0, 0x4a, 0xd7,
- 0xe1, 0x76, 0xa9, 0xd6, 0x29, 0xfc, 0x2b, 0x5f, 0xbd, 0xae, 0xa7, 0x93,
- 0x07, 0xbc, 0x8e, 0xd2, 0x1a, 0x9b, 0x1b, 0xa8, 0x8e, 0x39, 0xd3, 0xcc,
- 0x02, 0x9c, 0x92, 0x24, 0xe2, 0x1d, 0xd5, 0xe2, 0xc4, 0xd6, 0x70, 0xe8,
- 0xed, 0xc0, 0xdc, 0x1f, 0x3c, 0x43, 0x9b, 0xa8, 0x09, 0x91, 0x06, 0x65,
- 0x20, 0xd7, 0x13, 0x6a, 0x27, 0xcf, 0xa5, 0x15, 0xb6, 0xd1, 0x13, 0xbe,
- 0x20, 0xc1, 0xd9, 0x00, 0x40, 0x25, 0x75, 0x74, 0x02, 0x23, 0xa7, 0x12,
- 0xa8, 0xd3, 0x10, 0xb9, 0x2a, 0x37, 0xa1, 0x28, 0xb5, 0xe1, 0xc5, 0xa0,
- 0x86, 0xfb, 0xbb, 0x9b, 0x31, 0x0d, 0xc6, 0x86, 0xe5, 0x7c, 0x3c, 0x38,
- 0x1a, 0x7e, 0xdc, 0xdc, 0x7a, 0xf1, 0xf1, 0xeb, 0xc3, 0xb7, 0x1f, 0x87,
- 0x6f, 0x0e, 0xb6, 0x76, 0x97, 0xad, 0x45, 0xd4, 0xc1, 0x24, 0xb6, 0x3a,
- 0x2f, 0xa9, 0x9b, 0xe4, 0x02, 0x37, 0x2b, 0xcc, 0x01, 0xd3, 0xe9, 0x08,
- 0x71, 0x68, 0x1f, 0xff, 0xfb, 0x85, 0x0f, 0x2c, 0x1b, 0x11, 0xa9, 0xbd,
- 0x52, 0x4c, 0xb4, 0xfd, 0x11, 0x09, 0x8b, 0xf9, 0x84, 0xe9, 0xd2, 0xca,
- 0x48, 0xec, 0x48, 0x5d, 0x24, 0xf6, 0xe9, 0x0d, 0xdf, 0x9f, 0xf5, 0xfa,
- 0x92, 0x04, 0x05, 0x1f, 0x88, 0xe1, 0xdf, 0x11, 0x39, 0xc8, 0xa2, 0x68,
- 0x77, 0x63, 0x77, 0x47, 0xca, 0x15, 0x79, 0x8e, 0x8c, 0x4e, 0xe8, 0xa7,
- 0x8f, 0xd1, 0x2f, 0x4d, 0xb1, 0x28, 0xb1, 0x95, 0x03, 0xf8, 0x88, 0xee,
- 0xea, 0xc6, 0x0a, 0x39, 0x65, 0xb7, 0xcf, 0xe5, 0x2c, 0xdd, 0x96, 0x8f,
- 0x69, 0xee, 0x0a, 0xbc, 0x4d, 0xd3, 0x6c, 0x3a, 0x7b, 0x31, 0x8f, 0x57,
- 0x92, 0x2f, 0x25, 0xfc, 0x2f, 0x32, 0x2f, 0x08, 0xe1, 0xa0, 0x42, 0xd0,
- 0x3d, 0x33, 0x8c, 0x57, 0x6a, 0x16, 0x2d, 0x04, 0xeb, 0xab, 0xeb, 0x57,
- 0x03, 0x71, 0x1d, 0x67, 0x0a, 0x08, 0xf6, 0x75, 0x3e, 0xc7, 0x3d, 0xa1,
- 0x71, 0x74, 0x18, 0x19, 0xe5, 0x09, 0x5c, 0x68, 0xe8, 0x83, 0xc3, 0x2c,
- 0xc7, 0x70, 0xb2, 0x37, 0x2d, 0x96, 0x32, 0x3b, 0xb2, 0xcf, 0x66, 0x49,
- 0x88, 0xa9, 0xcc, 0x33, 0xc8, 0x00, 0xe4, 0xb5, 0xe0, 0x7e, 0x1e, 0x29,
- 0x71, 0x5b, 0x3b, 0xc7, 0xd3, 0x74, 0x17, 0xed, 0x42, 0xd9, 0x52, 0x88,
- 0x7f, 0x67, 0x39, 0x03, 0xcd, 0xb8, 0x93, 0xdb, 0xc9, 0x72, 0x12, 0x4d,
- 0x1e, 0x83, 0x27, 0xe9, 0xe2, 0xa0, 0x5c, 0xa0, 0x58, 0x48, 0x6f, 0x80,
- 0xe5, 0xa9, 0x6c, 0x16, 0x3c, 0xbb, 0x1d, 0x3b, 0x73, 0xa1, 0xff, 0xfc,
- 0x1a, 0x44, 0xa7, 0x81, 0x82, 0x88, 0x05, 0x74, 0x86, 0xb5, 0xb6, 0x3a,
- 0x7a, 0x14, 0xc1, 0x85, 0xde, 0x4f, 0x24, 0xb7, 0x38, 0x2a, 0xda, 0xa7,
- 0x93, 0x74, 0x0e, 0xef, 0xd0, 0xfd, 0xf7, 0xdd, 0x04, 0x1d, 0xac, 0xb5,
- 0x11, 0xa8, 0x50, 0x85, 0x95, 0x92, 0xd7, 0x58, 0xe5, 0xde, 0xc4, 0x88,
- 0x71, 0xb4, 0x57, 0xd2, 0x56, 0xf5, 0xaa, 0x7c, 0x10, 0x1b, 0x86, 0xa0,
- 0x61, 0xa4, 0x17, 0x3d, 0x0e, 0x22, 0xde, 0xbb, 0xcf, 0xfc, 0xbe, 0x1c,
- 0x18, 0xe3, 0x94, 0x4f, 0x90, 0xbf, 0x80, 0x3f, 0xdf, 0x88, 0xcf, 0xa3,
- 0x86, 0x66, 0xac, 0x50, 0x02, 0xbb, 0x2f, 0x22, 0x46, 0xa3, 0x68, 0x0d,
- 0xf7, 0x11, 0xc5, 0xde, 0x47, 0xd9, 0x80, 0x0d, 0x4d, 0x47, 0x32, 0x49,
- 0xe1, 0x38, 0x0e, 0x68, 0xfe, 0x98, 0xf2, 0x50, 0x21, 0xb6, 0xe1, 0x43,
- 0xb8, 0xb6, 0x38, 0x0e, 0x08, 0x48, 0x4c, 0x40, 0xd7, 0x10, 0xaa, 0xaa,
- 0x98, 0xad, 0x16, 0x92, 0x68, 0xf7, 0x24, 0xc6, 0x9e, 0x12, 0xaa, 0xf9,
- 0x2d, 0x63, 0x9e, 0xe0, 0xaa, 0xe7, 0x0d, 0x5b, 0x7e, 0xf7, 0x59, 0x27,
- 0x6e, 0x75, 0x87, 0xf5, 0x59, 0x61, 0xf3, 0x89, 0xac, 0xb0, 0xf9, 0xdf,
- 0x8a, 0x15, 0x36, 0xff, 0xcf, 0x61, 0x85, 0xcd, 0xdf, 0x8c, 0x15, 0xb6,
- 0x9e, 0xc8, 0x0a, 0x5b, 0xff, 0xad, 0x58, 0x61, 0xeb, 0xff, 0x1c, 0x56,
- 0xd8, 0xfa, 0xcd, 0x58, 0x61, 0xfb, 0x89, 0xac, 0xb0, 0xfd, 0xeb, 0xb3,
- 0xc2, 0xbf, 0x9b, 0x0b, 0xe8, 0x9d, 0x49, 0xbf, 0x55, 0x0b, 0x2f, 0x33,
- 0x19, 0xcf, 0x36, 0x17, 0x18, 0x3d, 0xe0, 0xf8, 0x7b, 0xb1, 0x17, 0xab,
- 0xa7, 0x6d, 0xf0, 0xf6, 0x93, 0x36, 0x78, 0x6b, 0x51, 0xbb, 0x26, 0xeb,
- 0x40, 0x09, 0x7a, 0x08, 0x03, 0x30, 0x71, 0x09, 0xe6, 0x58, 0xa3, 0x41,
- 0xd9, 0xdc, 0xea, 0x3b, 0xde, 0x61, 0xf5, 0x3e, 0x84, 0xb6, 0x58, 0x7c,
- 0xd7, 0xfe, 0x26, 0x4b, 0x96, 0x30, 0x77, 0xea, 0x60, 0xf3, 0xcd, 0x78,
- 0x11, 0xc9, 0x27, 0xe6, 0x79, 0x08, 0xaf, 0xb3, 0x2b, 0x6c, 0x9b, 0xf5,
- 0x04, 0x22, 0xfe, 0x5a, 0x99, 0x88, 0x4e, 0xe2, 0xdf, 0xef, 0x93, 0x89,
- 0x18, 0xce, 0x34, 0x6c, 0x39, 0xc1, 0xdc, 0x93, 0x5c, 0xc6, 0x29, 0x48,
- 0xb5, 0xb1, 0x5f, 0x23, 0x4d, 0x5c, 0xee, 0xc6, 0x96, 0xd0, 0xcd, 0x4c,
- 0x7d, 0x6d, 0xc7, 0xdc, 0x4f, 0x05, 0x18, 0x3f, 0x3e, 0x92, 0x77, 0x6d,
- 0x6a, 0x11, 0x1f, 0x11, 0xbf, 0x17, 0x89, 0x00, 0xad, 0x99, 0xd6, 0x1b,
- 0x8a, 0x14, 0x2e, 0x95, 0x71, 0x7d, 0xa9, 0x5b, 0xd3, 0x8f, 0xb8, 0xf0,
- 0xd3, 0xd4, 0x8c, 0x28, 0xd8, 0xf6, 0x8f, 0xd2, 0x5c, 0x97, 0xb7, 0x16,
- 0xed, 0x9a, 0x97, 0x6e, 0x1a, 0xab, 0x24, 0x68, 0xd2, 0x30, 0x19, 0xa5,
- 0x71, 0x52, 0x8d, 0xb2, 0x2c, 0x1c, 0x1f, 0xd2, 0xfc, 0xbd, 0x84, 0xca,
- 0x03, 0x22, 0x7a, 0x3e, 0xc2, 0xc4, 0x1e, 0xa4, 0x0a, 0x0a, 0x01, 0xbc,
- 0x58, 0xa8, 0x1b, 0x0b, 0x12, 0x01, 0xc4, 0xd5, 0x55, 0xa1, 0x01, 0xef,
- 0x7e, 0xa0, 0x21, 0x23, 0x4a, 0x24, 0xfa, 0x7d, 0xca, 0x2d, 0x4d, 0xb1,
- 0x3c, 0x32, 0xcb, 0x31, 0xe3, 0x5e, 0x0a, 0x32, 0x25, 0x5f, 0x82, 0xa3,
- 0x37, 0xad, 0x56, 0x9a, 0x1f, 0x3c, 0x37, 0x57, 0x2f, 0xee, 0x61, 0xa4,
- 0x0c, 0x7f, 0x4f, 0xb6, 0x15, 0xf6, 0x1a, 0x4d, 0x04, 0x95, 0x45, 0x5e,
- 0xd6, 0x9e, 0x22, 0x8b, 0x72, 0x40, 0xb1, 0x28, 0x3f, 0x9b, 0x66, 0x93,
- 0x84, 0x32, 0x52, 0x4d, 0xc2, 0x15, 0x3a, 0x30, 0x40, 0x32, 0x48, 0x9b,
- 0x50, 0x86, 0x7a, 0x49, 0xef, 0x18, 0x94, 0x90, 0x56, 0x9b, 0xfb, 0xf5,
- 0x12, 0xd7, 0x0a, 0xd9, 0x77, 0x30, 0x3c, 0x3c, 0x3e, 0x6e, 0x00, 0x18,
- 0x22, 0xd5, 0xb8, 0x95, 0x3b, 0x81, 0x98, 0x57, 0xd8, 0x40, 0x3a, 0x2d,
- 0x6d, 0xb7, 0xcd, 0x40, 0x28, 0x72, 0x0a, 0x52, 0x81, 0x12, 0x13, 0x40,
- 0x3e, 0x65, 0xdc, 0x53, 0x88, 0x7a, 0xbf, 0x92, 0x09, 0x99, 0xc3, 0x34,
- 0x33, 0xec, 0x7c, 0x74, 0x3d, 0x9f, 0x26, 0x79, 0xf5, 0xff, 0xbb, 0xf4,
- 0x56, 0x97, 0x77, 0x27, 0xc5, 0xd5, 0xd2, 0x09, 0xae, 0x94, 0x6a, 0xe7,
- 0xe4, 0xda, 0x71, 0x29, 0x8b, 0x8c, 0x3b, 0xe8, 0x44, 0xd4, 0xf1, 0x5d,
- 0x60, 0x74, 0x26, 0xfc, 0xf4, 0x4a, 0xef, 0x98, 0x21, 0x01, 0xda, 0xb9,
- 0x42, 0x25, 0xa9, 0x62, 0x15, 0x85, 0x34, 0x39, 0x80, 0x5d, 0xd5, 0x30,
- 0x75, 0xdc, 0x14, 0xea, 0x13, 0xc8, 0x83, 0xc3, 0x8e, 0xe8, 0x2c, 0xa9,
- 0xf0, 0xcb, 0xe4, 0x9e, 0x78, 0xfd, 0x4e, 0x29, 0xb7, 0xe7, 0xdf, 0xbf,
- 0x2b, 0x81, 0x25, 0x48, 0x6b, 0x23, 0xe5, 0x30, 0x2c, 0xa9, 0x16, 0x3c,
- 0x72, 0x07, 0xfe, 0xbb, 0x8a, 0x38, 0x42, 0x68, 0x33, 0x42, 0xee, 0x11,
- 0x52, 0x8e, 0xb4, 0xf6, 0xde, 0x1f, 0x51, 0x38, 0x7a, 0xce, 0xa3, 0x47,
- 0x89, 0x4a, 0xe0, 0xf5, 0xff, 0x7f, 0xca, 0x93, 0x65, 0x25, 0x89, 0x8d,
- 0xe4, 0x39, 0x4c, 0x2c, 0x2a, 0x8b, 0xe1, 0xf1, 0x41, 0x18, 0x9a, 0xaf,
- 0x2d, 0x49, 0xfc, 0x84, 0x7b, 0x77, 0x54, 0x97, 0x9b, 0xe7, 0x79, 0x76,
- 0x17, 0x4b, 0xbb, 0x82, 0xfd, 0x59, 0x52, 0x5f, 0x7f, 0x11, 0xd6, 0x80,
- 0x0e, 0xd9, 0xaa, 0x88, 0x14, 0x20, 0x8a, 0xc8, 0xf9, 0x01, 0x5e, 0x86,
- 0x2d, 0x9b, 0x62, 0xdd, 0x04, 0x8f, 0xd1, 0x37, 0x45, 0x13, 0xb0, 0x21,
- 0xa4, 0x05, 0x05, 0xea, 0x2e, 0xf2, 0xb4, 0x46, 0x0f, 0xe0, 0xb2, 0x54,
- 0x75, 0xa7, 0xca, 0x7f, 0xc4, 0x38, 0xe1, 0x25, 0x4f, 0x78, 0x72, 0x51,
- 0x21, 0x29, 0x6a, 0x77, 0xb8, 0x66, 0x16, 0x52, 0xb3, 0x5c, 0xf4, 0x9c,
- 0x1a, 0x4d, 0xcd, 0x10, 0x0f, 0x27, 0xa6, 0xdc, 0x84, 0xe0, 0xc9, 0x67,
- 0x09, 0xef, 0x34, 0x30, 0x6f, 0xe1, 0xbe, 0x61, 0x8a, 0xe4, 0x44, 0x12,
- 0x93, 0x0a, 0xa9, 0xa3, 0x25, 0x55, 0xff, 0xc3, 0xfb, 0x93, 0x70, 0x75,
- 0x4a, 0x29, 0x41, 0x0e, 0x7e, 0x89, 0x6e, 0xff, 0xac, 0x9d, 0x43, 0x02,
- 0x2f, 0xbb, 0x3d, 0xd4, 0x92, 0x19, 0xde, 0x00, 0x01, 0x2d, 0xdb, 0xf9,
- 0x3a, 0x77, 0xbf, 0x79, 0x77, 0x7a, 0x7e, 0xc4, 0xa2, 0x1f, 0x6d, 0x70,
- 0x0a, 0x73, 0x32, 0xfe, 0x05, 0x2a, 0x02, 0xd4, 0x46, 0x7e, 0x5d, 0xd3,
- 0x84, 0x27, 0x3e, 0x70, 0x0b, 0x17, 0xe2, 0x14, 0x9c, 0xa6, 0x88, 0xc0,
- 0xaf, 0x13, 0x42, 0x35, 0xb9, 0xa1, 0xb5, 0x1d, 0xb2, 0xf7, 0x81, 0xb5,
- 0xfd, 0xe6, 0x22, 0x58, 0xe6, 0x78, 0x06, 0x8b, 0x93, 0xf9, 0x78, 0x9d,
- 0xe5, 0x9f, 0xcc, 0xbc, 0x4a, 0x3e, 0x8c, 0xf6, 0x6b, 0x5a, 0xaa, 0xe3,
- 0x90, 0xef, 0xd2, 0x57, 0x8a, 0x55, 0x26, 0xcd, 0xab, 0x54, 0xac, 0x27,
- 0xee, 0x08, 0x8b, 0xd0, 0x7a, 0x93, 0xec, 0x53, 0x3a, 0xb9, 0x17, 0xa8,
- 0x16, 0x8a, 0xf7, 0xd0, 0xc6, 0x62, 0x2d, 0x6a, 0xa9, 0xb8, 0xa4, 0x5e,
- 0xc7, 0xdb, 0x6c, 0x32, 0x70, 0x01, 0x81, 0x24, 0x8c, 0xaa, 0x40, 0x6d,
- 0xab, 0x60, 0xed, 0xb3, 0xad, 0xc6, 0x02, 0xe4, 0xec, 0xc3, 0x39, 0x1a,
- 0x09, 0x53, 0x6a, 0x20, 0x0a, 0x1f, 0x6e, 0xc3, 0x24, 0x74, 0x48, 0x14,
- 0x05, 0x0b, 0xb5, 0x84, 0x42, 0x71, 0xbd, 0x9a, 0x68, 0x4b, 0x50, 0xcc,
- 0x6a, 0x5a, 0x53, 0x3b, 0x13, 0xc4, 0x2a, 0xf0, 0x82, 0x73, 0xd2, 0xbc,
- 0x3c, 0x24, 0x49, 0x64, 0x93, 0xbb, 0x20, 0x3a, 0x98, 0x50, 0x7a, 0x58,
- 0x9d, 0x62, 0x78, 0xaf, 0xfd, 0x9d, 0x81, 0xfb, 0x1d, 0xc6, 0x81, 0x5a,
- 0x0b, 0xf4, 0x5d, 0x6f, 0x48, 0x62, 0xe7, 0xdb, 0x38, 0x4f, 0xc5, 0xb5,
- 0x95, 0x99, 0x51, 0x77, 0x1a, 0xac, 0x81, 0xa6, 0x94, 0x57, 0x5f, 0x08,
- 0x10, 0x98, 0xb4, 0xf5, 0x41, 0x51, 0x6b, 0x56, 0xba, 0xe9, 0xb4, 0x4a,
- 0x57, 0xae, 0x11, 0x6e, 0xc0, 0x2a, 0xab, 0xc5, 0xb4, 0x3b, 0x6e, 0x99,
- 0x19, 0x7b, 0xec, 0x9d, 0x8c, 0x03, 0x24, 0xfd, 0x5b, 0x0b, 0x30, 0x10,
- 0xa5, 0xba, 0x7f, 0x9c, 0xf5, 0x4e, 0xc1, 0xc3, 0x44, 0x2d, 0xc3, 0x05,
- 0x9b, 0xc1, 0x6b, 0xd9, 0x4e, 0x3b, 0x4a, 0x4a, 0x13, 0x50, 0xf4, 0x08,
- 0xdf, 0xf0, 0x07, 0xfb, 0x13, 0x8d, 0x32, 0x4b, 0xb2, 0xd2, 0xd0, 0x0a,
- 0xd3, 0x16, 0xf0, 0x30, 0xb4, 0xf9, 0x4a, 0x38, 0x8f, 0xf2, 0xef, 0x0a,
- 0x86, 0x46, 0x1e, 0xf0, 0x51, 0x20, 0x41, 0x65, 0xc0, 0x52, 0x7a, 0x78,
- 0x3b, 0x5e, 0xc0, 0xc2, 0x7b, 0x64, 0x3e, 0xf2, 0xf4, 0xe0, 0xcb, 0x9e,
- 0xf2, 0xe8, 0xce, 0x23, 0x4a, 0xca, 0x2b, 0xf2, 0xf5, 0xf5, 0xd9, 0x75,
- 0xc0, 0x10, 0xf4, 0xe4, 0x49, 0xd0, 0x00, 0xbc, 0x7c, 0x7f, 0x3a, 0x9f,
- 0xd4, 0xd9, 0xcc, 0x3b, 0x44, 0x38, 0x4a, 0xc5, 0x8e, 0x27, 0x61, 0x0c,
- 0x5c, 0x58, 0x23, 0x24, 0x4f, 0x58, 0x86, 0xf8, 0x53, 0x9d, 0x20, 0x57,
- 0x5e, 0x45, 0x5d, 0xf5, 0xec, 0x2c, 0x5f, 0xf1, 0x4d, 0x94, 0x79, 0xe1,
- 0xa6, 0x9f, 0x3c, 0x29, 0x03, 0x98, 0x9f, 0x73, 0x5d, 0x3e, 0x33, 0xc5,
- 0x9e, 0x73, 0x60, 0x39, 0x7f, 0x2e, 0xe9, 0x46, 0xb7, 0x65, 0xcd, 0x01,
- 0x43, 0xd0, 0xbb, 0xdb, 0x5b, 0x5b, 0x11, 0xeb, 0x4c, 0x8c, 0x62, 0xc6,
- 0x29, 0x9c, 0x88, 0x54, 0x9c, 0x26, 0x54, 0x34, 0xcd, 0x57, 0x12, 0x76,
- 0xc7, 0x4b, 0x38, 0x29, 0x01, 0xe8, 0xdc, 0x51, 0x2c, 0xc6, 0x8a, 0x3d,
- 0x76, 0xc9, 0x83, 0x93, 0x5c, 0x8c, 0xef, 0xed, 0xc0, 0xc0, 0x31, 0x25,
- 0xca, 0x29, 0x90, 0x2e, 0x52, 0xdf, 0xce, 0xf1, 0xc9, 0x2a, 0x0a, 0x02,
- 0xeb, 0x4c, 0x24, 0xd9, 0x18, 0x2f, 0x0c, 0x6a, 0xa5, 0x9a, 0x23, 0x1b,
- 0xe6, 0xf4, 0x57, 0x6c, 0x08, 0x36, 0x2f, 0xa9, 0xe9, 0x1f, 0xd6, 0x76,
- 0xe7, 0xf7, 0xd1, 0x6d, 0x72, 0xbf, 0x6c, 0x56, 0xdf, 0x79, 0x77, 0x22,
- 0x5d, 0xc7, 0xf3, 0xbd, 0x6c, 0x7a, 0xf5, 0xfd, 0x66, 0xbc, 0xb9, 0xb1,
- 0xb1, 0xf1, 0xe3, 0x60, 0x86, 0xfc, 0xc6, 0x59, 0xbd, 0xf0, 0xdf, 0x41,
- 0x23, 0xa9, 0xbe, 0xe3, 0x76, 0x76, 0xd8, 0xaf, 0xf7, 0x0f, 0xfc, 0x63,
- 0xb3, 0x8f, 0xff, 0xdd, 0xfa, 0x67, 0x6f, 0xb9, 0x1b, 0xfa, 0x6b, 0x3c,
- 0x54, 0x98, 0x89, 0x4a, 0x7a, 0x8b, 0xa9, 0x3a, 0x6b, 0x28, 0x2d, 0xf0,
- 0xc5, 0x7d, 0xf8, 0x8f, 0x17, 0x1e, 0x35, 0x48, 0x9c, 0xc8, 0x97, 0xb4,
- 0xc5, 0xf5, 0xe8, 0xda, 0x2b, 0xf0, 0xa2, 0xbb, 0x00, 0x1b, 0x8f, 0x23,
- 0xa6, 0x81, 0xe9, 0x9c, 0x0e, 0x07, 0xc3, 0x6b, 0xf5, 0x2a, 0x5a, 0xac,
- 0x0c, 0x0b, 0x83, 0xae, 0x56, 0x6b, 0x5c, 0x70, 0xcf, 0xb5, 0x03, 0x2c,
- 0x60, 0x03, 0xda, 0xa6, 0xa3, 0x97, 0xe3, 0x54, 0xb0, 0xaa, 0x8c, 0x11,
- 0x37, 0xf0, 0x40, 0x8d, 0xae, 0xd3, 0xa9, 0x08, 0xdf, 0x55, 0x2d, 0xd6,
- 0xea, 0x21, 0x8d, 0x80, 0x44, 0x3d, 0xff, 0x7e, 0xec, 0x5d, 0xca, 0x6f,
- 0x60, 0x31, 0x6b, 0x02, 0xe0, 0x69, 0xae, 0x4c, 0xca, 0x70, 0x4d, 0xa2,
- 0xab, 0x39, 0xba, 0x8b, 0x2e, 0x12, 0xb9, 0x9b, 0x14, 0x4b, 0x96, 0x32,
- 0x2f, 0x42, 0xc0, 0xc3, 0x20, 0x60, 0xd3, 0x92, 0xae, 0x44, 0x38, 0xae,
- 0x17, 0xb1, 0xe8, 0x70, 0x72, 0x43, 0x53, 0x5a, 0x31, 0x1c, 0xff, 0x57,
- 0xc7, 0x87, 0x20, 0xe1, 0x5e, 0x9f, 0x9f, 0xf5, 0x09, 0x29, 0xa3, 0x4f,
- 0xc0, 0x0f, 0x6d, 0xc1, 0x43, 0xf0, 0x19, 0x88, 0x57, 0x85, 0x27, 0x55,
- 0xd2, 0x31, 0x12, 0x5b, 0x9f, 0x62, 0x41, 0xff, 0x14, 0x20, 0x90, 0xda,
- 0x59, 0xde, 0x66, 0x78, 0x5b, 0x04, 0xca, 0x32, 0x1b, 0x6a, 0xb7, 0x81,
- 0x60, 0xdd, 0xd9, 0x1d, 0x6c, 0xf0, 0x1a, 0x91, 0x84, 0x92, 0x3a, 0x2d,
- 0x50, 0x47, 0xe4, 0x44, 0xd6, 0x54, 0xa2, 0x24, 0x9c, 0x85, 0x68, 0xa6,
- 0xd3, 0x8f, 0xb8, 0x13, 0x39, 0xfd, 0x3b, 0xd6, 0xdf, 0x3a, 0x25, 0x4c,
- 0x0b, 0x6d, 0x15, 0xb7, 0x45, 0x27, 0x9e, 0xcb, 0x56, 0x6f, 0x67, 0xea,
- 0xed, 0x1d, 0x29, 0x1e, 0xa1, 0xe0, 0xdd, 0x87, 0x9a, 0x73, 0x13, 0x4f,
- 0x20, 0x53, 0x48, 0x65, 0x71, 0xdf, 0x74, 0xa9, 0x8f, 0x0b, 0xe4, 0x77,
- 0xb9, 0xfe, 0x04, 0x75, 0x24, 0x3e, 0x75, 0xb2, 0x59, 0x43, 0xca, 0x8e,
- 0x57, 0xf9, 0xd0, 0x06, 0x8b, 0x3b, 0xcd, 0x15, 0x39, 0xac, 0x4f, 0x9a,
- 0x64, 0x36, 0x9a, 0xa3, 0x87, 0x0a, 0x99, 0x17, 0x81, 0x70, 0xa5, 0x37,
- 0x28, 0x86, 0xfb, 0x91, 0xb4, 0xb4, 0x59, 0x01, 0x88, 0x58, 0x44, 0x38,
- 0x61, 0xa3, 0x4c, 0x14, 0x78, 0xfb, 0x9e, 0x85, 0xf4, 0x40, 0x35, 0x0a,
- 0xaf, 0x82, 0x7b, 0xd0, 0x0f, 0xa6, 0x83, 0xe8, 0xab, 0xf4, 0x36, 0x29,
- 0xd3, 0xff, 0x58, 0x56, 0xd3, 0x87, 0xff, 0x2e, 0x25, 0x33, 0x8c, 0xe5,
- 0xc7, 0x42, 0xa3, 0x51, 0xdd, 0x63, 0xc4, 0xc6, 0x57, 0xd2, 0x32, 0x96,
- 0x8d, 0xa0, 0x10, 0xd8, 0x93, 0x20, 0xc0, 0x48, 0xdd, 0x1f, 0xfb, 0xdd,
- 0x54, 0xa7, 0x1f, 0x60, 0x48, 0x87, 0x0f, 0x03, 0xed, 0x21, 0x52, 0x4a,
- 0xb3, 0x4f, 0xd2, 0x3c, 0xd0, 0x21, 0x7e, 0x94, 0x3a, 0xd8, 0x7b, 0x22,
- 0x91, 0xe8, 0x06, 0x66, 0x2f, 0x0d, 0x67, 0x0e, 0xf5, 0xfe, 0x8c, 0x09,
- 0x17, 0x9f, 0x1f, 0xf4, 0x5a, 0x5e, 0x22, 0x0f, 0x09, 0x64, 0x8e, 0x64,
- 0xa6, 0x3b, 0xaf, 0x69, 0xa0, 0xcb, 0x4d, 0x87, 0x37, 0x2b, 0x2e, 0x9f,
- 0x34, 0x2b, 0x64, 0xe7, 0xdb, 0x2c, 0xdf, 0xde, 0x92, 0x6d, 0x58, 0x36,
- 0xa4, 0xf2, 0x95, 0x0f, 0x82, 0xb4, 0xfe, 0xfe, 0xe8, 0xe0, 0xd5, 0xdb,
- 0xa3, 0x07, 0xc0, 0x78, 0xc4, 0xd4, 0xc4, 0x69, 0x7a, 0x96, 0xe6, 0x81,
- 0x36, 0xec, 0x8d, 0x93, 0x2b, 0x5c, 0x41, 0x30, 0xbf, 0x45, 0x8c, 0x4d,
- 0x95, 0xe3, 0xa4, 0x2c, 0xe0, 0x2b, 0x07, 0xf4, 0x0a, 0xa7, 0x20, 0x99,
- 0x0a, 0x1d, 0x17, 0x9c, 0x58, 0x43, 0x62, 0xad, 0xb3, 0x5b, 0xe8, 0x9d,
- 0x7a, 0x31, 0x49, 0xf2, 0x4f, 0xa6, 0xb2, 0x96, 0x07, 0x02, 0x59, 0x30,
- 0x2f, 0x19, 0x60, 0xd2, 0xfe, 0x50, 0xf6, 0x85, 0x95, 0x9e, 0xd6, 0x70,
- 0x7f, 0x9f, 0xa3, 0xc9, 0x01, 0x52, 0xa0, 0x24, 0xc8, 0x34, 0xda, 0x2f,
- 0xa9, 0xfe, 0x75, 0xb9, 0xc1, 0x80, 0x9a, 0xd2, 0xe1, 0x7d, 0xa3, 0x17,
- 0x58, 0x5a, 0xfa, 0x98, 0xc4, 0x9c, 0xda, 0xc8, 0x58, 0x71, 0x5a, 0x47,
- 0xdc, 0x71, 0x98, 0x25, 0xdf, 0x12, 0xef, 0x14, 0x2a, 0xa0, 0x9b, 0xce,
- 0xea, 0x7b, 0xa3, 0xe6, 0x91, 0xb3, 0xb9, 0x4d, 0xe1, 0xd5, 0x5e, 0x6f,
- 0xad, 0x6f, 0x7a, 0xd2, 0x7b, 0xa1, 0x03, 0x44, 0x8f, 0xd1, 0xce, 0x83,
- 0xb2, 0x08, 0xec, 0xc1, 0x9d, 0xa2, 0x91, 0xc0, 0x75, 0x1e, 0x6c, 0x67,
- 0x51, 0xe4, 0xc3, 0xe4, 0x7b, 0xce, 0xa8, 0x3f, 0x8d, 0x27, 0x67, 0x89,
- 0xbe, 0x91, 0x56, 0xe8, 0x1a, 0xa8, 0xee, 0x94, 0xaa, 0x2e, 0x5d, 0x35,
- 0xb2, 0x9a, 0xa1, 0x6b, 0x64, 0xb5, 0x17, 0xf5, 0xd6, 0x7e, 0x67, 0x2f,
- 0xcd, 0x41, 0xd4, 0x63, 0xb6, 0xda, 0xd8, 0x78, 0xbe, 0xa4, 0x8a, 0xe2,
- 0xec, 0x69, 0xa3, 0xc5, 0x2c, 0xff, 0xc8, 0x61, 0x7a, 0xd3, 0xa5, 0x1a,
- 0xd4, 0x15, 0xf8, 0xef, 0x9e, 0xe6, 0x19, 0x75, 0x29, 0x2e, 0x46, 0x6f,
- 0x6c, 0x74, 0x81, 0xa4, 0x34, 0x27, 0x31, 0xfd, 0x08, 0xa7, 0x99, 0x8d,
- 0x24, 0x9b, 0xe8, 0x15, 0xca, 0xcd, 0x1c, 0x44, 0xa7, 0x06, 0xb9, 0x3d,
- 0xce, 0x59, 0x3e, 0xd6, 0xe5, 0x48, 0xbb, 0x6b, 0xe2, 0xdf, 0xa5, 0x7e,
- 0x2b, 0x99, 0x04, 0x35, 0x18, 0xea, 0x77, 0x5a, 0x65, 0xd4, 0x96, 0xdd,
- 0xa8, 0x40, 0x4e, 0x8b, 0x69, 0x9c, 0xa2, 0xeb, 0x7d, 0x00, 0x12, 0x00,
- 0x4f, 0x32, 0x36, 0xa6, 0x57, 0x27, 0xdc, 0x4e, 0xaf, 0x32, 0x97, 0x6b,
- 0xd7, 0x7a, 0x2b, 0x49, 0x01, 0x9d, 0x00, 0xff, 0xcc, 0x67, 0x91, 0xb5,
- 0xcc, 0x18, 0xe6, 0x1c, 0x78, 0x75, 0x52, 0xe4, 0x7d, 0xaf, 0xc1, 0x0c,
- 0xd5, 0xdb, 0x73, 0x54, 0x84, 0x8a, 0xa0, 0xa6, 0xb3, 0x02, 0x74, 0x86,
- 0x8b, 0x49, 0x6a, 0x42, 0xb4, 0xfc, 0xa6, 0x4a, 0x02, 0xfb, 0x71, 0x3c,
- 0xb1, 0xa1, 0xbb, 0x5a, 0x4b, 0xa3, 0x71, 0xaa, 0x66, 0x33, 0x80, 0xb9,
- 0xfb, 0x0c, 0xcd, 0xe4, 0x2d, 0x09, 0xee, 0x5a, 0x91, 0xba, 0xd2, 0xef,
- 0x26, 0xe3, 0x7c, 0xb7, 0xca, 0xa5, 0xd5, 0x35, 0x6c, 0x8b, 0xeb, 0xba,
- 0x95, 0xa6, 0x41, 0x70, 0x9a, 0x3d, 0xab, 0x93, 0x80, 0x32, 0xb9, 0xec,
- 0x0a, 0x28, 0x4c, 0x3d, 0xbc, 0x31, 0x5d, 0x1d, 0x4b, 0xc4, 0x6c, 0x79,
- 0x29, 0xda, 0x12, 0x69, 0xce, 0x8e, 0xb9, 0x42, 0x5b, 0x4d, 0x45, 0x23,
- 0xbf, 0x6b, 0xe0, 0x98, 0xdb, 0xd4, 0x56, 0x3c, 0xa2, 0x10, 0xe7, 0x1e,
- 0x0b, 0xbf, 0xf8, 0xda, 0xc6, 0xc2, 0x36, 0xb8, 0xb4, 0xb8, 0xe5, 0x38,
- 0x12, 0xa7, 0xb2, 0x94, 0xaf, 0x7c, 0x84, 0x2a, 0x5e, 0xa9, 0xed, 0xfb,
- 0xa1, 0x78, 0xcb, 0x8c, 0x5a, 0x45, 0x8a, 0xc4, 0x4d, 0xc6, 0xf4, 0xe7,
- 0xf4, 0xe0, 0x04, 0x6e, 0x28, 0x5a, 0x12, 0x17, 0xcd, 0x79, 0x0e, 0xef,
- 0x34, 0x61, 0x24, 0x1e, 0xd4, 0x8a, 0x11, 0x7a, 0x32, 0x23, 0xa7, 0x37,
- 0xdf, 0x7b, 0xd7, 0x0a, 0xf8, 0x89, 0xfd, 0xee, 0xb3, 0x14, 0xb1, 0xaf,
- 0x68, 0x15, 0x89, 0x62, 0xbd, 0x78, 0xe9, 0x22, 0xec, 0xa2, 0x28, 0x4d,
- 0x48, 0x0e, 0x19, 0x2c, 0x47, 0x69, 0xc2, 0x82, 0x05, 0xb1, 0x81, 0xf0,
- 0x8b, 0x7c, 0x75, 0x8a, 0x5a, 0xcf, 0x9e, 0x1b, 0x32, 0xf3, 0xc3, 0x26,
- 0x2a, 0xdd, 0xe7, 0xd1, 0x5f, 0xd2, 0x12, 0x54, 0xbf, 0x02, 0xd6, 0xfd,
- 0xcd, 0xae, 0x46, 0xef, 0x15, 0x9d, 0x95, 0xd5, 0x70, 0x39, 0xa5, 0x78,
- 0x8c, 0x78, 0xea, 0x5e, 0xd8, 0x9f, 0x01, 0x0c, 0x90, 0xb6, 0xfa, 0xa6,
- 0xe8, 0xe1, 0xec, 0xe8, 0x6a, 0x71, 0x68, 0x9f, 0xbc, 0x2a, 0xc0, 0x7d,
- 0x18, 0xe9, 0xf3, 0x0b, 0xd9, 0x1a, 0xe8, 0x91, 0x14, 0x39, 0x27, 0xe5,
- 0x8c, 0xa0, 0xd8, 0xa2, 0xe2, 0xa2, 0x4e, 0x68, 0x7d, 0x66, 0xda, 0xe7,
- 0x19, 0x3b, 0x3e, 0x8f, 0xb5, 0x4e, 0xde, 0xaf, 0x44, 0x35, 0xd9, 0xd5,
- 0xb6, 0x9d, 0x7a, 0x2b, 0xb7, 0x14, 0xed, 0xa7, 0xea, 0x1a, 0x2d, 0x10,
- 0xd4, 0x8c, 0xc9, 0x53, 0xf6, 0x59, 0xb8, 0x5f, 0x36, 0xd2, 0xec, 0xdd,
- 0xf9, 0xc9, 0xdb, 0x7e, 0xeb, 0xd4, 0x89, 0x2a, 0x6f, 0x1d, 0x4b, 0x46,
- 0xe2, 0x08, 0x4b, 0xf9, 0xae, 0xfe, 0x32, 0x12, 0x72, 0x98, 0xb4, 0x16,
- 0xc6, 0x2c, 0x47, 0xca, 0xf5, 0x25, 0x8f, 0xbb, 0x14, 0x48, 0x1f, 0x75,
- 0x9e, 0x31, 0x59, 0xfd, 0xac, 0x73, 0xe4, 0xc1, 0x8a, 0xb6, 0x9e, 0xfc,
- 0x8d, 0x70, 0x5f, 0x81, 0xac, 0x11, 0xb8, 0x52, 0xba, 0x06, 0x3e, 0xf3,
- 0x35, 0x8a, 0xca, 0x91, 0xd5, 0xee, 0x7e, 0xa1, 0x74, 0x49, 0x33, 0x3a,
- 0x38, 0xaf, 0x8a, 0xdb, 0x3c, 0x3e, 0x41, 0xb4, 0xbd, 0xe8, 0xa4, 0xb8,
- 0xc2, 0x03, 0xf4, 0x2e, 0xec, 0xfa, 0xfc, 0x70, 0xf6, 0x2e, 0x5a, 0x45,
- 0x0d, 0x07, 0x21, 0x7b, 0xa5, 0xe7, 0x15, 0x3e, 0xba, 0x26, 0x8e, 0x85,
- 0x8a, 0xb5, 0x4e, 0x99, 0x4d, 0x3f, 0x3a, 0xfa, 0xee, 0xe0, 0xed, 0xd9,
- 0xc9, 0xd1, 0x0f, 0xec, 0x5b, 0xf0, 0x96, 0x83, 0x3f, 0xfe, 0xd2, 0xb9,
- 0xc1, 0x28, 0x21, 0x01, 0x73, 0x81, 0x60, 0x26, 0xf7, 0x5d, 0x1a, 0x05,
- 0x4b, 0x45, 0x8b, 0x2c, 0x7c, 0x76, 0x1c, 0x6b, 0xdf, 0x28, 0x12, 0x58,
- 0x17, 0x59, 0x8e, 0x7e, 0x11, 0xf2, 0x7c, 0x60, 0x4f, 0x0e, 0x98, 0x18,
- 0xb1, 0xbf, 0x07, 0x3e, 0xac, 0xc7, 0xa1, 0x1f, 0xbd, 0xd3, 0x3a, 0x9b,
- 0x3e, 0x6d, 0x3a, 0x1e, 0xc1, 0x57, 0xd9, 0x15, 0x25, 0x50, 0xb4, 0x4a,
- 0x0f, 0x90, 0x3b, 0x44, 0x5b, 0xf0, 0x1a, 0xcf, 0x81, 0x04, 0xd1, 0xe4,
- 0x9a, 0x2a, 0x9d, 0x70, 0xf0, 0xa1, 0xf3, 0x7a, 0x64, 0x09, 0x49, 0xbb,
- 0x48, 0xe0, 0x02, 0x5e, 0x66, 0x88, 0x80, 0x0d, 0xa0, 0xad, 0xc8, 0x1b,
- 0x28, 0xc6, 0x38, 0x73, 0x08, 0x5f, 0x0a, 0xa2, 0xb5, 0x19, 0xa9, 0xbf,
- 0x17, 0xf5, 0xe2, 0x79, 0xb4, 0xd7, 0xfb, 0x9d, 0x35, 0x15, 0xda, 0xa3,
- 0x72, 0xaf, 0x4a, 0x41, 0xa0, 0x2f, 0x19, 0xd0, 0x6c, 0x5f, 0xfc, 0x61,
- 0xcb, 0xc8, 0x0d, 0x17, 0xb5, 0x86, 0xe2, 0x36, 0xe9, 0x52, 0x2c, 0x64,
- 0xe2, 0xdb, 0xdc, 0x4f, 0xc0, 0xb5, 0xf9, 0xf0, 0x8a, 0x04, 0x46, 0x06,
- 0x71, 0x23, 0xd6, 0xf4, 0xc5, 0xfc, 0xea, 0x2a, 0xd0, 0x73, 0x20, 0x47,
- 0x2a, 0x91, 0x1f, 0x17, 0xdd, 0xa2, 0x2b, 0x55, 0xc4, 0x21, 0x50, 0x20,
- 0x62, 0x8f, 0x72, 0x81, 0xb4, 0x15, 0x76, 0x31, 0x46, 0x93, 0xe8, 0x80,
- 0x1d, 0xae, 0x11, 0xe3, 0xbb, 0xf9, 0xc3, 0xb1, 0xb2, 0xbe, 0xf2, 0xc5,
- 0x8a, 0xc9, 0x90, 0xea, 0x89, 0x5a, 0x46, 0x77, 0x46, 0x8f, 0x8d, 0x25,
- 0xd8, 0x73, 0x9c, 0x7f, 0x3f, 0x5a, 0xd9, 0x5f, 0x91, 0xe7, 0x7a, 0x41,
- 0x8d, 0x9c, 0xdf, 0xe1, 0xac, 0x1a, 0xb6, 0xde, 0x46, 0x26, 0x9a, 0x81,
- 0xba, 0x7e, 0x36, 0x86, 0xfb, 0x53, 0x9c, 0xdb, 0x70, 0x3c, 0x27, 0xd2,
- 0xe6, 0xae, 0x2f, 0x7e, 0xc1, 0xb6, 0xda, 0x43, 0x53, 0xd7, 0x99, 0xf3,
- 0x5c, 0x57, 0xfe, 0x53, 0x67, 0xa0, 0xcd, 0xdb, 0x93, 0x09, 0xc5, 0x74,
- 0x29, 0x80, 0x92, 0x8d, 0xed, 0x57, 0xbb, 0x8e, 0x2b, 0x17, 0x70, 0xa1,
- 0x67, 0x8a, 0x0c, 0x9f, 0x20, 0x66, 0x50, 0x1b, 0x23, 0x87, 0x92, 0x3f,
- 0xfc, 0x40, 0x44, 0x6d, 0x7a, 0x48, 0x9a, 0x52, 0xae, 0x49, 0x51, 0xa0,
- 0xbf, 0x1e, 0xf7, 0xb0, 0x6b, 0x02, 0x1a, 0xa4, 0xb1, 0xec, 0xcf, 0xb7,
- 0xbd, 0x09, 0xdd, 0x92, 0x89, 0x82, 0x4f, 0x8a, 0x46, 0x22, 0x9e, 0x95,
- 0x7e, 0x07, 0x9c, 0x9e, 0xdc, 0x0e, 0x1a, 0x35, 0xb5, 0x38, 0x45, 0x12,
- 0x02, 0xd5, 0xba, 0xf2, 0xdf, 0x3d, 0x88, 0x4c, 0xf9, 0xab, 0x0e, 0x70,
- 0x99, 0x29, 0x30, 0x27, 0x26, 0x91, 0x38, 0xd8, 0xdf, 0xe7, 0x59, 0xba,
- 0x74, 0x0e, 0x83, 0x9e, 0xab, 0xe5, 0x72, 0x4e, 0x1a, 0x60, 0x53, 0xdd,
- 0x59, 0x26, 0x36, 0x67, 0x21, 0x5c, 0x76, 0x15, 0x8c, 0x0b, 0x7f, 0x23,
- 0x12, 0x21, 0x50, 0x98, 0xff, 0x4a, 0x32, 0x43, 0xdc, 0x54, 0x04, 0x01,
- 0xfe, 0xe1, 0xf0, 0x85, 0xd8, 0xd3, 0x9a, 0xcf, 0xa7, 0xe9, 0x8a, 0x19,
- 0xc5, 0x18, 0xab, 0x41, 0xc0, 0x04, 0x50, 0xa5, 0x9e, 0xcf, 0xba, 0xc9,
- 0x36, 0xa5, 0x38, 0x15, 0x26, 0x52, 0xe8, 0x10, 0x92, 0xdc, 0xdc, 0x37,
- 0x63, 0xfb, 0x0b, 0x62, 0xcd, 0x75, 0x1b, 0xeb, 0x42, 0xe0, 0xdc, 0xdd,
- 0x4b, 0xf6, 0x31, 0x86, 0x61, 0x60, 0xf0, 0x4f, 0x5a, 0xee, 0x82, 0x23,
- 0xa7, 0x77, 0xe9, 0x68, 0x5e, 0x07, 0x81, 0x67, 0xce, 0xaf, 0xb5, 0x03,
- 0x0e, 0x4f, 0x69, 0x95, 0x0e, 0xb1, 0x74, 0x6c, 0xe8, 0x9d, 0x69, 0x63,
- 0x89, 0xbd, 0xde, 0x9a, 0xa4, 0x69, 0x51, 0x72, 0x87, 0xed, 0x38, 0xe1,
- 0xa9, 0x66, 0x98, 0x18, 0x2a, 0x53, 0x2e, 0x53, 0x8e, 0xeb, 0xd8, 0xe4,
- 0xc6, 0xe0, 0xe7, 0xe1, 0x7c, 0x95, 0xc1, 0xaf, 0xbf, 0xe6, 0xa8, 0x85,
- 0xf3, 0x71, 0x61, 0xed, 0x91, 0x06, 0x34, 0x2a, 0x4f, 0x0c, 0x79, 0x5f,
- 0x2e, 0x08, 0x93, 0x28, 0x3a, 0xb8, 0x81, 0x83, 0x49, 0xbe, 0x2e, 0x7d,
- 0x55, 0x89, 0xef, 0xd5, 0xa2, 0x26, 0x93, 0x3a, 0xae, 0x6e, 0x46, 0xe1,
- 0x72, 0x6e, 0x81, 0x20, 0x32, 0x38, 0xc9, 0x07, 0xf0, 0xf0, 0xf0, 0x66,
- 0xb4, 0xa7, 0x8e, 0x05, 0xe0, 0x4b, 0x15, 0x6f, 0xde, 0x62, 0x0f, 0xaa,
- 0xfb, 0x7c, 0x74, 0xfd, 0xea, 0xdd, 0x30, 0x3c, 0x34, 0x31, 0x35, 0x4d,
- 0x9f, 0x3c, 0x60, 0x09, 0x3d, 0x0d, 0x97, 0x39, 0xf6, 0x05, 0x63, 0x6f,
- 0xb5, 0xf4, 0x4f, 0x43, 0x8f, 0xcc, 0x81, 0xf3, 0xdb, 0xf0, 0x70, 0xcd,
- 0x57, 0x8c, 0x27, 0x19, 0x2f, 0x68, 0x16, 0x43, 0xa2, 0xc1, 0x51, 0x22,
- 0x75, 0x9c, 0x20, 0x45, 0x78, 0x4d, 0xe1, 0xe1, 0xea, 0x6b, 0x8c, 0x5c,
- 0xa6, 0x63, 0x1d, 0xb1, 0xec, 0xce, 0x62, 0xbe, 0x00, 0xe6, 0x98, 0x64,
- 0x0d, 0x52, 0x59, 0x10, 0x43, 0xf9, 0xa5, 0x66, 0x56, 0x6a, 0x6e, 0x87,
- 0x06, 0x98, 0xbd, 0xc1, 0x0e, 0xaf, 0x93, 0xf2, 0xb0, 0xc8, 0x6f, 0xc2,
- 0xb3, 0x6a, 0xa5, 0xd1, 0x32, 0x0c, 0x8d, 0xf3, 0xdd, 0x11, 0xbc, 0x9d,
- 0x8c, 0x6a, 0x6a, 0x0f, 0x44, 0x1d, 0xc3, 0xb4, 0x7a, 0x20, 0x3c, 0xdc,
- 0x2a, 0x46, 0xcd, 0xa3, 0xa3, 0xaf, 0x0e, 0x5f, 0x1d, 0x1f, 0xae, 0xb5,
- 0x67, 0xf2, 0x8a, 0xa0, 0xe7, 0x44, 0xf6, 0xb0, 0x96, 0xc0, 0x1b, 0x65,
- 0xd8, 0xce, 0x99, 0x04, 0x3d, 0x2c, 0x56, 0x2b, 0xeb, 0x98, 0x1d, 0x9f,
- 0x9c, 0x22, 0xa0, 0x0a, 0xc8, 0xaf, 0xa2, 0x24, 0xf9, 0xf4, 0x49, 0x53,
- 0xa6, 0xa6, 0xe9, 0x14, 0x13, 0x01, 0x8c, 0x76, 0x21, 0xed, 0x7a, 0x5e,
- 0x53, 0xc7, 0x59, 0xf8, 0x58, 0x1c, 0x1e, 0x6e, 0x8c, 0xaa, 0x38, 0x2a,
- 0x2a, 0x5c, 0xec, 0xe9, 0xb9, 0xa3, 0xaf, 0xaa, 0x04, 0x31, 0xc1, 0x49,
- 0x14, 0xd1, 0x74, 0x63, 0xbc, 0xe3, 0x87, 0x07, 0xc3, 0x13, 0xaf, 0xa9,
- 0xaa, 0xca, 0x26, 0xb8, 0x20, 0xd0, 0x3c, 0x65, 0x60, 0xae, 0xf0, 0x57,
- 0x95, 0xe4, 0xc3, 0xc3, 0xf7, 0x07, 0x6f, 0x81, 0xcd, 0x38, 0xeb, 0xc0,
- 0x4f, 0x73, 0x26, 0xd2, 0xc0, 0x8f, 0x69, 0x16, 0xde, 0x56, 0x4b, 0x1b,
- 0xd6, 0xf0, 0x27, 0xb4, 0x47, 0x2b, 0x37, 0xcc, 0xe3, 0x28, 0xab, 0x37,
- 0xc2, 0x9b, 0xe1, 0xf9, 0x50, 0xff, 0xd0, 0x39, 0xd1, 0x89, 0x4c, 0xab,
- 0x06, 0xfc, 0xa6, 0x3e, 0x0e, 0x3c, 0xb7, 0xc5, 0x7f, 0xac, 0x6f, 0x99,
- 0x17, 0x0c, 0xec, 0x8d, 0xd2, 0x67, 0x10, 0x78, 0x6d, 0x5b, 0x5e, 0xdb,
- 0x5e, 0xf4, 0x5a, 0xe0, 0xbd, 0x61, 0x1c, 0x6a, 0xe1, 0xe7, 0x49, 0x80,
- 0x2c, 0x90, 0x18, 0xbe, 0xb0, 0x25, 0xdd, 0xab, 0x77, 0xcd, 0x01, 0x4c,
- 0x50, 0x1d, 0x7f, 0x13, 0x2b, 0x68, 0x8e, 0x68, 0x61, 0x8e, 0x2d, 0x17,
- 0xf0, 0xbe, 0x9e, 0xdd, 0x3c, 0x73, 0x52, 0x0a, 0x70, 0x23, 0xe9, 0x47,
- 0xc6, 0x62, 0xf0, 0xde, 0x50, 0x4b, 0x3b, 0xbc, 0x28, 0x63, 0x87, 0x7f,
- 0xb3, 0x1b, 0xe8, 0xdb, 0xdb, 0xbd, 0x97, 0x27, 0x49, 0x79, 0x95, 0x06,
- 0x92, 0x5e, 0x3c, 0x5a, 0x99, 0xa5, 0xda, 0x9c, 0x24, 0xb8, 0x3d, 0x27,
- 0xf8, 0x3a, 0x07, 0xf7, 0xfb, 0x12, 0xe3, 0xa7, 0x1f, 0x95, 0x5d, 0xe2,
- 0x0d, 0xd6, 0xba, 0xf5, 0xf5, 0x57, 0xde, 0x34, 0x80, 0x5b, 0x7f, 0x46,
- 0xd9, 0x6d, 0x04, 0xd8, 0x38, 0x75, 0x65, 0xd7, 0xea, 0x4d, 0x96, 0x44,
- 0x57, 0x3f, 0x67, 0x33, 0xc2, 0xca, 0xc1, 0x22, 0x97, 0x35, 0xba, 0xbb,
- 0x4d, 0xe2, 0x78, 0xf8, 0x73, 0x3c, 0x21, 0x23, 0xf8, 0x16, 0x53, 0xe2,
- 0x2d, 0x26, 0x2e, 0x0c, 0x87, 0x27, 0x8f, 0x26, 0x84, 0x66, 0x3a, 0x2c,
- 0x2e, 0x36, 0x21, 0x7b, 0x55, 0xfe, 0x58, 0x66, 0x63, 0xf0, 0x85, 0x8f,
- 0xdf, 0x7e, 0x15, 0x9e, 0x0d, 0x8d, 0x36, 0x4e, 0x11, 0x05, 0x4c, 0x9b,
- 0x1f, 0xdf, 0x66, 0x39, 0x18, 0xd6, 0x63, 0xb8, 0x21, 0x27, 0x33, 0xbe,
- 0x21, 0xbb, 0xc7, 0x3e, 0xc3, 0x6e, 0x3f, 0xfc, 0x07, 0x3e, 0x77, 0xad,
- 0x72, 0xfc, 0x6c, 0x7e, 0x31, 0x01, 0xda, 0x0f, 0xe7, 0x97, 0x97, 0xd9,
- 0x5d, 0x74, 0x92, 0x49, 0xbf, 0x24, 0xb1, 0x84, 0x38, 0xd8, 0x14, 0xa8,
- 0x8d, 0x77, 0x6f, 0x09, 0x2e, 0x00, 0xa2, 0x13, 0xda, 0x28, 0x69, 0xb7,
- 0x08, 0x64, 0xac, 0xd9, 0xf5, 0x66, 0xfc, 0xad, 0x6a, 0x7e, 0x19, 0x77,
- 0x6d, 0xde, 0x5d, 0x5a, 0xf9, 0x96, 0xf2, 0xf0, 0xec, 0xdd, 0xd1, 0xd7,
- 0xa7, 0xfa, 0xc7, 0x32, 0x14, 0x1d, 0xf2, 0xaa, 0xf1, 0x0f, 0xb7, 0xba,
- 0x0d, 0xd1, 0x02, 0xf1, 0xf2, 0xb7, 0xed, 0xbd, 0xc8, 0x51, 0xac, 0xc3,
- 0xf4, 0x19, 0xfe, 0xd4, 0x4f, 0x57, 0x75, 0xc5, 0x0d, 0x05, 0xb5, 0xe1,
- 0xbf, 0x18, 0xbb, 0x1e, 0xb2, 0x4d, 0x5a, 0x84, 0xb0, 0x21, 0xd1, 0x19,
- 0xa2, 0x7f, 0x2c, 0x9c, 0xab, 0x54, 0xee, 0x77, 0x68, 0x47, 0x04, 0x87,
- 0x30, 0x64, 0xc0, 0xf0, 0xf7, 0x9c, 0xb7, 0x76, 0x26, 0x7e, 0x8b, 0xb5,
- 0x45, 0x24, 0xe9, 0x20, 0x34, 0xec, 0x7c, 0xb0, 0xf1, 0x0b, 0x5e, 0x94,
- 0x6f, 0xe9, 0x82, 0x0c, 0xbf, 0xc8, 0x57, 0xb5, 0x5c, 0xa1, 0xe6, 0x5a,
- 0x5d, 0xb8, 0xae, 0x0f, 0x79, 0x86, 0xe1, 0xb3, 0x0e, 0x10, 0x1f, 0xfe,
- 0xa5, 0x11, 0xc5, 0x85, 0x89, 0x32, 0x87, 0xc6, 0xb9, 0x1b, 0x52, 0xaa,
- 0x65, 0xd5, 0x39, 0xd6, 0x9d, 0x24, 0x75, 0x56, 0xcd, 0x4b, 0xaa, 0x43,
- 0x6d, 0xfc, 0xb9, 0xaa, 0xc7, 0x0f, 0x49, 0x20, 0x7c, 0x66, 0x8d, 0xb3,
- 0xa6, 0x9c, 0xb2, 0x1d, 0x16, 0x33, 0xe1, 0x69, 0x3c, 0x24, 0x7b, 0x3c,
- 0x3b, 0xce, 0x1a, 0x70, 0x64, 0x29, 0x7d, 0xe6, 0x39, 0x60, 0xae, 0x39,
- 0x54, 0x34, 0x99, 0xb1, 0xff, 0xe5, 0x2d, 0xb7, 0x80, 0xcc, 0xe7, 0x6e,
- 0xd0, 0x25, 0xbe, 0xc5, 0x9f, 0x12, 0xa4, 0x39, 0x86, 0xfe, 0xa3, 0x7d,
- 0xb6, 0xab, 0xbe, 0x08, 0xb8, 0x62, 0xf8, 0x83, 0x0a, 0xbc, 0xe9, 0x5a,
- 0x60, 0x64, 0x87, 0x53, 0x44, 0x38, 0xb9, 0x44, 0xd5, 0x2e, 0x31, 0xe1,
- 0xbc, 0x31, 0xdf, 0x01, 0x81, 0xa6, 0x20, 0x1c, 0xd5, 0xe0, 0x31, 0xc4,
- 0x61, 0x2a, 0x21, 0x56, 0x94, 0x1d, 0xd4, 0x2a, 0xa3, 0xc8, 0xc9, 0x73,
- 0x2c, 0xe0, 0xe8, 0xec, 0x29, 0x8f, 0xa6, 0x70, 0xd6, 0xc7, 0x41, 0x57,
- 0x0c, 0xa1, 0x0a, 0xdb, 0xb4, 0x08, 0x85, 0xf6, 0xac, 0x1a, 0x5f, 0xf2,
- 0x9c, 0xbe, 0x49, 0x15, 0xf0, 0x9d, 0xd4, 0xe4, 0x4a, 0xeb, 0xf1, 0x8c,
- 0x7a, 0x04, 0xc2, 0xa7, 0x71, 0x45, 0x4a, 0x37, 0x57, 0xab, 0x7b, 0x2c,
- 0x71, 0x21, 0x1e, 0x5b, 0x1c, 0x81, 0x49, 0x20, 0x9f, 0xcd, 0xc4, 0xdc,
- 0xbf, 0xd4, 0xd4, 0xf5, 0x9e, 0xa6, 0xdf, 0x35, 0x9c, 0x8d, 0x66, 0x4c,
- 0x19, 0x32, 0x80, 0xb3, 0xc9, 0x29, 0x89, 0x54, 0xbf, 0x8a, 0xbb, 0x06,
- 0x43, 0xc6, 0xbd, 0xa0, 0x19, 0x67, 0x08, 0xa0, 0xea, 0x56, 0xd3, 0x51,
- 0xa3, 0x9f, 0xb0, 0x49, 0x32, 0xd5, 0xfc, 0xa2, 0xaa, 0xb3, 0x7a, 0xee,
- 0x1f, 0x7f, 0xd3, 0x10, 0x85, 0x70, 0x49, 0xc9, 0x2c, 0xc1, 0xcd, 0xb0,
- 0xe0, 0xa1, 0xe4, 0x98, 0xc1, 0x12, 0xa6, 0x9a, 0x5a, 0x31, 0x73, 0xd5,
- 0xc0, 0x05, 0x01, 0x14, 0x4e, 0x8a, 0x5b, 0x0f, 0x12, 0x19, 0xed, 0x6a,
- 0x33, 0xbb, 0x26, 0xde, 0x0a, 0xbc, 0xfd, 0xc7, 0x7f, 0xe8, 0x2f, 0x3f,
- 0x22, 0xa5, 0xfe, 0xa9, 0x94, 0xd2, 0x2a, 0x83, 0xc4, 0x8b, 0x17, 0xb0,
- 0x43, 0xec, 0x8f, 0x44, 0x95, 0x9f, 0x30, 0xa3, 0x98, 0x49, 0x83, 0x58,
- 0xe9, 0x34, 0xe0, 0x1f, 0x07, 0x46, 0x7d, 0x92, 0x41, 0x12, 0x44, 0xc7,
- 0x23, 0x13, 0xf7, 0xe2, 0xde, 0xf3, 0xc6, 0x20, 0x1b, 0xfe, 0x90, 0xf7,
- 0xa9, 0xc5, 0x71, 0x09, 0x33, 0xb9, 0xa2, 0xb8, 0x0f, 0xe2, 0x17, 0xd3,
- 0x2e, 0xfe, 0x50, 0x0a, 0x24, 0x38, 0x58, 0xf0, 0x12, 0x54, 0xe6, 0x9f,
- 0x87, 0xcd, 0x69, 0x4d, 0x28, 0x15, 0x27, 0x6c, 0x03, 0xd1, 0x1f, 0xc6,
- 0x49, 0xca, 0xb1, 0x71, 0x9d, 0x5d, 0x28, 0x82, 0xb1, 0x26, 0xc3, 0xb4,
- 0xf7, 0x9e, 0x70, 0x86, 0x05, 0xbf, 0x5b, 0x5f, 0x26, 0x5b, 0xc5, 0xa6,
- 0x7b, 0xfc, 0xf1, 0x1f, 0x5c, 0xf9, 0xf0, 0x4f, 0x5f, 0x4f, 0x38, 0x3d,
- 0x3f, 0xda, 0xa3, 0x29, 0xfd, 0x31, 0xae, 0xee, 0xa7, 0x17, 0xc5, 0x44,
- 0x0e, 0x1e, 0x12, 0x1f, 0x08, 0xa8, 0x3f, 0x63, 0x2e, 0xa1, 0x2c, 0x8e,
- 0xd8, 0x01, 0xcb, 0xf5, 0x23, 0x9e, 0x18, 0xeb, 0x40, 0xef, 0x43, 0x31,
- 0x62, 0xa4, 0x27, 0xac, 0x3a, 0x86, 0x93, 0xf7, 0xc7, 0x48, 0x91, 0x68,
- 0x41, 0x26, 0x90, 0x33, 0xff, 0xd6, 0x46, 0x62, 0x4c, 0x75, 0x78, 0x30,
- 0x70, 0xbc, 0x98, 0x8f, 0x13, 0xe3, 0x33, 0x08, 0xc1, 0x0c, 0xa3, 0xbc,
- 0x80, 0x69, 0x7e, 0x24, 0x10, 0x1a, 0xb1, 0xa8, 0x0e, 0xf9, 0x67, 0xf1,
- 0x39, 0xfd, 0x4c, 0x73, 0x58, 0x6d, 0xab, 0x44, 0xad, 0x4b, 0xef, 0xfb,
- 0x98, 0x5d, 0x51, 0x28, 0x2d, 0x1e, 0x2d, 0x27, 0x90, 0x33, 0xde, 0x3c,
- 0x69, 0x0f, 0xa6, 0xd5, 0x95, 0x33, 0x6d, 0xde, 0x96, 0x29, 0xa6, 0x76,
- 0x5e, 0xa5, 0x83, 0x68, 0xd5, 0xed, 0x0a, 0xb5, 0x3b, 0xd8, 0xf0, 0xac,
- 0xd9, 0xf4, 0x0e, 0xf6, 0x96, 0x92, 0x93, 0xcd, 0x10, 0x20, 0xcc, 0xb0,
- 0xfd, 0x10, 0x6c, 0x8d, 0xf9, 0xa5, 0x54, 0xe1, 0xd9, 0xcc, 0x20, 0x33,
- 0xee, 0xe2, 0xe9, 0x77, 0x7c, 0x54, 0xa5, 0xd1, 0x47, 0x86, 0x77, 0xcf,
- 0x6e, 0xd2, 0xc5, 0xc3, 0x10, 0x51, 0x51, 0x99, 0x9d, 0x72, 0x33, 0x4a,
- 0x5b, 0xcd, 0x63, 0x71, 0x84, 0xb9, 0x3d, 0x06, 0xe7, 0x07, 0x0d, 0x1e,
- 0x1a, 0x8e, 0x63, 0xc8, 0xe4, 0x58, 0x96, 0x64, 0x61, 0x74, 0xe3, 0x67,
- 0x97, 0xc6, 0xea, 0xaa, 0x11, 0x62, 0x00, 0xd3, 0xb5, 0x69, 0xdc, 0x07,
- 0xf6, 0x88, 0x1a, 0x60, 0x35, 0x04, 0x2e, 0xa7, 0x2c, 0x9f, 0x92, 0xbb,
- 0x52, 0xd2, 0xd8, 0x38, 0x6f, 0xad, 0xc4, 0x7c, 0xb7, 0xc5, 0xc3, 0xd9,
- 0x64, 0x38, 0x89, 0xc3, 0x1f, 0x63, 0xd0, 0x80, 0x32, 0x17, 0xe7, 0x1c,
- 0x6e, 0xc0, 0x6b, 0x09, 0xae, 0x3a, 0x0c, 0x53, 0x05, 0x32, 0xa7, 0xa2,
- 0xc0, 0x2d, 0x45, 0x59, 0x37, 0xff, 0xe5, 0x24, 0xd5, 0xb1, 0x9b, 0x2a,
- 0x76, 0x92, 0xe9, 0x3c, 0xe6, 0xba, 0xac, 0x67, 0x1f, 0x81, 0x47, 0xcb,
- 0xfb, 0x8f, 0x54, 0x73, 0x72, 0xee, 0x04, 0x45, 0xe9, 0x07, 0x44, 0x2a,
- 0x86, 0x31, 0x9c, 0xcf, 0x70, 0x4e, 0x74, 0xdc, 0x26, 0x05, 0xbb, 0x29,
- 0x1e, 0x9a, 0x56, 0xb3, 0x26, 0xc4, 0x81, 0x70, 0x6e, 0x4f, 0x03, 0x3d,
- 0xc4, 0x1f, 0x2d, 0x87, 0x36, 0x19, 0xd4, 0x94, 0x1f, 0xd3, 0x03, 0xc4,
- 0x0d, 0xdc, 0x85, 0x0a, 0x53, 0x9c, 0x82, 0x3d, 0x73, 0x5b, 0xff, 0x47,
- 0xc1, 0x2a, 0x1b, 0x5d, 0xd7, 0xf2, 0x06, 0xce, 0x7b, 0xc3, 0xd4, 0x57,
- 0xc3, 0xf2, 0x1d, 0xf3, 0xe2, 0x1a, 0xa1, 0xf6, 0xbc, 0xba, 0xa7, 0xa3,
- 0x5f, 0x8c, 0x17, 0xcf, 0x4b, 0x96, 0xb5, 0x2a, 0xe1, 0x7e, 0xb2, 0xf6,
- 0xd7, 0x38, 0xad, 0x88, 0xe8, 0xde, 0x6a, 0x0b, 0x11, 0x9e, 0x9d, 0x29,
- 0x9b, 0xe7, 0x03, 0x84, 0x3f, 0x73, 0x6a, 0xe9, 0xd9, 0x5a, 0x22, 0x9c,
- 0x0c, 0x73, 0x0c, 0x31, 0x0c, 0x1d, 0xea, 0x4d, 0xdf, 0xf6, 0x8f, 0xb9,
- 0x10, 0x02, 0x1b, 0x81, 0x03, 0xfe, 0x53, 0x45, 0x9f, 0x35, 0x37, 0x6f,
- 0xf4, 0x5f, 0xc3, 0xd3, 0x77, 0x51, 0x71, 0x81, 0x0d, 0x13, 0x25, 0x77,
- 0x00, 0xab, 0x77, 0x8c, 0x60, 0xfd, 0x94, 0x06, 0xea, 0x2e, 0xa9, 0x86,
- 0xe7, 0x63, 0x36, 0x73, 0x85, 0xc0, 0x31, 0x18, 0x16, 0xc9, 0x78, 0x4c,
- 0xa5, 0xe2, 0x22, 0x94, 0xb8, 0xd4, 0x07, 0xd3, 0xe3, 0xe4, 0x07, 0x74,
- 0x54, 0x1e, 0xa4, 0xf0, 0x88, 0x21, 0x02, 0xc9, 0x11, 0xea, 0x00, 0x48,
- 0xc4, 0xaa, 0xab, 0xa9, 0x5f, 0x14, 0xbd, 0x1e, 0x3b, 0x81, 0x40, 0x76,
- 0xe4, 0xbb, 0x4b, 0x3a, 0x56, 0x40, 0x9a, 0xbd, 0x59, 0x01, 0x4f, 0x97,
- 0xfb, 0xdd, 0x39, 0xd9, 0xb4, 0x76, 0xde, 0xce, 0xc4, 0x1e, 0x58, 0x81,
- 0xd3, 0x9b, 0xcf, 0xcb, 0xa1, 0x61, 0xc8, 0x31, 0x87, 0x74, 0xb4, 0xfb,
- 0xf2, 0x73, 0xcd, 0x05, 0x69, 0x7d, 0x95, 0xed, 0x80, 0x87, 0x49, 0x27,
- 0xf9, 0x71, 0x8d, 0xbb, 0x65, 0x2b, 0xc0, 0x05, 0xb0, 0xbc, 0x8f, 0xb6,
- 0xcf, 0x78, 0xf4, 0x8e, 0x57, 0x8b, 0xcb, 0x05, 0x2d, 0xc8, 0x76, 0x20,
- 0xa7, 0x7e, 0x26, 0x32, 0x1b, 0x99, 0x48, 0x50, 0x7d, 0x8f, 0x7c, 0x6d,
- 0x3e, 0xf4, 0x45, 0x53, 0xb9, 0x60, 0x0e, 0xa5, 0xd0, 0xb8, 0xdd, 0x06,
- 0x25, 0x40, 0x81, 0xc5, 0x5f, 0x54, 0x4c, 0xe5, 0x55, 0x4c, 0xa1, 0x48,
- 0x28, 0x35, 0x18, 0x8e, 0x50, 0x20, 0xb2, 0xe6, 0xbf, 0xc8, 0x25, 0x5d,
- 0x6b, 0x03, 0x07, 0x21, 0x84, 0x33, 0x30, 0x93, 0x7a, 0x5e, 0x71, 0xd0,
- 0xe3, 0x78, 0x88, 0xaa, 0x12, 0x1c, 0x70, 0xc9, 0xa9, 0x6b, 0xd2, 0x77,
- 0xbb, 0x83, 0xbe, 0x3a, 0x74, 0x65, 0xe8, 0x4b, 0x2b, 0xd5, 0x1f, 0xb2,
- 0x0c, 0x42, 0x1d, 0xe2, 0xb2, 0xc0, 0xc2, 0x23, 0xbb, 0xef, 0x8f, 0xdc,
- 0xe5, 0xf6, 0x37, 0x81, 0x2b, 0x49, 0xc3, 0x70, 0x38, 0x8b, 0x12, 0x4a,
- 0x84, 0x87, 0x8d, 0xb6, 0x4c, 0xda, 0x56, 0x4e, 0x89, 0x74, 0xd7, 0xd8,
- 0x09, 0x50, 0xfb, 0xbd, 0x3e, 0x70, 0x2b, 0x88, 0xb4, 0x8d, 0x44, 0xf3,
- 0x45, 0xe3, 0x35, 0xe1, 0xc2, 0xaa, 0x9f, 0xd3, 0xb2, 0x10, 0x8d, 0x27,
- 0xfa, 0x85, 0xea, 0x07, 0x49, 0xd3, 0x8f, 0x55, 0x35, 0x41, 0x09, 0x99,
- 0x5d, 0xde, 0x03, 0x11, 0xab, 0x4e, 0xe0, 0xde, 0xd6, 0x4a, 0x31, 0x79,
- 0x5e, 0xd6, 0xea, 0x38, 0x62, 0x57, 0xb8, 0x41, 0xf5, 0x2c, 0xc5, 0x9c,
- 0xd2, 0x70, 0x1f, 0xed, 0xf6, 0xe1, 0x45, 0x4d, 0x86, 0x3e, 0x6f, 0x33,
- 0x43, 0xe4, 0xba, 0x30, 0x7a, 0xe2, 0x20, 0xda, 0x10, 0xd7, 0xd6, 0x83,
- 0x84, 0x6b, 0x8c, 0x84, 0x83, 0xd8, 0x64, 0xa8, 0x26, 0x23, 0xed, 0x86,
- 0x0e, 0xaa, 0xf2, 0xcb, 0x47, 0x72, 0x90, 0x71, 0x06, 0x93, 0x14, 0xfb,
- 0x19, 0xa6, 0xc7, 0x41, 0xe9, 0xa4, 0x6a, 0x0e, 0x52, 0x7c, 0x82, 0xfa,
- 0xc4, 0x24, 0xd0, 0x8e, 0x35, 0xf2, 0x55, 0x6c, 0x2a, 0x4d, 0x21, 0x0e,
- 0x74, 0x98, 0x73, 0xb5, 0x10, 0x24, 0x20, 0x74, 0x10, 0xdc, 0xc5, 0xf4,
- 0x8b, 0x2a, 0xea, 0xf2, 0xde, 0x39, 0xb2, 0x6d, 0x4d, 0x32, 0xd2, 0x55,
- 0x47, 0x67, 0x2b, 0x87, 0x5a, 0x0b, 0x11, 0x13, 0x26, 0xa3, 0x7a, 0x8e,
- 0x42, 0x96, 0x8a, 0x0e, 0x92, 0xcf, 0x1e, 0x75, 0x36, 0xa3, 0x5b, 0x4a,
- 0xb6, 0x23, 0x43, 0xfb, 0x8a, 0xb0, 0xef, 0x8b, 0x81, 0x4f, 0x27, 0x44,
- 0x7b, 0x6d, 0x30, 0x7f, 0xf4, 0x9e, 0x7f, 0xb6, 0x67, 0x52, 0x81, 0x4d,
- 0x3e, 0x96, 0x6a, 0xed, 0x4b, 0x70, 0xeb, 0xb3, 0xe0, 0xe6, 0xa0, 0x8a,
- 0x64, 0xee, 0xc1, 0x73, 0xab, 0x35, 0xc1, 0x65, 0xd8, 0xba, 0x0b, 0xb9,
- 0xbe, 0xc5, 0xdc, 0x21, 0x4b, 0x5d, 0x22, 0xf6, 0xea, 0x93, 0x9b, 0x8f,
- 0x2e, 0xbe, 0xa2, 0x0c, 0x5f, 0x6d, 0x32, 0x2b, 0xbd, 0xdb, 0x88, 0x14,
- 0x32, 0xad, 0xdf, 0xf6, 0x6a, 0x53, 0x29, 0x2e, 0x3a, 0xe1, 0x6f, 0xa1,
- 0x0f, 0x1a, 0x29, 0xb4, 0xea, 0xb7, 0x33, 0xed, 0x19, 0x7d, 0x34, 0x90,
- 0xce, 0x2d, 0x75, 0x4e, 0x0d, 0xfe, 0x20, 0x1e, 0x94, 0x5f, 0xac, 0x62,
- 0x6b, 0x0c, 0x4a, 0x95, 0x02, 0x52, 0x4f, 0xd0, 0x44, 0x55, 0x9f, 0xee,
- 0x5a, 0x08, 0xc1, 0xa4, 0xad, 0xc9, 0xc3, 0xe7, 0x5d, 0x4d, 0x8d, 0x0b,
- 0x86, 0x1e, 0x3c, 0xdc, 0xd8, 0x74, 0xe2, 0xe3, 0x18, 0xa6, 0x4f, 0xd5,
- 0x8f, 0x1c, 0x6a, 0x2f, 0x6a, 0x4c, 0x1c, 0x99, 0x02, 0x59, 0x48, 0x9a,
- 0x71, 0x9b, 0x14, 0x51, 0x08, 0x91, 0x75, 0x23, 0x7d, 0xfe, 0x41, 0x55,
- 0xd0, 0x6d, 0xf7, 0x42, 0x3d, 0x36, 0x64, 0xc7, 0xb1, 0x56, 0x70, 0x9d,
- 0x5b, 0xb7, 0xe8, 0x2e, 0x3c, 0xf2, 0x52, 0x2f, 0xd1, 0xa5, 0x9d, 0xde,
- 0x29, 0x14, 0x84, 0xf6, 0x2c, 0x0b, 0x2e, 0x4b, 0x53, 0x9f, 0x16, 0x2d,
- 0x4b, 0x11, 0x64, 0xcc, 0x8a, 0x68, 0xc8, 0x07, 0xe6, 0xd1, 0xf9, 0x45,
- 0x15, 0x87, 0xb2, 0xbb, 0xfc, 0xc9, 0x30, 0x29, 0x89, 0x92, 0x8e, 0x07,
- 0x6c, 0xf1, 0x17, 0x5d, 0x61, 0x1b, 0xfe, 0xb4, 0xd4, 0xaf, 0x76, 0x2c,
- 0x56, 0xbe, 0xdc, 0xd8, 0x45, 0x2d, 0x1d, 0xfd, 0xb7, 0xdd, 0x43, 0xb8,
- 0x30, 0xc7, 0x96, 0x37, 0x71, 0x59, 0x09, 0xe6, 0x13, 0x5e, 0xd9, 0xed,
- 0xe2, 0x67, 0x1c, 0x43, 0x1f, 0x2e, 0xc4, 0x6a, 0x5e, 0x72, 0x56, 0xd3,
- 0x83, 0xbe, 0x13, 0xe3, 0x11, 0x36, 0xe3, 0x61, 0x8b, 0x20, 0xa4, 0xd3,
- 0x8c, 0x72, 0x01, 0x30, 0xe1, 0xa5, 0x63, 0x56, 0x86, 0xda, 0xb4, 0xcf,
- 0x3a, 0x2d, 0x2d, 0x22, 0xfe, 0x95, 0x66, 0xc5, 0xa3, 0x3d, 0x66, 0x4e,
- 0xbf, 0x54, 0x59, 0x69, 0xab, 0x27, 0xdc, 0x4e, 0x5d, 0xd5, 0x86, 0x47,
- 0xdd, 0xe0, 0x8b, 0xf5, 0x93, 0x86, 0x0a, 0xf2, 0xb0, 0x20, 0x73, 0xf4,
- 0x93, 0xcf, 0x7c, 0x57, 0x33, 0xb6, 0xde, 0xd4, 0xff, 0x7b, 0xcd, 0x85,
- 0x39, 0x18, 0x1a, 0xc1, 0xbe, 0xec, 0x11, 0xc1, 0xc0, 0x90, 0x7f, 0xe5,
- 0x96, 0xfc, 0x2b, 0x36, 0x8a, 0x10, 0x05, 0xbb, 0x68, 0x46, 0x81, 0x72,
- 0x4b, 0x32, 0xf0, 0xd4, 0x25, 0xca, 0x8d, 0x2e, 0xd5, 0xaf, 0xc9, 0x2a,
- 0xe6, 0x12, 0x97, 0xf6, 0xb3, 0x90, 0x6a, 0x2e, 0x81, 0x89, 0xdf, 0x7a,
- 0x0d, 0xdd, 0x5e, 0xdd, 0x41, 0xe3, 0x58, 0x2f, 0x1e, 0x4e, 0x8a, 0x42,
- 0xd9, 0x11, 0x2c, 0x3a, 0x00, 0x99, 0x88, 0x8d, 0x16, 0xa0, 0x18, 0x40,
- 0x8e, 0x38, 0xd4, 0xf2, 0x80, 0xef, 0x82, 0x5e, 0xd0, 0xba, 0x35, 0xc6,
- 0xc3, 0x69, 0xfa, 0x0c, 0x82, 0x24, 0xc3, 0x7b, 0xf1, 0x63, 0x32, 0x9b,
- 0xc9, 0xdd, 0xff, 0x08, 0x8f, 0x20, 0xf7, 0xa6, 0x41, 0x24, 0x16, 0x3a,
- 0x34, 0xdc, 0x05, 0xa8, 0x2e, 0x8a, 0x4f, 0xb6, 0x98, 0x8b, 0xec, 0xb4,
- 0x68, 0x9e, 0x3f, 0xc8, 0xe0, 0x13, 0x3d, 0x25, 0xeb, 0xc3, 0xe1, 0x9b,
- 0xf5, 0xb4, 0x1e, 0xa9, 0x0e, 0xb2, 0x6e, 0x53, 0xfe, 0xc5, 0x67, 0xf5,
- 0xb0, 0xe9, 0x44, 0x6a, 0x10, 0x56, 0x23, 0x13, 0xab, 0x9b, 0xa8, 0xd4,
- 0x20, 0xb8, 0xe4, 0xa6, 0x0f, 0xe9, 0x37, 0x58, 0x14, 0xb6, 0x71, 0xd4,
- 0x8f, 0x34, 0xdd, 0x6e, 0x34, 0x45, 0xd4, 0xc2, 0xd9, 0xbf, 0xf4, 0xf0,
- 0xa9, 0x7d, 0x60, 0x29, 0xe8, 0x4e, 0xc4, 0x7c, 0xda, 0xf9, 0xec, 0x77,
- 0xd9, 0x3d, 0xf2, 0x66, 0x72, 0x5e, 0x1a, 0xa5, 0x1f, 0x3f, 0x3c, 0xe1,
- 0x19, 0xba, 0xfe, 0x58, 0xd9, 0x7b, 0x78, 0xc6, 0x8f, 0x9e, 0xf0, 0xe3,
- 0x66, 0xac, 0xc5, 0x5d, 0xe8, 0x35, 0x36, 0x1a, 0x27, 0xce, 0x99, 0x42,
- 0x49, 0xd2, 0x57, 0x12, 0x33, 0x79, 0xaf, 0xfc, 0xd4, 0xa3, 0xe0, 0x05,
- 0xae, 0x89, 0x5a, 0x09, 0x95, 0xa6, 0xa5, 0xb1, 0x19, 0x54, 0x4a, 0x7c,
- 0x2a, 0xa9, 0x06, 0xba, 0x2a, 0x1e, 0x9c, 0x5d, 0x22, 0x5d, 0xce, 0x50,
- 0xe4, 0x3b, 0x81, 0xb2, 0x91, 0xf2, 0x8f, 0x53, 0x52, 0x0d, 0xac, 0xf3,
- 0xd0, 0x70, 0xa8, 0xe0, 0x32, 0x8c, 0xc0, 0x0d, 0xa6, 0x0c, 0x76, 0xec,
- 0x85, 0x31, 0xc4, 0x1e, 0x22, 0x36, 0xe6, 0x11, 0x4e, 0x26, 0xc6, 0x70,
- 0x7b, 0xf0, 0xba, 0x81, 0xab, 0x6a, 0xa6, 0xe4, 0x41, 0xbe, 0x20, 0x36,
- 0x61, 0x36, 0xed, 0xeb, 0xc1, 0xe8, 0x47, 0x8f, 0x66, 0x05, 0xee, 0x1f,
- 0x26, 0xa4, 0x95, 0x4e, 0x68, 0xba, 0x97, 0x98, 0x55, 0xc5, 0xbf, 0x4c,
- 0x46, 0x06, 0x87, 0xf8, 0xa1, 0xd9, 0x91, 0x27, 0x69, 0xd0, 0xa6, 0x82,
- 0x45, 0x43, 0x34, 0xda, 0x02, 0xe5, 0xef, 0x3e, 0xea, 0xaa, 0x46, 0x6c,
- 0x38, 0xa4, 0x93, 0xc9, 0x00, 0x72, 0x88, 0x55, 0x85, 0xc9, 0x4f, 0xf3,
- 0xf8, 0xdd, 0x0f, 0x03, 0x25, 0x45, 0xa3, 0x26, 0x1b, 0x3c, 0x09, 0x4b,
- 0xa8, 0x9f, 0x6d, 0x1c, 0xdf, 0xf6, 0x71, 0xd7, 0x02, 0x86, 0x49, 0x55,
- 0x3c, 0xac, 0xaf, 0x09, 0xba, 0x20, 0x2d, 0x8a, 0xeb, 0xcd, 0x30, 0xcf,
- 0x9e, 0x03, 0xa2, 0x60, 0xc8, 0xe1, 0x41, 0xe0, 0xb8, 0xef, 0x23, 0x1c,
- 0xfb, 0xb0, 0x23, 0xe1, 0x0d, 0x10, 0x53, 0xa2, 0xa1, 0xde, 0xfb, 0x54,
- 0x36, 0xae, 0x43, 0x4a, 0x13, 0xe7, 0x5a, 0x94, 0xc7, 0xb0, 0x04, 0x1a,
- 0xb6, 0x81, 0x93, 0xc7, 0x0e, 0x9f, 0xc6, 0xce, 0x9a, 0xb2, 0x7d, 0xb2,
- 0x9c, 0x53, 0x8a, 0xfc, 0x3e, 0x22, 0x90, 0x08, 0x23, 0x81, 0x1d, 0xee,
- 0x8d, 0x94, 0xe5, 0xe3, 0xf4, 0xae, 0xe1, 0x0d, 0xc8, 0x6c, 0x86, 0x5e,
- 0x3f, 0xda, 0x88, 0xe9, 0x81, 0x07, 0x4d, 0x94, 0x57, 0x69, 0x4c, 0xa0,
- 0x3b, 0x0c, 0x01, 0x86, 0x29, 0x61, 0x89, 0xe0, 0xd8, 0x10, 0x28, 0x8f,
- 0x7c, 0x46, 0xbf, 0x13, 0x3d, 0x74, 0xe8, 0x28, 0x1f, 0xa1, 0xcc, 0x40,
- 0xb2, 0x46, 0xce, 0xb0, 0x8f, 0x5b, 0xa5, 0x0d, 0x5a, 0x76, 0xd3, 0x8b,
- 0xc8, 0x6d, 0x8b, 0x55, 0xc9, 0xfd, 0x81, 0x9a, 0xf2, 0x03, 0x3b, 0x65,
- 0xe3, 0x90, 0x98, 0x52, 0xc0, 0x10, 0x83, 0x18, 0x88, 0xd4, 0x3c, 0x0d,
- 0xf1, 0xa0, 0x99, 0xf6, 0xb3, 0x7b, 0x8b, 0x87, 0xeb, 0x32, 0xbb, 0xfe,
- 0xb5, 0xb5, 0x5c, 0xb7, 0xd1, 0xca, 0x1f, 0xff, 0x61, 0xbc, 0x26, 0xff,
- 0xfc, 0x21, 0x5f, 0x59, 0xae, 0xa0, 0xcb, 0x47, 0xf6, 0x0b, 0x22, 0xe4,
- 0xdc, 0x25, 0x20, 0xbd, 0x82, 0xf5, 0xab, 0x55, 0x42, 0xea, 0x80, 0xc5,
- 0x8a, 0x2d, 0xa4, 0x80, 0xb6, 0x89, 0x0c, 0x5e, 0x37, 0xc0, 0xad, 0xab,
- 0x3a, 0x50, 0xac, 0x0b, 0xa6, 0x13, 0xe6, 0x04, 0xd1, 0x9d, 0x3d, 0x4d,
- 0xeb, 0x84, 0x11, 0x99, 0x72, 0x4e, 0x8d, 0x1e, 0x6b, 0xa6, 0x15, 0xb0,
- 0x1f, 0x4c, 0x25, 0x03, 0x65, 0x9a, 0x52, 0xf4, 0x6d, 0x9b, 0xa1, 0x40,
- 0xfd, 0xaa, 0x40, 0xe5, 0xd0, 0xd7, 0x8c, 0x6b, 0xfe, 0x6e, 0x7c, 0x35,
- 0x60, 0xee, 0x1c, 0x50, 0xc9, 0x87, 0x8e, 0x86, 0xab, 0xef, 0x93, 0x5c,
- 0x47, 0x67, 0x41, 0x68, 0x38, 0x49, 0x46, 0x88, 0xb4, 0x63, 0x50, 0x73,
- 0xdc, 0x29, 0x89, 0x19, 0xca, 0x49, 0x30, 0x63, 0x0e, 0x0c, 0x78, 0x4f,
- 0x30, 0x7f, 0x48, 0xcb, 0x9d, 0x4d, 0x81, 0x91, 0x66, 0xaa, 0x99, 0x25,
- 0xdb, 0xb5, 0x62, 0xe6, 0xca, 0x6d, 0x52, 0xe6, 0x9c, 0x63, 0xd7, 0xae,
- 0xfd, 0xad, 0xaa, 0xf9, 0xf2, 0xb0, 0x92, 0xb4, 0xa9, 0x51, 0xcc, 0xdb,
- 0x81, 0xf6, 0xf7, 0x52, 0x9c, 0xd3, 0xee, 0x89, 0xd8, 0xf7, 0xf2, 0xce,
- 0x42, 0xb0, 0xa7, 0xaf, 0x8f, 0x4f, 0x8e, 0x4c, 0x69, 0xc6, 0xff, 0xbb,
- 0x3e, 0xc0, 0xa9, 0x94, 0x23, 0xaf, 0x08, 0x80, 0x71, 0x74, 0x1c, 0x50,
- 0x24, 0x01, 0xda, 0x71, 0xea, 0x0d, 0x5b, 0x28, 0x3b, 0x47, 0xef, 0xbe,
- 0x39, 0x7e, 0x7f, 0xfa, 0xee, 0xed, 0xd1, 0xbb, 0xf3, 0xcf, 0xdc, 0x8c,
- 0x8d, 0x40, 0x63, 0xe8, 0xca, 0xcf, 0x18, 0xcb, 0x30, 0xb6, 0x7e, 0x4b,
- 0xc0, 0x1b, 0xdc, 0xdb, 0x1e, 0x36, 0x42, 0xfe, 0x35, 0x70, 0x87, 0x73,
- 0x1e, 0xd2, 0x50, 0x2f, 0x66, 0xbc, 0xce, 0xd0, 0xfb, 0x3a, 0xc6, 0x64,
- 0x99, 0x01, 0x07, 0x87, 0xb9, 0x31, 0x7d, 0xc6, 0xbd, 0xa9, 0xef, 0xb0,
- 0x63, 0x23, 0x55, 0x35, 0x81, 0xbc, 0x32, 0xa6, 0x97, 0xa6, 0x48, 0xd8,
- 0x38, 0x6d, 0x63, 0x12, 0x76, 0x33, 0x3f, 0x30, 0xe2, 0x4b, 0xb8, 0xc9,
- 0xb5, 0xf6, 0x3a, 0x20, 0xbd, 0x91, 0x3e, 0x4a, 0x68, 0x64, 0x46, 0x74,
- 0xb3, 0x38, 0x75, 0x65, 0xb6, 0xd3, 0x04, 0xed, 0xce, 0xb4, 0xb9, 0xf7,
- 0xd2, 0x14, 0x9c, 0x55, 0x7c, 0xaf, 0x6e, 0x54, 0xe0, 0x8c, 0x1f, 0xf7,
- 0xd1, 0xaa, 0xf9, 0xe2, 0xfb, 0x3d, 0x64, 0xd3, 0x1f, 0xfd, 0x6e, 0x42,
- 0x95, 0x33, 0x11, 0xb9, 0xcc, 0x1d, 0xa0, 0x09, 0x3c, 0x58, 0x86, 0x9c,
- 0x14, 0xe0, 0xf9, 0x78, 0xf6, 0xfe, 0xf4, 0xbb, 0xbf, 0xfd, 0xca, 0x9f,
- 0x70, 0x72, 0x59, 0xbf, 0xc7, 0x22, 0x0e, 0x1d, 0xfc, 0xc7, 0x27, 0x7d,
- 0x6d, 0xe1, 0xe7, 0x9a, 0xe3, 0xf7, 0x25, 0x7f, 0x4a, 0xde, 0xf0, 0xb2,
- 0xa1, 0x08, 0xc0, 0x8a, 0xd2, 0xb3, 0x0c, 0x9c, 0x95, 0x75, 0x72, 0x99,
- 0xc4, 0x72, 0x56, 0x9d, 0x2a, 0x17, 0xee, 0x93, 0x92, 0x52, 0x12, 0xbf,
- 0xc5, 0xdf, 0x80, 0x01, 0x84, 0x6c, 0xf6, 0xb1, 0x22, 0x6b, 0x21, 0x7a,
- 0x96, 0xe0, 0x6b, 0x51, 0x4d, 0x8b, 0x21, 0xc8, 0xc1, 0xc9, 0xc9, 0xd3,
- 0xa9, 0x20, 0x64, 0x68, 0xd1, 0x01, 0x2e, 0xd4, 0xbc, 0x30, 0x2b, 0x8a,
- 0x8d, 0x35, 0xa3, 0x67, 0x60, 0x51, 0x57, 0xa7, 0x77, 0xa7, 0x32, 0x9b,
- 0x7d, 0x32, 0xa3, 0xe2, 0x2a, 0x05, 0xe3, 0x27, 0xc1, 0xd8, 0xaf, 0xf6,
- 0x50, 0xc4, 0x89, 0x55, 0xeb, 0x5c, 0x4c, 0x51, 0x7d, 0xe1, 0x65, 0x75,
- 0xda, 0x87, 0xb8, 0xd2, 0x82, 0x09, 0x2a, 0xd8, 0x0e, 0x54, 0x3d, 0x5a,
- 0x18, 0x8c, 0x59, 0x4c, 0x26, 0xe5, 0xca, 0x0e, 0x92, 0xca, 0x30, 0x11,
- 0x1f, 0xe5, 0x0f, 0x71, 0x77, 0x40, 0x28, 0x97, 0x59, 0xf5, 0x89, 0x8a,
- 0x6b, 0xf1, 0x88, 0x92, 0xf6, 0xad, 0x20, 0x66, 0x68, 0x1c, 0xd1, 0x9c,
- 0x06, 0x0c, 0xda, 0x68, 0xb1, 0x15, 0xb2, 0x2a, 0x34, 0x3b, 0x54, 0x50,
- 0x12, 0x56, 0x5b, 0x30, 0xc2, 0xc0, 0xc1, 0x9f, 0xa4, 0x51, 0xe9, 0x2f,
- 0x7d, 0x28, 0x39, 0x35, 0xb6, 0x32, 0x60, 0x6b, 0x21, 0x6c, 0xae, 0xbe,
- 0xa2, 0xfc, 0xe0, 0x03, 0xfc, 0xe9, 0xba, 0x4a, 0x27, 0x97, 0xe1, 0x6a,
- 0xd6, 0x86, 0xc4, 0xb0, 0x22, 0x43, 0x91, 0xce, 0x2a, 0x2d, 0x52, 0xb5,
- 0x1c, 0x9e, 0x22, 0x7c, 0x08, 0x46, 0x0d, 0x7d, 0xaf, 0xad, 0xb0, 0xa2,
- 0xcd, 0x78, 0xba, 0x23, 0xe7, 0x9a, 0xb0, 0x84, 0xa6, 0x53, 0x49, 0x7f,
- 0x09, 0xfc, 0xb8, 0xee, 0xed, 0xe7, 0x63, 0xbf, 0x7a, 0x1e, 0x7b, 0x81,
- 0xb8, 0xc0, 0x02, 0x52, 0x3d, 0x10, 0xdf, 0xb1, 0xe4, 0x01, 0x96, 0xe4,
- 0x8d, 0x6a, 0x3c, 0x23, 0xbf, 0x79, 0xcc, 0x70, 0x16, 0x81, 0x8c, 0xf8,
- 0x36, 0xaa, 0xb1, 0x2a, 0xa5, 0x8e, 0x24, 0x60, 0x24, 0x18, 0xb0, 0x04,
- 0x5e, 0x1a, 0xa8, 0xf9, 0x74, 0x26, 0xee, 0x8f, 0xfc, 0x88, 0x99, 0x06,
- 0xb2, 0x85, 0xe0, 0x31, 0x8c, 0x4e, 0x31, 0x2c, 0xa7, 0x3b, 0x9e, 0x99,
- 0x28, 0x65, 0x00, 0xf2, 0x2c, 0x59, 0xe7, 0x55, 0x5c, 0xe4, 0x34, 0x14,
- 0x5f, 0x0f, 0x26, 0x55, 0x32, 0xc3, 0x51, 0xb8, 0x82, 0x0e, 0x84, 0x9c,
- 0x88, 0x06, 0x98, 0x94, 0x96, 0x70, 0xdb, 0xa8, 0x1e, 0xc5, 0x39, 0x3d,
- 0x5c, 0x17, 0x4a, 0x6e, 0x97, 0x06, 0x12, 0x54, 0x99, 0x64, 0x6a, 0x26,
- 0xe4, 0x6c, 0x11, 0xd4, 0xc2, 0x85, 0x22, 0xce, 0x68, 0xd8, 0x1a, 0xf1,
- 0xb1, 0x26, 0x45, 0x15, 0x6a, 0x49, 0x72, 0x81, 0x15, 0x02, 0x69, 0xdd,
- 0x55, 0x0b, 0x65, 0x27, 0xa4, 0x61, 0x57, 0x49, 0x23, 0x96, 0x46, 0xcc,
- 0x74, 0x7c, 0xa4, 0x97, 0x79, 0x1f, 0xeb, 0x2b, 0x08, 0x1f, 0x26, 0x80,
- 0x44, 0xc5, 0x79, 0x87, 0xd4, 0xc9, 0x5c, 0x9a, 0x30, 0x96, 0xa9, 0x24,
- 0x4b, 0x8b, 0xe3, 0x45, 0x8d, 0x1b, 0xba, 0x22, 0xf7, 0xa2, 0xa8, 0xb7,
- 0xb7, 0xb7, 0xd9, 0x63, 0x9e, 0xf5, 0xc9, 0x4d, 0xd7, 0x28, 0x86, 0x26,
- 0xf7, 0xf6, 0x36, 0xf0, 0x31, 0x4e, 0xe7, 0x4d, 0x31, 0xce, 0x6a, 0x7b,
- 0xa6, 0x3b, 0xf2, 0xf5, 0xec, 0xec, 0xd5, 0xc1, 0xf9, 0x41, 0xb4, 0x0f,
- 0xbc, 0xf3, 0x85, 0x0f, 0xe5, 0x63, 0x71, 0xf3, 0x5a, 0x31, 0x76, 0x35,
- 0x13, 0x28, 0x62, 0x5f, 0x97, 0xf7, 0xe2, 0xe0, 0xbd, 0xcc, 0xa4, 0xfa,
- 0xf9, 0xba, 0xf0, 0xc0, 0x72, 0x0c, 0x90, 0xf1, 0x40, 0x5b, 0xf5, 0xcc,
- 0xca, 0x6c, 0x8a, 0xd8, 0x1a, 0xf8, 0xb0, 0x1d, 0x3a, 0x91, 0x8c, 0xde,
- 0x79, 0xde, 0x10, 0xbd, 0x87, 0xa7, 0x27, 0x1f, 0xde, 0xbe, 0x1b, 0x46,
- 0xfb, 0x88, 0xdc, 0x48, 0xbe, 0x95, 0xdb, 0x6c, 0xec, 0xe3, 0x75, 0xc3,
- 0xd0, 0x55, 0xca, 0xd8, 0x2d, 0x8e, 0x14, 0xb0, 0x26, 0xa7, 0x29, 0xfe,
- 0xac, 0x1a, 0x66, 0x4c, 0x17, 0xe0, 0x8a, 0xf9, 0x18, 0x7f, 0x4d, 0xc1,
- 0x32, 0xb9, 0x8b, 0x89, 0x94, 0xcf, 0xdd, 0x90, 0x34, 0xba, 0x42, 0x1e,
- 0x88, 0x2f, 0x92, 0x52, 0x8a, 0x94, 0x6e, 0xf3, 0x00, 0xb0, 0x35, 0x29,
- 0xcd, 0x38, 0x3d, 0x07, 0xf4, 0x99, 0x71, 0xa4, 0x41, 0x43, 0x9c, 0x33,
- 0x5a, 0x12, 0xf2, 0xa5, 0x34, 0x50, 0x21, 0xe1, 0x7b, 0xdb, 0x68, 0x43,
- 0x70, 0x08, 0xa7, 0xed, 0xe3, 0xe1, 0xc1, 0xc7, 0xaf, 0x3e, 0xbc, 0x7b,
- 0x75, 0x72, 0x14, 0x46, 0xe3, 0x56, 0x1a, 0x34, 0x16, 0x28, 0x6a, 0x16,
- 0xa8, 0xa3, 0x09, 0x9a, 0x2e, 0x9c, 0x46, 0xdf, 0x1a, 0xf7, 0xcd, 0xe9,
- 0xdb, 0xa3, 0x20, 0x2b, 0xe8, 0x88, 0x12, 0x17, 0x64, 0xd7, 0x8c, 0xd9,
- 0x31, 0x5a, 0x0c, 0x5c, 0x19, 0xa3, 0x4f, 0x95, 0xd2, 0x87, 0x39, 0x82,
- 0x42, 0x06, 0xc8, 0x13, 0x5e, 0x2f, 0xe2, 0x2a, 0xe2, 0x5d, 0x6f, 0x71,
- 0x85, 0xa1, 0x4f, 0x46, 0xda, 0x74, 0x9d, 0xe5, 0x73, 0xc6, 0xe1, 0xa5,
- 0xd1, 0xa3, 0xef, 0x5e, 0x7d, 0xfd, 0xf1, 0xf0, 0xf4, 0x5d, 0xfb, 0xb8,
- 0xbe, 0x3e, 0xfe, 0x9a, 0xa6, 0xde, 0x5a, 0xcd, 0x70, 0x78, 0xf2, 0xf1,
- 0xab, 0x83, 0xc3, 0xbf, 0x1c, 0xbd, 0x7b, 0x15, 0xed, 0x3b, 0x55, 0x6f,
- 0x81, 0xc5, 0x3d, 0x54, 0x32, 0xdc, 0xd3, 0x72, 0xbb, 0x5e, 0xbf, 0x0d,
- 0x28, 0x9c, 0xb5, 0x6f, 0x65, 0x2e, 0x29, 0x33, 0x65, 0xb4, 0xee, 0x30,
- 0x54, 0xd7, 0x4b, 0x55, 0x85, 0x68, 0x46, 0x3b, 0x53, 0x12, 0xe3, 0x73,
- 0x11, 0x72, 0x8b, 0xa5, 0xb6, 0x18, 0x03, 0xa9, 0x71, 0xe0, 0x93, 0x7e,
- 0x0f, 0x57, 0xb1, 0x01, 0x8c, 0xe2, 0x4c, 0xde, 0xa0, 0x25, 0xe7, 0x38,
- 0x6b, 0xf5, 0xe3, 0x91, 0x6a, 0x46, 0xb6, 0x2f, 0x32, 0x39, 0xcb, 0x6e,
- 0x8a, 0x4f, 0x04, 0x46, 0xa5, 0xd8, 0xa2, 0x34, 0x6c, 0xa8, 0xb6, 0x5f,
- 0x10, 0xb8, 0x12, 0xbb, 0x6a, 0xf7, 0x6c, 0x58, 0x9c, 0x56, 0xd6, 0x1b,
- 0xeb, 0xe4, 0xde, 0x26, 0x46, 0x87, 0xf1, 0x4a, 0xc3, 0xc5, 0x70, 0x66,
- 0xba, 0x72, 0x4f, 0xac, 0xe2, 0xba, 0x63, 0x67, 0xdd, 0x6b, 0x7b, 0x40,
- 0x98, 0xa4, 0xac, 0xaa, 0x49, 0x3f, 0xba, 0xca, 0xe7, 0xf5, 0x04, 0xe4,
- 0xd6, 0x55, 0xf5, 0x29, 0xf3, 0xca, 0x06, 0x40, 0x18, 0x8c, 0xe9, 0xb7,
- 0x30, 0x4e, 0x82, 0xc0, 0x08, 0xfd, 0x28, 0xaf, 0xe0, 0x9f, 0xc5, 0x0c,
- 0x86, 0xc2, 0xb7, 0xcb, 0x79, 0x45, 0xbf, 0xaf, 0x40, 0x5c, 0xe4, 0x79,
- 0x4a, 0xb8, 0xa9, 0x58, 0xbf, 0x16, 0x07, 0x7d, 0x8e, 0xdc, 0xf3, 0xf6,
- 0xb6, 0x98, 0x5c, 0xc2, 0xcb, 0x66, 0xea, 0x8b, 0x0e, 0x13, 0x33, 0xb9,
- 0xd4, 0x21, 0xe0, 0xff, 0xe8, 0x88, 0xb6, 0x05, 0xa8, 0x83, 0xfd, 0x7e,
- 0x6b, 0x90, 0x65, 0x3d, 0xb5, 0x8d, 0xbd, 0x8f, 0x83, 0xe8, 0x04, 0xcb,
- 0xd4, 0x25, 0xed, 0xda, 0xa0, 0x98, 0x70, 0xb6, 0x83, 0xd8, 0xa7, 0x62,
- 0xbd, 0x0e, 0x9c, 0xc3, 0xee, 0x6b, 0x13, 0x72, 0xc6, 0xf4, 0x4c, 0xb1,
- 0xe3, 0x89, 0x61, 0x0f, 0xc9, 0x60, 0x34, 0xeb, 0xfb, 0xeb, 0xc9, 0xe9,
- 0xd7, 0xaf, 0x8e, 0xdf, 0xd3, 0x12, 0x1d, 0x84, 0xfa, 0xd0, 0x6a, 0x43,
- 0xc7, 0xab, 0x59, 0x29, 0xdd, 0x37, 0x10, 0xb6, 0xe6, 0x20, 0x08, 0xe3,
- 0x7b, 0x7d, 0xc7, 0xad, 0x21, 0x99, 0x48, 0xfe, 0xac, 0x43, 0xa6, 0x26,
- 0xaf, 0xa1, 0x5c, 0x1e, 0xcf, 0x11, 0xfa, 0xe3, 0xef, 0x93, 0xe2, 0xaa,
- 0x8a, 0xfc, 0x00, 0x2e, 0x9f, 0x61, 0x33, 0x40, 0xdf, 0x00, 0x9c, 0xb1,
- 0xc7, 0x83, 0x39, 0x0d, 0xff, 0x3b, 0x96, 0xba, 0x32, 0xa6, 0x27, 0x02,
- 0xd0, 0x85, 0x62, 0xdb, 0x6e, 0xf3, 0xb9, 0x71, 0xb4, 0x0a, 0x27, 0xe1,
- 0x3a, 0xbd, 0x5b, 0x1b, 0x44, 0xaf, 0xe8, 0xf2, 0x4d, 0x6d, 0x55, 0x6a,
- 0x5a, 0xa5, 0x5a, 0xf0, 0xab, 0x75, 0x36, 0x23, 0xff, 0xca, 0x04, 0xd3,
- 0x02, 0x6f, 0x00, 0xaa, 0x51, 0x1e, 0x44, 0xdf, 0x52, 0xbb, 0x66, 0x22,
- 0xde, 0x05, 0x5c, 0x0d, 0xd4, 0x8d, 0x2e, 0x50, 0xc9, 0x3b, 0x7c, 0x73,
- 0x74, 0x72, 0x42, 0x70, 0x2d, 0x63, 0xc6, 0x0d, 0xfc, 0xe6, 0xed, 0x30,
- 0x6a, 0xca, 0x65, 0xa0, 0xdd, 0x38, 0x25, 0x8c, 0xbc, 0xec, 0xd2, 0x20,
- 0xb4, 0xbe, 0x3a, 0xa4, 0x8e, 0xcc, 0x09, 0x22, 0x11, 0x65, 0x77, 0x3d,
- 0xaf, 0x1f, 0x53, 0xea, 0xa2, 0xfd, 0xa1, 0x6c, 0x3d, 0x3c, 0x7a, 0x7f,
- 0xfe, 0x51, 0x39, 0x60, 0xd9, 0x3b, 0x88, 0xaa, 0x06, 0x5a, 0x77, 0x90,
- 0x19, 0x14, 0xbd, 0x2e, 0xe1, 0x76, 0x1c, 0x4f, 0xb9, 0xda, 0x60, 0xd8,
- 0xbf, 0x1c, 0xfd, 0x0d, 0xb8, 0x95, 0x87, 0x35, 0xd0, 0xff, 0x5f, 0x84,
- 0x01, 0x7e, 0xd8, 0x3d, 0xd1, 0x64, 0xc2, 0x16, 0xdb, 0x99, 0x21, 0xfa,
- 0xaa, 0x5f, 0x07, 0x14, 0x3b, 0x72, 0xb7, 0x49, 0x2f, 0x3b, 0x44, 0xae,
- 0x12, 0xd0, 0x41, 0xbc, 0xfb, 0x2c, 0x9b, 0x48, 0xde, 0x31, 0x96, 0xd9,
- 0xe1, 0x98, 0xb4, 0x4b, 0x22, 0x79, 0x7d, 0x63, 0x8f, 0x31, 0x23, 0x18,
- 0x85, 0x08, 0x4d, 0xbf, 0x64, 0x72, 0xff, 0x73, 0x6a, 0x1a, 0x1f, 0x83,
- 0x68, 0xba, 0x44, 0x3b, 0x16, 0x06, 0x44, 0x30, 0x1e, 0x0e, 0x53, 0xf0,
- 0xe6, 0xe6, 0xa9, 0x67, 0x9d, 0x31, 0x80, 0x31, 0x0d, 0xc1, 0x1c, 0x81,
- 0xa5, 0xc4, 0x8a, 0xc6, 0xfd, 0x2d, 0xf6, 0xac, 0x03, 0x45, 0xe9, 0x93,
- 0x78, 0xad, 0x6f, 0x2d, 0xe7, 0x71, 0x61, 0xe0, 0xc4, 0xef, 0x41, 0x70,
- 0xab, 0xad, 0xec, 0x95, 0x23, 0xf7, 0xb4, 0xcf, 0x37, 0xe1, 0xd5, 0xa0,
- 0x76, 0x04, 0x62, 0xf4, 0xab, 0x02, 0x35, 0x62, 0xfa, 0xa1, 0xf4, 0xfe,
- 0x86, 0xbf, 0xbc, 0x1b, 0x0e, 0x03, 0x38, 0x59, 0x28, 0x4f, 0xe1, 0x41,
- 0xc7, 0xb1, 0x34, 0x3c, 0x7a, 0x0f, 0x86, 0x0e, 0xef, 0xe2, 0xef, 0xa1,
- 0xaf, 0x92, 0x3e, 0xd6, 0x57, 0xb5, 0xb5, 0xef, 0x58, 0xa8, 0xa8, 0xb3,
- 0x32, 0x08, 0x0e, 0x6b, 0xad, 0x01, 0xdc, 0xf1, 0x96, 0xda, 0xa7, 0x88,
- 0xd7, 0x74, 0x0e, 0x7a, 0xff, 0x8f, 0xb3, 0xb6, 0x1f, 0x0e, 0x66, 0xb3,
- 0x89, 0x66, 0xef, 0xbe, 0x42, 0x48, 0x2e, 0x4b, 0x82, 0xb6, 0x70, 0xee,
- 0xba, 0x5e, 0xac, 0x80, 0x37, 0x3d, 0x27, 0x59, 0x29, 0x6e, 0xd1, 0x84,
- 0xd4, 0x2a, 0x25, 0x8b, 0x5c, 0x1b, 0x3e, 0x46, 0x20, 0xda, 0xff, 0xcd,
- 0x2b, 0x44, 0x81, 0xdf, 0xd9, 0x19, 0x02, 0xff, 0x3d, 0x3f, 0x05, 0xfd,
- 0x1c, 0xfe, 0x72, 0xf4, 0xfa, 0xf8, 0x3b, 0xeb, 0x30, 0x3d, 0xb7, 0xae,
- 0x28, 0x2e, 0xac, 0xf5, 0x1a, 0x69, 0x08, 0x74, 0xa4, 0xe3, 0xdb, 0xa1,
- 0xbb, 0x26, 0xbb, 0xe3, 0x6c, 0x13, 0x86, 0xaa, 0xd3, 0xe1, 0x5a, 0x1a,
- 0xf7, 0xdd, 0xbd, 0xad, 0x82, 0xb7, 0x24, 0xc2, 0xe5, 0x63, 0x47, 0x4f,
- 0xe3, 0xb2, 0xca, 0xaa, 0xa6, 0xe3, 0xb4, 0x6e, 0x4f, 0x0a, 0x16, 0x28,
- 0x96, 0x97, 0xfc, 0x00, 0xfd, 0xdb, 0x9f, 0x39, 0x1a, 0x3b, 0x5b, 0x67,
- 0x89, 0xd3, 0xb7, 0x13, 0xd4, 0xb7, 0xbe, 0x33, 0x90, 0x4a, 0xa3, 0x1a,
- 0x0e, 0x5e, 0x2d, 0x05, 0xbd, 0x92, 0x31, 0xdd, 0x32, 0x7f, 0x09, 0x5a,
- 0xc9, 0x0c, 0xd3, 0x5c, 0x84, 0xac, 0x5c, 0xec, 0x48, 0xca, 0x54, 0xc5,
- 0x08, 0x4f, 0xb5, 0xd7, 0xf0, 0x72, 0x02, 0x89, 0x82, 0x18, 0x75, 0x8c,
- 0x2f, 0x85, 0x7f, 0x78, 0x5f, 0xa7, 0xaf, 0xea, 0x0e, 0xb2, 0xfb, 0x4b,
- 0x93, 0x53, 0x67, 0x7e, 0x8c, 0x12, 0x89, 0x2f, 0xc7, 0xa5, 0xe9, 0x5f,
- 0xad, 0x16, 0x7c, 0xda, 0x5f, 0xb9, 0x87, 0x4a, 0x82, 0xe5, 0xed, 0xd5,
- 0xce, 0xa2, 0x31, 0xd0, 0xff, 0xfd, 0xf7, 0x79, 0x06, 0xe2, 0x3b, 0xe5,
- 0x34, 0xc6, 0x38, 0xe6, 0x97, 0x5a, 0x63, 0x24, 0x4f, 0x1a, 0x24, 0x69,
- 0x8e, 0xb2, 0xfb, 0x94, 0x41, 0x76, 0x5b, 0x63, 0x5c, 0x3f, 0x69, 0x90,
- 0x58, 0xbd, 0x61, 0x9f, 0x7d, 0x76, 0xf4, 0xdd, 0xf1, 0x39, 0x98, 0xb6,
- 0xaf, 0x1a, 0x67, 0xa6, 0x14, 0x89, 0x82, 0x0a, 0x75, 0x0e, 0x9c, 0x07,
- 0xaf, 0x8e, 0xb3, 0x4b, 0x52, 0xc0, 0x6a, 0x29, 0x7a, 0xc0, 0xe8, 0x59,
- 0xa5, 0x58, 0x63, 0x59, 0xc9, 0xed, 0x37, 0x30, 0xdd, 0x99, 0x92, 0x1a,
- 0x1c, 0x74, 0x4a, 0xa7, 0x00, 0xb4, 0xb2, 0x75, 0xed, 0xd8, 0x2a, 0x29,
- 0x29, 0xb9, 0xfd, 0xa8, 0x19, 0x31, 0x67, 0x44, 0x3e, 0x42, 0x92, 0xaa,
- 0x1b, 0xb1, 0x6e, 0xdb, 0x10, 0x84, 0x24, 0x08, 0x86, 0x4c, 0x08, 0x40,
- 0x9c, 0x71, 0xc4, 0xc8, 0x56, 0x1b, 0x33, 0xdb, 0x5a, 0x5e, 0xdd, 0x14,
- 0xa1, 0x9d, 0x37, 0xd8, 0x9d, 0x18, 0x5d, 0x6e, 0x15, 0x54, 0x06, 0xc7,
- 0xa6, 0x63, 0x33, 0x9a, 0x4d, 0x79, 0xd1, 0x30, 0x97, 0x02, 0x3e, 0x4a,
- 0x33, 0x84, 0xf9, 0xce, 0x96, 0xd8, 0x80, 0x49, 0x36, 0x61, 0x15, 0x5a,
- 0xea, 0x12, 0xb3, 0x9f, 0x1d, 0x15, 0x60, 0xdb, 0xb8, 0xa0, 0x61, 0xf9,
- 0x13, 0x4a, 0xe4, 0x1e, 0xf3, 0xb1, 0xa8, 0xee, 0xf3, 0x3a, 0xb9, 0x23,
- 0xe5, 0x14, 0x8f, 0xba, 0xb4, 0x31, 0xb1, 0x6f, 0xee, 0x68, 0xd1, 0x9a,
- 0xb6, 0x4b, 0x29, 0x4a, 0x13, 0x23, 0xd4, 0x38, 0xaf, 0x8d, 0xff, 0x2b,
- 0x40, 0x28, 0x37, 0x2e, 0x4d, 0xab, 0x0c, 0x1d, 0x41, 0x81, 0x3c, 0x00,
- 0x49, 0x1b, 0xd6, 0xaf, 0x2a, 0xe0, 0xa8, 0xb4, 0x98, 0x4e, 0xef, 0xf0,
- 0x02, 0xc8, 0x28, 0x3b, 0x5e, 0x9b, 0x3c, 0x60, 0x1b, 0x6a, 0xa4, 0x17,
- 0xb7, 0x41, 0xf3, 0x61, 0x59, 0xad, 0xd2, 0xab, 0x6a, 0xca, 0xb8, 0x20,
- 0x02, 0xf6, 0x05, 0xb7, 0xbc, 0xb8, 0x48, 0x10, 0xea, 0x98, 0x30, 0x01,
- 0x93, 0x9c, 0x5d, 0x0b, 0xba, 0x03, 0x61, 0xc4, 0x34, 0x4b, 0x84, 0x5d,
- 0xb1, 0xaa, 0xc9, 0x93, 0x46, 0x33, 0x56, 0xc4, 0x2f, 0x57, 0xc2, 0xb0,
- 0x6b, 0x4d, 0xa2, 0x3a, 0xe8, 0xd0, 0x1b, 0x19, 0xaf, 0xf6, 0x45, 0x28,
- 0x19, 0xa2, 0x6a, 0xe5, 0xff, 0x3c, 0x73, 0xbf, 0x82, 0x6f, 0xe9, 0x37,
- 0xb8, 0x95, 0x87, 0xfd, 0x84, 0x9b, 0xb0, 0x66, 0xbf, 0x41, 0x69, 0x9c,
- 0x0f, 0x7f, 0xe5, 0x79, 0x9b, 0x5f, 0x9c, 0x6c, 0x38, 0xfa, 0x90, 0x79,
- 0xf2, 0x85, 0xc4, 0x8d, 0x53, 0x84, 0xa2, 0x93, 0x18, 0x42, 0x99, 0xce,
- 0x26, 0xb2, 0x5c, 0xf9, 0x09, 0xe5, 0x74, 0x53, 0xec, 0x97, 0xdd, 0x20,
- 0x66, 0x3e, 0x60, 0x69, 0xbb, 0x61, 0xb1, 0x97, 0xf2, 0x5d, 0x2c, 0xaa,
- 0x63, 0x2f, 0x2a, 0xc1, 0x51, 0x67, 0x86, 0x11, 0x79, 0x38, 0xfe, 0x11,
- 0x56, 0xce, 0xc2, 0x55, 0x55, 0x98, 0x7f, 0xcb, 0x1b, 0x1e, 0xd6, 0x56,
- 0x2b, 0xff, 0x0a, 0x29, 0x36, 0x2f, 0x19, 0x46, 0xd2, 0x5a, 0x45, 0xda,
- 0x68, 0x9c, 0xd7, 0x8b, 0xda, 0x21, 0x76, 0x85, 0x89, 0xde, 0x16, 0x5e,
- 0x6b, 0xb3, 0xe2, 0xb2, 0x96, 0x5e, 0x30, 0x11, 0x56, 0xc1, 0x32, 0x7d,
- 0xc0, 0x04, 0xbe, 0x12, 0xc5, 0xd7, 0x69, 0x7d, 0x86, 0xcc, 0x6f, 0x02,
- 0xc1, 0x20, 0x04, 0x28, 0x37, 0x20, 0x30, 0xbb, 0x76, 0x25, 0xef, 0xe6,
- 0x86, 0xa1, 0x03, 0x2e, 0x0a, 0x21, 0xd3, 0x69, 0x2b, 0xc0, 0xbe, 0xa1,
- 0x76, 0x57, 0xb7, 0x09, 0x09, 0x17, 0x63, 0xbc, 0xda, 0xe0, 0x8d, 0xc9,
- 0x8d, 0x44, 0x0d, 0xd3, 0x07, 0x02, 0xc0, 0x90, 0x53, 0x8e, 0xd5, 0x3e,
- 0xa8, 0x1e, 0x70, 0x0d, 0x31, 0x83, 0xa1, 0xc8, 0x65, 0xd6, 0xa7, 0x98,
- 0xa4, 0x91, 0x9e, 0x9c, 0x78, 0x4c, 0x92, 0xf9, 0x26, 0x2d, 0x3b, 0xc2,
- 0xe7, 0xd8, 0xc7, 0xc4, 0xb1, 0xe9, 0x2c, 0x96, 0xb6, 0xb3, 0x9e, 0x4d,
- 0xb3, 0x9e, 0x5b, 0xe2, 0x94, 0xb3, 0x83, 0xe1, 0x50, 0xf9, 0xe4, 0x30,
- 0xc0, 0x12, 0xea, 0xe3, 0x9d, 0xdc, 0x9b, 0x5e, 0x16, 0xbe, 0x23, 0x44,
- 0x06, 0x69, 0x15, 0x00, 0x6c, 0xb2, 0xb0, 0x7b, 0xc5, 0xf0, 0xb3, 0xb8,
- 0x1e, 0x5d, 0x2f, 0xf3, 0x95, 0xae, 0xf8, 0x76, 0x31, 0x25, 0xc3, 0x46,
- 0x2b, 0xe7, 0xf4, 0x22, 0x9d, 0x09, 0x63, 0xb2, 0x96, 0xbc, 0x2e, 0x74,
- 0x47, 0x82, 0x40, 0x42, 0x49, 0xe6, 0x4c, 0x64, 0xdb, 0x5f, 0xf4, 0x37,
- 0xbc, 0xa8, 0xfe, 0x2f, 0x5a, 0xf4, 0x37, 0x81, 0x45, 0xef, 0xd8, 0x83,
- 0xc3, 0x1f, 0x8b, 0xb6, 0xb6, 0x9e, 0x2b, 0xe2, 0x09, 0xe7, 0x54, 0x20,
- 0x14, 0x6d, 0xe0, 0x83, 0xf0, 0x5c, 0x2c, 0x6d, 0x5e, 0x3d, 0x3f, 0xb9,
- 0x3d, 0xbd, 0xce, 0xa7, 0x76, 0xcd, 0xa7, 0xc0, 0x28, 0xc7, 0xb1, 0x50,
- 0xa5, 0x62, 0xf1, 0xe3, 0x8b, 0x25, 0x8d, 0x6b, 0x61, 0x48, 0xe2, 0x16,
- 0xeb, 0xc4, 0x3a, 0x6a, 0x3b, 0x74, 0x16, 0xce, 0x77, 0x9e, 0x99, 0x90,
- 0xf2, 0xfa, 0x96, 0xe6, 0x98, 0x1f, 0x90, 0x90, 0x9e, 0xa4, 0x53, 0xe2,
- 0x4c, 0xb6, 0xcf, 0xad, 0xc6, 0xca, 0xb0, 0x74, 0x97, 0x65, 0x42, 0xfd,
- 0x53, 0x27, 0xc9, 0x7d, 0xa0, 0xdd, 0x87, 0x76, 0x60, 0xa6, 0xc8, 0x0d,
- 0x1c, 0xcf, 0xab, 0x34, 0xc7, 0x18, 0x05, 0xa9, 0x09, 0xe2, 0x35, 0x44,
- 0xbf, 0x23, 0xee, 0x68, 0x71, 0x69, 0x32, 0x7c, 0xe4, 0xab, 0x1e, 0x40,
- 0x2d, 0x26, 0x30, 0xd4, 0x6d, 0x10, 0x89, 0x70, 0xaf, 0xa0, 0xcd, 0xe7,
- 0x76, 0x8b, 0x46, 0xce, 0x25, 0x81, 0xa6, 0x34, 0xe3, 0x67, 0xbb, 0xf4,
- 0x53, 0x81, 0xa2, 0xc9, 0x77, 0x52, 0x87, 0xec, 0xf1, 0xa5, 0xbc, 0x69,
- 0xbf, 0xc2, 0x02, 0xf9, 0x0c, 0xc5, 0x9d, 0xf4, 0x73, 0x1c, 0x80, 0xd1,
- 0x87, 0x39, 0x09, 0x8d, 0xf6, 0xd0, 0x6c, 0x49, 0x27, 0x36, 0xb3, 0xac,
- 0xc9, 0xba, 0x2f, 0xed, 0x1e, 0x9b, 0x29, 0x69, 0x41, 0xc8, 0xba, 0xca,
- 0x59, 0x73, 0xd7, 0x68, 0x6a, 0x50, 0x1a, 0xbd, 0x3f, 0x3a, 0x7f, 0x4f,
- 0xf9, 0xd1, 0x28, 0x02, 0x3c, 0xfb, 0x37, 0x29, 0xd7, 0x0c, 0x7a, 0xbe,
- 0x08, 0x34, 0xab, 0xa2, 0x58, 0x11, 0xc1, 0x3d, 0x54, 0xcc, 0x8e, 0xf3,
- 0x3f, 0xf5, 0x3d, 0x53, 0xe6, 0xca, 0x24, 0xb7, 0xb9, 0x93, 0xcd, 0xee,
- 0x2e, 0x5b, 0x5b, 0xb6, 0x46, 0x08, 0x16, 0x7e, 0x95, 0x0a, 0x57, 0x0a,
- 0x6e, 0xc1, 0x40, 0x0a, 0x3e, 0x14, 0x5f, 0x44, 0x7d, 0x6f, 0xf8, 0x10,
- 0xd7, 0xbe, 0x15, 0x65, 0xe0, 0x9e, 0x94, 0x4f, 0xab, 0x6a, 0xc0, 0x53,
- 0x30, 0x26, 0xbf, 0x7c, 0x4d, 0x2a, 0x6e, 0xb9, 0xda, 0x8e, 0xfb, 0x11,
- 0x46, 0x3b, 0x1b, 0x1b, 0x81, 0x8a, 0xf8, 0xe4, 0x02, 0xc4, 0xaa, 0x28,
- 0x7a, 0x02, 0x5c, 0xc3, 0xe0, 0x21, 0xb4, 0x5f, 0xa4, 0x7e, 0x56, 0x68,
- 0x8b, 0xc4, 0x97, 0x98, 0xd4, 0x81, 0x14, 0xf3, 0x8d, 0x8e, 0x2d, 0x96,
- 0x32, 0xdf, 0x12, 0x90, 0x8e, 0x12, 0xad, 0x25, 0x5d, 0x18, 0x65, 0x87,
- 0xeb, 0x92, 0xac, 0x47, 0x90, 0x3c, 0x6b, 0x9c, 0xad, 0xe4, 0xcd, 0xcc,
- 0x93, 0xe0, 0x5b, 0xbb, 0x01, 0x8e, 0x18, 0x9e, 0x9f, 0xbe, 0x17, 0x16,
- 0xf3, 0x6f, 0x67, 0xa2, 0x08, 0x3d, 0x61, 0xf1, 0xbf, 0xfb, 0x3e, 0xa0,
- 0x32, 0x83, 0x2d, 0xe3, 0xb8, 0xa6, 0xb1, 0x9f, 0xf3, 0x55, 0x96, 0x01,
- 0xef, 0x11, 0x6d, 0x49, 0x96, 0xf6, 0x8d, 0x60, 0xbb, 0x69, 0x3b, 0x48,
- 0x3d, 0x99, 0xce, 0x4b, 0x7c, 0xd0, 0x4e, 0xf9, 0x04, 0x33, 0x96, 0x19,
- 0xf2, 0x91, 0xa0, 0x9a, 0x61, 0x3b, 0x49, 0x71, 0x1c, 0x68, 0x69, 0x9a,
- 0xc7, 0x8b, 0x7c, 0x88, 0x4e, 0x6d, 0xc7, 0x4f, 0x96, 0xf1, 0xb2, 0x4c,
- 0x63, 0x28, 0xe3, 0x8f, 0x29, 0x2b, 0x8a, 0x3b, 0x62, 0x4a, 0xad, 0x4f,
- 0xc2, 0x89, 0x01, 0x23, 0xaf, 0x55, 0x73, 0x51, 0x8e, 0xc5, 0xa5, 0x22,
- 0x57, 0xa7, 0xda, 0x12, 0x56, 0x05, 0xb7, 0xf7, 0xfe, 0xd9, 0xe9, 0xfb,
- 0x73, 0x73, 0xeb, 0xe3, 0x67, 0xe9, 0x07, 0xad, 0xd3, 0x83, 0xc5, 0xf1,
- 0xe2, 0x53, 0x91, 0xbb, 0x0d, 0x77, 0xc0, 0xcb, 0xce, 0x10, 0x73, 0x81,
- 0xb7, 0x84, 0xc6, 0xd1, 0x81, 0xfa, 0x14, 0x5a, 0x1b, 0x17, 0xec, 0xdd,
- 0x34, 0xd2, 0x86, 0x3d, 0x62, 0x74, 0xd5, 0x74, 0xb4, 0xcc, 0xb0, 0xf8,
- 0xa8, 0xdb, 0x9b, 0x01, 0xce, 0xc0, 0x2b, 0xe1, 0xfd, 0xd1, 0xf0, 0x9c,
- 0xa7, 0x8e, 0x7f, 0xf3, 0xa6, 0xce, 0xf0, 0x8b, 0xf2, 0x43, 0xcf, 0x86,
- 0x31, 0x9c, 0x81, 0x45, 0x59, 0xe8, 0x59, 0xc6, 0xf1, 0x0d, 0x4e, 0xa5,
- 0x43, 0xb1, 0x6d, 0xa7, 0x16, 0x90, 0x44, 0xa6, 0xf0, 0x09, 0x9d, 0x6f,
- 0xfa, 0x41, 0x4f, 0x3e, 0xd2, 0x03, 0xcd, 0x4c, 0xce, 0x43, 0xa3, 0xb3,
- 0xf0, 0xf6, 0x8e, 0x1d, 0x62, 0x86, 0x57, 0x95, 0x8c, 0x70, 0xcc, 0xd0,
- 0x9f, 0x13, 0xfa, 0x61, 0xac, 0xbc, 0x42, 0xf7, 0x05, 0x73, 0x05, 0x3f,
- 0x67, 0xc7, 0xd9, 0x35, 0x61, 0x18, 0xd5, 0x16, 0x9c, 0xb9, 0xe0, 0x8f,
- 0xb5, 0x30, 0x86, 0x14, 0x8e, 0x16, 0xcf, 0x6d, 0x33, 0xab, 0x7f, 0x95,
- 0x8c, 0x6d, 0x25, 0x1f, 0xaf, 0xbd, 0x71, 0x2d, 0x48, 0xbc, 0x8f, 0xd4,
- 0xb4, 0xa4, 0x9c, 0x64, 0x98, 0x78, 0x72, 0xc1, 0x96, 0x23, 0xbe, 0x16,
- 0x6a, 0x7b, 0xea, 0x7c, 0x43, 0xae, 0x20, 0x74, 0x0e, 0x8e, 0x9c, 0xab,
- 0x1a, 0x3e, 0xc5, 0xa7, 0xd8, 0x2a, 0xfc, 0x18, 0xe5, 0x31, 0x17, 0xc5,
- 0x20, 0x3a, 0xc3, 0x10, 0x2f, 0xe9, 0x4d, 0xd5, 0xff, 0xb4, 0xc3, 0xf1,
- 0x31, 0xc1, 0x8c, 0x24, 0x55, 0x05, 0x10, 0xaf, 0x72, 0xc0, 0x3f, 0x21,
- 0xe8, 0x4a, 0xdb, 0x34, 0xd7, 0x5b, 0xef, 0x4b, 0xfb, 0x72, 0x05, 0x4b,
- 0x01, 0x13, 0xbe, 0xfd, 0xc8, 0x8e, 0x70, 0x16, 0xd8, 0xf7, 0x34, 0x84,
- 0x11, 0xce, 0x78, 0x9a, 0x71, 0x3f, 0xc8, 0x72, 0xa4, 0x11, 0x2e, 0xf5,
- 0x99, 0x86, 0x10, 0x77, 0x86, 0xe2, 0xeb, 0xe0, 0x40, 0x48, 0x85, 0xf8,
- 0xf9, 0x70, 0x6a, 0x50, 0x99, 0x83, 0xb1, 0x72, 0x94, 0xb5, 0xc6, 0x9b,
- 0xd8, 0xc8, 0x1f, 0x26, 0xda, 0x9a, 0x1e, 0x06, 0x6d, 0xea, 0x26, 0xcd,
- 0xfc, 0xba, 0x1d, 0xe6, 0x45, 0xc3, 0x37, 0xe6, 0x06, 0x6b, 0xcc, 0x4e,
- 0xea, 0x98, 0xc5, 0xa9, 0x77, 0x91, 0x10, 0x0a, 0x79, 0x02, 0xf7, 0xbb,
- 0x6b, 0x00, 0xec, 0xec, 0xda, 0xa1, 0x2e, 0x09, 0x97, 0x5d, 0x06, 0xc3,
- 0x76, 0x07, 0x4e, 0x0e, 0x99, 0xe9, 0x0f, 0x9f, 0x99, 0x27, 0x5d, 0x83,
- 0x32, 0x70, 0xa8, 0x9c, 0x6f, 0x3c, 0x17, 0xbb, 0x18, 0x0d, 0xe3, 0xfc,
- 0xde, 0xc2, 0x0c, 0x0c, 0x38, 0x0d, 0x98, 0x3d, 0x6b, 0x38, 0xb8, 0xf9,
- 0x8d, 0x38, 0x67, 0xaf, 0xc5, 0x73, 0x33, 0x4d, 0xee, 0xbc, 0x4b, 0x7e,
- 0x3a, 0x9f, 0x4a, 0x8d, 0xad, 0xf3, 0xa5, 0x17, 0xe2, 0xe6, 0xe0, 0xa2,
- 0x70, 0x83, 0x3f, 0xef, 0x2c, 0x04, 0x6d, 0x2e, 0x35, 0xa9, 0xb5, 0x10,
- 0x61, 0x4c, 0x35, 0x97, 0x95, 0x69, 0xf6, 0x1c, 0xe8, 0x18, 0x85, 0x82,
- 0x56, 0x14, 0x5e, 0x75, 0x38, 0x14, 0x4e, 0x43, 0x06, 0xa4, 0xb7, 0x3c,
- 0xc6, 0xbf, 0x52, 0x64, 0xe5, 0x40, 0x4c, 0xaf, 0x4c, 0x7f, 0x22, 0x65,
- 0x72, 0xc0, 0xd7, 0x0d, 0x23, 0x34, 0xf1, 0x2a, 0x11, 0x8a, 0xd1, 0x0a,
- 0xbc, 0x9d, 0x97, 0xe2, 0xc3, 0x12, 0x1f, 0x09, 0xe6, 0x41, 0xe7, 0x69,
- 0xed, 0xa5, 0x5b, 0xee, 0x6e, 0x5a, 0xff, 0x6e, 0x9a, 0x96, 0x82, 0x78,
- 0xe1, 0x56, 0x93, 0x62, 0x4b, 0xcc, 0xe1, 0x9b, 0xe8, 0xed, 0xab, 0x5d,
- 0x74, 0xb2, 0x5f, 0xa5, 0xe5, 0xac, 0xc4, 0x5a, 0x47, 0xe5, 0xe1, 0xd3,
- 0xbf, 0x38, 0x83, 0x6d, 0xd9, 0x94, 0x20, 0xed, 0xe0, 0xa3, 0xe2, 0x8c,
- 0x4d, 0x06, 0xd8, 0x42, 0x44, 0xf7, 0xbb, 0xea, 0x4b, 0xee, 0x99, 0x76,
- 0xb8, 0xd1, 0x1e, 0x0a, 0xa4, 0xb7, 0x84, 0xe0, 0xd0, 0x9c, 0x8f, 0x6c,
- 0x5b, 0x09, 0x56, 0xde, 0xcf, 0x28, 0x9a, 0x72, 0x85, 0xa6, 0x41, 0xe0,
- 0x44, 0xed, 0xb2, 0xd4, 0x3c, 0xe4, 0x73, 0x8f, 0x4a, 0xac, 0xff, 0x1a,
- 0xa9, 0xe8, 0xad, 0x60, 0xf5, 0xee, 0xae, 0xeb, 0x5a, 0xc0, 0x26, 0x7d,
- 0x12, 0x7c, 0xa1, 0x60, 0x0b, 0xea, 0x28, 0xce, 0xb3, 0xcf, 0xcc, 0xb3,
- 0x94, 0xf7, 0x91, 0x4b, 0xdf, 0x8d, 0x05, 0x6f, 0x88, 0xfa, 0xab, 0x46,
- 0x82, 0xaa, 0x66, 0xac, 0xf1, 0x38, 0xb4, 0x37, 0x8a, 0xe2, 0xee, 0xcb,
- 0x96, 0x43, 0x85, 0x9a, 0x67, 0x1b, 0xc6, 0xa4, 0x45, 0x65, 0xb3, 0x6b,
- 0xf7, 0x70, 0x3e, 0xe3, 0x5b, 0xfa, 0xac, 0x5d, 0x1c, 0xac, 0x32, 0x30,
- 0x75, 0x01, 0x5b, 0xf5, 0xa8, 0x33, 0xeb, 0x1f, 0x1e, 0x44, 0x5d, 0x70,
- 0x27, 0xc4, 0xeb, 0xce, 0x47, 0x36, 0xe5, 0xcc, 0xc0, 0x92, 0x8b, 0xab,
- 0x3c, 0xfb, 0x39, 0x75, 0x8a, 0xa8, 0xa8, 0x63, 0x61, 0x43, 0x53, 0x7a,
- 0xb6, 0x25, 0x02, 0xe3, 0x26, 0x99, 0x64, 0x22, 0x14, 0x1b, 0x3d, 0x94,
- 0x9f, 0x6d, 0x0b, 0xd7, 0xde, 0x65, 0x78, 0x44, 0x49, 0xff, 0xa7, 0xd2,
- 0x75, 0x4c, 0x65, 0x4e, 0x1b, 0xf0, 0xa9, 0xcf, 0x76, 0x44, 0xeb, 0x52,
- 0xed, 0x18, 0xef, 0x5e, 0x24, 0xc4, 0x84, 0xda, 0x15, 0xb5, 0xc5, 0xf4,
- 0x33, 0xb9, 0xf7, 0x64, 0x2b, 0x29, 0xf8, 0x8b, 0xaa, 0xa6, 0x48, 0x68,
- 0x4c, 0x8d, 0x2d, 0xd3, 0x5b, 0x0e, 0x22, 0x25, 0xbe, 0xb2, 0xf5, 0xec,
- 0x59, 0x87, 0x6f, 0xb2, 0xe2, 0x4b, 0xf3, 0x88, 0x78, 0xc9, 0x79, 0xfe,
- 0xb9, 0x3d, 0x09, 0x8d, 0x56, 0x4f, 0xda, 0xe7, 0xa7, 0xef, 0xb6, 0xf3,
- 0xd2, 0xb3, 0xc4, 0x6e, 0x94, 0x94, 0x9b, 0x69, 0x07, 0xda, 0x2d, 0x5f,
- 0x9a, 0xcf, 0x4f, 0x0a, 0x94, 0xa6, 0xce, 0xf7, 0x98, 0xa5, 0x5e, 0x53,
- 0x38, 0xd3, 0x9a, 0x07, 0x79, 0x74, 0x1e, 0xc2, 0x60, 0x7b, 0xf6, 0x52,
- 0x78, 0x43, 0xef, 0x4b, 0x63, 0xb0, 0x76, 0xbd, 0xf1, 0x7c, 0xc3, 0x55,
- 0x57, 0xc7, 0x98, 0xa4, 0xca, 0x58, 0x95, 0x9d, 0x2f, 0x30, 0x67, 0x1c,
- 0x4f, 0x10, 0x2b, 0x7a, 0xc2, 0xcf, 0xd8, 0x0e, 0x3b, 0xf6, 0xb1, 0xad,
- 0x86, 0xd0, 0x3d, 0x77, 0x15, 0xa8, 0xe8, 0xf8, 0x95, 0xf3, 0xe0, 0xb6,
- 0x5d, 0x60, 0x32, 0x41, 0x6d, 0xe0, 0x9e, 0x7d, 0x55, 0x55, 0xb4, 0x8a,
- 0x6f, 0x39, 0xa8, 0x1d, 0xcf, 0x99, 0x33, 0xde, 0x15, 0x1c, 0x05, 0x25,
- 0xf2, 0x7b, 0xcf, 0x30, 0x3b, 0x1c, 0x9a, 0x06, 0x02, 0xb6, 0x79, 0x80,
- 0xb7, 0xf7, 0xcf, 0x9f, 0x2d, 0x78, 0x56, 0x2e, 0xcd, 0xca, 0x5c, 0xf5,
- 0xce, 0x7b, 0xcf, 0x1b, 0xc7, 0x5c, 0x6d, 0x01, 0x2d, 0xdb, 0x87, 0x53,
- 0x46, 0x31, 0xee, 0x55, 0x0c, 0x1c, 0xfe, 0x4f, 0xf5, 0x0b, 0x96, 0xd8,
- 0xe1, 0xa6, 0xfa, 0x9f, 0xee, 0x54, 0x5f, 0xb8, 0xb5, 0xff, 0xec, 0x14,
- 0x34, 0x49, 0x1c, 0x6e, 0x2b, 0xf2, 0x96, 0x13, 0xcf, 0x19, 0x81, 0xb7,
- 0x1b, 0x54, 0x88, 0x79, 0x6e, 0x85, 0x06, 0x5b, 0x80, 0x82, 0xb6, 0x39,
- 0x76, 0x3b, 0x21, 0xa1, 0xb8, 0x17, 0x07, 0x94, 0xe3, 0x43, 0xdd, 0x68,
- 0x9d, 0x80, 0xea, 0x7a, 0xce, 0xe6, 0xb6, 0x59, 0x51, 0x08, 0xde, 0xe5,
- 0xc5, 0x56, 0x4b, 0x72, 0x91, 0xce, 0x78, 0x08, 0xb3, 0x65, 0x7b, 0x5c,
- 0xbb, 0x49, 0xa3, 0x89, 0x5a, 0x16, 0xec, 0xe3, 0x42, 0x67, 0x90, 0x1d,
- 0x40, 0xf4, 0x15, 0x2c, 0x34, 0x29, 0x25, 0x7b, 0xac, 0xbd, 0x43, 0x2f,
- 0x76, 0x0c, 0x89, 0xc8, 0x2a, 0x01, 0x03, 0xbf, 0xd3, 0x84, 0x7f, 0xc1,
- 0x3b, 0xff, 0x36, 0xab, 0x38, 0x18, 0x08, 0xec, 0xfc, 0xfe, 0x7c, 0x78,
- 0x16, 0x1d, 0x0e, 0xd3, 0xbf, 0x4b, 0x76, 0xa1, 0x23, 0xe0, 0x5e, 0x3c,
- 0x0b, 0x3f, 0x3d, 0x14, 0xff, 0xdc, 0x31, 0xf5, 0x21, 0x04, 0x7a, 0x36,
- 0x5e, 0x7a, 0x2e, 0x4c, 0xad, 0x0e, 0x7c, 0xf6, 0x63, 0xe1, 0xd4, 0x48,
- 0xa2, 0x4d, 0x1a, 0xbb, 0xf3, 0xe2, 0x85, 0x35, 0x4d, 0xae, 0xe7, 0xf9,
- 0x27, 0xa3, 0xf4, 0x49, 0x9f, 0x13, 0xdd, 0x2a, 0xe7, 0x8d, 0x97, 0xca,
- 0xe0, 0x8e, 0x47, 0xd3, 0x54, 0x73, 0x48, 0xc6, 0xa4, 0x3a, 0x10, 0x25,
- 0xa0, 0x09, 0x52, 0xb2, 0x51, 0xa8, 0xf3, 0x72, 0xc3, 0xdc, 0xa2, 0x82,
- 0x88, 0xfe, 0x89, 0x52, 0x4b, 0x85, 0x83, 0x34, 0x73, 0x7c, 0x96, 0xe5,
- 0xe8, 0x4b, 0xb0, 0x8f, 0x38, 0x23, 0x6c, 0x36, 0x84, 0x79, 0x5b, 0x6d,
- 0x60, 0x0c, 0x34, 0xe7, 0x71, 0x66, 0x84, 0x21, 0xc6, 0x17, 0xa7, 0xc2,
- 0x7c, 0x59, 0xae, 0x9e, 0xb3, 0x96, 0x3b, 0xcc, 0xbc, 0xb4, 0xad, 0x9c,
- 0x8b, 0xcd, 0x21, 0x42, 0x1a, 0x2a, 0x67, 0x62, 0x90, 0xf2, 0x40, 0x08,
- 0xbb, 0xa2, 0x2f, 0xdb, 0x11, 0x76, 0x74, 0x84, 0x16, 0x3e, 0xb9, 0x19,
- 0xcc, 0xf8, 0x6a, 0x12, 0xcf, 0x58, 0x7a, 0xb9, 0x2b, 0x21, 0xa3, 0x87,
- 0xfc, 0x79, 0xeb, 0xdb, 0x91, 0x4c, 0x5d, 0x13, 0xe0, 0xf1, 0x7f, 0xea,
- 0xbe, 0x6b, 0x37, 0xe9, 0x10, 0x67, 0x1e, 0xd7, 0x5b, 0x68, 0xa3, 0xea,
- 0x45, 0xfe, 0xbc, 0xa6, 0x07, 0xcf, 0x03, 0x05, 0x5c, 0xe0, 0xcf, 0x7b,
- 0xc9, 0xfc, 0x4b, 0x09, 0x46, 0x0e, 0xb3, 0x18, 0x93, 0x0f, 0x93, 0x63,
- 0xd8, 0x2b, 0xc8, 0xf1, 0x7c, 0x6a, 0xed, 0x41, 0xa6, 0x07, 0xf9, 0xa4,
- 0x29, 0x5b, 0x6f, 0xe2, 0x69, 0x01, 0xd8, 0x89, 0xe8, 0x5e, 0x07, 0xa1,
- 0xb1, 0x33, 0x53, 0x1c, 0xc3, 0x01, 0x70, 0x63, 0x19, 0x0b, 0x75, 0x02,
- 0x46, 0xf1, 0x77, 0xdf, 0xf1, 0xd1, 0x32, 0x1d, 0x52, 0x24, 0xf6, 0x48,
- 0x1c, 0x2b, 0x61, 0x4d, 0x56, 0x0f, 0x71, 0xb3, 0x28, 0x62, 0x57, 0xa6,
- 0x93, 0x14, 0xfb, 0x94, 0xb1, 0xb1, 0x4a, 0x52, 0x2e, 0x94, 0xf0, 0x0d,
- 0xa4, 0xe4, 0xc8, 0x3b, 0x26, 0x78, 0xd6, 0xdc, 0xe7, 0xfb, 0x86, 0x84,
- 0x07, 0x9a, 0xda, 0x30, 0x83, 0xaf, 0x3e, 0x7c, 0x3d, 0xfc, 0xac, 0x99,
- 0x2b, 0x94, 0xde, 0xa1, 0x7b, 0x04, 0x45, 0xaa, 0x56, 0x6b, 0x10, 0xe9,
- 0x15, 0xf9, 0x95, 0x3d, 0xe9, 0x08, 0x6a, 0x3d, 0xc5, 0x3e, 0xc4, 0x48,
- 0x1b, 0x2a, 0x7d, 0xe3, 0x02, 0x19, 0xc7, 0x53, 0x0c, 0x2f, 0xa2, 0x86,
- 0xbe, 0x82, 0x41, 0xd1, 0x2b, 0x06, 0xa7, 0xc7, 0x74, 0xe5, 0x3c, 0xfa,
- 0x3a, 0xab, 0xdf, 0xcc, 0x2f, 0xf6, 0x4c, 0xfc, 0xfd, 0x0a, 0xc6, 0x9d,
- 0x5f, 0x50, 0x4b, 0x6a, 0x1c, 0x9c, 0xff, 0x43, 0x63, 0x56, 0x9f, 0x7d,
- 0x76, 0xf0, 0xe1, 0xfc, 0xcd, 0xe9, 0xfb, 0x61, 0xb4, 0x8e, 0x88, 0xa0,
- 0xe7, 0xef, 0x8f, 0xbf, 0xfa, 0x70, 0x0e, 0xff, 0xd4, 0x6f, 0xbc, 0x4a,
- 0xf2, 0x0c, 0x54, 0x1c, 0x38, 0x4b, 0x69, 0x0e, 0xe2, 0xea, 0x4a, 0xa9,
- 0xcf, 0xbd, 0x21, 0x81, 0xcd, 0x8b, 0x52, 0xd1, 0x9f, 0x31, 0x11, 0xa9,
- 0x10, 0x91, 0xc3, 0x9d, 0x2b, 0x72, 0xae, 0xeb, 0x2b, 0xac, 0x03, 0x26,
- 0x6b, 0x41, 0x99, 0x6a, 0x29, 0x4c, 0x74, 0xfe, 0xe6, 0xe0, 0xdd, 0x5f,
- 0x86, 0x9a, 0x21, 0xf2, 0xed, 0xb7, 0xdf, 0xb6, 0x73, 0x08, 0xc8, 0x10,
- 0xaa, 0xd2, 0xcf, 0x3e, 0x1b, 0x1e, 0x1d, 0x45, 0x07, 0x27, 0xc3, 0x53,
- 0x7d, 0xe0, 0xb2, 0x9e, 0xad, 0x6e, 0xae, 0x81, 0x92, 0x7f, 0x95, 0xd6,
- 0xf0, 0x97, 0xcf, 0x3e, 0xfb, 0xff, 0x00, 0x02, 0x81, 0x3b, 0x56, 0x1d,
- 0x64, 0x03, 0x00,
+ 0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xec, 0xfd,
+ 0x7b, 0x7b, 0xdb, 0xc6, 0xb5, 0x37, 0x0c, 0xff, 0x9f, 0x4f, 0x81, 0xcd,
+ 0xbe, 0xbd, 0x25, 0xb5, 0x04, 0x75, 0xf2, 0x21, 0x51, 0x95, 0x3c, 0x51,
+ 0x64, 0x39, 0x76, 0x2b, 0x5b, 0xaa, 0x29, 0x37, 0xe9, 0x4e, 0x72, 0xf9,
+ 0x02, 0x49, 0x50, 0x42, 0x4c, 0x12, 0x2c, 0x00, 0xea, 0x90, 0xee, 0x3e,
+ 0x9f, 0xfd, 0x5d, 0xc7, 0x99, 0x01, 0x66, 0x40, 0x8a, 0xb2, 0x5d, 0x77,
+ 0xbf, 0xef, 0xdd, 0xbd, 0x63, 0x49, 0x24, 0x30, 0xc7, 0x35, 0x6b, 0xd6,
+ 0xf1, 0xb7, 0xa2, 0x68, 0xd5, 0xff, 0xde, 0xd1, 0x7f, 0xef, 0xe0, 0x7f,
+ 0xf0, 0xf3, 0x8b, 0x28, 0x3a, 0x2f, 0xf2, 0x5f, 0xd3, 0x61, 0x15, 0x7e,
+ 0xf6, 0xdd, 0xbb, 0xff, 0x89, 0xf8, 0xff, 0xe0, 0x9d, 0x9f, 0xe1, 0xe7,
+ 0x17, 0x4b, 0xdb, 0xde, 0x8e, 0xec, 0x0b, 0xff, 0xf3, 0x6e, 0x2b, 0x5a,
+ 0xf5, 0xc2, 0xff, 0x44, 0x9b, 0xf4, 0xc2, 0x3b, 0xe9, 0xe1, 0x10, 0x7f,
+ 0x7f, 0xf7, 0x6e, 0x79, 0x27, 0x3f, 0xe3, 0xa8, 0xf0, 0x9f, 0x6d, 0x7c,
+ 0xef, 0xe7, 0x77, 0xf8, 0x2b, 0x7c, 0xf2, 0xc5, 0x17, 0xaf, 0x8f, 0x5e,
+ 0x9d, 0xe8, 0xab, 0xc3, 0x45, 0x31, 0x89, 0xe2, 0xa8, 0x2a, 0x92, 0x59,
+ 0x39, 0x4e, 0x8b, 0x28, 0x89, 0xde, 0xbe, 0x39, 0xfd, 0xe2, 0x8b, 0xfe,
+ 0xdf, 0x5f, 0x9f, 0x9d, 0xf7, 0x5f, 0xf6, 0x6b, 0x8f, 0xfd, 0x94, 0xcf,
+ 0xab, 0x2c, 0x9f, 0x95, 0x30, 0x7c, 0x78, 0xa8, 0xfc, 0xe5, 0x8b, 0x2f,
+ 0x9e, 0x9d, 0xf4, 0x8f, 0xdf, 0xbc, 0x3c, 0xbf, 0x78, 0x79, 0xf6, 0xba,
+ 0xf6, 0x64, 0x94, 0x95, 0x11, 0x34, 0x55, 0xe5, 0xf9, 0x24, 0x1a, 0xe7,
+ 0x85, 0x69, 0xbe, 0xc8, 0x66, 0x97, 0xd1, 0x28, 0xa9, 0x92, 0x68, 0x5c,
+ 0xe4, 0xd3, 0x08, 0xbf, 0xc9, 0xe1, 0xb9, 0x32, 0x2d, 0xae, 0xd3, 0xa2,
+ 0x17, 0xbd, 0xac, 0xa2, 0x72, 0x31, 0x9f, 0xe7, 0x45, 0x55, 0x6a, 0x73,
+ 0xd5, 0x55, 0x5a, 0xa6, 0xd1, 0xbc, 0xc8, 0xab, 0x7c, 0x98, 0x4f, 0xca,
+ 0x83, 0xe8, 0xd9, 0xcb, 0xe3, 0x8b, 0x6e, 0xf4, 0xfc, 0xe5, 0xe9, 0x09,
+ 0xfc, 0x7b, 0x71, 0x4e, 0xff, 0xf4, 0xbb, 0xd1, 0xf7, 0x67, 0xe7, 0x2f,
+ 0x4e, 0xde, 0xe8, 0x4f, 0xf8, 0x20, 0x7a, 0x71, 0x81, 0xdf, 0xd2, 0x8f,
+ 0x7e, 0x57, 0x9b, 0x7b, 0xf9, 0xea, 0x08, 0x3f, 0xc4, 0x1f, 0xf8, 0xcc,
+ 0xe9, 0x33, 0xfa, 0x13, 0x7f, 0xc0, 0x9f, 0xaf, 0xfe, 0x7a, 0x01, 0x4d,
+ 0x9f, 0x9f, 0x9d, 0xef, 0xf3, 0xbf, 0xf0, 0xd1, 0x9b, 0x8b, 0x57, 0xe7,
+ 0xfc, 0x2f, 0xfd, 0xd1, 0x87, 0x3f, 0xfa, 0xc7, 0xe7, 0xa6, 0xb9, 0x3e,
+ 0x8d, 0xa0, 0xff, 0xea, 0x3b, 0xfa, 0xa7, 0x8f, 0xff, 0xf2, 0x07, 0x34,
+ 0xa6, 0x8b, 0x93, 0xd3, 0xd7, 0x27, 0xd0, 0xe2, 0x05, 0x3d, 0xf5, 0x43,
+ 0x3f, 0x4a, 0x66, 0x23, 0xf8, 0xd1, 0xef, 0x45, 0x17, 0x57, 0x69, 0x34,
+ 0xcc, 0xa7, 0x53, 0xfc, 0x00, 0xd6, 0x4a, 0x9b, 0x1b, 0xa5, 0x65, 0x76,
+ 0x39, 0x4b, 0x47, 0xb8, 0x2a, 0x37, 0x79, 0xf1, 0x3e, 0xba, 0xc9, 0xaa,
+ 0xab, 0x7c, 0x51, 0x45, 0x0b, 0x58, 0xa1, 0x28, 0x9b, 0x55, 0x69, 0x91,
+ 0x0c, 0x71, 0x0b, 0x7a, 0x5f, 0xd4, 0x96, 0x3b, 0x1f, 0xc3, 0xda, 0x96,
+ 0xb0, 0x90, 0x83, 0x45, 0x39, 0xc9, 0x93, 0x11, 0x7c, 0x80, 0xaf, 0x8c,
+ 0x17, 0x13, 0x58, 0xf9, 0x6c, 0xf8, 0xbe, 0x8c, 0x26, 0xd9, 0x7b, 0x5a,
+ 0xc5, 0xdb, 0x3b, 0x5d, 0xe1, 0x2e, 0x37, 0x9a, 0x2c, 0x60, 0x85, 0x67,
+ 0xb1, 0x59, 0xee, 0x6c, 0x98, 0x60, 0x07, 0xb4, 0xac, 0xd1, 0x62, 0x8e,
+ 0xad, 0x75, 0x69, 0x0d, 0xa3, 0x79, 0x5e, 0xc2, 0x4b, 0xfd, 0xfe, 0x29,
+ 0x8c, 0x7c, 0x36, 0x4b, 0x69, 0x1c, 0x65, 0x17, 0xfe, 0xc8, 0xdf, 0x67,
+ 0x29, 0xfc, 0x32, 0xce, 0x26, 0x69, 0xc4, 0x3b, 0x6d, 0x9a, 0x43, 0x8a,
+ 0x2a, 0xd2, 0x72, 0x31, 0x4d, 0x69, 0xee, 0xd3, 0xbc, 0x48, 0x7b, 0xd1,
+ 0x51, 0x19, 0xdd, 0xe5, 0x0b, 0x98, 0xdb, 0x64, 0x02, 0x3b, 0x9f, 0x46,
+ 0x83, 0x74, 0x92, 0xdf, 0x74, 0x71, 0xa7, 0xa3, 0xd9, 0x62, 0x3a, 0x80,
+ 0x57, 0x60, 0xf8, 0xe3, 0x34, 0xa9, 0x16, 0xf0, 0x2a, 0x3d, 0xa6, 0xcd,
+ 0x4d, 0x13, 0x98, 0x05, 0xbc, 0x5b, 0x44, 0x57, 0x29, 0xcc, 0xb2, 0x9c,
+ 0x67, 0xcd, 0x95, 0x00, 0xba, 0x9b, 0xe7, 0x37, 0x69, 0x01, 0x6b, 0x38,
+ 0xb8, 0x8b, 0x60, 0xda, 0x03, 0xa6, 0x47, 0x24, 0xc2, 0x28, 0x81, 0x0e,
+ 0x0d, 0x29, 0xc6, 0x45, 0x3a, 0x49, 0x2a, 0x78, 0xce, 0x74, 0xd5, 0x83,
+ 0xfd, 0x4c, 0x53, 0x6d, 0x4e, 0x5e, 0xdd, 0xdc, 0xdf, 0xa2, 0x97, 0x47,
+ 0x69, 0x95, 0x64, 0x93, 0x12, 0xba, 0xc3, 0xf3, 0x21, 0xcf, 0xe0, 0x36,
+ 0xe2, 0x51, 0x88, 0xa2, 0xf2, 0x6e, 0x56, 0x25, 0xb7, 0xd4, 0xbd, 0x90,
+ 0x6a, 0x3c, 0x4a, 0xe7, 0xe9, 0x6c, 0x94, 0xce, 0xaa, 0x5e, 0xf4, 0x77,
+ 0x98, 0xee, 0x38, 0x83, 0x05, 0x48, 0xa4, 0x1d, 0xe8, 0x16, 0xf6, 0x7a,
+ 0x58, 0x64, 0x74, 0xa0, 0xb4, 0xb9, 0x6c, 0x16, 0xbd, 0x79, 0x7e, 0x1c,
+ 0xed, 0x7f, 0xf5, 0xe5, 0x13, 0x3b, 0x2d, 0x7c, 0x77, 0x98, 0xcc, 0x60,
+ 0xb2, 0xe9, 0x30, 0x1b, 0xdf, 0x45, 0xd3, 0xc5, 0xa4, 0xca, 0xe6, 0xb0,
+ 0xd4, 0x78, 0x04, 0xf1, 0x04, 0xcd, 0x13, 0x38, 0x2e, 0xb8, 0x64, 0xf4,
+ 0x01, 0x4d, 0xfb, 0xa6, 0xc8, 0x2a, 0x3c, 0x69, 0xf4, 0x1d, 0x0c, 0x2e,
+ 0xb5, 0xe7, 0x09, 0x29, 0x0a, 0xfa, 0x19, 0x00, 0x21, 0xc1, 0xe2, 0xe2,
+ 0xa6, 0xfc, 0x63, 0x91, 0xd3, 0xc3, 0xb8, 0xfe, 0x38, 0x97, 0xa4, 0x84,
+ 0x81, 0x1c, 0x7c, 0x61, 0x79, 0x4b, 0xe7, 0xaa, 0xaa, 0xe6, 0x07, 0xdb,
+ 0xdb, 0x65, 0x56, 0xa5, 0xbd, 0x7f, 0xe6, 0xb3, 0xb4, 0x5b, 0xdd, 0xe4,
+ 0xdd, 0xea, 0xaa, 0x48, 0xd3, 0x7f, 0xf5, 0x80, 0x8a, 0x3b, 0xe6, 0x59,
+ 0x18, 0xcd, 0x9d, 0x0c, 0xf7, 0x32, 0x85, 0xb3, 0x9c, 0xfe, 0x63, 0x91,
+ 0xce, 0xb0, 0x1f, 0x18, 0x5d, 0x32, 0x99, 0x5f, 0x25, 0xb0, 0xbf, 0x29,
+ 0x10, 0x24, 0x1e, 0x78, 0xa0, 0x19, 0x1c, 0xeb, 0xa2, 0xc4, 0xbe, 0x7f,
+ 0xfa, 0x25, 0xd0, 0xed, 0x98, 0x7a, 0x85, 0x7f, 0x7b, 0xe9, 0x6d, 0x32,
+ 0x85, 0x29, 0x63, 0x67, 0xdb, 0x48, 0x66, 0x3f, 0xed, 0xc6, 0xbb, 0x3b,
+ 0x3b, 0xbf, 0xf4, 0xaa, 0xdb, 0xaa, 0x73, 0xcf, 0x37, 0x76, 0x76, 0x9c,
+ 0x77, 0xf0, 0xe1, 0x4d, 0x5c, 0x89, 0x68, 0x02, 0x74, 0x84, 0x03, 0xf8,
+ 0x2d, 0x2d, 0xf2, 0x72, 0xeb, 0x9e, 0x6d, 0x25, 0xf1, 0x6f, 0x8d, 0xbe,
+ 0x5f, 0xa7, 0x25, 0x91, 0x92, 0x9d, 0x71, 0x94, 0x14, 0x40, 0xce, 0xb9,
+ 0x61, 0x68, 0x29, 0x1c, 0xa3, 0x01, 0x9c, 0x64, 0x5d, 0x1f, 0x38, 0x7c,
+ 0xf0, 0x34, 0x70, 0xbd, 0x04, 0x8e, 0xef, 0x0c, 0x5e, 0x98, 0xa5, 0xb7,
+ 0x95, 0x39, 0x85, 0x79, 0x94, 0x26, 0xc3, 0xab, 0x28, 0x87, 0x3d, 0x29,
+ 0x42, 0x5b, 0xe1, 0x0e, 0x29, 0x29, 0x86, 0x57, 0xd9, 0x35, 0xac, 0xc9,
+ 0x57, 0x5f, 0x3d, 0x89, 0xe1, 0x9f, 0xaf, 0x7e, 0xd9, 0xbe, 0xce, 0x27,
+ 0xb0, 0x44, 0x8f, 0x7e, 0xd9, 0xc6, 0xfd, 0xff, 0x67, 0xd2, 0x1d, 0x74,
+ 0x87, 0xff, 0xea, 0x5d, 0x55, 0xd3, 0x49, 0xa7, 0x95, 0xac, 0x92, 0x19,
+ 0xfc, 0x37, 0xcd, 0x17, 0xb3, 0xca, 0x90, 0x52, 0x3e, 0x23, 0x9a, 0x50,
+ 0x3e, 0x35, 0xc9, 0x66, 0x70, 0x78, 0x91, 0xe6, 0x91, 0xc2, 0xf0, 0xf0,
+ 0xc2, 0xc9, 0xb5, 0x07, 0xbd, 0x1a, 0x5e, 0xe1, 0x0a, 0x00, 0x6d, 0x25,
+ 0xb2, 0x0c, 0x55, 0x06, 0x73, 0x83, 0x57, 0x67, 0xc4, 0xbb, 0xa8, 0x2d,
+ 0xee, 0x2d, 0x83, 0x07, 0xf3, 0x62, 0x84, 0x1c, 0xbf, 0x31, 0x0c, 0x73,
+ 0x96, 0x9d, 0x3e, 0x23, 0xbd, 0x75, 0xf0, 0x03, 0x1a, 0xd8, 0x34, 0xbb,
+ 0x85, 0x16, 0xf0, 0x4f, 0xec, 0x0d, 0x06, 0xce, 0xad, 0x45, 0x38, 0x62,
+ 0xea, 0x46, 0xdf, 0xb7, 0x67, 0x19, 0x86, 0x5e, 0x9b, 0x3a, 0x75, 0x6a,
+ 0x27, 0x1f, 0xc1, 0xf6, 0xcd, 0xe1, 0xad, 0x05, 0xb2, 0x58, 0xbe, 0xb1,
+ 0xa0, 0x19, 0xe0, 0x14, 0x97, 0xb0, 0x33, 0xb0, 0x1b, 0x48, 0xcd, 0xb8,
+ 0x59, 0x77, 0xd1, 0x6b, 0x20, 0x1a, 0xe6, 0x52, 0x0e, 0xd1, 0x4f, 0xd2,
+ 0xaa, 0x5a, 0xbd, 0x51, 0x96, 0x72, 0x0f, 0x76, 0x03, 0xc4, 0xdb, 0xf6,
+ 0x06, 0x50, 0xdb, 0xc1, 0x5e, 0xe3, 0xf1, 0x1f, 0x80, 0x67, 0xdb, 0xa3,
+ 0x03, 0x23, 0xf8, 0xe7, 0xbf, 0x1c, 0xda, 0xbb, 0xc1, 0x6f, 0xb3, 0xd9,
+ 0x75, 0xfe, 0x1e, 0x96, 0x89, 0x2e, 0xda, 0xa4, 0xbe, 0xa2, 0xc8, 0xa4,
+ 0xa6, 0xf3, 0xca, 0x5c, 0x63, 0x48, 0x94, 0xf0, 0xd1, 0x20, 0x19, 0x4c,
+ 0xee, 0xa2, 0xab, 0xe4, 0x3a, 0xc5, 0x39, 0xcf, 0x81, 0x5a, 0x71, 0x15,
+ 0xe0, 0x16, 0x99, 0x10, 0x63, 0x10, 0xd6, 0x31, 0xca, 0x17, 0x03, 0x60,
+ 0x3f, 0xc8, 0x36, 0x78, 0x71, 0x92, 0xeb, 0x3c, 0x1b, 0xe1, 0xa3, 0xda,
+ 0x5c, 0x79, 0x95, 0xc2, 0x2b, 0xd4, 0x31, 0xdd, 0x59, 0xc0, 0x6d, 0x71,
+ 0xa4, 0x74, 0xe0, 0xb2, 0x0a, 0x6f, 0x3f, 0xe0, 0x93, 0xc9, 0xa4, 0xcc,
+ 0xa3, 0xe8, 0x32, 0xc7, 0xb3, 0x42, 0xdc, 0x99, 0x88, 0x1d, 0x36, 0xe6,
+ 0x2a, 0xc1, 0x4b, 0x0e, 0xee, 0x33, 0x73, 0x1a, 0x8a, 0x94, 0x18, 0x35,
+ 0xed, 0x56, 0x32, 0xe9, 0xf2, 0x65, 0x86, 0xef, 0xc8, 0x5a, 0x45, 0x1b,
+ 0xff, 0x67, 0xa3, 0x1b, 0x6d, 0xfc, 0x3f, 0x1b, 0x44, 0x13, 0x1b, 0x7f,
+ 0xd8, 0xb0, 0x7b, 0x0d, 0x42, 0xdb, 0x75, 0x36, 0x4a, 0x99, 0x2c, 0x5e,
+ 0x9e, 0x5f, 0x3f, 0x89, 0x7e, 0x83, 0xd3, 0x06, 0xc3, 0x1a, 0xa5, 0xb7,
+ 0x4a, 0x94, 0x3a, 0x37, 0x78, 0x3b, 0x02, 0xa6, 0x9c, 0xcc, 0xa1, 0xaf,
+ 0x79, 0x5a, 0x0c, 0x81, 0x82, 0x93, 0x4b, 0xa0, 0x59, 0xb8, 0x92, 0xb5,
+ 0x39, 0x6c, 0x1f, 0x5f, 0xe1, 0x69, 0x01, 0x0b, 0x8d, 0x66, 0xc9, 0x14,
+ 0x4e, 0xc5, 0x29, 0x8e, 0x28, 0x9b, 0x05, 0xb6, 0xf3, 0xa7, 0x71, 0xfa,
+ 0xe5, 0xce, 0xc1, 0xc1, 0xfe, 0xef, 0xf7, 0x1e, 0xa7, 0xd5, 0xd5, 0xce,
+ 0x2f, 0xdb, 0x76, 0x13, 0x5f, 0x8e, 0x69, 0xe1, 0x95, 0x08, 0x75, 0x18,
+ 0x78, 0xdf, 0xeb, 0x25, 0x02, 0x0d, 0xc0, 0xef, 0xe9, 0x38, 0xbb, 0xed,
+ 0xaa, 0x64, 0xc5, 0x27, 0x2f, 0x01, 0x82, 0x83, 0x1d, 0x44, 0x56, 0xa1,
+ 0xcd, 0x5d, 0x2e, 0xd2, 0x12, 0xd6, 0xf2, 0xe6, 0x2a, 0xa9, 0x22, 0xd3,
+ 0x00, 0xef, 0xed, 0x34, 0xbb, 0xbc, 0xaa, 0xa2, 0x9b, 0x04, 0xef, 0x22,
+ 0x90, 0xb1, 0xa8, 0x09, 0xbc, 0xf6, 0xe1, 0x12, 0x1a, 0x27, 0x70, 0x9f,
+ 0xe0, 0x2e, 0xd2, 0x1d, 0x0f, 0x1c, 0xca, 0xae, 0xfa, 0x9d, 0x6c, 0x89,
+ 0x11, 0xbe, 0xa2, 0x41, 0x52, 0xe2, 0xd1, 0x9d, 0x01, 0x8b, 0xa8, 0x40,
+ 0x68, 0x58, 0xe0, 0x5f, 0x57, 0x20, 0x16, 0xd0, 0x2a, 0xc8, 0x40, 0xe9,
+ 0x1e, 0x7d, 0x8e, 0x1b, 0x8a, 0xbb, 0x63, 0x24, 0x01, 0xd8, 0xa6, 0xae,
+ 0x6c, 0xb4, 0x79, 0xa3, 0x84, 0x63, 0x07, 0x0c, 0xca, 0xd0, 0x06, 0xf2,
+ 0xdc, 0x5e, 0x87, 0xe7, 0x49, 0x63, 0x4c, 0x4a, 0x12, 0x1d, 0x48, 0x5a,
+ 0x80, 0xc1, 0x3b, 0x93, 0x85, 0x45, 0x4b, 0xde, 0xa3, 0x8c, 0xd2, 0xb8,
+ 0xff, 0xe9, 0xb5, 0x51, 0x0e, 0x64, 0x06, 0xa3, 0x05, 0xa6, 0x8c, 0x33,
+ 0x43, 0x56, 0x4b, 0xab, 0x42, 0x64, 0x0e, 0x6d, 0xe2, 0x87, 0x59, 0x85,
+ 0x37, 0x0e, 0x49, 0xbb, 0x30, 0x5e, 0x58, 0x14, 0x12, 0x59, 0x81, 0x61,
+ 0x3b, 0xf3, 0xa7, 0x2b, 0x14, 0x9e, 0x8d, 0xae, 0x93, 0x49, 0x06, 0x52,
+ 0x6b, 0x6a, 0xde, 0xa2, 0xeb, 0x7e, 0x88, 0xc2, 0xd2, 0x04, 0x4e, 0xcc,
+ 0x30, 0x2f, 0x0a, 0xd4, 0x0c, 0x70, 0x07, 0x07, 0xcc, 0x4a, 0xa7, 0x29,
+ 0x48, 0x19, 0xee, 0x72, 0x42, 0xeb, 0xe3, 0x24, 0x2b, 0xe0, 0x69, 0x10,
+ 0x2c, 0x88, 0xeb, 0xd3, 0x94, 0x69, 0x5c, 0xd8, 0xea, 0x70, 0x98, 0xce,
+ 0xab, 0x32, 0x34, 0x1b, 0xdd, 0x6a, 0x18, 0x48, 0x91, 0xe2, 0x9a, 0xbb,
+ 0xf2, 0x17, 0xad, 0xa8, 0x11, 0x09, 0x48, 0x04, 0x53, 0x01, 0x07, 0x44,
+ 0xb2, 0x32, 0xb7, 0x62, 0x34, 0x52, 0x05, 0xb0, 0x31, 0x5a, 0xed, 0x29,
+ 0x0e, 0x11, 0x1f, 0x2e, 0xf9, 0x94, 0x12, 0x6b, 0xc6, 0x2d, 0x64, 0x41,
+ 0x9c, 0xfb, 0xc5, 0xcb, 0x0b, 0x56, 0xd2, 0x34, 0x0e, 0xbd, 0x9a, 0xdd,
+ 0xc4, 0xee, 0x51, 0x0d, 0x80, 0x1b, 0x7d, 0x54, 0x5e, 0x81, 0x54, 0x56,
+ 0xca, 0xa9, 0xce, 0xa6, 0x40, 0x2d, 0xd7, 0xb8, 0xb3, 0xf3, 0x34, 0x1d,
+ 0xf5, 0xa2, 0xb3, 0x31, 0x72, 0xd5, 0x02, 0x06, 0x5d, 0xd1, 0xd7, 0x78,
+ 0xab, 0xc0, 0x1a, 0x8c, 0xf0, 0x10, 0x5a, 0xc1, 0x87, 0x87, 0xe2, 0xdc,
+ 0x0e, 0xc4, 0xc9, 0x13, 0xf8, 0x04, 0x46, 0x3b, 0xa9, 0x5f, 0x41, 0x74,
+ 0x06, 0x81, 0x7b, 0xe3, 0xf0, 0x06, 0x69, 0x44, 0x34, 0x38, 0x48, 0xab,
+ 0x9b, 0x34, 0x35, 0xcd, 0x95, 0x29, 0xdc, 0x7b, 0xb8, 0x5d, 0x2c, 0x12,
+ 0x02, 0x23, 0x64, 0xa1, 0x16, 0x97, 0xf7, 0xec, 0xed, 0xc5, 0xf9, 0xdb,
+ 0x0b, 0xe7, 0x08, 0x62, 0x3b, 0x55, 0x3e, 0x19, 0x31, 0xb1, 0xdf, 0x64,
+ 0x25, 0xd0, 0x29, 0x2f, 0x3e, 0x08, 0x51, 0xc8, 0xe0, 0xf0, 0x22, 0x48,
+ 0x87, 0x29, 0x5c, 0xb1, 0x23, 0x56, 0x5d, 0x60, 0x23, 0xca, 0x0a, 0xb8,
+ 0x20, 0x1f, 0x26, 0x1c, 0x8b, 0x36, 0x07, 0xe3, 0x81, 0xee, 0xca, 0xaa,
+ 0x58, 0x0c, 0x49, 0x1c, 0x40, 0xda, 0xc1, 0xbf, 0x49, 0x58, 0x25, 0xb6,
+ 0x8a, 0xdb, 0x40, 0x8d, 0x00, 0x07, 0x41, 0xcd, 0x67, 0x02, 0x43, 0x9b,
+ 0xd0, 0xfc, 0xbb, 0xc2, 0xcf, 0x1d, 0x3e, 0x1a, 0xc7, 0xd0, 0x09, 0xb2,
+ 0x61, 0xd8, 0xe3, 0x18, 0xe4, 0xd5, 0x29, 0x70, 0xdc, 0x98, 0x8e, 0x9a,
+ 0x5c, 0x89, 0x3d, 0x9c, 0x80, 0xca, 0xbd, 0x97, 0x30, 0x42, 0x58, 0x35,
+ 0xb3, 0x5f, 0x22, 0x0f, 0xda, 0x33, 0x63, 0x74, 0x3c, 0x73, 0x4f, 0xba,
+ 0xeb, 0xda, 0x45, 0x32, 0x2c, 0xb3, 0x69, 0x36, 0x49, 0x90, 0x4a, 0x67,
+ 0xb0, 0x7d, 0xa5, 0x6d, 0x4c, 0xef, 0x60, 0x20, 0x37, 0x23, 0x49, 0xc2,
+ 0x72, 0xd1, 0x45, 0x21, 0x33, 0x4b, 0xa7, 0x0d, 0xea, 0x1d, 0x21, 0x6f,
+ 0xc7, 0xe5, 0x85, 0xdd, 0x00, 0x02, 0x80, 0x49, 0x98, 0x25, 0x8e, 0x3a,
+ 0x0b, 0xe0, 0xc0, 0x05, 0x1c, 0xff, 0xd9, 0xa8, 0x23, 0x43, 0x01, 0x96,
+ 0x3a, 0xc3, 0x63, 0xc8, 0x74, 0x5a, 0xe2, 0xc5, 0x6a, 0xba, 0xe2, 0xad,
+ 0xc0, 0xb3, 0x17, 0xf1, 0x92, 0xf0, 0x99, 0x95, 0x1e, 0x22, 0xb8, 0xf6,
+ 0x72, 0x12, 0xe3, 0x48, 0x50, 0xe7, 0xdf, 0x61, 0x3d, 0x67, 0x13, 0xe4,
+ 0x88, 0xe9, 0xed, 0x7c, 0x92, 0x0d, 0xb3, 0x6a, 0x62, 0xa4, 0x8b, 0xa4,
+ 0x7c, 0x2f, 0x3a, 0x16, 0x1e, 0xc1, 0x51, 0x3a, 0x42, 0xa5, 0x07, 0x3e,
+ 0x09, 0x49, 0x1d, 0x30, 0xa7, 0xf3, 0x37, 0x67, 0x17, 0x67, 0xc7, 0x67,
+ 0xa7, 0x75, 0x65, 0x58, 0x15, 0xd5, 0x88, 0x64, 0xda, 0x7c, 0x61, 0x25,
+ 0x7f, 0x38, 0x78, 0x28, 0x96, 0xc3, 0xbe, 0xc1, 0x05, 0x43, 0xda, 0x01,
+ 0x5c, 0x16, 0x53, 0x50, 0x5d, 0xa3, 0x12, 0x64, 0xa4, 0x29, 0x31, 0x48,
+ 0x90, 0x41, 0xcc, 0xec, 0x50, 0x48, 0xcb, 0x86, 0x0b, 0x58, 0x77, 0x60,
+ 0x18, 0x19, 0x50, 0xe2, 0x34, 0xb9, 0x73, 0x45, 0x47, 0x5a, 0x5b, 0x54,
+ 0x5e, 0xec, 0xfa, 0xa2, 0x12, 0x0c, 0x3f, 0x4e, 0x71, 0x9d, 0x90, 0xab,
+ 0x4d, 0x40, 0x09, 0x5b, 0xcc, 0x51, 0x67, 0x84, 0x4d, 0x63, 0x3a, 0x82,
+ 0x73, 0x86, 0xd3, 0x80, 0xb9, 0xe1, 0x3c, 0x12, 0x94, 0xb7, 0xed, 0xfb,
+ 0xa8, 0x3e, 0xc3, 0x8f, 0x37, 0x48, 0x98, 0x38, 0x58, 0x5e, 0xe1, 0x48,
+ 0xc8, 0x91, 0xcf, 0x63, 0x4f, 0x6f, 0x1c, 0xb3, 0x8f, 0x3a, 0x1e, 0x64,
+ 0x56, 0x25, 0x76, 0xd2, 0xb0, 0x3f, 0xe0, 0x6b, 0x78, 0x63, 0xe1, 0x9c,
+ 0x99, 0x5a, 0x27, 0x77, 0x2c, 0xf5, 0x92, 0x44, 0x52, 0x2c, 0x66, 0x33,
+ 0x1e, 0x59, 0xf4, 0x2a, 0x1b, 0x82, 0xbc, 0x0d, 0xb7, 0x48, 0xf4, 0x03,
+ 0x5c, 0xc5, 0xf9, 0x0d, 0xec, 0xeb, 0xc2, 0x6a, 0x8d, 0x46, 0x1d, 0x62,
+ 0xa5, 0x64, 0x06, 0x87, 0x17, 0x28, 0xec, 0xed, 0xeb, 0xe3, 0x28, 0x99,
+ 0xc3, 0x22, 0xa3, 0x64, 0x4c, 0x1c, 0x0a, 0x55, 0x64, 0x67, 0x4e, 0x17,
+ 0xe7, 0x9b, 0xfd, 0x2d, 0x19, 0xb3, 0xd9, 0x1d, 0x96, 0x07, 0x9f, 0x23,
+ 0x63, 0xbc, 0x50, 0xfa, 0x3f, 0xd7, 0xcb, 0x91, 0x6f, 0x7d, 0x98, 0x35,
+ 0x09, 0xbd, 0xc0, 0x43, 0x92, 0xf7, 0x65, 0x63, 0x10, 0x44, 0x0f, 0x28,
+ 0xfa, 0xc1, 0x7a, 0xfc, 0x80, 0x8f, 0xe7, 0x85, 0xa3, 0x95, 0xe3, 0x10,
+ 0x2f, 0x4e, 0xfb, 0x76, 0x10, 0x6c, 0x7e, 0x80, 0x71, 0x34, 0x9a, 0x79,
+ 0x93, 0x82, 0x22, 0x0e, 0xcd, 0xc8, 0xd2, 0x9a, 0xe7, 0xf1, 0xd6, 0xf5,
+ 0x9f, 0xae, 0x13, 0x18, 0xdd, 0xcc, 0x34, 0x54, 0x43, 0x6a, 0xae, 0x48,
+ 0x7c, 0x0d, 0x7b, 0x9b, 0x28, 0x3b, 0xa8, 0xf3, 0xa3, 0xda, 0x65, 0x49,
+ 0xcd, 0xe0, 0x44, 0xe0, 0xd1, 0x68, 0xa7, 0xf7, 0x55, 0x37, 0xda, 0xed,
+ 0xed, 0xe0, 0x3f, 0xbb, 0xdd, 0x68, 0x8f, 0x5a, 0xda, 0x8f, 0x58, 0x67,
+ 0x95, 0x4d, 0x62, 0x62, 0xcc, 0xe7, 0xcd, 0x7d, 0xb1, 0x5d, 0xf3, 0xc1,
+ 0xe5, 0xcb, 0xaf, 0xe5, 0xf0, 0x38, 0x76, 0x17, 0x7f, 0x9e, 0x6f, 0x95,
+ 0xe3, 0x01, 0xc9, 0x67, 0x13, 0xa0, 0x19, 0x56, 0xc6, 0xf4, 0x20, 0x09,
+ 0x23, 0x46, 0x51, 0xbd, 0x03, 0x44, 0x32, 0x43, 0x63, 0x44, 0x27, 0x4a,
+ 0xf1, 0x59, 0x16, 0x1a, 0x1b, 0xcd, 0xc1, 0x49, 0xb8, 0xd7, 0x26, 0xa1,
+ 0xb9, 0xa7, 0x65, 0xd1, 0xb1, 0x2f, 0xb8, 0xf4, 0x46, 0x19, 0xce, 0x29,
+ 0x07, 0x11, 0x88, 0x4f, 0x16, 0xdf, 0xb3, 0xd0, 0x7e, 0x97, 0x37, 0xc2,
+ 0x69, 0xbf, 0xd6, 0x32, 0x5a, 0x90, 0xbc, 0xfd, 0xa3, 0x0f, 0x75, 0xe1,
+ 0xf7, 0x7b, 0xd1, 0x33, 0x99, 0x0a, 0x2d, 0x33, 0x5e, 0xb7, 0xf4, 0x00,
+ 0x48, 0xef, 0x20, 0x12, 0x47, 0x9d, 0x72, 0x31, 0x68, 0x2e, 0x38, 0x1a,
+ 0x0a, 0x06, 0x69, 0x87, 0x6d, 0x65, 0x55, 0x3e, 0x07, 0x05, 0xfa, 0xe6,
+ 0x0a, 0x29, 0x9a, 0xed, 0x33, 0xd0, 0xce, 0x36, 0x1a, 0x67, 0xb0, 0x3d,
+ 0x6d, 0x65, 0x0e, 0x32, 0x7a, 0x56, 0x5e, 0x75, 0x70, 0x1f, 0x93, 0xe6,
+ 0xfe, 0x61, 0x0b, 0x3d, 0xee, 0x95, 0xfa, 0x87, 0x29, 0xe0, 0x05, 0x52,
+ 0xd3, 0x56, 0xa3, 0xcd, 0xbb, 0xb4, 0xda, 0x72, 0x04, 0xe9, 0xb3, 0xf3,
+ 0x7d, 0x7f, 0xcd, 0xdc, 0xa9, 0xb0, 0x28, 0x81, 0xb7, 0xf6, 0x3c, 0x9f,
+ 0xef, 0x47, 0x2a, 0x4b, 0xb0, 0x24, 0xa4, 0x92, 0x47, 0x42, 0x3b, 0x6d,
+ 0x76, 0xa9, 0xd1, 0xdc, 0x92, 0x3d, 0x43, 0x13, 0x9c, 0xdf, 0x3f, 0x1a,
+ 0x60, 0x80, 0x89, 0xc1, 0x25, 0x05, 0x97, 0xe2, 0x2b, 0x60, 0x4a, 0xc9,
+ 0x25, 0xbe, 0x69, 0x0e, 0x38, 0x09, 0x75, 0xf3, 0x22, 0x9b, 0xc2, 0x19,
+ 0x81, 0x4b, 0x8d, 0xa5, 0x05, 0xba, 0x96, 0x79, 0x74, 0xcd, 0x85, 0x46,
+ 0x55, 0x63, 0x4a, 0x12, 0x12, 0x5c, 0x0a, 0x09, 0x8b, 0x1a, 0x96, 0x2c,
+ 0x78, 0xae, 0xa8, 0xc2, 0x38, 0xc3, 0xea, 0x9f, 0x7b, 0x1b, 0x4e, 0x1f,
+ 0xc2, 0xe1, 0x32, 0xaf, 0x38, 0x07, 0xa1, 0x7f, 0x7c, 0xee, 0x9f, 0xf0,
+ 0x7e, 0xff, 0x85, 0x21, 0x90, 0x3d, 0xd8, 0xee, 0xb9, 0x15, 0xe2, 0x9c,
+ 0x37, 0xd1, 0x22, 0xe7, 0xbd, 0x89, 0x1f, 0x6e, 0x8e, 0x8a, 0x04, 0x58,
+ 0xe9, 0xe3, 0x2d, 0x91, 0xab, 0x70, 0xd9, 0x6b, 0x4d, 0x3a, 0x8d, 0xbc,
+ 0xfa, 0xce, 0x30, 0x49, 0xdb, 0xc8, 0xab, 0xef, 0xcc, 0xb3, 0xbb, 0x44,
+ 0xe9, 0x4c, 0x58, 0x34, 0x7f, 0x9d, 0x83, 0xdb, 0x46, 0x88, 0x67, 0xbd,
+ 0x9d, 0x1b, 0x42, 0x90, 0xbb, 0xbc, 0xe4, 0x95, 0x46, 0x45, 0x1b, 0x5f,
+ 0xa9, 0x13, 0x44, 0x29, 0x7c, 0x06, 0x75, 0x2e, 0x22, 0x89, 0x46, 0x73,
+ 0x3f, 0x2c, 0x3b, 0x66, 0x6c, 0x58, 0x8d, 0x2e, 0x40, 0xcd, 0xc4, 0x36,
+ 0x68, 0x36, 0xd0, 0x15, 0x19, 0x21, 0xf0, 0x88, 0xa4, 0x93, 0x59, 0xca,
+ 0xe2, 0x38, 0x29, 0x18, 0xc8, 0xac, 0xac, 0xf5, 0xf4, 0x1a, 0xc5, 0xdc,
+ 0xb2, 0x74, 0xec, 0x6e, 0x35, 0x81, 0x86, 0x04, 0x10, 0x1c, 0x9d, 0xd1,
+ 0xa5, 0xf0, 0x03, 0x64, 0x4d, 0x25, 0x09, 0x4e, 0x20, 0xfa, 0x91, 0xd5,
+ 0x61, 0x24, 0x92, 0x48, 0xc9, 0x4f, 0x39, 0x62, 0x9b, 0x91, 0x42, 0x69,
+ 0xba, 0xdc, 0x94, 0x4b, 0x33, 0x17, 0xce, 0x46, 0x0a, 0xbf, 0xa1, 0x8f,
+ 0x0c, 0xb5, 0x50, 0xeb, 0xbc, 0x05, 0x22, 0x7f, 0x7c, 0xff, 0xe6, 0xa4,
+ 0xdf, 0x8f, 0x5e, 0x9d, 0x5c, 0x9c, 0xbc, 0xa9, 0x09, 0x21, 0xb3, 0xbc,
+ 0x98, 0x92, 0x0a, 0x32, 0xca, 0xca, 0xf9, 0x24, 0xb9, 0x43, 0xdd, 0x04,
+ 0xb8, 0xe7, 0x65, 0x81, 0x82, 0xcf, 0x34, 0x45, 0x63, 0xc6, 0x68, 0x41,
+ 0xca, 0x37, 0xb0, 0x64, 0x98, 0xbe, 0xd8, 0x6c, 0x51, 0xff, 0x25, 0x43,
+ 0xaf, 0xbd, 0xc2, 0xe9, 0x9a, 0x14, 0x03, 0x10, 0x5e, 0x86, 0xd6, 0x64,
+ 0x8f, 0x27, 0x06, 0x45, 0xd6, 0xae, 0x23, 0x41, 0x92, 0x74, 0xcf, 0xe3,
+ 0x04, 0x25, 0x0b, 0x8e, 0x17, 0x72, 0x0c, 0x3c, 0x84, 0xc6, 0xe2, 0x92,
+ 0x8e, 0xab, 0x6e, 0x04, 0xfb, 0xc1, 0xb6, 0xee, 0xe6, 0x98, 0x74, 0xb4,
+ 0xd6, 0xde, 0x3b, 0xb8, 0xab, 0xc4, 0x1e, 0xc9, 0x43, 0xe1, 0x1e, 0x8c,
+ 0xc4, 0x46, 0x1b, 0x33, 0x8b, 0xe4, 0xb1, 0x39, 0xad, 0x2b, 0x90, 0xd9,
+ 0x88, 0x9b, 0x2f, 0x17, 0x63, 0xd2, 0x3c, 0xa3, 0xcd, 0xf7, 0xdd, 0xe8,
+ 0x55, 0x37, 0xfa, 0xbe, 0x1b, 0xa1, 0x21, 0x7f, 0x8b, 0xde, 0xdb, 0xdd,
+ 0xd9, 0x7b, 0xc4, 0x9a, 0xab, 0xa1, 0xb1, 0xe7, 0x8e, 0xed, 0x60, 0xf7,
+ 0x3d, 0x32, 0x09, 0x7e, 0x08, 0x1b, 0xef, 0x45, 0xbb, 0xaf, 0xf8, 0x93,
+ 0x47, 0x5f, 0x3e, 0x7e, 0xfa, 0x44, 0x3e, 0x6c, 0x48, 0xb6, 0x3a, 0x7e,
+ 0x52, 0x6a, 0x54, 0x29, 0xc0, 0x71, 0xa3, 0xa4, 0x97, 0xcd, 0x40, 0x86,
+ 0x02, 0x3d, 0x50, 0x94, 0x6b, 0x54, 0xc3, 0x60, 0xf0, 0x63, 0x56, 0xc5,
+ 0xc5, 0x2e, 0x53, 0xf7, 0x96, 0xc0, 0xcb, 0x40, 0x04, 0x40, 0x0a, 0x66,
+ 0x93, 0xd8, 0xba, 0x55, 0xe1, 0x40, 0x92, 0x01, 0xd2, 0x3f, 0x4a, 0xab,
+ 0x24, 0xa3, 0x85, 0x7a, 0x33, 0x86, 0x1c, 0x78, 0x03, 0xc6, 0x96, 0x0c,
+ 0x26, 0xa2, 0xb8, 0x34, 0xd6, 0x1d, 0xe4, 0x67, 0x2b, 0x82, 0xc3, 0xb3,
+ 0x37, 0xf9, 0x02, 0xc5, 0x4d, 0x7c, 0x00, 0xa4, 0x47, 0x7c, 0x81, 0x69,
+ 0xda, 0xd8, 0xdb, 0xb3, 0x5b, 0xb9, 0x8f, 0x6b, 0xad, 0xc0, 0xd0, 0xe0,
+ 0xcf, 0x39, 0x90, 0x12, 0x0f, 0xa7, 0xd7, 0x34, 0x69, 0x90, 0xb2, 0xee,
+ 0x51, 0x22, 0x32, 0x16, 0x12, 0x42, 0xce, 0xcf, 0xfa, 0x17, 0x78, 0xb6,
+ 0x41, 0x11, 0x83, 0x86, 0xfe, 0xb1, 0x00, 0x12, 0x02, 0xa2, 0xc4, 0x17,
+ 0x51, 0xeb, 0x70, 0x34, 0x16, 0xa0, 0x3d, 0xba, 0x88, 0x45, 0x09, 0x93,
+ 0x2e, 0x45, 0x29, 0x22, 0xde, 0x12, 0x89, 0xee, 0x24, 0x57, 0x86, 0x98,
+ 0x9e, 0xec, 0x8b, 0xd1, 0xe6, 0x37, 0x5b, 0xdd, 0x90, 0x3e, 0x25, 0x9a,
+ 0x8e, 0x73, 0x2a, 0x71, 0x2b, 0x59, 0xd6, 0xa5, 0x9b, 0x10, 0x44, 0x4d,
+ 0x38, 0x57, 0xd0, 0x89, 0x75, 0x84, 0xe0, 0xfa, 0x91, 0x06, 0x67, 0xb7,
+ 0xc9, 0xca, 0xc6, 0x73, 0x58, 0xcf, 0xdc, 0x2e, 0x1d, 0x6a, 0xd8, 0xb5,
+ 0x45, 0x6a, 0xee, 0x59, 0x6d, 0xd1, 0x98, 0x34, 0xd0, 0x80, 0x82, 0xea,
+ 0x59, 0x12, 0xd9, 0xa5, 0x8b, 0x3a, 0x83, 0xa4, 0xe8, 0x58, 0x35, 0x92,
+ 0xcf, 0x26, 0x9e, 0x90, 0x22, 0xbd, 0x24, 0x9d, 0x21, 0xe2, 0xe5, 0x75,
+ 0x66, 0xa9, 0x2f, 0xc7, 0x03, 0xfc, 0x3a, 0x2b, 0xd9, 0x65, 0x32, 0x06,
+ 0x01, 0x14, 0x0f, 0x8c, 0x9a, 0x5c, 0xc9, 0x00, 0x27, 0xd4, 0x12, 0x20,
+ 0x16, 0xc7, 0x14, 0x0b, 0xc7, 0x04, 0x45, 0x79, 0x16, 0x7d, 0xf0, 0xc9,
+ 0x38, 0x2e, 0x61, 0xd5, 0xd1, 0x54, 0x3c, 0x17, 0x6f, 0xd4, 0x19, 0xf9,
+ 0x00, 0x8d, 0x86, 0x74, 0x26, 0xf2, 0x29, 0xb1, 0x5f, 0x11, 0x99, 0x66,
+ 0xa4, 0x02, 0x56, 0x37, 0xd0, 0x69, 0x02, 0xdb, 0x04, 0x07, 0xed, 0x15,
+ 0x2e, 0x12, 0x0a, 0xde, 0x38, 0x1d, 0x15, 0x69, 0x89, 0x22, 0x32, 0x3c,
+ 0xef, 0x56, 0x8e, 0x4d, 0x46, 0xa3, 0x8c, 0xb4, 0x98, 0x09, 0x9a, 0x62,
+ 0x16, 0x29, 0x19, 0xcb, 0x65, 0x41, 0xa7, 0xee, 0x16, 0x22, 0xe3, 0xb8,
+ 0x42, 0x15, 0x05, 0xe4, 0x28, 0x32, 0x1d, 0xc4, 0xd8, 0x57, 0x87, 0x84,
+ 0xc5, 0x69, 0xa4, 0x7d, 0x49, 0x57, 0xdd, 0x28, 0x1e, 0xb9, 0x66, 0xc4,
+ 0x2e, 0x29, 0x5e, 0xd6, 0xa6, 0x4d, 0xc2, 0x42, 0x53, 0xdc, 0x4b, 0x60,
+ 0xa7, 0xd1, 0xee, 0x27, 0x26, 0x07, 0xb2, 0xdd, 0xd0, 0x51, 0x2d, 0x79,
+ 0x68, 0x5d, 0x58, 0x57, 0x7c, 0xf2, 0xf2, 0x4a, 0x1f, 0x75, 0x2c, 0x40,
+ 0x09, 0x5a, 0x12, 0x40, 0x4e, 0x46, 0xbf, 0xd0, 0x48, 0xcd, 0x14, 0x79,
+ 0xc1, 0x4c, 0x6c, 0x92, 0x03, 0x01, 0x77, 0xd8, 0xba, 0x2a, 0xc3, 0xc6,
+ 0x51, 0xc3, 0x28, 0x63, 0xf6, 0x98, 0xd2, 0x48, 0x8d, 0x6c, 0x28, 0x43,
+ 0x96, 0xd5, 0x2a, 0x57, 0x0e, 0xcc, 0xb9, 0xbf, 0x69, 0x85, 0xf4, 0xc2,
+ 0xd7, 0x75, 0x67, 0xd3, 0x44, 0x4e, 0xc4, 0x4c, 0xc7, 0x90, 0x0c, 0xeb,
+ 0xce, 0xca, 0x73, 0x33, 0xa5, 0x98, 0xce, 0x1b, 0xcb, 0x14, 0x65, 0x53,
+ 0x12, 0x99, 0x88, 0x4e, 0xcc, 0xf6, 0x58, 0x27, 0x46, 0xc0, 0x68, 0x7b,
+ 0x17, 0x36, 0xfd, 0x27, 0x6c, 0x9b, 0x34, 0xe3, 0x8a, 0xcf, 0x60, 0x05,
+ 0x4e, 0x69, 0x2e, 0xf1, 0x75, 0x84, 0x87, 0x6f, 0x06, 0xb3, 0x4c, 0xf0,
+ 0x8b, 0xd3, 0x6b, 0xe7, 0x10, 0xa1, 0xcb, 0x69, 0x86, 0x86, 0xb5, 0x2e,
+ 0x35, 0x31, 0xc8, 0xf3, 0x49, 0x9a, 0xd8, 0xe9, 0xe1, 0x4d, 0x90, 0xce,
+ 0x90, 0xd6, 0x65, 0x4f, 0x81, 0x19, 0xcc, 0x0d, 0xa7, 0x05, 0x59, 0x37,
+ 0x4a, 0x2e, 0x93, 0xcc, 0x50, 0x9c, 0x9c, 0x8b, 0x11, 0xcb, 0xa4, 0x78,
+ 0xa8, 0x66, 0xb9, 0xbc, 0x40, 0x3e, 0x10, 0xb4, 0xda, 0x09, 0xcf, 0x5a,
+ 0x94, 0xa9, 0x35, 0xa0, 0x49, 0x9b, 0x64, 0xa4, 0x71, 0xac, 0x7f, 0x6c,
+ 0x1a, 0x25, 0x96, 0x4b, 0x86, 0x4e, 0x68, 0xac, 0xd3, 0x8b, 0x5e, 0xe4,
+ 0x37, 0xa8, 0x59, 0x76, 0xd9, 0x10, 0x9d, 0xa1, 0x97, 0xb6, 0x84, 0x27,
+ 0x80, 0x88, 0xa7, 0x20, 0xce, 0xe3, 0x42, 0x92, 0xb1, 0x8c, 0x3f, 0x8e,
+ 0x1c, 0x7f, 0x06, 0xd0, 0xf8, 0x8d, 0x1c, 0x44, 0xe9, 0xd0, 0xec, 0xe6,
+ 0xb8, 0x71, 0x26, 0xe2, 0x38, 0x19, 0x80, 0x58, 0x0b, 0x82, 0x4f, 0xbc,
+ 0x98, 0x65, 0xb7, 0x71, 0x99, 0x0f, 0xdf, 0xc3, 0x64, 0x0f, 0xe7, 0x49,
+ 0x75, 0xf5, 0x4d, 0x43, 0x62, 0xd9, 0x44, 0xee, 0xbc, 0x15, 0x45, 0xc7,
+ 0x6c, 0x5f, 0x44, 0x3e, 0x53, 0x30, 0x25, 0xc3, 0x2a, 0x49, 0x2b, 0xd1,
+ 0x5b, 0x68, 0x05, 0xe8, 0x04, 0x64, 0x36, 0xd8, 0x3a, 0x6a, 0xac, 0xab,
+ 0xcc, 0xa9, 0xd1, 0x1c, 0x39, 0xa1, 0x8d, 0x12, 0x0f, 0x64, 0x89, 0xea,
+ 0x7a, 0x14, 0xbd, 0xce, 0xab, 0xf4, 0x00, 0xff, 0x06, 0xe6, 0x50, 0xd1,
+ 0x54, 0xe4, 0xae, 0x4a, 0x70, 0xa1, 0x91, 0xbd, 0x21, 0x7d, 0x25, 0xbe,
+ 0x16, 0xc4, 0xfd, 0x4b, 0xa7, 0xba, 0xa6, 0x76, 0x8b, 0x36, 0xbe, 0xdd,
+ 0xe8, 0x46, 0x57, 0xbc, 0xa4, 0xd4, 0x20, 0xcf, 0x11, 0x76, 0xfe, 0x12,
+ 0xd4, 0xe6, 0x59, 0xd5, 0x6c, 0xee, 0x8a, 0x2e, 0x3f, 0x24, 0x77, 0xf6,
+ 0x78, 0xd0, 0x06, 0x88, 0x06, 0x6a, 0x9c, 0x10, 0xbd, 0x2f, 0x1a, 0xaf,
+ 0x01, 0xb3, 0x6e, 0x59, 0x52, 0xf6, 0xfd, 0xa2, 0xb7, 0x61, 0x64, 0x3c,
+ 0x7b, 0x24, 0x13, 0xa1, 0xc0, 0x45, 0x2c, 0x6e, 0x92, 0x94, 0xde, 0x28,
+ 0xe0, 0x45, 0x66, 0x69, 0x64, 0xd1, 0x10, 0x83, 0xa6, 0xd7, 0xeb, 0x09,
+ 0x9f, 0x99, 0x83, 0x66, 0xc0, 0x07, 0x47, 0x6f, 0x84, 0xc7, 0xc3, 0x3f,
+ 0x68, 0x55, 0xd1, 0x17, 0x51, 0xd6, 0x7d, 0x4b, 0xcd, 0x1e, 0xfa, 0x69,
+ 0xca, 0x37, 0x42, 0xec, 0x36, 0xd2, 0x8b, 0x8e, 0x46, 0x38, 0x1f, 0xd8,
+ 0xeb, 0xa7, 0xbd, 0xc7, 0xfb, 0xbd, 0x9d, 0x1a, 0x61, 0x4d, 0xaa, 0xb8,
+ 0xbc, 0x1e, 0x46, 0x87, 0x64, 0x76, 0x46, 0x92, 0x0f, 0x12, 0x14, 0xa8,
+ 0x1b, 0x72, 0xb9, 0x0a, 0xad, 0xf2, 0x31, 0xe4, 0x4d, 0xd7, 0x36, 0xc8,
+ 0x44, 0x48, 0x6e, 0x42, 0x9c, 0x12, 0xd9, 0x35, 0x7d, 0x89, 0xda, 0xf4,
+ 0x03, 0x1a, 0x66, 0x86, 0xfa, 0x45, 0x45, 0x42, 0x53, 0x7a, 0x9b, 0xb1,
+ 0xf2, 0xab, 0x8d, 0x0d, 0x81, 0xed, 0xa4, 0x22, 0x18, 0x10, 0x5b, 0x93,
+ 0xb5, 0x6d, 0x34, 0x47, 0x2b, 0x1d, 0x1d, 0x8d, 0x49, 0xa6, 0x31, 0xf7,
+ 0xdc, 0xc8, 0x48, 0xb9, 0x1c, 0x92, 0xc0, 0x8d, 0xe9, 0xee, 0xa0, 0xad,
+ 0x73, 0x24, 0x37, 0x4f, 0xeb, 0xe8, 0x88, 0x93, 0xa0, 0xc4, 0x97, 0x21,
+ 0x6d, 0xa1, 0x23, 0x02, 0xf8, 0xf1, 0x34, 0x1f, 0x91, 0x6d, 0xdb, 0xdb,
+ 0xdb, 0xbe, 0x71, 0x42, 0x76, 0x3a, 0x4e, 0x23, 0x9b, 0xe8, 0x92, 0x06,
+ 0x82, 0x9c, 0x5d, 0x56, 0x57, 0x5b, 0xd6, 0xcd, 0xa6, 0x0a, 0x3f, 0x0c,
+ 0x84, 0xd5, 0xa7, 0xe6, 0xa9, 0xa3, 0x18, 0x09, 0xa2, 0x8b, 0x5f, 0x17,
+ 0x65, 0x45, 0x16, 0x7a, 0xb9, 0xdf, 0x79, 0x26, 0x30, 0xb2, 0x69, 0x3a,
+ 0xcd, 0x8b, 0xbb, 0x10, 0x69, 0xf3, 0x29, 0xd0, 0x8d, 0x42, 0x92, 0x26,
+ 0xee, 0xae, 0xe4, 0x2c, 0xd4, 0x6c, 0x7d, 0x13, 0x24, 0x15, 0xa9, 0xba,
+ 0xd7, 0x5c, 0x0f, 0x72, 0x3c, 0x0a, 0x37, 0x67, 0x0b, 0xff, 0x40, 0x5c,
+ 0x8a, 0x78, 0x10, 0x48, 0x20, 0x70, 0x89, 0x9e, 0x2e, 0x07, 0x9e, 0x96,
+ 0x37, 0x34, 0x4b, 0x6c, 0x78, 0x63, 0xe8, 0x0b, 0xb5, 0x61, 0xb1, 0xe7,
+ 0xd9, 0xb5, 0x42, 0xad, 0x7b, 0x88, 0xa4, 0x07, 0xf8, 0x0f, 0x9d, 0xad,
+ 0x6b, 0x1e, 0x1a, 0xb8, 0x82, 0xf3, 0xc9, 0x35, 0x7b, 0x27, 0xe2, 0x58,
+ 0x3c, 0x34, 0x71, 0x95, 0xd7, 0x4e, 0xd0, 0x93, 0x47, 0xbd, 0xdd, 0xda,
+ 0x09, 0x9a, 0xdd, 0x61, 0xfc, 0x4d, 0x98, 0x0d, 0xa3, 0x76, 0x5b, 0x5a,
+ 0xdd, 0x36, 0xbb, 0x5c, 0x14, 0x24, 0xfb, 0x4a, 0xc8, 0x8e, 0x46, 0xea,
+ 0xa0, 0xb4, 0x76, 0x95, 0x53, 0xb8, 0x0b, 0xdc, 0xf5, 0xe9, 0x64, 0xdc,
+ 0x0d, 0x58, 0x30, 0xe9, 0x92, 0x62, 0x43, 0x1b, 0x3a, 0xdf, 0x40, 0x77,
+ 0xa2, 0xc6, 0x66, 0xa9, 0x48, 0xd6, 0x68, 0xab, 0x8d, 0x30, 0xbe, 0x23,
+ 0x1a, 0x4e, 0x92, 0x6c, 0x4a, 0x27, 0x4b, 0xcc, 0x03, 0x3d, 0xcf, 0xe4,
+ 0xc2, 0x7e, 0x1c, 0x32, 0x35, 0x0c, 0xd0, 0x8d, 0x54, 0x94, 0x28, 0x38,
+ 0xb0, 0x75, 0x47, 0xc4, 0x79, 0xb6, 0x9c, 0x5c, 0xa5, 0xc3, 0xf7, 0xca,
+ 0xff, 0x55, 0x16, 0x6e, 0x72, 0x75, 0x0c, 0xe4, 0x21, 0x5f, 0x15, 0x3c,
+ 0xb5, 0x40, 0x63, 0x4d, 0x0e, 0xaa, 0x39, 0xba, 0xa1, 0x51, 0x47, 0x5d,
+ 0x0c, 0x49, 0xa8, 0xa7, 0x33, 0x0e, 0xa7, 0x52, 0x2f, 0x91, 0x08, 0x6e,
+ 0xa5, 0xd9, 0x28, 0xae, 0x8a, 0x6c, 0xde, 0x36, 0x3a, 0x95, 0x4a, 0x5c,
+ 0xa9, 0xb9, 0x14, 0x1b, 0x14, 0x39, 0x96, 0xd8, 0xd5, 0x34, 0x8c, 0x1a,
+ 0xab, 0xd9, 0x3c, 0x4c, 0xb4, 0xb6, 0x5d, 0xb4, 0x04, 0x64, 0x20, 0xca,
+ 0xb0, 0x98, 0x4e, 0xf2, 0xcf, 0x28, 0x57, 0x31, 0x02, 0x54, 0xcb, 0x6c,
+ 0x48, 0x52, 0x5a, 0x76, 0x99, 0x62, 0x88, 0x14, 0xc8, 0x0a, 0xd5, 0x04,
+ 0xe4, 0x36, 0xff, 0x6c, 0xc2, 0x37, 0xe9, 0x65, 0x5e, 0xa1, 0x98, 0xe4,
+ 0x91, 0x38, 0xdb, 0x42, 0x0d, 0x4d, 0xa8, 0x41, 0xce, 0x15, 0x18, 0x33,
+ 0xd6, 0xae, 0xa0, 0x6b, 0x31, 0x0e, 0xf0, 0x19, 0x23, 0x8b, 0x44, 0x73,
+ 0xd7, 0xa1, 0xb5, 0xa1, 0x18, 0x33, 0x50, 0xaa, 0x55, 0xa1, 0x5a, 0x35,
+ 0x11, 0x64, 0x65, 0x28, 0xc0, 0x57, 0x37, 0xd9, 0x30, 0x55, 0x5b, 0xae,
+ 0xc4, 0x7b, 0x4c, 0x32, 0xff, 0xb6, 0x9c, 0x22, 0x2f, 0x81, 0x97, 0x58,
+ 0x59, 0x40, 0x4f, 0xe4, 0x4d, 0x86, 0xca, 0x04, 0xf3, 0x69, 0x16, 0x18,
+ 0xe5, 0x46, 0x4d, 0x8a, 0x8c, 0x1c, 0xae, 0xe8, 0x8c, 0x32, 0x06, 0xca,
+ 0x10, 0x6f, 0xe0, 0x71, 0xd3, 0xfb, 0xa2, 0x5f, 0x59, 0xbd, 0x8a, 0x18,
+ 0xc3, 0x98, 0xec, 0x42, 0xde, 0x3a, 0x11, 0x03, 0xbe, 0x4c, 0xc9, 0x37,
+ 0xcd, 0x7b, 0xb0, 0xc0, 0x45, 0xc7, 0x70, 0x36, 0xef, 0x69, 0xf6, 0xff,
+ 0xd7, 0x57, 0xd6, 0x38, 0xb5, 0x98, 0x6f, 0x20, 0x87, 0x46, 0x1f, 0x12,
+ 0x51, 0x58, 0x3a, 0x1e, 0xc3, 0xb9, 0x5d, 0xfb, 0xfe, 0x95, 0x96, 0x79,
+ 0x10, 0x40, 0x35, 0x07, 0xf3, 0x9b, 0xd1, 0x9a, 0x0c, 0x84, 0x82, 0xf3,
+ 0xb4, 0xa5, 0xae, 0xd2, 0x95, 0xf0, 0x13, 0x26, 0x2d, 0x87, 0x75, 0x24,
+ 0xf8, 0x04, 0xa8, 0xa8, 0xa9, 0x47, 0x63, 0x9b, 0xa8, 0xaf, 0xa2, 0x59,
+ 0x70, 0x4b, 0xa3, 0x44, 0x52, 0x89, 0x93, 0x31, 0xe1, 0x7c, 0xc4, 0xe4,
+ 0xf1, 0x9e, 0x10, 0xf6, 0xc2, 0xed, 0x84, 0x6f, 0x35, 0x50, 0xe0, 0x30,
+ 0xf8, 0x85, 0xee, 0x25, 0x3d, 0x4d, 0x70, 0x98, 0xd0, 0xc6, 0xa8, 0x51,
+ 0x66, 0x18, 0xd2, 0x21, 0x74, 0x20, 0x9c, 0x44, 0x62, 0x01, 0x51, 0x39,
+ 0x6e, 0x34, 0x87, 0x24, 0x4d, 0xf7, 0x75, 0x97, 0x85, 0x61, 0x66, 0xff,
+ 0x43, 0x8e, 0xf0, 0xe8, 0x91, 0x6c, 0xc8, 0x57, 0x36, 0x8d, 0x71, 0x3c,
+ 0x49, 0x2e, 0xf1, 0x20, 0x64, 0x97, 0xb3, 0x9c, 0x43, 0xfa, 0x9a, 0x54,
+ 0x9e, 0xc3, 0x4d, 0x49, 0x36, 0x50, 0xb6, 0xb6, 0x95, 0xd1, 0x26, 0xd0,
+ 0xfd, 0x64, 0x41, 0x3b, 0x7e, 0x06, 0xb3, 0xea, 0xf7, 0x5f, 0x6c, 0x2d,
+ 0x27, 0x0a, 0x9e, 0xfb, 0x3d, 0x68, 0x02, 0xcd, 0xdd, 0xac, 0x15, 0x34,
+ 0xfd, 0x54, 0xa2, 0x3b, 0x28, 0x43, 0x00, 0xe1, 0x9e, 0x5b, 0x5d, 0x97,
+ 0x8c, 0x78, 0x7f, 0x62, 0x5a, 0x3c, 0xf6, 0xc4, 0x99, 0xf1, 0x8d, 0xbd,
+ 0xd8, 0xa0, 0x76, 0x52, 0x2a, 0x90, 0x36, 0x28, 0x76, 0x89, 0xa9, 0xe7,
+ 0xb8, 0xcb, 0x37, 0x12, 0x6c, 0xd6, 0x22, 0x8d, 0x93, 0xaa, 0x76, 0x03,
+ 0xdd, 0x94, 0xa0, 0xcb, 0x5f, 0x5e, 0x3f, 0x02, 0x69, 0x99, 0x85, 0xd7,
+ 0x62, 0xf7, 0xa7, 0x03, 0xfd, 0x75, 0xef, 0xa7, 0x83, 0x22, 0xbd, 0x84,
+ 0xf3, 0xf8, 0xd3, 0x01, 0xae, 0x2f, 0xb0, 0x8a, 0x5f, 0x7e, 0xf9, 0xe5,
+ 0x1b, 0xff, 0x40, 0x46, 0x47, 0x3f, 0xf4, 0xa3, 0xbf, 0x3d, 0xa2, 0x50,
+ 0x19, 0x8a, 0xa5, 0x6c, 0xde, 0x51, 0x12, 0x69, 0xa3, 0x92, 0x95, 0xb7,
+ 0x30, 0xa4, 0xb9, 0x6b, 0xaf, 0x46, 0x62, 0x67, 0x95, 0x19, 0x44, 0x5b,
+ 0xbe, 0x44, 0x48, 0xe7, 0x12, 0x87, 0xff, 0x9d, 0x48, 0x8f, 0x97, 0x39,
+ 0x10, 0xe1, 0xd5, 0xd4, 0xb7, 0xe4, 0xce, 0x98, 0xa8, 0xc8, 0xc7, 0xb2,
+ 0xa8, 0x2e, 0xf9, 0x7a, 0xaa, 0x0f, 0x4a, 0xae, 0x9e, 0xe0, 0x60, 0x78,
+ 0xda, 0x4b, 0x46, 0xe2, 0x48, 0xa0, 0xa0, 0x78, 0xe6, 0x97, 0x45, 0x32,
+ 0xbf, 0xc2, 0xe3, 0x0a, 0x9d, 0xfa, 0x6a, 0x10, 0x5d, 0x8c, 0x65, 0xbe,
+ 0x28, 0x30, 0x3a, 0x6b, 0x98, 0x4f, 0x26, 0x1c, 0xbd, 0x11, 0x6d, 0x72,
+ 0x37, 0xb0, 0x39, 0xa3, 0x74, 0x8b, 0x47, 0x5d, 0xd9, 0xce, 0x49, 0x0c,
+ 0xcc, 0x9a, 0x27, 0x28, 0x9f, 0x66, 0x55, 0xa5, 0x71, 0x5d, 0xf8, 0x34,
+ 0x90, 0x07, 0x0d, 0x26, 0x38, 0x0f, 0xd9, 0xb6, 0x7b, 0x4e, 0x64, 0xbc,
+ 0x98, 0xf1, 0xc0, 0x70, 0x2f, 0x9a, 0x37, 0x35, 0x6b, 0x36, 0x18, 0xdf,
+ 0x02, 0x57, 0x44, 0xbe, 0x18, 0x45, 0x9b, 0xd2, 0x78, 0x73, 0xf8, 0xda,
+ 0xa7, 0x8c, 0x5f, 0x47, 0x1c, 0xba, 0x02, 0x96, 0x8e, 0x9f, 0x55, 0x2d,
+ 0x43, 0xa0, 0x21, 0xfd, 0xca, 0x53, 0xaf, 0x58, 0xa3, 0x62, 0x95, 0xca,
+ 0x73, 0x2e, 0x7d, 0x80, 0x82, 0x65, 0x46, 0xd1, 0x81, 0x5f, 0x0f, 0x92,
+ 0xe9, 0x6f, 0x07, 0x29, 0xf4, 0x16, 0xef, 0x1d, 0xa4, 0x65, 0x47, 0xd9,
+ 0x7e, 0xe7, 0x7d, 0x7a, 0x07, 0xe7, 0x04, 0xe8, 0xae, 0xea, 0xac, 0xc9,
+ 0xfc, 0x1d, 0x5e, 0x6f, 0xef, 0x32, 0x57, 0x72, 0x7c, 0xfa, 0xb8, 0xae,
+ 0x7b, 0xd1, 0x0b, 0x2d, 0xea, 0x7b, 0x5d, 0x70, 0x44, 0xc9, 0x8f, 0xac,
+ 0xae, 0xdf, 0x71, 0x1f, 0xf5, 0x33, 0x60, 0x4c, 0x7a, 0x85, 0x27, 0x99,
+ 0x11, 0x27, 0xc7, 0x58, 0xad, 0x9e, 0x91, 0xaa, 0xf0, 0x41, 0x0d, 0x19,
+ 0x63, 0x99, 0x21, 0x53, 0x5f, 0x34, 0x1f, 0xcd, 0x05, 0x39, 0x23, 0x68,
+ 0x3b, 0x9b, 0xcd, 0x61, 0x2c, 0x86, 0x89, 0xc9, 0x50, 0xbb, 0x49, 0x46,
+ 0x66, 0x22, 0xbc, 0x4c, 0x0a, 0x8c, 0xd2, 0x43, 0x93, 0x71, 0x7a, 0x9d,
+ 0xe5, 0x8b, 0x12, 0x5a, 0xc1, 0x8d, 0x94, 0xb6, 0x91, 0x50, 0x7d, 0xc5,
+ 0x19, 0x29, 0x19, 0x74, 0x2a, 0xe0, 0x27, 0x48, 0xd8, 0x61, 0xa9, 0x78,
+ 0xb3, 0x5c, 0xa0, 0xdc, 0x86, 0x81, 0x23, 0x2a, 0x96, 0xd1, 0x75, 0xda,
+ 0x1c, 0x1d, 0x4b, 0x6e, 0x14, 0x67, 0x63, 0x44, 0xb4, 0xad, 0x8f, 0x28,
+ 0x7b, 0xf0, 0x06, 0x7f, 0x74, 0xc9, 0x63, 0x41, 0x87, 0xec, 0x00, 0x83,
+ 0xda, 0x30, 0xf6, 0xc3, 0x74, 0xf4, 0x10, 0xd1, 0x83, 0xde, 0x74, 0x69,
+ 0x0c, 0xf4, 0xc5, 0xb4, 0xa8, 0x58, 0xbd, 0xf7, 0x34, 0xfb, 0x8b, 0xd3,
+ 0xfe, 0x56, 0x80, 0xd2, 0xea, 0x41, 0xbe, 0xf8, 0x3e, 0x4a, 0xd9, 0x18,
+ 0x8b, 0xc5, 0xb1, 0x69, 0x39, 0x5a, 0xaa, 0x1c, 0x6b, 0x9f, 0xe3, 0x7d,
+ 0x9a, 0xa7, 0xa9, 0x58, 0x42, 0xe9, 0x51, 0x94, 0x5a, 0xf1, 0xd2, 0xc2,
+ 0x8b, 0xd5, 0x09, 0x6a, 0x3a, 0x3e, 0x8a, 0xdc, 0x66, 0x4b, 0x8e, 0x48,
+ 0x6e, 0xba, 0xf2, 0xed, 0x03, 0x9b, 0xe5, 0x96, 0x95, 0x5e, 0xa1, 0xa9,
+ 0xf3, 0x93, 0x57, 0x64, 0x56, 0x85, 0x6b, 0x10, 0xa4, 0x0d, 0xf1, 0x9e,
+ 0x69, 0x08, 0x15, 0x46, 0x3c, 0xb8, 0x51, 0x86, 0xd6, 0x50, 0x40, 0x91,
+ 0xfb, 0x4c, 0xf8, 0x34, 0x3a, 0x0e, 0x11, 0xce, 0x28, 0xc6, 0xae, 0x79,
+ 0x0c, 0xaa, 0xbb, 0xb9, 0x04, 0x06, 0x2e, 0xca, 0x9a, 0x3b, 0xc3, 0x58,
+ 0x38, 0x2b, 0xb2, 0x50, 0xa1, 0xbd, 0xd5, 0x69, 0xd3, 0xdb, 0x7a, 0xf6,
+ 0x0d, 0xa1, 0x02, 0x70, 0x39, 0xcb, 0x7e, 0x13, 0x83, 0x49, 0x3a, 0xbb,
+ 0xce, 0x8a, 0x7c, 0x46, 0xbc, 0x9c, 0x22, 0x3f, 0x06, 0x62, 0x30, 0x18,
+ 0x45, 0x1b, 0xc7, 0x6f, 0xdf, 0x9c, 0xbe, 0x3b, 0x3e, 0x7a, 0xf7, 0xdd,
+ 0xdb, 0xd7, 0xcf, 0x4e, 0x4f, 0x36, 0x9a, 0x62, 0xca, 0x58, 0x1c, 0x4a,
+ 0x25, 0x9a, 0xec, 0xc8, 0xc5, 0x58, 0x4a, 0xa3, 0x1c, 0x3a, 0x46, 0xa6,
+ 0x22, 0x0a, 0x6f, 0x64, 0x53, 0x9c, 0x38, 0x58, 0x74, 0xc5, 0x1b, 0xcd,
+ 0x0d, 0x16, 0x68, 0x58, 0x10, 0xde, 0x20, 0x93, 0xd7, 0x83, 0x2c, 0xd6,
+ 0x64, 0x1d, 0x5f, 0xf8, 0xba, 0xbf, 0xd1, 0xc8, 0x1f, 0xb5, 0x5d, 0xd2,
+ 0x4d, 0xe9, 0xc4, 0x3d, 0x2e, 0xaa, 0x1c, 0xb6, 0x49, 0x96, 0x12, 0xe3,
+ 0x30, 0x68, 0xd5, 0x13, 0x18, 0x50, 0x60, 0xbb, 0x4b, 0x6b, 0x3a, 0x81,
+ 0x95, 0xc0, 0x56, 0x80, 0x7e, 0x63, 0x19, 0xe4, 0xb0, 0xa8, 0x36, 0xba,
+ 0x51, 0x9a, 0xd1, 0xb1, 0xd5, 0x50, 0x74, 0xbc, 0x9d, 0xc8, 0x4b, 0xe4,
+ 0xc5, 0xb7, 0x60, 0xdc, 0x47, 0xc2, 0x74, 0xdd, 0x4b, 0x6f, 0x53, 0xe2,
+ 0x0b, 0xf2, 0xd6, 0xf1, 0xa2, 0x20, 0x6e, 0xf3, 0x03, 0xa8, 0xa1, 0x78,
+ 0xb2, 0x9f, 0x69, 0xa0, 0x88, 0x3e, 0x04, 0x02, 0x7c, 0xf3, 0xa2, 0xcb,
+ 0x27, 0x24, 0xd4, 0x90, 0x7d, 0x9f, 0x3c, 0x31, 0xe7, 0x47, 0x17, 0x2f,
+ 0x42, 0xb7, 0x5d, 0x9d, 0x0c, 0x49, 0xa6, 0x2c, 0x2b, 0xb9, 0xdc, 0x5e,
+ 0xf7, 0xfb, 0x11, 0x25, 0xdf, 0x60, 0xfc, 0x68, 0x91, 0x60, 0x87, 0xce,
+ 0x17, 0x40, 0xd5, 0x4d, 0xe6, 0xf3, 0x97, 0xe3, 0xfe, 0xef, 0x76, 0x77,
+ 0xd1, 0xec, 0xb4, 0x80, 0x75, 0xd9, 0x84, 0xb7, 0x66, 0x25, 0x9c, 0xcc,
+ 0x69, 0xaf, 0xcc, 0xb7, 0x24, 0xba, 0x8f, 0xf5, 0xc0, 0xe4, 0x1a, 0xd4,
+ 0x2c, 0x22, 0x23, 0x25, 0xea, 0x96, 0x98, 0x1f, 0x93, 0x95, 0x04, 0xfc,
+ 0x02, 0x14, 0xb5, 0x89, 0x6f, 0x41, 0xda, 0xcc, 0xce, 0x38, 0xc9, 0x69,
+ 0x9a, 0x0c, 0xe1, 0x37, 0xb4, 0x5e, 0x6f, 0xb5, 0x4f, 0xac, 0xcf, 0x56,
+ 0x08, 0x8e, 0xcb, 0xa2, 0x94, 0x24, 0x9f, 0x2b, 0xcc, 0x02, 0x26, 0x29,
+ 0x1b, 0xa3, 0x82, 0x03, 0x1e, 0x24, 0xc3, 0xf7, 0x37, 0x49, 0x41, 0xd1,
+ 0x7b, 0x40, 0xb7, 0xd9, 0x20, 0x9b, 0x64, 0x15, 0xfb, 0xaa, 0x9a, 0x92,
+ 0x13, 0x6d, 0x3f, 0xae, 0x61, 0x3a, 0xbb, 0xcc, 0x66, 0x28, 0x38, 0xa0,
+ 0x41, 0x2a, 0xab, 0x5c, 0x5b, 0x30, 0x29, 0xc6, 0xac, 0xd0, 0xb8, 0x7e,
+ 0xa9, 0xc8, 0x17, 0xc4, 0xf0, 0x69, 0x3e, 0x4b, 0x3c, 0x50, 0x4b, 0xb9,
+ 0xca, 0x08, 0x5d, 0x3e, 0x65, 0xc8, 0xee, 0x0e, 0x74, 0xa8, 0x69, 0xc0,
+ 0x36, 0x40, 0x22, 0xc4, 0x5f, 0xd2, 0xbb, 0xe1, 0x15, 0x72, 0x3c, 0xc3,
+ 0x28, 0x0d, 0x6b, 0xec, 0x8a, 0x0d, 0x22, 0x53, 0xcf, 0x6e, 0xaa, 0xce,
+ 0x79, 0xbe, 0xea, 0x7c, 0xa9, 0x93, 0x1b, 0x50, 0x03, 0x0c, 0xb6, 0xb1,
+ 0x51, 0xd6, 0x58, 0x32, 0x75, 0xe5, 0x6f, 0x62, 0x1f, 0x3e, 0x9f, 0xcd,
+ 0xd2, 0x89, 0xec, 0xdf, 0x45, 0x9d, 0xbb, 0xd5, 0x57, 0xdf, 0x3c, 0x0b,
+ 0x63, 0x96, 0x50, 0xbe, 0x46, 0x73, 0x4f, 0x29, 0x41, 0x22, 0xa9, 0xf4,
+ 0xc2, 0xd4, 0x94, 0xac, 0xa7, 0xbd, 0x27, 0x3b, 0xe6, 0xab, 0x5e, 0xb3,
+ 0x17, 0xdb, 0x8d, 0x77, 0x9a, 0x96, 0x6e, 0xb9, 0xbf, 0xc9, 0x7f, 0x32,
+ 0x6a, 0x2b, 0x71, 0xbf, 0x46, 0x73, 0xae, 0x79, 0x45, 0xae, 0x30, 0x99,
+ 0xc6, 0x06, 0x48, 0xc9, 0x39, 0x1a, 0xc9, 0xc6, 0x51, 0x91, 0xc3, 0x56,
+ 0xd7, 0x36, 0x73, 0x93, 0x48, 0x63, 0xe4, 0xc9, 0x4c, 0xc2, 0xcd, 0x9d,
+ 0x85, 0xd9, 0x0a, 0x9a, 0x59, 0xcd, 0xe5, 0xba, 0x4c, 0xaa, 0x35, 0x96,
+ 0xd2, 0xba, 0x93, 0xa0, 0xc9, 0x87, 0x55, 0xa2, 0x5d, 0x4b, 0xa0, 0x95,
+ 0xee, 0x8f, 0x8f, 0x48, 0xdb, 0x7c, 0x80, 0xbd, 0x73, 0x98, 0xf0, 0x75,
+ 0x81, 0x22, 0xeb, 0x7b, 0x14, 0x81, 0x60, 0x95, 0xe9, 0x3c, 0xd7, 0x25,
+ 0x08, 0x7a, 0xe8, 0x10, 0xd8, 0xec, 0x87, 0x0b, 0x10, 0x4e, 0x50, 0x9e,
+ 0x7f, 0xa7, 0xca, 0x61, 0xe1, 0x23, 0xcb, 0x92, 0x44, 0xf4, 0x4a, 0x85,
+ 0x06, 0x1c, 0x44, 0xa9, 0x96, 0x63, 0xb3, 0xda, 0x83, 0x3b, 0xf5, 0xc0,
+ 0xfa, 0xf6, 0x29, 0x8a, 0xb8, 0x65, 0x57, 0xdd, 0x41, 0x27, 0xda, 0x4c,
+ 0x7b, 0x97, 0xd0, 0x5e, 0x07, 0xdb, 0xd9, 0x3d, 0xc0, 0x7f, 0xf7, 0xe8,
+ 0xdf, 0xfd, 0xce, 0x96, 0xa4, 0x72, 0xba, 0xb4, 0x81, 0xc2, 0x86, 0xbf,
+ 0x47, 0x75, 0xd9, 0x83, 0xef, 0xdf, 0xac, 0x8d, 0x33, 0xb2, 0xe5, 0xe2,
+ 0x94, 0x49, 0xc0, 0x17, 0x56, 0x75, 0x19, 0xa6, 0x6c, 0xe0, 0xbf, 0x4e,
+ 0xd9, 0xc3, 0x00, 0x33, 0xc3, 0xb8, 0xdc, 0x74, 0xe4, 0xb8, 0xdd, 0x86,
+ 0xef, 0x8a, 0x14, 0xc4, 0xcc, 0xab, 0x68, 0x51, 0xf1, 0x21, 0x81, 0x73,
+ 0xd5, 0x6c, 0x6e, 0x3e, 0xc9, 0xac, 0x17, 0x4d, 0xba, 0xee, 0xa9, 0x41,
+ 0xd2, 0xee, 0x22, 0xc7, 0x0c, 0x4c, 0xf2, 0x1b, 0x7d, 0x26, 0x96, 0x4c,
+ 0xcb, 0x90, 0xd8, 0x02, 0xbb, 0x49, 0x8e, 0x08, 0x7c, 0xcc, 0x4d, 0x57,
+ 0x98, 0xa2, 0x38, 0x8e, 0x69, 0xa0, 0x11, 0x0a, 0xbc, 0xd9, 0x10, 0x4d,
+ 0x8d, 0x13, 0xda, 0x37, 0x34, 0xaa, 0x2e, 0x02, 0x41, 0xc5, 0x86, 0x56,
+ 0xb3, 0xb1, 0xb8, 0x3c, 0xe5, 0x6f, 0xba, 0xef, 0x45, 0x42, 0x2c, 0x39,
+ 0xa5, 0x01, 0x44, 0x95, 0x9a, 0x6c, 0x18, 0x38, 0x7a, 0x0d, 0x59, 0x8d,
+ 0xf8, 0xb7, 0xab, 0xd6, 0xc8, 0x64, 0xeb, 0x3e, 0x39, 0xb1, 0x3f, 0xf5,
+ 0x5a, 0x4e, 0x32, 0x8b, 0x4b, 0x9f, 0xed, 0x24, 0x53, 0xf7, 0xdb, 0x64,
+ 0x30, 0xda, 0xb6, 0x67, 0x64, 0xdd, 0xe3, 0x4c, 0x6b, 0xba, 0xe2, 0x38,
+ 0xc3, 0x23, 0x31, 0x7a, 0x6d, 0x17, 0xe5, 0x3d, 0x4e, 0xb3, 0x73, 0x7f,
+ 0xf1, 0x3b, 0x1a, 0x7e, 0x21, 0x81, 0x71, 0xee, 0x56, 0x35, 0x57, 0xe2,
+ 0xce, 0x21, 0xe1, 0x63, 0x87, 0x07, 0xf4, 0xb9, 0xa1, 0x37, 0xe2, 0x65,
+ 0xd8, 0x4c, 0xde, 0x27, 0xbd, 0xe8, 0xec, 0xb8, 0x7f, 0x8e, 0x5d, 0xcc,
+ 0x31, 0x18, 0x70, 0x0b, 0x23, 0x05, 0x1b, 0xcd, 0x81, 0x82, 0x95, 0xce,
+ 0xca, 0x5a, 0xda, 0x74, 0x2b, 0x41, 0x68, 0x8c, 0x80, 0x86, 0x37, 0xd7,
+ 0xa2, 0xf8, 0x28, 0x8c, 0x90, 0x92, 0x81, 0x22, 0x66, 0x0a, 0x5e, 0x47,
+ 0x73, 0x58, 0xff, 0xd1, 0x96, 0xf1, 0x76, 0x74, 0x95, 0x6a, 0x4d, 0x28,
+ 0x50, 0xb9, 0xb8, 0x44, 0x5d, 0xb3, 0x54, 0x2b, 0xa7, 0xe9, 0x01, 0x56,
+ 0xc3, 0x17, 0xba, 0x64, 0xda, 0xc6, 0x89, 0x08, 0xda, 0x31, 0x26, 0xf5,
+ 0x91, 0xb0, 0x39, 0xcb, 0x6d, 0xab, 0x18, 0xa6, 0x48, 0xd9, 0xcd, 0x19,
+ 0x05, 0xd0, 0x70, 0xb6, 0x4a, 0x40, 0x9c, 0xe2, 0x4d, 0x51, 0x1d, 0x79,
+ 0x2c, 0x19, 0xcd, 0x01, 0x17, 0x0a, 0x35, 0x34, 0x64, 0x61, 0xd7, 0x04,
+ 0x22, 0x64, 0x48, 0x48, 0xa8, 0x79, 0xb0, 0x55, 0x02, 0xdb, 0x33, 0x9c,
+ 0xea, 0xfb, 0xd9, 0x02, 0xc3, 0x88, 0x7d, 0xb9, 0x06, 0xe5, 0x53, 0xbc,
+ 0xb0, 0x71, 0x01, 0x97, 0xaa, 0xc8, 0x0e, 0x75, 0x39, 0xfa, 0x1e, 0x6b,
+ 0xca, 0xb4, 0x02, 0x38, 0x63, 0x51, 0x96, 0x8d, 0xb6, 0xdc, 0x08, 0x47,
+ 0x96, 0x68, 0xa6, 0x80, 0x45, 0xd6, 0x69, 0x7d, 0x5d, 0xe3, 0x8f, 0x3b,
+ 0xb0, 0x35, 0x15, 0xeb, 0x0c, 0x38, 0xdf, 0x68, 0xbe, 0x18, 0xbc, 0x4f,
+ 0xef, 0x6a, 0xe6, 0x9c, 0x47, 0xbb, 0x75, 0x73, 0x0e, 0x75, 0x01, 0x7a,
+ 0x63, 0x1a, 0x1d, 0xe2, 0xbf, 0xe1, 0xcb, 0x52, 0xce, 0x97, 0xe6, 0x01,
+ 0x12, 0xfd, 0xe0, 0x2b, 0x12, 0xbb, 0xc5, 0x9c, 0x87, 0xbd, 0x37, 0xb5,
+ 0x8b, 0xd3, 0x13, 0x7a, 0xe8, 0x6c, 0xf5, 0xf0, 0x3a, 0xea, 0x46, 0xcf,
+ 0x10, 0x34, 0xe1, 0xe4, 0xf5, 0xf7, 0x44, 0xf0, 0xe7, 0xbb, 0x7b, 0x14,
+ 0x28, 0x63, 0x74, 0xce, 0x11, 0xf5, 0x10, 0x36, 0x91, 0x9a, 0xdc, 0x41,
+ 0x1c, 0x03, 0x27, 0x0e, 0x98, 0x9c, 0x61, 0x24, 0x05, 0xd9, 0x74, 0xbe,
+ 0xe9, 0xac, 0x71, 0x88, 0xba, 0x6d, 0x3a, 0x01, 0x25, 0x6a, 0x83, 0xf3,
+ 0x03, 0x45, 0x2f, 0x30, 0x6a, 0x01, 0xb5, 0x60, 0x05, 0x4d, 0xd2, 0x61,
+ 0x61, 0xa4, 0x3d, 0x36, 0x10, 0x06, 0x54, 0x53, 0xb2, 0x71, 0xce, 0xdf,
+ 0x0f, 0xcb, 0xdd, 0xdd, 0x83, 0xe8, 0xed, 0x9b, 0x97, 0x2c, 0x9f, 0xe3,
+ 0x24, 0x1b, 0x36, 0x2c, 0x1c, 0x7a, 0xd8, 0xec, 0x68, 0x37, 0xe4, 0x73,
+ 0x9a, 0x1d, 0xed, 0x28, 0x50, 0x74, 0xe0, 0xbf, 0xf9, 0xde, 0x5b, 0x8b,
+ 0x0e, 0x4f, 0xba, 0xf2, 0x2e, 0xfe, 0x04, 0x52, 0x14, 0xa7, 0x12, 0xfc,
+ 0x16, 0xd7, 0x57, 0xc0, 0x3e, 0x19, 0x1d, 0x3a, 0x14, 0xf4, 0x93, 0x31,
+ 0x30, 0xfd, 0x72, 0x1f, 0xca, 0x0c, 0x4b, 0x72, 0x3e, 0x5d, 0xe2, 0x44,
+ 0x42, 0x86, 0x7b, 0x9b, 0x2b, 0x40, 0x53, 0xa5, 0x33, 0xcc, 0x28, 0x1e,
+ 0x84, 0xf5, 0x81, 0xbc, 0x2f, 0x99, 0x19, 0x39, 0x3f, 0xe6, 0xa4, 0x54,
+ 0xca, 0x19, 0x69, 0x32, 0xd0, 0x61, 0x3e, 0xe9, 0x89, 0xb5, 0xc1, 0xed,
+ 0xd8, 0x35, 0x07, 0x91, 0x9a, 0xbc, 0x27, 0x62, 0x19, 0x72, 0x6b, 0xbe,
+ 0x78, 0x98, 0x06, 0x9b, 0x54, 0x6f, 0x14, 0x55, 0x8a, 0x5e, 0x35, 0xd2,
+ 0x9c, 0x7d, 0x8d, 0x02, 0x1a, 0x69, 0x64, 0xac, 0x7d, 0xd4, 0xf4, 0xc8,
+ 0x90, 0x4e, 0x8d, 0x31, 0x42, 0xc6, 0x7a, 0xa7, 0x39, 0x18, 0xba, 0x68,
+ 0x35, 0x1f, 0x19, 0xdc, 0x78, 0x45, 0x26, 0x5a, 0x17, 0x9f, 0xb2, 0x66,
+ 0x73, 0x1a, 0x58, 0xda, 0xf4, 0xa2, 0x69, 0x9c, 0x1b, 0x25, 0xd3, 0xe2,
+ 0xd1, 0xf0, 0xcc, 0x72, 0x21, 0x03, 0x6b, 0x26, 0xb9, 0x53, 0xf3, 0x22,
+ 0xbb, 0xc6, 0x07, 0x95, 0x6e, 0xac, 0x8b, 0xb8, 0xae, 0x4b, 0xe6, 0x33,
+ 0xfc, 0x39, 0x63, 0x3f, 0x9e, 0x83, 0xa3, 0x51, 0xe3, 0x71, 0x96, 0xf2,
+ 0x28, 0xc2, 0x40, 0x22, 0x5f, 0x48, 0xda, 0xc6, 0x94, 0x6c, 0x01, 0xcc,
+ 0x08, 0x58, 0x16, 0x5e, 0x32, 0x5f, 0x71, 0xa9, 0xf2, 0x9b, 0x08, 0xb7,
+ 0xc2, 0x06, 0xbd, 0x19, 0x1f, 0x47, 0x57, 0xfc, 0xf4, 0xb4, 0xcd, 0x92,
+ 0xd1, 0x1d, 0xb8, 0x0a, 0x6d, 0x90, 0x57, 0x44, 0x52, 0x3e, 0x9a, 0x7c,
+ 0x3a, 0x3f, 0xc3, 0x2f, 0x64, 0xd1, 0xe3, 0xb4, 0x5c, 0xc7, 0x09, 0x2f,
+ 0xfc, 0x90, 0x42, 0x80, 0x9b, 0xcd, 0x99, 0x1d, 0x1c, 0xa5, 0x93, 0x6c,
+ 0x9a, 0x91, 0x42, 0xdb, 0xd7, 0x54, 0x4a, 0x8e, 0x12, 0xa4, 0xc1, 0xf0,
+ 0x58, 0x78, 0x09, 0x4d, 0xe7, 0x9d, 0x9f, 0x3b, 0x4d, 0x03, 0x21, 0x0e,
+ 0xe4, 0xe7, 0xd5, 0x03, 0x31, 0xf9, 0xea, 0xcb, 0xe3, 0xd5, 0x1c, 0x48,
+ 0x9e, 0xba, 0x9a, 0x81, 0xe3, 0xc0, 0xeb, 0x19, 0xb5, 0x65, 0xb1, 0x2a,
+ 0x69, 0x18, 0x80, 0x21, 0x9b, 0xe6, 0x89, 0x82, 0x3e, 0x2b, 0x0c, 0xb1,
+ 0x66, 0x29, 0x0f, 0x5d, 0xff, 0xd9, 0xf0, 0x3d, 0xe7, 0xa4, 0x8e, 0x9b,
+ 0x46, 0x0f, 0x93, 0x7c, 0xcd, 0xc0, 0x01, 0x81, 0x85, 0x23, 0xe3, 0x15,
+ 0xc6, 0x24, 0xe0, 0x21, 0x46, 0xb6, 0x9c, 0xcd, 0xac, 0x77, 0x2f, 0x68,
+ 0xea, 0x84, 0xb1, 0xbe, 0x7b, 0xf6, 0xf2, 0x4d, 0xb4, 0x89, 0x76, 0x80,
+ 0xa6, 0xa9, 0x4d, 0xf9, 0xfa, 0x76, 0x5a, 0x0d, 0xb7, 0xe7, 0xef, 0xb3,
+ 0xed, 0x59, 0x59, 0x8e, 0x06, 0x5b, 0xc6, 0x3d, 0xad, 0xb6, 0x32, 0x6b,
+ 0x1e, 0x53, 0xfb, 0x18, 0x19, 0xc8, 0x9a, 0x07, 0xd4, 0x31, 0x98, 0xe1,
+ 0x95, 0x62, 0xec, 0x64, 0xb4, 0x46, 0x74, 0xfc, 0x29, 0xaa, 0x89, 0xa3,
+ 0x86, 0x29, 0x16, 0x2a, 0xc0, 0xe2, 0x9d, 0xe8, 0x6e, 0x81, 0x22, 0xc0,
+ 0xf0, 0x6e, 0x14, 0xd9, 0x09, 0x80, 0x26, 0x63, 0xb0, 0x05, 0x5a, 0x39,
+ 0xb1, 0x2d, 0x8e, 0xac, 0x4d, 0x11, 0x5e, 0x0c, 0x05, 0x62, 0x48, 0x38,
+ 0xa9, 0x89, 0x9a, 0x64, 0x4d, 0xb5, 0xb7, 0xdd, 0x41, 0x96, 0xc6, 0x58,
+ 0x18, 0x26, 0x60, 0x0c, 0x0e, 0xe6, 0x78, 0xc1, 0xf6, 0xd5, 0x80, 0x4d,
+ 0x0c, 0xb6, 0x13, 0x17, 0xc5, 0x6c, 0x81, 0xee, 0x66, 0x3b, 0x1d, 0xb5,
+ 0x29, 0xab, 0xd6, 0x2e, 0xa9, 0x5c, 0x82, 0x59, 0xa0, 0x5c, 0xc4, 0x81,
+ 0x2b, 0x5a, 0xd7, 0xb3, 0xcb, 0x0b, 0x9a, 0x98, 0x4d, 0xc1, 0x2b, 0x7b,
+ 0x13, 0x91, 0x70, 0x9e, 0x3e, 0xde, 0xdd, 0xdb, 0xaa, 0x85, 0x7c, 0x09,
+ 0xd7, 0xf0, 0x52, 0x45, 0x51, 0xf7, 0x4f, 0xea, 0x5c, 0x1e, 0x15, 0x22,
+ 0x91, 0x54, 0x6d, 0xd3, 0xa3, 0x14, 0x5d, 0x93, 0x20, 0x8b, 0xa9, 0x0f,
+ 0x74, 0x90, 0xc2, 0x20, 0xbd, 0x8d, 0xb7, 0x90, 0x04, 0x22, 0x46, 0x74,
+ 0xac, 0x2e, 0x88, 0x79, 0x44, 0xb0, 0x01, 0x95, 0x9c, 0x41, 0x77, 0xd4,
+ 0x3d, 0x5e, 0xa7, 0xa4, 0xc5, 0x16, 0x8b, 0xf3, 0x72, 0xc4, 0x89, 0xae,
+ 0x8d, 0xb9, 0x89, 0x63, 0x59, 0x2c, 0xe1, 0xd5, 0x26, 0xdc, 0x10, 0xe3,
+ 0x92, 0x9b, 0xe2, 0x9b, 0x8c, 0xa9, 0x83, 0xd7, 0xce, 0x8c, 0xa2, 0xe8,
+ 0x12, 0x47, 0x46, 0xd1, 0xd5, 0x77, 0xa5, 0x87, 0x7a, 0xab, 0x81, 0x10,
+ 0x54, 0xe4, 0x38, 0x20, 0x1f, 0x85, 0x9b, 0x0c, 0x9b, 0x79, 0xd7, 0xb6,
+ 0xf3, 0x2e, 0x37, 0xf3, 0x36, 0x59, 0x87, 0x6c, 0x0f, 0xee, 0xbd, 0xd8,
+ 0xed, 0x07, 0xa9, 0x64, 0x03, 0x33, 0xaf, 0x31, 0xd7, 0x98, 0x77, 0xe9,
+ 0xc3, 0xeb, 0xdb, 0x7a, 0x6b, 0xd1, 0xb5, 0x55, 0x37, 0xbd, 0x62, 0x7a,
+ 0x1b, 0xda, 0x5a, 0xdf, 0x8b, 0xad, 0x95, 0x2e, 0x73, 0x73, 0x94, 0x7c,
+ 0x6f, 0x8d, 0xca, 0x08, 0x31, 0x65, 0x99, 0x37, 0x8c, 0x52, 0xb8, 0x08,
+ 0xce, 0x0d, 0xd9, 0xb3, 0xc7, 0x9d, 0x72, 0x60, 0xc2, 0xbe, 0x24, 0x4d,
+ 0x5b, 0x71, 0x9c, 0xe0, 0x81, 0xb3, 0x0f, 0x62, 0x5d, 0x42, 0xd0, 0x67,
+ 0xa0, 0xce, 0x8d, 0x52, 0x8d, 0x1d, 0x6f, 0xd2, 0x02, 0x1e, 0x7a, 0x45,
+ 0x08, 0x59, 0x76, 0xf8, 0x25, 0xd5, 0xb9, 0xf5, 0x7c, 0x37, 0xad, 0xbe,
+ 0xc7, 0xde, 0x15, 0x5f, 0x1a, 0xb9, 0xc9, 0x4a, 0x75, 0x14, 0x0d, 0x40,
+ 0x0b, 0xe7, 0x6b, 0xc2, 0x05, 0x27, 0xd9, 0x19, 0x3f, 0x52, 0xcd, 0x96,
+ 0x47, 0xb6, 0x55, 0x38, 0x2e, 0x9b, 0xa7, 0x92, 0x34, 0x78, 0xfe, 0xfc,
+ 0x47, 0x27, 0x07, 0xd5, 0x33, 0x51, 0x91, 0x29, 0xf8, 0x4f, 0x26, 0x67,
+ 0x00, 0x34, 0x51, 0x54, 0x0c, 0xd8, 0x7d, 0x9c, 0x88, 0xa5, 0x96, 0x22,
+ 0x11, 0xb7, 0x6c, 0x82, 0x0b, 0x2e, 0x75, 0xe7, 0x90, 0xbe, 0x6b, 0xfa,
+ 0xa2, 0x05, 0x10, 0xe2, 0x9b, 0x9f, 0xf9, 0xeb, 0x88, 0xa3, 0x97, 0x7f,
+ 0x3e, 0xac, 0xae, 0x16, 0xd3, 0x01, 0xec, 0xe7, 0xac, 0xfa, 0xa6, 0x13,
+ 0x71, 0x9c, 0xdb, 0x58, 0xd6, 0x73, 0x89, 0xb9, 0x22, 0x53, 0xd8, 0x21,
+ 0xa1, 0xb0, 0xfa, 0xaa, 0xf1, 0xe8, 0x14, 0xfc, 0xc4, 0x26, 0x9b, 0xc0,
+ 0xe6, 0xb1, 0x37, 0xc9, 0x93, 0x0b, 0xdf, 0x02, 0x79, 0xfe, 0xfc, 0xea,
+ 0xef, 0x3f, 0x7f, 0xb5, 0xff, 0x28, 0x79, 0x9a, 0x0c, 0x9f, 0x8c, 0xbf,
+ 0x4c, 0x1e, 0x8f, 0x1e, 0x3f, 0xfd, 0x6a, 0xef, 0xcb, 0xc7, 0xc9, 0xd3,
+ 0x47, 0xe3, 0xe4, 0xc9, 0x6e, 0xba, 0xfb, 0xd5, 0x78, 0x6f, 0x7f, 0x34,
+ 0x1a, 0xa7, 0x5f, 0x8e, 0x9e, 0x26, 0x9d, 0x1e, 0xa9, 0x64, 0x3a, 0x74,
+ 0x9f, 0xd5, 0xaa, 0xee, 0x95, 0x44, 0xfd, 0x17, 0x47, 0xf1, 0x6e, 0x74,
+ 0x95, 0xde, 0xea, 0x01, 0x63, 0xa7, 0x82, 0xc9, 0xc5, 0x48, 0x25, 0xcf,
+ 0xae, 0x7d, 0xb2, 0x0a, 0x84, 0x86, 0x59, 0x74, 0x68, 0x0d, 0xe4, 0xb4,
+ 0x2b, 0x5a, 0x45, 0x5d, 0x56, 0xce, 0xb6, 0x30, 0x16, 0xfc, 0x03, 0xf5,
+ 0x9a, 0xe1, 0xbc, 0x9a, 0x87, 0xff, 0x14, 0xcd, 0x56, 0xaf, 0x92, 0xe1,
+ 0x15, 0x41, 0x50, 0xc8, 0x83, 0x7d, 0x8e, 0x20, 0xe9, 0x46, 0xf2, 0x0b,
+ 0xea, 0x5a, 0x4e, 0x1b, 0xdf, 0x17, 0xf9, 0x62, 0x7e, 0x9e, 0x4f, 0xb2,
+ 0xe1, 0xdd, 0xb2, 0xe6, 0xdc, 0xc7, 0x6a, 0x5f, 0x9c, 0x30, 0x0b, 0xcf,
+ 0xca, 0xb4, 0xcd, 0x38, 0x4f, 0xf6, 0xc6, 0xb5, 0xed, 0x79, 0x2d, 0x21,
+ 0xe6, 0x0f, 0x50, 0xfa, 0x68, 0xfd, 0x89, 0x45, 0xb0, 0xb0, 0x0c, 0xff,
+ 0xad, 0xaf, 0xf6, 0xd9, 0x0b, 0x60, 0xa5, 0xde, 0x17, 0x0f, 0xb3, 0xf9,
+ 0x15, 0x86, 0xcf, 0x1d, 0x52, 0xae, 0x09, 0xb0, 0x57, 0xf9, 0x20, 0xac,
+ 0xef, 0xf5, 0x85, 0x01, 0x94, 0x42, 0x3e, 0xfa, 0xb6, 0xc8, 0x7b, 0x99,
+ 0x02, 0x87, 0xa9, 0xdd, 0x57, 0x12, 0x9c, 0x32, 0xcf, 0x30, 0x4e, 0x1e,
+ 0x5f, 0x79, 0x59, 0xe4, 0x75, 0x55, 0x0a, 0x18, 0x74, 0x47, 0xbf, 0xed,
+ 0x31, 0x56, 0xc5, 0x62, 0x8e, 0xba, 0x0f, 0x61, 0x10, 0xd2, 0xe7, 0xcd,
+ 0x73, 0x8d, 0x83, 0x17, 0x02, 0x65, 0x25, 0x09, 0x36, 0xf1, 0xed, 0x9b,
+ 0xd3, 0x83, 0xe6, 0x22, 0x99, 0x85, 0x24, 0x1f, 0x6f, 0x99, 0x6e, 0x8f,
+ 0xf2, 0x61, 0xb9, 0x5d, 0x96, 0x13, 0x5d, 0x08, 0x42, 0x4b, 0x0b, 0x5b,
+ 0x06, 0x64, 0xb8, 0xeb, 0x91, 0xc7, 0x47, 0xb4, 0xf7, 0x4a, 0xff, 0x27,
+ 0xc7, 0xcf, 0x5e, 0x9c, 0xc4, 0xf0, 0x6f, 0xff, 0x28, 0x3e, 0x3a, 0xe9,
+ 0xef, 0x3d, 0x7e, 0x12, 0x1f, 0x1f, 0xbf, 0xfa, 0x72, 0x4d, 0x12, 0xa9,
+ 0x26, 0xe5, 0xf5, 0x6e, 0x6f, 0xbf, 0x46, 0x0a, 0xf9, 0x94, 0x78, 0x77,
+ 0x3a, 0x8a, 0xcb, 0xd2, 0x8b, 0x4d, 0xc7, 0xfc, 0x75, 0x8e, 0x2e, 0x3d,
+ 0x91, 0x34, 0x0e, 0xba, 0xec, 0xe3, 0x6c, 0x46, 0x29, 0xe7, 0xfa, 0xb2,
+ 0xe6, 0x49, 0x71, 0xdc, 0x90, 0x89, 0x0b, 0xef, 0x06, 0x7c, 0xa8, 0x89,
+ 0xdc, 0x5a, 0x7f, 0x72, 0xad, 0xa1, 0x28, 0x53, 0xe7, 0x85, 0x41, 0x42,
+ 0x21, 0x44, 0xa7, 0xe5, 0xd6, 0xc3, 0xda, 0xa8, 0x5b, 0x22, 0x6d, 0x1e,
+ 0x6e, 0x3d, 0xac, 0xb5, 0xbe, 0xf6, 0x89, 0xae, 0x8f, 0xad, 0x5c, 0x27,
+ 0x98, 0xd3, 0x79, 0xb9, 0x9e, 0x8c, 0xf3, 0xa4, 0x61, 0x41, 0x34, 0x8f,
+ 0x85, 0xa3, 0xc2, 0xd4, 0x64, 0x9e, 0x44, 0xf6, 0x49, 0x6b, 0x3f, 0x56,
+ 0xc8, 0x18, 0xa3, 0xc5, 0x99, 0xc8, 0xca, 0x72, 0x19, 0x34, 0x09, 0xcb,
+ 0xfa, 0xf5, 0x40, 0x0d, 0xc4, 0xdf, 0xe1, 0x0e, 0x5c, 0x5c, 0x9f, 0x5e,
+ 0xf4, 0x82, 0xa3, 0x2d, 0x9b, 0xd2, 0x95, 0xa0, 0x24, 0xb6, 0x66, 0xc7,
+ 0x78, 0x49, 0x29, 0x1a, 0x02, 0xda, 0x66, 0xa0, 0x5f, 0xcc, 0xac, 0x87,
+ 0xda, 0xbf, 0x5b, 0x15, 0x1b, 0xc8, 0x3a, 0xeb, 0x8b, 0x54, 0x6c, 0x8c,
+ 0x51, 0x5a, 0x14, 0x79, 0xd1, 0x0b, 0x10, 0xad, 0x25, 0xd3, 0xd8, 0xbb,
+ 0x0c, 0x97, 0x93, 0x6d, 0x3a, 0xc9, 0xf0, 0x63, 0x8a, 0xba, 0x77, 0x36,
+ 0xf2, 0x7e, 0x84, 0x7c, 0xbf, 0xa0, 0x64, 0xa0, 0xda, 0xe6, 0xa8, 0x56,
+ 0x53, 0xf1, 0xc3, 0x29, 0x78, 0xdd, 0x2b, 0xa8, 0xe5, 0xe0, 0xc4, 0x7f,
+ 0x91, 0xa0, 0xe4, 0x71, 0x76, 0x19, 0x8e, 0x30, 0xb3, 0x69, 0x51, 0x15,
+ 0x66, 0x93, 0x6a, 0xf8, 0x18, 0x02, 0x31, 0x88, 0x41, 0x43, 0xed, 0x3d,
+ 0x25, 0xcb, 0xd1, 0xc6, 0xd2, 0x57, 0xc7, 0x7e, 0x74, 0x20, 0x20, 0xeb,
+ 0xaf, 0x60, 0x0e, 0x49, 0x64, 0x22, 0x93, 0x4d, 0x1f, 0xb5, 0x94, 0x24,
+ 0x04, 0x25, 0xa5, 0x03, 0xd1, 0xb4, 0x34, 0xa0, 0xe3, 0xd3, 0xf2, 0xff,
+ 0x10, 0x52, 0x66, 0x73, 0x51, 0xce, 0xe6, 0x35, 0xdc, 0x9c, 0x8c, 0x80,
+ 0x5b, 0x13, 0x4a, 0xb5, 0x0e, 0x49, 0xd6, 0xb9, 0x13, 0xa5, 0xc4, 0xd9,
+ 0x4c, 0x9e, 0xcc, 0x59, 0x99, 0x24, 0x37, 0x05, 0x3c, 0x23, 0x81, 0x1c,
+ 0xae, 0x64, 0x10, 0x3b, 0x31, 0x17, 0x18, 0xc1, 0x79, 0x27, 0xb9, 0x55,
+ 0x70, 0x04, 0x1c, 0x06, 0xa3, 0xb4, 0x7b, 0x9e, 0xdc, 0x84, 0xe7, 0xdf,
+ 0x26, 0xaf, 0xb2, 0xbb, 0x9c, 0x3f, 0xa0, 0x63, 0x3d, 0xd0, 0x28, 0x31,
+ 0x2b, 0xed, 0xca, 0xee, 0x05, 0xed, 0xb8, 0x92, 0x2d, 0xcd, 0x58, 0x89,
+ 0x19, 0x21, 0x81, 0x0a, 0x6e, 0x24, 0x27, 0x7f, 0xab, 0xff, 0xbb, 0xcc,
+ 0x25, 0xcb, 0x0e, 0x07, 0x8a, 0xe3, 0xe4, 0x31, 0x36, 0x4f, 0xad, 0xc1,
+ 0x84, 0xac, 0x19, 0x03, 0x92, 0xd2, 0xe6, 0x50, 0x97, 0xc6, 0xc8, 0xe3,
+ 0x38, 0x77, 0x75, 0x35, 0x03, 0xa3, 0x8b, 0xfc, 0x84, 0x74, 0x1a, 0x49,
+ 0x91, 0x6a, 0x17, 0x70, 0xd4, 0x1a, 0xa3, 0x92, 0x71, 0xc4, 0xbe, 0xe1,
+ 0xd5, 0x64, 0x5d, 0x3b, 0x03, 0xd0, 0xec, 0x6b, 0xb3, 0xcd, 0x61, 0xef,
+ 0x63, 0x6a, 0x1f, 0xb0, 0xde, 0x6c, 0xbb, 0x87, 0x64, 0xe8, 0x12, 0x14,
+ 0x13, 0x1e, 0xf7, 0x01, 0x23, 0x76, 0x7d, 0xbd, 0x15, 0xf2, 0xef, 0x39,
+ 0x8d, 0x89, 0x3c, 0x85, 0xb1, 0x07, 0xa0, 0xb9, 0x4e, 0xf2, 0x52, 0x9d,
+ 0xfc, 0xb0, 0x81, 0x0c, 0xde, 0xc9, 0x30, 0x3c, 0x06, 0xd2, 0xb3, 0xd1,
+ 0x1c, 0x3f, 0xc3, 0xdb, 0x33, 0x36, 0xa2, 0xbe, 0x18, 0x1c, 0x2d, 0xd8,
+ 0x28, 0x41, 0x73, 0x18, 0x5b, 0x0e, 0x0c, 0xee, 0xe7, 0x9f, 0x41, 0x5a,
+ 0xff, 0xb9, 0xd3, 0x1c, 0xdd, 0xcf, 0xc0, 0x47, 0x7f, 0x06, 0x5a, 0xfc,
+ 0x99, 0x01, 0x24, 0x7e, 0xbe, 0x46, 0x23, 0x0c, 0xfa, 0x88, 0xca, 0x09,
+ 0xc6, 0x27, 0xb0, 0x9a, 0x5b, 0xb7, 0xa1, 0x33, 0xac, 0x2a, 0x27, 0x80,
+ 0x78, 0x26, 0x1a, 0x76, 0xc8, 0x87, 0x57, 0x94, 0x73, 0xd2, 0x60, 0xf7,
+ 0x16, 0xd3, 0x99, 0xd8, 0x0a, 0x98, 0x56, 0x89, 0x0b, 0x30, 0x36, 0x79,
+ 0xb4, 0xf1, 0xbb, 0x0d, 0x87, 0xb2, 0xba, 0x21, 0xf3, 0x64, 0x91, 0xb2,
+ 0x30, 0x4c, 0x02, 0x5d, 0xe6, 0xe4, 0x2b, 0x2a, 0x24, 0x29, 0x19, 0x80,
+ 0x38, 0x82, 0xc8, 0x17, 0x4f, 0xce, 0xd0, 0x67, 0xca, 0xa0, 0x1d, 0xb9,
+ 0x35, 0xed, 0x20, 0x76, 0xc9, 0xfc, 0xea, 0xae, 0xc4, 0xeb, 0x52, 0xc6,
+ 0x63, 0xc4, 0x65, 0x1c, 0x62, 0x30, 0x14, 0x54, 0x99, 0x21, 0xef, 0x31,
+ 0x3e, 0x42, 0x66, 0x10, 0x64, 0x88, 0x86, 0x8b, 0xc2, 0x58, 0x36, 0xe2,
+ 0x0d, 0x13, 0x79, 0x41, 0x3c, 0x92, 0xb8, 0x65, 0x4b, 0xaa, 0xaa, 0xcd,
+ 0xc1, 0xf2, 0xba, 0x73, 0x1c, 0x08, 0xb9, 0x9b, 0xf5, 0x65, 0xf1, 0x72,
+ 0x11, 0x5b, 0x47, 0xc6, 0x5d, 0xe3, 0x03, 0x6c, 0x7b, 0x6f, 0xee, 0x55,
+ 0x6a, 0x50, 0x97, 0x74, 0x1e, 0x98, 0x97, 0x66, 0x5d, 0xfc, 0x71, 0x4c,
+ 0x28, 0xe6, 0x73, 0x46, 0x1e, 0x47, 0xf2, 0xa0, 0x50, 0xbc, 0x3b, 0x44,
+ 0xe9, 0x98, 0x4f, 0x3c, 0xde, 0x2b, 0x79, 0x47, 0x8a, 0xdd, 0x8a, 0x87,
+ 0x1d, 0x11, 0xb0, 0x6f, 0x66, 0x82, 0x51, 0xdc, 0xcf, 0xc9, 0x73, 0x32,
+ 0xa4, 0xa0, 0x3e, 0x8e, 0x1c, 0x55, 0xbc, 0x8f, 0x80, 0x45, 0x06, 0xa5,
+ 0x0b, 0x4f, 0x41, 0xc0, 0xf1, 0x7c, 0xcd, 0x20, 0xae, 0x9e, 0x9a, 0xd0,
+ 0xf1, 0xb4, 0x89, 0xdf, 0xc1, 0x0c, 0x62, 0xbd, 0x43, 0x23, 0xd1, 0xdb,
+ 0x62, 0xff, 0xa9, 0xca, 0x88, 0x16, 0x42, 0x33, 0xcd, 0x47, 0xa4, 0x5b,
+ 0xe7, 0x6e, 0x6d, 0xfa, 0x06, 0x14, 0xfd, 0x04, 0x9e, 0xc2, 0x41, 0x21,
+ 0xc3, 0x12, 0x64, 0xe7, 0xc8, 0x8f, 0x27, 0x8c, 0x93, 0x4b, 0x34, 0xe2,
+ 0x7c, 0x8d, 0xa8, 0x62, 0x98, 0x5a, 0x87, 0x7f, 0x6d, 0xef, 0xf6, 0x76,
+ 0x42, 0x33, 0xc0, 0x55, 0x17, 0x00, 0x25, 0x71, 0xae, 0xe1, 0xda, 0x56,
+ 0x79, 0xbe, 0x7a, 0x8c, 0xbc, 0x2c, 0x70, 0xf5, 0xcd, 0xa1, 0x87, 0xf0,
+ 0x68, 0xe2, 0xb3, 0xe6, 0x27, 0x64, 0x59, 0x81, 0x5e, 0xbe, 0x36, 0x50,
+ 0xb9, 0xb3, 0x9c, 0x10, 0x98, 0x40, 0x56, 0x9a, 0x4c, 0x6a, 0xa0, 0xdb,
+ 0x9d, 0x96, 0xf5, 0x9e, 0x51, 0x2a, 0x5a, 0xda, 0x5c, 0xf6, 0x26, 0x92,
+ 0x94, 0x09, 0xce, 0xc4, 0xc5, 0x9f, 0x49, 0x00, 0x05, 0xd0, 0xc7, 0xa6,
+ 0x24, 0x23, 0x60, 0x3e, 0x80, 0x48, 0xfe, 0x2c, 0x5b, 0x6e, 0x71, 0xea,
+ 0x2a, 0x83, 0xbe, 0x25, 0x2d, 0x3e, 0x06, 0xe7, 0xb8, 0xda, 0x60, 0xea,
+ 0x8c, 0x7c, 0x81, 0x24, 0x5a, 0x74, 0x11, 0x30, 0x7a, 0xc6, 0x1e, 0x4d,
+ 0x73, 0x46, 0x43, 0xbe, 0x78, 0x14, 0xec, 0x59, 0x72, 0xd1, 0xa6, 0x6b,
+ 0x6d, 0x67, 0x25, 0x8f, 0x46, 0x5c, 0x7f, 0x7a, 0xef, 0x2b, 0x43, 0xf6,
+ 0x62, 0xb9, 0x08, 0xd7, 0x5d, 0x01, 0x25, 0x48, 0xb1, 0xf2, 0x88, 0x7b,
+ 0x77, 0x2b, 0xea, 0xfc, 0x7f, 0x28, 0x58, 0xfc, 0xc5, 0xd9, 0xab, 0x93,
+ 0xed, 0x1e, 0x2e, 0x4e, 0x31, 0xf4, 0x88, 0x62, 0x0f, 0x1f, 0xfb, 0xf1,
+ 0xd9, 0xf7, 0xef, 0x8e, 0xcf, 0x5e, 0x3f, 0x7f, 0xf9, 0x7d, 0xfd, 0xe1,
+ 0x68, 0xd3, 0xcd, 0x4e, 0xd9, 0xef, 0xed, 0x6c, 0x35, 0x5f, 0xdf, 0xc7,
+ 0xd7, 0x97, 0x76, 0xf0, 0x68, 0x4b, 0x83, 0x2d, 0x0f, 0xa2, 0xce, 0xef,
+ 0xdf, 0xf6, 0x4f, 0xde, 0x9c, 0xbf, 0x39, 0x43, 0x68, 0xca, 0xdf, 0xff,
+ 0xdc, 0xf6, 0xca, 0xe3, 0xda, 0x2b, 0x47, 0xe7, 0xe7, 0xcf, 0x8e, 0x2e,
+ 0x8e, 0xda, 0x1f, 0x7f, 0xd2, 0xde, 0xc3, 0xd1, 0x1c, 0x61, 0x41, 0x39,
+ 0x10, 0xe6, 0x19, 0xd0, 0x5c, 0x6b, 0x1b, 0x4f, 0xb7, 0x80, 0x1f, 0xce,
+ 0x62, 0xd3, 0x0e, 0x5a, 0x38, 0x2e, 0xd3, 0x6a, 0x7e, 0xb3, 0xc8, 0x46,
+ 0x9c, 0x99, 0x2d, 0x9a, 0xc8, 0x55, 0xae, 0x11, 0xe5, 0x68, 0xc0, 0x6d,
+ 0x36, 0xf3, 0xe5, 0x16, 0x5c, 0x08, 0x3a, 0x9a, 0xae, 0x44, 0xe3, 0xe3,
+ 0xbb, 0x24, 0xd4, 0x4b, 0xe7, 0x9a, 0x67, 0x29, 0xe6, 0x44, 0xb9, 0x64,
+ 0x43, 0x91, 0xa6, 0x8c, 0x09, 0x38, 0x42, 0x61, 0x3f, 0xbf, 0x46, 0xb6,
+ 0x8b, 0x0c, 0xcf, 0x52, 0x6d, 0x6e, 0xef, 0x15, 0x0d, 0x74, 0x57, 0x3b,
+ 0xf3, 0x04, 0x4e, 0x8c, 0xd7, 0xdc, 0x70, 0x51, 0xe9, 0x09, 0x20, 0x12,
+ 0x1a, 0x05, 0x6e, 0x33, 0x83, 0xd5, 0x89, 0x22, 0x93, 0xde, 0x41, 0x2c,
+ 0x00, 0x28, 0x85, 0xe2, 0xe5, 0xa6, 0x56, 0x40, 0x10, 0x05, 0x74, 0x56,
+ 0x81, 0xb0, 0xa0, 0x77, 0xfc, 0x55, 0x57, 0x51, 0x8f, 0x18, 0xa4, 0x8c,
+ 0xaf, 0xb7, 0xbc, 0x98, 0x52, 0x00, 0xe7, 0x19, 0x05, 0xce, 0x6b, 0x7e,
+ 0x00, 0xc3, 0xaf, 0xb5, 0x44, 0x19, 0xbb, 0x47, 0x44, 0x9a, 0x26, 0x43,
+ 0x76, 0x00, 0x49, 0x40, 0x0e, 0xd7, 0xa7, 0x03, 0x12, 0x70, 0x2f, 0xf2,
+ 0xb5, 0x03, 0x6b, 0xff, 0xd1, 0xb5, 0xfc, 0xa8, 0xae, 0xdf, 0x0b, 0xa2,
+ 0x00, 0x0c, 0x11, 0x25, 0xeb, 0xc3, 0xb1, 0x94, 0x02, 0x49, 0x26, 0x02,
+ 0x85, 0xe6, 0xd9, 0xea, 0x5e, 0x25, 0xb7, 0xd9, 0x74, 0x31, 0xa5, 0x59,
+ 0xe1, 0xa4, 0xe4, 0x31, 0xc1, 0x82, 0x26, 0x27, 0x05, 0xc7, 0x73, 0xd2,
+ 0xc0, 0x37, 0xca, 0xc8, 0xb1, 0xd8, 0x85, 0xee, 0x49, 0x90, 0x2a, 0x7a,
+ 0x26, 0x3e, 0x4c, 0x91, 0x69, 0xa6, 0x59, 0x55, 0x36, 0xac, 0x7d, 0x20,
+ 0xde, 0x24, 0x18, 0xfa, 0x06, 0xd3, 0xd1, 0x08, 0x57, 0x17, 0x3b, 0xba,
+ 0x06, 0x21, 0x2d, 0xf2, 0xa8, 0x93, 0x84, 0x92, 0x16, 0x59, 0x3e, 0x32,
+ 0x81, 0x0f, 0x9a, 0xb6, 0x1a, 0xc5, 0xec, 0x9a, 0x22, 0x9b, 0x7f, 0xc8,
+ 0x98, 0x96, 0xde, 0x62, 0x1a, 0x72, 0xd4, 0xa7, 0xb4, 0x77, 0xcd, 0x28,
+ 0x79, 0xda, 0xdb, 0xdf, 0x43, 0x8c, 0xd3, 0x5a, 0x18, 0x04, 0x23, 0x6d,
+ 0xa3, 0x9d, 0x22, 0x9b, 0x2a, 0xa0, 0x54, 0xd9, 0x12, 0xda, 0xd9, 0x58,
+ 0x74, 0x81, 0x93, 0x14, 0xad, 0x6f, 0x99, 0xd9, 0xaf, 0x19, 0x9e, 0x7c,
+ 0x6f, 0x88, 0x97, 0x72, 0x09, 0x55, 0xd5, 0xc6, 0xb2, 0xb7, 0x13, 0x24,
+ 0xac, 0xfb, 0xbd, 0xbc, 0xdf, 0xdb, 0x7d, 0xb4, 0x1e, 0x5d, 0x12, 0x0e,
+ 0xd5, 0x34, 0xb9, 0xa5, 0x26, 0x82, 0x84, 0x99, 0x47, 0x87, 0x2f, 0xce,
+ 0xfa, 0x17, 0xbb, 0x07, 0xe7, 0x67, 0x6f, 0xe0, 0x5f, 0xfc, 0x7d, 0x8f,
+ 0x7e, 0xdf, 0xfb, 0xa6, 0xd9, 0x2c, 0xc1, 0xc3, 0x27, 0x91, 0x41, 0x8b,
+ 0x20, 0xd9, 0x90, 0xce, 0xbe, 0xe8, 0x98, 0x4e, 0x43, 0xa8, 0xd2, 0x64,
+ 0x28, 0x9e, 0x0f, 0x0d, 0x2a, 0x51, 0x93, 0x32, 0x9d, 0xae, 0x34, 0xd8,
+ 0x5f, 0x8d, 0x8f, 0x6e, 0xde, 0x42, 0x56, 0xa9, 0x1c, 0x2b, 0xe0, 0x70,
+ 0x8a, 0x3d, 0xd7, 0x34, 0x9f, 0x30, 0xca, 0x97, 0x00, 0x44, 0xb0, 0x65,
+ 0x07, 0x6e, 0x73, 0x8c, 0x01, 0xaf, 0x7f, 0x35, 0x9c, 0x80, 0x86, 0x95,
+ 0x62, 0x24, 0xe6, 0x28, 0x15, 0xae, 0x31, 0xf1, 0x61, 0x8c, 0x49, 0x17,
+ 0x63, 0xfc, 0x89, 0x82, 0x71, 0x84, 0x1b, 0x23, 0xa3, 0xa3, 0xa4, 0xde,
+ 0x6d, 0x18, 0x4f, 0x42, 0xd0, 0xad, 0x8a, 0x9a, 0xd4, 0x6c, 0x8e, 0x32,
+ 0x70, 0x5c, 0xd3, 0xba, 0xe2, 0x60, 0xbf, 0x3e, 0xbb, 0x88, 0x12, 0xb2,
+ 0x0a, 0xf1, 0x52, 0x62, 0xea, 0x26, 0x72, 0xe8, 0x6d, 0xb2, 0x6f, 0xc9,
+ 0xa9, 0x0f, 0xca, 0x1f, 0xc4, 0x35, 0x2f, 0x4e, 0xfb, 0xdb, 0x68, 0x58,
+ 0xe7, 0x60, 0xf7, 0xfe, 0xeb, 0x97, 0xdd, 0x9a, 0xc7, 0xce, 0x0d, 0x1c,
+ 0xdd, 0x42, 0x05, 0x54, 0x8a, 0x64, 0x34, 0xd7, 0xce, 0xb9, 0x55, 0x0d,
+ 0x1e, 0x76, 0x2f, 0xea, 0xd0, 0x86, 0x76, 0x18, 0x8b, 0xa4, 0x43, 0xfb,
+ 0xda, 0x61, 0x60, 0x0a, 0xd2, 0x4f, 0x69, 0xbc, 0x08, 0x72, 0x7f, 0xe7,
+ 0x63, 0x3e, 0x91, 0xb9, 0x0e, 0x31, 0x43, 0xf1, 0x82, 0xe8, 0xa0, 0x72,
+ 0x88, 0x13, 0xa3, 0x49, 0x75, 0xa4, 0xe1, 0x3d, 0x6e, 0x98, 0xda, 0x85,
+ 0xdf, 0xb1, 0x59, 0x22, 0xda, 0x41, 0x30, 0xec, 0x87, 0xfa, 0xb1, 0x4d,
+ 0x9b, 0xb6, 0x61, 0x60, 0xe4, 0x9c, 0xe5, 0xa7, 0x94, 0x38, 0x90, 0x2d,
+ 0xc2, 0x74, 0xb3, 0x4b, 0x0c, 0xad, 0xf2, 0xc2, 0x16, 0xcd, 0x40, 0x9a,
+ 0x14, 0x7e, 0x04, 0x52, 0x2d, 0x7c, 0xdb, 0x71, 0x2c, 0x3a, 0x95, 0x97,
+ 0x28, 0x48, 0xe9, 0x2b, 0x85, 0xaa, 0x91, 0x3a, 0x20, 0x64, 0x9b, 0x55,
+ 0x40, 0x83, 0x2a, 0x59, 0xb5, 0x43, 0x09, 0xdd, 0xf8, 0xc1, 0x15, 0xdc,
+ 0x41, 0x0f, 0x12, 0x55, 0x33, 0x10, 0x10, 0x68, 0x51, 0xfd, 0xc9, 0x79,
+ 0xde, 0x6c, 0x8e, 0xcb, 0xf0, 0xe0, 0xd5, 0x81, 0xf1, 0xf8, 0xe8, 0xfd,
+ 0xdf, 0xdd, 0x7b, 0xda, 0xdb, 0x81, 0xff, 0x83, 0x7d, 0x11, 0x6b, 0x11,
+ 0xd5, 0xfd, 0xb0, 0xd5, 0x1d, 0xcc, 0x93, 0x0e, 0x06, 0x9d, 0x0b, 0x45,
+ 0xd7, 0xcb, 0x8b, 0xcb, 0x4e, 0xf8, 0xba, 0x55, 0xfe, 0xf0, 0x49, 0xaf,
+ 0x5c, 0xed, 0xc4, 0xe1, 0x66, 0x07, 0x8f, 0x1e, 0xed, 0x1f, 0xe8, 0xdf,
+ 0x70, 0x94, 0x0e, 0xbe, 0x84, 0x0f, 0x3e, 0x04, 0xd7, 0xe7, 0x05, 0x32,
+ 0x41, 0x86, 0x0d, 0xa8, 0x87, 0xf3, 0x7e, 0x55, 0x33, 0xc6, 0x37, 0x01,
+ 0x17, 0xa2, 0xc3, 0x7c, 0x3c, 0x86, 0x4b, 0xa1, 0x79, 0x41, 0x1f, 0xcb,
+ 0x23, 0xdb, 0x6f, 0xa4, 0x44, 0x96, 0x49, 0x7f, 0xae, 0x57, 0x72, 0xa0,
+ 0xf0, 0x6e, 0x97, 0x3d, 0x72, 0x73, 0xbd, 0x50, 0x56, 0x65, 0xed, 0x09,
+ 0x1b, 0xc5, 0x87, 0xcb, 0x82, 0xbc, 0xb3, 0x09, 0xb8, 0xba, 0x04, 0x1e,
+ 0xab, 0x7c, 0x9f, 0xcd, 0xe7, 0xa8, 0x2a, 0x51, 0x59, 0x1c, 0x3c, 0x21,
+ 0x26, 0x5a, 0x81, 0x82, 0x66, 0x18, 0xcb, 0x5d, 0x42, 0xfa, 0x09, 0xdb,
+ 0x40, 0xa3, 0x1a, 0x06, 0xe9, 0xd8, 0xf7, 0xb9, 0x67, 0x3c, 0x1a, 0x17,
+ 0x56, 0x56, 0xe2, 0x9e, 0x46, 0x08, 0x21, 0x3b, 0x4b, 0x84, 0x9b, 0x8d,
+ 0x1d, 0xdc, 0x45, 0x81, 0xb9, 0xe9, 0x06, 0x18, 0x8d, 0xc5, 0xfc, 0x30,
+ 0x74, 0xd3, 0x7f, 0xf9, 0xdf, 0x27, 0xb6, 0x74, 0x85, 0xa9, 0x0d, 0xc1,
+ 0xe9, 0xbd, 0xa1, 0x5c, 0xee, 0xa8, 0x13, 0x1f, 0x47, 0x31, 0xe1, 0x6a,
+ 0x3b, 0x31, 0x6d, 0x79, 0xc3, 0xa1, 0x41, 0xf2, 0x3d, 0xdd, 0xfe, 0xa4,
+ 0x9e, 0x6e, 0x23, 0xf6, 0x9e, 0x7f, 0x07, 0x49, 0x95, 0x33, 0x5e, 0x6c,
+ 0x83, 0x73, 0x81, 0x67, 0xb1, 0x12, 0x14, 0x16, 0x37, 0xd5, 0x96, 0x95,
+ 0xf8, 0xed, 0x6c, 0x86, 0xaa, 0x3c, 0x45, 0x91, 0x79, 0x39, 0xa8, 0x8a,
+ 0xf8, 0xc4, 0x80, 0xa3, 0x8b, 0x16, 0x78, 0x04, 0x97, 0xca, 0xee, 0xe3,
+ 0x91, 0xfc, 0xb0, 0x38, 0xe5, 0x36, 0xe1, 0x04, 0x56, 0xf1, 0xfe, 0xc2,
+ 0xc8, 0x71, 0xf4, 0x68, 0x67, 0x67, 0xbd, 0x53, 0x68, 0x11, 0x4d, 0x9c,
+ 0x53, 0x36, 0xe4, 0x53, 0x86, 0xd5, 0xe7, 0xe2, 0x5f, 0x93, 0x82, 0xbd,
+ 0x08, 0xad, 0x28, 0x74, 0x5b, 0xd6, 0x88, 0x86, 0x69, 0xac, 0xe4, 0xb6,
+ 0x26, 0x6a, 0x35, 0x78, 0xb5, 0xba, 0xfb, 0x6c, 0xb1, 0x4b, 0x48, 0xf8,
+ 0xa4, 0xd2, 0x76, 0x4d, 0x6e, 0xe7, 0x01, 0xc6, 0x19, 0xd8, 0xa2, 0x1e,
+ 0x46, 0x29, 0x98, 0xca, 0x21, 0x94, 0x90, 0x21, 0x6d, 0x28, 0x3a, 0x7a,
+ 0xe6, 0x49, 0x1b, 0xd9, 0x2c, 0x66, 0x3c, 0x36, 0x7d, 0x96, 0x82, 0x29,
+ 0xb0, 0xf0, 0x90, 0x1c, 0x0f, 0xa6, 0x18, 0xb6, 0x33, 0x54, 0x8a, 0x98,
+ 0x41, 0x18, 0x3c, 0xd8, 0x6d, 0x10, 0x9c, 0xbf, 0xc7, 0x85, 0x4d, 0x4c,
+ 0xe7, 0xa8, 0xa2, 0xbd, 0x9f, 0xe5, 0x37, 0x33, 0x74, 0x65, 0xb1, 0x37,
+ 0xca, 0x54, 0xf0, 0x62, 0x7b, 0x5a, 0x95, 0xce, 0x82, 0x99, 0xf4, 0x7c,
+ 0xa0, 0xcd, 0xb3, 0xf2, 0xa8, 0x63, 0xba, 0x7b, 0x9d, 0x56, 0x12, 0x82,
+ 0xca, 0x83, 0xd7, 0xec, 0x78, 0x4a, 0xb0, 0x7f, 0x39, 0xf6, 0x11, 0xfa,
+ 0x89, 0x02, 0xd5, 0x75, 0xc1, 0x57, 0x0b, 0xc7, 0xf0, 0x70, 0xa9, 0x17,
+ 0x34, 0xc5, 0x77, 0xe1, 0x60, 0x76, 0xd4, 0x2f, 0xc0, 0x33, 0x08, 0xb3,
+ 0x28, 0x1d, 0x8e, 0xad, 0xc8, 0x12, 0x4e, 0x66, 0x31, 0xa5, 0x16, 0xd9,
+ 0x0b, 0xe4, 0x86, 0xc3, 0x11, 0x22, 0x38, 0xc5, 0xaa, 0x9a, 0xde, 0x34,
+ 0x70, 0x31, 0x10, 0x14, 0xed, 0x80, 0x26, 0x61, 0x28, 0x6e, 0x31, 0x52,
+ 0xd3, 0x8f, 0x0e, 0x14, 0xae, 0x05, 0xb1, 0x9e, 0xdd, 0x24, 0x44, 0x69,
+ 0xa6, 0xfd, 0x50, 0xf6, 0xa9, 0x13, 0x29, 0xaf, 0xa4, 0x6c, 0x21, 0x75,
+ 0x43, 0x7e, 0xd0, 0xd4, 0x10, 0x49, 0x84, 0x24, 0xef, 0xd4, 0xc1, 0x11,
+ 0x08, 0x25, 0x82, 0xaa, 0x35, 0xab, 0xc2, 0x6b, 0x78, 0x73, 0x95, 0x7b,
+ 0xc6, 0x7d, 0x2e, 0x1b, 0x59, 0x87, 0xdb, 0xc2, 0x96, 0x30, 0x25, 0x88,
+ 0x1c, 0x1e, 0xd7, 0x94, 0x6d, 0xc4, 0xa2, 0x23, 0xca, 0x12, 0xe4, 0x1c,
+ 0x85, 0xf7, 0x26, 0x69, 0x42, 0x99, 0xdf, 0x21, 0xf0, 0x32, 0x98, 0x04,
+ 0x70, 0x9d, 0x41, 0x5e, 0x1a, 0x92, 0x41, 0xe8, 0xa8, 0x04, 0x96, 0xa2,
+ 0xa0, 0xcb, 0x42, 0x60, 0xb3, 0xb5, 0x14, 0x9e, 0x22, 0xfa, 0xf8, 0xcc,
+ 0x9d, 0x24, 0xe2, 0xeb, 0x0c, 0x81, 0xe0, 0x80, 0x4e, 0x40, 0xf6, 0x41,
+ 0x3f, 0x01, 0x11, 0x0f, 0x35, 0xc8, 0x80, 0xd8, 0x57, 0x54, 0xeb, 0x51,
+ 0xd0, 0xe2, 0xe0, 0x20, 0x5e, 0x61, 0x2c, 0x7d, 0x99, 0x55, 0x8b, 0xe0,
+ 0x99, 0x68, 0x8b, 0xf4, 0xb1, 0xfc, 0xa3, 0xae, 0xdc, 0xad, 0x0c, 0xe9,
+ 0xf8, 0x88, 0xec, 0x73, 0xc8, 0xf1, 0x53, 0x31, 0x19, 0x73, 0xdb, 0x2c,
+ 0x06, 0xf7, 0x7b, 0x33, 0x1e, 0x90, 0xcd, 0x3f, 0xe6, 0xb2, 0xa9, 0x6b,
+ 0x31, 0xd9, 0x81, 0xe5, 0xa7, 0x0e, 0x97, 0x75, 0x3e, 0x8d, 0x0e, 0x91,
+ 0x73, 0xfc, 0xcf, 0x0a, 0x36, 0x7b, 0x9e, 0x88, 0xe7, 0xdf, 0x05, 0xbd,
+ 0x26, 0x00, 0x1a, 0xb9, 0xae, 0x15, 0x49, 0x81, 0xdb, 0x54, 0x69, 0xea,
+ 0x65, 0x28, 0xff, 0x80, 0x3c, 0xf9, 0xb0, 0xa0, 0x93, 0x3b, 0xdb, 0xa2,
+ 0x83, 0x10, 0x63, 0xca, 0x32, 0xd9, 0x22, 0x56, 0xa6, 0x8b, 0xa6, 0xd9,
+ 0xb6, 0xd3, 0x07, 0x55, 0x8a, 0xfb, 0xc4, 0x58, 0x7f, 0x5b, 0xcc, 0x30,
+ 0x12, 0x7e, 0x28, 0x18, 0x00, 0xcc, 0x12, 0xc9, 0xc9, 0x29, 0x8a, 0x00,
+ 0x33, 0xb3, 0x66, 0x73, 0x58, 0x43, 0x77, 0xf7, 0xeb, 0xbf, 0x1d, 0x9d,
+ 0xbe, 0x3d, 0xd9, 0xfd, 0x53, 0x14, 0xe1, 0x9f, 0x7b, 0xfc, 0xe7, 0x5e,
+ 0x47, 0x95, 0x4f, 0x61, 0x17, 0xbc, 0x57, 0x06, 0x14, 0x80, 0xc6, 0x10,
+ 0x44, 0x41, 0x54, 0x34, 0x1e, 0x52, 0x0d, 0xb8, 0x1c, 0x92, 0x2d, 0x5e,
+ 0x44, 0x93, 0x02, 0x1a, 0x33, 0x68, 0x56, 0x2a, 0xf4, 0x6f, 0x96, 0x5b,
+ 0x21, 0xeb, 0x85, 0x4d, 0xa1, 0x53, 0x35, 0x97, 0xa3, 0x2d, 0x08, 0xb7,
+ 0x71, 0xb4, 0x48, 0x45, 0xd0, 0x71, 0x30, 0x73, 0xba, 0x62, 0x55, 0xf6,
+ 0xfc, 0xa5, 0x8a, 0xa6, 0x5e, 0x3a, 0xc0, 0xe9, 0x74, 0x24, 0xee, 0x84,
+ 0x87, 0xc2, 0x7f, 0x97, 0x69, 0xa5, 0x23, 0xa7, 0x7d, 0xc5, 0x94, 0x08,
+ 0x72, 0x63, 0x87, 0x0e, 0x1e, 0x5c, 0x42, 0x1b, 0x5f, 0x6f, 0x44, 0xe5,
+ 0xdd, 0x74, 0x90, 0x4f, 0x4c, 0x44, 0x87, 0x10, 0x86, 0x4d, 0xe3, 0xe0,
+ 0xbc, 0x07, 0x83, 0xe1, 0x28, 0x4e, 0x37, 0x3f, 0x59, 0x22, 0xb1, 0x1e,
+ 0x31, 0x8d, 0x10, 0x70, 0x71, 0x84, 0x2a, 0xc2, 0x8e, 0xd3, 0xfb, 0x89,
+ 0x22, 0x05, 0x2e, 0x5a, 0x13, 0x1c, 0xe8, 0x2c, 0x28, 0xd3, 0x2e, 0x03,
+ 0xb7, 0x02, 0x8b, 0x0e, 0x34, 0x6f, 0xd7, 0xcf, 0x46, 0x97, 0x41, 0x16,
+ 0x88, 0x37, 0xa1, 0x72, 0x22, 0xa6, 0x48, 0x2e, 0xbf, 0x2d, 0x19, 0x03,
+ 0x88, 0xcd, 0x7a, 0xa7, 0xa8, 0x8e, 0xb8, 0x37, 0x7a, 0xad, 0xd2, 0xac,
+ 0xf1, 0xdd, 0x66, 0x73, 0x03, 0x91, 0x93, 0x5d, 0x28, 0x76, 0xb5, 0xb7,
+ 0x1a, 0x10, 0x96, 0xa2, 0x56, 0xb6, 0x8d, 0xbc, 0x38, 0x5a, 0x4d, 0xc4,
+ 0xe3, 0xb3, 0x1a, 0xb8, 0x4a, 0x50, 0x5d, 0xe4, 0x1b, 0xe9, 0x59, 0x27,
+ 0xea, 0xc4, 0x62, 0x78, 0x91, 0xfa, 0x40, 0x11, 0xa4, 0x30, 0x1f, 0xd0,
+ 0x4f, 0x36, 0xe1, 0x86, 0xf6, 0x1c, 0xd0, 0x36, 0xa8, 0x46, 0xf7, 0x4c,
+ 0xfd, 0x8f, 0xb6, 0x24, 0xc8, 0x12, 0xaf, 0xa3, 0x81, 0xfe, 0x91, 0xac,
+ 0xaa, 0xdc, 0x19, 0x87, 0x89, 0xfc, 0x10, 0x79, 0x80, 0x9b, 0xe1, 0x23,
+ 0x8b, 0x49, 0xfd, 0x13, 0x07, 0xbb, 0x5b, 0xad, 0x42, 0xc8, 0x73, 0x14,
+ 0xe4, 0x0d, 0x23, 0xd7, 0x0c, 0x03, 0x80, 0xfe, 0xef, 0x26, 0xe9, 0x96,
+ 0x2a, 0xba, 0x2a, 0xc2, 0x6c, 0xbf, 0xca, 0x7f, 0x83, 0xc1, 0x27, 0xe1,
+ 0x23, 0xea, 0x0a, 0x36, 0xad, 0x23, 0xb7, 0xda, 0xbe, 0x44, 0xdd, 0x08,
+ 0xed, 0xd4, 0xac, 0x3c, 0x54, 0xe9, 0x96, 0x6a, 0x98, 0xbd, 0x66, 0x11,
+ 0xcd, 0xcb, 0x66, 0x40, 0xa6, 0xe1, 0xc9, 0x67, 0x8e, 0x95, 0x8c, 0x4c,
+ 0xcb, 0xd1, 0x45, 0x2e, 0x71, 0xb7, 0x86, 0xba, 0x84, 0xc7, 0x04, 0x74,
+ 0x70, 0x73, 0xcb, 0xb5, 0x8b, 0x17, 0x2e, 0x96, 0xb9, 0xb3, 0x56, 0xee,
+ 0x8e, 0x70, 0x3d, 0x18, 0x27, 0x49, 0x8d, 0xb3, 0x2e, 0x46, 0x5e, 0xe2,
+ 0x1d, 0xa1, 0x83, 0x1b, 0xfc, 0x16, 0x47, 0x6a, 0xd1, 0x10, 0x6f, 0xe4,
+ 0x6d, 0x0c, 0x51, 0x4a, 0x8c, 0x9d, 0xe1, 0xc4, 0x59, 0x0a, 0x49, 0xfd,
+ 0xba, 0x3c, 0x64, 0xf5, 0xa0, 0x09, 0x27, 0xa3, 0x91, 0x84, 0x96, 0x11,
+ 0xf6, 0x12, 0x89, 0x17, 0xf2, 0x36, 0x46, 0x20, 0xda, 0x61, 0x8b, 0xa8,
+ 0xb7, 0x49, 0xc0, 0xb4, 0x9e, 0x19, 0x28, 0xa9, 0x74, 0x81, 0x19, 0x2e,
+ 0x12, 0xcd, 0x1b, 0x83, 0x98, 0x1b, 0x2a, 0x89, 0x30, 0xd8, 0x2b, 0x81,
+ 0x05, 0x51, 0x0f, 0xcc, 0xaa, 0x28, 0xa1, 0xf8, 0x90, 0x24, 0x21, 0xa2,
+ 0xc0, 0x48, 0xe5, 0x92, 0x2b, 0x65, 0x6a, 0xf5, 0xca, 0x68, 0x90, 0x53,
+ 0xde, 0x4f, 0x93, 0x90, 0x13, 0xeb, 0x46, 0x94, 0x42, 0x6c, 0x7e, 0x08,
+ 0xfc, 0x88, 0x8b, 0x55, 0x1b, 0x7d, 0x82, 0x44, 0xa2, 0x46, 0x11, 0x0c,
+ 0x2c, 0x34, 0x22, 0x85, 0x30, 0xa8, 0x27, 0x43, 0x7f, 0x21, 0x28, 0x5a,
+ 0x87, 0x28, 0x5c, 0x4f, 0x51, 0xad, 0x8e, 0x17, 0x1b, 0xa9, 0xa6, 0x01,
+ 0x82, 0x31, 0x4d, 0x7f, 0xb8, 0x51, 0xa7, 0x4d, 0x2c, 0x1a, 0xc8, 0x64,
+ 0x5b, 0x23, 0x9f, 0x57, 0xbf, 0x05, 0x02, 0xd2, 0x8a, 0x36, 0x5a, 0xc5,
+ 0xa1, 0xa6, 0x7a, 0x49, 0x06, 0xa0, 0x5f, 0xf1, 0xc3, 0x5f, 0x17, 0xb3,
+ 0xf7, 0xb1, 0x94, 0x10, 0x8a, 0x55, 0xee, 0x77, 0x2d, 0xe2, 0x74, 0x4f,
+ 0xc5, 0x70, 0x67, 0x96, 0x21, 0x57, 0xb4, 0xde, 0x75, 0xc0, 0x12, 0x7f,
+ 0x55, 0xbc, 0x45, 0xc3, 0xce, 0x6d, 0x8d, 0x12, 0x13, 0x0e, 0xe1, 0xd4,
+ 0x7d, 0x6d, 0xf2, 0x5b, 0xea, 0x48, 0x4e, 0xd8, 0x2c, 0x45, 0xf0, 0x8f,
+ 0x84, 0x4a, 0x96, 0xa1, 0x65, 0xcf, 0x41, 0x82, 0xc8, 0x60, 0x53, 0x8a,
+ 0xe1, 0x15, 0x81, 0x5a, 0xa1, 0x25, 0x31, 0x1d, 0xf1, 0x0d, 0xd8, 0xbc,
+ 0x0d, 0xf8, 0xfe, 0xe0, 0x56, 0x45, 0x86, 0x93, 0x46, 0x90, 0xe2, 0xf0,
+ 0x4e, 0x86, 0xef, 0x95, 0xb7, 0x79, 0xa3, 0x0d, 0x49, 0xdd, 0x14, 0x3a,
+ 0x79, 0x45, 0x71, 0x43, 0x93, 0xd2, 0x5e, 0x2d, 0xe6, 0x35, 0x7b, 0xc7,
+ 0x90, 0x81, 0x64, 0xe6, 0x54, 0x5e, 0x6b, 0x5e, 0x2e, 0xe8, 0xfb, 0x1e,
+ 0x7b, 0x83, 0x02, 0x11, 0x41, 0xc6, 0x85, 0xfa, 0x36, 0x9e, 0xac, 0x3b,
+ 0xc5, 0x97, 0xc5, 0x78, 0x5f, 0xe7, 0xd1, 0x16, 0x79, 0x5d, 0xa1, 0x67,
+ 0x9b, 0x84, 0x70, 0x2c, 0xfa, 0x14, 0xee, 0x22, 0xdd, 0xcd, 0x53, 0xb8,
+ 0x47, 0x78, 0xe6, 0x53, 0x34, 0xf7, 0xef, 0x3c, 0x7d, 0xbc, 0x83, 0xf7,
+ 0x27, 0x82, 0xe5, 0xf3, 0x7d, 0x22, 0x37, 0x00, 0xa5, 0x80, 0x78, 0xfe,
+ 0x24, 0x60, 0x5d, 0xba, 0x5d, 0x82, 0x91, 0xeb, 0xce, 0xe2, 0xc6, 0x96,
+ 0x73, 0x46, 0xbb, 0x16, 0xc2, 0x07, 0xc1, 0xcf, 0x2e, 0xd5, 0xe0, 0x8d,
+ 0xe3, 0x71, 0xe5, 0xad, 0xad, 0x43, 0x62, 0xcb, 0x83, 0x49, 0xed, 0x73,
+ 0x9f, 0x02, 0x53, 0x61, 0xc9, 0x28, 0x56, 0x19, 0x6c, 0x9d, 0x81, 0x19,
+ 0x6a, 0x30, 0x10, 0x26, 0xdb, 0x0f, 0x48, 0x76, 0xc0, 0x55, 0x72, 0x5b,
+ 0xe5, 0x5c, 0x07, 0x6e, 0x19, 0x3f, 0x09, 0x9c, 0x50, 0xec, 0x25, 0xa6,
+ 0xdd, 0x3c, 0xc4, 0x7f, 0x3d, 0x85, 0x86, 0x80, 0x85, 0x31, 0xe0, 0x1d,
+ 0x23, 0x06, 0xb6, 0xea, 0x81, 0x24, 0xea, 0xaf, 0x91, 0x4d, 0xe5, 0x4c,
+ 0x50, 0x2d, 0x7a, 0x19, 0x04, 0xb2, 0x71, 0xa2, 0xab, 0x6d, 0x84, 0xb2,
+ 0x53, 0x33, 0xb4, 0xe6, 0xa4, 0x44, 0x39, 0x9c, 0x8f, 0x20, 0x27, 0xab,
+ 0xf9, 0x06, 0x47, 0xbc, 0xfb, 0x58, 0x9a, 0xdc, 0xc0, 0xc1, 0x53, 0xe0,
+ 0x17, 0x41, 0x66, 0xda, 0xc0, 0x50, 0xb4, 0x17, 0x31, 0x0a, 0x2e, 0x7e,
+ 0x08, 0x9b, 0xde, 0x75, 0x20, 0x9c, 0x03, 0xae, 0x11, 0x8d, 0x3f, 0xd9,
+ 0x79, 0xf2, 0xe8, 0x51, 0xd8, 0x92, 0xa2, 0x78, 0x9c, 0xa4, 0xd7, 0x60,
+ 0x80, 0xe8, 0xb0, 0x02, 0x56, 0x23, 0x46, 0x65, 0x94, 0xc4, 0x45, 0x76,
+ 0x6f, 0x31, 0x56, 0x36, 0x97, 0xfd, 0xfe, 0xd8, 0x0a, 0x0f, 0xf6, 0xa7,
+ 0xae, 0x20, 0x40, 0x3b, 0x96, 0x9d, 0xa7, 0x4f, 0x9f, 0x46, 0xf1, 0x05,
+ 0x13, 0x21, 0x1f, 0x65, 0x3f, 0x4e, 0x7f, 0x96, 0xde, 0xdc, 0x9f, 0x04,
+ 0x97, 0x02, 0xb8, 0x0e, 0x8b, 0xc9, 0x98, 0xb1, 0xba, 0xa9, 0x38, 0x1e,
+ 0x57, 0x5d, 0xb9, 0x26, 0x48, 0xb0, 0xd3, 0xe7, 0x7c, 0xaf, 0x1f, 0xbf,
+ 0xc1, 0xdf, 0x32, 0x03, 0xa3, 0x4e, 0x98, 0x4c, 0xe9, 0x78, 0x31, 0xe1,
+ 0x54, 0xb2, 0x57, 0x7f, 0x6b, 0xe2, 0xdc, 0x6c, 0x9e, 0xf5, 0xb7, 0xf7,
+ 0xbf, 0xda, 0xd9, 0x0a, 0x24, 0xf7, 0x61, 0xfd, 0xbd, 0xc4, 0x71, 0x58,
+ 0xec, 0x04, 0x02, 0x76, 0xea, 0x8c, 0x03, 0x86, 0x77, 0xdf, 0xf8, 0x73,
+ 0xe1, 0x0f, 0x4d, 0x4d, 0xca, 0xe3, 0x16, 0x93, 0xf1, 0xfa, 0xbb, 0x04,
+ 0xc3, 0x80, 0x4d, 0x61, 0x21, 0x74, 0x8d, 0xb4, 0x89, 0xef, 0x04, 0x95,
+ 0x35, 0x4e, 0xca, 0x61, 0x96, 0x35, 0x17, 0x1e, 0x5b, 0x5b, 0x02, 0x6b,
+ 0xaa, 0x45, 0xe3, 0x45, 0x2c, 0x63, 0xc6, 0xec, 0xc0, 0x3d, 0x48, 0x2e,
+ 0xa5, 0x0b, 0x4c, 0xf4, 0x26, 0xc5, 0x22, 0xd3, 0x41, 0xd4, 0xc4, 0xd3,
+ 0xac, 0x14, 0x5b, 0x17, 0xaa, 0x7d, 0x2a, 0x37, 0x23, 0x46, 0x59, 0x3d,
+ 0x4f, 0x90, 0x1e, 0x49, 0xb8, 0xa4, 0xf2, 0x20, 0x0d, 0x85, 0x4c, 0x94,
+ 0x88, 0x8e, 0x4d, 0x69, 0x1b, 0x14, 0xc4, 0xd6, 0x66, 0xd2, 0x92, 0x09,
+ 0x7e, 0x2e, 0x3c, 0x2a, 0xe9, 0xbe, 0x48, 0x7f, 0x45, 0x93, 0xc1, 0x83,
+ 0xa0, 0xe5, 0x1c, 0xa8, 0x08, 0x86, 0xb7, 0xaa, 0x6d, 0xe0, 0xa2, 0xc0,
+ 0x02, 0xe3, 0x87, 0x26, 0x45, 0x85, 0xd2, 0xbe, 0xee, 0x83, 0x2f, 0xa7,
+ 0x5e, 0x52, 0xeb, 0xc0, 0xe7, 0xa6, 0xaa, 0x5c, 0xf2, 0x72, 0xb5, 0x56,
+ 0x62, 0xbf, 0x7f, 0xea, 0x71, 0x5b, 0x49, 0x66, 0x35, 0xfe, 0x79, 0x82,
+ 0x25, 0x48, 0x86, 0xa8, 0xf7, 0x93, 0xd2, 0x9e, 0x47, 0x98, 0xb1, 0xfe,
+ 0xe5, 0xa3, 0xbd, 0xbd, 0x6e, 0xf4, 0xb8, 0xb7, 0xeb, 0xe2, 0xcf, 0x25,
+ 0x13, 0x0f, 0x6e, 0x58, 0x92, 0x6b, 0x3c, 0x50, 0x3a, 0x74, 0x57, 0x39,
+ 0xb0, 0x74, 0x82, 0x44, 0x27, 0x91, 0xdf, 0x84, 0x52, 0x11, 0xc2, 0x9d,
+ 0xea, 0xfc, 0xb8, 0xf7, 0xf8, 0xf1, 0xee, 0x57, 0x07, 0xe7, 0xf1, 0xe3,
+ 0xbd, 0x5d, 0x04, 0xa5, 0x63, 0x95, 0xd4, 0xc6, 0x82, 0xd7, 0xe0, 0x0b,
+ 0xb2, 0x11, 0xdb, 0x7c, 0x26, 0x13, 0x4d, 0x8d, 0x6e, 0x36, 0x97, 0xcf,
+ 0xd3, 0x59, 0x59, 0x4e, 0xa2, 0xf2, 0x1d, 0x23, 0x7d, 0x6c, 0x97, 0xef,
+ 0xd8, 0xb2, 0xd6, 0x11, 0x1c, 0xb9, 0x2c, 0x80, 0x09, 0x64, 0x76, 0x46,
+ 0x2e, 0xaf, 0xc4, 0x20, 0x03, 0x08, 0x4e, 0x9c, 0xd9, 0x07, 0x36, 0x9c,
+ 0x34, 0xb1, 0xe1, 0x82, 0x41, 0xfa, 0x6a, 0x77, 0xe0, 0xeb, 0x60, 0xf3,
+ 0xe4, 0x78, 0x8b, 0x37, 0x4d, 0xf7, 0xd2, 0xa2, 0x45, 0xf0, 0x48, 0xbb,
+ 0x9c, 0xf8, 0xec, 0xdf, 0xbe, 0xb3, 0x7c, 0x46, 0x56, 0x10, 0x74, 0xb8,
+ 0xa3, 0xb3, 0x47, 0xe6, 0xc5, 0xf6, 0x42, 0x85, 0x7c, 0xae, 0xd7, 0x2c,
+ 0x6e, 0xc5, 0x08, 0xb3, 0xa8, 0x9f, 0x6e, 0xcc, 0x26, 0x4f, 0x5e, 0x8a,
+ 0x75, 0x71, 0x06, 0x3c, 0x55, 0x79, 0xf7, 0xa4, 0x6c, 0x5e, 0x5b, 0x0f,
+ 0x5b, 0x2e, 0x7c, 0x98, 0xa5, 0xd5, 0xcf, 0x75, 0x98, 0xb9, 0x7b, 0x26,
+ 0xaf, 0x75, 0x8f, 0xb1, 0x66, 0x6e, 0x36, 0x02, 0x45, 0xdd, 0xb3, 0x8c,
+ 0xa6, 0x57, 0x66, 0xd1, 0x6c, 0x5c, 0x6e, 0xb1, 0x29, 0x6b, 0x4a, 0x16,
+ 0x55, 0x34, 0x22, 0x18, 0xc2, 0x2c, 0xe1, 0x38, 0xc7, 0x78, 0xa4, 0xf5,
+ 0xf1, 0x02, 0xf4, 0xe8, 0xb4, 0xfe, 0xe9, 0x42, 0x0f, 0x9c, 0x4e, 0xbe,
+ 0x7d, 0x80, 0xd8, 0x4a, 0xaf, 0xa3, 0x59, 0x0f, 0x53, 0xfe, 0xe5, 0xcf,
+ 0x22, 0xb9, 0xd1, 0xba, 0x1f, 0xf8, 0x27, 0xf4, 0xc3, 0xd0, 0x03, 0xde,
+ 0xca, 0xf1, 0x7b, 0xab, 0x97, 0x0e, 0xab, 0x43, 0x4b, 0x9d, 0x52, 0x63,
+ 0xc8, 0x2b, 0x9b, 0xc6, 0x2a, 0x47, 0x13, 0x08, 0xa0, 0xff, 0x4b, 0xc5,
+ 0x77, 0x82, 0x1d, 0x2b, 0x73, 0x5c, 0xc1, 0x76, 0xa4, 0x13, 0xae, 0xfa,
+ 0x68, 0x4d, 0xf6, 0x46, 0x5f, 0x94, 0x84, 0x8e, 0x6f, 0xbb, 0x8a, 0x89,
+ 0x57, 0x39, 0x36, 0xbc, 0x24, 0x60, 0x70, 0x23, 0xa8, 0x02, 0x0a, 0xcf,
+ 0x8d, 0x64, 0x1a, 0x0a, 0xe8, 0xa1, 0xf1, 0xfc, 0x53, 0x04, 0x2d, 0x20,
+ 0xd9, 0x53, 0xca, 0x24, 0x62, 0x2c, 0x54, 0x37, 0xf2, 0x83, 0x54, 0x30,
+ 0xea, 0x4f, 0x4d, 0x3f, 0x20, 0xc6, 0xe1, 0x4e, 0xb3, 0x92, 0x30, 0x4c,
+ 0x8a, 0x22, 0x43, 0x7f, 0x6b, 0x91, 0x56, 0x8b, 0x42, 0x92, 0xd7, 0x31,
+ 0x69, 0x0d, 0x79, 0x03, 0x3b, 0xf8, 0x02, 0x77, 0xb1, 0x09, 0x4a, 0xa5,
+ 0x0c, 0x46, 0x42, 0x2f, 0x43, 0xcb, 0xba, 0xb7, 0x28, 0xa7, 0x58, 0xf6,
+ 0x50, 0x86, 0x56, 0xc3, 0x99, 0x64, 0x83, 0x28, 0xe3, 0x73, 0x70, 0x29,
+ 0x9e, 0xbc, 0x86, 0x8e, 0x48, 0x59, 0x2a, 0x21, 0xac, 0x4e, 0xb6, 0xf6,
+ 0x6e, 0xdf, 0xc6, 0x37, 0x37, 0x37, 0x31, 0x4a, 0x24, 0x96, 0x40, 0x46,
+ 0xbd, 0xc8, 0x03, 0xa0, 0x30, 0x1e, 0x8e, 0x2a, 0x14, 0x10, 0xe5, 0xe4,
+ 0xb1, 0x14, 0x83, 0xac, 0x22, 0x08, 0x20, 0xa1, 0x2a, 0x7a, 0x49, 0x98,
+ 0xab, 0x0c, 0x8a, 0x0c, 0x7a, 0xea, 0xbf, 0x0d, 0x2c, 0x8a, 0x9d, 0x11,
+ 0xc1, 0xfa, 0x0f, 0xab, 0x14, 0x81, 0xf3, 0xb0, 0xa6, 0xf6, 0x41, 0x14,
+ 0xbf, 0x88, 0x3a, 0xc7, 0x32, 0xe9, 0x0b, 0x78, 0xe4, 0xc0, 0x8d, 0x15,
+ 0xdb, 0xe6, 0x67, 0x83, 0xe5, 0xb8, 0x3b, 0xf7, 0xe0, 0xc8, 0xa1, 0x2a,
+ 0x65, 0x02, 0xbb, 0x35, 0x23, 0xe7, 0xbb, 0x85, 0x2a, 0x08, 0x65, 0xc3,
+ 0x60, 0xb6, 0x10, 0x7b, 0x32, 0xb8, 0xda, 0x0a, 0x4d, 0x3d, 0xc1, 0x18,
+ 0x51, 0x0d, 0xb3, 0x06, 0x9a, 0x5b, 0xcd, 0x6a, 0x64, 0xe1, 0x3e, 0x31,
+ 0xaf, 0x91, 0x5e, 0xbe, 0x35, 0x3e, 0x8f, 0x07, 0x30, 0x1c, 0x4f, 0x2a,
+ 0x36, 0x7c, 0x67, 0x19, 0x2f, 0xf1, 0x98, 0x49, 0xa9, 0x18, 0x57, 0x9c,
+ 0x88, 0xc4, 0x14, 0xb3, 0xa8, 0x6a, 0xe9, 0x7f, 0xc0, 0x65, 0xbc, 0xa3,
+ 0x88, 0xe9, 0x80, 0x06, 0x47, 0x27, 0x71, 0x31, 0xbc, 0xbe, 0x5d, 0x02,
+ 0x65, 0xe5, 0x8c, 0xf2, 0xd3, 0x19, 0x1d, 0x6d, 0x1f, 0x1d, 0x2c, 0x25,
+ 0x9c, 0x77, 0xd6, 0x88, 0xb2, 0xb5, 0xaf, 0x7e, 0x9b, 0x54, 0xf8, 0xff,
+ 0x6b, 0x96, 0x01, 0xb1, 0x04, 0x56, 0x0b, 0x2e, 0x0b, 0xdd, 0x99, 0xe6,
+ 0xc8, 0xaf, 0xc3, 0xfc, 0xbb, 0x86, 0x6b, 0x0a, 0xaf, 0xe1, 0x48, 0x05,
+ 0xd9, 0x38, 0xad, 0x94, 0x1a, 0x40, 0x99, 0xa1, 0xa0, 0x93, 0x5b, 0xe4,
+ 0xa0, 0x5a, 0x8d, 0x43, 0xdc, 0xef, 0x69, 0x81, 0x0c, 0x88, 0x30, 0x16,
+ 0x18, 0x1e, 0x27, 0x54, 0xbc, 0x0f, 0x6d, 0x5f, 0xe8, 0xc7, 0x38, 0xfe,
+ 0xfe, 0x25, 0xe5, 0x03, 0xc3, 0xe5, 0x3d, 0x53, 0xf9, 0x89, 0x47, 0x8f,
+ 0x92, 0xaa, 0x73, 0x15, 0x5c, 0x66, 0x16, 0xaf, 0x26, 0x99, 0xfa, 0xe6,
+ 0x76, 0x76, 0x52, 0x32, 0xf8, 0x8c, 0x49, 0x00, 0xe5, 0x54, 0x74, 0xe3,
+ 0x38, 0x55, 0x19, 0x3f, 0xb1, 0xf8, 0x13, 0xe1, 0xa5, 0xa2, 0xae, 0x55,
+ 0x0c, 0x67, 0xa7, 0x25, 0x9a, 0x75, 0xd8, 0x65, 0xdb, 0xc8, 0x8a, 0xb7,
+ 0x6c, 0xa4, 0xbc, 0x9b, 0x55, 0xc9, 0x6d, 0xea, 0x27, 0x8e, 0x49, 0xff,
+ 0x4d, 0x0a, 0x71, 0xa3, 0x51, 0x1a, 0xbe, 0x43, 0xb3, 0x76, 0xa9, 0xeb,
+ 0x29, 0x63, 0x64, 0x21, 0xf6, 0xa5, 0x27, 0x2d, 0xcd, 0xe1, 0xc4, 0xfe,
+ 0x2c, 0x99, 0xc3, 0x70, 0x8b, 0x91, 0x69, 0x40, 0x31, 0xe3, 0xdc, 0xa6,
+ 0x4c, 0x91, 0x6a, 0x4d, 0x30, 0x0d, 0x37, 0x47, 0x05, 0x7f, 0xbf, 0xe6,
+ 0xec, 0xd2, 0x6f, 0x23, 0xf1, 0xce, 0x62, 0x8e, 0xbf, 0x1b, 0x26, 0x48,
+ 0x57, 0x00, 0x0d, 0x9e, 0x21, 0x95, 0x70, 0x19, 0xc2, 0xcd, 0x71, 0xa8,
+ 0xaa, 0xb3, 0x7a, 0x4c, 0x6d, 0xc3, 0x04, 0x2d, 0xbd, 0x83, 0x14, 0x16,
+ 0xf2, 0xbf, 0x9a, 0x8b, 0xf7, 0xf5, 0xea, 0xd5, 0x5b, 0x73, 0xf1, 0x56,
+ 0xac, 0x1e, 0xd7, 0xa6, 0xd7, 0xcc, 0xd3, 0xaf, 0x1d, 0x8f, 0x34, 0xa5,
+ 0x1a, 0xb0, 0x6f, 0xc8, 0x78, 0xa6, 0x83, 0xbc, 0x1f, 0x29, 0xf4, 0xeb,
+ 0x8f, 0xb6, 0xeb, 0x44, 0x8d, 0x3a, 0xfa, 0x70, 0x73, 0x1c, 0x10, 0x38,
+ 0xab, 0xc3, 0x3c, 0x6a, 0x5d, 0xd4, 0x84, 0x81, 0x6b, 0xd2, 0x5b, 0x20,
+ 0xff, 0x8a, 0x49, 0x99, 0xce, 0x1e, 0x76, 0x17, 0x6e, 0x4e, 0x51, 0xad,
+ 0xc4, 0x7a, 0xee, 0xcd, 0xcf, 0xdc, 0x33, 0x2b, 0x27, 0x27, 0x6a, 0x1d,
+ 0x4d, 0x8f, 0xca, 0xf9, 0x71, 0xd9, 0x6a, 0x8d, 0xcd, 0x70, 0xe2, 0xd8,
+ 0x36, 0x7d, 0x47, 0xb9, 0x1e, 0x1f, 0xa9, 0xdd, 0x86, 0xb4, 0xa8, 0x52,
+ 0xda, 0x56, 0xb7, 0xbe, 0x5a, 0x58, 0x37, 0x85, 0x2e, 0x68, 0x8c, 0xe8,
+ 0xe2, 0x5d, 0xce, 0x5a, 0xf7, 0x58, 0xf7, 0x0e, 0x6b, 0xce, 0x07, 0xf7,
+ 0xee, 0x7f, 0xfb, 0xfc, 0x6c, 0x3e, 0x3e, 0x4d, 0x51, 0x62, 0x5a, 0x2c,
+ 0x35, 0x5c, 0x52, 0xa1, 0xa4, 0x19, 0xa7, 0xb0, 0x53, 0xee, 0x7f, 0x40,
+ 0xac, 0x54, 0x5e, 0x48, 0x85, 0x10, 0xba, 0x14, 0xcc, 0x3a, 0xe1, 0xda,
+ 0x7e, 0x33, 0xa1, 0x70, 0x2b, 0x63, 0xb2, 0xcd, 0xd4, 0xe0, 0x7a, 0x10,
+ 0x19, 0x2e, 0xa1, 0x54, 0x43, 0x9b, 0x0d, 0xb2, 0x1c, 0xa4, 0xce, 0xac,
+ 0x03, 0xe4, 0xe7, 0x5d, 0x74, 0x0f, 0xb9, 0xf3, 0xfd, 0xcb, 0xde, 0xbd,
+ 0xaa, 0x6d, 0xdb, 0x34, 0x45, 0xd0, 0x9d, 0x97, 0x5e, 0xf6, 0xe1, 0x57,
+ 0xbf, 0xe6, 0x9f, 0x74, 0x1f, 0xae, 0xff, 0xb6, 0xa1, 0xc0, 0x07, 0xbc,
+ 0x4b, 0xef, 0x51, 0x58, 0xc1, 0x32, 0x29, 0x23, 0x20, 0x5e, 0xb8, 0xca,
+ 0x25, 0x88, 0x2b, 0xce, 0x9a, 0xdb, 0x47, 0xda, 0xc5, 0x8a, 0x28, 0x7a,
+ 0xf5, 0xd7, 0x8b, 0x0b, 0x8c, 0xa7, 0x25, 0xc8, 0x95, 0x06, 0xce, 0x2f,
+ 0xbd, 0xcc, 0x90, 0x8b, 0x40, 0x8e, 0xc6, 0xe4, 0x16, 0xac, 0x2d, 0xe9,
+ 0x44, 0x85, 0x75, 0x6b, 0x3e, 0x68, 0x8a, 0x9d, 0x24, 0x73, 0x68, 0x34,
+ 0x28, 0xf2, 0x9b, 0x92, 0x94, 0x2b, 0xf5, 0x93, 0x25, 0xec, 0x11, 0xb9,
+ 0xf2, 0x70, 0x11, 0x61, 0x39, 0x26, 0x5c, 0xf4, 0x15, 0xe9, 0xfd, 0xc5,
+ 0xc5, 0xab, 0x53, 0x32, 0xd8, 0x0a, 0x46, 0x1f, 0x82, 0x90, 0x94, 0xe2,
+ 0x7d, 0x19, 0x4c, 0xb3, 0x0a, 0x05, 0xd5, 0x8a, 0xef, 0x00, 0xb9, 0x56,
+ 0x3c, 0x1c, 0x41, 0x8a, 0xeb, 0x14, 0x9b, 0xd5, 0x3c, 0x14, 0xd6, 0x26,
+ 0x6a, 0x91, 0x53, 0x6e, 0xc1, 0xd1, 0xea, 0xda, 0x33, 0x63, 0xda, 0x74,
+ 0xb7, 0x63, 0xce, 0x07, 0x21, 0x61, 0xfa, 0x39, 0xee, 0x04, 0x3e, 0xb1,
+ 0x4c, 0x0c, 0x46, 0xb3, 0xde, 0x84, 0x2a, 0xfa, 0x9a, 0xa5, 0x43, 0xf1,
+ 0xdb, 0xdc, 0xf7, 0x54, 0x1b, 0x42, 0x12, 0x96, 0x54, 0xe4, 0xf6, 0x34,
+ 0xca, 0x65, 0x22, 0x38, 0xca, 0x6e, 0x28, 0x3f, 0x4a, 0x8c, 0xdc, 0x7c,
+ 0x51, 0xa0, 0x77, 0x2b, 0x52, 0x7b, 0x45, 0x20, 0xd7, 0x5f, 0xc3, 0xe8,
+ 0x4c, 0xd4, 0x96, 0x0d, 0x70, 0x75, 0xb5, 0x17, 0x09, 0x43, 0xc1, 0xf6,
+ 0xeb, 0x37, 0x61, 0xd0, 0xd1, 0x43, 0x10, 0x0e, 0xb4, 0x97, 0x40, 0x63,
+ 0xd0, 0x3a, 0x01, 0xea, 0x26, 0x14, 0x4e, 0xb3, 0xc4, 0x48, 0x62, 0xb5,
+ 0x45, 0x82, 0x94, 0xa0, 0xd9, 0x95, 0xa9, 0x91, 0x73, 0x55, 0x6d, 0xa4,
+ 0x6a, 0x14, 0x54, 0x7f, 0x22, 0xc7, 0x78, 0x94, 0x1a, 0xf0, 0x4a, 0x20,
+ 0x04, 0xcb, 0x30, 0x99, 0xae, 0x13, 0x93, 0x98, 0xa1, 0xf3, 0xbd, 0x66,
+ 0x50, 0x61, 0xe3, 0xde, 0x34, 0x2d, 0x2e, 0xd5, 0xbe, 0xc2, 0xb2, 0xaa,
+ 0x57, 0xcb, 0x83, 0xed, 0xbc, 0xff, 0x27, 0x66, 0xd1, 0x03, 0xc9, 0x71,
+ 0x41, 0x91, 0x3c, 0xa4, 0xac, 0x6e, 0xc4, 0x23, 0xe1, 0xbf, 0xa3, 0x64,
+ 0x06, 0x53, 0xc7, 0x23, 0x4a, 0x99, 0x19, 0x93, 0xc9, 0xd7, 0x93, 0x7c,
+ 0x51, 0xde, 0x6d, 0x78, 0xd9, 0x61, 0x1c, 0xc4, 0x08, 0x6c, 0x7f, 0x86,
+ 0xc1, 0xbd, 0x29, 0x91, 0x1e, 0x43, 0x28, 0xa2, 0x5d, 0x12, 0x33, 0x65,
+ 0x17, 0xb3, 0xf7, 0x36, 0x0a, 0x86, 0xf1, 0x11, 0x4a, 0x86, 0xc8, 0x79,
+ 0xdf, 0x5c, 0xfe, 0x0d, 0xa7, 0xef, 0xff, 0xe3, 0x76, 0xdb, 0x16, 0x40,
+ 0xc4, 0xa6, 0x9f, 0x7b, 0x59, 0x7e, 0x0c, 0xa9, 0xa0, 0x7c, 0x92, 0x04,
+ 0xe3, 0xce, 0x0d, 0xc8, 0x85, 0x89, 0x23, 0x33, 0x57, 0x2e, 0x17, 0xeb,
+ 0xd3, 0xe0, 0xb9, 0x5a, 0x00, 0x3f, 0x3e, 0x1c, 0xf2, 0x6e, 0x9a, 0xdb,
+ 0x9a, 0xc3, 0xcf, 0xa2, 0xf3, 0x9c, 0xcb, 0xc6, 0xdb, 0x2f, 0x2c, 0x30,
+ 0x27, 0xd7, 0x11, 0x8b, 0x36, 0xc6, 0x79, 0x3e, 0x48, 0x8a, 0x96, 0x55,
+ 0xa6, 0x8a, 0xd5, 0x03, 0x09, 0xa9, 0x64, 0x47, 0x97, 0x65, 0xa0, 0xdf,
+ 0xf2, 0xab, 0x3d, 0x76, 0x1b, 0xcb, 0x87, 0x18, 0xed, 0x9c, 0x4f, 0x46,
+ 0x7e, 0x18, 0x38, 0x4d, 0xd0, 0x8d, 0x05, 0xc2, 0xcd, 0xa0, 0x2d, 0xc2,
+ 0x00, 0x10, 0xb5, 0x50, 0x19, 0x13, 0x15, 0xcb, 0x06, 0x2a, 0x40, 0xb4,
+ 0x84, 0x36, 0x60, 0x42, 0x19, 0x66, 0xf0, 0x50, 0xf6, 0x88, 0x6e, 0x90,
+ 0x84, 0x6f, 0x71, 0x40, 0x52, 0xfd, 0xb4, 0xe3, 0x38, 0x90, 0x63, 0x78,
+ 0x00, 0xa8, 0x35, 0xfe, 0x61, 0xf9, 0x85, 0x73, 0xfa, 0x88, 0x19, 0x49,
+ 0xe6, 0x65, 0x98, 0x5f, 0x7d, 0x42, 0x95, 0x7d, 0x14, 0x75, 0x58, 0x08,
+ 0x87, 0xbf, 0xd6, 0x50, 0xd7, 0xeb, 0xaf, 0xe1, 0x9f, 0x55, 0x9e, 0x4f,
+ 0xbe, 0x1e, 0x4e, 0x47, 0x38, 0x86, 0xb5, 0x1a, 0xfa, 0x20, 0x5b, 0x4c,
+ 0xc3, 0xf8, 0x6b, 0xef, 0x77, 0xde, 0x64, 0xe7, 0x9e, 0x8e, 0x96, 0x44,
+ 0xed, 0x90, 0xbd, 0x70, 0xba, 0xa8, 0xa4, 0xc8, 0x02, 0x68, 0xeb, 0x13,
+ 0xe0, 0x21, 0xd7, 0x8d, 0xcb, 0x84, 0x6f, 0xfe, 0x97, 0x9a, 0xc6, 0x16,
+ 0x8a, 0x0b, 0xbb, 0xe8, 0xd6, 0x2b, 0x11, 0xd7, 0x24, 0xb2, 0x74, 0x92,
+ 0x5e, 0xf2, 0xe6, 0x1f, 0x9e, 0x9e, 0xfc, 0xed, 0xe4, 0xd4, 0x13, 0x10,
+ 0xbe, 0xef, 0xf7, 0xb7, 0xdf, 0xa7, 0xc5, 0x20, 0x2d, 0xf2, 0x72, 0x0b,
+ 0xe3, 0xf1, 0x22, 0x7a, 0xce, 0xa4, 0x58, 0x39, 0xb7, 0xe6, 0x8d, 0x40,
+ 0x9b, 0xb3, 0xa5, 0x33, 0x18, 0x78, 0x8c, 0xa9, 0xba, 0xdc, 0xa5, 0x14,
+ 0x14, 0x27, 0x54, 0x97, 0x69, 0xaa, 0x48, 0x93, 0x05, 0x86, 0x37, 0x90,
+ 0x37, 0x2b, 0x09, 0x14, 0x32, 0x21, 0x20, 0xe3, 0x28, 0x7a, 0xc6, 0x14,
+ 0xcf, 0xa9, 0xee, 0x78, 0x13, 0xd8, 0x59, 0x78, 0xaf, 0xcc, 0x09, 0x2d,
+ 0x34, 0x7a, 0x26, 0x9d, 0x96, 0x54, 0x35, 0x91, 0x16, 0x8d, 0x0b, 0xa0,
+ 0xf0, 0x0d, 0x79, 0xf6, 0x97, 0xf8, 0xa8, 0x1f, 0x3f, 0x3b, 0x39, 0x3d,
+ 0xf9, 0xfe, 0xe8, 0xe2, 0xc4, 0x54, 0xa9, 0xf6, 0xc3, 0x14, 0xea, 0x58,
+ 0x5d, 0x7f, 0x91, 0x75, 0x31, 0x05, 0x72, 0xab, 0x6c, 0xf8, 0x9e, 0x3c,
+ 0x49, 0x52, 0x5d, 0x5e, 0x80, 0x89, 0x40, 0x71, 0x96, 0x9c, 0xe1, 0x70,
+ 0x73, 0xc0, 0x2b, 0x26, 0x53, 0x19, 0xaa, 0x37, 0x83, 0x64, 0x02, 0xc2,
+ 0x53, 0x19, 0xbd, 0x9d, 0x61, 0xae, 0x7f, 0x66, 0xe0, 0xbb, 0x78, 0xf6,
+ 0xae, 0x29, 0xd7, 0x2e, 0xad, 0x6d, 0x83, 0x7d, 0x4e, 0xce, 0x2e, 0x7f,
+ 0x18, 0x08, 0x6a, 0x3d, 0x2e, 0xc3, 0xb3, 0x6d, 0xaa, 0x54, 0x6b, 0xbb,
+ 0xeb, 0xe0, 0x96, 0x75, 0xee, 0x29, 0xce, 0xd6, 0xca, 0x14, 0x89, 0x48,
+ 0x5b, 0x96, 0x93, 0x1a, 0xbd, 0x52, 0xd9, 0xf4, 0xb0, 0x6d, 0x4c, 0xe1,
+ 0x2b, 0x49, 0x08, 0x7d, 0x46, 0x0f, 0x36, 0xe2, 0xe1, 0x1d, 0x28, 0x40,
+ 0x58, 0x09, 0xfd, 0x2e, 0x00, 0x37, 0x4d, 0x2b, 0x55, 0x0e, 0xaf, 0xd2,
+ 0x69, 0xaa, 0xd7, 0x2a, 0xc6, 0x9f, 0x53, 0xbc, 0x33, 0x03, 0x7c, 0x49,
+ 0x79, 0x00, 0x62, 0xf0, 0x83, 0x94, 0x0c, 0x48, 0xa8, 0xed, 0xe7, 0x7e,
+ 0xa8, 0x2b, 0x25, 0xec, 0x64, 0x05, 0xe5, 0x93, 0x53, 0xb2, 0x0d, 0x41,
+ 0xd3, 0xf5, 0x28, 0x5d, 0xd1, 0x09, 0x0c, 0xf7, 0x03, 0xc1, 0x11, 0x11,
+ 0x6b, 0xea, 0xa5, 0x28, 0x4b, 0x69, 0x62, 0x8d, 0xdb, 0xe1, 0x10, 0x21,
+ 0xfa, 0x88, 0xd8, 0x95, 0x5a, 0x1a, 0x70, 0x74, 0x4b, 0x02, 0xc9, 0xcc,
+ 0x52, 0xae, 0x15, 0x12, 0xb2, 0xba, 0x4c, 0x7a, 0xb3, 0xac, 0xfd, 0xbd,
+ 0xac, 0xe0, 0x7e, 0xcd, 0x5b, 0x19, 0xdb, 0x5a, 0xbc, 0xd7, 0x94, 0xed,
+ 0xed, 0x9a, 0x02, 0xb8, 0xd2, 0x0c, 0x53, 0x12, 0x30, 0x0a, 0xdc, 0x71,
+ 0x93, 0xca, 0x11, 0x4c, 0x16, 0xc8, 0x4a, 0xcb, 0x72, 0xeb, 0x1c, 0xd7,
+ 0xad, 0xe8, 0x4c, 0x75, 0x87, 0xf5, 0x57, 0x2d, 0x2e, 0x5c, 0x27, 0x53,
+ 0x5a, 0xaf, 0x38, 0x9d, 0x7b, 0xa5, 0x6c, 0x36, 0x09, 0x6a, 0xf5, 0xc2,
+ 0xcd, 0x4e, 0x55, 0xb0, 0x22, 0xdc, 0x74, 0xbc, 0x82, 0x45, 0x6c, 0x3f,
+ 0x39, 0x7f, 0x73, 0x41, 0x9d, 0x9c, 0xe2, 0x2f, 0x72, 0x9d, 0x96, 0xa1,
+ 0xfa, 0x2a, 0x23, 0x2e, 0x86, 0x3e, 0xa4, 0xda, 0x03, 0x18, 0x81, 0x64,
+ 0xd2, 0x03, 0x34, 0x7f, 0x91, 0xb3, 0xc1, 0xa4, 0x38, 0xae, 0x70, 0x14,
+ 0xf2, 0x92, 0x78, 0x48, 0x09, 0x15, 0x66, 0xd3, 0x9b, 0x44, 0x36, 0x1c,
+ 0x83, 0xa0, 0xda, 0xd3, 0x28, 0x38, 0x11, 0x58, 0x03, 0x68, 0xce, 0xf0,
+ 0x4b, 0x75, 0x0f, 0x10, 0x31, 0x07, 0xaf, 0x32, 0x5b, 0xf5, 0x04, 0x9b,
+ 0xc4, 0xb7, 0xa2, 0x22, 0xbb, 0xbc, 0x82, 0x8d, 0x81, 0x71, 0xf4, 0xec,
+ 0x3c, 0xb9, 0x0b, 0xc6, 0x9f, 0xa3, 0x0a, 0x5f, 0x7e, 0xb8, 0x0c, 0x81,
+ 0xc6, 0x98, 0xa8, 0x79, 0xcd, 0xe2, 0xe7, 0xe4, 0x61, 0x13, 0x7a, 0xd7,
+ 0x15, 0x24, 0x7b, 0x86, 0xec, 0x24, 0x78, 0x05, 0x8e, 0xc0, 0xf3, 0x42,
+ 0x40, 0x08, 0xbe, 0x41, 0x73, 0xd7, 0xd2, 0x3b, 0xa9, 0x15, 0xc6, 0x0a,
+ 0x84, 0x96, 0x4e, 0x4f, 0xa8, 0xca, 0x1e, 0x89, 0x34, 0x03, 0x96, 0x79,
+ 0x45, 0x99, 0x9d, 0x05, 0x0e, 0x3a, 0x2c, 0xbc, 0xf2, 0x68, 0x9e, 0xa8,
+ 0x6c, 0x5b, 0x40, 0x86, 0x42, 0xda, 0x68, 0x56, 0x42, 0x70, 0x92, 0x83,
+ 0x64, 0x28, 0xbc, 0x38, 0x74, 0xca, 0x84, 0xde, 0xf2, 0x10, 0x55, 0x31,
+ 0x4b, 0x73, 0xbc, 0xe8, 0x35, 0x12, 0x6c, 0x43, 0xd5, 0xd3, 0xe4, 0xaa,
+ 0x92, 0x30, 0x54, 0x9c, 0x42, 0x83, 0x2f, 0xcf, 0xaf, 0x9f, 0xd4, 0xe3,
+ 0x17, 0xd9, 0x5e, 0x46, 0xea, 0x27, 0xac, 0x6a, 0x13, 0xaa, 0x85, 0x41,
+ 0x2a, 0xa0, 0x6f, 0x1a, 0x2e, 0x1a, 0x5b, 0x4d, 0xec, 0x32, 0xd2, 0x8e,
+ 0xd7, 0x3f, 0xf3, 0x13, 0x62, 0x44, 0xf4, 0x06, 0xdd, 0xc5, 0x08, 0x57,
+ 0x7f, 0x29, 0x1a, 0xbd, 0xd0, 0xf2, 0x20, 0x85, 0x1e, 0x33, 0xc4, 0x70,
+ 0x7d, 0xe9, 0xa8, 0x05, 0x7e, 0xe4, 0x24, 0xd0, 0x1f, 0x82, 0x28, 0xb0,
+ 0x52, 0x8f, 0x2f, 0x52, 0x00, 0x20, 0xbe, 0x40, 0x48, 0x75, 0x15, 0x0b,
+ 0x0c, 0x2c, 0xde, 0x62, 0x4c, 0x1f, 0x67, 0x41, 0xe6, 0x5c, 0x9f, 0x6a,
+ 0x18, 0xe0, 0x6b, 0xc2, 0xd1, 0xe8, 0xd9, 0xa4, 0xbc, 0x5e, 0xc5, 0x49,
+ 0xed, 0x52, 0x47, 0xe1, 0xa8, 0x5c, 0xaf, 0x28, 0xf8, 0xbd, 0x43, 0x72,
+ 0x97, 0xee, 0xe3, 0x2a, 0xef, 0xa2, 0x3b, 0xb0, 0xb5, 0x30, 0x8a, 0xed,
+ 0x9b, 0xe5, 0x35, 0x13, 0xde, 0x79, 0xd7, 0x59, 0xbb, 0x30, 0xaf, 0x2b,
+ 0xaf, 0x3f, 0x80, 0xd7, 0xf5, 0xff, 0x66, 0x34, 0x06, 0xe2, 0x69, 0x81,
+ 0x1c, 0x14, 0x5a, 0x6e, 0xdd, 0xe1, 0x35, 0xf9, 0x1c, 0x70, 0x36, 0xdf,
+ 0xb7, 0x8d, 0x9c, 0xce, 0x30, 0x3a, 0x18, 0x80, 0x70, 0xb7, 0xf3, 0xa3,
+ 0xfe, 0xdf, 0x1a, 0x7c, 0xcd, 0xe3, 0x64, 0x40, 0x4f, 0x9e, 0xe7, 0x5d,
+ 0x6b, 0x1c, 0x62, 0x5b, 0xc1, 0x03, 0x0f, 0x6b, 0x79, 0x8f, 0x03, 0x0f,
+ 0x03, 0xf1, 0x0e, 0xbc, 0xb7, 0xb4, 0xcb, 0x0e, 0x7c, 0x80, 0x5e, 0xfd,
+ 0x03, 0x3f, 0xa3, 0x43, 0x4e, 0x70, 0x20, 0x81, 0x93, 0xae, 0x07, 0x5d,
+ 0xcf, 0xb6, 0x9f, 0xa2, 0x47, 0xe3, 0x5c, 0xe7, 0xa4, 0xd3, 0x0b, 0xde,
+ 0x41, 0xd7, 0xed, 0x5c, 0xfb, 0xa4, 0x0b, 0x87, 0xf0, 0x0e, 0x3a, 0x1d,
+ 0xf2, 0x16, 0x62, 0x0d, 0x84, 0xc5, 0xd6, 0x08, 0xbd, 0x21, 0x0b, 0x7d,
+ 0x78, 0x3c, 0xfd, 0xd2, 0x3d, 0xb9, 0xf7, 0xe1, 0x85, 0x91, 0x3d, 0xf0,
+ 0xf0, 0x6a, 0xd0, 0x65, 0xdb, 0xe1, 0x75, 0xb1, 0xc9, 0x02, 0xb1, 0x3f,
+ 0x44, 0xa5, 0x52, 0x20, 0x4b, 0x8e, 0x91, 0x8d, 0x40, 0x0c, 0x40, 0x24,
+ 0x77, 0x0d, 0x22, 0x5d, 0x31, 0xf4, 0xbd, 0xa8, 0x06, 0x00, 0xd1, 0x45,
+ 0xf4, 0x28, 0x44, 0x69, 0x15, 0xd8, 0x44, 0x9c, 0x85, 0x26, 0xcf, 0xf3,
+ 0x0b, 0xc8, 0xa4, 0x7d, 0xb0, 0x3c, 0xa7, 0x20, 0x40, 0x1a, 0x04, 0x70,
+ 0x2c, 0x53, 0x4c, 0x90, 0x89, 0xea, 0xa1, 0xa6, 0xed, 0xfb, 0xff, 0xd1,
+ 0xc5, 0xe0, 0x06, 0xdc, 0xdb, 0xbd, 0xb6, 0xfc, 0x1f, 0xeb, 0x09, 0xbc,
+ 0x0e, 0xe0, 0x76, 0x93, 0x1f, 0xa3, 0x6e, 0x48, 0xb2, 0x30, 0x0a, 0xd6,
+ 0xa0, 0x52, 0xa1, 0x0d, 0x62, 0x49, 0x40, 0x41, 0x55, 0x0b, 0xaa, 0x45,
+ 0xe0, 0x35, 0xd2, 0x92, 0xc5, 0x79, 0x8e, 0x1a, 0x2c, 0xe6, 0x9c, 0xaa,
+ 0xaf, 0x99, 0xd8, 0x70, 0x12, 0x28, 0x76, 0xce, 0xb1, 0x5d, 0x4e, 0xb9,
+ 0x51, 0x10, 0xc8, 0x06, 0x98, 0x70, 0x87, 0x45, 0xb9, 0x4a, 0xba, 0x7f,
+ 0xd1, 0xa1, 0x7d, 0xa3, 0xd5, 0x81, 0x08, 0x72, 0xb6, 0x64, 0xf5, 0xc9,
+ 0xb3, 0x61, 0x6b, 0xf1, 0xa3, 0x2a, 0x2a, 0x10, 0xac, 0x66, 0x9a, 0x3a,
+ 0xa9, 0xca, 0x2b, 0x77, 0x34, 0x34, 0xff, 0x65, 0x5b, 0x1c, 0x94, 0x67,
+ 0x7a, 0x2b, 0x8f, 0x76, 0xa8, 0x9b, 0x87, 0x1c, 0xf3, 0xe0, 0x70, 0xd7,
+ 0x2c, 0x4c, 0x8a, 0xb2, 0x6f, 0x2d, 0xca, 0xe4, 0x49, 0xa3, 0x22, 0xe9,
+ 0x68, 0x56, 0xc6, 0x64, 0xef, 0x1b, 0x23, 0x08, 0xf5, 0xa1, 0xf9, 0xd5,
+ 0xb3, 0xf8, 0x3c, 0x7b, 0xad, 0x05, 0x20, 0x9d, 0xfa, 0x8f, 0x65, 0xca,
+ 0x98, 0x39, 0x9c, 0xa9, 0x0e, 0x8f, 0xd8, 0x24, 0xf4, 0xea, 0xaa, 0xc8,
+ 0x17, 0x97, 0x57, 0xd2, 0xa4, 0x5f, 0x40, 0x1d, 0xba, 0xf0, 0x10, 0xd2,
+ 0x12, 0xc6, 0x20, 0x4a, 0x0b, 0xf2, 0x68, 0x92, 0x7e, 0x65, 0xc7, 0x16,
+ 0x6d, 0x8a, 0xf9, 0x04, 0xdd, 0x1e, 0x81, 0xfa, 0x12, 0x0a, 0x8a, 0x86,
+ 0xc3, 0x90, 0x7a, 0xdd, 0x98, 0x7f, 0x43, 0x45, 0xaf, 0xa5, 0x08, 0x8e,
+ 0xc2, 0xaf, 0x53, 0x7d, 0x5f, 0x6d, 0x37, 0xe0, 0x13, 0xde, 0x94, 0x42,
+ 0x00, 0x92, 0x85, 0xba, 0x15, 0x4e, 0x73, 0xa9, 0x2f, 0xdd, 0x5a, 0x16,
+ 0x94, 0x8f, 0x58, 0x3b, 0xb4, 0x3e, 0x8a, 0xb4, 0xba, 0xba, 0x37, 0xe6,
+ 0x0e, 0x13, 0x89, 0x36, 0x31, 0xbf, 0x7e, 0x14, 0xe3, 0x7c, 0x23, 0xf5,
+ 0x1a, 0xf2, 0x87, 0x4f, 0xe8, 0xc3, 0x5e, 0xb3, 0x23, 0x0f, 0x39, 0xe0,
+ 0x1f, 0x8b, 0xac, 0x48, 0x9d, 0x6a, 0xc7, 0x8b, 0xd9, 0x28, 0x2d, 0x26,
+ 0x77, 0xb8, 0xea, 0x93, 0x6c, 0xc0, 0x19, 0xe3, 0x89, 0xa9, 0x4c, 0xc8,
+ 0x20, 0xd1, 0x9c, 0x1d, 0x05, 0x33, 0x89, 0xfd, 0x6a, 0x11, 0xf5, 0x78,
+ 0xe2, 0xfd, 0xfd, 0x00, 0xd5, 0x9a, 0x11, 0x1f, 0xca, 0x3e, 0x85, 0x69,
+ 0xb6, 0x26, 0x68, 0x0e, 0x08, 0xc4, 0x35, 0x07, 0xaa, 0x9c, 0xc7, 0xfa,
+ 0x16, 0xb3, 0x9e, 0x69, 0xf2, 0x5e, 0x74, 0x9c, 0x47, 0x42, 0xc8, 0xb1,
+ 0x07, 0x94, 0x8e, 0x84, 0xdd, 0xad, 0x85, 0xde, 0xd4, 0x48, 0x5e, 0x14,
+ 0xcf, 0x4a, 0x0b, 0x7e, 0x49, 0x41, 0x0b, 0xe9, 0x27, 0x04, 0xe3, 0xa5,
+ 0x79, 0x54, 0x6e, 0x78, 0xac, 0x22, 0xe4, 0xd0, 0x48, 0xcc, 0xbb, 0xad,
+ 0x04, 0x68, 0x56, 0xe1, 0xb3, 0x12, 0xa0, 0x19, 0xc5, 0xee, 0x4e, 0x6f,
+ 0xb7, 0xb7, 0xd7, 0x5b, 0x17, 0x7e, 0xad, 0x4e, 0xc5, 0xc6, 0x22, 0x5e,
+ 0xa7, 0xc1, 0x66, 0x67, 0x6d, 0x44, 0x28, 0xb6, 0x39, 0xce, 0xaa, 0xb3,
+ 0x74, 0x58, 0x23, 0x44, 0xa6, 0x43, 0x64, 0x61, 0x42, 0x85, 0x0f, 0x26,
+ 0xc2, 0x27, 0x9f, 0x84, 0x08, 0x9f, 0xac, 0x20, 0x42, 0xca, 0x01, 0xb7,
+ 0xf3, 0x6c, 0xa1, 0x43, 0x09, 0x5a, 0x41, 0xd6, 0xfa, 0x60, 0x22, 0x7c,
+ 0x72, 0x2f, 0x22, 0x7c, 0xf2, 0x1f, 0x41, 0x84, 0x32, 0x8a, 0xbd, 0x64,
+ 0xe7, 0xd1, 0xc1, 0xa3, 0xf4, 0xd1, 0xde, 0xc1, 0xc1, 0xe3, 0x27, 0xbb,
+ 0x0f, 0xe3, 0x87, 0x75, 0x62, 0x6c, 0x50, 0x5e, 0xaf, 0xd9, 0xe5, 0x7f,
+ 0x00, 0x3f, 0x14, 0xbb, 0x95, 0x21, 0xc4, 0xd4, 0x23, 0xc5, 0xbe, 0x44,
+ 0x74, 0x6b, 0xed, 0x2f, 0x24, 0x1a, 0x7d, 0x8b, 0x23, 0x75, 0x24, 0x67,
+ 0x5d, 0x73, 0x47, 0xdd, 0x72, 0x8a, 0xbe, 0xb4, 0x4d, 0xe2, 0xb5, 0x04,
+ 0x22, 0x69, 0x93, 0x2f, 0xcf, 0x23, 0xd3, 0xbd, 0x43, 0x4f, 0xb6, 0x70,
+ 0x89, 0xe4, 0xfb, 0x04, 0x1d, 0xee, 0x25, 0xfa, 0x6a, 0x61, 0x01, 0x38,
+ 0xcf, 0xb4, 0xb4, 0x00, 0x9f, 0xa1, 0xfa, 0x24, 0xb0, 0x78, 0x07, 0x87,
+ 0xb8, 0x5e, 0x31, 0x3f, 0xfe, 0x4d, 0x10, 0xbe, 0x2d, 0x4d, 0x40, 0x62,
+ 0xb0, 0x83, 0x6a, 0x27, 0x61, 0x5d, 0x87, 0x4f, 0x0f, 0xae, 0xb7, 0x8c,
+ 0x84, 0x75, 0x14, 0xbb, 0x5f, 0xed, 0xf5, 0x76, 0x9f, 0x7c, 0x89, 0x38,
+ 0x9d, 0x5d, 0xfb, 0xfb, 0xde, 0x7a, 0x94, 0xdc, 0x24, 0xe4, 0x25, 0x74,
+ 0xac, 0xfd, 0x86, 0xf8, 0xcd, 0xbd, 0xe8, 0xd8, 0x63, 0xa7, 0x40, 0xc4,
+ 0x44, 0xb5, 0x4d, 0xbc, 0xd4, 0x25, 0x34, 0x9c, 0x5f, 0x71, 0x25, 0xbb,
+ 0xb2, 0x4a, 0xaa, 0x45, 0x53, 0xc2, 0xeb, 0x93, 0x1b, 0xa3, 0xd4, 0x6a,
+ 0x77, 0xfc, 0x0c, 0x59, 0x63, 0x0c, 0xb2, 0xed, 0xb3, 0xfc, 0x05, 0x71,
+ 0xdb, 0x18, 0xdd, 0x2d, 0x31, 0x55, 0x12, 0xdf, 0x5a, 0x61, 0xa2, 0xab,
+ 0x77, 0x79, 0x1f, 0x75, 0x6f, 0x0d, 0x2d, 0xbf, 0xde, 0xf8, 0xda, 0xe4,
+ 0xd0, 0x18, 0x1b, 0x7f, 0xe2, 0xaa, 0x00, 0xf0, 0xb7, 0x96, 0x4f, 0x58,
+ 0xf7, 0xb6, 0x85, 0x96, 0xd4, 0xa3, 0x56, 0xcf, 0xdb, 0x7a, 0xe2, 0xef,
+ 0x89, 0x3e, 0xd8, 0xba, 0x21, 0xc6, 0x37, 0xf7, 0x21, 0xbb, 0x51, 0xef,
+ 0xeb, 0x13, 0xd8, 0x5c, 0xdc, 0x29, 0x3f, 0x60, 0x2b, 0xcc, 0xc8, 0x3e,
+ 0xf6, 0x3e, 0xa0, 0x72, 0xb8, 0x6a, 0x0b, 0xb0, 0xb7, 0x43, 0xd0, 0x8b,
+ 0xc3, 0xb5, 0xb3, 0x18, 0x46, 0x88, 0x75, 0xa3, 0xfa, 0x82, 0xa3, 0xf4,
+ 0x91, 0xbf, 0xd8, 0x72, 0x7c, 0xc1, 0x14, 0xa5, 0x85, 0x61, 0x28, 0x84,
+ 0x76, 0x1b, 0xc0, 0x39, 0x26, 0xac, 0x7f, 0x17, 0x3f, 0xc0, 0x89, 0x7a,
+ 0x53, 0x8b, 0x0a, 0xb9, 0x14, 0xa5, 0x89, 0x22, 0x9a, 0xa6, 0x68, 0xb9,
+ 0xcb, 0xca, 0x69, 0x48, 0xb6, 0x40, 0x65, 0x5e, 0xb5, 0x2e, 0x1a, 0x92,
+ 0x5f, 0xf2, 0x06, 0xab, 0x29, 0x50, 0xa9, 0x47, 0x13, 0xb1, 0xc5, 0xdc,
+ 0x46, 0x31, 0x24, 0x91, 0x98, 0xe0, 0xf7, 0xc2, 0xc2, 0xe4, 0x6a, 0x0a,
+ 0x0f, 0xe5, 0xa3, 0x34, 0x49, 0x00, 0xc8, 0xce, 0x02, 0x0e, 0xd1, 0x48,
+ 0x31, 0xf0, 0x69, 0x31, 0x2f, 0x09, 0xcd, 0x80, 0xab, 0x1e, 0x44, 0xe4,
+ 0x91, 0xa5, 0x5e, 0xe1, 0xfe, 0x7a, 0x91, 0xdf, 0xa4, 0xd7, 0x2d, 0x95,
+ 0x81, 0x6a, 0xc5, 0x6c, 0x5d, 0x6c, 0x6c, 0xba, 0x04, 0x30, 0xac, 0xa8,
+ 0x34, 0xb5, 0xed, 0xb2, 0xd9, 0x55, 0x8a, 0xa8, 0x3e, 0x92, 0x4b, 0x46,
+ 0x26, 0xdd, 0x40, 0xd6, 0x40, 0x91, 0x53, 0xf8, 0xa2, 0x5e, 0x89, 0x84,
+ 0x80, 0x98, 0x34, 0xa9, 0x4c, 0x78, 0xf5, 0x0a, 0x16, 0xd2, 0x50, 0x9f,
+ 0x17, 0x33, 0x5c, 0xaf, 0x6c, 0x4c, 0x61, 0xc0, 0x84, 0x7e, 0x2d, 0x7a,
+ 0x6f, 0xa7, 0x63, 0xcb, 0xe9, 0x29, 0x50, 0x30, 0x42, 0x48, 0x37, 0x45,
+ 0x55, 0x87, 0x0c, 0xbf, 0x7c, 0x1c, 0x40, 0x0e, 0x90, 0xb8, 0x01, 0xa1,
+ 0xc8, 0xcf, 0x94, 0xab, 0xfa, 0x6f, 0x60, 0x83, 0x4f, 0xf6, 0x6a, 0x67,
+ 0xf0, 0x19, 0xd9, 0x43, 0x17, 0xd3, 0xb9, 0x60, 0x42, 0xaf, 0x80, 0xa0,
+ 0x8d, 0xc8, 0xbf, 0xf1, 0x03, 0x01, 0x3c, 0x71, 0x14, 0x9c, 0xc0, 0x17,
+ 0xaa, 0x27, 0xd2, 0x80, 0x95, 0x49, 0x78, 0x69, 0x6b, 0x01, 0x33, 0xc6,
+ 0xff, 0xa2, 0x65, 0x47, 0xde, 0xa7, 0xaf, 0x21, 0xc1, 0x69, 0xa3, 0xdd,
+ 0xba, 0xcf, 0xa4, 0x6e, 0xb0, 0x0f, 0xe3, 0x08, 0x19, 0xea, 0x08, 0x96,
+ 0xa0, 0xaa, 0x61, 0x17, 0x31, 0x3a, 0xcd, 0x55, 0xea, 0xc2, 0x30, 0x9b,
+ 0x62, 0x92, 0x9c, 0x5a, 0xc9, 0x8e, 0x59, 0x20, 0x6c, 0x41, 0x2d, 0xf0,
+ 0xf6, 0x98, 0x08, 0x50, 0x86, 0xde, 0x91, 0xb2, 0x78, 0x0b, 0x29, 0x1d,
+ 0x9c, 0xe0, 0xb2, 0x50, 0x35, 0xb6, 0x96, 0xbc, 0x68, 0x77, 0xd5, 0x3f,
+ 0x9f, 0x72, 0xe1, 0x0c, 0x82, 0x0b, 0x5a, 0xaf, 0x0d, 0x76, 0x90, 0x77,
+ 0x0d, 0x48, 0x8d, 0xcb, 0xdc, 0xd3, 0x4b, 0x0e, 0xbe, 0x5a, 0x86, 0x52,
+ 0xf1, 0x2c, 0xc5, 0xcc, 0x15, 0x06, 0x7d, 0x9d, 0x3b, 0xf1, 0x2a, 0xf6,
+ 0xdc, 0x4b, 0x6a, 0x39, 0x83, 0x0a, 0xb0, 0x6d, 0x8e, 0x58, 0x60, 0xb3,
+ 0xc0, 0x4d, 0xef, 0xcb, 0x47, 0x40, 0xd7, 0x78, 0xeb, 0x66, 0xb9, 0xe4,
+ 0x86, 0x71, 0x68, 0x16, 0x07, 0x97, 0x93, 0xc9, 0x5d, 0xbd, 0xb6, 0xb9,
+ 0x42, 0xe0, 0x8c, 0x8d, 0x6c, 0x17, 0xa8, 0x70, 0x9e, 0x83, 0x78, 0x6f,
+ 0x32, 0x64, 0x81, 0x00, 0x05, 0x09, 0xa0, 0xb5, 0xae, 0x99, 0x29, 0xbf,
+ 0xae, 0x20, 0x8e, 0xe4, 0xe5, 0x43, 0x9e, 0x38, 0x87, 0xa1, 0x7f, 0x9f,
+ 0x20, 0x29, 0x90, 0x6c, 0xf6, 0x2c, 0x49, 0xa7, 0xc4, 0x64, 0x73, 0x0c,
+ 0x9d, 0x0a, 0x22, 0xa0, 0xf3, 0x57, 0x6c, 0x52, 0x66, 0x97, 0x04, 0x19,
+ 0x24, 0x99, 0xa0, 0x22, 0xb8, 0x2b, 0x46, 0xa0, 0xfb, 0x0a, 0x98, 0x23,
+ 0xde, 0x21, 0x54, 0x4d, 0x98, 0x60, 0x08, 0xc2, 0x58, 0xca, 0x41, 0xd5,
+ 0xc0, 0x6c, 0xd0, 0x67, 0x62, 0x76, 0xa6, 0xff, 0x6d, 0x9e, 0xd0, 0x36,
+ 0x55, 0x2e, 0x5c, 0x13, 0xda, 0x9e, 0xde, 0xf4, 0x82, 0xfc, 0x64, 0x69,
+ 0x0e, 0x83, 0x7c, 0x8c, 0x28, 0x0f, 0x1a, 0x99, 0x68, 0x99, 0x09, 0xc5,
+ 0x78, 0x18, 0x16, 0x77, 0x73, 0xf4, 0x06, 0x08, 0x74, 0x32, 0x4b, 0x14,
+ 0xb8, 0xbc, 0x0c, 0x03, 0xb0, 0x14, 0xac, 0xfa, 0x2d, 0x79, 0xda, 0xe5,
+ 0x55, 0xd2, 0x18, 0xd1, 0x37, 0x8f, 0xa5, 0xcc, 0xa3, 0xc4, 0x68, 0x90,
+ 0x48, 0x6d, 0x23, 0xaa, 0x3e, 0x62, 0xe1, 0x93, 0x9a, 0x86, 0x78, 0x6a,
+ 0xa1, 0x94, 0x9c, 0x14, 0x93, 0xec, 0xcd, 0xc1, 0x7f, 0xd1, 0x26, 0x05,
+ 0x3b, 0x29, 0x60, 0x30, 0x46, 0x9a, 0x6d, 0xa9, 0x2a, 0x2b, 0x2f, 0x7a,
+ 0x8a, 0x27, 0xa9, 0x95, 0x16, 0x38, 0xc3, 0x7a, 0x17, 0x5a, 0x88, 0x82,
+ 0x67, 0x70, 0x5f, 0x92, 0xf8, 0xe8, 0xa5, 0xa1, 0x95, 0xa8, 0x27, 0xc9,
+ 0x35, 0x2c, 0xfc, 0x83, 0xd0, 0x1a, 0x14, 0x75, 0x85, 0x70, 0x1f, 0x6a,
+ 0x54, 0x51, 0x25, 0x97, 0xb1, 0x14, 0xac, 0x68, 0xe1, 0x4a, 0x8e, 0x8b,
+ 0x48, 0x78, 0x10, 0xe3, 0xdf, 0x52, 0x52, 0xa6, 0x89, 0x73, 0xa1, 0x9b,
+ 0x50, 0xd3, 0x42, 0xa4, 0x88, 0x48, 0x38, 0x49, 0x18, 0x11, 0x5a, 0x4e,
+ 0x2e, 0x92, 0x4b, 0x27, 0x38, 0xba, 0x91, 0x67, 0x85, 0x15, 0x02, 0xd3,
+ 0x19, 0x27, 0x54, 0xc1, 0x22, 0x00, 0x0f, 0x9e, 0xc2, 0x4e, 0xc4, 0xaf,
+ 0x61, 0x6f, 0x63, 0xaf, 0x18, 0x12, 0x7a, 0x82, 0x85, 0x59, 0x5b, 0xd1,
+ 0x55, 0xc0, 0x61, 0xb1, 0x9b, 0x5e, 0xb0, 0x4a, 0xcd, 0x30, 0x2f, 0xa4,
+ 0x56, 0x0c, 0xa6, 0x44, 0xc1, 0x16, 0x52, 0x12, 0x58, 0x69, 0x90, 0xf9,
+ 0xeb, 0xd9, 0x2f, 0x34, 0x2a, 0xad, 0xe2, 0x19, 0x02, 0xb5, 0x36, 0x06,
+ 0x34, 0x29, 0x27, 0xa9, 0xc1, 0x7b, 0xa3, 0xb4, 0xcc, 0x88, 0x55, 0xd3,
+ 0x48, 0x40, 0x1f, 0x9e, 0x99, 0x42, 0x25, 0x1c, 0x90, 0xee, 0x05, 0x4b,
+ 0xc1, 0x46, 0x88, 0xdc, 0x66, 0xee, 0xed, 0xe0, 0x2c, 0xf0, 0x70, 0x49,
+ 0xfc, 0x93, 0x44, 0x0a, 0xcb, 0x66, 0x96, 0xe4, 0xb4, 0xa7, 0x42, 0x03,
+ 0xe8, 0xaa, 0xa5, 0x3f, 0x89, 0xed, 0xe2, 0x92, 0x4b, 0x28, 0xba, 0xaf,
+ 0xf7, 0xf3, 0x1d, 0xdf, 0xd5, 0x32, 0xb6, 0x33, 0xc9, 0xef, 0x70, 0xb0,
+ 0xc1, 0x72, 0xad, 0x6b, 0x22, 0x10, 0x50, 0x65, 0x65, 0x40, 0x66, 0xaf,
+ 0xbd, 0x23, 0x4b, 0x9d, 0x31, 0xa0, 0xc3, 0x62, 0xc0, 0xf5, 0xce, 0x4c,
+ 0x5d, 0x9e, 0x96, 0xab, 0xbf, 0x46, 0x89, 0x9f, 0xeb, 0xea, 0xaf, 0x0d,
+ 0x02, 0xff, 0x78, 0x00, 0xce, 0x91, 0xdd, 0x05, 0x3a, 0x74, 0xbf, 0xa1,
+ 0x28, 0x80, 0x63, 0x47, 0x2f, 0x6d, 0xbd, 0xd8, 0x37, 0x59, 0x79, 0x9a,
+ 0x87, 0x91, 0xde, 0xbc, 0xef, 0x49, 0xc4, 0x87, 0x4b, 0x4e, 0x8b, 0x82,
+ 0xe3, 0x47, 0xab, 0xae, 0x39, 0x4c, 0x35, 0xe2, 0x25, 0xd2, 0x0b, 0xed,
+ 0x91, 0x06, 0x27, 0x0f, 0x93, 0xe1, 0x95, 0xa0, 0x4f, 0x4f, 0xd8, 0x70,
+ 0xc7, 0x67, 0x0a, 0x53, 0x56, 0x38, 0x10, 0x92, 0x73, 0x14, 0x14, 0xa7,
+ 0xa3, 0x8d, 0x82, 0x5a, 0x60, 0xa1, 0x99, 0x1e, 0x4a, 0x0e, 0x8f, 0xad,
+ 0x81, 0x4f, 0x74, 0xeb, 0xf2, 0x29, 0x41, 0x93, 0xb6, 0x60, 0x37, 0x32,
+ 0x33, 0x36, 0x6b, 0x74, 0x7f, 0x94, 0xb9, 0xe8, 0xd3, 0xd0, 0x09, 0x8d,
+ 0x82, 0x38, 0xcd, 0x07, 0x10, 0x8a, 0x10, 0xdb, 0x72, 0xba, 0xa0, 0xfc,
+ 0xca, 0xdd, 0x9d, 0x1d, 0x5b, 0x26, 0xae, 0xa5, 0x36, 0x9c, 0x90, 0xc8,
+ 0xd2, 0x12, 0x71, 0x84, 0x4a, 0x4d, 0x71, 0xe3, 0xa6, 0x34, 0x46, 0x92,
+ 0x55, 0xc1, 0xa2, 0x98, 0xd8, 0xa5, 0x29, 0xd5, 0x66, 0x14, 0x81, 0x1b,
+ 0x03, 0x98, 0x98, 0x52, 0x99, 0x38, 0x0c, 0xa3, 0x3e, 0xa1, 0x21, 0x96,
+ 0x07, 0xf5, 0x77, 0xc2, 0x70, 0xe8, 0x94, 0x7d, 0x8a, 0x2f, 0x1a, 0x8e,
+ 0x10, 0x45, 0xdf, 0xdd, 0xd9, 0x00, 0x0e, 0x13, 0xc3, 0x45, 0xe3, 0xc2,
+ 0x68, 0x7f, 0x1e, 0x7f, 0x6f, 0x89, 0x3a, 0x1c, 0x2e, 0xff, 0xf6, 0x5f,
+ 0x0e, 0xb8, 0x23, 0x6c, 0xd4, 0xbc, 0xa4, 0x26, 0xb9, 0x3e, 0x94, 0x97,
+ 0x7b, 0x5b, 0x2f, 0x4c, 0x67, 0x4a, 0x84, 0xdb, 0x79, 0xa3, 0x51, 0x6a,
+ 0x90, 0x52, 0x01, 0x05, 0x56, 0xc6, 0xda, 0x38, 0x99, 0xb7, 0x5d, 0xf7,
+ 0xe5, 0x67, 0x1f, 0x1d, 0x0e, 0xd1, 0x1f, 0xca, 0x5e, 0xef, 0xb1, 0x41,
+ 0xde, 0x5b, 0xb7, 0xe6, 0x7b, 0xad, 0xd8, 0x5c, 0x1d, 0xcc, 0xe2, 0x69,
+ 0x9d, 0x62, 0xb1, 0xde, 0x44, 0x4c, 0x25, 0x25, 0x9a, 0x97, 0x2f, 0x16,
+ 0xa2, 0x40, 0xbe, 0x48, 0xf1, 0x25, 0x06, 0xd4, 0x12, 0x6f, 0xaa, 0x51,
+ 0x5a, 0x49, 0x16, 0xb1, 0x1a, 0x7e, 0xa8, 0x38, 0x45, 0x6f, 0x69, 0xe1,
+ 0x57, 0x0d, 0xa1, 0x73, 0xa1, 0xd1, 0x4d, 0x3c, 0x60, 0x33, 0x3a, 0x89,
+ 0xc3, 0x93, 0x42, 0x71, 0x9e, 0x68, 0x60, 0xaa, 0x4c, 0x28, 0x20, 0x17,
+ 0xd0, 0xa0, 0x9c, 0x41, 0x72, 0x28, 0xb0, 0x68, 0xf2, 0xf6, 0xcd, 0x69,
+ 0x97, 0xa8, 0x11, 0xf8, 0x17, 0x42, 0x02, 0x31, 0xcd, 0x06, 0xbd, 0x24,
+ 0x36, 0x42, 0x90, 0x75, 0x35, 0x9e, 0x89, 0x52, 0x14, 0xda, 0x7b, 0x0a,
+ 0x89, 0x2f, 0xc6, 0x56, 0x4b, 0x53, 0xde, 0xc9, 0xcf, 0xdb, 0x71, 0x18,
+ 0x19, 0x3c, 0xb9, 0x41, 0xc5, 0x13, 0x28, 0x4a, 0x97, 0x9b, 0xc7, 0x35,
+ 0x2b, 0xa6, 0x5c, 0xd5, 0x44, 0x7a, 0x89, 0x38, 0xab, 0x9a, 0xe1, 0xeb,
+ 0x3d, 0xc9, 0x1c, 0xd3, 0xcc, 0xb0, 0x92, 0x72, 0x44, 0x9b, 0x43, 0x75,
+ 0x41, 0x16, 0x85, 0x2d, 0xc4, 0x02, 0x9a, 0x7b, 0x06, 0xbb, 0x3a, 0xeb,
+ 0x90, 0x0c, 0x66, 0xaf, 0x6e, 0xe9, 0xd4, 0x9b, 0xec, 0x62, 0xe2, 0x44,
+ 0x5f, 0x7e, 0x11, 0xae, 0x1e, 0x52, 0x39, 0x81, 0xf6, 0x35, 0xd8, 0xe3,
+ 0xc8, 0xc1, 0x93, 0xc7, 0x81, 0xd1, 0x4d, 0x40, 0x53, 0xc8, 0x67, 0xad,
+ 0x78, 0x3e, 0x86, 0x38, 0x88, 0x97, 0xe1, 0xf8, 0xc9, 0x7c, 0x39, 0x4a,
+ 0x29, 0xc9, 0x7d, 0x46, 0x3a, 0x05, 0xaf, 0x5a, 0x32, 0xc5, 0xe0, 0x12,
+ 0xae, 0xd1, 0x87, 0xab, 0x1c, 0x44, 0x0b, 0xc7, 0x8d, 0x90, 0xda, 0x4d,
+ 0x7e, 0x24, 0x9b, 0x26, 0x11, 0x27, 0x77, 0x04, 0x3b, 0x6c, 0xba, 0x26,
+ 0xea, 0xf6, 0x2a, 0x4b, 0xc3, 0x2a, 0x5e, 0xe6, 0xe4, 0x30, 0x11, 0x3a,
+ 0xc6, 0x25, 0x1c, 0x16, 0xd9, 0xbc, 0x62, 0xf1, 0xbb, 0x2d, 0x6c, 0xa9,
+ 0xa1, 0xdd, 0x5f, 0x4e, 0xf2, 0x41, 0x32, 0x11, 0x4c, 0x76, 0x49, 0xf8,
+ 0xd5, 0xb0, 0xc6, 0x41, 0xed, 0x5e, 0xcf, 0xd9, 0xdf, 0x15, 0xd2, 0xd3,
+ 0xe1, 0xa6, 0x3c, 0xe8, 0x52, 0x5e, 0xc2, 0x6d, 0xb5, 0xb4, 0x43, 0xd3,
+ 0x05, 0x55, 0xe4, 0x8e, 0xe2, 0x71, 0x57, 0x4e, 0xaf, 0xd6, 0x34, 0xa0,
+ 0x74, 0xe9, 0xd2, 0x39, 0x53, 0x9e, 0x61, 0x80, 0x6a, 0xcb, 0x48, 0xe5,
+ 0x09, 0x7b, 0xaf, 0x6f, 0x48, 0x0a, 0x8e, 0xb8, 0x33, 0x28, 0x85, 0x37,
+ 0xfa, 0x3b, 0x5c, 0x3d, 0x54, 0xc2, 0x8e, 0x53, 0x5d, 0xd2, 0x90, 0x09,
+ 0x16, 0xab, 0xd0, 0xaa, 0x69, 0xb8, 0x1b, 0x5d, 0xb1, 0xb1, 0x16, 0x87,
+ 0x98, 0xca, 0xc8, 0x14, 0xc6, 0xc3, 0x59, 0x28, 0xae, 0x36, 0x53, 0x84,
+ 0xea, 0x93, 0x89, 0xd4, 0xce, 0xdb, 0xb1, 0x64, 0x51, 0x5c, 0xd7, 0x84,
+ 0xe5, 0x5e, 0xf7, 0x8e, 0x08, 0xf4, 0x5c, 0xb8, 0x2d, 0x7e, 0x09, 0xdb,
+ 0xf4, 0xba, 0xac, 0xdc, 0x19, 0x54, 0x80, 0x6f, 0x9b, 0xcf, 0x60, 0xf9,
+ 0xd4, 0x3c, 0xda, 0xce, 0xcb, 0xcd, 0x2e, 0x8b, 0x5e, 0x48, 0x6d, 0xe3,
+ 0x20, 0xe3, 0x41, 0x3e, 0xba, 0xab, 0x71, 0xf6, 0xc7, 0x7b, 0x01, 0xce,
+ 0x6e, 0x1e, 0x6d, 0x01, 0x94, 0x7a, 0xe3, 0x9f, 0x67, 0xb1, 0x26, 0x0a,
+ 0x23, 0xa4, 0x92, 0x6b, 0xb6, 0x84, 0x8c, 0x5e, 0xb1, 0xde, 0xde, 0x31,
+ 0x98, 0x30, 0x16, 0x16, 0x83, 0x56, 0x2e, 0x49, 0x2e, 0x2c, 0xb6, 0x7a,
+ 0xd1, 0xcb, 0x99, 0xc4, 0x77, 0x0b, 0xec, 0x8c, 0x04, 0x8b, 0x23, 0x65,
+ 0x31, 0x94, 0x01, 0xf7, 0x16, 0x20, 0xd4, 0x52, 0x32, 0xe4, 0xb2, 0x6b,
+ 0x2a, 0xf6, 0x35, 0xca, 0x87, 0xb6, 0x28, 0x89, 0x01, 0x8a, 0x13, 0x94,
+ 0x01, 0xfd, 0x92, 0x68, 0xd8, 0x8f, 0x4e, 0x84, 0x85, 0x94, 0x10, 0x35,
+ 0x2e, 0x06, 0x40, 0x4b, 0xab, 0xd0, 0x62, 0x38, 0xc5, 0x3b, 0x8e, 0x6b,
+ 0x41, 0x3e, 0xbf, 0x65, 0x22, 0x22, 0x29, 0xab, 0x30, 0x64, 0x1b, 0x28,
+ 0x2b, 0xa9, 0xb9, 0xe2, 0x08, 0x66, 0x02, 0xa0, 0x4d, 0xdc, 0x83, 0xf5,
+ 0xb8, 0xc4, 0x40, 0xcc, 0x91, 0xfb, 0x8d, 0xfa, 0x24, 0x07, 0x4f, 0x88,
+ 0xd3, 0xcb, 0xea, 0xef, 0xed, 0x85, 0x59, 0x80, 0x46, 0x8f, 0x57, 0x18,
+ 0x72, 0x48, 0x71, 0xd4, 0x56, 0xd7, 0x13, 0xf2, 0x10, 0x37, 0x93, 0x5b,
+ 0xf0, 0x86, 0x96, 0xd1, 0x2f, 0x95, 0xe0, 0x54, 0x1a, 0xc8, 0x0a, 0x58,
+ 0x37, 0x58, 0xb3, 0x19, 0x26, 0xcf, 0xbb, 0xb8, 0x61, 0x30, 0x87, 0x06,
+ 0xa2, 0xc2, 0x72, 0x7f, 0x6d, 0x9d, 0xd6, 0xa2, 0x8f, 0xeb, 0xaf, 0x6d,
+ 0xd0, 0xfc, 0x43, 0x4e, 0xa3, 0x1d, 0xda, 0x5a, 0x92, 0x94, 0x39, 0x7d,
+ 0x9e, 0x65, 0x37, 0x94, 0xe8, 0x4b, 0xb1, 0x22, 0xf0, 0x8e, 0x97, 0x49,
+ 0xc0, 0x2d, 0xb4, 0xbb, 0x12, 0x4d, 0x37, 0xe1, 0x43, 0x4a, 0x92, 0xd8,
+ 0x38, 0x29, 0x2b, 0x03, 0x13, 0xa9, 0xd4, 0xc6, 0x76, 0xb5, 0xe6, 0x99,
+ 0x35, 0x69, 0x93, 0xfe, 0x7d, 0x43, 0x62, 0x40, 0xae, 0xb9, 0x0b, 0xee,
+ 0x9d, 0xb7, 0x28, 0x4d, 0xb0, 0x09, 0x27, 0xbf, 0x8e, 0xd2, 0x64, 0xa2,
+ 0x41, 0x21, 0x38, 0x36, 0xbf, 0xee, 0x0f, 0x8b, 0x61, 0xa5, 0x7f, 0xc8,
+ 0x19, 0x25, 0x64, 0x56, 0x2b, 0x3a, 0xe5, 0x1f, 0xe9, 0x66, 0x79, 0x8d,
+ 0x75, 0x0e, 0x38, 0x47, 0x59, 0x69, 0xdc, 0x29, 0x9d, 0xea, 0x50, 0x19,
+ 0x21, 0xe7, 0x90, 0x9b, 0x53, 0x2e, 0x87, 0x9c, 0x96, 0x88, 0x8e, 0x38,
+ 0x09, 0x38, 0x92, 0x2e, 0xca, 0x44, 0x83, 0xb6, 0x97, 0xa6, 0xed, 0x88,
+ 0x56, 0xbc, 0xe2, 0x43, 0x21, 0x85, 0x58, 0x44, 0x16, 0x5a, 0x7e, 0x74,
+ 0xa7, 0x29, 0x9c, 0xa8, 0x91, 0xde, 0x84, 0x44, 0x8c, 0x65, 0x32, 0x4e,
+ 0xd5, 0x7c, 0x23, 0x12, 0x66, 0x3e, 0x84, 0x95, 0x63, 0xf0, 0x37, 0xfa,
+ 0x0c, 0xad, 0xa3, 0x9e, 0xda, 0xce, 0x92, 0x1d, 0x6e, 0xa1, 0x51, 0x74,
+ 0x90, 0xef, 0x8a, 0x48, 0x58, 0x4e, 0xb2, 0xb9, 0xc6, 0xf6, 0x76, 0xa3,
+ 0x54, 0x20, 0x03, 0x80, 0x42, 0x79, 0x37, 0x16, 0xb1, 0x2f, 0xaf, 0x9a,
+ 0x44, 0x5b, 0xae, 0xf2, 0x74, 0x8d, 0x6e, 0xe3, 0x51, 0xb4, 0xd9, 0x68,
+ 0xfd, 0xd1, 0xce, 0x2e, 0x8d, 0xf6, 0xd1, 0xce, 0xd3, 0xad, 0x95, 0x97,
+ 0xf1, 0x47, 0x86, 0x2c, 0xa7, 0x93, 0xf3, 0x80, 0x03, 0xbf, 0x6e, 0x3c,
+ 0x4e, 0xf3, 0x5a, 0x6d, 0x3b, 0xed, 0x6e, 0x8e, 0x69, 0xf0, 0x98, 0x87,
+ 0xf8, 0x14, 0x7e, 0x33, 0x29, 0xd3, 0x98, 0xa0, 0x39, 0xee, 0x81, 0x92,
+ 0x4d, 0x86, 0x7b, 0x7c, 0x43, 0xc0, 0x3c, 0x14, 0x14, 0x9b, 0x64, 0x65,
+ 0x78, 0x3e, 0xa2, 0xba, 0x55, 0xe5, 0x15, 0x96, 0x83, 0xf7, 0x94, 0x36,
+ 0x7c, 0x4d, 0xde, 0xa3, 0xb8, 0x6d, 0x4a, 0xb8, 0x61, 0xa2, 0x4a, 0xe8,
+ 0x65, 0x06, 0x5e, 0x16, 0x9a, 0xa1, 0xe7, 0x8c, 0x05, 0xb7, 0x1d, 0xec,
+ 0x54, 0xb0, 0x48, 0x39, 0xdf, 0x8a, 0xbc, 0xed, 0x77, 0xc6, 0x80, 0xab,
+ 0x42, 0x64, 0xf4, 0x3c, 0x9b, 0x65, 0xe5, 0x15, 0x5a, 0xa4, 0xa6, 0x98,
+ 0x62, 0x74, 0xe9, 0x29, 0x70, 0xe4, 0x5e, 0x94, 0xab, 0x25, 0x89, 0x80,
+ 0x52, 0xf1, 0x0c, 0x00, 0x0b, 0x62, 0x12, 0x15, 0x2c, 0x43, 0xfe, 0x92,
+ 0x6b, 0x1f, 0xdb, 0x69, 0x06, 0xab, 0x4a, 0x66, 0xb4, 0x66, 0x08, 0x27,
+ 0x3d, 0xb9, 0x13, 0x7c, 0x00, 0xdc, 0x6c, 0x64, 0x14, 0x16, 0x33, 0xee,
+ 0x75, 0xbf, 0x4f, 0xe4, 0xdb, 0x67, 0xff, 0xfd, 0x05, 0x8a, 0xc7, 0xde,
+ 0x3c, 0x31, 0x30, 0x6a, 0x13, 0xf7, 0xfa, 0xac, 0x0f, 0xec, 0x99, 0x64,
+ 0x18, 0x34, 0xae, 0x15, 0x04, 0x72, 0x02, 0x9f, 0xfd, 0x88, 0xe1, 0xb3,
+ 0x5f, 0x99, 0x8f, 0xb7, 0xa8, 0xf8, 0x0f, 0xa2, 0x2f, 0xad, 0x38, 0x10,
+ 0x66, 0xdb, 0x3f, 0x41, 0xf1, 0x0f, 0xa7, 0xf5, 0xf5, 0x8f, 0x88, 0x1d,
+ 0xd8, 0x7a, 0xa6, 0x85, 0x6a, 0x38, 0x8f, 0xf1, 0x2a, 0x42, 0x10, 0xed,
+ 0xba, 0x5d, 0xa1, 0x29, 0x7d, 0x22, 0xb6, 0x52, 0x1a, 0xaa, 0xd6, 0x64,
+ 0xb0, 0x4c, 0x6b, 0x44, 0x4f, 0xf0, 0x4e, 0xb0, 0x03, 0x14, 0xe6, 0x82,
+ 0x6a, 0x11, 0x2f, 0x18, 0x8e, 0xd0, 0xe2, 0x0e, 0x95, 0x01, 0xbd, 0x9b,
+ 0x0b, 0x7f, 0xb0, 0x43, 0x01, 0x77, 0xa5, 0x04, 0x1d, 0xfc, 0x8a, 0x7b,
+ 0x66, 0xfc, 0x34, 0x13, 0x2f, 0x03, 0x04, 0x36, 0x44, 0x6c, 0xa8, 0x56,
+ 0x9c, 0x4c, 0x32, 0x5b, 0x3a, 0x03, 0xff, 0x8c, 0x31, 0x87, 0xee, 0x28,
+ 0xe2, 0xe7, 0xd1, 0x06, 0x4d, 0xff, 0x67, 0x03, 0x97, 0xb2, 0x21, 0x1f,
+ 0x4e, 0xd2, 0xaf, 0xbf, 0x45, 0xa0, 0x90, 0x0e, 0xaa, 0xee, 0x1b, 0xeb,
+ 0xed, 0xa5, 0x05, 0xb8, 0x72, 0xf7, 0xf1, 0xcb, 0xdd, 0xc0, 0x3e, 0x4a,
+ 0xb4, 0x0a, 0x79, 0x24, 0xbf, 0xe6, 0x3f, 0x5a, 0x90, 0xc9, 0xa8, 0xce,
+ 0xc5, 0xcb, 0x57, 0x47, 0xb0, 0xc1, 0x7d, 0x0b, 0x75, 0x2a, 0xd8, 0x27,
+ 0x8c, 0x60, 0x6a, 0xdd, 0x36, 0x6c, 0x35, 0xe3, 0xf6, 0x5a, 0xe4, 0x54,
+ 0x86, 0x01, 0xaa, 0xe1, 0xe8, 0x93, 0x21, 0x69, 0x92, 0x55, 0xb8, 0x1b,
+ 0xa0, 0x9c, 0x45, 0xa7, 0xb0, 0xbd, 0x38, 0xba, 0x8d, 0x6f, 0x37, 0x24,
+ 0x3e, 0x7d, 0xe3, 0xb0, 0x89, 0x17, 0x64, 0x20, 0x76, 0x4a, 0xe3, 0x38,
+ 0x89, 0x36, 0xfe, 0x84, 0x20, 0x61, 0x58, 0x05, 0x91, 0x67, 0x27, 0xfc,
+ 0x82, 0x07, 0x45, 0x09, 0x95, 0x70, 0x3a, 0xe5, 0x1a, 0x6d, 0x3a, 0x26,
+ 0xb9, 0x62, 0x7d, 0x1d, 0x14, 0x82, 0x0b, 0x96, 0xa5, 0x14, 0xe1, 0x64,
+ 0xa6, 0xac, 0x76, 0xa4, 0x8d, 0x92, 0xd1, 0x3d, 0xc9, 0xfd, 0xe9, 0x17,
+ 0x15, 0xa4, 0x9c, 0x75, 0xeb, 0xce, 0xe2, 0x01, 0xf1, 0x48, 0x28, 0xd6,
+ 0x76, 0x38, 0xa4, 0x9a, 0x01, 0x74, 0x07, 0xc1, 0x97, 0x97, 0x97, 0x8c,
+ 0x05, 0x4d, 0x73, 0xce, 0x9b, 0xda, 0x13, 0x4c, 0x3f, 0x1a, 0x83, 0x02,
+ 0x46, 0x86, 0x0e, 0x34, 0x30, 0x2c, 0x83, 0x32, 0x73, 0xf7, 0xf7, 0xd3,
+ 0xe1, 0x26, 0xbb, 0xbd, 0x74, 0xf0, 0x2e, 0xe9, 0x3c, 0x94, 0x56, 0x2d,
+ 0x69, 0x5a, 0x4c, 0x9d, 0x43, 0x17, 0x02, 0x34, 0x4c, 0x98, 0x0e, 0x5d,
+ 0xa2, 0x57, 0x91, 0x3e, 0x33, 0x51, 0x3f, 0xe3, 0x04, 0x28, 0xf5, 0x4e,
+ 0xd2, 0x6a, 0x27, 0x08, 0xd7, 0x28, 0x0a, 0x54, 0x3a, 0xf5, 0xc4, 0xa6,
+ 0x09, 0x05, 0x9c, 0x25, 0x0a, 0x76, 0x17, 0xa3, 0x85, 0x9c, 0x06, 0x81,
+ 0x6b, 0xc4, 0xf2, 0xa8, 0xc5, 0xc7, 0x13, 0xd4, 0xbb, 0x91, 0x83, 0x7a,
+ 0xd7, 0xdc, 0x7a, 0x17, 0x03, 0x4f, 0x2c, 0x38, 0xca, 0x12, 0x09, 0xbf,
+ 0x4f, 0x80, 0xdf, 0x16, 0xa5, 0x15, 0x01, 0x5c, 0x10, 0xef, 0x26, 0x61,
+ 0x2a, 0xd3, 0xdc, 0xa6, 0x15, 0x67, 0xac, 0xc1, 0x66, 0x89, 0x8c, 0xbd,
+ 0xfd, 0x2f, 0xbf, 0x0c, 0xfa, 0x5a, 0xb9, 0x48, 0x0d, 0xec, 0x30, 0x2e,
+ 0x94, 0x57, 0x19, 0x89, 0x4d, 0x37, 0x44, 0xfb, 0xa5, 0x3a, 0x19, 0xb1,
+ 0xd2, 0x70, 0x82, 0xbd, 0xfa, 0x81, 0x05, 0xc4, 0xba, 0xa7, 0x24, 0x12,
+ 0xb2, 0x34, 0x40, 0x56, 0x27, 0xbc, 0x7d, 0x61, 0x15, 0xc2, 0x17, 0x7a,
+ 0x2a, 0x88, 0x30, 0x0c, 0x7e, 0x24, 0xd5, 0xed, 0x05, 0xaf, 0x8e, 0xd9,
+ 0x7c, 0x5a, 0x0d, 0x09, 0xb2, 0x8e, 0x60, 0x00, 0x64, 0x39, 0x36, 0x5a,
+ 0x70, 0xd0, 0x37, 0x22, 0x4d, 0x56, 0x1b, 0x68, 0x25, 0x99, 0x2e, 0x1d,
+ 0xd2, 0xec, 0xb6, 0x51, 0x5e, 0x93, 0xd1, 0xe1, 0x66, 0xd1, 0xb7, 0x84,
+ 0xce, 0x89, 0x1d, 0x34, 0x9a, 0xa3, 0xb2, 0x07, 0x97, 0x69, 0xe5, 0x23,
+ 0xc5, 0x3a, 0x88, 0x61, 0x4b, 0x1a, 0x0f, 0x99, 0x8a, 0x05, 0xe9, 0x36,
+ 0x3a, 0x34, 0x55, 0x70, 0xb3, 0xb1, 0xf2, 0x0f, 0x54, 0xc2, 0x6e, 0xd0,
+ 0x7f, 0xf1, 0x2d, 0x6d, 0xc7, 0xa1, 0xac, 0xbd, 0x20, 0x3f, 0x7f, 0x1b,
+ 0xac, 0x89, 0x2d, 0xb0, 0x65, 0x54, 0x9f, 0xb9, 0xaa, 0x92, 0xe1, 0x95,
+ 0x15, 0x81, 0x08, 0x79, 0x8e, 0xca, 0xb4, 0x8a, 0x2f, 0x9b, 0x17, 0x98,
+ 0x71, 0x8f, 0xbc, 0xfc, 0x58, 0x42, 0x85, 0x36, 0x8d, 0x22, 0xf8, 0x8d,
+ 0x80, 0xfe, 0xe1, 0x50, 0x42, 0x2b, 0x51, 0x0a, 0xb7, 0x46, 0xee, 0x05,
+ 0x4f, 0x7b, 0xf7, 0x33, 0xbe, 0xeb, 0xac, 0x93, 0xbf, 0xf7, 0x6e, 0x0a,
+ 0x8e, 0xd4, 0x66, 0xe4, 0x25, 0xb6, 0x60, 0x71, 0xee, 0x3d, 0x9e, 0x98,
+ 0xd8, 0x83, 0x60, 0x99, 0xaf, 0x18, 0xa7, 0x6a, 0x6b, 0x17, 0x10, 0x65,
+ 0x5d, 0xa2, 0xf1, 0x14, 0x47, 0x49, 0x55, 0x19, 0x75, 0x55, 0x31, 0x36,
+ 0xae, 0x2a, 0x16, 0x58, 0x24, 0x87, 0x7d, 0x15, 0xd4, 0x95, 0x9f, 0xb9,
+ 0x8f, 0x0c, 0xb1, 0x5b, 0x9f, 0x31, 0xe6, 0xc1, 0x2e, 0x68, 0xbf, 0x68,
+ 0x95, 0xa5, 0x80, 0x3c, 0x1b, 0xbe, 0x61, 0x60, 0x06, 0x3e, 0xc1, 0xb7,
+ 0xf6, 0x88, 0x17, 0x80, 0xdc, 0x6a, 0x65, 0xf6, 0x1b, 0x6b, 0x82, 0x82,
+ 0x8d, 0xa5, 0xd1, 0x31, 0xe4, 0xca, 0x4a, 0xd1, 0x07, 0xfd, 0x0c, 0x28,
+ 0x6a, 0xc6, 0x22, 0x31, 0xd2, 0xdb, 0x46, 0xe9, 0x17, 0xa5, 0x4c, 0x74,
+ 0x71, 0xf9, 0xae, 0x44, 0xcd, 0xb1, 0x48, 0x2f, 0x17, 0x78, 0xf5, 0x32,
+ 0x16, 0x2e, 0x28, 0x8e, 0x57, 0xbc, 0xfd, 0x72, 0x9b, 0x66, 0x73, 0xcd,
+ 0xce, 0xf5, 0x20, 0x1b, 0xe0, 0xad, 0x2d, 0x9e, 0xf3, 0x0c, 0x96, 0xab,
+ 0x5a, 0xcc, 0x38, 0x10, 0x96, 0x4a, 0x86, 0x2e, 0x06, 0xbf, 0x52, 0xd0,
+ 0x51, 0x2e, 0x53, 0x67, 0x18, 0x5d, 0x8b, 0xb5, 0x98, 0x8e, 0x3d, 0xaf,
+ 0x43, 0x4a, 0x59, 0xff, 0xe4, 0x93, 0x4e, 0x28, 0x39, 0x58, 0x18, 0x00,
+ 0xd7, 0xf2, 0xc1, 0xbb, 0xe5, 0x4f, 0x4e, 0x50, 0x30, 0x09, 0xfd, 0xb4,
+ 0x26, 0x14, 0x3a, 0xe6, 0x9d, 0xea, 0xf7, 0xb3, 0xfc, 0x66, 0xa6, 0x5a,
+ 0x88, 0xc0, 0xb7, 0xb0, 0x9d, 0x9f, 0x44, 0x59, 0xcc, 0x00, 0xc4, 0xa9,
+ 0x2a, 0xd0, 0x1f, 0xb9, 0xb0, 0x61, 0xde, 0x04, 0xb8, 0x08, 0xfb, 0x75,
+ 0x17, 0x42, 0x3f, 0x65, 0x45, 0xfe, 0x57, 0xe3, 0x07, 0x40, 0xd6, 0xd7,
+ 0x2a, 0xac, 0x71, 0x5a, 0x2d, 0x26, 0xa9, 0x4e, 0x85, 0xa1, 0xd5, 0xad,
+ 0x1c, 0x5d, 0xd1, 0xb4, 0x36, 0x80, 0x77, 0xe2, 0xda, 0x6f, 0x84, 0xab,
+ 0xab, 0x33, 0xaa, 0xa2, 0x71, 0x7f, 0x10, 0xab, 0xe6, 0x63, 0x82, 0x2e,
+ 0x5e, 0xba, 0x43, 0x0c, 0x0f, 0x41, 0xd5, 0xa4, 0x48, 0x80, 0x63, 0xfe,
+ 0x3a, 0xbf, 0x6c, 0xc2, 0x7b, 0x39, 0x07, 0x96, 0xea, 0xd9, 0x7a, 0x58,
+ 0xe8, 0x72, 0xfd, 0x3e, 0x8f, 0x64, 0x3c, 0x5f, 0x7f, 0x5b, 0x6b, 0x2e,
+ 0x70, 0x05, 0x6f, 0x4b, 0xa5, 0xb3, 0xe1, 0x65, 0xb6, 0x7c, 0x11, 0x28,
+ 0xf0, 0xdb, 0x40, 0x58, 0x95, 0x57, 0x79, 0x2a, 0x3b, 0x37, 0x23, 0xbf,
+ 0x80, 0x65, 0x1b, 0xa5, 0xe2, 0xff, 0x04, 0xd1, 0x7c, 0xda, 0x87, 0x4c,
+ 0x77, 0xfa, 0x9f, 0xf3, 0xab, 0x19, 0xfe, 0x81, 0xed, 0x63, 0xf3, 0x5f,
+ 0xef, 0x06, 0x93, 0xc6, 0xb6, 0x5b, 0xc7, 0xea, 0x0c, 0x16, 0x6f, 0x21,
+ 0x01, 0x06, 0x72, 0x98, 0x5a, 0xcd, 0x15, 0xd2, 0x23, 0x48, 0xdd, 0x80,
+ 0x59, 0x02, 0x0f, 0x0f, 0x95, 0x38, 0x76, 0x5e, 0x65, 0xc8, 0x91, 0x20,
+ 0x2f, 0xcc, 0xcc, 0xc5, 0xc0, 0xd5, 0xec, 0x02, 0x2a, 0x4b, 0xfb, 0xc4,
+ 0x3b, 0x18, 0xa8, 0x70, 0xf7, 0xf5, 0xe1, 0xd5, 0xe2, 0x92, 0xaa, 0xa6,
+ 0x62, 0xbc, 0x42, 0xe7, 0x5e, 0xb3, 0x46, 0xa7, 0x0d, 0x7b, 0x6d, 0xd8,
+ 0xfa, 0x55, 0x39, 0x39, 0xe1, 0x04, 0xf6, 0x57, 0x13, 0x1d, 0x22, 0x53,
+ 0x76, 0x6b, 0x10, 0xae, 0x97, 0xb8, 0xc1, 0xf2, 0x71, 0x97, 0xd7, 0x4c,
+ 0xea, 0xbc, 0xd8, 0x02, 0x06, 0x4b, 0x66, 0x70, 0x93, 0x0e, 0xbe, 0xfe,
+ 0x16, 0x5d, 0x7d, 0xb7, 0xbd, 0xab, 0x6a, 0x3a, 0x61, 0x41, 0x1b, 0x57,
+ 0x6e, 0x1b, 0xff, 0xec, 0x44, 0x4b, 0x64, 0x3e, 0x90, 0x66, 0x5b, 0x9b,
+ 0x75, 0xb0, 0x50, 0x9d, 0x26, 0xc7, 0x79, 0xbe, 0xb4, 0x45, 0x75, 0x65,
+ 0xd1, 0x9a, 0x38, 0x00, 0x2e, 0x0c, 0x6b, 0x62, 0xb3, 0x11, 0x98, 0x1e,
+ 0xe8, 0x7e, 0xa9, 0x5d, 0x93, 0xa1, 0x72, 0x05, 0x14, 0xf7, 0xc6, 0xe6,
+ 0x40, 0xbd, 0x69, 0xbe, 0xee, 0x2a, 0x64, 0x68, 0x56, 0x2e, 0x59, 0x1a,
+ 0xd5, 0xd9, 0xa4, 0xc6, 0xe1, 0x9f, 0xcc, 0xeb, 0xf8, 0x0f, 0x9c, 0x62,
+ 0xb8, 0xaa, 0x97, 0xce, 0x06, 0x03, 0x17, 0xf4, 0x9d, 0x6d, 0x8a, 0xd8,
+ 0xd5, 0x68, 0xb7, 0x68, 0xa3, 0x8b, 0xca, 0x00, 0xe8, 0x35, 0x1b, 0x64,
+ 0x43, 0xd5, 0xec, 0x8e, 0x7f, 0x2c, 0x72, 0xe1, 0x6d, 0xa3, 0xdc, 0x13,
+ 0x67, 0x11, 0x77, 0x84, 0x1e, 0x28, 0x69, 0xf4, 0x2b, 0x07, 0xfe, 0x73,
+ 0x87, 0x86, 0xde, 0xc5, 0xbf, 0x7e, 0xee, 0xd8, 0xd1, 0xff, 0x4c, 0x9b,
+ 0xf3, 0xa7, 0x6c, 0xf6, 0x27, 0x9c, 0xc1, 0xcf, 0x9d, 0x87, 0xee, 0xb1,
+ 0xe8, 0xb4, 0x4e, 0x2f, 0x4e, 0x27, 0xb5, 0x3e, 0x3a, 0x1b, 0x51, 0x3b,
+ 0x30, 0xa8, 0x45, 0xe6, 0xcf, 0xc6, 0x4e, 0x75, 0x7a, 0x5e, 0x30, 0xbc,
+ 0x5c, 0x64, 0x51, 0x48, 0x88, 0x80, 0x65, 0xb1, 0xcb, 0xd0, 0xa5, 0x32,
+ 0x0c, 0x9e, 0x6d, 0xda, 0x3e, 0x81, 0x4b, 0x6c, 0xec, 0x0c, 0x24, 0xdd,
+ 0x65, 0xb6, 0xe0, 0x27, 0x11, 0x92, 0x2e, 0x3c, 0xab, 0xef, 0x23, 0xff,
+ 0xe2, 0x31, 0xaf, 0x7b, 0x17, 0xcd, 0x5f, 0xa1, 0x07, 0x83, 0x87, 0x40,
+ 0x04, 0x8b, 0xb2, 0xab, 0x60, 0x25, 0x10, 0x2c, 0xd6, 0x8c, 0xa3, 0x8e,
+ 0x45, 0x2d, 0x40, 0xd8, 0x8f, 0xcc, 0x96, 0x95, 0x28, 0x3d, 0x1e, 0x3b,
+ 0xcd, 0x40, 0x82, 0x27, 0xff, 0xec, 0x84, 0xd5, 0xe4, 0x6d, 0x64, 0xff,
+ 0x04, 0xf0, 0x53, 0xce, 0x13, 0x74, 0xfb, 0xa0, 0x4d, 0x4b, 0x34, 0x68,
+ 0x9e, 0x26, 0xaf, 0xcd, 0x12, 0x1a, 0xde, 0xc0, 0x26, 0x8b, 0xf2, 0xeb,
+ 0x0e, 0x08, 0x3f, 0x7f, 0x42, 0x5f, 0x5f, 0x3a, 0xfb, 0x13, 0x10, 0xd2,
+ 0x02, 0xb6, 0xca, 0x9e, 0xca, 0xdb, 0x78, 0x7a, 0x07, 0x03, 0xdf, 0x58,
+ 0x75, 0x32, 0x85, 0x5f, 0x8d, 0xb0, 0xb2, 0x36, 0xc7, 0x8f, 0x36, 0x93,
+ 0x30, 0xf8, 0x5c, 0x3a, 0x27, 0x4e, 0xbe, 0xff, 0xba, 0x69, 0x5e, 0x24,
+ 0xf8, 0x64, 0x0f, 0xb1, 0xd3, 0xb2, 0x55, 0xd2, 0xbf, 0xbe, 0x3e, 0xfb,
+ 0xcb, 0x9f, 0xb4, 0x81, 0x9f, 0x3b, 0x3f, 0xc6, 0xfc, 0x29, 0xe1, 0x85,
+ 0x1f, 0x44, 0x67, 0x7f, 0x59, 0x9f, 0x72, 0x97, 0x75, 0xf0, 0x2d, 0xff,
+ 0x42, 0x64, 0xbc, 0xac, 0x59, 0x94, 0xff, 0xf5, 0x9d, 0xe8, 0x7d, 0x7a,
+ 0x47, 0xb0, 0x8a, 0xa4, 0xf8, 0xcf, 0xe7, 0x88, 0x40, 0xa9, 0x08, 0xd9,
+ 0x15, 0x23, 0x64, 0x93, 0x91, 0x23, 0x19, 0xe4, 0x8c, 0xf9, 0x54, 0x79,
+ 0x71, 0xd3, 0xf0, 0x15, 0x86, 0x32, 0xfd, 0x43, 0x88, 0x89, 0x33, 0xb2,
+ 0x7a, 0x12, 0x8f, 0x53, 0xcf, 0x55, 0xa9, 0x83, 0x1e, 0x77, 0xa3, 0x13,
+ 0x8c, 0xef, 0xf3, 0xd6, 0x55, 0x2b, 0x75, 0xf1, 0x6f, 0x24, 0x6c, 0x51,
+ 0x29, 0x32, 0xd4, 0x9b, 0x36, 0x7e, 0xb7, 0x41, 0x6d, 0xa1, 0x75, 0x80,
+ 0x2e, 0x40, 0x72, 0xf3, 0x73, 0xe2, 0xc3, 0x9f, 0x42, 0x61, 0x0f, 0x12,
+ 0x5b, 0x26, 0xc6, 0x86, 0x71, 0x3e, 0x19, 0x49, 0x04, 0x06, 0x50, 0x39,
+ 0x6f, 0xb0, 0x6a, 0x3f, 0x28, 0x48, 0xe0, 0x52, 0x48, 0x54, 0x86, 0x74,
+ 0x1b, 0x90, 0x7e, 0x24, 0x16, 0x8c, 0x4d, 0xd5, 0x36, 0xb0, 0x37, 0x89,
+ 0x98, 0xc8, 0xff, 0x84, 0x9a, 0xfc, 0x20, 0x25, 0x23, 0x97, 0xc1, 0x72,
+ 0x8e, 0xc5, 0xc7, 0xd4, 0x5c, 0x3b, 0x5c, 0x5b, 0x73, 0x46, 0xf4, 0x90,
+ 0x70, 0x2e, 0x8d, 0xe2, 0x39, 0x63, 0x79, 0xc7, 0x17, 0xe4, 0xa6, 0x61,
+ 0xc7, 0xac, 0x26, 0x39, 0xe1, 0xdd, 0x11, 0x9e, 0xac, 0x09, 0x4b, 0xc6,
+ 0x15, 0xf2, 0x4f, 0x56, 0xf4, 0x3b, 0xf1, 0x47, 0x39, 0xd1, 0xcb, 0x34,
+ 0x7b, 0xd9, 0xac, 0x9e, 0xf7, 0xc2, 0x8f, 0x92, 0xf6, 0x12, 0xef, 0x1e,
+ 0x18, 0xed, 0x3c, 0x91, 0xc7, 0xc3, 0xcd, 0xbb, 0xc5, 0x73, 0x64, 0x54,
+ 0xd8, 0x23, 0x2d, 0xff, 0x92, 0xf6, 0xf7, 0x4c, 0xfb, 0x3e, 0x16, 0x6e,
+ 0x32, 0xe3, 0x8a, 0x32, 0xe1, 0x6e, 0x2f, 0x6c, 0xce, 0xb1, 0x7a, 0x18,
+ 0xac, 0x4d, 0xd7, 0x35, 0x0c, 0x88, 0x35, 0x55, 0x6a, 0xd9, 0x70, 0xa0,
+ 0xab, 0x5f, 0x3e, 0xae, 0xa2, 0xd2, 0x18, 0xa4, 0xdb, 0xd1, 0x3c, 0x3c,
+ 0x30, 0xea, 0x58, 0x04, 0x6b, 0x21, 0xac, 0x1c, 0xce, 0x22, 0xb0, 0xf8,
+ 0x03, 0x8e, 0xb7, 0xb2, 0xb5, 0x37, 0x32, 0x17, 0x1e, 0xcb, 0x42, 0x6f,
+ 0x07, 0xeb, 0x31, 0x2b, 0x00, 0x83, 0xe7, 0xd2, 0x45, 0xc6, 0xcb, 0x05,
+ 0xb8, 0x48, 0xf1, 0x90, 0x93, 0xb0, 0xb9, 0x21, 0xa6, 0x12, 0xec, 0x28,
+ 0x61, 0x77, 0xa7, 0x94, 0xe2, 0x4b, 0x08, 0x2c, 0x5c, 0x0c, 0x34, 0x71,
+ 0x40, 0xa4, 0x38, 0x20, 0x68, 0x65, 0x73, 0x26, 0x9c, 0x02, 0x4b, 0xaa,
+ 0x0c, 0x73, 0xa1, 0xba, 0x5a, 0x55, 0x25, 0x5f, 0xf3, 0x75, 0x96, 0x58,
+ 0x1a, 0x63, 0x85, 0x93, 0x22, 0x85, 0xe5, 0x50, 0x6c, 0x7c, 0xbd, 0xb5,
+ 0xd1, 0x5e, 0x28, 0xda, 0x88, 0xce, 0xf5, 0x7a, 0x4b, 0x6a, 0xfc, 0x2b,
+ 0xa9, 0xe6, 0x04, 0x34, 0x4d, 0xc6, 0xa2, 0x29, 0x86, 0xad, 0xa6, 0xb4,
+ 0x99, 0x94, 0x68, 0x56, 0x56, 0x21, 0x10, 0x40, 0xae, 0x07, 0x91, 0xcd,
+ 0xe8, 0x64, 0x72, 0x85, 0x1c, 0x26, 0x6f, 0x37, 0xa2, 0x81, 0x4b, 0xfb,
+ 0x96, 0x07, 0xae, 0x9c, 0xed, 0x5b, 0xfb, 0xd1, 0x1b, 0xdc, 0x8b, 0x5e,
+ 0x1a, 0x1b, 0x87, 0x63, 0xa2, 0x58, 0x26, 0x53, 0x6f, 0x7c, 0xbd, 0xc9,
+ 0x77, 0x93, 0x35, 0x90, 0x39, 0x7d, 0x6f, 0x44, 0x3f, 0x07, 0x81, 0x9e,
+ 0xe9, 0x45, 0x67, 0x38, 0x42, 0xaf, 0x4b, 0x1f, 0x8f, 0x0e, 0xd1, 0xf9,
+ 0xf7, 0x0d, 0x79, 0xad, 0xe5, 0xf9, 0xc3, 0x6d, 0xfa, 0xa8, 0x21, 0x05,
+ 0x2f, 0x6d, 0x65, 0x8b, 0x0d, 0xfc, 0x5f, 0x7f, 0x8b, 0x8f, 0xab, 0x12,
+ 0xb0, 0x11, 0xf5, 0x7a, 0xc0, 0x7a, 0xca, 0x69, 0x13, 0x5c, 0xce, 0x03,
+ 0xf1, 0x23, 0xd9, 0x80, 0x2e, 0x56, 0x14, 0x43, 0xa4, 0xc0, 0x0b, 0x19,
+ 0x69, 0x54, 0x61, 0x66, 0x7b, 0x22, 0x7f, 0x55, 0x7c, 0xdd, 0x8b, 0x8e,
+ 0x4c, 0x8e, 0x8d, 0x0f, 0xe3, 0xca, 0xde, 0x12, 0xbe, 0x31, 0xc4, 0x1a,
+ 0x87, 0x94, 0xf0, 0xe5, 0x20, 0x13, 0x5b, 0x3e, 0x43, 0xda, 0x53, 0x54,
+ 0x7a, 0x3a, 0x29, 0xa5, 0x96, 0x03, 0x5c, 0xe9, 0xe2, 0x22, 0xf4, 0x9a,
+ 0x2b, 0xd8, 0xc3, 0xcc, 0xc1, 0x23, 0x46, 0x25, 0x91, 0xa1, 0xc5, 0x27,
+ 0xe2, 0x9e, 0xb1, 0x81, 0xed, 0x4f, 0x4d, 0x4f, 0xe8, 0xe4, 0xf3, 0x10,
+ 0x3d, 0xa8, 0xcc, 0x71, 0xf4, 0x65, 0x8c, 0x4f, 0x59, 0x43, 0xbf, 0x52,
+ 0x7b, 0x3d, 0x46, 0xb5, 0x2b, 0x92, 0x5f, 0x4c, 0xd9, 0x4d, 0x01, 0x74,
+ 0x38, 0xe2, 0xff, 0x83, 0xa4, 0x4c, 0x9f, 0x3c, 0xd2, 0xc8, 0x43, 0x5e,
+ 0xa5, 0x52, 0x65, 0xae, 0x9a, 0x3d, 0x95, 0x6f, 0x1f, 0x67, 0x42, 0x4d,
+ 0x09, 0x8c, 0x40, 0xa9, 0x51, 0xfc, 0x02, 0xbd, 0xa9, 0x62, 0x70, 0x06,
+ 0xbc, 0x43, 0x41, 0x54, 0xbc, 0xac, 0x08, 0x18, 0xf1, 0xe9, 0x13, 0x67,
+ 0xd0, 0x2b, 0x2c, 0x0f, 0x0d, 0xfe, 0x29, 0x33, 0x6c, 0xce, 0x28, 0x62,
+ 0x6a, 0x45, 0xf2, 0xf3, 0x62, 0x08, 0xd0, 0x6c, 0xc1, 0x75, 0xda, 0x64,
+ 0x8e, 0xc6, 0x56, 0xb8, 0xea, 0x00, 0xb9, 0x27, 0xe0, 0x4f, 0x4a, 0x38,
+ 0xcd, 0xae, 0x97, 0x12, 0xb5, 0xa3, 0xf5, 0xe8, 0xfb, 0x3c, 0x08, 0x26,
+ 0xec, 0xd5, 0x74, 0x8d, 0xfe, 0x80, 0xf1, 0xa2, 0xa0, 0x3b, 0x47, 0x1e,
+ 0x63, 0xd1, 0x60, 0x94, 0x32, 0xc0, 0xa0, 0x48, 0xe2, 0xaf, 0x8e, 0x5e,
+ 0xbf, 0x3d, 0x3a, 0x6d, 0x71, 0x76, 0x7c, 0x62, 0x2f, 0x47, 0xbd, 0xa6,
+ 0x81, 0x7c, 0x64, 0x1d, 0x75, 0x78, 0x3d, 0x74, 0xd6, 0xc5, 0xbd, 0x31,
+ 0x35, 0x2d, 0xba, 0x0d, 0x57, 0x8a, 0xc4, 0x04, 0x5a, 0x5f, 0xa1, 0x89,
+ 0x5c, 0x08, 0x16, 0x42, 0x6f, 0x47, 0xcb, 0x6e, 0x54, 0x26, 0xaa, 0xd5,
+ 0x27, 0xa0, 0x92, 0x04, 0x3e, 0xaa, 0x79, 0xb8, 0x40, 0x01, 0x82, 0x56,
+ 0xe2, 0x01, 0xc1, 0x78, 0xde, 0x70, 0x05, 0x23, 0xce, 0xc1, 0x96, 0x08,
+ 0x21, 0x27, 0x7b, 0x39, 0x29, 0xdf, 0xb3, 0xf1, 0xa4, 0xa3, 0xef, 0xb3,
+ 0x9f, 0x88, 0xe1, 0x62, 0x0c, 0x62, 0x7a, 0xe0, 0xb8, 0x1a, 0x20, 0x72,
+ 0x13, 0xf6, 0xaf, 0x4e, 0x5b, 0xb9, 0x8e, 0x6b, 0x06, 0xc1, 0x7c, 0x3c,
+ 0x76, 0xbc, 0x29, 0x4d, 0x14, 0x94, 0xe3, 0xe3, 0x76, 0x0c, 0x68, 0xce,
+ 0x19, 0x70, 0x67, 0xf8, 0xd9, 0xb2, 0x9f, 0xdc, 0x41, 0x74, 0xa6, 0x45,
+ 0xaf, 0xc8, 0x07, 0x79, 0xd5, 0x59, 0x0b, 0x76, 0xd4, 0xe0, 0xaf, 0x7b,
+ 0xdb, 0x67, 0x2f, 0xc6, 0xb8, 0xca, 0x19, 0xbe, 0xfe, 0x50, 0xd6, 0x24,
+ 0xbc, 0x9b, 0x58, 0xe0, 0xc7, 0x01, 0xee, 0x57, 0xcd, 0x80, 0x30, 0x23,
+ 0xfb, 0x27, 0x6f, 0x68, 0x93, 0xce, 0x8f, 0xfa, 0xfd, 0xc8, 0xa0, 0xa2,
+ 0x4b, 0x88, 0x67, 0xd7, 0xd3, 0x57, 0x49, 0xfa, 0xa6, 0xe0, 0x0e, 0xdd,
+ 0x05, 0xcd, 0x23, 0x88, 0xb4, 0x52, 0x39, 0xed, 0x1c, 0x1c, 0x8b, 0x8b,
+ 0xc5, 0x14, 0x38, 0x0e, 0x28, 0x0a, 0xa3, 0x8d, 0x52, 0xa2, 0x3b, 0x9a,
+ 0x12, 0x28, 0xd5, 0x1b, 0x67, 0x01, 0x94, 0x68, 0x8c, 0xc0, 0x25, 0x9e,
+ 0x23, 0xfe, 0x86, 0x50, 0x00, 0x5e, 0x93, 0x1c, 0x0f, 0xe3, 0x02, 0x4a,
+ 0x74, 0xc3, 0x8e, 0x85, 0x4e, 0xff, 0xe5, 0xc5, 0x09, 0xd0, 0xc8, 0xdb,
+ 0x8b, 0x17, 0x1d, 0xd9, 0xbe, 0x66, 0x49, 0x0d, 0x72, 0x60, 0xc0, 0xd9,
+ 0x4c, 0xaf, 0x0d, 0x64, 0x72, 0xc1, 0xc6, 0x25, 0x3f, 0xa4, 0x8c, 0xae,
+ 0x0e, 0xdb, 0x69, 0x4b, 0x34, 0x42, 0xcb, 0x86, 0xdc, 0x83, 0xf0, 0xbc,
+ 0xb5, 0xad, 0x3e, 0x42, 0x9a, 0x4a, 0xdb, 0x78, 0x3a, 0x6f, 0x1f, 0xef,
+ 0x17, 0x01, 0x02, 0x5c, 0x12, 0x4a, 0xe2, 0xd2, 0x30, 0x71, 0x9d, 0x56,
+ 0x8a, 0xe4, 0x34, 0xb3, 0x78, 0x04, 0x22, 0x7b, 0x80, 0xfe, 0xa0, 0x51,
+ 0xa2, 0x42, 0x21, 0x13, 0xe1, 0x2a, 0xe8, 0xce, 0xc4, 0x9f, 0x6f, 0xdf,
+ 0x9c, 0x6e, 0x73, 0x96, 0x88, 0x54, 0xcc, 0x21, 0x53, 0x6e, 0x42, 0xe4,
+ 0xe9, 0x15, 0xa6, 0x34, 0x31, 0xf6, 0x36, 0xac, 0x28, 0xbd, 0xa5, 0xf4,
+ 0xe7, 0x59, 0x2d, 0x11, 0x8e, 0x9d, 0xf4, 0x30, 0xe8, 0xa4, 0x18, 0x19,
+ 0x28, 0x64, 0x5f, 0x85, 0xd0, 0xd4, 0x17, 0x4c, 0xf1, 0xa4, 0x10, 0xd0,
+ 0xb7, 0x92, 0xf6, 0xea, 0x00, 0x54, 0xdb, 0x1c, 0x2a, 0xf5, 0x70, 0xd9,
+ 0xf4, 0x96, 0x30, 0x4a, 0x04, 0x79, 0x4f, 0xd0, 0x5a, 0x93, 0x61, 0x5e,
+ 0x6c, 0x0e, 0xc4, 0xb6, 0x22, 0x0a, 0xa9, 0xbe, 0x82, 0x4b, 0x23, 0xf4,
+ 0x1e, 0x10, 0x85, 0x54, 0x6f, 0xfd, 0x21, 0xf4, 0xe4, 0x0e, 0x4e, 0x13,
+ 0x9e, 0x7c, 0x4e, 0x56, 0xa4, 0x53, 0x90, 0x35, 0xc8, 0x82, 0xb7, 0x8d,
+ 0x8f, 0x2c, 0xcb, 0x7f, 0x0a, 0x8d, 0x87, 0xfb, 0x92, 0x70, 0xcc, 0x43,
+ 0xfe, 0x19, 0x66, 0x67, 0x24, 0x92, 0x16, 0xf9, 0x84, 0x6d, 0xe6, 0xf2,
+ 0x06, 0x67, 0xa6, 0x31, 0x6e, 0x9a, 0xc1, 0xea, 0x49, 0xc8, 0xdb, 0x4f,
+ 0x03, 0xc6, 0xcc, 0xb6, 0xa6, 0xeb, 0x10, 0x5a, 0xdb, 0xec, 0x6f, 0x19,
+ 0xdf, 0xc2, 0x05, 0x79, 0xcf, 0xa9, 0xb5, 0x00, 0xb2, 0x9f, 0x53, 0xa7,
+ 0x55, 0xd4, 0xae, 0x90, 0x2a, 0xe5, 0x9c, 0x3d, 0xdf, 0x8e, 0x40, 0x3b,
+ 0x3b, 0xbc, 0x19, 0xb5, 0x54, 0xbe, 0x24, 0x3f, 0x00, 0x91, 0x38, 0x59,
+ 0x46, 0x38, 0x0d, 0xfa, 0xf8, 0x87, 0x67, 0x91, 0x3d, 0x1f, 0x9a, 0xa9,
+ 0xc2, 0x27, 0x44, 0x54, 0xb5, 0xb6, 0xda, 0x92, 0xa9, 0x4d, 0xb7, 0xea,
+ 0x51, 0xfc, 0xc0, 0x28, 0x4d, 0xe7, 0xd1, 0x55, 0x06, 0x8d, 0x15, 0xc3,
+ 0xab, 0x8c, 0xc0, 0xc9, 0x28, 0x02, 0x16, 0x03, 0x06, 0xa6, 0x14, 0xfe,
+ 0x12, 0x40, 0x97, 0x33, 0x4e, 0x6c, 0x8c, 0xa6, 0xb3, 0xf1, 0xee, 0x57,
+ 0xf9, 0x0d, 0x05, 0x2b, 0xec, 0x3e, 0xdd, 0xff, 0x12, 0xc4, 0xd6, 0xbb,
+ 0x12, 0x89, 0xcf, 0xae, 0x16, 0x95, 0x7a, 0x0f, 0x55, 0x63, 0xb2, 0x5e,
+ 0x5b, 0x17, 0x18, 0x69, 0xa0, 0xb5, 0xb0, 0x51, 0xaf, 0x26, 0xeb, 0xac,
+ 0xc0, 0x97, 0xfb, 0x25, 0x8b, 0x60, 0xfd, 0x64, 0xad, 0x84, 0x1b, 0xd0,
+ 0x12, 0x71, 0xa8, 0x75, 0xcf, 0x39, 0xae, 0xa0, 0xf4, 0x44, 0xfd, 0x97,
+ 0xff, 0x7d, 0x02, 0x97, 0xc5, 0x9b, 0x93, 0x8b, 0x37, 0xf0, 0xa3, 0x7f,
+ 0x71, 0xf6, 0xa6, 0xa5, 0xc4, 0x6b, 0xc5, 0x95, 0x48, 0x70, 0xbd, 0x34,
+ 0xb8, 0x91, 0x79, 0x50, 0xad, 0x8c, 0x21, 0x25, 0x76, 0xf2, 0x85, 0x42,
+ 0xd1, 0xb7, 0x2b, 0xd6, 0xea, 0xc2, 0x89, 0xca, 0xc0, 0x98, 0xbc, 0xa5,
+ 0x13, 0xe3, 0xed, 0x5e, 0x4e, 0x1c, 0x34, 0x61, 0xa4, 0x43, 0x9c, 0xb1,
+ 0xb9, 0xc2, 0x69, 0xb4, 0x15, 0x50, 0x2c, 0x5c, 0x20, 0xca, 0x73, 0xee,
+ 0x4c, 0xfa, 0x79, 0x4b, 0x59, 0x54, 0xce, 0xcb, 0x2b, 0xb9, 0x40, 0x2a,
+ 0xd3, 0x34, 0x99, 0xad, 0x3b, 0x8a, 0xf6, 0xdf, 0x89, 0x36, 0xc9, 0x5d,
+ 0x22, 0x22, 0xfb, 0x0a, 0xd2, 0x05, 0x35, 0x61, 0xcb, 0x4e, 0xb8, 0xcc,
+ 0xa7, 0x29, 0xfb, 0xb3, 0x38, 0x33, 0x4f, 0x59, 0x31, 0x4b, 0x0d, 0x5c,
+ 0xde, 0x3a, 0x0a, 0x95, 0xfc, 0x50, 0xc7, 0x16, 0xed, 0xf2, 0x86, 0x57,
+ 0x29, 0x9d, 0xf7, 0x25, 0x9d, 0xc1, 0x21, 0xa3, 0x72, 0x85, 0x1b, 0x3a,
+ 0xaa, 0x8d, 0x66, 0x85, 0x26, 0x87, 0x95, 0x7c, 0x82, 0x0a, 0x4d, 0x7e,
+ 0xb5, 0x54, 0xa7, 0x3f, 0x1d, 0x53, 0x80, 0x45, 0xc2, 0xee, 0xec, 0xe2,
+ 0x3f, 0x7b, 0xcc, 0x20, 0xdb, 0xdb, 0x60, 0x2a, 0xff, 0x80, 0x06, 0x0c,
+ 0x35, 0xad, 0x6e, 0xc4, 0xaf, 0x1b, 0x35, 0xc1, 0x7b, 0x1e, 0x51, 0x45,
+ 0x62, 0x54, 0xe7, 0x9b, 0x1c, 0x1a, 0xeb, 0x77, 0x04, 0xd9, 0x32, 0xc6,
+ 0xda, 0xd5, 0xea, 0x85, 0x68, 0x8c, 0x20, 0x57, 0xb7, 0x13, 0xe9, 0x10,
+ 0x83, 0xa9, 0xce, 0xb5, 0xe6, 0x44, 0x56, 0x86, 0x84, 0x7c, 0x02, 0x5e,
+ 0xa4, 0x32, 0x34, 0x86, 0x3d, 0xc8, 0xa9, 0xe9, 0x0a, 0x52, 0x5e, 0xe3,
+ 0x96, 0x6e, 0x54, 0x81, 0x68, 0xfa, 0x04, 0x60, 0xcb, 0x0b, 0xd8, 0x7d,
+ 0x94, 0x2b, 0x8a, 0x14, 0x9a, 0x21, 0x4c, 0x40, 0x53, 0xb6, 0x44, 0xa0,
+ 0x81, 0x9a, 0xe7, 0xf1, 0x4d, 0x4a, 0xf0, 0x3c, 0xa4, 0xc4, 0x45, 0xe9,
+ 0x8c, 0x02, 0x9a, 0x46, 0x66, 0x7e, 0x58, 0x61, 0x0c, 0xc3, 0x99, 0x59,
+ 0x1a, 0x19, 0xe5, 0x74, 0xfb, 0xe2, 0xd8, 0x30, 0x25, 0x9c, 0xbc, 0x43,
+ 0x81, 0x68, 0x7e, 0x23, 0x41, 0x48, 0x73, 0xd6, 0x38, 0x31, 0xac, 0xdc,
+ 0x11, 0xd1, 0x15, 0xee, 0x8b, 0x0c, 0xee, 0xd2, 0x4a, 0x90, 0x17, 0x25,
+ 0x31, 0x19, 0x8e, 0x57, 0x71, 0xd1, 0x88, 0x7a, 0xf1, 0x0f, 0xa9, 0xd6,
+ 0x11, 0x4a, 0x87, 0x9d, 0x49, 0x65, 0x8e, 0xc5, 0x6c, 0x82, 0x69, 0xb0,
+ 0x8d, 0x12, 0x09, 0x12, 0x57, 0xb3, 0x52, 0x74, 0x41, 0x7a, 0xb8, 0x97,
+ 0xcc, 0x12, 0xad, 0x97, 0xde, 0xd7, 0x56, 0x2a, 0xe6, 0x1e, 0x02, 0x0b,
+ 0x0d, 0xe9, 0xc1, 0xf5, 0x59, 0x8c, 0x70, 0x55, 0x2f, 0xf3, 0xd0, 0x8e,
+ 0x53, 0xfc, 0x5c, 0x32, 0xf5, 0x90, 0x60, 0x52, 0x45, 0x89, 0x53, 0xd2,
+ 0xcd, 0x66, 0x19, 0x96, 0xb3, 0xca, 0x8b, 0x6d, 0x3c, 0x51, 0x58, 0x73,
+ 0x34, 0x02, 0xd1, 0x45, 0x93, 0x70, 0x02, 0xa1, 0x71, 0xaa, 0x43, 0xd1,
+ 0x52, 0x40, 0xd3, 0xbd, 0x00, 0x60, 0x0c, 0xcd, 0x15, 0xa5, 0x1c, 0xa9,
+ 0xda, 0x41, 0x44, 0xd1, 0xe3, 0x35, 0x08, 0xed, 0xb3, 0x54, 0x24, 0xa8,
+ 0x2b, 0x42, 0x72, 0x22, 0xc9, 0xdb, 0x69, 0x4c, 0x65, 0xa4, 0x6c, 0x6d,
+ 0x94, 0xad, 0xc0, 0x6a, 0xb2, 0x06, 0xac, 0xd7, 0xc3, 0xaa, 0x74, 0x39,
+ 0x44, 0xad, 0x7e, 0xf0, 0xc9, 0x54, 0x50, 0xef, 0x0c, 0x18, 0xec, 0x62,
+ 0xee, 0x4b, 0x60, 0x2f, 0xcf, 0x6d, 0x93, 0x52, 0xce, 0x3b, 0xe7, 0x88,
+ 0x72, 0xa4, 0x09, 0x67, 0x90, 0x08, 0xc6, 0x6f, 0x36, 0xc0, 0xca, 0x19,
+ 0x1e, 0x82, 0x0c, 0xca, 0x68, 0x9e, 0xdc, 0xd5, 0x06, 0xbe, 0xae, 0xb7,
+ 0x7f, 0xef, 0xb2, 0x17, 0x75, 0x10, 0x00, 0xbe, 0x43, 0x43, 0x15, 0xc8,
+ 0x2d, 0x0e, 0xf4, 0x31, 0xef, 0xc2, 0xa2, 0xd4, 0x46, 0xeb, 0x57, 0xf6,
+ 0x55, 0xbb, 0x01, 0x57, 0x5a, 0xa1, 0xfd, 0xd9, 0x7c, 0x3b, 0xcb, 0x6e,
+ 0xc9, 0x2a, 0xea, 0x43, 0x02, 0x1a, 0x6c, 0xdd, 0x65, 0xa3, 0x52, 0x0c,
+ 0x5b, 0x44, 0x07, 0xaf, 0x8d, 0x8e, 0xbc, 0x26, 0xb7, 0xb0, 0xff, 0x6e,
+ 0x43, 0x01, 0x58, 0xca, 0xa8, 0xbd, 0x72, 0x3b, 0xf7, 0x30, 0xbd, 0xeb,
+ 0xe1, 0x73, 0xbd, 0x51, 0x3e, 0x85, 0x13, 0xe8, 0xf5, 0x31, 0x25, 0x38,
+ 0x13, 0x4f, 0x9a, 0x8f, 0x6d, 0x68, 0xa3, 0x4a, 0xae, 0xf3, 0x0c, 0xe9,
+ 0x48, 0x73, 0x17, 0xed, 0xa8, 0xc4, 0xcf, 0x5f, 0x6a, 0x05, 0x73, 0x62,
+ 0x2b, 0xe1, 0x11, 0xe9, 0x8d, 0x21, 0x68, 0x8f, 0xce, 0xa5, 0x61, 0xfa,
+ 0x7f, 0xe6, 0x17, 0x3c, 0xa2, 0xc2, 0x60, 0xcd, 0x0a, 0x53, 0xb5, 0x07,
+ 0x1d, 0x44, 0x02, 0xa9, 0xb6, 0x6c, 0x6e, 0x74, 0x2a, 0x91, 0x66, 0x60,
+ 0x0d, 0x4c, 0x51, 0x66, 0x6d, 0x56, 0x43, 0x6f, 0x9a, 0x15, 0xc0, 0x4c,
+ 0x65, 0x2e, 0xbe, 0x09, 0xb4, 0x39, 0x7c, 0xe7, 0x8f, 0x7f, 0xb4, 0x3c,
+ 0xab, 0x16, 0xdb, 0x82, 0xce, 0x62, 0xe8, 0xa4, 0x73, 0xf0, 0x13, 0x39,
+ 0x9d, 0x7e, 0x89, 0x7f, 0x82, 0x3f, 0x7f, 0xe9, 0xe8, 0xd9, 0xe3, 0x1a,
+ 0x6e, 0x36, 0xe9, 0x9e, 0x57, 0x0f, 0x21, 0x58, 0xcc, 0x8d, 0xe6, 0x07,
+ 0x0c, 0x5d, 0x1c, 0x9f, 0xcb, 0x99, 0x29, 0x38, 0x5a, 0x86, 0x66, 0x88,
+ 0x3c, 0x83, 0x54, 0x23, 0xbc, 0x25, 0x08, 0x0e, 0x54, 0x76, 0x34, 0xa1,
+ 0x67, 0xb5, 0x39, 0x7a, 0xa5, 0xab, 0x0e, 0x66, 0x14, 0xbd, 0xe9, 0xac,
+ 0x26, 0xa0, 0x23, 0x5c, 0xa2, 0x0d, 0x97, 0xf1, 0xa1, 0x7b, 0xd1, 0x91,
+ 0x2a, 0x23, 0xfc, 0x01, 0x95, 0x80, 0x2b, 0x09, 0x10, 0xf3, 0x06, 0x06,
+ 0x64, 0x8c, 0x44, 0x78, 0xff, 0x91, 0xd8, 0x3d, 0xb3, 0xe0, 0x62, 0x58,
+ 0xfa, 0x64, 0x86, 0xfa, 0x9e, 0xd6, 0x16, 0x2f, 0xb2, 0xf2, 0x3d, 0x4e,
+ 0x52, 0xf0, 0x12, 0x9c, 0xe8, 0x42, 0x9a, 0xc5, 0x34, 0x31, 0x6b, 0x29,
+ 0x15, 0x6d, 0x0c, 0xba, 0x58, 0x4d, 0xc6, 0x73, 0xf8, 0xf2, 0x9a, 0x49,
+ 0x20, 0x8a, 0x98, 0xb0, 0xae, 0x8c, 0x77, 0x0e, 0x34, 0x4f, 0x77, 0x4a,
+ 0x7b, 0xfd, 0xf9, 0x73, 0xae, 0x22, 0xb1, 0xf2, 0x29, 0x17, 0x98, 0xda,
+ 0x7b, 0xf8, 0x8b, 0xb0, 0x25, 0x86, 0xee, 0x34, 0x01, 0x37, 0x0d, 0x96,
+ 0x30, 0x93, 0xc7, 0x8a, 0x34, 0x5c, 0x21, 0xd1, 0x2d, 0x40, 0xa2, 0xf5,
+ 0x47, 0x92, 0xe8, 0x1c, 0x54, 0x23, 0x43, 0xfd, 0x4e, 0xb9, 0x2e, 0xc6,
+ 0x82, 0x43, 0x41, 0x62, 0xab, 0x69, 0x6b, 0x38, 0x4e, 0x0b, 0x72, 0x7f,
+ 0x5b, 0xd3, 0x30, 0x61, 0x7e, 0x65, 0x98, 0xde, 0x35, 0x2a, 0x60, 0x0c,
+ 0x18, 0xb7, 0x2c, 0x30, 0xee, 0x6a, 0x2b, 0xc4, 0xb0, 0x18, 0x55, 0x02,
+ 0x3c, 0x6f, 0x93, 0x1c, 0x3d, 0xae, 0x4c, 0x64, 0xf4, 0x17, 0x82, 0xb5,
+ 0x63, 0xb7, 0x56, 0x49, 0x64, 0x86, 0x3f, 0xe9, 0x0a, 0x41, 0x34, 0x87,
+ 0x9b, 0x19, 0x5a, 0xb7, 0x4b, 0x5f, 0xf9, 0xa5, 0xc1, 0x4f, 0x43, 0x55,
+ 0xce, 0x3d, 0xb9, 0x05, 0x56, 0xea, 0x53, 0xc9, 0x2d, 0x45, 0x5a, 0x3d,
+ 0x48, 0x6e, 0xc1, 0x21, 0xad, 0x23, 0xb7, 0xd4, 0x05, 0x14, 0xf1, 0x36,
+ 0x78, 0x82, 0x13, 0x7f, 0x56, 0xbe, 0xcf, 0xf8, 0x8b, 0x38, 0x9b, 0xaf,
+ 0xae, 0x2b, 0xa7, 0xf5, 0xfd, 0xf0, 0x04, 0xd5, 0x58, 0xb9, 0xb9, 0xd4,
+ 0xcb, 0xc5, 0xe5, 0x25, 0x15, 0x4d, 0xf0, 0x23, 0xb2, 0xab, 0xd2, 0x66,
+ 0xc0, 0xe2, 0x1d, 0x8e, 0x09, 0x51, 0x25, 0x6f, 0x4d, 0xad, 0x26, 0x1d,
+ 0x75, 0x26, 0x3c, 0xbe, 0x14, 0xb1, 0x09, 0x74, 0x05, 0x1f, 0x77, 0xc2,
+ 0x68, 0x0e, 0xd1, 0x4b, 0x61, 0xd0, 0x56, 0xea, 0x2d, 0xd2, 0x58, 0x07,
+ 0xda, 0xbc, 0x78, 0x70, 0x7b, 0xbc, 0xcc, 0x07, 0x73, 0x07, 0x95, 0x4b,
+ 0xae, 0x1b, 0x1f, 0x87, 0x93, 0xd8, 0x14, 0xf5, 0xfa, 0xb4, 0xf7, 0xf4,
+ 0x51, 0x6f, 0xa7, 0xa6, 0x7f, 0x98, 0xdc, 0x08, 0x0e, 0xe3, 0x63, 0xd1,
+ 0x6f, 0x29, 0x5a, 0x88, 0x52, 0x1a, 0x63, 0x86, 0x66, 0x63, 0x29, 0xfe,
+ 0xc9, 0xd5, 0x1b, 0x0b, 0x53, 0x0d, 0x8e, 0xe1, 0x39, 0xe5, 0x56, 0x6a,
+ 0x0a, 0x3b, 0x63, 0x5a, 0xd2, 0x95, 0x84, 0xee, 0x6e, 0xfc, 0x47, 0x4e,
+ 0xfc, 0x6f, 0xb4, 0xfe, 0x10, 0x9a, 0xaf, 0x8d, 0x6e, 0x2d, 0x99, 0xbd,
+ 0x95, 0xd0, 0xcb, 0x49, 0x3c, 0x1c, 0x0e, 0x63, 0x12, 0x45, 0x0f, 0x59,
+ 0x42, 0xde, 0x16, 0xf9, 0x34, 0x2c, 0xbb, 0xf7, 0x53, 0x21, 0xbf, 0xe3,
+ 0xe3, 0x63, 0x11, 0xa5, 0x2f, 0xae, 0x1a, 0x32, 0xad, 0x29, 0xb2, 0x26,
+ 0x02, 0x7d, 0x10, 0x71, 0xa5, 0xbc, 0x5a, 0x54, 0xc8, 0x9c, 0x58, 0x4f,
+ 0x55, 0x61, 0xc2, 0x80, 0x82, 0x35, 0xaa, 0x4b, 0xe7, 0xb0, 0xa6, 0x5d,
+ 0x1b, 0xa1, 0xef, 0x97, 0x40, 0x2c, 0x52, 0x46, 0xea, 0xe6, 0x17, 0xa5,
+ 0x6d, 0x8b, 0xf3, 0xe8, 0xda, 0x2d, 0xdd, 0xf2, 0x7d, 0x3a, 0xc2, 0x32,
+ 0xe0, 0xd0, 0x30, 0xad, 0x50, 0xb7, 0x49, 0x26, 0x01, 0xd1, 0x89, 0xf4,
+ 0xd5, 0x6c, 0x7b, 0x25, 0x6d, 0xb9, 0x6b, 0xfd, 0xf1, 0x69, 0xcb, 0x69,
+ 0xfd, 0x41, 0xb4, 0xe5, 0x8e, 0x4e, 0x56, 0xa8, 0xf6, 0x0d, 0x12, 0x5c,
+ 0xb9, 0x1e, 0xc5, 0xc9, 0x9b, 0x2d, 0x44, 0xd7, 0x6a, 0x18, 0x41, 0xca,
+ 0xda, 0x3c, 0xa6, 0x72, 0xd5, 0xc7, 0xc2, 0x02, 0x8f, 0xaf, 0x30, 0x62,
+ 0x7b, 0x82, 0x68, 0xb1, 0xb0, 0x29, 0x18, 0xbe, 0x80, 0xfb, 0xc2, 0x6c,
+ 0xb0, 0xdf, 0x3f, 0xdd, 0xbe, 0x38, 0xed, 0x7b, 0xb9, 0x6d, 0x77, 0xe8,
+ 0x88, 0x25, 0x87, 0x6b, 0xdd, 0xa1, 0xc7, 0x44, 0x50, 0xa4, 0x8c, 0x04,
+ 0x5b, 0xe3, 0x69, 0xdc, 0x4b, 0xb0, 0x6e, 0xc8, 0x62, 0xa6, 0xe9, 0xe3,
+ 0xc6, 0xe5, 0x34, 0x4b, 0x67, 0x04, 0x54, 0x8b, 0x41, 0x74, 0xc4, 0xaf,
+ 0x28, 0xf3, 0xa5, 0x8c, 0x5e, 0x1f, 0x5d, 0x60, 0x42, 0x78, 0x25, 0x71,
+ 0x9f, 0x68, 0x01, 0xf7, 0x32, 0xef, 0xa4, 0x7e, 0xba, 0x29, 0x24, 0x9a,
+ 0x0c, 0x15, 0x74, 0xd9, 0x1a, 0x7a, 0xa7, 0x02, 0x44, 0x23, 0x67, 0x6b,
+ 0x05, 0x6a, 0x89, 0xb3, 0x53, 0xed, 0x09, 0xda, 0x1f, 0x4e, 0x60, 0x1f,
+ 0x40, 0x5b, 0x41, 0x0a, 0x6a, 0x25, 0x20, 0x78, 0xc9, 0xb9, 0xa5, 0xc3,
+ 0xe4, 0xed, 0x7c, 0xc7, 0x5b, 0x18, 0xa4, 0xa9, 0x37, 0x22, 0x60, 0x09,
+ 0xa1, 0x18, 0xf6, 0x42, 0xfe, 0xb6, 0x49, 0x7e, 0x99, 0x11, 0x40, 0x18,
+ 0xd1, 0x1b, 0x4b, 0x56, 0x1a, 0x66, 0xe3, 0xd5, 0x15, 0xe1, 0xfd, 0x8d,
+ 0x04, 0x3e, 0xbf, 0x51, 0xe1, 0x9d, 0x19, 0x19, 0x8a, 0x6f, 0x86, 0x2e,
+ 0xd8, 0x9c, 0x67, 0x50, 0xac, 0x02, 0x79, 0xc1, 0xb0, 0x15, 0xd9, 0x30,
+ 0x83, 0x17, 0x30, 0xa6, 0xf5, 0x39, 0xe3, 0x8a, 0xb8, 0xc9, 0x40, 0x59,
+ 0xad, 0x78, 0xaa, 0xf1, 0xe9, 0x61, 0x34, 0x62, 0x30, 0xf1, 0x5f, 0xe6,
+ 0x78, 0x4f, 0x5a, 0x11, 0xba, 0xff, 0x34, 0xcc, 0x88, 0x1b, 0x7f, 0x30,
+ 0xbd, 0xc8, 0xd8, 0xd6, 0xf1, 0xc2, 0xc2, 0x7b, 0x0e, 0x6d, 0x7c, 0x8f,
+ 0x02, 0xdf, 0xa5, 0x27, 0xe2, 0x1b, 0xe8, 0xf9, 0x40, 0xe9, 0x59, 0x52,
+ 0xd1, 0xd1, 0x6b, 0x21, 0xe1, 0x51, 0x16, 0xf6, 0x4c, 0xc0, 0x63, 0xe2,
+ 0x91, 0x1f, 0x3d, 0xc2, 0xc1, 0x2c, 0xf2, 0x4b, 0x2c, 0x41, 0x65, 0x5c,
+ 0x16, 0x17, 0x3f, 0x80, 0x69, 0x71, 0x84, 0x50, 0xbd, 0xfa, 0x91, 0x66,
+ 0x5b, 0x35, 0x9a, 0xfb, 0x1e, 0x74, 0x0c, 0xc5, 0x33, 0x6e, 0x94, 0x48,
+ 0xa2, 0x14, 0x5a, 0xfd, 0x8e, 0x23, 0xc8, 0x30, 0x7a, 0xe8, 0x26, 0x43,
+ 0x70, 0x4c, 0xb2, 0xf1, 0xf8, 0x46, 0x1e, 0xae, 0x6c, 0x7a, 0xa1, 0x86,
+ 0x65, 0x65, 0x5d, 0xac, 0x5d, 0xa7, 0x26, 0x63, 0x08, 0x0b, 0x68, 0x68,
+ 0x40, 0xe5, 0xff, 0xb3, 0xa1, 0x55, 0x23, 0x72, 0xef, 0x00, 0xd8, 0xc2,
+ 0xac, 0xd9, 0x4c, 0xd0, 0xd4, 0x94, 0x27, 0xe2, 0xf6, 0x9b, 0x50, 0x9b,
+ 0xae, 0x1d, 0xb0, 0xed, 0x37, 0xf3, 0x51, 0x60, 0x68, 0x7a, 0xcb, 0xc7,
+ 0xf3, 0xe2, 0xe4, 0xe8, 0x59, 0x2b, 0x86, 0xaf, 0x7b, 0xc5, 0x5e, 0xae,
+ 0x50, 0x51, 0x3c, 0xc0, 0x96, 0xd5, 0x88, 0x2d, 0x97, 0xed, 0xaa, 0x49,
+ 0xd9, 0x46, 0xbf, 0x38, 0x8c, 0x50, 0x48, 0x54, 0xfb, 0xd3, 0xf1, 0x28,
+ 0xea, 0x54, 0x79, 0x3e, 0xd1, 0x38, 0x2b, 0xf8, 0x33, 0xb9, 0x4c, 0xbf,
+ 0xce, 0x27, 0xa3, 0xce, 0xba, 0x2d, 0xbd, 0x6c, 0x36, 0xb6, 0x56, 0x62,
+ 0x7a, 0x23, 0x70, 0xea, 0x47, 0xfc, 0xd3, 0x5b, 0xf9, 0xf8, 0x92, 0x8e,
+ 0xd5, 0x24, 0x1f, 0xe4, 0xe3, 0xf1, 0x12, 0xa1, 0x9d, 0xab, 0x25, 0x53,
+ 0xd2, 0x3e, 0x93, 0x6f, 0x07, 0x37, 0x15, 0xdf, 0x1b, 0xe0, 0x7e, 0x11,
+ 0xe0, 0x74, 0xd1, 0x91, 0x5c, 0x55, 0xa9, 0xc2, 0xe2, 0xc9, 0x60, 0x4e,
+ 0x6c, 0xc1, 0x9d, 0x58, 0x87, 0xd4, 0x3a, 0x43, 0x08, 0x96, 0x06, 0x99,
+ 0x2c, 0x11, 0xd7, 0xdb, 0x84, 0x00, 0x9f, 0x80, 0x45, 0xff, 0xf3, 0x5f,
+ 0x3f, 0xfd, 0xe2, 0xc5, 0x28, 0xb1, 0x77, 0x0c, 0xf1, 0x10, 0x28, 0x0a,
+ 0x98, 0x22, 0x1a, 0xaa, 0x32, 0x9d, 0x8c, 0xd9, 0x72, 0x49, 0x2a, 0x25,
+ 0xb4, 0x32, 0xed, 0x39, 0x39, 0x37, 0xec, 0xbf, 0x84, 0x76, 0x03, 0xc9,
+ 0xaf, 0xb6, 0x2a, 0x8b, 0x40, 0x46, 0x4d, 0xd2, 0x4b, 0xf8, 0x17, 0x27,
+ 0x6a, 0x52, 0xe8, 0xc4, 0x5b, 0x7b, 0x17, 0xa9, 0x21, 0x16, 0xe9, 0x3d,
+ 0x1c, 0x98, 0x8a, 0x11, 0xe1, 0xcd, 0x78, 0xcc, 0xb7, 0x6f, 0x5e, 0x1a,
+ 0x97, 0xe0, 0x72, 0xf2, 0xe7, 0x1d, 0xf9, 0xc8, 0xc5, 0x84, 0xa5, 0xd5,
+ 0x35, 0x99, 0x38, 0x96, 0xe2, 0x08, 0xa4, 0xf8, 0xfd, 0xf3, 0xa7, 0x5f,
+ 0xfe, 0x05, 0xff, 0xeb, 0xdc, 0xab, 0xac, 0x30, 0xd3, 0xa0, 0x5b, 0x24,
+ 0xda, 0xbd, 0xf6, 0xaf, 0x80, 0x63, 0xdc, 0xc5, 0xe9, 0x5d, 0x3a, 0x00,
+ 0x6e, 0x5d, 0x2a, 0x38, 0x6c, 0x3c, 0x2d, 0xa3, 0xc3, 0x29, 0xf0, 0x9a,
+ 0xac, 0x05, 0xa8, 0xf8, 0x05, 0xbe, 0x16, 0x9d, 0xc8, 0x6b, 0x06, 0x8a,
+ 0xee, 0x32, 0x2f, 0x60, 0xc6, 0x53, 0x41, 0xc3, 0x12, 0x28, 0xb0, 0xba,
+ 0x45, 0x3d, 0xa2, 0x6c, 0x6b, 0xcf, 0x2c, 0x7d, 0xfd, 0x48, 0x4c, 0xf1,
+ 0x54, 0xc2, 0xd0, 0xa9, 0x4a, 0x27, 0x26, 0x9a, 0x05, 0xe8, 0xd4, 0xb0,
+ 0x7d, 0xc3, 0xf7, 0x64, 0x5f, 0x2e, 0xbb, 0xe8, 0x35, 0x37, 0xb5, 0x17,
+ 0x43, 0xf9, 0x15, 0x02, 0x64, 0xa3, 0x55, 0xf1, 0xcc, 0xfd, 0x23, 0xd6,
+ 0x44, 0xc4, 0x92, 0x71, 0xe6, 0xd7, 0xd3, 0xe2, 0xea, 0xd4, 0x60, 0x8b,
+ 0xfb, 0x01, 0x8f, 0x8d, 0xd8, 0x07, 0x65, 0x3e, 0xcc, 0x68, 0x4d, 0xba,
+ 0x17, 0x52, 0x39, 0x2c, 0x60, 0x97, 0xfd, 0x1f, 0xc9, 0x92, 0xfa, 0x15,
+ 0xc6, 0x38, 0x8c, 0xa1, 0x10, 0xc9, 0xc8, 0x80, 0x6f, 0xba, 0x55, 0x44,
+ 0x09, 0x3e, 0x24, 0x41, 0x3c, 0x93, 0x74, 0xc2, 0x57, 0x0f, 0xfb, 0xd5,
+ 0x5a, 0x2d, 0x15, 0x72, 0x2f, 0x02, 0x97, 0xc1, 0x6a, 0xed, 0x04, 0xba,
+ 0x24, 0x81, 0x00, 0xf9, 0x2c, 0x35, 0x06, 0xf1, 0xa0, 0x7f, 0x8d, 0x5a,
+ 0x67, 0x63, 0x2e, 0xac, 0x8c, 0x58, 0x59, 0xd2, 0x91, 0xa2, 0xc3, 0x31,
+ 0x1c, 0x33, 0xbe, 0x4d, 0x11, 0xcb, 0x78, 0x15, 0xd6, 0x29, 0xa0, 0xe9,
+ 0xc7, 0x7c, 0x7e, 0x1c, 0x3d, 0x79, 0xfc, 0xf8, 0x31, 0xc7, 0x68, 0x74,
+ 0x5e, 0x52, 0xc7, 0x6f, 0x4e, 0x8e, 0xcf, 0x5e, 0xbd, 0x3a, 0x79, 0xfd,
+ 0xec, 0xe4, 0x99, 0x06, 0x51, 0x3b, 0x63, 0xb7, 0xe4, 0xe2, 0x5f, 0xbe,
+ 0x98, 0x6e, 0x03, 0xa4, 0xb1, 0xfb, 0x78, 0x27, 0xde, 0x7b, 0xbc, 0x13,
+ 0x01, 0x71, 0x26, 0x06, 0xc5, 0x21, 0x99, 0x20, 0x50, 0x61, 0x74, 0xb5,
+ 0x00, 0xf5, 0x06, 0xeb, 0x14, 0x57, 0x88, 0x4f, 0xa9, 0x08, 0xf7, 0xb3,
+ 0xb4, 0x42, 0xb3, 0xb1, 0xa7, 0x33, 0x24, 0xa3, 0x5e, 0xc7, 0x14, 0xc4,
+ 0xb3, 0x61, 0x5d, 0xa2, 0x2f, 0x10, 0xc5, 0xee, 0xed, 0x60, 0x47, 0xbd,
+ 0xe8, 0x79, 0x86, 0xb8, 0xa4, 0xb7, 0x4c, 0x9c, 0xc7, 0x57, 0xa0, 0xaa,
+ 0xa6, 0x7e, 0x40, 0x57, 0xfd, 0x7d, 0x7c, 0x7d, 0x9f, 0x5f, 0x0f, 0x47,
+ 0x8b, 0xb6, 0x1f, 0x3a, 0xad, 0xb8, 0xdd, 0x66, 0x58, 0xf6, 0x74, 0xb3,
+ 0x50, 0x18, 0xc1, 0x83, 0x62, 0xf8, 0xda, 0xc7, 0xf4, 0x78, 0x67, 0x67,
+ 0xbd, 0xeb, 0x6f, 0x8a, 0xbc, 0x66, 0x9a, 0xdc, 0x72, 0x59, 0x10, 0x29,
+ 0x5d, 0xb1, 0x04, 0x7d, 0xfa, 0xf1, 0x57, 0x75, 0x74, 0x21, 0x18, 0x4a,
+ 0x91, 0xdf, 0xde, 0xc5, 0x8a, 0x35, 0x12, 0x86, 0x8a, 0xea, 0xb3, 0x31,
+ 0xf9, 0xc5, 0xd1, 0x39, 0x3e, 0x1c, 0x9d, 0xbf, 0x39, 0xfb, 0xf1, 0xef,
+ 0x16, 0xbd, 0xe5, 0x7a, 0x57, 0xf3, 0x99, 0x04, 0x3e, 0x07, 0xd6, 0x05,
+ 0xf4, 0x93, 0x99, 0x1f, 0xc0, 0x69, 0x7c, 0x1f, 0xae, 0xc9, 0x4f, 0x83,
+ 0x4a, 0x48, 0x46, 0xc3, 0x34, 0xb4, 0x9c, 0x2a, 0x93, 0xa1, 0x90, 0xc5,
+ 0x04, 0x27, 0x35, 0x39, 0x7c, 0xe0, 0x4e, 0xf2, 0xc7, 0xe2, 0x38, 0x6e,
+ 0x29, 0xd6, 0x29, 0x47, 0x70, 0x63, 0x2e, 0x48, 0x56, 0x73, 0x75, 0x56,
+ 0xc5, 0xa2, 0x66, 0x35, 0x54, 0xd7, 0x66, 0x6f, 0x39, 0xba, 0xf0, 0xbc,
+ 0xc8, 0xa6, 0x49, 0x91, 0x4d, 0xee, 0x6a, 0x75, 0xd8, 0x35, 0x93, 0x8a,
+ 0x82, 0x7d, 0x6c, 0x49, 0xef, 0xdc, 0xaf, 0xf0, 0x8e, 0xea, 0x4f, 0x36,
+ 0x14, 0x66, 0xc0, 0xe8, 0xe2, 0x12, 0x90, 0xc5, 0xab, 0xb5, 0xf4, 0x66,
+ 0x6c, 0xee, 0xcb, 0xc7, 0x55, 0x77, 0x9a, 0xad, 0x3f, 0x80, 0x80, 0xeb,
+ 0xa3, 0x5b, 0x8b, 0x66, 0x6f, 0xbb, 0x5c, 0x7f, 0xfd, 0xb6, 0x0e, 0x9f,
+ 0xfb, 0x64, 0xa7, 0x46, 0x9a, 0x46, 0x2e, 0x6f, 0x2b, 0x24, 0x16, 0x3d,
+ 0x7f, 0x79, 0x7a, 0xb2, 0x15, 0x3d, 0x4f, 0x2b, 0x81, 0x6b, 0xd0, 0xc4,
+ 0x4a, 0xf4, 0xc6, 0xfe, 0x17, 0xe9, 0x29, 0xa6, 0x7a, 0xa7, 0xa0, 0x31,
+ 0x05, 0x93, 0x61, 0xc4, 0x3d, 0x41, 0x32, 0xbb, 0x62, 0x3f, 0x30, 0x39,
+ 0xd2, 0xbe, 0xa2, 0x8c, 0xaa, 0xc9, 0x35, 0x1a, 0xc5, 0x26, 0xe4, 0x1e,
+ 0x48, 0x37, 0x54, 0x9c, 0xcc, 0x9e, 0x53, 0x2d, 0x2c, 0x9f, 0x39, 0x31,
+ 0xb1, 0x38, 0x68, 0x49, 0xf5, 0xd4, 0x80, 0xc0, 0xac, 0x9c, 0x4f, 0x90,
+ 0x77, 0x07, 0x81, 0xbc, 0x27, 0xa9, 0x05, 0x29, 0x21, 0x16, 0x34, 0xcd,
+ 0x47, 0xb6, 0xd4, 0x1e, 0x9d, 0xfa, 0x7a, 0x10, 0x4f, 0x88, 0x98, 0x50,
+ 0x63, 0xf9, 0xb8, 0xb8, 0x90, 0xd8, 0xe4, 0x9a, 0x54, 0xf3, 0x72, 0x3d,
+ 0x2a, 0x51, 0x4d, 0x18, 0x7e, 0x5c, 0xe3, 0xaf, 0xb0, 0x8f, 0x03, 0x42,
+ 0x3b, 0x22, 0x1e, 0x07, 0xa3, 0x1e, 0xa6, 0x71, 0x52, 0x0e, 0xb3, 0xcc,
+ 0xa1, 0x99, 0x17, 0x4a, 0x33, 0x18, 0x31, 0xcf, 0x3f, 0xb7, 0xbf, 0x6d,
+ 0xad, 0x0f, 0xc2, 0x28, 0x4b, 0x98, 0x46, 0xb7, 0x05, 0x43, 0xc7, 0x75,
+ 0x90, 0x57, 0x89, 0x93, 0x0c, 0x27, 0x8b, 0x51, 0x2a, 0x05, 0x18, 0x66,
+ 0x9c, 0x1b, 0x27, 0xc5, 0x0d, 0x67, 0xde, 0x51, 0xb3, 0x7b, 0x2d, 0xf2,
+ 0x89, 0xa2, 0x92, 0x08, 0x83, 0x20, 0x38, 0x00, 0x2e, 0x35, 0x6d, 0xf5,
+ 0x45, 0xc5, 0x88, 0x69, 0xa9, 0x64, 0x6d, 0x53, 0x4f, 0x03, 0x40, 0x51,
+ 0xd0, 0x3e, 0x0d, 0x5e, 0x31, 0xa3, 0x5e, 0xbd, 0x7c, 0x75, 0x22, 0x68,
+ 0x09, 0xe9, 0x88, 0x73, 0x93, 0xb4, 0x7e, 0xb2, 0xd8, 0x00, 0x38, 0x11,
+ 0xa6, 0x25, 0x31, 0xa5, 0xec, 0x72, 0x16, 0x3b, 0xdf, 0x88, 0x69, 0x5d,
+ 0xaf, 0xe5, 0xba, 0x3f, 0x48, 0x49, 0xd4, 0x8b, 0x85, 0x89, 0x25, 0xaa,
+ 0xf1, 0x9b, 0x23, 0xb8, 0x19, 0x5e, 0x3f, 0xca, 0x3d, 0xac, 0xf4, 0x5a,
+ 0xa0, 0x61, 0x09, 0x14, 0xf9, 0x04, 0xae, 0xdb, 0x09, 0xe5, 0x11, 0x1a,
+ 0xf3, 0x50, 0x42, 0x44, 0xd8, 0xb4, 0x90, 0x27, 0x37, 0xf5, 0x79, 0x95,
+ 0xb5, 0x5a, 0x8c, 0x8f, 0x9f, 0xf4, 0x76, 0x7c, 0x4c, 0x54, 0x4a, 0x6b,
+ 0xc7, 0xec, 0x6d, 0xa3, 0x78, 0x11, 0xf6, 0x9b, 0x15, 0x47, 0x53, 0x67,
+ 0xb7, 0xcb, 0x5e, 0x1d, 0xac, 0xc0, 0x0f, 0xfb, 0x10, 0x1d, 0x08, 0x53,
+ 0xe4, 0x4d, 0x8d, 0x25, 0xa5, 0x14, 0x7c, 0x09, 0x8f, 0x92, 0xf1, 0x4e,
+ 0xcd, 0xa4, 0xf8, 0xab, 0x44, 0x13, 0x2f, 0x8b, 0x7e, 0xcb, 0x67, 0x1a,
+ 0xe9, 0x73, 0xa3, 0x51, 0xcd, 0x5d, 0x41, 0x4a, 0xb9, 0xe5, 0x47, 0x26,
+ 0x94, 0x73, 0xaf, 0x9d, 0x85, 0xc1, 0x67, 0x42, 0x85, 0xa9, 0xdd, 0x2e,
+ 0x34, 0xa4, 0x57, 0xec, 0xbc, 0xa8, 0x92, 0xc2, 0xc6, 0x72, 0x5c, 0x07,
+ 0x42, 0xee, 0x36, 0xf7, 0xaf, 0xc8, 0x86, 0xef, 0x33, 0xc4, 0x1f, 0x2e,
+ 0xab, 0xc5, 0x78, 0xcc, 0x51, 0x9c, 0xee, 0x28, 0x35, 0x7e, 0x14, 0x36,
+ 0x8e, 0x51, 0xea, 0x65, 0x79, 0x70, 0x0b, 0x7d, 0x52, 0xe6, 0xa2, 0xa2,
+ 0x3a, 0x9e, 0xda, 0x7c, 0x4a, 0xa3, 0xdc, 0x22, 0xac, 0x10, 0xe9, 0xd7,
+ 0x69, 0x81, 0x24, 0x80, 0x90, 0xb9, 0xe8, 0xaa, 0xbc, 0xf1, 0xf3, 0x03,
+ 0xa8, 0x20, 0x4b, 0x81, 0xd1, 0xc7, 0x64, 0x13, 0x7f, 0x93, 0x4e, 0x73,
+ 0x2a, 0x1e, 0x64, 0x67, 0x2c, 0x6b, 0x05, 0x72, 0x84, 0x68, 0x2d, 0xec,
+ 0xf9, 0x80, 0x51, 0x20, 0xd1, 0xb6, 0x68, 0xd7, 0x9a, 0xe1, 0x2b, 0x59,
+ 0x06, 0x1c, 0xa8, 0x11, 0x61, 0xd9, 0xc6, 0x9a, 0xcc, 0x32, 0xa1, 0xaa,
+ 0x0c, 0x68, 0x95, 0xce, 0x66, 0x07, 0xc8, 0x6e, 0x9a, 0xf9, 0x29, 0x2f,
+ 0x40, 0x5f, 0x3a, 0xe8, 0x48, 0x5d, 0x4a, 0x8a, 0x14, 0x24, 0x37, 0x3c,
+ 0x49, 0x23, 0x35, 0xba, 0x11, 0x1c, 0xe9, 0x98, 0x65, 0x49, 0x8e, 0x1d,
+ 0xac, 0xca, 0x70, 0xea, 0xba, 0xa2, 0x59, 0xf8, 0x79, 0xc4, 0x06, 0x5d,
+ 0x42, 0x70, 0x97, 0x70, 0x64, 0xf1, 0x0b, 0x18, 0xc7, 0x8f, 0xf1, 0xf1,
+ 0xc2, 0x73, 0x68, 0x43, 0xf7, 0xf1, 0x0b, 0x6a, 0xf2, 0x4f, 0x1d, 0x13,
+ 0x21, 0xc0, 0x8f, 0xda, 0xaf, 0x60, 0xf4, 0x5f, 0x84, 0x92, 0x28, 0x24,
+ 0xa6, 0x82, 0xc9, 0x86, 0x6a, 0x7f, 0x89, 0x5c, 0x93, 0xd8, 0x9a, 0x62,
+ 0xb4, 0x39, 0xa3, 0xd1, 0xb6, 0xac, 0xb7, 0x26, 0x7c, 0x05, 0xd6, 0x9c,
+ 0xc3, 0x41, 0x0a, 0x0c, 0x52, 0x8e, 0x60, 0x14, 0x71, 0x3e, 0x8e, 0x29,
+ 0x35, 0x19, 0xe4, 0xad, 0xf7, 0x98, 0xde, 0x71, 0x67, 0xc9, 0x8a, 0x20,
+ 0x6b, 0x89, 0x3d, 0x8c, 0x46, 0xa1, 0x8c, 0x11, 0x46, 0x06, 0x72, 0xd4,
+ 0x4f, 0x45, 0x37, 0xe0, 0x2d, 0x3d, 0x90, 0xdc, 0x58, 0x7a, 0x7d, 0x96,
+ 0xde, 0x70, 0xf2, 0x27, 0x96, 0xfe, 0x10, 0x14, 0x02, 0xcf, 0x23, 0x47,
+ 0x98, 0x04, 0x5d, 0x36, 0x7f, 0xd0, 0xa4, 0x09, 0xd7, 0x76, 0xca, 0xce,
+ 0x71, 0x8a, 0x57, 0x58, 0xcc, 0xb5, 0xf2, 0xee, 0x52, 0x0f, 0x30, 0x1a,
+ 0x7e, 0xa8, 0xb0, 0x2e, 0xaa, 0xeb, 0x9a, 0x6e, 0x00, 0x5c, 0xeb, 0x5b,
+ 0x83, 0x53, 0x52, 0x56, 0x77, 0x28, 0x07, 0x08, 0x88, 0x76, 0x20, 0x98,
+ 0x1b, 0x06, 0xcd, 0xb9, 0x02, 0x5a, 0x0e, 0x88, 0x14, 0x74, 0x5a, 0x73,
+ 0x5a, 0x2f, 0x31, 0x20, 0x11, 0xf6, 0x94, 0x14, 0xaf, 0xe2, 0x0c, 0x97,
+ 0x6f, 0xe3, 0x10, 0x6e, 0x3e, 0xed, 0x9e, 0x94, 0x3b, 0x49, 0x46, 0xee,
+ 0x6a, 0x71, 0xca, 0x87, 0x01, 0x7b, 0xab, 0xab, 0x0c, 0x8f, 0x5d, 0xb9,
+ 0x4c, 0xc5, 0x8b, 0x09, 0x46, 0xfc, 0x70, 0x20, 0x10, 0x11, 0xc2, 0x94,
+ 0x20, 0xee, 0x66, 0x55, 0x16, 0x97, 0xf3, 0x64, 0x1a, 0x2d, 0x2a, 0x84,
+ 0xd4, 0x44, 0xb1, 0x7c, 0x78, 0x95, 0x4a, 0xd8, 0xd8, 0x9c, 0x30, 0xd5,
+ 0x18, 0x3e, 0x23, 0x58, 0xbe, 0x87, 0xce, 0x9a, 0x2a, 0x62, 0x7c, 0xdb,
+ 0xd0, 0x9d, 0x21, 0xfc, 0xe2, 0x40, 0xec, 0x5a, 0xc8, 0x00, 0x3a, 0xcf,
+ 0x61, 0xb0, 0x07, 0x9d, 0x6e, 0xd4, 0xb9, 0xc8, 0xe1, 0x47, 0xf3, 0x20,
+ 0x3e, 0x83, 0x63, 0x72, 0xc0, 0x25, 0x55, 0x3b, 0x7d, 0x86, 0x4d, 0xc3,
+ 0x3f, 0xa7, 0x39, 0x42, 0x1a, 0x56, 0xa6, 0xcc, 0x5f, 0xcd, 0xbc, 0xc5,
+ 0x97, 0x73, 0x18, 0x2e, 0xd0, 0xec, 0x6a, 0xf8, 0xae, 0xa1, 0xa2, 0x23,
+ 0x2a, 0xd4, 0xc6, 0x56, 0x8a, 0xa0, 0x23, 0x56, 0x3b, 0xf9, 0x25, 0x71,
+ 0xaa, 0x99, 0xa6, 0x83, 0x7b, 0xf1, 0x92, 0x8a, 0x8b, 0xd9, 0x90, 0x8d,
+ 0xf7, 0x9f, 0x86, 0xf6, 0x20, 0xe1, 0x3c, 0x24, 0x94, 0x2f, 0x61, 0x1d,
+ 0x9a, 0xe9, 0xdb, 0x07, 0x8c, 0xbb, 0x96, 0xa2, 0x45, 0x56, 0xb8, 0x0e,
+ 0x85, 0x8a, 0x12, 0xef, 0x8c, 0x5a, 0xba, 0x36, 0xb6, 0x7a, 0xe5, 0x31,
+ 0xfa, 0x37, 0x66, 0xd0, 0x77, 0x1d, 0x87, 0x03, 0xa7, 0xe3, 0x28, 0x77,
+ 0x0b, 0x44, 0x75, 0x70, 0x54, 0x9d, 0x0c, 0x21, 0x6a, 0x85, 0xfc, 0xfd,
+ 0xe1, 0xe8, 0xcd, 0xeb, 0x97, 0xaf, 0xbf, 0x3f, 0x30, 0xeb, 0x83, 0x17,
+ 0x84, 0xf0, 0x88, 0x86, 0xa3, 0x03, 0x4b, 0xba, 0x50, 0x59, 0x53, 0xc2,
+ 0xd7, 0x9a, 0x44, 0x21, 0x57, 0x84, 0xd1, 0xc8, 0x30, 0x80, 0x31, 0xe5,
+ 0x4a, 0x41, 0xe4, 0x4e, 0x85, 0x6f, 0x38, 0xf6, 0x88, 0xed, 0x9f, 0x8a,
+ 0xf0, 0x20, 0x98, 0x51, 0xb4, 0x32, 0x55, 0x3e, 0x19, 0x85, 0x98, 0x55,
+ 0x7c, 0x4a, 0xf1, 0xf2, 0xb9, 0x60, 0x3e, 0x28, 0x54, 0xe8, 0x8c, 0x60,
+ 0x7b, 0x54, 0x4a, 0xd2, 0x7b, 0x27, 0x65, 0xd4, 0x12, 0xca, 0x68, 0xf4,
+ 0x23, 0xd5, 0x29, 0x73, 0x9a, 0xcd, 0x6a, 0x7c, 0xb1, 0x92, 0xc5, 0x08,
+ 0xee, 0x9b, 0x8c, 0xee, 0xae, 0x1c, 0x45, 0xc5, 0x92, 0xe8, 0xa6, 0xcc,
+ 0xc8, 0x9b, 0x6d, 0x56, 0x85, 0x08, 0x35, 0x5c, 0x23, 0x93, 0x47, 0x39,
+ 0x4c, 0x16, 0xcc, 0x76, 0xb8, 0x5e, 0x8c, 0x7c, 0x6a, 0xf1, 0x23, 0xcc,
+ 0xfc, 0x03, 0x69, 0xd9, 0x75, 0x44, 0x98, 0x0f, 0x48, 0xcc, 0x6e, 0xf3,
+ 0x30, 0xbc, 0xc0, 0x8b, 0xe6, 0x39, 0x5a, 0xd4, 0xe2, 0xd7, 0xc0, 0xf9,
+ 0x0e, 0xa2, 0x3f, 0xe7, 0xe9, 0x1a, 0x8e, 0x02, 0x78, 0xfd, 0x2d, 0xa8,
+ 0x72, 0xf1, 0xd1, 0x25, 0xb1, 0xf4, 0xbb, 0xb4, 0x8c, 0xe7, 0xc4, 0x80,
+ 0xb6, 0xf7, 0x76, 0x76, 0x76, 0xd6, 0x6b, 0x88, 0xef, 0xe8, 0xf5, 0x74,
+ 0x91, 0x23, 0x4d, 0x8c, 0x8c, 0x93, 0xcb, 0x54, 0xb3, 0x25, 0x53, 0x76,
+ 0x35, 0x20, 0x04, 0xa5, 0x9b, 0x30, 0x79, 0xc5, 0x3a, 0xc8, 0x64, 0x1e,
+ 0x1d, 0xa2, 0x29, 0xe2, 0x32, 0x2f, 0xee, 0xbe, 0xf1, 0xaa, 0x3d, 0x21,
+ 0x0a, 0x00, 0x3e, 0x23, 0xc4, 0x84, 0xa1, 0x70, 0x24, 0xa1, 0xd9, 0xfc,
+ 0x5c, 0xcd, 0x44, 0xb3, 0x8d, 0xf4, 0x22, 0xad, 0x77, 0xdd, 0xbc, 0x25,
+ 0x0a, 0x2c, 0x93, 0x92, 0x38, 0xd6, 0x2c, 0x37, 0xab, 0x51, 0xd4, 0x4b,
+ 0x96, 0xc0, 0x91, 0x49, 0x67, 0x53, 0x34, 0x7e, 0x60, 0x0c, 0xb3, 0x74,
+ 0x16, 0x40, 0x1b, 0x32, 0x17, 0x56, 0xc9, 0xc2, 0x8c, 0x8b, 0xc5, 0x12,
+ 0x75, 0x60, 0xa0, 0x1d, 0xea, 0xd0, 0xf6, 0xe7, 0x48, 0x09, 0x4d, 0x8d,
+ 0x58, 0xfa, 0xe7, 0x23, 0xab, 0x85, 0xec, 0x6d, 0xd0, 0x67, 0xa0, 0x7d,
+ 0x9d, 0x32, 0x75, 0xd2, 0x14, 0x28, 0x97, 0x4c, 0x91, 0x16, 0x90, 0xdf,
+ 0xcd, 0x04, 0x98, 0x00, 0x1a, 0xce, 0x0a, 0x85, 0x8b, 0x2e, 0x57, 0x68,
+ 0xc9, 0x93, 0xf9, 0x47, 0xd7, 0x92, 0x27, 0x6b, 0xc7, 0x4c, 0xd1, 0x30,
+ 0x60, 0x26, 0xed, 0xd4, 0xe8, 0xaa, 0xc3, 0x35, 0x5b, 0x1e, 0xec, 0xee,
+ 0x7c, 0x31, 0x98, 0x8e, 0x1e, 0x47, 0x87, 0xf0, 0x8f, 0xa7, 0xf3, 0xf6,
+ 0x39, 0x57, 0xf7, 0x18, 0x83, 0x45, 0xf1, 0xee, 0x40, 0x09, 0x52, 0x70,
+ 0xa7, 0xd9, 0x1b, 0x85, 0xbf, 0xee, 0xef, 0x01, 0x61, 0xde, 0x26, 0x5a,
+ 0x1c, 0x70, 0x04, 0xac, 0xa9, 0xa2, 0x54, 0x37, 0x2f, 0x14, 0x8a, 0x5f,
+ 0xb5, 0x19, 0x81, 0xb8, 0x87, 0xbb, 0x7b, 0x5f, 0x46, 0x88, 0x02, 0xf2,
+ 0xea, 0xd9, 0x63, 0xbe, 0xf8, 0xcb, 0xc5, 0xd4, 0x90, 0x32, 0x27, 0x90,
+ 0x32, 0xfb, 0xf3, 0x70, 0x54, 0x61, 0xe0, 0x93, 0x6c, 0x88, 0xd8, 0x5b,
+ 0xdd, 0x5a, 0xec, 0xdf, 0x58, 0x63, 0xff, 0x1c, 0xfb, 0xb5, 0x11, 0x21,
+ 0x29, 0xfe, 0x9d, 0xb3, 0x5b, 0x02, 0xa1, 0x50, 0xb0, 0x06, 0xd0, 0x3d,
+ 0x1a, 0xfd, 0xab, 0xe1, 0x55, 0x38, 0xbb, 0xdb, 0x59, 0xb2, 0x15, 0x51,
+ 0xc6, 0x9f, 0x12, 0x6b, 0xde, 0x19, 0x45, 0xfa, 0x78, 0xb8, 0x3b, 0x7c,
+ 0xf4, 0xd5, 0xce, 0xde, 0xce, 0x93, 0x47, 0x3b, 0xc9, 0xe3, 0x64, 0xb0,
+ 0x33, 0xde, 0xdb, 0xd9, 0x7f, 0xf4, 0xe5, 0xe3, 0x47, 0xc3, 0xfd, 0xbd,
+ 0xdd, 0xe4, 0xcb, 0xa8, 0x5c, 0x2b, 0x84, 0x4e, 0x5a, 0x2e, 0xaf, 0x92,
+ 0x3d, 0x50, 0x95, 0x7d, 0x5a, 0xe1, 0x2f, 0xa2, 0x43, 0xfe, 0x19, 0xa6,
+ 0x18, 0x22, 0x98, 0x56, 0x7a, 0x49, 0xa2, 0xef, 0x08, 0x42, 0x24, 0x56,
+ 0x94, 0x9b, 0xfe, 0x8b, 0x23, 0x6c, 0x12, 0x4e, 0xce, 0x95, 0x6f, 0xfd,
+ 0x65, 0x7b, 0x02, 0x91, 0x01, 0x53, 0x81, 0xb3, 0xef, 0xbd, 0xe8, 0x78,
+ 0xf9, 0xbe, 0xb7, 0x29, 0x12, 0x0e, 0x15, 0xf0, 0xdf, 0xd0, 0x75, 0x7a,
+ 0x9f, 0x6d, 0x97, 0xd9, 0x7f, 0x2e, 0x0c, 0x89, 0xfa, 0x28, 0x5e, 0x3f,
+ 0xfb, 0xdb, 0xfb, 0x57, 0x17, 0x7f, 0xbd, 0x7d, 0xf5, 0xfd, 0x5f, 0x77,
+ 0xcf, 0x9e, 0x8d, 0xa6, 0xaf, 0x7e, 0xfd, 0xeb, 0xfe, 0xab, 0x5f, 0x87,
+ 0xbf, 0xfd, 0xfd, 0xd7, 0xa3, 0xbb, 0xb3, 0x8b, 0xbf, 0x3f, 0x7e, 0x35,
+ 0x7d, 0xf3, 0xfe, 0xd5, 0xaf, 0x7f, 0x9b, 0xbe, 0x7e, 0xf6, 0xd7, 0xaf,
+ 0x1f, 0x46, 0x05, 0x40, 0x5f, 0xf5, 0x4a, 0x03, 0x3b, 0x0d, 0x5f, 0x00,
+ 0x5e, 0x42, 0x87, 0x06, 0x38, 0x3b, 0x68, 0x33, 0xeb, 0xd7, 0x8b, 0xea,
+ 0x2a, 0x60, 0xf8, 0x8b, 0xfe, 0x85, 0x0d, 0x51, 0x32, 0x91, 0x48, 0x74,
+ 0x5d, 0x99, 0xdc, 0xd3, 0x20, 0x06, 0xef, 0x1c, 0x84, 0x51, 0x94, 0xd6,
+ 0x18, 0xc9, 0x97, 0x72, 0xfd, 0x91, 0xaa, 0xa8, 0x3d, 0x2c, 0xb4, 0x9b,
+ 0x8a, 0xad, 0x94, 0x74, 0x8c, 0xfa, 0x62, 0x37, 0xc2, 0x9c, 0x38, 0x68,
+ 0x8e, 0xf3, 0x4f, 0x53, 0xb7, 0x36, 0xa6, 0x00, 0x47, 0x53, 0x63, 0x46,
+ 0x8e, 0xc4, 0x42, 0xcc, 0x2a, 0xba, 0xb5, 0x8e, 0x8e, 0xd9, 0x79, 0x36,
+ 0x46, 0x1b, 0x96, 0x81, 0x36, 0x61, 0xfb, 0x6b, 0x60, 0xb7, 0xfb, 0x26,
+ 0x05, 0xa3, 0xd3, 0x71, 0xe0, 0xc7, 0x37, 0x7f, 0x4b, 0x8b, 0x5c, 0xe0,
+ 0x86, 0xb6, 0x68, 0x9e, 0xd7, 0x79, 0x36, 0x8a, 0x04, 0x60, 0x7d, 0x5b,
+ 0xab, 0xb1, 0x78, 0xd7, 0xb0, 0x95, 0xb2, 0x09, 0xf2, 0x1b, 0x4b, 0xb1,
+ 0x40, 0x93, 0xb4, 0x30, 0x06, 0xef, 0x3a, 0x44, 0xdd, 0x8d, 0xb0, 0x65,
+ 0x5f, 0x98, 0xeb, 0xd6, 0x34, 0x7a, 0x72, 0xb4, 0x18, 0xcf, 0x7f, 0xd3,
+ 0xfc, 0x4c, 0x89, 0x23, 0x82, 0xb0, 0xc1, 0x00, 0xf0, 0x6a, 0x02, 0xa7,
+ 0x53, 0x91, 0xcf, 0xea, 0x8e, 0x30, 0x22, 0x01, 0x9e, 0x51, 0x48, 0xca,
+ 0x44, 0xfa, 0xfa, 0x74, 0xe0, 0x3f, 0xd2, 0x3c, 0x6c, 0xf3, 0x03, 0x0a,
+ 0x0c, 0x93, 0x27, 0xa3, 0x5e, 0x22, 0xec, 0x51, 0xe3, 0x74, 0x40, 0x7b,
+ 0x3b, 0xbd, 0xaf, 0x5a, 0x0a, 0x4d, 0xd7, 0x4a, 0xa9, 0x20, 0x82, 0x9c,
+ 0xc1, 0x40, 0x24, 0xb5, 0x8a, 0x52, 0x4d, 0x61, 0x43, 0xb0, 0x86, 0x8d,
+ 0x46, 0xce, 0x7b, 0x2b, 0x84, 0x4f, 0x6e, 0xe3, 0x13, 0x52, 0x69, 0x5a,
+ 0x49, 0x19, 0xcb, 0x18, 0x92, 0x80, 0x4e, 0x1c, 0xce, 0x04, 0xde, 0x9b,
+ 0x02, 0x56, 0x94, 0xd4, 0xe1, 0x9b, 0x2d, 0x4d, 0x5a, 0x92, 0x06, 0x04,
+ 0x58, 0xad, 0x4a, 0x80, 0x4c, 0x1d, 0xe0, 0x6c, 0x45, 0x78, 0x24, 0x9a,
+ 0x40, 0x97, 0x87, 0xe7, 0xd9, 0x30, 0xfd, 0x96, 0x36, 0x52, 0x9e, 0x6b,
+ 0x18, 0x71, 0x3d, 0x4c, 0x3a, 0x6e, 0x58, 0x9f, 0x99, 0xdd, 0xb3, 0xf9,
+ 0xcd, 0xec, 0xb2, 0x40, 0x6f, 0x3b, 0x41, 0xf5, 0x25, 0xa1, 0x60, 0xd2,
+ 0xd0, 0x19, 0x72, 0xa3, 0xf0, 0x9f, 0x3c, 0xe9, 0xed, 0x74, 0xed, 0xaa,
+ 0x20, 0x8e, 0x10, 0x0b, 0x5e, 0x4b, 0x83, 0xf0, 0x6b, 0x22, 0x1d, 0xef,
+ 0xd9, 0x47, 0x8e, 0x2f, 0x91, 0x56, 0xd7, 0x66, 0xf7, 0x32, 0x98, 0xf5,
+ 0x08, 0x13, 0x9f, 0xde, 0xed, 0xed, 0x76, 0xe5, 0xd7, 0x3d, 0xf1, 0x7f,
+ 0xe0, 0xef, 0xfb, 0x75, 0xf7, 0x59, 0x9d, 0x5e, 0x77, 0xba, 0xe6, 0xe5,
+ 0x9d, 0xa5, 0xf5, 0x7f, 0x6a, 0x55, 0xaf, 0x6a, 0xc4, 0x0a, 0x6f, 0xba,
+ 0x86, 0x65, 0x56, 0xe8, 0x7d, 0x33, 0xa5, 0x63, 0xdc, 0xe5, 0x0a, 0x2c,
+ 0x08, 0xc9, 0xef, 0x36, 0xb4, 0x72, 0x8b, 0xb0, 0xa3, 0xfb, 0xf8, 0x37,
+ 0xd7, 0x5f, 0x6f, 0x6c, 0x79, 0xfd, 0xf5, 0xc6, 0x5d, 0xb2, 0xcb, 0x0c,
+ 0xab, 0xbf, 0xa2, 0x1e, 0x99, 0x17, 0x22, 0x68, 0x8b, 0x11, 0x6a, 0x0b,
+ 0x91, 0xd3, 0xa0, 0xbb, 0x87, 0x7b, 0x08, 0xdd, 0x96, 0x17, 0x31, 0x9a,
+ 0xc0, 0x81, 0xb0, 0x2f, 0x43, 0xc6, 0x31, 0xdd, 0xed, 0x06, 0x33, 0x82,
+ 0x56, 0xef, 0xc3, 0x8c, 0x02, 0xdb, 0xba, 0x7b, 0x8f, 0x1d, 0xd9, 0xfd,
+ 0x64, 0x3b, 0xb2, 0xbb, 0xde, 0x8e, 0xb8, 0x84, 0xec, 0x2c, 0x1c, 0x1e,
+ 0x40, 0xa9, 0x42, 0x26, 0xdb, 0x42, 0x5c, 0x53, 0x37, 0xa6, 0xd1, 0x5c,
+ 0xbd, 0x46, 0x64, 0x5b, 0x9b, 0xad, 0x1b, 0xd3, 0xdc, 0x60, 0xdd, 0xa8,
+ 0xe0, 0x41, 0xdc, 0xdf, 0xf7, 0x2f, 0x0e, 0x6f, 0x9b, 0xef, 0xb3, 0x73,
+ 0x30, 0xa1, 0x72, 0x21, 0x85, 0x2a, 0x88, 0x5f, 0x53, 0xe9, 0xb9, 0x9a,
+ 0x99, 0xae, 0x0c, 0x03, 0x65, 0x11, 0xcf, 0xdc, 0x73, 0xa2, 0x07, 0xe9,
+ 0x03, 0x22, 0xc3, 0xb7, 0x73, 0x62, 0xcb, 0xa8, 0x76, 0x57, 0x9a, 0xc5,
+ 0x47, 0xb1, 0x0e, 0x70, 0x73, 0xb7, 0x8d, 0xce, 0xd6, 0x45, 0xd2, 0xcc,
+ 0x30, 0x42, 0x95, 0x2d, 0xb5, 0x9f, 0x12, 0xe1, 0x7a, 0xc9, 0x65, 0x92,
+ 0xdc, 0x24, 0x18, 0x13, 0x4e, 0x92, 0xa2, 0x1d, 0x64, 0x48, 0x66, 0xd6,
+ 0xbb, 0x66, 0x94, 0x6b, 0x2b, 0x35, 0x4c, 0x27, 0x68, 0x47, 0x9c, 0x24,
+ 0xa0, 0xcd, 0x53, 0xb2, 0xcb, 0x28, 0x6a, 0x89, 0x51, 0x51, 0xba, 0x16,
+ 0x63, 0x38, 0x2e, 0x52, 0x7b, 0xdd, 0xba, 0x26, 0xa1, 0xfb, 0xe7, 0xaf,
+ 0x41, 0xf6, 0x8d, 0x32, 0x71, 0x4d, 0x42, 0xf0, 0x4d, 0x02, 0xc1, 0xeb,
+ 0xc2, 0xeb, 0xe6, 0x21, 0x47, 0xc7, 0x1f, 0xeb, 0x9a, 0x30, 0x86, 0xa1,
+ 0x1b, 0xa4, 0xad, 0x69, 0x25, 0x8d, 0x36, 0x52, 0xc0, 0xe2, 0xdd, 0xc5,
+ 0xe4, 0x8e, 0x01, 0x35, 0x39, 0xb8, 0x0b, 0x2d, 0x42, 0xec, 0x74, 0x46,
+ 0xe2, 0x55, 0xe8, 0x61, 0xd9, 0x5e, 0x71, 0x43, 0x36, 0x55, 0x42, 0x7b,
+ 0x74, 0x5b, 0x80, 0x11, 0x0d, 0xd3, 0xa0, 0x51, 0x37, 0x0f, 0x6e, 0x90,
+ 0x53, 0xb6, 0xdf, 0x91, 0x8f, 0xbe, 0x0a, 0x1c, 0xcd, 0x07, 0x31, 0xd1,
+ 0xbd, 0xa0, 0x5b, 0x9e, 0xe8, 0xbe, 0xeb, 0xa2, 0x2e, 0x59, 0x31, 0xc9,
+ 0x49, 0x51, 0x37, 0x34, 0x6d, 0x4f, 0xaa, 0x97, 0x63, 0xe9, 0x93, 0xb2,
+ 0x03, 0x11, 0x44, 0x1d, 0x2c, 0x91, 0x81, 0x74, 0x2c, 0xab, 0x87, 0xb2,
+ 0x60, 0x76, 0x20, 0x8a, 0xb9, 0x84, 0xe9, 0xe7, 0x61, 0x76, 0xa2, 0xb0,
+ 0x2c, 0xa9, 0x32, 0x91, 0x03, 0xf3, 0x4a, 0x4b, 0x44, 0xd3, 0x0f, 0x26,
+ 0x09, 0x94, 0xa2, 0x69, 0xa4, 0x1d, 0x02, 0x01, 0x94, 0xa5, 0xca, 0x9c,
+ 0x00, 0x00, 0x09, 0x6b, 0x46, 0x99, 0x03, 0x21, 0xdf, 0x22, 0x4f, 0xe3,
+ 0xc7, 0xf5, 0xd8, 0xed, 0xed, 0xa1, 0xfb, 0x4e, 0x12, 0xd8, 0xc9, 0xc2,
+ 0x8f, 0x3c, 0xee, 0xf2, 0xca, 0x04, 0x5d, 0x0a, 0xe5, 0x92, 0x90, 0xe8,
+ 0xc4, 0xa3, 0x0e, 0x93, 0x50, 0xe4, 0x03, 0xe6, 0xbe, 0x13, 0x7e, 0xde,
+ 0x90, 0x11, 0x73, 0x79, 0xc1, 0x74, 0x97, 0xa5, 0xa9, 0x29, 0xd7, 0xeb,
+ 0xa4, 0x03, 0x5d, 0x4d, 0xca, 0x6b, 0x18, 0xc3, 0x6a, 0xc6, 0xf2, 0x89,
+ 0xee, 0xcf, 0xbd, 0x87, 0xc9, 0x8f, 0xc1, 0x43, 0x6f, 0xf9, 0x7f, 0xfd,
+ 0x58, 0x7b, 0xb2, 0x3a, 0x1d, 0xf3, 0xf0, 0x39, 0xd7, 0x63, 0xae, 0xa7,
+ 0x3c, 0x20, 0x28, 0x79, 0x99, 0xd5, 0xeb, 0x9e, 0xf2, 0x06, 0x93, 0x0a,
+ 0x14, 0x25, 0x9a, 0xac, 0x7d, 0x23, 0xef, 0xb7, 0x08, 0xc5, 0x7f, 0xf8,
+ 0x83, 0x78, 0xa4, 0xfe, 0xf0, 0x87, 0x83, 0xc8, 0xcb, 0x01, 0xbe, 0x9d,
+ 0xa7, 0x45, 0x36, 0xa5, 0x42, 0x80, 0xbd, 0xe8, 0x99, 0xcd, 0xa2, 0xf6,
+ 0x8e, 0x2f, 0xdc, 0x55, 0xa3, 0x45, 0x38, 0xd3, 0x78, 0x05, 0x67, 0xd9,
+ 0x97, 0x1c, 0x79, 0x9b, 0x18, 0x4a, 0xf6, 0x2d, 0x0b, 0x9e, 0xd2, 0xb4,
+ 0x54, 0x70, 0x54, 0x8b, 0x66, 0xe8, 0x48, 0x26, 0x0a, 0xd2, 0xb5, 0xc4,
+ 0xf7, 0xd3, 0xce, 0xec, 0xbb, 0x19, 0x7b, 0x46, 0x67, 0x47, 0x10, 0x37,
+ 0x2f, 0x4a, 0x00, 0xe1, 0x21, 0xd8, 0x99, 0xcb, 0x00, 0x63, 0xa4, 0x0e,
+ 0xaa, 0xf7, 0x08, 0x3a, 0xb9, 0xce, 0x92, 0xe8, 0x68, 0x52, 0xc5, 0xfd,
+ 0xeb, 0x21, 0x67, 0x8f, 0x09, 0x06, 0x00, 0x2f, 0x93, 0xbf, 0xd7, 0x94,
+ 0x7d, 0x46, 0x15, 0xf4, 0x04, 0x96, 0x86, 0x8a, 0x9e, 0x53, 0xb1, 0x67,
+ 0xb6, 0xea, 0x68, 0x32, 0x05, 0x6e, 0xa4, 0xa5, 0x44, 0x06, 0x3c, 0x6b,
+ 0x4a, 0xd6, 0xf3, 0x34, 0x79, 0x5f, 0xea, 0x94, 0x24, 0x5c, 0x83, 0x41,
+ 0xf0, 0xcc, 0x98, 0x39, 0xb4, 0x73, 0x89, 0x63, 0xbe, 0xe1, 0xc4, 0xa4,
+ 0x72, 0xc5, 0x54, 0xa5, 0xe4, 0xaf, 0x6f, 0x5f, 0x1e, 0xd7, 0xe2, 0xa4,
+ 0x25, 0x08, 0xdd, 0x0f, 0xba, 0x71, 0xe2, 0xbe, 0x39, 0x74, 0x4a, 0x9e,
+ 0x1c, 0xa3, 0xb1, 0x44, 0xf1, 0x76, 0x14, 0x71, 0xa3, 0xb6, 0xbd, 0x79,
+ 0x28, 0xd2, 0x03, 0x94, 0xe5, 0x95, 0x0c, 0x65, 0xff, 0x13, 0x31, 0x94,
+ 0xfd, 0x0f, 0x66, 0x28, 0x7b, 0x3d, 0xd3, 0xd4, 0xc7, 0x66, 0x28, 0xfb,
+ 0x9f, 0x80, 0xa1, 0x08, 0xa4, 0xb2, 0xb0, 0xc0, 0x76, 0x29, 0xc2, 0x13,
+ 0xd9, 0x6a, 0xda, 0x76, 0xbd, 0x80, 0x7c, 0xcc, 0xf5, 0x36, 0x62, 0xb1,
+ 0xa3, 0xc5, 0x6c, 0xee, 0x0b, 0x62, 0xa5, 0x0a, 0x9f, 0xb1, 0x57, 0xf4,
+ 0x4b, 0x7a, 0x95, 0xd3, 0xd3, 0xe5, 0xf5, 0x53, 0x06, 0x27, 0x97, 0x5b,
+ 0xb5, 0xa5, 0x9a, 0x3c, 0x06, 0xbd, 0x64, 0x43, 0x0c, 0x21, 0xb4, 0x21,
+ 0xca, 0x64, 0x7f, 0x13, 0x83, 0x4e, 0xb1, 0xa0, 0x10, 0xec, 0xe8, 0x68,
+ 0x4e, 0xa6, 0xcf, 0xdd, 0xde, 0x2d, 0xd7, 0x1b, 0xc4, 0x58, 0x93, 0x80,
+ 0x9f, 0xae, 0x48, 0x59, 0x5c, 0xcb, 0x66, 0x8a, 0x58, 0xd6, 0x1c, 0x0e,
+ 0xb5, 0xce, 0x56, 0xc0, 0x09, 0x1e, 0xce, 0x82, 0x5d, 0xd8, 0x7b, 0x70,
+ 0x00, 0x2f, 0xbd, 0xcb, 0x75, 0x70, 0x57, 0xa5, 0xe1, 0xd8, 0x45, 0x5c,
+ 0x85, 0x4d, 0x36, 0x22, 0x81, 0x44, 0x86, 0x01, 0x7c, 0xdd, 0x08, 0x41,
+ 0x02, 0x68, 0x05, 0x10, 0xc9, 0xd1, 0x18, 0x01, 0x11, 0xb6, 0x35, 0xbb,
+ 0xc4, 0x60, 0xa3, 0x9c, 0xd9, 0x8c, 0xe7, 0x83, 0xc2, 0xc8, 0x58, 0x41,
+ 0x35, 0x51, 0xcc, 0x10, 0x29, 0x5f, 0x1d, 0xac, 0x73, 0x58, 0x53, 0x17,
+ 0x8d, 0xdc, 0x81, 0x69, 0x0b, 0x34, 0x37, 0x3a, 0xa8, 0xc0, 0x09, 0x82,
+ 0x74, 0x09, 0x2b, 0xdc, 0x8c, 0xcf, 0xba, 0x9b, 0xaf, 0x88, 0xe2, 0x0e,
+ 0x52, 0xc5, 0xc7, 0xd7, 0x30, 0x82, 0xdd, 0xac, 0xcb, 0x0b, 0xc2, 0x63,
+ 0x5d, 0x8f, 0x37, 0xb4, 0xe3, 0x45, 0xc4, 0x19, 0x1e, 0x41, 0x89, 0xaa,
+ 0x6d, 0x1a, 0xad, 0x35, 0xd6, 0x96, 0x8c, 0xf1, 0xaa, 0xdf, 0x8a, 0xb5,
+ 0xd1, 0x86, 0xcd, 0x70, 0xac, 0xc4, 0xa2, 0x9a, 0x63, 0x4a, 0x03, 0x26,
+ 0xd1, 0x48, 0x84, 0xad, 0x67, 0x7d, 0xa9, 0xbf, 0x38, 0xa4, 0xe8, 0x40,
+ 0xee, 0x41, 0x02, 0xb8, 0x38, 0xe6, 0x43, 0xb5, 0x59, 0x32, 0xd3, 0xa3,
+ 0x07, 0x3b, 0xcf, 0xdf, 0x67, 0xa9, 0x07, 0x89, 0x3d, 0x42, 0x39, 0x5d,
+ 0x5c, 0x57, 0x36, 0xf6, 0xb5, 0xc6, 0xd3, 0x91, 0x56, 0x11, 0x08, 0xb3,
+ 0xd7, 0xeb, 0x05, 0x6a, 0xb0, 0x5c, 0x67, 0xe9, 0x4d, 0x4d, 0xbe, 0x96,
+ 0x91, 0x75, 0xb9, 0x62, 0xc7, 0x48, 0x2a, 0x09, 0xdb, 0x08, 0xe7, 0x96,
+ 0x48, 0xa3, 0x1a, 0x61, 0xc9, 0x84, 0x3e, 0xae, 0x61, 0x53, 0x5a, 0x5d,
+ 0x93, 0x72, 0xb2, 0xf5, 0x88, 0xa4, 0xc5, 0x7b, 0xfd, 0x9e, 0xe9, 0xa3,
+ 0x0c, 0xc1, 0x88, 0x6f, 0xa2, 0xe0, 0x6f, 0x7d, 0x91, 0xdf, 0x19, 0xc5,
+ 0xa7, 0x8b, 0x0a, 0x40, 0x71, 0xa7, 0xb9, 0xed, 0xce, 0xd5, 0x4d, 0x43,
+ 0x63, 0x2c, 0x3d, 0x8f, 0x71, 0xc2, 0x2b, 0x92, 0x1f, 0xcd, 0xb6, 0x7a,
+ 0x79, 0x3b, 0x54, 0xd6, 0xb2, 0xa2, 0x16, 0x28, 0x9c, 0x71, 0x39, 0xb2,
+ 0xbf, 0x03, 0xdb, 0x67, 0x78, 0x19, 0xf7, 0x23, 0x91, 0xfa, 0x65, 0x95,
+ 0xce, 0x45, 0x86, 0x2b, 0xf2, 0x61, 0xaa, 0x91, 0x66, 0x40, 0xcf, 0x5e,
+ 0xa5, 0xec, 0x74, 0xf8, 0x3e, 0x18, 0x29, 0xc5, 0xf5, 0x67, 0x6b, 0xb7,
+ 0xa1, 0xc8, 0x9f, 0xec, 0x78, 0x31, 0xf5, 0x82, 0x45, 0x53, 0x83, 0x55,
+ 0x13, 0x5f, 0x0f, 0x8e, 0x24, 0xf6, 0xcb, 0xc2, 0xba, 0x70, 0x3f, 0x1b,
+ 0x25, 0xa9, 0x57, 0x0e, 0x1e, 0xba, 0x2e, 0x48, 0x56, 0x69, 0x79, 0xa7,
+ 0x94, 0x42, 0xf0, 0x92, 0x20, 0x2b, 0x76, 0x5f, 0xb4, 0x15, 0xf1, 0x6c,
+ 0x34, 0x2d, 0x97, 0xe2, 0xa5, 0xdb, 0x87, 0x1c, 0xb3, 0xd2, 0x79, 0x1b,
+ 0x82, 0x5d, 0x43, 0x9c, 0x15, 0x61, 0x54, 0x64, 0x0a, 0xb7, 0x2f, 0xe3,
+ 0x97, 0xc3, 0x92, 0x3f, 0x5a, 0xb1, 0xe7, 0xf8, 0x68, 0xc9, 0xe8, 0x38,
+ 0x0c, 0xb1, 0xd2, 0xd6, 0xf1, 0xab, 0x08, 0x2b, 0x3e, 0xa2, 0x4d, 0x0c,
+ 0xc9, 0x94, 0x97, 0x98, 0x6b, 0xe5, 0xc0, 0xa3, 0xf9, 0xa2, 0xf0, 0x70,
+ 0x05, 0xe9, 0x22, 0x94, 0x3a, 0x18, 0x52, 0xfa, 0xc2, 0x3b, 0x1c, 0x7a,
+ 0x28, 0x70, 0x03, 0x7a, 0x65, 0xba, 0x0d, 0xbc, 0xa3, 0xdc, 0x2e, 0xcb,
+ 0x09, 0xf6, 0x57, 0x52, 0x55, 0xc6, 0x60, 0x05, 0xe8, 0xe7, 0x52, 0x12,
+ 0x15, 0x28, 0xbd, 0x9e, 0xeb, 0xef, 0x50, 0x18, 0x93, 0x18, 0xb3, 0x4b,
+ 0x2a, 0xc9, 0xfa, 0x8e, 0x22, 0xca, 0x82, 0x64, 0xae, 0x41, 0x6b, 0xb5,
+ 0x27, 0xd5, 0xc3, 0x24, 0x98, 0xc0, 0x26, 0xa4, 0x9b, 0x96, 0x41, 0xd7,
+ 0xdd, 0xdf, 0x11, 0x24, 0x92, 0x2b, 0xcc, 0xce, 0xb2, 0x28, 0x5e, 0xb2,
+ 0x88, 0x9d, 0x5e, 0x59, 0x5e, 0x75, 0xb0, 0x42, 0xad, 0xf9, 0x4a, 0xe3,
+ 0x5a, 0x5b, 0x2a, 0xe3, 0x99, 0x8d, 0x77, 0xe3, 0x74, 0x6c, 0x30, 0x40,
+ 0xd9, 0x1e, 0x28, 0xe8, 0xa3, 0xc3, 0xf2, 0xd2, 0xd4, 0x21, 0x28, 0x84,
+ 0x93, 0x2c, 0xc7, 0x94, 0xd0, 0xa7, 0xa2, 0x7b, 0x33, 0xd2, 0xfb, 0xa2,
+ 0x84, 0xb5, 0xf6, 0xbf, 0xea, 0x16, 0xd6, 0x11, 0xad, 0xed, 0xbe, 0xbc,
+ 0xbd, 0x33, 0x2f, 0x53, 0x42, 0x72, 0x42, 0x84, 0x2d, 0x19, 0x81, 0x09,
+ 0x82, 0x5d, 0xd7, 0xe4, 0x55, 0x45, 0xbd, 0xe4, 0xda, 0xed, 0x4d, 0x5f,
+ 0xff, 0x39, 0x7c, 0x89, 0xf9, 0x22, 0x70, 0x77, 0xba, 0xd8, 0xfd, 0x2c,
+ 0x5b, 0xd9, 0x04, 0x5f, 0xd3, 0x4a, 0xcf, 0x00, 0x21, 0x46, 0x29, 0x7e,
+ 0xd6, 0x86, 0xcf, 0x69, 0x2e, 0x5b, 0x27, 0x1d, 0x0f, 0xad, 0x39, 0x4a,
+ 0x0c, 0x20, 0x63, 0xdb, 0x6a, 0x6e, 0x43, 0x8a, 0x2c, 0x9a, 0xc0, 0xb5,
+ 0x1c, 0xa8, 0x33, 0xd8, 0x56, 0x29, 0xc7, 0x99, 0x19, 0x62, 0xf5, 0x1d,
+ 0x58, 0x6f, 0xc3, 0xcd, 0xcd, 0x4d, 0x6f, 0x59, 0xc0, 0xc4, 0xd9, 0x2c,
+ 0x3a, 0x05, 0x26, 0x77, 0xeb, 0xd4, 0x01, 0x13, 0xbc, 0x61, 0x07, 0x5d,
+ 0xf1, 0x6f, 0x6f, 0x9e, 0x77, 0x8d, 0x0f, 0x5c, 0x8b, 0x31, 0x51, 0xfc,
+ 0x6f, 0xe9, 0x2b, 0xd2, 0x51, 0x9a, 0x49, 0xc0, 0x67, 0x02, 0x6a, 0xc9,
+ 0xf1, 0xd1, 0xf9, 0xbb, 0xd7, 0x27, 0x17, 0xef, 0xde, 0x1c, 0xfd, 0x80,
+ 0x73, 0xe6, 0xbb, 0x07, 0x84, 0x74, 0x0c, 0x61, 0x2f, 0xf2, 0x1c, 0x08,
+ 0xec, 0x15, 0xb1, 0x5b, 0x4e, 0x36, 0x0a, 0xde, 0x32, 0x5a, 0x58, 0x90,
+ 0xc7, 0x89, 0x83, 0x39, 0x70, 0x38, 0x0d, 0x4e, 0xf0, 0x7d, 0x5a, 0xcc,
+ 0xd2, 0x49, 0x2f, 0x2f, 0x2e, 0x91, 0xe1, 0x6c, 0x3f, 0x13, 0x81, 0x25,
+ 0xd8, 0xdc, 0xb6, 0xa4, 0xec, 0x62, 0x18, 0xc2, 0x75, 0x31, 0x46, 0xaf,
+ 0x79, 0x38, 0x87, 0xd6, 0xd9, 0xbe, 0x5a, 0xce, 0xec, 0xbf, 0x35, 0x5a,
+ 0xa6, 0xbe, 0xaf, 0x6b, 0x9e, 0x8f, 0xd1, 0xac, 0xb4, 0x0d, 0x38, 0xe7,
+ 0xe0, 0x11, 0x49, 0x1d, 0xf3, 0xeb, 0x47, 0x4b, 0xcc, 0x05, 0x95, 0x67,
+ 0xaf, 0x71, 0x33, 0xc7, 0x53, 0xce, 0x37, 0x64, 0x98, 0x2f, 0x86, 0xb9,
+ 0x81, 0xfd, 0xf3, 0xdc, 0x4f, 0x4c, 0xd1, 0x08, 0xe0, 0x8c, 0x49, 0xef,
+ 0xcb, 0x65, 0x3b, 0x18, 0xce, 0x47, 0x8e, 0x43, 0xc4, 0x26, 0xd7, 0x5e,
+ 0x6f, 0x1c, 0xc6, 0x47, 0x30, 0x0d, 0x34, 0xf4, 0x77, 0x6b, 0xe7, 0x5f,
+ 0xe2, 0x3b, 0x45, 0x0d, 0xfe, 0x89, 0x6c, 0x8d, 0x1b, 0xb6, 0x66, 0x3e,
+ 0x5b, 0xaa, 0xd8, 0x05, 0x37, 0xec, 0x49, 0x70, 0xc3, 0xc8, 0x66, 0xb3,
+ 0x6a, 0xbb, 0x1e, 0xad, 0xda, 0xae, 0x27, 0x1f, 0x7f, 0xbb, 0x9e, 0x3c,
+ 0x60, 0xbb, 0x9e, 0x3c, 0xc8, 0x1f, 0xb4, 0x6a, 0xc3, 0xee, 0xe1, 0xea,
+ 0xc6, 0xed, 0x32, 0x27, 0xc9, 0xbd, 0x65, 0x7e, 0x2d, 0xa1, 0x8d, 0x70,
+ 0x15, 0x2a, 0x9b, 0x58, 0x5e, 0x36, 0x50, 0x23, 0xfe, 0xdc, 0x3f, 0x7b,
+ 0x2d, 0x15, 0xa3, 0x30, 0x22, 0x88, 0x00, 0x79, 0x6c, 0x5a, 0x42, 0xb8,
+ 0x96, 0x39, 0x2b, 0x8d, 0x8a, 0x97, 0xa7, 0x3d, 0x0b, 0x8e, 0x2d, 0xe7,
+ 0x08, 0x95, 0x57, 0x79, 0x51, 0x0d, 0x17, 0x0c, 0xd4, 0x37, 0xb7, 0xa9,
+ 0x13, 0x94, 0x53, 0xe2, 0x39, 0x5f, 0x8a, 0x54, 0xf5, 0xb0, 0x40, 0xb5,
+ 0x50, 0x01, 0x9c, 0xf9, 0x29, 0x29, 0x2e, 0x7f, 0xf1, 0xbf, 0x93, 0x60,
+ 0xfa, 0x8e, 0x5b, 0xea, 0xfb, 0x80, 0x6b, 0x08, 0xb3, 0x30, 0xb6, 0x8d,
+ 0x83, 0xeb, 0xb4, 0xbf, 0x78, 0x34, 0x1c, 0xa6, 0xf3, 0x2a, 0xf4, 0x8a,
+ 0x8f, 0x24, 0x51, 0xa4, 0xac, 0x06, 0xd4, 0x95, 0x0d, 0x23, 0x29, 0xe3,
+ 0x3c, 0x59, 0xa0, 0xd3, 0x12, 0x5c, 0xc9, 0x10, 0xb7, 0x33, 0xa2, 0x55,
+ 0xf6, 0x6a, 0xeb, 0x3a, 0x9e, 0x5e, 0x2e, 0x05, 0x8a, 0x89, 0x0e, 0x6c,
+ 0x0d, 0x0a, 0xc2, 0x2b, 0x70, 0x8a, 0x1b, 0x17, 0xd8, 0xac, 0x2c, 0x5e,
+ 0x93, 0xc4, 0x65, 0x32, 0xae, 0x4d, 0xf4, 0x6d, 0x57, 0xd3, 0x48, 0xdd,
+ 0xfa, 0x21, 0x49, 0x28, 0xd3, 0x99, 0x94, 0x04, 0x2e, 0xec, 0x62, 0xf3,
+ 0x4a, 0x28, 0x0a, 0xad, 0x1b, 0x11, 0x88, 0xa1, 0xc0, 0x14, 0xc3, 0xe7,
+ 0xe5, 0x15, 0x10, 0x51, 0xbc, 0xc5, 0x15, 0x98, 0xfd, 0xe0, 0x27, 0xc2,
+ 0xe8, 0x36, 0x3c, 0xc0, 0x6f, 0x4f, 0xf3, 0x9c, 0xce, 0x73, 0x0e, 0x38,
+ 0xb4, 0x5f, 0x24, 0x6d, 0xe1, 0x80, 0xa3, 0x68, 0x63, 0x9c, 0xe7, 0x83,
+ 0xa4, 0xd8, 0x90, 0x4c, 0x48, 0x4a, 0x4d, 0x13, 0x2b, 0xba, 0x9e, 0x5e,
+ 0xa2, 0xbb, 0x6f, 0xf9, 0xb9, 0x48, 0x6c, 0x58, 0x6d, 0x18, 0x52, 0x6d,
+ 0xa3, 0xea, 0x12, 0xcf, 0xd2, 0xb6, 0xe2, 0xe0, 0xca, 0x87, 0xa2, 0xfc,
+ 0xb4, 0x48, 0xf1, 0x8c, 0x8b, 0x14, 0x6b, 0xc9, 0x24, 0x2a, 0xc9, 0xea,
+ 0x84, 0xd5, 0x75, 0x43, 0x75, 0x56, 0x47, 0xa3, 0x0c, 0xdb, 0xc2, 0x88,
+ 0x6f, 0x1c, 0xcc, 0x3c, 0x4b, 0xb1, 0xea, 0xae, 0xde, 0xd7, 0x20, 0xc3,
+ 0xa3, 0xea, 0xc4, 0xc9, 0x87, 0x1a, 0x35, 0xa9, 0xb5, 0x16, 0xbc, 0xa4,
+ 0x14, 0xd2, 0x1a, 0x05, 0x27, 0x21, 0x8c, 0x7e, 0x62, 0x0a, 0x4c, 0xbb,
+ 0xd8, 0x4b, 0xa9, 0x8d, 0x0e, 0x94, 0x8a, 0x0e, 0xa3, 0xd4, 0x70, 0x45,
+ 0x05, 0x98, 0x28, 0x3d, 0xad, 0x04, 0xa8, 0x39, 0x10, 0x6b, 0x48, 0x6b,
+ 0xf7, 0xe9, 0xf2, 0x59, 0xb8, 0xfd, 0x8d, 0x7f, 0x46, 0x9d, 0x51, 0x91,
+ 0xcd, 0xde, 0x77, 0x0e, 0xa2, 0xce, 0x30, 0x07, 0x3e, 0xdf, 0x89, 0xfe,
+ 0xb5, 0xb1, 0x06, 0xfe, 0x55, 0xb3, 0x95, 0x0d, 0xf3, 0xd9, 0x07, 0xb4,
+ 0xf7, 0x2d, 0x66, 0x70, 0x27, 0xa8, 0xc7, 0xad, 0xfb, 0x62, 0x1c, 0x7a,
+ 0x23, 0x3a, 0x8c, 0xf0, 0xdb, 0x90, 0x74, 0xe8, 0x0a, 0x58, 0x0e, 0x8c,
+ 0x9c, 0x80, 0x58, 0xe3, 0x27, 0x45, 0x72, 0x53, 0xbf, 0x50, 0xee, 0x1f,
+ 0xa4, 0x13, 0xc5, 0xcf, 0xbb, 0x26, 0x6f, 0x3d, 0x50, 0x14, 0x31, 0xbe,
+ 0xe8, 0x36, 0xab, 0x20, 0x36, 0x22, 0x82, 0x9d, 0x48, 0xe7, 0xbd, 0x9a,
+ 0xb5, 0xfe, 0x57, 0x7c, 0xf3, 0xd7, 0xc5, 0xec, 0x7d, 0x0c, 0xd2, 0x00,
+ 0x5a, 0xf0, 0x62, 0xb1, 0xfd, 0x85, 0x2f, 0x29, 0xeb, 0xc5, 0xa6, 0xd0,
+ 0xc9, 0xc9, 0xc8, 0xb0, 0x14, 0x79, 0x4d, 0x19, 0x07, 0x3b, 0xa2, 0x34,
+ 0x60, 0xb9, 0x2d, 0xd8, 0xc1, 0xba, 0x9f, 0xd0, 0xf9, 0x9d, 0x95, 0x43,
+ 0x8c, 0x77, 0x41, 0xbf, 0x51, 0x47, 0x46, 0xa3, 0xcd, 0x76, 0x64, 0xe9,
+ 0xf8, 0x14, 0x26, 0xfe, 0xd5, 0x3b, 0xa4, 0x7b, 0x99, 0x94, 0x0b, 0x73,
+ 0xd2, 0x05, 0x70, 0x18, 0xae, 0x3c, 0x72, 0x69, 0x71, 0xd1, 0x63, 0x6d,
+ 0x98, 0x56, 0x9f, 0xf8, 0xb5, 0x1f, 0x40, 0x0d, 0xd7, 0x14, 0x36, 0x08,
+ 0x07, 0xb8, 0xc8, 0x6f, 0x4a, 0xc2, 0x23, 0x4b, 0x26, 0x37, 0x84, 0x4b,
+ 0xa1, 0x83, 0x6c, 0x8c, 0x4f, 0xb2, 0xe6, 0x30, 0x51, 0x36, 0xf1, 0x6c,
+ 0x76, 0xc3, 0x49, 0x8e, 0xc7, 0x6e, 0xb4, 0xca, 0xb5, 0x15, 0xda, 0x86,
+ 0x15, 0xe2, 0x94, 0x67, 0xc9, 0x5a, 0x69, 0x20, 0x0f, 0x75, 0xb2, 0xae,
+ 0x80, 0x15, 0x1c, 0x68, 0x3c, 0xd0, 0xc5, 0x58, 0x3f, 0xe6, 0x78, 0xc0,
+ 0xb8, 0x61, 0xf8, 0x36, 0x13, 0xf4, 0xd0, 0x7e, 0x10, 0xff, 0x9a, 0xd4,
+ 0x8a, 0xf0, 0xbd, 0x4f, 0xe1, 0x48, 0x4f, 0xa8, 0xde, 0x1f, 0x22, 0x7e,
+ 0x1c, 0xb6, 0x40, 0x85, 0xd5, 0xe4, 0xe0, 0x52, 0x41, 0x8f, 0x19, 0x1a,
+ 0xc8, 0xb5, 0x8e, 0x92, 0xbe, 0xca, 0x54, 0x3c, 0xa5, 0x10, 0x77, 0x0c,
+ 0x2d, 0x1f, 0x78, 0x96, 0x74, 0x97, 0x91, 0x47, 0x66, 0x08, 0xa8, 0xff,
+ 0x0d, 0xac, 0xd9, 0x86, 0xe1, 0x5a, 0x23, 0x53, 0x33, 0x9e, 0x40, 0x78,
+ 0x60, 0x7b, 0xe1, 0x84, 0x37, 0x1d, 0xf5, 0x8d, 0x16, 0x08, 0xfe, 0x21,
+ 0x2b, 0xdd, 0x5a, 0x7f, 0x44, 0xbc, 0xf8, 0x44, 0x6e, 0x0c, 0x0f, 0x98,
+ 0x63, 0x74, 0x07, 0x17, 0xe6, 0xd4, 0x3b, 0x4e, 0xf0, 0x70, 0xa1, 0x65,
+ 0x44, 0xa9, 0x50, 0xc2, 0xbb, 0xbf, 0x9c, 0x9c, 0x9c, 0xbf, 0x7c, 0x76,
+ 0x7a, 0x22, 0x3e, 0x3e, 0xf3, 0xd1, 0xeb, 0x8b, 0xbf, 0x9d, 0x02, 0xe1,
+ 0xe7, 0xc3, 0xf7, 0x18, 0xd9, 0x2c, 0x72, 0x5d, 0xf3, 0xb0, 0x4b, 0x92,
+ 0x98, 0x68, 0xd7, 0x84, 0x71, 0x3f, 0xa4, 0x34, 0xce, 0xa3, 0x97, 0x3f,
+ 0xc2, 0x5f, 0x2f, 0xce, 0xe3, 0xb7, 0x3f, 0x1a, 0x53, 0xff, 0x16, 0x10,
+ 0xdc, 0x5f, 0x74, 0x3e, 0x65, 0x80, 0xfe, 0x15, 0xcd, 0x88, 0xe2, 0x78,
+ 0x8e, 0xcf, 0x23, 0x06, 0x54, 0x43, 0x54, 0xe8, 0xb4, 0xa2, 0xa2, 0x2c,
+ 0x45, 0xfe, 0x3e, 0x9d, 0x29, 0x6a, 0x56, 0x49, 0x7e, 0x61, 0xdc, 0x85,
+ 0x25, 0x40, 0x66, 0x5c, 0x9d, 0x2d, 0x35, 0x2e, 0x7f, 0x06, 0x56, 0x23,
+ 0x01, 0xcf, 0xdb, 0x1c, 0x75, 0x8a, 0xa5, 0xc3, 0x49, 0x52, 0xf8, 0x01,
+ 0x82, 0x8d, 0x84, 0x2a, 0x02, 0x26, 0x86, 0x9d, 0x38, 0xeb, 0xc3, 0x1b,
+ 0x84, 0xfe, 0x21, 0x49, 0x8e, 0x5a, 0x07, 0x94, 0x72, 0xe0, 0xa3, 0xaf,
+ 0x48, 0x46, 0x8c, 0x76, 0x77, 0x7a, 0xeb, 0x00, 0x9f, 0xd3, 0x09, 0xb4,
+ 0x03, 0x6c, 0x83, 0x45, 0x03, 0xa9, 0x66, 0x31, 0x33, 0x5a, 0x00, 0xcb,
+ 0x8c, 0xd2, 0xa4, 0x8b, 0x15, 0xf6, 0x64, 0x27, 0x52, 0x1c, 0xb9, 0xb0,
+ 0xb1, 0xa2, 0x71, 0x54, 0x5a, 0x2c, 0x16, 0x21, 0x93, 0x45, 0x30, 0x27,
+ 0xfd, 0x43, 0x4c, 0x16, 0x8d, 0xa1, 0xec, 0xad, 0x6b, 0xb5, 0xa8, 0xad,
+ 0x1b, 0xb1, 0x88, 0x1a, 0xdc, 0x57, 0x9d, 0x41, 0xdc, 0xc5, 0x54, 0x9f,
+ 0xfe, 0x10, 0xff, 0xfd, 0x26, 0xe0, 0x40, 0xd9, 0x02, 0xb6, 0x9b, 0x5d,
+ 0xa3, 0x01, 0x1c, 0x9e, 0x65, 0x71, 0x1b, 0x1f, 0xed, 0x99, 0xbc, 0x15,
+ 0xc1, 0x3e, 0xc2, 0x46, 0x08, 0x84, 0x84, 0x1a, 0xa5, 0xb5, 0xf3, 0x70,
+ 0xb7, 0x78, 0x2d, 0xe7, 0xd2, 0x1e, 0x35, 0x08, 0xeb, 0xdc, 0x8b, 0x9e,
+ 0x9d, 0xbc, 0xe9, 0x46, 0xe7, 0x27, 0xaf, 0x58, 0xb9, 0x3e, 0x79, 0xfd,
+ 0x3d, 0xe5, 0x5a, 0x8b, 0x47, 0x1f, 0x91, 0xec, 0x60, 0x8b, 0x7c, 0x14,
+ 0x74, 0x67, 0xd3, 0xe1, 0x5d, 0x52, 0x52, 0xca, 0x72, 0x31, 0x0d, 0xd3,
+ 0x88, 0x33, 0xd5, 0xf5, 0xeb, 0xbe, 0x85, 0xf3, 0xa7, 0x7b, 0xeb, 0xee,
+ 0xaa, 0xf4, 0x0f, 0xb3, 0x95, 0x45, 0x22, 0x3d, 0x6c, 0xbd, 0xbd, 0xc5,
+ 0x84, 0xb7, 0xfa, 0xfe, 0x45, 0x87, 0xf0, 0xcf, 0x37, 0x41, 0xd7, 0x57,
+ 0xff, 0x45, 0x60, 0xf7, 0xc4, 0x5e, 0x5a, 0x83, 0x75, 0x91, 0xf5, 0xe0,
+ 0x0d, 0x9c, 0xfb, 0x4e, 0x1f, 0xd3, 0x42, 0x26, 0xae, 0x24, 0x41, 0xcd,
+ 0x4d, 0x05, 0x3d, 0x82, 0x5c, 0x10, 0xfd, 0x17, 0x5d, 0x3c, 0xb7, 0x68,
+ 0x1b, 0x71, 0xb6, 0x26, 0x58, 0x7b, 0x8a, 0xf2, 0x6c, 0x23, 0xb7, 0x66,
+ 0x26, 0x71, 0x50, 0x10, 0xbc, 0x47, 0xd9, 0x88, 0xeb, 0x0f, 0x62, 0xb6,
+ 0x7e, 0x5e, 0x20, 0xb4, 0x48, 0x14, 0x6d, 0xfc, 0xbf, 0xdb, 0xe8, 0x28,
+ 0xd8, 0xce, 0x46, 0xef, 0x8a, 0x32, 0xd9, 0x68, 0x6a, 0x22, 0xce, 0xd7,
+ 0x23, 0xfc, 0x3a, 0xda, 0xe8, 0x99, 0x47, 0xe5, 0x77, 0xfc, 0x3c, 0x44,
+ 0x16, 0x2a, 0x9e, 0xb1, 0xbb, 0x5e, 0x31, 0x09, 0xcf, 0x80, 0x97, 0xf5,
+ 0xfb, 0xa7, 0xe8, 0xd0, 0x2f, 0x92, 0x42, 0x6c, 0x3e, 0x54, 0x58, 0x69,
+ 0x76, 0x89, 0xee, 0x9d, 0x68, 0xfe, 0x7e, 0x58, 0xee, 0x36, 0xc3, 0xe8,
+ 0x33, 0x27, 0x3d, 0xd9, 0xe0, 0x4b, 0x9e, 0xff, 0xe5, 0xb8, 0xff, 0xbb,
+ 0xdd, 0x5d, 0xc2, 0x36, 0xdd, 0x44, 0xcc, 0xc5, 0xa7, 0x8f, 0x77, 0xf7,
+ 0xb6, 0x42, 0x86, 0x62, 0xaf, 0x6a, 0x28, 0x97, 0xe5, 0x71, 0xb6, 0x8f,
+ 0xa0, 0x04, 0x04, 0x50, 0xd9, 0x34, 0x3c, 0x4a, 0x11, 0x2d, 0x0e, 0xe3,
+ 0xb6, 0x34, 0xcb, 0x92, 0x61, 0xf4, 0xbc, 0xf2, 0x61, 0xf4, 0x15, 0xa3,
+ 0x3a, 0x75, 0x78, 0xfc, 0x07, 0x1d, 0xc3, 0xa6, 0x0c, 0x26, 0x2c, 0xe2,
+ 0xb2, 0x96, 0xf5, 0x71, 0xd3, 0xf1, 0x6b, 0xea, 0xdd, 0xee, 0xbc, 0xb2,
+ 0xb2, 0x56, 0xb8, 0x9b, 0x85, 0x3b, 0x20, 0x4e, 0x59, 0xad, 0x00, 0x16,
+ 0x83, 0xa7, 0x8f, 0xc9, 0x88, 0x3a, 0x11, 0x53, 0x10, 0x2a, 0xc6, 0x4e,
+ 0x9e, 0xb8, 0x59, 0x7f, 0xe7, 0x14, 0xd5, 0x5b, 0x0d, 0xd4, 0x4c, 0x86,
+ 0xf7, 0x3b, 0xc0, 0x4a, 0x3a, 0xc1, 0x16, 0xef, 0x4f, 0x0b, 0x5c, 0xa0,
+ 0xda, 0x29, 0x49, 0x8d, 0xa4, 0xae, 0xe0, 0xf9, 0x52, 0x44, 0xad, 0x55,
+ 0x66, 0xc7, 0xf8, 0x1b, 0x8a, 0x8f, 0x60, 0x4f, 0x2b, 0x1e, 0x4a, 0xeb,
+ 0x6d, 0xdd, 0x94, 0x58, 0xd6, 0xb4, 0x1a, 0x52, 0x8d, 0x4c, 0xf4, 0xe1,
+ 0x63, 0x0c, 0x18, 0xda, 0xb6, 0x3c, 0x15, 0x67, 0x4e, 0xd0, 0xac, 0x84,
+ 0x86, 0x62, 0x09, 0x82, 0x7d, 0x01, 0x5a, 0x3e, 0xab, 0xe1, 0xa0, 0x84,
+ 0x07, 0x60, 0x98, 0x7c, 0x8c, 0x82, 0x9b, 0xb7, 0xc7, 0xfc, 0xc0, 0x49,
+ 0xca, 0xbd, 0x47, 0x65, 0x6b, 0x65, 0xef, 0x1f, 0x54, 0x3c, 0xd3, 0x91,
+ 0x75, 0xd6, 0xbd, 0x1b, 0xc9, 0x3b, 0xe5, 0xba, 0x65, 0x3f, 0x84, 0x93,
+ 0x32, 0x25, 0xd1, 0x0d, 0x79, 0xd2, 0x95, 0xc6, 0x6b, 0xdc, 0xb5, 0x18,
+ 0x44, 0x87, 0x04, 0x39, 0x16, 0xae, 0x0f, 0x72, 0x42, 0x69, 0xac, 0x20,
+ 0xd0, 0x15, 0x20, 0x57, 0xe5, 0x65, 0x03, 0x23, 0x9f, 0x1a, 0x96, 0xa2,
+ 0x5b, 0x29, 0x23, 0x97, 0x31, 0x28, 0x53, 0x20, 0x2e, 0x10, 0x8f, 0x9f,
+ 0xd0, 0xb9, 0x57, 0x59, 0x78, 0x83, 0xe0, 0xfa, 0x91, 0x95, 0x95, 0xc9,
+ 0x38, 0xc5, 0x9f, 0x84, 0x1a, 0x8c, 0xc2, 0x56, 0x96, 0x4c, 0x36, 0xba,
+ 0xfe, 0xfe, 0x6e, 0x08, 0x91, 0x6c, 0xc0, 0x2d, 0xcd, 0xad, 0x21, 0x9f,
+ 0xa7, 0xba, 0x80, 0x32, 0x0e, 0x76, 0xc7, 0x73, 0x09, 0xa6, 0x8a, 0xeb,
+ 0xe3, 0x29, 0x62, 0x55, 0xe9, 0x59, 0x7a, 0x4c, 0x73, 0xf5, 0x7a, 0xd7,
+ 0x6d, 0xd2, 0x8d, 0x50, 0x09, 0xac, 0xdd, 0x67, 0xa3, 0x12, 0xec, 0x9c,
+ 0x8b, 0x1c, 0xac, 0x57, 0xed, 0x31, 0x45, 0x50, 0x6b, 0xb3, 0x77, 0x0c,
+ 0xb2, 0x2f, 0xcd, 0xf9, 0x21, 0x8a, 0xcb, 0x62, 0x14, 0x97, 0x86, 0x28,
+ 0x2a, 0xbd, 0xb8, 0xa4, 0xa6, 0x2f, 0x1c, 0x86, 0x60, 0x07, 0x8f, 0xb8,
+ 0x40, 0x5c, 0x2d, 0x60, 0x56, 0x72, 0x9f, 0x11, 0x7d, 0x7f, 0xc4, 0xf6,
+ 0x13, 0xa9, 0x9a, 0xe4, 0x58, 0xec, 0x68, 0x16, 0x01, 0x23, 0x27, 0xae,
+ 0x33, 0x46, 0xe7, 0x4a, 0xa7, 0x31, 0x7b, 0x68, 0x8f, 0x23, 0x0e, 0x5a,
+ 0x20, 0x78, 0xee, 0xe8, 0xa6, 0xc8, 0xaa, 0x8a, 0xd0, 0x6d, 0x6a, 0x75,
+ 0x80, 0xdb, 0x8a, 0xaf, 0xd3, 0xed, 0x08, 0x2b, 0x04, 0x3b, 0x49, 0x88,
+ 0x68, 0x63, 0xae, 0x43, 0x47, 0x02, 0x85, 0x8c, 0x89, 0xb1, 0xba, 0xac,
+ 0x5f, 0x18, 0xdf, 0xfb, 0xaf, 0x2f, 0x96, 0x83, 0xa9, 0x0a, 0xec, 0x1f,
+ 0x17, 0xf7, 0x92, 0xb8, 0x3b, 0x42, 0x4d, 0x92, 0x10, 0x1c, 0x63, 0xfd,
+ 0xd7, 0x02, 0xd8, 0x3e, 0xf1, 0xe0, 0x58, 0xe2, 0x03, 0x3c, 0xde, 0xb3,
+ 0xf4, 0xb6, 0x0a, 0xcb, 0x86, 0xba, 0xfa, 0xeb, 0xd1, 0xeb, 0xc7, 0x93,
+ 0x0d, 0x0d, 0xce, 0x31, 0x61, 0xcf, 0xf6, 0x86, 0x1f, 0x25, 0x34, 0x2a,
+ 0x26, 0x20, 0xe8, 0x98, 0xc4, 0xb4, 0x43, 0x58, 0xa9, 0xd4, 0x2b, 0x9b,
+ 0xae, 0x22, 0x3c, 0x6f, 0x30, 0xe8, 0x07, 0xd9, 0x74, 0x31, 0xb5, 0x25,
+ 0x41, 0x10, 0x46, 0xb1, 0x22, 0xa1, 0x90, 0xed, 0xe2, 0xae, 0x6b, 0x2c,
+ 0x0e, 0xf8, 0xbf, 0x10, 0x35, 0xdc, 0xa9, 0xc1, 0x46, 0xec, 0x8f, 0xec,
+ 0x6c, 0x5a, 0xf3, 0x5a, 0xe1, 0x54, 0x59, 0x97, 0xc3, 0xc0, 0x53, 0x06,
+ 0x4e, 0x64, 0x5b, 0x54, 0xe2, 0xb9, 0xeb, 0x09, 0xc7, 0x1a, 0x0b, 0x48,
+ 0xce, 0x53, 0x51, 0xcd, 0x69, 0x2c, 0xec, 0xdf, 0xc7, 0x58, 0x3c, 0x22,
+ 0x2f, 0x33, 0x5c, 0x24, 0x0e, 0x19, 0x1e, 0x7e, 0xe1, 0xf3, 0x58, 0x2c,
+ 0x8c, 0x32, 0x80, 0x76, 0x6e, 0xb2, 0x51, 0x75, 0xd5, 0xc3, 0x20, 0x3b,
+ 0xb5, 0xa7, 0x95, 0x52, 0xe4, 0x10, 0xad, 0xe0, 0x99, 0x5f, 0x6c, 0x62,
+ 0x90, 0x06, 0x0d, 0xd2, 0x6c, 0xb8, 0xa3, 0xa5, 0x8d, 0x38, 0x5f, 0x06,
+ 0x21, 0xee, 0x48, 0x40, 0xa3, 0x38, 0xd6, 0x6d, 0x56, 0x39, 0x4d, 0x25,
+ 0xdd, 0x04, 0x58, 0xc0, 0x78, 0x9c, 0xdd, 0x46, 0x7e, 0x70, 0x99, 0x56,
+ 0x85, 0xe8, 0x99, 0xe3, 0x4e, 0xf2, 0xda, 0xc6, 0xfb, 0x0d, 0x14, 0x38,
+ 0x36, 0xfe, 0x22, 0xbc, 0x77, 0x98, 0x2f, 0x66, 0xcc, 0x7d, 0x44, 0x99,
+ 0x07, 0xfe, 0xf2, 0x3e, 0x9b, 0xe4, 0xc1, 0x30, 0x5a, 0xb8, 0x29, 0xa6,
+ 0xfc, 0xfa, 0xab, 0x0d, 0x0d, 0x6a, 0xc3, 0xe2, 0x8f, 0x97, 0x89, 0x7c,
+ 0xcd, 0x25, 0x5a, 0x37, 0x2e, 0xf9, 0xa1, 0xef, 0xf5, 0x21, 0xdf, 0xd3,
+ 0x88, 0x91, 0xba, 0x1c, 0x99, 0xcb, 0x13, 0xe7, 0x69, 0xc0, 0xa3, 0x9b,
+ 0xef, 0xbb, 0x11, 0xa8, 0x6d, 0xdf, 0x77, 0xa3, 0x0b, 0xd0, 0xc2, 0xb6,
+ 0x48, 0x6f, 0xdb, 0xdd, 0xd9, 0x7b, 0x04, 0xcb, 0x4c, 0xd5, 0x38, 0x50,
+ 0x31, 0x48, 0x6f, 0xbd, 0xe8, 0x17, 0x72, 0x93, 0xee, 0xbe, 0xc7, 0x45,
+ 0xc3, 0xa7, 0x7b, 0xd6, 0x6e, 0x8e, 0xa0, 0xde, 0x7f, 0xe9, 0x46, 0xfb,
+ 0x6c, 0xbb, 0xdd, 0xfd, 0x3e, 0xb8, 0xee, 0x44, 0x96, 0x44, 0x1e, 0xc4,
+ 0x6b, 0xf3, 0xcb, 0x6c, 0x18, 0x19, 0x73, 0x48, 0x82, 0xc7, 0xf6, 0x52,
+ 0xc5, 0x19, 0x43, 0x1c, 0xbc, 0x4b, 0x5e, 0x8e, 0x12, 0xc6, 0xcf, 0x72,
+ 0x31, 0x72, 0xda, 0x7b, 0x89, 0x6c, 0xab, 0xc8, 0x95, 0x07, 0x37, 0x31,
+ 0xec, 0x3d, 0xa5, 0x1d, 0x25, 0x08, 0x32, 0x99, 0xe5, 0x94, 0xd0, 0x6c,
+ 0xac, 0x8c, 0xa5, 0x2f, 0xb4, 0xb7, 0x19, 0x18, 0x08, 0xe3, 0x10, 0x0f,
+ 0xab, 0xc2, 0x93, 0xc0, 0xdd, 0x82, 0x03, 0xe2, 0x33, 0x6a, 0x0a, 0x3f,
+ 0x70, 0xa5, 0x13, 0x47, 0xb2, 0xa5, 0x48, 0x42, 0x2f, 0x47, 0x24, 0x1d,
+ 0xa6, 0x23, 0x45, 0xc4, 0x8b, 0xa6, 0x14, 0x27, 0x37, 0x2c, 0xb2, 0xf9,
+ 0x5c, 0xaa, 0x9a, 0xe2, 0xf2, 0xc4, 0x66, 0x79, 0xca, 0x09, 0x3e, 0x80,
+ 0x9e, 0x6b, 0x38, 0x1b, 0x88, 0x12, 0x14, 0x30, 0xaf, 0xe9, 0x6a, 0xb9,
+ 0x63, 0xb2, 0xcb, 0x1a, 0xf2, 0xc7, 0x08, 0xdb, 0x34, 0x0c, 0xe6, 0xdf,
+ 0x00, 0x83, 0x53, 0xb6, 0x73, 0x4f, 0x33, 0x8c, 0x5d, 0xa0, 0x9e, 0x35,
+ 0xfc, 0x17, 0xf5, 0x37, 0x77, 0x1e, 0xfa, 0xe6, 0xab, 0xf5, 0xf8, 0xf5,
+ 0xdf, 0xbb, 0x8d, 0xed, 0x27, 0x61, 0xe3, 0xce, 0x7e, 0xda, 0xb0, 0xd2,
+ 0xd4, 0xeb, 0xae, 0x07, 0xb3, 0x03, 0xce, 0xcf, 0xce, 0xf7, 0xb7, 0x4c,
+ 0x49, 0x4f, 0xf2, 0x3c, 0x68, 0xa1, 0xcc, 0x48, 0x51, 0xa4, 0x9d, 0x10,
+ 0x3b, 0xd6, 0xe1, 0xa9, 0x6a, 0x89, 0x6f, 0xbb, 0x45, 0x0f, 0x5e, 0x42,
+ 0x66, 0x02, 0xea, 0x8f, 0x02, 0x91, 0x2d, 0xdc, 0x7a, 0x4a, 0x77, 0x2e,
+ 0x79, 0x10, 0x2c, 0x0f, 0x17, 0x79, 0xa8, 0xf4, 0x22, 0xb8, 0xf0, 0xde,
+ 0x60, 0x98, 0x16, 0x2d, 0x18, 0x1c, 0x53, 0x35, 0x14, 0x63, 0x4a, 0xe4,
+ 0xc2, 0x21, 0x88, 0x88, 0xdd, 0x18, 0x24, 0xe3, 0x45, 0x04, 0xec, 0x8f,
+ 0x92, 0x9e, 0x64, 0x1f, 0xa4, 0x40, 0x69, 0x23, 0x1d, 0xb0, 0x94, 0x6b,
+ 0x12, 0x82, 0x31, 0x0c, 0x8c, 0xcd, 0x8f, 0x63, 0x3f, 0x05, 0x6c, 0x9a,
+ 0xa0, 0x03, 0x80, 0x57, 0x8b, 0x54, 0x71, 0xba, 0x54, 0x70, 0x71, 0x6a,
+ 0x76, 0xc4, 0x61, 0x42, 0x69, 0x88, 0x30, 0xc2, 0xd7, 0xa7, 0xfd, 0x0b,
+ 0x27, 0xcd, 0xc0, 0xbf, 0xfb, 0x49, 0x01, 0xd3, 0xc2, 0x7c, 0x1c, 0x27,
+ 0xee, 0x40, 0x21, 0x9c, 0xbe, 0xec, 0x5f, 0x78, 0xd4, 0x8d, 0x28, 0xc2,
+ 0x07, 0x51, 0x1f, 0xe3, 0x23, 0x9d, 0xd2, 0xa9, 0xb4, 0x7b, 0x8c, 0x21,
+ 0x2a, 0xb9, 0x13, 0x64, 0x11, 0xe1, 0x78, 0x47, 0x1b, 0xe6, 0xee, 0x0f,
+ 0x02, 0x87, 0xf8, 0x27, 0xf6, 0xae, 0x08, 0x84, 0xa9, 0x06, 0x7d, 0x97,
+ 0x8b, 0x41, 0xac, 0xab, 0xa6, 0x38, 0x67, 0xe5, 0xdd, 0x74, 0x90, 0x63,
+ 0xec, 0x24, 0xc8, 0x66, 0xef, 0x7d, 0xce, 0xb5, 0x29, 0x74, 0xc5, 0x4b,
+ 0x54, 0xa4, 0x68, 0xb8, 0xb9, 0xae, 0x45, 0xf3, 0x0d, 0xa3, 0x94, 0xb0,
+ 0x36, 0xc9, 0x95, 0x85, 0x4f, 0xdf, 0x8b, 0xb8, 0x70, 0x21, 0xdc, 0x74,
+ 0x0d, 0x58, 0xb9, 0x39, 0x87, 0x0e, 0xd6, 0x41, 0x89, 0x31, 0xad, 0x43,
+ 0x81, 0x88, 0x57, 0x64, 0xb2, 0x38, 0xd4, 0x28, 0x25, 0xa0, 0x0b, 0xa1,
+ 0x3e, 0x02, 0xd4, 0x4c, 0xd9, 0xaf, 0x65, 0x46, 0x0d, 0x9c, 0xc9, 0x73,
+ 0x8c, 0x25, 0x97, 0x69, 0x9c, 0x8d, 0x18, 0x4d, 0xa8, 0x34, 0x7e, 0x70,
+ 0xde, 0x45, 0xae, 0x4d, 0x0a, 0xdc, 0x99, 0x72, 0x47, 0x08, 0x96, 0xbb,
+ 0x65, 0x27, 0xd9, 0xed, 0x57, 0x43, 0x53, 0xac, 0x95, 0x17, 0xaa, 0x87,
+ 0xe7, 0x8a, 0x21, 0x28, 0x54, 0xfb, 0x9a, 0xb2, 0xa1, 0xb9, 0x82, 0xc2,
+ 0xdb, 0x97, 0xcf, 0x4e, 0xcd, 0x7a, 0xc9, 0xfa, 0x10, 0xe2, 0xa3, 0x99,
+ 0x2a, 0xc2, 0x56, 0xeb, 0xdd, 0x42, 0x3b, 0xe2, 0x21, 0xa5, 0x2d, 0x66,
+ 0x19, 0xf4, 0x1f, 0xb1, 0xde, 0x38, 0x46, 0xa8, 0x66, 0xe0, 0x5e, 0x57,
+ 0x56, 0xe8, 0x29, 0x09, 0xac, 0x56, 0xd6, 0x40, 0x4e, 0xec, 0x7b, 0xcd,
+ 0xae, 0x68, 0x01, 0x1b, 0x5f, 0x1e, 0x26, 0x6b, 0x58, 0xd6, 0x47, 0x0f,
+ 0x93, 0x35, 0x2d, 0xaf, 0xab, 0x18, 0xda, 0x21, 0xf9, 0x8a, 0x21, 0x9c,
+ 0x8d, 0xf6, 0x12, 0x7d, 0x7f, 0xc5, 0x1d, 0xfc, 0xc7, 0x02, 0x11, 0xc8,
+ 0x96, 0x15, 0x8c, 0x22, 0xb8, 0xcf, 0x09, 0x97, 0xdd, 0x3d, 0x04, 0x11,
+ 0x6d, 0x9b, 0x0a, 0xb6, 0x78, 0x72, 0x37, 0x9a, 0xa7, 0x1c, 0xd4, 0x93,
+ 0x7a, 0x15, 0xed, 0xbc, 0x90, 0x32, 0x2f, 0x9b, 0xcf, 0xdf, 0x9c, 0xbd,
+ 0x8a, 0x2f, 0xce, 0xb6, 0x48, 0x35, 0xa7, 0x96, 0x97, 0xa4, 0x72, 0x96,
+ 0x2a, 0xfb, 0x3a, 0xd5, 0x6b, 0xc5, 0x51, 0xb3, 0x59, 0xa2, 0xdf, 0xc9,
+ 0xc2, 0x95, 0xd3, 0xf0, 0xf4, 0xad, 0xc1, 0x9d, 0x17, 0xb4, 0x42, 0x42,
+ 0x3a, 0x8a, 0x72, 0x70, 0x60, 0x86, 0x09, 0xaa, 0x84, 0x1a, 0xd0, 0x5e,
+ 0x07, 0xd4, 0x1a, 0x2c, 0xca, 0xbb, 0x48, 0x2a, 0xea, 0x94, 0x48, 0x8e,
+ 0x78, 0xc1, 0xfb, 0x2e, 0x28, 0xf6, 0xb5, 0x61, 0x8a, 0xb5, 0x96, 0x22,
+ 0xc7, 0x5a, 0x1d, 0x5c, 0x1a, 0xa1, 0xca, 0x81, 0x49, 0x25, 0x45, 0x91,
+ 0xdf, 0xa8, 0x20, 0x83, 0xcc, 0x16, 0x88, 0x75, 0x86, 0x91, 0x24, 0x25,
+ 0xe8, 0xb5, 0xed, 0xb5, 0x74, 0xa0, 0x33, 0xc4, 0x54, 0xe6, 0x82, 0xe1,
+ 0x65, 0x8b, 0x88, 0x62, 0xf7, 0xe3, 0x33, 0x22, 0xf5, 0x39, 0xa3, 0x40,
+ 0x39, 0x23, 0xde, 0xdf, 0x59, 0xb7, 0x60, 0x8b, 0x5b, 0x89, 0xac, 0x49,
+ 0x6f, 0xb8, 0x18, 0x71, 0x55, 0x2c, 0xb0, 0x1c, 0x50, 0x4b, 0x7a, 0xf2,
+ 0x29, 0x65, 0x2e, 0x21, 0x22, 0xad, 0xf3, 0x0e, 0x47, 0x24, 0x73, 0x6a,
+ 0x3f, 0xda, 0xe0, 0x6d, 0x91, 0x92, 0x2b, 0x89, 0xa9, 0xfa, 0xa3, 0xc7,
+ 0x71, 0xcb, 0x12, 0x24, 0x42, 0xe2, 0xd9, 0x18, 0x7a, 0x60, 0x10, 0x69,
+ 0x25, 0xfa, 0x0b, 0xf4, 0x35, 0xe2, 0x44, 0x9a, 0xf6, 0x1b, 0x21, 0x38,
+ 0x16, 0x71, 0x6f, 0xfc, 0xd4, 0x53, 0x18, 0xf1, 0x43, 0xbe, 0xa1, 0x2a,
+ 0xca, 0x7b, 0x26, 0x82, 0x43, 0x7b, 0x6b, 0x56, 0xdd, 0x45, 0x83, 0x82,
+ 0x00, 0xab, 0xb5, 0x28, 0x24, 0x36, 0x6d, 0xb1, 0x78, 0xd9, 0x6f, 0xd1,
+ 0xe4, 0x16, 0xfc, 0x14, 0x96, 0x7b, 0x22, 0x9f, 0x14, 0x29, 0x8b, 0x04,
+ 0x35, 0x95, 0xb2, 0x1d, 0xa4, 0x68, 0x5a, 0xe8, 0x30, 0x68, 0x3a, 0xda,
+ 0xe4, 0xa7, 0xfd, 0xeb, 0x65, 0x92, 0xa0, 0x59, 0xfc, 0xd6, 0xa6, 0x7c,
+ 0x24, 0x6c, 0x4d, 0xa0, 0xa8, 0xc1, 0xef, 0x92, 0x12, 0xae, 0x91, 0x7a,
+ 0x7b, 0x5b, 0x4b, 0x43, 0x16, 0x9a, 0x5b, 0xf5, 0x71, 0x6b, 0xb3, 0x34,
+ 0x5b, 0x7f, 0x08, 0x89, 0xd6, 0x46, 0x17, 0x93, 0xc5, 0xb0, 0x38, 0x30,
+ 0x7b, 0xbe, 0x16, 0xbd, 0x2e, 0x14, 0xfa, 0xd6, 0x21, 0xd6, 0x1a, 0x1e,
+ 0x72, 0x98, 0x50, 0x5f, 0xd6, 0x4a, 0x80, 0x72, 0x6e, 0xa9, 0x43, 0x60,
+ 0xc2, 0x70, 0x11, 0xd4, 0x05, 0xa1, 0x70, 0x39, 0x05, 0x12, 0xb1, 0xfc,
+ 0x47, 0xa1, 0x74, 0xf4, 0x51, 0x86, 0xae, 0x7e, 0x94, 0xc8, 0xb4, 0xd3,
+ 0x68, 0x53, 0x4b, 0xfd, 0x18, 0x30, 0xfc, 0x53, 0xf9, 0xea, 0xc0, 0x14,
+ 0x23, 0xc2, 0x1b, 0xb7, 0xd1, 0xdc, 0xfe, 0x8f, 0x3f, 0x5a, 0x99, 0x0b,
+ 0xcd, 0x63, 0x5b, 0x6d, 0x05, 0x35, 0x05, 0x26, 0x7d, 0x94, 0xeb, 0xbd,
+ 0x49, 0x03, 0xf6, 0xb4, 0x44, 0x3e, 0x62, 0x20, 0xb7, 0x4a, 0x8e, 0x18,
+ 0x7a, 0xb1, 0xd9, 0x17, 0x74, 0x99, 0xd2, 0xa5, 0x2c, 0x1b, 0xab, 0xb2,
+ 0x1b, 0x96, 0xd8, 0xb4, 0x15, 0x27, 0x83, 0x80, 0xff, 0xa5, 0x85, 0xdd,
+ 0xab, 0x2f, 0x93, 0x8d, 0xc7, 0x03, 0x85, 0xf6, 0x66, 0x26, 0x25, 0x66,
+ 0x2c, 0xe5, 0x86, 0x53, 0x06, 0xb2, 0x32, 0x92, 0xca, 0xa1, 0x92, 0x3c,
+ 0x44, 0xb7, 0x66, 0x49, 0x81, 0xb7, 0x28, 0x2c, 0x0c, 0x8b, 0x54, 0x2c,
+ 0xd0, 0xa5, 0x0a, 0xbc, 0x5c, 0x5f, 0x7a, 0x12, 0xc8, 0xd8, 0x61, 0x17,
+ 0x92, 0xc3, 0x16, 0x6c, 0x52, 0x52, 0x63, 0xa7, 0x18, 0xcb, 0x3a, 0x13,
+ 0xb6, 0x14, 0xf0, 0xfa, 0x12, 0xe4, 0x3a, 0x95, 0xb4, 0x24, 0xa8, 0x23,
+ 0x34, 0x9c, 0x63, 0xd8, 0x6b, 0x64, 0x44, 0xa1, 0x3f, 0x2a, 0xc1, 0xf6,
+ 0x5c, 0xd3, 0xae, 0x21, 0x6f, 0xcf, 0x15, 0xc9, 0xd4, 0x8e, 0x11, 0x08,
+ 0x08, 0x23, 0x90, 0x53, 0x61, 0xe4, 0x4b, 0xd6, 0x02, 0x6c, 0x7a, 0x0a,
+ 0xeb, 0x69, 0x14, 0xf2, 0x38, 0x25, 0x13, 0x0c, 0xb0, 0x01, 0x9c, 0x8d,
+ 0x5f, 0x44, 0x7e, 0xc8, 0x12, 0x27, 0x7b, 0x35, 0x31, 0x92, 0xc3, 0xc2,
+ 0x9f, 0xb0, 0x0b, 0x9e, 0x16, 0xa1, 0x15, 0x17, 0x9e, 0x25, 0x6d, 0x5e,
+ 0x71, 0x6e, 0x83, 0x32, 0xae, 0xcc, 0xca, 0x91, 0x00, 0x38, 0xae, 0xe5,
+ 0x85, 0x66, 0xa5, 0x84, 0x3b, 0x77, 0x7d, 0xc3, 0x8d, 0x65, 0x7f, 0x04,
+ 0xc5, 0xe8, 0xa0, 0x7a, 0xf3, 0xbb, 0x72, 0x08, 0xb0, 0x12, 0xab, 0xb4,
+ 0x5a, 0xcf, 0xa3, 0xf5, 0xd4, 0x39, 0x18, 0xcd, 0xfe, 0xce, 0x6e, 0x17,
+ 0xff, 0xdd, 0xeb, 0xb2, 0x62, 0xb5, 0xbf, 0xb3, 0x6f, 0x6a, 0xf3, 0xd5,
+ 0x0e, 0x09, 0x3d, 0x4e, 0x26, 0x6a, 0x22, 0xe9, 0xfd, 0xdb, 0xdb, 0x40,
+ 0x1d, 0xc8, 0x3a, 0x6c, 0x6f, 0xbc, 0x64, 0xac, 0x76, 0x21, 0x29, 0x62,
+ 0x6d, 0xe1, 0xed, 0xa5, 0x42, 0x6c, 0x46, 0x28, 0x5c, 0xe4, 0xa3, 0x20,
+ 0xe6, 0x3e, 0x55, 0x57, 0xc0, 0x2a, 0x21, 0x4a, 0x7c, 0x78, 0xff, 0xc8,
+ 0x96, 0xbb, 0x45, 0x67, 0x69, 0x13, 0x71, 0x59, 0xa4, 0xaa, 0x36, 0xcc,
+ 0xf2, 0xb6, 0x0d, 0xd9, 0xb0, 0xb6, 0xc9, 0x20, 0x5d, 0x08, 0x83, 0x31,
+ 0xa0, 0xd5, 0x52, 0x68, 0x19, 0x98, 0xd8, 0x01, 0xa1, 0xfd, 0x03, 0x89,
+ 0xe3, 0x1a, 0x7a, 0xc1, 0xa7, 0xfc, 0x85, 0xc2, 0x10, 0xf1, 0x5f, 0xfb,
+ 0xe1, 0x48, 0x58, 0x9e, 0xa1, 0x48, 0x2b, 0xc2, 0x2b, 0x74, 0x9d, 0x24,
+ 0x0a, 0x56, 0x8c, 0xf2, 0xf2, 0xa4, 0xad, 0xc4, 0x12, 0xc2, 0x96, 0x27,
+ 0x53, 0x67, 0x99, 0x4e, 0xa4, 0xfe, 0xe3, 0xa2, 0x4c, 0xef, 0x75, 0x93,
+ 0x2d, 0xbd, 0xc1, 0xac, 0x60, 0xbf, 0x96, 0x64, 0xaf, 0x70, 0xf9, 0xeb,
+ 0x5d, 0x5f, 0xa7, 0x6b, 0x3a, 0xff, 0x50, 0x9e, 0x9d, 0x68, 0x74, 0x4c,
+ 0x9c, 0x4c, 0xaa, 0xb8, 0xbc, 0x1e, 0xd6, 0xe5, 0x2a, 0xf4, 0xa1, 0xeb,
+ 0x0e, 0x1e, 0xca, 0x2f, 0x9e, 0x1b, 0x90, 0xaa, 0x29, 0x45, 0xa7, 0xcf,
+ 0x8e, 0xc4, 0x06, 0x13, 0x49, 0x5d, 0x28, 0xb5, 0xac, 0x93, 0xd7, 0x00,
+ 0x9b, 0x32, 0xc4, 0x20, 0x42, 0xfa, 0x68, 0x11, 0x08, 0xaf, 0x52, 0x5d,
+ 0xb3, 0x26, 0x54, 0xb4, 0x92, 0x31, 0x36, 0xe3, 0xb5, 0xad, 0x29, 0x67,
+ 0xa6, 0xc4, 0x9a, 0x55, 0x79, 0x5b, 0x02, 0xd8, 0xd8, 0x15, 0x48, 0x65,
+ 0x8f, 0x54, 0x11, 0x95, 0xd1, 0x35, 0x07, 0x12, 0x1d, 0x55, 0xc6, 0xc9,
+ 0x4c, 0xb7, 0x01, 0xce, 0xbe, 0x49, 0xc6, 0xb4, 0x0a, 0x94, 0x89, 0x8a,
+ 0x05, 0xa6, 0xd4, 0xe5, 0x55, 0x1b, 0x27, 0x9b, 0x85, 0xa7, 0x4e, 0xd6,
+ 0x9a, 0x93, 0xa5, 0xe6, 0xe1, 0x7d, 0x5e, 0x92, 0x0b, 0x5b, 0x8f, 0x12,
+ 0xe3, 0xf7, 0x47, 0xa4, 0xd1, 0x53, 0x0d, 0xcb, 0x68, 0x6f, 0xff, 0xcb,
+ 0x47, 0x5d, 0xfe, 0xfd, 0xf1, 0xce, 0x57, 0x7c, 0x7a, 0x5e, 0x9e, 0x5c,
+ 0x3c, 0x8f, 0x46, 0x05, 0x9c, 0xdd, 0xa6, 0xaf, 0x0a, 0x3f, 0x8b, 0xd3,
+ 0xa4, 0xb8, 0x4a, 0x8a, 0x0a, 0xcb, 0x55, 0xc7, 0xe5, 0xb4, 0x9a, 0xc7,
+ 0x3b, 0x3b, 0x2d, 0x59, 0x6c, 0x4d, 0x42, 0xf8, 0x5c, 0x98, 0xcf, 0xf5,
+ 0x51, 0x6c, 0x1c, 0xbd, 0xbd, 0x78, 0xf1, 0xf5, 0x1f, 0x36, 0xa2, 0x6c,
+ 0x9a, 0xcc, 0xd7, 0x97, 0xc8, 0x6a, 0x18, 0x47, 0x0d, 0xb8, 0x5a, 0x34,
+ 0x1d, 0xc4, 0xb8, 0xef, 0xd1, 0xa1, 0x24, 0x3e, 0xf9, 0xe8, 0xde, 0x44,
+ 0xe1, 0xd6, 0x79, 0x84, 0xb5, 0xc3, 0x59, 0x81, 0x95, 0x37, 0x6a, 0xf1,
+ 0xc7, 0x5e, 0x36, 0x64, 0x28, 0x8d, 0xa0, 0xe1, 0x37, 0x97, 0x0c, 0xcf,
+ 0x4d, 0xb6, 0x55, 0x54, 0x77, 0x5b, 0xec, 0x9c, 0xc6, 0x8e, 0x16, 0x83,
+ 0x29, 0xfa, 0x25, 0x47, 0x91, 0x5a, 0x2b, 0x42, 0xd4, 0x8c, 0x41, 0x1c,
+ 0x29, 0x5f, 0x1d, 0x93, 0xe4, 0x8e, 0x7b, 0x4f, 0x66, 0x7c, 0x0b, 0x49,
+ 0xb2, 0x4f, 0xd8, 0x69, 0x6d, 0x67, 0xff, 0x19, 0x33, 0x16, 0xed, 0x20,
+ 0x70, 0xb7, 0xbe, 0x75, 0x36, 0x17, 0x44, 0x88, 0x0b, 0x2e, 0x6d, 0x83,
+ 0x54, 0x7b, 0x7f, 0xbf, 0x36, 0xb5, 0x58, 0x0c, 0xe7, 0x9a, 0xd7, 0x4b,
+ 0x7f, 0xa3, 0xb4, 0xe8, 0xed, 0x3c, 0x89, 0x90, 0x2b, 0x76, 0xde, 0x02,
+ 0x56, 0xd7, 0xb7, 0xdd, 0x8a, 0xe9, 0xec, 0x17, 0xe3, 0x72, 0x72, 0x5a,
+ 0x2a, 0x27, 0x00, 0xca, 0x84, 0x7c, 0xa4, 0x3e, 0x0a, 0x7f, 0x33, 0x68,
+ 0x40, 0x9f, 0x7b, 0x33, 0x68, 0x10, 0xcd, 0xcd, 0xf8, 0x98, 0x7b, 0x81,
+ 0xbb, 0xed, 0xed, 0x05, 0x3e, 0x14, 0x93, 0x62, 0x8e, 0x26, 0x8e, 0x32,
+ 0xbc, 0x19, 0x3f, 0xb8, 0xc5, 0x45, 0x29, 0x07, 0x07, 0xab, 0xb4, 0xe9,
+ 0xb5, 0x0c, 0x22, 0x63, 0x36, 0x47, 0x97, 0x32, 0x2c, 0x93, 0xc5, 0xfd,
+ 0x0b, 0x85, 0xe4, 0xb1, 0xb8, 0x0d, 0x1c, 0x18, 0x73, 0xb2, 0x88, 0x75,
+ 0x0f, 0xf3, 0x19, 0x1a, 0xa2, 0x45, 0x51, 0x1e, 0xa3, 0x9d, 0x07, 0x79,
+ 0x6f, 0xa5, 0x61, 0x29, 0x2c, 0xee, 0x69, 0xfb, 0x1e, 0x88, 0x34, 0x99,
+ 0xcc, 0xdf, 0x1c, 0x9f, 0x5f, 0x44, 0x17, 0x67, 0xae, 0xa9, 0x97, 0x2b,
+ 0x65, 0x11, 0x6a, 0x7b, 0x51, 0xe4, 0x45, 0x50, 0xbc, 0xd1, 0x71, 0x0e,
+ 0x52, 0x2c, 0x5f, 0x9e, 0x9b, 0x0a, 0x33, 0x2c, 0xa7, 0x51, 0x7c, 0xb4,
+ 0x49, 0xc5, 0x6b, 0xac, 0x56, 0x00, 0x2f, 0x9a, 0x56, 0x2f, 0x6a, 0x46,
+ 0x21, 0xb0, 0xde, 0x46, 0x9a, 0x7f, 0x43, 0x7b, 0xe3, 0x88, 0x2d, 0x1e,
+ 0x9e, 0xe7, 0xa6, 0x9d, 0x8d, 0x0c, 0x10, 0x87, 0x49, 0x58, 0xe3, 0x68,
+ 0x78, 0x1c, 0x0c, 0x50, 0x5f, 0x36, 0x72, 0x56, 0x25, 0x44, 0xd9, 0xac,
+ 0xa0, 0xe9, 0x13, 0x18, 0x0b, 0x79, 0x89, 0x98, 0x48, 0xba, 0x54, 0xc6,
+ 0x9e, 0x25, 0x1e, 0x6f, 0x8e, 0xf9, 0x18, 0x4f, 0x92, 0xcb, 0x80, 0x05,
+ 0xbc, 0x19, 0x67, 0xa9, 0x02, 0x3f, 0x61, 0xa4, 0xf2, 0x66, 0xe2, 0x00,
+ 0xfd, 0xfd, 0x0c, 0x17, 0xc6, 0xa5, 0x9d, 0x21, 0x0b, 0x32, 0xce, 0x9d,
+ 0x02, 0xd9, 0x33, 0x04, 0xbc, 0x27, 0xfa, 0x17, 0x25, 0x8f, 0x4e, 0x5a,
+ 0x63, 0x5f, 0x97, 0x0a, 0x8b, 0x21, 0x5a, 0xfe, 0xe8, 0x99, 0x1a, 0xa1,
+ 0x4e, 0x1e, 0x74, 0xd4, 0x9b, 0x03, 0x75, 0x0f, 0x2c, 0x88, 0xd4, 0x55,
+ 0x8d, 0x03, 0xf8, 0x27, 0xff, 0x3e, 0x07, 0xbf, 0x0e, 0x08, 0xf6, 0x55,
+ 0xe0, 0xfe, 0xa5, 0xde, 0xd6, 0xe5, 0xc2, 0xec, 0x87, 0x91, 0x97, 0xba,
+ 0xec, 0x15, 0x20, 0x23, 0x1e, 0xca, 0x5a, 0xf0, 0x15, 0x87, 0x25, 0x79,
+ 0xb6, 0x08, 0x0e, 0x07, 0x7e, 0x93, 0xce, 0x53, 0x62, 0xde, 0x6e, 0x62,
+ 0x9d, 0x9b, 0xf9, 0xa6, 0x55, 0xc9, 0xc8, 0x2f, 0xa0, 0x9b, 0x17, 0x20,
+ 0xa1, 0x56, 0xca, 0x67, 0xc5, 0x56, 0xbc, 0x3c, 0x5c, 0xba, 0xc0, 0x5c,
+ 0x1c, 0xb5, 0x24, 0xd4, 0xcd, 0xbf, 0xbd, 0x79, 0xfe, 0x77, 0xa5, 0xac,
+ 0x2d, 0x4d, 0x02, 0x6d, 0xe9, 0xc7, 0x89, 0x96, 0xb3, 0xb1, 0x40, 0x52,
+ 0x57, 0xb3, 0xb6, 0x02, 0xfc, 0x97, 0x54, 0x8f, 0xf0, 0xb1, 0xdb, 0x46,
+ 0x39, 0x25, 0xb4, 0x6c, 0x62, 0x88, 0x28, 0x3c, 0xd7, 0x17, 0x0b, 0xf3,
+ 0x7e, 0xef, 0x31, 0xb9, 0xa1, 0x9e, 0x1f, 0x3f, 0xde, 0xdf, 0xdb, 0xdd,
+ 0xea, 0xd5, 0x8a, 0x88, 0xa2, 0xe8, 0xb4, 0x15, 0x9c, 0xa6, 0x3b, 0xcb,
+ 0xda, 0xda, 0x63, 0x20, 0x27, 0x1e, 0xbd, 0xcd, 0x93, 0x1f, 0xcf, 0x5f,
+ 0x7b, 0x73, 0x84, 0x39, 0x79, 0x41, 0xc0, 0x6d, 0x73, 0xb4, 0x0a, 0x67,
+ 0xad, 0x7d, 0xc5, 0xc9, 0xa0, 0xba, 0x8e, 0x81, 0x30, 0xdb, 0xe7, 0x45,
+ 0x86, 0x16, 0x9c, 0x0e, 0x2e, 0x49, 0xe7, 0x34, 0x9f, 0x8d, 0xf2, 0x59,
+ 0x7c, 0x36, 0x86, 0xb5, 0x4f, 0xb1, 0xfc, 0xe4, 0xca, 0xd9, 0xb9, 0xf4,
+ 0xf9, 0xe9, 0x2a, 0x32, 0xd8, 0x3e, 0x6a, 0x77, 0xee, 0x0c, 0xae, 0xf7,
+ 0x87, 0x9d, 0xb8, 0x20, 0x53, 0x88, 0x5f, 0x71, 0x52, 0xc4, 0xcc, 0xcf,
+ 0x38, 0x7a, 0x45, 0x1f, 0xf6, 0x90, 0xe1, 0x98, 0x1a, 0x58, 0x57, 0x0b,
+ 0xa9, 0xbd, 0x15, 0x55, 0xa1, 0x30, 0xb2, 0x9a, 0xe3, 0x8b, 0x1b, 0xfd,
+ 0xc8, 0x28, 0x5b, 0xdc, 0xe8, 0xfa, 0x4c, 0x8d, 0xe6, 0x77, 0xaf, 0xd8,
+ 0xb1, 0xae, 0x13, 0x89, 0xe6, 0x94, 0x4b, 0xae, 0xb3, 0xa7, 0x5b, 0x4a,
+ 0x9a, 0x24, 0x2f, 0xe8, 0x21, 0x85, 0x04, 0x85, 0x42, 0x63, 0xd9, 0x8a,
+ 0xf4, 0xea, 0xaf, 0x17, 0x17, 0x75, 0x55, 0x58, 0x43, 0xcc, 0xe8, 0xf5,
+ 0x4d, 0x0d, 0x93, 0x22, 0xff, 0x56, 0x22, 0xb9, 0x25, 0xb9, 0x77, 0x32,
+ 0x39, 0x9e, 0xac, 0x17, 0x99, 0xb2, 0x30, 0xf4, 0xa0, 0xb5, 0x71, 0x66,
+ 0x75, 0x5c, 0x41, 0x46, 0xe2, 0x45, 0x31, 0xb0, 0x1b, 0xc8, 0xf8, 0x37,
+ 0xf1, 0x40, 0x74, 0x51, 0x52, 0xae, 0x02, 0xe5, 0xa1, 0x27, 0xb3, 0x51,
+ 0xcd, 0x10, 0x45, 0x57, 0x21, 0x2d, 0x7e, 0x7a, 0x4b, 0x48, 0x56, 0xa3,
+ 0x34, 0x7a, 0xe2, 0x1b, 0x63, 0x8e, 0x78, 0x2a, 0x62, 0x79, 0x62, 0x37,
+ 0xac, 0x4a, 0x9a, 0x12, 0xfc, 0x44, 0xdb, 0xd3, 0x75, 0x82, 0xba, 0x30,
+ 0xa6, 0x8b, 0x58, 0xd2, 0xc6, 0x5f, 0x36, 0x82, 0x52, 0x18, 0x07, 0x79,
+ 0xb1, 0x01, 0x59, 0x73, 0xb6, 0xd0, 0xf0, 0x86, 0x81, 0x5e, 0x12, 0xb9,
+ 0x45, 0x91, 0x5d, 0xdc, 0xc8, 0xab, 0x8d, 0xc8, 0x04, 0x77, 0x35, 0x0d,
+ 0x62, 0x2b, 0x43, 0xbd, 0x60, 0x6a, 0x4e, 0x6c, 0x97, 0x8d, 0xc2, 0xe2,
+ 0x30, 0xac, 0xa6, 0x15, 0xdc, 0x04, 0x65, 0xd5, 0x8b, 0x29, 0x7f, 0x19,
+ 0xe0, 0x14, 0xaf, 0xcf, 0x2e, 0x4e, 0x0e, 0xc4, 0x58, 0x65, 0xab, 0x91,
+ 0x0b, 0xf4, 0x98, 0x24, 0x88, 0x12, 0xb2, 0x94, 0x60, 0xc8, 0x63, 0x86,
+ 0x9b, 0xec, 0x74, 0x37, 0xc0, 0x9f, 0x09, 0xa0, 0x12, 0x79, 0x1a, 0xc7,
+ 0x42, 0x54, 0xad, 0x89, 0x63, 0x84, 0xec, 0x2c, 0xa6, 0x4c, 0x26, 0x28,
+ 0xdc, 0x70, 0x5f, 0xa0, 0xc0, 0x7a, 0xa8, 0x68, 0xca, 0x5e, 0xcc, 0x45,
+ 0x55, 0xf4, 0x48, 0x88, 0x95, 0x18, 0x32, 0xfc, 0xf6, 0xc4, 0x16, 0xa0,
+ 0xd4, 0x1f, 0x87, 0xf0, 0x24, 0x1f, 0x14, 0xeb, 0xfc, 0x40, 0x9d, 0xc4,
+ 0x39, 0x84, 0xad, 0x11, 0x4f, 0xed, 0x7c, 0xd1, 0xc6, 0x2e, 0x35, 0x8f,
+ 0xb6, 0xd8, 0xa6, 0xd1, 0x73, 0xdd, 0x8a, 0xbc, 0x51, 0x99, 0x53, 0x6c,
+ 0x0b, 0x63, 0xab, 0x79, 0x5a, 0xad, 0x50, 0x6c, 0xbc, 0x15, 0x4f, 0x03,
+ 0x99, 0x2f, 0xbc, 0xfb, 0x3b, 0xf1, 0xdc, 0x0c, 0x94, 0x87, 0x94, 0x12,
+ 0xc0, 0x2f, 0x03, 0xec, 0xa2, 0xd4, 0x69, 0xcd, 0xc0, 0xe8, 0x29, 0x9e,
+ 0xa2, 0x35, 0xb9, 0xd5, 0xee, 0xee, 0xea, 0x38, 0xb2, 0xe8, 0x64, 0xb6,
+ 0xcf, 0xb8, 0x3a, 0x28, 0xb4, 0xff, 0x78, 0xc7, 0x29, 0xe8, 0xd9, 0x63,
+ 0x47, 0xfc, 0x92, 0xf4, 0x0d, 0x04, 0x28, 0xd9, 0x35, 0x65, 0xaf, 0x33,
+ 0xaa, 0x16, 0xc6, 0x41, 0xa9, 0xad, 0x2a, 0xab, 0x59, 0xc3, 0xba, 0xce,
+ 0xfa, 0xef, 0x55, 0x59, 0xcd, 0x20, 0xf6, 0x5d, 0x63, 0xed, 0x5a, 0x44,
+ 0x52, 0xaf, 0x5d, 0x6a, 0xc9, 0xa4, 0x96, 0x49, 0x18, 0x1d, 0x8e, 0x0b,
+ 0x86, 0x86, 0x4e, 0x26, 0x51, 0x4b, 0x6e, 0xf1, 0x2b, 0x21, 0x16, 0x7a,
+ 0x3e, 0x9b, 0xe9, 0x63, 0x6c, 0x2c, 0xe0, 0xb0, 0x48, 0x74, 0x94, 0x90,
+ 0xaf, 0xd7, 0x89, 0x3c, 0xa6, 0xb0, 0x73, 0xaa, 0xc4, 0x10, 0x4a, 0x55,
+ 0x16, 0xaa, 0x51, 0xe8, 0x5a, 0x21, 0x1b, 0xa4, 0x12, 0xf2, 0xf2, 0x0e,
+ 0x10, 0x29, 0x30, 0xfa, 0x35, 0x1f, 0x88, 0x4f, 0x0c, 0xd5, 0x46, 0xfc,
+ 0xd2, 0x0f, 0x59, 0x06, 0xc9, 0x0a, 0x96, 0x69, 0xb4, 0xe0, 0xa8, 0x04,
+ 0x1c, 0x88, 0xcd, 0xac, 0x2d, 0x38, 0x28, 0x2a, 0xba, 0xa4, 0xc2, 0xb7,
+ 0x94, 0x91, 0x1e, 0x69, 0xa9, 0x21, 0x14, 0x90, 0xf6, 0x7a, 0x3b, 0xdd,
+ 0x50, 0xc5, 0x5f, 0xa5, 0x9e, 0x84, 0xf0, 0x58, 0xca, 0x48, 0x6b, 0x22,
+ 0xd2, 0x3e, 0x97, 0x16, 0x06, 0x4c, 0x20, 0x55, 0x70, 0x61, 0x72, 0xf1,
+ 0xc3, 0x37, 0xef, 0xbe, 0x74, 0x58, 0x90, 0xb9, 0x33, 0xa3, 0xd6, 0x16,
+ 0xb0, 0xd8, 0x77, 0x2a, 0xdd, 0x5a, 0x51, 0x50, 0x1b, 0x80, 0x81, 0xd1,
+ 0xd3, 0x24, 0x80, 0x61, 0xa7, 0x7e, 0xb8, 0xdb, 0x84, 0x82, 0x47, 0xb3,
+ 0x60, 0x75, 0x1d, 0x03, 0xcc, 0xc2, 0xc5, 0xd9, 0x28, 0xda, 0xeb, 0xce,
+ 0x0b, 0xa3, 0xdd, 0x44, 0xdb, 0x39, 0x7c, 0xb1, 0x65, 0x13, 0xbd, 0x84,
+ 0x1d, 0x78, 0x5e, 0x44, 0xc2, 0x0f, 0x59, 0xa0, 0x83, 0x8e, 0xe1, 0xf5,
+ 0x91, 0xd6, 0x69, 0x9b, 0xe9, 0xab, 0x3a, 0xec, 0x5e, 0x29, 0xc1, 0x65,
+ 0x23, 0xe3, 0x72, 0x0b, 0x04, 0xf2, 0x4b, 0xd7, 0x96, 0xfc, 0x60, 0xcf,
+ 0xac, 0x63, 0x8e, 0xbe, 0x8b, 0xea, 0xa1, 0x93, 0xae, 0x21, 0xd7, 0xbc,
+ 0xf5, 0xf1, 0xf2, 0x3f, 0xd7, 0x8c, 0x53, 0x35, 0x23, 0xd8, 0x5d, 0x27,
+ 0xd2, 0xd4, 0xbc, 0xb5, 0xd7, 0xfb, 0x6a, 0x5d, 0x14, 0x7f, 0x09, 0x96,
+ 0x89, 0x95, 0x44, 0x58, 0xaa, 0xab, 0xaf, 0x62, 0xed, 0x0e, 0x48, 0xab,
+ 0x04, 0x89, 0x7e, 0x19, 0x0a, 0x3a, 0x65, 0xd1, 0x31, 0x84, 0x0b, 0xc7,
+ 0x80, 0x36, 0xa0, 0xee, 0xb4, 0x8d, 0xc8, 0x04, 0x0d, 0x35, 0xcf, 0xf0,
+ 0x2b, 0xf3, 0x84, 0xba, 0x07, 0x0c, 0x1a, 0xa7, 0xa9, 0xd4, 0x95, 0x09,
+ 0x74, 0x86, 0x02, 0x3e, 0x3f, 0x05, 0x21, 0x43, 0x60, 0xaa, 0x63, 0xbf,
+ 0xd0, 0x3c, 0xc6, 0x8b, 0x20, 0xed, 0xa3, 0x73, 0x21, 0xbc, 0xf9, 0xda,
+ 0xe5, 0x67, 0x4a, 0xfe, 0x35, 0xfd, 0x93, 0x4c, 0xb2, 0xd6, 0x26, 0xfe,
+ 0x37, 0x72, 0x5c, 0xcc, 0xb6, 0x9d, 0x4c, 0xd2, 0x89, 0xbb, 0x59, 0xa6,
+ 0x1c, 0x48, 0xf8, 0xa6, 0x3e, 0x91, 0x1a, 0x8b, 0xaf, 0x4d, 0xd5, 0x90,
+ 0xcd, 0xfe, 0xf9, 0xeb, 0x93, 0xef, 0xcf, 0xb6, 0x56, 0x39, 0x98, 0xea,
+ 0xb0, 0x68, 0x26, 0xf1, 0x29, 0xd1, 0x7c, 0x58, 0xc9, 0x68, 0x22, 0xe9,
+ 0xf8, 0xfb, 0x7e, 0x3f, 0x3e, 0x3a, 0x7f, 0x49, 0x59, 0x91, 0x7d, 0xf8,
+ 0x09, 0x3b, 0xda, 0xdc, 0x1f, 0x02, 0xd6, 0x8f, 0xde, 0x96, 0x82, 0x55,
+ 0x5c, 0xca, 0xcd, 0x2a, 0x31, 0x99, 0x9c, 0x21, 0x44, 0x5b, 0xad, 0xe5,
+ 0x81, 0xa4, 0xcd, 0x6d, 0x6a, 0xd0, 0x63, 0xd9, 0x3c, 0x89, 0x16, 0xfb,
+ 0x82, 0x07, 0xf2, 0xd9, 0x25, 0x9e, 0x46, 0x69, 0x77, 0xb4, 0x9c, 0x9a,
+ 0xe9, 0x0c, 0xea, 0x06, 0xde, 0xe9, 0xec, 0x11, 0x69, 0x43, 0xe7, 0x45,
+ 0xb7, 0x01, 0xe2, 0x4a, 0x24, 0x55, 0x1a, 0xf2, 0x53, 0x90, 0x52, 0x00,
+ 0x0d, 0xce, 0xb1, 0xa2, 0x4d, 0x8f, 0x40, 0xc9, 0x58, 0xe5, 0xdf, 0x88,
+ 0x9b, 0x29, 0x57, 0x07, 0x1b, 0x7c, 0x69, 0xa5, 0x33, 0xaa, 0x39, 0xe2,
+ 0x59, 0x28, 0xc8, 0xae, 0xa8, 0x81, 0x36, 0x6c, 0x6e, 0xbb, 0x5a, 0x35,
+ 0x3a, 0x0c, 0xd0, 0x23, 0x69, 0x7a, 0x28, 0x48, 0x6b, 0x6d, 0xd9, 0x78,
+ 0xf7, 0x28, 0xed, 0x28, 0x91, 0xc6, 0x92, 0xe8, 0x55, 0x94, 0x9a, 0x13,
+ 0x98, 0x95, 0xf7, 0xc9, 0xc6, 0x73, 0xcd, 0x7d, 0xb6, 0x48, 0xcd, 0xc7,
+ 0xaf, 0x3b, 0x60, 0xdb, 0x8e, 0x17, 0xd1, 0xc1, 0x9a, 0xbc, 0x70, 0x80,
+ 0x01, 0x5b, 0x94, 0x06, 0x56, 0x4d, 0x48, 0x8a, 0x01, 0x59, 0x92, 0xbc,
+ 0x2c, 0xe2, 0x6e, 0x27, 0x28, 0x54, 0xd3, 0x43, 0xfd, 0xa0, 0x55, 0xc5,
+ 0x90, 0x24, 0x6e, 0x4e, 0xcf, 0x0b, 0x21, 0x9f, 0x7a, 0x25, 0xc5, 0x4a,
+ 0xb8, 0x98, 0x40, 0xa7, 0x20, 0x19, 0x72, 0xd6, 0xd5, 0x56, 0xba, 0x88,
+ 0x56, 0x84, 0xe1, 0x2a, 0x46, 0xfc, 0x11, 0x82, 0x0c, 0x78, 0xc5, 0x10,
+ 0x7b, 0x35, 0xda, 0x4c, 0x06, 0x65, 0x3e, 0x59, 0x54, 0x64, 0xc4, 0x42,
+ 0x77, 0x16, 0xc2, 0x9c, 0x6c, 0xd9, 0xac, 0x3c, 0x6a, 0xd5, 0x4d, 0xce,
+ 0x0b, 0x26, 0xdc, 0x8b, 0x05, 0x89, 0x92, 0x51, 0xd5, 0x7d, 0xcc, 0xf1,
+ 0x3c, 0xc2, 0xb6, 0x71, 0xb3, 0xb9, 0x29, 0x6a, 0x69, 0x4e, 0x71, 0xeb,
+ 0xd7, 0x6d, 0xbe, 0xf8, 0x97, 0x1a, 0x35, 0x38, 0xc0, 0xa3, 0x04, 0x42,
+ 0xb7, 0xae, 0x11, 0xcf, 0x3f, 0xa1, 0x28, 0x6c, 0x23, 0xa0, 0xb4, 0xc8,
+ 0xca, 0xce, 0xaa, 0x7e, 0x3e, 0x59, 0xd9, 0x19, 0x04, 0x4f, 0x7f, 0x2d,
+ 0x9a, 0x72, 0xf7, 0xd5, 0xfa, 0x57, 0x99, 0xa0, 0xfe, 0xc2, 0xa8, 0x3c,
+ 0xb3, 0x71, 0x76, 0xd9, 0xab, 0x93, 0x87, 0x0f, 0x1b, 0xd0, 0x52, 0xc3,
+ 0xca, 0x36, 0xef, 0x53, 0xa3, 0xae, 0xb4, 0x57, 0x08, 0x93, 0xa9, 0x8e,
+ 0x91, 0xb0, 0xdc, 0xf1, 0xb1, 0xd4, 0x19, 0x02, 0x3f, 0xee, 0xf1, 0xcc,
+ 0x17, 0x01, 0x6f, 0xaa, 0xd9, 0x4f, 0x05, 0xbd, 0x44, 0x93, 0x5e, 0x42,
+ 0x59, 0x17, 0xc2, 0xc2, 0xa4, 0x7d, 0x03, 0xb9, 0x92, 0xa7, 0xe5, 0x0a,
+ 0xf6, 0x50, 0xa3, 0x93, 0x30, 0x8f, 0x68, 0x44, 0x90, 0xdc, 0x3f, 0x08,
+ 0xb2, 0xde, 0xfa, 0xc3, 0x88, 0xc1, 0x8c, 0x6d, 0x2d, 0x54, 0x4c, 0x97,
+ 0x94, 0x56, 0x60, 0x61, 0x3a, 0xfb, 0xeb, 0x99, 0x57, 0x9b, 0xbb, 0x6d,
+ 0x77, 0xd0, 0x53, 0xab, 0x2c, 0x70, 0x3c, 0xc5, 0x34, 0xd9, 0x8d, 0x8c,
+ 0x36, 0xdf, 0xc9, 0x2f, 0xc8, 0x8a, 0x7e, 0xc8, 0x66, 0xa0, 0xba, 0x94,
+ 0x5b, 0xca, 0x23, 0x24, 0x8b, 0xe4, 0x5e, 0x28, 0xdd, 0x28, 0x6f, 0x71,
+ 0x00, 0x86, 0x77, 0x49, 0xd9, 0x84, 0xa0, 0xea, 0x6e, 0x9e, 0xf9, 0xda,
+ 0xbd, 0xde, 0x47, 0xd4, 0x06, 0x5a, 0x04, 0x61, 0x2c, 0x6f, 0x67, 0xd9,
+ 0xad, 0x0d, 0x75, 0x34, 0x55, 0x6e, 0xdd, 0x08, 0x30, 0x51, 0x3e, 0x02,
+ 0xa3, 0x8b, 0xbc, 0x68, 0x14, 0x5c, 0x7c, 0x9a, 0xe8, 0xe6, 0xe3, 0x2d,
+ 0x1a, 0xdb, 0xb8, 0x9a, 0x6f, 0xee, 0x6e, 0x51, 0x8f, 0x82, 0xae, 0x2e,
+ 0x91, 0x96, 0x21, 0xcc, 0x48, 0x8e, 0x3b, 0x71, 0x8b, 0x87, 0x53, 0x24,
+ 0x18, 0xd6, 0xce, 0x95, 0xea, 0xcd, 0xc4, 0x4d, 0xe9, 0x59, 0x4a, 0x2e,
+ 0xe2, 0x4c, 0x79, 0xcc, 0x54, 0x0d, 0xf0, 0x6a, 0x41, 0xab, 0x47, 0xc6,
+ 0x89, 0xd0, 0x4a, 0x1c, 0xab, 0xb2, 0x99, 0xb9, 0xb6, 0xfb, 0x99, 0xa0,
+ 0x3a, 0xc3, 0xea, 0x4d, 0x46, 0x31, 0xa6, 0x31, 0x45, 0x97, 0x45, 0xee,
+ 0x8b, 0x4b, 0x08, 0xe6, 0x80, 0x6b, 0xb0, 0xc5, 0xb8, 0x01, 0xe9, 0xec,
+ 0x3a, 0x2b, 0xf2, 0x19, 0xd5, 0x12, 0xbb, 0x4e, 0x8a, 0x8c, 0x48, 0xbf,
+ 0xf3, 0xe2, 0xec, 0xd5, 0x49, 0xc7, 0x5c, 0xe6, 0x78, 0xd8, 0xc7, 0x19,
+ 0x7b, 0x0b, 0xbd, 0x6a, 0x23, 0xb5, 0x2d, 0x0d, 0x18, 0x30, 0x23, 0x10,
+ 0xef, 0x86, 0xef, 0xc5, 0xdb, 0x48, 0x45, 0x79, 0x53, 0x0b, 0x65, 0x9b,
+ 0x8f, 0x35, 0x2c, 0x92, 0x83, 0xed, 0x13, 0x25, 0x32, 0x0e, 0x00, 0xcf,
+ 0x6f, 0xbe, 0x08, 0x9c, 0x24, 0xf8, 0x0e, 0x77, 0x5c, 0x1c, 0x86, 0x92,
+ 0xf7, 0xc5, 0x71, 0xa0, 0xec, 0x67, 0x21, 0xe7, 0x19, 0xed, 0xbf, 0xeb,
+ 0x95, 0xd9, 0x98, 0xde, 0x79, 0x86, 0xb5, 0x74, 0x32, 0xde, 0xa8, 0x0b,
+ 0x47, 0x1b, 0x25, 0x2a, 0xc5, 0xd5, 0x86, 0x03, 0xf3, 0xed, 0xdc, 0xb5,
+ 0x3e, 0xe8, 0x6a, 0x4b, 0xf7, 0xcd, 0xc7, 0x98, 0xcc, 0xa7, 0x77, 0xd8,
+ 0x63, 0xf3, 0x3b, 0xd3, 0x37, 0x77, 0xbd, 0xd4, 0xf4, 0x2f, 0x27, 0xef,
+ 0xe3, 0x9a, 0xfe, 0x1b, 0x5c, 0x61, 0x0d, 0x6e, 0xb6, 0x2e, 0x72, 0x94,
+ 0xe1, 0x61, 0xdd, 0xda, 0x0d, 0xc6, 0x57, 0x5a, 0x28, 0xa6, 0xdb, 0x24,
+ 0xd6, 0xaf, 0xac, 0x56, 0x96, 0x58, 0xd0, 0x20, 0x8b, 0x01, 0xa0, 0xb9,
+ 0x2a, 0xd6, 0xcc, 0x27, 0x55, 0x1b, 0x9a, 0x7e, 0xf7, 0xb2, 0xcc, 0x87,
+ 0x59, 0x2d, 0xac, 0xd2, 0xdc, 0xaa, 0x5a, 0x2b, 0x8c, 0x8c, 0x17, 0xea,
+ 0xa7, 0x54, 0x21, 0x02, 0x9b, 0x6b, 0x49, 0x5e, 0x02, 0xd9, 0x82, 0xcc,
+ 0x11, 0xea, 0xc7, 0xcf, 0x0a, 0x2c, 0xa8, 0x65, 0xe3, 0xe5, 0xa4, 0x9f,
+ 0x2e, 0x63, 0x0b, 0xa8, 0x1d, 0x9f, 0xcc, 0xd0, 0xde, 0xe8, 0x9c, 0x08,
+ 0x66, 0x23, 0xd4, 0x93, 0x09, 0x69, 0x08, 0x9a, 0x07, 0x10, 0xbb, 0x89,
+ 0x2a, 0x55, 0x9c, 0x82, 0x00, 0xf6, 0x28, 0xae, 0xa2, 0xba, 0x00, 0xd8,
+ 0x5a, 0x42, 0xb1, 0x02, 0x9c, 0xf7, 0xa3, 0xa1, 0x5f, 0xb8, 0x11, 0x24,
+ 0xb9, 0x09, 0x32, 0x02, 0x08, 0x6e, 0x65, 0x48, 0x4d, 0x55, 0x74, 0x47,
+ 0x98, 0x14, 0xdb, 0x9d, 0x60, 0xdc, 0xc5, 0x35, 0x41, 0xe4, 0x5d, 0x73,
+ 0x3d, 0x35, 0x62, 0x5b, 0x76, 0x27, 0x5c, 0x1c, 0x26, 0x9f, 0x8b, 0xe8,
+ 0xe8, 0x28, 0xf9, 0xac, 0x90, 0x0a, 0x75, 0x51, 0xf4, 0x3d, 0x0f, 0xc2,
+ 0x86, 0xe7, 0x69, 0xbc, 0x3a, 0x39, 0x96, 0x1c, 0xcf, 0x92, 0xd7, 0x1c,
+ 0x79, 0x96, 0xba, 0xfa, 0x4b, 0x9c, 0x94, 0xc3, 0x2c, 0x13, 0x49, 0x1c,
+ 0xfd, 0x74, 0x18, 0xa2, 0x17, 0xc8, 0xee, 0xaa, 0x79, 0x54, 0xee, 0x44,
+ 0x90, 0x1d, 0xe5, 0x8c, 0x3c, 0xc0, 0x61, 0xcc, 0x14, 0xbe, 0xcf, 0xa1,
+ 0xbc, 0xe4, 0x87, 0x34, 0xd8, 0xbf, 0x40, 0xf9, 0xbe, 0x41, 0x4c, 0x1c,
+ 0x94, 0x2d, 0x55, 0x01, 0x6e, 0x6e, 0x6e, 0x76, 0x7b, 0xb5, 0x90, 0x1f,
+ 0x5e, 0x86, 0x18, 0xab, 0xc5, 0x95, 0x15, 0x89, 0x53, 0xf0, 0xcc, 0x5e,
+ 0x6f, 0xc9, 0xe9, 0x92, 0x57, 0x3e, 0x19, 0xa6, 0x6c, 0x08, 0x7a, 0xf5,
+ 0x3e, 0xc3, 0x0c, 0x32, 0x8d, 0x97, 0xcb, 0x9a, 0x6b, 0x7e, 0x05, 0xcc,
+ 0x62, 0xfb, 0x9e, 0x66, 0x8b, 0x80, 0x48, 0xec, 0xba, 0x9a, 0x1b, 0x45,
+ 0xd1, 0x80, 0xe3, 0x25, 0x93, 0x79, 0x30, 0x43, 0xa4, 0xbf, 0x65, 0xe5,
+ 0x3f, 0xa2, 0xe0, 0xa3, 0xd3, 0xf3, 0xd7, 0x84, 0xab, 0x04, 0x23, 0x4c,
+ 0x67, 0x25, 0x87, 0xa9, 0xe2, 0x67, 0x98, 0xaa, 0x3c, 0x73, 0xaa, 0xbe,
+ 0x7b, 0x2e, 0x20, 0x8a, 0x30, 0x0a, 0x56, 0xed, 0xe2, 0xa0, 0x78, 0x38,
+ 0x12, 0x88, 0x01, 0x66, 0x8c, 0x1e, 0xa2, 0x5d, 0xa9, 0x95, 0xa2, 0x79,
+ 0x8f, 0x42, 0x9f, 0xbd, 0xc8, 0x74, 0xad, 0x30, 0x8e, 0x89, 0x69, 0x9e,
+ 0xde, 0x6e, 0x56, 0x40, 0x36, 0x45, 0x5d, 0xbd, 0xf0, 0xe8, 0x2a, 0x35,
+ 0x55, 0x92, 0xc5, 0x46, 0x66, 0xc2, 0x8d, 0x24, 0x4a, 0x58, 0x62, 0x74,
+ 0x69, 0x57, 0x14, 0x62, 0x75, 0x85, 0xec, 0xcd, 0xeb, 0xfa, 0x31, 0x2f,
+ 0x27, 0x6c, 0x6f, 0xed, 0x8b, 0x49, 0x86, 0xb1, 0x2e, 0xea, 0x3c, 0x5e,
+ 0x84, 0xf3, 0x59, 0xb3, 0x80, 0xa0, 0xb6, 0x16, 0x2a, 0x21, 0x18, 0x7b,
+ 0xf6, 0xf4, 0xe2, 0x1e, 0xf0, 0x3c, 0x40, 0x4d, 0xcb, 0xc8, 0xf3, 0x75,
+ 0x97, 0x7b, 0x1d, 0x2c, 0x90, 0xe3, 0x87, 0x75, 0x13, 0xd6, 0x8d, 0xf8,
+ 0x09, 0xc2, 0x8b, 0x1f, 0x3b, 0x55, 0xc8, 0x10, 0xa7, 0x2d, 0x4d, 0xa6,
+ 0x20, 0x09, 0xcf, 0x34, 0x99, 0x9d, 0x4a, 0xc9, 0x95, 0x99, 0x97, 0x3b,
+ 0xb9, 0x48, 0xe4, 0x0a, 0x72, 0xa3, 0xbb, 0x9a, 0x29, 0xee, 0xdc, 0x0d,
+ 0xe6, 0xb0, 0xb8, 0xcd, 0x87, 0x90, 0x7a, 0xe8, 0x75, 0x83, 0xfb, 0x2b,
+ 0x1e, 0x53, 0x8e, 0x98, 0x15, 0x8d, 0x5e, 0x9a, 0x30, 0xe8, 0xe2, 0x68,
+ 0x86, 0xbd, 0x5a, 0xcc, 0xde, 0xc3, 0x10, 0xfc, 0x54, 0x1c, 0x4d, 0xd1,
+ 0xcc, 0xb8, 0x2a, 0x43, 0x42, 0xc5, 0x47, 0x19, 0xdd, 0xd7, 0xb6, 0x90,
+ 0x14, 0x05, 0x42, 0x9d, 0x02, 0x45, 0xbd, 0x6d, 0xda, 0xe6, 0x42, 0xa3,
+ 0x13, 0x03, 0x30, 0x8f, 0xca, 0x2c, 0xe0, 0x2a, 0xb2, 0xe6, 0x07, 0xef,
+ 0x47, 0xd8, 0xf7, 0xce, 0x46, 0xe0, 0x46, 0x1f, 0x40, 0xdd, 0x32, 0x9a,
+ 0xb5, 0x44, 0xaf, 0xdf, 0x75, 0xd9, 0x06, 0x75, 0x89, 0x01, 0x51, 0xf1,
+ 0xa0, 0x0e, 0xe3, 0x0b, 0x6d, 0x0e, 0xe1, 0xa6, 0x1d, 0x78, 0xe4, 0xe6,
+ 0x40, 0x17, 0x90, 0x62, 0x07, 0xcc, 0xf5, 0xd7, 0xc5, 0x4c, 0x8b, 0xb5,
+ 0x0a, 0xbf, 0x88, 0x73, 0x6c, 0x9b, 0x77, 0x16, 0x7e, 0xfb, 0x33, 0x67,
+ 0x2e, 0x4f, 0xf3, 0xca, 0xe3, 0x89, 0x9c, 0x48, 0x16, 0x73, 0x0c, 0x51,
+ 0x7c, 0xe6, 0x3c, 0x28, 0x61, 0x45, 0x18, 0x70, 0x50, 0xfb, 0x0c, 0x23,
+ 0x6b, 0xcc, 0xf5, 0xdf, 0x0d, 0x29, 0x03, 0xc9, 0x75, 0x9e, 0x8d, 0x4a,
+ 0x92, 0x3a, 0x10, 0x52, 0x8a, 0xdc, 0x70, 0xe2, 0xc3, 0x4f, 0x2a, 0x83,
+ 0x5d, 0x47, 0x39, 0xf7, 0x78, 0x22, 0x24, 0xb5, 0x3d, 0x81, 0x5b, 0xbd,
+ 0x0a, 0xc4, 0x5e, 0x26, 0xea, 0x74, 0xbe, 0x44, 0x94, 0x62, 0x05, 0xcd,
+ 0x51, 0x71, 0x86, 0x83, 0xbd, 0x5c, 0xe7, 0x3f, 0x65, 0x2b, 0x8b, 0x06,
+ 0xd6, 0x1c, 0x1d, 0xf4, 0x5c, 0x91, 0xe3, 0x19, 0xf4, 0x1a, 0xae, 0x19,
+ 0xc9, 0xa6, 0xbd, 0xde, 0xee, 0xce, 0x8e, 0xa4, 0xfd, 0x48, 0x66, 0x68,
+ 0xe5, 0x28, 0x88, 0xf4, 0x16, 0x66, 0x35, 0x05, 0x94, 0xca, 0x20, 0x22,
+ 0x80, 0x32, 0x24, 0xd1, 0x96, 0x29, 0xef, 0xef, 0x92, 0x24, 0x59, 0x31,
+ 0x10, 0xd0, 0xa8, 0xb5, 0x44, 0x20, 0x23, 0x00, 0xa1, 0x8d, 0x2e, 0xe0,
+ 0x04, 0xa3, 0xca, 0x01, 0xe2, 0x0a, 0x13, 0x82, 0xc0, 0x81, 0xa7, 0x33,
+ 0x02, 0x56, 0xe0, 0x1c, 0x55, 0xfe, 0x18, 0x96, 0xb9, 0x6b, 0x62, 0x21,
+ 0xee, 0xb1, 0xdd, 0x94, 0x60, 0xf8, 0x67, 0xb2, 0x5b, 0xb6, 0x9a, 0xed,
+ 0x1a, 0x67, 0x4e, 0x07, 0xf0, 0x51, 0x73, 0xfb, 0xa5, 0xd1, 0x07, 0x1c,
+ 0x3a, 0x1d, 0x8e, 0x52, 0x3a, 0xcb, 0xcd, 0x94, 0xd4, 0xdf, 0xea, 0x73,
+ 0x69, 0x3b, 0x8c, 0xce, 0x81, 0xe1, 0xeb, 0xa6, 0x79, 0x14, 0x6a, 0xf7,
+ 0xc3, 0x97, 0xfb, 0x9e, 0xf8, 0x62, 0xe0, 0x77, 0xdb, 0xae, 0x07, 0x03,
+ 0x98, 0x42, 0x99, 0x0d, 0x16, 0xad, 0x57, 0x92, 0x1a, 0x0c, 0xfa, 0x04,
+ 0x42, 0x40, 0xdb, 0x8c, 0xf7, 0x5e, 0xe8, 0x80, 0xd9, 0x04, 0xae, 0x74,
+ 0x66, 0xee, 0x9e, 0xe9, 0xb2, 0x32, 0xef, 0xf7, 0xa7, 0xca, 0x3a, 0x59,
+ 0x2e, 0xa3, 0x4a, 0x26, 0x4a, 0x3b, 0x11, 0x87, 0x2c, 0xcd, 0x87, 0xcb,
+ 0x83, 0xe6, 0x6a, 0xa8, 0xc5, 0x4e, 0x8c, 0xa9, 0x53, 0xed, 0xf4, 0x81,
+ 0xd9, 0xd1, 0xed, 0x03, 0x58, 0x4d, 0x56, 0x76, 0x48, 0xeb, 0xa2, 0x4b,
+ 0xba, 0x18, 0xce, 0x0d, 0xf2, 0x98, 0xb5, 0x0a, 0xb7, 0x2f, 0xc5, 0xed,
+ 0x09, 0x54, 0xf5, 0x44, 0x8a, 0x98, 0x4f, 0x60, 0x57, 0x0a, 0xb1, 0x91,
+ 0xcd, 0x50, 0x73, 0x88, 0x28, 0xb4, 0xfe, 0x35, 0xc8, 0x9b, 0x5f, 0xb4,
+ 0x2c, 0x00, 0x6e, 0xe7, 0x6b, 0x5f, 0x2e, 0xc6, 0x8f, 0xc4, 0x0b, 0xc5,
+ 0x82, 0x31, 0x05, 0xd2, 0x6b, 0xb0, 0x3d, 0x70, 0x0a, 0x0f, 0x80, 0x6d,
+ 0x20, 0x62, 0x87, 0x27, 0x1a, 0x3b, 0xe8, 0xb8, 0x0d, 0xc9, 0x16, 0xc7,
+ 0x45, 0x3d, 0x05, 0x5d, 0x47, 0xeb, 0xc8, 0xc4, 0x8e, 0x0c, 0xdc, 0xe6,
+ 0x56, 0xfc, 0x60, 0xa1, 0xd8, 0x8a, 0x95, 0x1f, 0xd3, 0x62, 0xf3, 0x20,
+ 0x99, 0x78, 0x36, 0x9f, 0xad, 0x8f, 0xf3, 0x4d, 0xa2, 0xaf, 0x2f, 0x11,
+ 0xcf, 0x3c, 0x81, 0x58, 0x11, 0x2b, 0x3f, 0x89, 0x48, 0x8c, 0x5d, 0x1a,
+ 0xd9, 0x65, 0x9a, 0xfa, 0x85, 0xfc, 0xce, 0x4c, 0x3c, 0x15, 0xe3, 0x02,
+ 0x21, 0x08, 0xbf, 0xa0, 0xd9, 0xf2, 0x5b, 0x11, 0xbd, 0xa5, 0xe2, 0xa7,
+ 0x54, 0x38, 0x45, 0xbb, 0x39, 0x49, 0xcf, 0x45, 0x6b, 0xce, 0x6a, 0xc2,
+ 0xc8, 0xff, 0x04, 0x6d, 0x9c, 0x14, 0x33, 0x81, 0xbb, 0x22, 0x69, 0xc8,
+ 0x24, 0x16, 0xa2, 0x81, 0xc2, 0xf0, 0x55, 0x82, 0x78, 0xf2, 0x54, 0xf4,
+ 0x32, 0x23, 0xd4, 0xca, 0xa0, 0xf7, 0x82, 0xb8, 0xa5, 0x59, 0x44, 0x89,
+ 0x3e, 0xba, 0xcf, 0x35, 0x1e, 0x0e, 0x64, 0x71, 0xb8, 0x65, 0x7d, 0xc9,
+ 0x98, 0x65, 0x9a, 0xf3, 0xdb, 0x58, 0x19, 0x22, 0xb0, 0x55, 0x57, 0x72,
+ 0xa3, 0xc1, 0x00, 0x49, 0xd7, 0xbd, 0x2b, 0x6b, 0xe6, 0x59, 0xd4, 0x9b,
+ 0x7f, 0x00, 0x89, 0x37, 0xc6, 0x17, 0xe7, 0x5c, 0x39, 0xf4, 0xe1, 0x68,
+ 0x97, 0x4c, 0xfa, 0x65, 0xd7, 0x6c, 0x61, 0x3d, 0xb7, 0xe2, 0xa9, 0x47,
+ 0xa5, 0xc2, 0x12, 0xb2, 0x51, 0x10, 0xe9, 0xde, 0x9a, 0x16, 0x70, 0xcc,
+ 0x1b, 0xa5, 0xc2, 0x87, 0x22, 0xb7, 0xd3, 0x12, 0x1e, 0x2f, 0x9f, 0xc1,
+ 0xa6, 0xa2, 0x49, 0xf9, 0xb2, 0xe7, 0x54, 0x14, 0xf6, 0x2b, 0xcb, 0x9b,
+ 0xe0, 0x26, 0xaa, 0xf2, 0xc0, 0xc5, 0x9e, 0x6c, 0xd0, 0x3e, 0x36, 0x01,
+ 0x52, 0x84, 0xbd, 0x89, 0x39, 0x3e, 0x17, 0x45, 0xcc, 0xab, 0x40, 0x5e,
+ 0xb0, 0xe4, 0xd0, 0x11, 0xf7, 0x27, 0xe4, 0xd6, 0xe8, 0x6a, 0x81, 0x89,
+ 0x5a, 0xc8, 0x4d, 0xab, 0x2a, 0x9d, 0xce, 0x2b, 0x8e, 0x90, 0x84, 0x43,
+ 0x8f, 0x43, 0xae, 0x8f, 0xb7, 0x0c, 0x54, 0x6e, 0xa2, 0x02, 0x1d, 0xe9,
+ 0x54, 0xb0, 0xb7, 0xa4, 0xa8, 0x04, 0xbe, 0x46, 0xf6, 0x7f, 0x2a, 0xfd,
+ 0x28, 0x09, 0xaf, 0x2c, 0x87, 0x80, 0xfc, 0x2b, 0x85, 0x74, 0xa7, 0xc9,
+ 0x9d, 0xe7, 0xb0, 0x20, 0x46, 0xa3, 0x58, 0xf2, 0x56, 0x83, 0xcb, 0xe8,
+ 0x75, 0x02, 0x71, 0x27, 0xbb, 0xa7, 0x3c, 0x50, 0x2e, 0x86, 0x98, 0x3f,
+ 0xf5, 0x6f, 0x3c, 0x68, 0x66, 0xd7, 0x5d, 0xb1, 0x24, 0xb0, 0xa1, 0x2b,
+ 0x8e, 0x97, 0x6d, 0x66, 0x79, 0x29, 0xf6, 0x75, 0x1d, 0x97, 0xa6, 0xdd,
+ 0x07, 0x1c, 0x29, 0x3b, 0xa6, 0xb5, 0x0e, 0x51, 0xad, 0x6c, 0x76, 0xfd,
+ 0x8c, 0x50, 0x20, 0x44, 0x74, 0xc8, 0xc7, 0xf5, 0xf6, 0x8e, 0x20, 0xb3,
+ 0x9a, 0xd1, 0x0e, 0xc7, 0x68, 0xae, 0x8c, 0xd5, 0x9e, 0x3f, 0x8a, 0x24,
+ 0xf9, 0x84, 0xbc, 0x45, 0x6a, 0xe5, 0x66, 0xdd, 0xc9, 0xc1, 0x64, 0x45,
+ 0xc4, 0x2b, 0x68, 0xb0, 0xeb, 0x0b, 0x1a, 0x78, 0x36, 0x6a, 0xaa, 0x07,
+ 0x79, 0xbe, 0xc8, 0xcc, 0x8d, 0x84, 0x47, 0x45, 0x84, 0xa4, 0xf2, 0xb0,
+ 0x5a, 0x73, 0xff, 0x80, 0x15, 0xaf, 0x13, 0x8c, 0x3e, 0x05, 0xe1, 0xa8,
+ 0x69, 0x48, 0xa0, 0x9e, 0x4d, 0xbd, 0x68, 0x3a, 0x8d, 0x3c, 0xb0, 0x2e,
+ 0xdf, 0x0e, 0xa6, 0x5e, 0x0c, 0x74, 0x30, 0x72, 0x2d, 0x36, 0x34, 0x40,
+ 0x2f, 0xb4, 0x0b, 0x9d, 0x04, 0x44, 0x74, 0x5a, 0xfd, 0x80, 0x66, 0x4b,
+ 0xa0, 0x46, 0xd8, 0x03, 0x25, 0x1c, 0x89, 0x73, 0x2f, 0xd1, 0x4c, 0x22,
+ 0x19, 0xc3, 0x30, 0x80, 0x38, 0x42, 0x15, 0xae, 0xf9, 0x3e, 0xc6, 0x41,
+ 0x39, 0xaa, 0xb5, 0x56, 0xb6, 0xe6, 0xce, 0x2a, 0xf4, 0x45, 0x35, 0xb2,
+ 0x08, 0x42, 0x81, 0xd4, 0x13, 0x76, 0xa7, 0x11, 0x8b, 0xa0, 0x11, 0xb1,
+ 0xea, 0x83, 0x9f, 0x76, 0xed, 0xaf, 0x07, 0x5f, 0xee, 0x48, 0xb1, 0x51,
+ 0xac, 0xf7, 0x6a, 0x9f, 0x68, 0x86, 0xb7, 0xc1, 0xb5, 0x8b, 0x7b, 0x86,
+ 0x0f, 0xc1, 0x4f, 0xf3, 0x9c, 0x47, 0x9a, 0x26, 0x0e, 0xf6, 0x31, 0xa8,
+ 0x3f, 0xdd, 0x46, 0x00, 0x4c, 0x1d, 0x82, 0x22, 0xe4, 0xc2, 0x0c, 0xa2,
+ 0x10, 0x8c, 0x1c, 0xf9, 0x95, 0xc9, 0x70, 0x73, 0x63, 0x96, 0xbf, 0xa3,
+ 0x5f, 0xd9, 0x0d, 0xb8, 0xf1, 0xfa, 0xec, 0xdd, 0xf9, 0x9b, 0xb3, 0x1f,
+ 0xff, 0xbe, 0xb1, 0x65, 0x13, 0x42, 0x8a, 0x74, 0xc3, 0xcf, 0xd3, 0x8c,
+ 0x6a, 0xdd, 0x5a, 0xd7, 0x29, 0xf7, 0xc1, 0x71, 0x5a, 0x42, 0x8f, 0xea,
+ 0x48, 0x60, 0xdc, 0x57, 0x0c, 0xaa, 0xf2, 0x64, 0x4d, 0x1a, 0x0c, 0x6d,
+ 0x3b, 0x10, 0x73, 0xa7, 0x83, 0xff, 0xea, 0x1c, 0x61, 0xa3, 0xc2, 0x31,
+ 0x87, 0x7a, 0x94, 0x3e, 0x17, 0xa8, 0xb4, 0xf6, 0xdf, 0x71, 0x2a, 0x18,
+ 0x77, 0xd6, 0x63, 0x13, 0xb7, 0x5d, 0x8d, 0x8c, 0xaa, 0xf1, 0x88, 0x6a,
+ 0x32, 0x8d, 0x6f, 0x06, 0x2b, 0xc2, 0x0e, 0x2f, 0x4e, 0x5f, 0x01, 0x9f,
+ 0x44, 0xf3, 0x89, 0x00, 0x29, 0x56, 0x77, 0x93, 0x54, 0xde, 0x26, 0x49,
+ 0x8b, 0x63, 0x52, 0xae, 0xc8, 0xa3, 0x75, 0xed, 0x89, 0x8c, 0x81, 0x78,
+ 0x3b, 0x83, 0xab, 0x29, 0x6e, 0x44, 0x53, 0x46, 0x19, 0x5a, 0xe4, 0xa4,
+ 0x7d, 0xa7, 0xf4, 0x65, 0x0b, 0x2e, 0x40, 0x7a, 0x0b, 0x2c, 0x8f, 0xe0,
+ 0x9f, 0xae, 0x52, 0x2e, 0x68, 0xb5, 0xca, 0xd2, 0xc1, 0x93, 0xfd, 0x14,
+ 0xd1, 0x6c, 0xd2, 0xf2, 0x87, 0x01, 0x6d, 0xf1, 0x7a, 0xd6, 0x62, 0xd8,
+ 0xe0, 0x83, 0xe6, 0x76, 0x19, 0x20, 0x38, 0xdd, 0x1e, 0xde, 0x1f, 0x2f,
+ 0xa6, 0x82, 0x13, 0x76, 0xe8, 0xbb, 0xfa, 0x57, 0x5e, 0x66, 0x11, 0xa1,
+ 0xca, 0xa0, 0xb2, 0x00, 0xa7, 0x3c, 0xbb, 0x9c, 0xb1, 0x6a, 0xf7, 0x2a,
+ 0x1b, 0x16, 0x79, 0x99, 0x8f, 0x4d, 0x15, 0x28, 0xd5, 0xf9, 0x5e, 0xbe,
+ 0xec, 0x47, 0x37, 0xe9, 0x40, 0xd1, 0x4d, 0x7b, 0x7e, 0x40, 0x19, 0xc3,
+ 0x18, 0x61, 0x34, 0x65, 0x91, 0xa5, 0x15, 0xee, 0xab, 0x42, 0x98, 0x74,
+ 0x23, 0x0c, 0xef, 0x2f, 0xca, 0x54, 0x0a, 0x8a, 0x90, 0xad, 0x1b, 0xda,
+ 0x1c, 0x4e, 0x48, 0x1e, 0x9a, 0xa7, 0xfe, 0x71, 0x9d, 0xb0, 0x64, 0x68,
+ 0x84, 0x19, 0x27, 0xa0, 0x98, 0x80, 0xa9, 0xc5, 0xbc, 0x92, 0x15, 0xb8,
+ 0x75, 0xa8, 0x7c, 0x4a, 0x38, 0xcb, 0x7b, 0x0c, 0xa2, 0xc8, 0xc7, 0xde,
+ 0xf1, 0x93, 0x34, 0x74, 0x23, 0x88, 0x21, 0x87, 0x1c, 0x20, 0x63, 0x1b,
+ 0xe5, 0x05, 0x25, 0xaf, 0x20, 0x0b, 0x91, 0x2f, 0xd3, 0xd9, 0x30, 0x5f,
+ 0x14, 0x08, 0x4f, 0x86, 0xc3, 0xbb, 0x83, 0xbb, 0xcd, 0xbb, 0x9e, 0x72,
+ 0x51, 0xe1, 0x71, 0x99, 0xad, 0x4e, 0x44, 0x48, 0x58, 0x52, 0xca, 0x9e,
+ 0x18, 0xb5, 0x95, 0x71, 0xa2, 0x55, 0x70, 0x5d, 0xb2, 0x1f, 0x16, 0x1a,
+ 0x14, 0x0f, 0x1e, 0x6c, 0xce, 0xb3, 0xec, 0x32, 0x04, 0xd3, 0x69, 0x62,
+ 0xfd, 0x09, 0xd7, 0xdd, 0x2a, 0x1e, 0x34, 0x22, 0x11, 0xd5, 0x0a, 0xe1,
+ 0x7a, 0x75, 0x3a, 0xe0, 0x02, 0x2f, 0xc1, 0xe0, 0xfc, 0x10, 0xf5, 0x7d,
+ 0xae, 0x20, 0x54, 0x24, 0xf9, 0x4f, 0x73, 0x62, 0x1f, 0x7c, 0x5c, 0x8d,
+ 0x1f, 0xcb, 0x59, 0x27, 0x73, 0x3c, 0xad, 0xb6, 0xee, 0xa8, 0xeb, 0x54,
+ 0x5f, 0x82, 0xb4, 0xf3, 0x16, 0xc3, 0x4c, 0xbb, 0xae, 0xfe, 0xb0, 0x62,
+ 0xcc, 0x1c, 0x23, 0x2b, 0xcc, 0xc4, 0x1a, 0x61, 0xa4, 0x30, 0x27, 0x91,
+ 0x92, 0x22, 0x26, 0x71, 0xec, 0xac, 0xcb, 0x66, 0x72, 0xfc, 0x60, 0x2f,
+ 0x1e, 0xa4, 0xa0, 0xee, 0x14, 0xd1, 0x61, 0x85, 0x2a, 0xc5, 0x3d, 0xf1,
+ 0x92, 0x22, 0xc9, 0x2d, 0x73, 0x32, 0x45, 0xbf, 0xe3, 0x66, 0x2e, 0x48,
+ 0x31, 0x41, 0x8a, 0x3c, 0x43, 0xcc, 0x9b, 0x46, 0x73, 0x7b, 0xbd, 0x9d,
+ 0x16, 0xcc, 0x24, 0xe2, 0x63, 0xb5, 0x36, 0x94, 0xe6, 0x1c, 0x37, 0x49,
+ 0x18, 0xf8, 0x8e, 0x4b, 0x24, 0x19, 0x40, 0x6b, 0x96, 0xfc, 0x58, 0x9c,
+ 0x13, 0x27, 0x7e, 0x2d, 0xd3, 0x1c, 0x41, 0x88, 0xc5, 0xe7, 0xe0, 0x99,
+ 0x15, 0xc8, 0x3c, 0x5b, 0xd8, 0x30, 0xee, 0x2a, 0x68, 0x8d, 0xf2, 0x86,
+ 0x2a, 0x75, 0x63, 0x34, 0x34, 0xbc, 0xd0, 0x60, 0x35, 0x66, 0x04, 0xc3,
+ 0x21, 0x55, 0xfc, 0xb8, 0xe4, 0x18, 0xcf, 0x37, 0xcf, 0x8f, 0x1b, 0xcd,
+ 0x3d, 0x79, 0xfa, 0x78, 0x27, 0x2c, 0x90, 0xd4, 0x77, 0xe8, 0x73, 0x41,
+ 0x19, 0xd5, 0x47, 0xd1, 0x99, 0x3e, 0x7f, 0xf7, 0x55, 0xef, 0xbb, 0xc7,
+ 0xe3, 0xf8, 0x51, 0x6f, 0xf7, 0xcf, 0xff, 0x78, 0xd5, 0xf9, 0x90, 0xa8,
+ 0xee, 0x1a, 0xa5, 0xd6, 0x0d, 0x56, 0x0d, 0x1b, 0x3d, 0x1b, 0x9a, 0x10,
+ 0x0e, 0x3b, 0x3a, 0x84, 0x7f, 0xbe, 0x59, 0x92, 0xf0, 0xa2, 0xbb, 0xcd,
+ 0xb2, 0xac, 0x0d, 0x8e, 0x44, 0x42, 0x12, 0x29, 0x5f, 0x00, 0xba, 0xf5,
+ 0x76, 0xf0, 0xcb, 0x51, 0xa1, 0x95, 0x63, 0xd4, 0x65, 0x99, 0xa3, 0xe6,
+ 0x48, 0x60, 0xf2, 0x50, 0x57, 0x43, 0xd1, 0xb2, 0xa2, 0x74, 0x29, 0x73,
+ 0x3e, 0xaa, 0x9a, 0xc8, 0x9c, 0x71, 0x94, 0x36, 0xd0, 0x12, 0x35, 0x9d,
+ 0xb7, 0x6f, 0x4e, 0x25, 0x4c, 0x88, 0x9f, 0x0c, 0x67, 0x0f, 0x18, 0x0f,
+ 0x43, 0xbd, 0x60, 0xcc, 0x62, 0x0e, 0x5c, 0xa7, 0xca, 0x26, 0xe2, 0x42,
+ 0x43, 0x1e, 0xbc, 0xbc, 0x76, 0x4a, 0x23, 0x15, 0x0d, 0x93, 0x68, 0xdd,
+ 0xc1, 0x19, 0x58, 0x76, 0x72, 0xf0, 0x75, 0x1b, 0x41, 0x47, 0x21, 0xaa,
+ 0xc2, 0xe8, 0x1f, 0xad, 0x97, 0x11, 0xc7, 0xec, 0x6e, 0x8b, 0x29, 0x99,
+ 0x11, 0x05, 0x04, 0x29, 0xa1, 0xd0, 0x16, 0x53, 0xee, 0x6c, 0xeb, 0xe7,
+ 0x8b, 0x29, 0x77, 0x06, 0xd1, 0xa9, 0xa6, 0xf3, 0x4e, 0x14, 0x9f, 0xad,
+ 0x47, 0xd4, 0x4d, 0x6f, 0x13, 0x93, 0xf5, 0x9f, 0xbb, 0x8e, 0xef, 0xd5,
+ 0x71, 0xdd, 0xf5, 0xa4, 0x64, 0x71, 0xd3, 0x28, 0x8d, 0x64, 0xff, 0xb4,
+ 0x4e, 0xf6, 0xae, 0x5f, 0x2b, 0x58, 0x68, 0xe8, 0x87, 0x02, 0x01, 0x74,
+ 0x35, 0x08, 0x20, 0x97, 0x87, 0x5c, 0x44, 0xf6, 0xb2, 0x1a, 0xc1, 0xd7,
+ 0x3d, 0x53, 0xd3, 0xa2, 0x50, 0xab, 0xd6, 0x3f, 0xff, 0xe5, 0xdb, 0x69,
+ 0x7f, 0xfa, 0x85, 0xfc, 0xaa, 0x29, 0x4a, 0x37, 0xe6, 0x36, 0x56, 0xa9,
+ 0xa6, 0xac, 0x49, 0x4d, 0x0c, 0xad, 0x8d, 0xfb, 0x22, 0x01, 0x80, 0x81,
+ 0xba, 0x45, 0xc8, 0x7e, 0xd9, 0x67, 0xb6, 0xf1, 0xbb, 0x0d, 0x89, 0x57,
+ 0x53, 0x97, 0x82, 0xb8, 0x85, 0x45, 0xd7, 0x90, 0x71, 0x2b, 0x61, 0x16,
+ 0x78, 0x1f, 0x24, 0x7e, 0xa1, 0x4e, 0x51, 0x09, 0x75, 0xb3, 0x8b, 0x94,
+ 0xd0, 0x58, 0x1d, 0x64, 0x1f, 0x29, 0x31, 0x6b, 0x2a, 0xeb, 0x8d, 0x55,
+ 0x4b, 0xc7, 0x51, 0x7a, 0x52, 0x22, 0xf9, 0xb6, 0x53, 0x32, 0x09, 0xf4,
+ 0x18, 0x71, 0x39, 0x9b, 0xb5, 0x44, 0x96, 0x75, 0x90, 0x20, 0x80, 0x1e,
+ 0xfe, 0x09, 0x02, 0x4e, 0xb7, 0xba, 0xc9, 0xff, 0xe5, 0xc6, 0x66, 0x75,
+ 0xd0, 0x32, 0xda, 0xc1, 0x29, 0xbc, 0xfb, 0xdd, 0x2e, 0x02, 0xd3, 0x75,
+ 0x9a, 0x8d, 0xe4, 0xe4, 0x04, 0x32, 0x54, 0x6d, 0x94, 0x6a, 0xb2, 0x6e,
+ 0xaf, 0xea, 0x12, 0x41, 0x92, 0xbb, 0x68, 0x66, 0xf8, 0x57, 0x0f, 0xff,
+ 0xfd, 0x69, 0x37, 0x7e, 0xfc, 0x8b, 0xed, 0xf6, 0x77, 0xbb, 0xef, 0x7e,
+ 0xb7, 0xd7, 0x09, 0x61, 0x0e, 0x3a, 0x18, 0xf3, 0x96, 0x3b, 0x26, 0x25,
+ 0x27, 0x65, 0xb3, 0x8c, 0x25, 0x49, 0x01, 0x36, 0x31, 0x9c, 0x98, 0x91,
+ 0xbf, 0x93, 0x18, 0x83, 0xd2, 0xb0, 0x6c, 0x48, 0x25, 0x20, 0x4d, 0x48,
+ 0x81, 0x35, 0xe1, 0x97, 0x85, 0x4d, 0x31, 0xe6, 0xa7, 0x72, 0x2b, 0x4f,
+ 0x1e, 0x9a, 0x39, 0xf1, 0x80, 0x38, 0x44, 0xac, 0x5f, 0xa2, 0xb5, 0x1c,
+ 0xfc, 0xf5, 0x90, 0x93, 0x0a, 0xf2, 0x76, 0x12, 0xd5, 0x02, 0xdd, 0xf2,
+ 0x68, 0x30, 0x88, 0x9c, 0xf8, 0xb6, 0x2f, 0x02, 0x21, 0x08, 0xc2, 0xc3,
+ 0xc8, 0xaa, 0xa9, 0xc1, 0x06, 0xf0, 0xa2, 0x1b, 0xa0, 0x29, 0x64, 0x5c,
+ 0x5a, 0xf6, 0x47, 0xb7, 0xb7, 0x67, 0xa8, 0xfa, 0x15, 0xd3, 0xd2, 0x4c,
+ 0xbc, 0x92, 0xb0, 0xdb, 0x1c, 0x39, 0x97, 0x89, 0x8b, 0xa5, 0xcf, 0xf4,
+ 0x48, 0xa0, 0xfc, 0x88, 0x22, 0x38, 0xfd, 0xe2, 0x0b, 0x1c, 0xc9, 0x00,
+ 0xf4, 0xe8, 0x1a, 0x43, 0xa7, 0xf5, 0x20, 0xa6, 0x32, 0xb0, 0x15, 0xbd,
+ 0x92, 0xb2, 0x65, 0x41, 0xdc, 0xa5, 0x70, 0x41, 0x57, 0x78, 0xa1, 0x68,
+ 0x71, 0x96, 0x08, 0xb6, 0x9c, 0x0d, 0xe2, 0x32, 0x6c, 0x9b, 0x45, 0x2f,
+ 0x51, 0x13, 0x8c, 0x86, 0x39, 0xb4, 0xd5, 0x3b, 0xbc, 0xd8, 0x77, 0xbc,
+ 0x66, 0x47, 0x77, 0xc0, 0xd6, 0xb8, 0x48, 0xb9, 0xa9, 0x32, 0xab, 0x76,
+ 0x73, 0xbd, 0x29, 0xcb, 0x68, 0x23, 0xde, 0x88, 0x36, 0x1d, 0x83, 0xe0,
+ 0x28, 0x29, 0xaf, 0xb6, 0x82, 0x17, 0x8a, 0x89, 0x8d, 0xb0, 0x7c, 0x6d,
+ 0x20, 0x06, 0x79, 0x14, 0x9b, 0x99, 0xa1, 0x79, 0x57, 0x6e, 0x1e, 0x71,
+ 0xac, 0x1f, 0xf9, 0x60, 0x9c, 0x82, 0x1b, 0x83, 0x7c, 0x94, 0x91, 0xb2,
+ 0x72, 0x27, 0xde, 0x70, 0x8b, 0x28, 0x60, 0x2e, 0x67, 0x1f, 0xc5, 0x64,
+ 0x7b, 0x94, 0x5e, 0x6f, 0xcf, 0x16, 0x93, 0xc9, 0xc1, 0x3d, 0xd6, 0x1e,
+ 0x56, 0xda, 0x3c, 0xdf, 0x7c, 0xfc, 0x8c, 0x4d, 0xe9, 0x92, 0xd5, 0x41,
+ 0xb4, 0x0e, 0x8f, 0x1d, 0xdc, 0xab, 0x51, 0x78, 0xd0, 0x8f, 0x4e, 0x95,
+ 0x21, 0x7f, 0xb2, 0xf8, 0xd4, 0x38, 0x8f, 0xee, 0x19, 0x7f, 0xf1, 0x30,
+ 0xce, 0xf8, 0xe1, 0xac, 0x6e, 0xcd, 0x51, 0xeb, 0x77, 0x7b, 0xa1, 0x80,
+ 0xd8, 0xfb, 0x5f, 0xea, 0xdd, 0x40, 0x20, 0x95, 0x7f, 0xcf, 0xb7, 0x47,
+ 0xec, 0xb8, 0xd2, 0xac, 0x86, 0xd9, 0xc6, 0xd9, 0x74, 0x0a, 0xb4, 0xe8,
+ 0xa7, 0x04, 0x73, 0x9c, 0xd8, 0x88, 0x80, 0x0c, 0x22, 0x13, 0x94, 0x6b,
+ 0x5d, 0x54, 0x01, 0x34, 0x73, 0x0d, 0xf4, 0x0e, 0xd6, 0xef, 0x95, 0x90,
+ 0x41, 0xb9, 0xbb, 0xa5, 0x8e, 0x08, 0xd7, 0xb3, 0x40, 0xe9, 0x8e, 0xfc,
+ 0xb0, 0x20, 0x4a, 0x12, 0xc4, 0xab, 0x0d, 0x5f, 0x21, 0x5a, 0x82, 0xde,
+ 0x63, 0xdf, 0x5b, 0x86, 0x21, 0xc2, 0x88, 0x2c, 0x38, 0x4c, 0x6b, 0x55,
+ 0x49, 0x6e, 0x92, 0x4c, 0x3d, 0x5b, 0x92, 0x2e, 0x8c, 0x98, 0xe9, 0xd6,
+ 0xb3, 0xc6, 0x54, 0xdb, 0x6c, 0x8e, 0xc4, 0xfe, 0xc4, 0x82, 0xcc, 0xdd,
+ 0x22, 0x4d, 0x53, 0x50, 0x24, 0x17, 0x08, 0x13, 0x24, 0x50, 0x37, 0xae,
+ 0xe6, 0x73, 0x57, 0x21, 0xac, 0x45, 0x24, 0xf8, 0xdb, 0x19, 0x7d, 0x74,
+ 0xc0, 0x3c, 0xbf, 0x8f, 0x75, 0xc5, 0xdc, 0xc0, 0x28, 0xe3, 0xff, 0x5e,
+ 0x76, 0x60, 0x76, 0x97, 0x9e, 0xa6, 0xb5, 0x22, 0xc9, 0x6d, 0xe7, 0xd3,
+ 0xe4, 0xb6, 0xee, 0xf3, 0xfd, 0xb2, 0xae, 0xe8, 0xb9, 0x0f, 0x06, 0x71,
+ 0x6d, 0x18, 0x0c, 0xbf, 0x7c, 0xcf, 0xbb, 0x39, 0xca, 0xed, 0xf1, 0x70,
+ 0x4e, 0x07, 0x8b, 0xb8, 0xf5, 0x91, 0x74, 0x97, 0x21, 0xc7, 0x60, 0x65,
+ 0xab, 0x02, 0x8b, 0xfc, 0xba, 0xa8, 0x57, 0x16, 0x3a, 0xde, 0x52, 0x30,
+ 0xf7, 0x59, 0x66, 0xb8, 0xbf, 0xc9, 0xcc, 0x3b, 0xf0, 0x04, 0xb2, 0xf0,
+ 0x19, 0xc8, 0xd3, 0xd7, 0x3f, 0x35, 0x4c, 0x08, 0xfa, 0x0b, 0xdb, 0x17,
+ 0x9a, 0x8b, 0xfd, 0xb9, 0xec, 0x0b, 0xb5, 0x41, 0x60, 0x28, 0x67, 0x0b,
+ 0x55, 0xae, 0x53, 0x19, 0xb6, 0x8e, 0xc1, 0x50, 0xa3, 0xb7, 0x7a, 0x24,
+ 0x4c, 0xed, 0xc1, 0xf6, 0x94, 0x4d, 0x01, 0x08, 0xa4, 0x42, 0x0a, 0x96,
+ 0x16, 0x98, 0x3b, 0x0a, 0x99, 0x97, 0x94, 0x8b, 0x98, 0x14, 0x92, 0xde,
+ 0xe7, 0x4b, 0x7b, 0x45, 0x7a, 0x89, 0xa5, 0xaf, 0xd0, 0x00, 0x96, 0x61,
+ 0x26, 0x2d, 0x56, 0xa4, 0x2e, 0xfe, 0x93, 0x38, 0x99, 0x73, 0x68, 0x3f,
+ 0x3e, 0x4e, 0xbc, 0x0f, 0x88, 0xb1, 0x1e, 0x75, 0x7c, 0x0a, 0x46, 0x65,
+ 0x16, 0x85, 0x99, 0x54, 0xad, 0x2c, 0xeb, 0x12, 0x9a, 0x89, 0xd1, 0x92,
+ 0x1c, 0x1d, 0xce, 0xaf, 0x8a, 0xa4, 0x4c, 0x7d, 0xb4, 0xcf, 0xfe, 0x8b,
+ 0x88, 0x82, 0x53, 0xce, 0xe1, 0x29, 0x7e, 0xc6, 0x68, 0x07, 0x4e, 0x2d,
+ 0xf0, 0xd6, 0x13, 0x59, 0x96, 0x9f, 0xad, 0x0a, 0x33, 0x75, 0xce, 0x39,
+ 0x93, 0x52, 0xa6, 0x7b, 0x7d, 0xf4, 0x13, 0x7a, 0xad, 0x35, 0xfb, 0x30,
+ 0x46, 0x8c, 0x84, 0x38, 0x29, 0x63, 0x8f, 0x0f, 0x5f, 0x34, 0x6b, 0x3c,
+ 0xa0, 0x9f, 0x91, 0x6a, 0x76, 0xfe, 0x63, 0x81, 0xa5, 0x33, 0xa9, 0xe6,
+ 0xe0, 0x76, 0xaf, 0xb7, 0x8d, 0xba, 0xf4, 0x36, 0xfc, 0xd0, 0xc4, 0x68,
+ 0x31, 0xb4, 0x35, 0x9a, 0x43, 0x0d, 0x8c, 0x00, 0x19, 0xa8, 0x8e, 0x16,
+ 0xe6, 0x6c, 0x4c, 0xee, 0x9c, 0xb4, 0xe5, 0xf2, 0x1f, 0x0b, 0x50, 0x3f,
+ 0x08, 0x69, 0x35, 0x2d, 0xa8, 0x78, 0x48, 0x3a, 0x75, 0x2c, 0xb5, 0x9e,
+ 0x3a, 0xa0, 0xb9, 0x1b, 0xa5, 0x54, 0x60, 0x22, 0x73, 0x83, 0x0b, 0xbd,
+ 0xca, 0xd8, 0x10, 0x54, 0xa8, 0x22, 0xab, 0x34, 0x88, 0x82, 0x8a, 0xca,
+ 0x24, 0xab, 0x8e, 0x9c, 0x2e, 0xc8, 0x47, 0x2f, 0xba, 0x66, 0x9b, 0x5e,
+ 0x9f, 0x10, 0xcc, 0xa0, 0x02, 0x9b, 0x8f, 0xbb, 0x00, 0xff, 0x9f, 0x56,
+ 0xc3, 0x6d, 0xf2, 0xa9, 0x8c, 0x96, 0xd6, 0x6d, 0xa0, 0x3c, 0xca, 0x98,
+ 0x0d, 0x8d, 0xb5, 0x53, 0xf5, 0x68, 0xaf, 0x71, 0xaa, 0x32, 0x60, 0x88,
+ 0xa3, 0xf9, 0x62, 0x80, 0x14, 0x74, 0x08, 0xb3, 0xbf, 0x0a, 0x60, 0x55,
+ 0x72, 0xd8, 0x17, 0x27, 0xab, 0x4a, 0x8e, 0x0d, 0x72, 0xdb, 0x85, 0x56,
+ 0xa8, 0x74, 0x38, 0xa2, 0xba, 0xe6, 0x0c, 0x1d, 0x6f, 0xfa, 0x68, 0x62,
+ 0xd4, 0x09, 0xa1, 0x73, 0x10, 0xa4, 0x2d, 0xbb, 0x32, 0xe6, 0x29, 0x1b,
+ 0xa0, 0x32, 0x95, 0x57, 0xd1, 0xcd, 0x87, 0xd8, 0x1e, 0xe4, 0xf0, 0x93,
+ 0xb4, 0x7c, 0xb2, 0x24, 0xfb, 0xa5, 0xce, 0x38, 0x58, 0xc4, 0x60, 0xfc,
+ 0x3a, 0x43, 0x80, 0x39, 0x9f, 0x9f, 0xbc, 0x42, 0x92, 0x7b, 0x76, 0xf2,
+ 0x46, 0x1c, 0x04, 0x58, 0x0a, 0x9e, 0x0a, 0xae, 0xb0, 0x01, 0xa6, 0x29,
+ 0x4b, 0x8c, 0xc9, 0xf9, 0xf9, 0xe4, 0x11, 0xb9, 0x28, 0x89, 0x19, 0x5c,
+ 0x25, 0x7b, 0x8f, 0x9f, 0xc8, 0xb0, 0xb5, 0xae, 0x2c, 0x19, 0xd4, 0x36,
+ 0xf8, 0xab, 0xed, 0x6d, 0x0e, 0xbb, 0x40, 0x97, 0xbb, 0xa7, 0xab, 0x53,
+ 0xe4, 0x0f, 0x3e, 0xfb, 0xa7, 0x8d, 0x16, 0x34, 0x1e, 0x75, 0x21, 0x71,
+ 0x58, 0x66, 0x44, 0xf1, 0xc8, 0x8c, 0x14, 0x74, 0xea, 0x48, 0xdf, 0x5d,
+ 0x37, 0x80, 0x97, 0x0b, 0x0c, 0x35, 0xeb, 0x2f, 0x0d, 0xd3, 0xa2, 0x62,
+ 0x84, 0x60, 0xb4, 0xa9, 0x51, 0x81, 0x15, 0x6c, 0x13, 0xaf, 0x4f, 0xad,
+ 0x11, 0x00, 0xb4, 0xe0, 0x2e, 0x0f, 0xc7, 0x39, 0x23, 0xad, 0x0f, 0xfd,
+ 0xaa, 0x68, 0x0c, 0x2a, 0x4f, 0x27, 0xce, 0x6d, 0x59, 0x6a, 0xeb, 0x64,
+ 0x95, 0x6b, 0xb6, 0xe6, 0xac, 0x26, 0x8e, 0xab, 0xa1, 0xdd, 0x5c, 0x0c,
+ 0x3c, 0x8c, 0x71, 0xe9, 0xd3, 0x30, 0x59, 0x0a, 0x54, 0x70, 0x20, 0x88,
+ 0x2c, 0xa3, 0xb0, 0x98, 0xdc, 0xce, 0x02, 0x78, 0x86, 0xc4, 0x71, 0x4e,
+ 0xf1, 0x79, 0x0c, 0x27, 0x64, 0x80, 0xb8, 0x19, 0x34, 0xf9, 0x8e, 0xd2,
+ 0xaa, 0x7c, 0x1e, 0x70, 0xf2, 0x6a, 0x1b, 0x09, 0x41, 0xbc, 0x80, 0x9e,
+ 0x99, 0xe1, 0x69, 0x6f, 0xff, 0xab, 0xde, 0xce, 0x41, 0x74, 0x06, 0xda,
+ 0x19, 0x2c, 0x7f, 0x37, 0xfa, 0x7e, 0xb6, 0xc0, 0xed, 0xc0, 0x39, 0x7f,
+ 0xdf, 0xff, 0x4b, 0x56, 0xf9, 0x2f, 0x3c, 0xda, 0xc7, 0x17, 0x5e, 0xf7,
+ 0xf9, 0xa1, 0x9b, 0x7c, 0x32, 0x86, 0x17, 0x03, 0x8f, 0x3d, 0xc5, 0xc7,
+ 0x80, 0xde, 0x46, 0x95, 0x07, 0x52, 0x2f, 0x04, 0xd6, 0x3e, 0xa8, 0x47,
+ 0x8f, 0x02, 0x83, 0xea, 0xae, 0xdb, 0x69, 0xd3, 0x46, 0x42, 0xea, 0x1d,
+ 0x12, 0xd9, 0x20, 0x19, 0xbe, 0x27, 0x82, 0x22, 0xa0, 0x57, 0x1e, 0x45,
+ 0xab, 0xf3, 0xa0, 0xc6, 0x30, 0x3e, 0xb5, 0xf4, 0xda, 0x0a, 0x12, 0x57,
+ 0x1b, 0x05, 0xfc, 0xb7, 0x96, 0xf1, 0xa4, 0xf1, 0xba, 0x39, 0xc5, 0xc3,
+ 0x74, 0x77, 0xf7, 0xcb, 0xc1, 0xe3, 0xdd, 0x2f, 0xbf, 0x7a, 0x3a, 0x7e,
+ 0xf4, 0xe8, 0xf1, 0xde, 0x68, 0xb8, 0xb1, 0xe6, 0x35, 0x8c, 0xe6, 0x13,
+ 0x68, 0x95, 0x1b, 0xac, 0xbb, 0xd6, 0x1a, 0x08, 0xe6, 0x52, 0xde, 0x28,
+ 0x1c, 0x1d, 0x54, 0x87, 0x05, 0x28, 0xa8, 0x98, 0x70, 0x45, 0xb5, 0x5b,
+ 0x9e, 0xee, 0xed, 0xef, 0x6e, 0x3f, 0xe9, 0x3d, 0xea, 0xed, 0x19, 0xb0,
+ 0x19, 0x46, 0xac, 0xaf, 0x28, 0x99, 0x3b, 0x10, 0x73, 0x4a, 0xf9, 0xf4,
+ 0xd9, 0x4c, 0xea, 0x34, 0x99, 0x4f, 0xc8, 0xc9, 0x66, 0x93, 0xd9, 0xb1,
+ 0x72, 0xd3, 0xae, 0x0b, 0x50, 0x4a, 0xbe, 0x61, 0xaf, 0x0a, 0xf8, 0x2c,
+ 0xc6, 0x41, 0x98, 0x48, 0x0f, 0x74, 0xaa, 0x0d, 0xb2, 0x7f, 0x2c, 0xb2,
+ 0x0a, 0x34, 0x30, 0x9c, 0x27, 0x06, 0xaf, 0x0c, 0x8a, 0xfc, 0xa6, 0x24,
+ 0x7d, 0x10, 0x96, 0x84, 0xe6, 0x40, 0x7c, 0xc2, 0x17, 0xcd, 0x05, 0x6a,
+ 0x1f, 0xaf, 0x72, 0xa7, 0xea, 0x02, 0xe1, 0x88, 0x66, 0xc4, 0xd2, 0xf1,
+ 0x89, 0x32, 0x2b, 0x2b, 0x60, 0xc4, 0xc0, 0xb8, 0x5e, 0xe4, 0x37, 0x48,
+ 0x61, 0x5d, 0x82, 0x48, 0x28, 0xfc, 0x50, 0x28, 0xae, 0xa8, 0xc8, 0x41,
+ 0xb6, 0x92, 0xda, 0x4e, 0x8b, 0x47, 0x81, 0x86, 0xf2, 0x01, 0xe7, 0xab,
+ 0x29, 0xee, 0x77, 0x54, 0x9b, 0xf0, 0x72, 0x95, 0x60, 0x9a, 0x26, 0x68,
+ 0xaf, 0x41, 0x2c, 0x4d, 0x8e, 0xb8, 0xc4, 0xf5, 0x13, 0x85, 0xb7, 0x05,
+ 0x05, 0x34, 0x24, 0x77, 0xf0, 0xae, 0x7f, 0x64, 0xe0, 0x0b, 0x69, 0x75,
+ 0x6d, 0x79, 0x43, 0x06, 0xe3, 0x80, 0x9f, 0xc6, 0xa3, 0xa8, 0x83, 0x8c,
+ 0x73, 0x5d, 0xff, 0xb2, 0xd4, 0xe4, 0xea, 0xda, 0x82, 0x5c, 0x2c, 0x8d,
+ 0xb6, 0xe1, 0xa3, 0xea, 0x0b, 0x0f, 0x26, 0xff, 0xfd, 0x8f, 0x4f, 0xfe,
+ 0x7b, 0xff, 0x97, 0xfc, 0xff, 0x3d, 0xe4, 0xbf, 0xf7, 0x49, 0xc8, 0x7f,
+ 0xef, 0x61, 0xe4, 0xbf, 0xf7, 0xf1, 0xc8, 0x7f, 0x77, 0x5d, 0xf2, 0xdf,
+ 0xbf, 0x0f, 0xf9, 0x03, 0xa5, 0x61, 0x6e, 0x5b, 0x9d, 0xfc, 0x1f, 0xad,
+ 0x45, 0xfe, 0x4c, 0xff, 0x74, 0x00, 0x5a, 0x4f, 0x00, 0x8e, 0xd9, 0xc5,
+ 0xa7, 0x86, 0xcb, 0x2b, 0x5c, 0x76, 0xed, 0xfe, 0x74, 0x96, 0xd4, 0x1a,
+ 0xf5, 0x6a, 0x36, 0xf0, 0x21, 0xfb, 0x64, 0x54, 0xb6, 0xff, 0x49, 0xa8,
+ 0x6c, 0xff, 0x61, 0x54, 0xb6, 0xff, 0x49, 0x98, 0xec, 0xee, 0x2a, 0x2a,
+ 0x2b, 0x52, 0x0e, 0x4e, 0xfc, 0x49, 0x83, 0x44, 0xa1, 0xaf, 0x5f, 0xc8,
+ 0xc5, 0x73, 0x80, 0x32, 0xde, 0x2f, 0x4d, 0xf5, 0x5d, 0x2a, 0xa3, 0x5b,
+ 0x6d, 0xae, 0x7f, 0x76, 0xfc, 0x97, 0xbe, 0x44, 0x38, 0x8a, 0xc0, 0xad,
+ 0x02, 0x39, 0xfb, 0x1b, 0x28, 0x84, 0x9c, 0x8b, 0x61, 0x7a, 0x7a, 0x1e,
+ 0x25, 0x6b, 0x46, 0x14, 0x1e, 0x6d, 0xe2, 0xa3, 0x23, 0xcc, 0xdd, 0x94,
+ 0xb8, 0x4b, 0xae, 0x14, 0xcc, 0x20, 0xe6, 0xe4, 0xc0, 0x95, 0xa6, 0xb5,
+ 0x52, 0x6a, 0x73, 0x25, 0x9c, 0xb1, 0x88, 0xfb, 0x78, 0x66, 0x5f, 0xd9,
+ 0xac, 0xae, 0x0a, 0x02, 0x0d, 0xa5, 0xc7, 0xb6, 0x22, 0x8b, 0xfd, 0xb8,
+ 0x74, 0x74, 0x32, 0xaa, 0x17, 0x68, 0xec, 0x40, 0xd5, 0x2e, 0x6a, 0x84,
+ 0x71, 0x3b, 0xa6, 0x5d, 0xf3, 0xad, 0xc6, 0x39, 0x84, 0x0a, 0x8e, 0x48,
+ 0xa5, 0x50, 0x67, 0xbd, 0xf1, 0x3d, 0xcf, 0xf1, 0x90, 0xdd, 0x72, 0xdd,
+ 0x7a, 0x53, 0x1c, 0x6e, 0x02, 0x07, 0x66, 0x46, 0xa8, 0x95, 0x1a, 0x46,
+ 0x6f, 0xda, 0x60, 0x50, 0x08, 0x54, 0xb2, 0xf3, 0xe1, 0xfb, 0xf2, 0x11,
+ 0x34, 0xd9, 0x74, 0x90, 0xf3, 0x17, 0x09, 0x7e, 0x23, 0x7f, 0x3c, 0xc6,
+ 0x8e, 0x29, 0x59, 0x82, 0xff, 0xbc, 0xa2, 0xbf, 0xb1, 0x4b, 0x2d, 0x7f,
+ 0xe9, 0xec, 0xf3, 0x30, 0xb8, 0xd0, 0x0e, 0x06, 0xad, 0x29, 0xd5, 0xf0,
+ 0x3a, 0xb7, 0x15, 0x13, 0xdd, 0x39, 0x63, 0xe6, 0x08, 0x81, 0xbf, 0x87,
+ 0xdc, 0x60, 0xce, 0xcd, 0x46, 0x2d, 0x3f, 0x0a, 0x2a, 0x16, 0xb4, 0x55,
+ 0x4e, 0xc5, 0x75, 0x2d, 0x82, 0x60, 0xbb, 0x91, 0xa0, 0x15, 0x77, 0x0b,
+ 0xa8, 0x04, 0xae, 0x67, 0xd4, 0x4a, 0xca, 0x72, 0x31, 0x35, 0xc6, 0xda,
+ 0xdd, 0x9d, 0x2f, 0x7d, 0x43, 0xfc, 0x5b, 0x05, 0xa0, 0xb4, 0xa5, 0xba,
+ 0x29, 0x6b, 0x8b, 0xe0, 0xe9, 0x06, 0xa9, 0x55, 0x6a, 0x02, 0x9d, 0x62,
+ 0x34, 0x4f, 0xc8, 0xee, 0x35, 0x4a, 0xd9, 0x5c, 0x30, 0x60, 0x93, 0x97,
+ 0x30, 0x37, 0x81, 0xdd, 0x92, 0xa4, 0x2e, 0x36, 0x34, 0x4a, 0xb4, 0x1c,
+ 0xe8, 0x4a, 0x9c, 0x9c, 0xe3, 0x45, 0x9e, 0xa1, 0x99, 0x5b, 0x63, 0x93,
+ 0xbf, 0xb5, 0x85, 0x53, 0x7f, 0xff, 0x68, 0x07, 0xf7, 0x54, 0x1b, 0x41,
+ 0x7f, 0xf3, 0x44, 0x21, 0x2c, 0x7e, 0xbf, 0x9f, 0x84, 0xc3, 0x19, 0x0d,
+ 0x13, 0xf8, 0x4c, 0x98, 0xce, 0xa6, 0x7f, 0x43, 0x98, 0x7c, 0xc4, 0x14,
+ 0x3b, 0x2f, 0xbe, 0x8d, 0xc4, 0x0f, 0x8d, 0x3f, 0xcc, 0xc7, 0x0f, 0x4c,
+ 0xc0, 0x10, 0xc7, 0x17, 0xf7, 0x55, 0x53, 0xc0, 0x1e, 0xd7, 0x0d, 0x5f,
+ 0x1e, 0x92, 0x48, 0xc0, 0x0d, 0x21, 0xe2, 0x9b, 0x96, 0xb7, 0x51, 0x18,
+ 0x76, 0x93, 0x73, 0x9a, 0xb0, 0xcd, 0x89, 0xc6, 0x6b, 0x3e, 0x84, 0xa6,
+ 0xa0, 0x43, 0x2f, 0x78, 0x58, 0x23, 0xc3, 0x38, 0xc7, 0x83, 0xed, 0x9a,
+ 0x5d, 0xaf, 0xba, 0x67, 0x32, 0xe9, 0x46, 0xe1, 0xb4, 0x51, 0x22, 0xa6,
+ 0x5a, 0x27, 0xa3, 0x22, 0xb9, 0x71, 0x8c, 0x5e, 0x5c, 0xb0, 0x6d, 0x4c,
+ 0x41, 0x5f, 0x36, 0xe9, 0x0b, 0xf3, 0xba, 0x30, 0xd9, 0xa0, 0x0c, 0xe4,
+ 0x8d, 0x94, 0xc3, 0x22, 0x95, 0x38, 0x5a, 0x2c, 0x79, 0x4d, 0x89, 0x05,
+ 0x58, 0x26, 0x1a, 0x84, 0xcf, 0xcb, 0x54, 0xab, 0x83, 0x98, 0x59, 0x6b,
+ 0xf5, 0x0e, 0x2a, 0x47, 0xd2, 0x0b, 0x20, 0x8e, 0x59, 0x0f, 0x8d, 0x26,
+ 0x26, 0x27, 0x52, 0xbb, 0x04, 0x5f, 0xed, 0x4a, 0x3e, 0xa5, 0x70, 0x8b,
+ 0x01, 0x19, 0x0d, 0x13, 0xcc, 0x8d, 0x2a, 0xaf, 0xb2, 0x79, 0x53, 0x10,
+ 0x8a, 0xbf, 0xce, 0xbf, 0x8e, 0xb7, 0x4c, 0xd5, 0xd5, 0xfc, 0x3a, 0x2d,
+ 0xc9, 0x4a, 0xc1, 0x00, 0x96, 0xc0, 0x25, 0xae, 0xc8, 0x24, 0x2c, 0x42,
+ 0x02, 0x81, 0x4f, 0x12, 0x0e, 0x8f, 0x54, 0xb4, 0x6c, 0xa9, 0x66, 0xc3,
+ 0xd1, 0xa5, 0xcc, 0xa1, 0x91, 0xd2, 0x61, 0xb5, 0xc6, 0x9c, 0xd6, 0x8d,
+ 0xb6, 0xbd, 0x08, 0x13, 0x34, 0xa2, 0xf2, 0x6e, 0x3a, 0xc8, 0x05, 0x12,
+ 0x33, 0x9f, 0xff, 0xa7, 0xb9, 0xbc, 0x1d, 0x7a, 0xfd, 0xb8, 0xe0, 0x0f,
+ 0x6e, 0xda, 0x71, 0x0d, 0x56, 0xe7, 0x5e, 0x87, 0xfc, 0x77, 0x6b, 0x07,
+ 0x6f, 0xc6, 0x94, 0xe7, 0x34, 0x92, 0xb8, 0x9a, 0xba, 0xd0, 0x02, 0x17,
+ 0x4c, 0xac, 0x97, 0xc6, 0xa1, 0xde, 0x37, 0xdf, 0xac, 0x44, 0x4e, 0x34,
+ 0x37, 0xd3, 0x58, 0xcc, 0xbb, 0xc8, 0x95, 0x09, 0x66, 0x94, 0x14, 0xbc,
+ 0x72, 0x78, 0x95, 0x4e, 0x19, 0xfc, 0xc6, 0x87, 0xf7, 0x04, 0x29, 0x73,
+ 0xc6, 0xb4, 0x8a, 0x31, 0x83, 0x33, 0x63, 0x03, 0x8b, 0x9c, 0x0a, 0xc1,
+ 0x52, 0xac, 0x51, 0xaa, 0xfe, 0x45, 0xc7, 0xd0, 0xfc, 0xc9, 0xbb, 0xb7,
+ 0xaf, 0xfb, 0x6f, 0xcf, 0x63, 0xaf, 0xb8, 0xef, 0x9b, 0x8b, 0x93, 0x67,
+ 0x98, 0x81, 0x77, 0x71, 0x76, 0x7c, 0x76, 0x1a, 0x6d, 0xee, 0x6e, 0x2d,
+ 0x25, 0x24, 0x43, 0x3a, 0xa6, 0xa8, 0xba, 0x75, 0x24, 0x33, 0x57, 0x33,
+ 0xa3, 0xd8, 0xc4, 0x55, 0xf6, 0x5b, 0xfb, 0x41, 0x4e, 0x5c, 0xc3, 0x3d,
+ 0x22, 0x36, 0xd5, 0x4b, 0xb8, 0xf1, 0x4b, 0x32, 0x5d, 0x4b, 0x2b, 0x6e,
+ 0x76, 0x0f, 0xa5, 0x52, 0x06, 0xaa, 0xdd, 0x75, 0x29, 0x96, 0x84, 0xa3,
+ 0xf3, 0x1d, 0xac, 0xd8, 0xb6, 0x4b, 0xc6, 0xdd, 0xb4, 0xcf, 0xe6, 0xd3,
+ 0xae, 0x8d, 0x82, 0xd1, 0x2d, 0xc6, 0xf6, 0x4e, 0x59, 0x25, 0x5e, 0xe3,
+ 0xdb, 0x36, 0x45, 0x0c, 0x5a, 0x22, 0xd5, 0xa5, 0xee, 0x3d, 0x79, 0xdc,
+ 0xb0, 0xe2, 0xd9, 0xe7, 0x2c, 0xa9, 0x96, 0x61, 0x5a, 0x35, 0xc4, 0xca,
+ 0xc5, 0x38, 0x6e, 0x90, 0xb5, 0x99, 0x57, 0xf0, 0x40, 0x6a, 0xe0, 0x68,
+ 0x3e, 0x33, 0x4a, 0x53, 0x0f, 0xcf, 0xbf, 0x27, 0x1e, 0xf0, 0x1b, 0xa3,
+ 0x74, 0x96, 0xb1, 0xb8, 0x61, 0xc6, 0x2e, 0x50, 0xf7, 0x92, 0x73, 0x09,
+ 0x0f, 0xe0, 0xb7, 0x0e, 0x4d, 0x50, 0x2d, 0x1f, 0x3f, 0x01, 0x83, 0xdf,
+ 0xc6, 0x4d, 0x46, 0x14, 0x5b, 0x3b, 0x26, 0x6c, 0x0f, 0x6f, 0x6f, 0xaa,
+ 0x65, 0xdd, 0xbe, 0x1d, 0x5d, 0x29, 0x4e, 0x43, 0xdc, 0x98, 0xa4, 0x6d,
+ 0x5c, 0x44, 0x96, 0xaf, 0x9d, 0xb9, 0xb4, 0x04, 0xdc, 0xd6, 0x17, 0x11,
+ 0x03, 0xbc, 0xba, 0xb8, 0x73, 0x5d, 0xde, 0x3e, 0x11, 0x0d, 0x96, 0xec,
+ 0xe0, 0x77, 0xf5, 0x82, 0xad, 0x02, 0xd0, 0x86, 0x43, 0xe1, 0x51, 0x31,
+ 0x76, 0x32, 0x8d, 0xa6, 0x4b, 0x80, 0xbb, 0x38, 0xb8, 0xe7, 0x66, 0x6c,
+ 0x1e, 0xd2, 0x07, 0xc7, 0x28, 0x6e, 0x6a, 0x45, 0x8d, 0x27, 0x8f, 0x7b,
+ 0x7b, 0x5b, 0xb5, 0x00, 0x4b, 0x0c, 0x41, 0x83, 0xa5, 0xfa, 0x23, 0xfe,
+ 0x54, 0x2c, 0x21, 0xfc, 0x9d, 0xa7, 0xe1, 0x19, 0x79, 0xf8, 0x2e, 0x31,
+ 0xe5, 0x94, 0xba, 0x8a, 0x96, 0xc5, 0x27, 0xfe, 0x32, 0xcf, 0x47, 0x52,
+ 0xb0, 0x83, 0x0b, 0x74, 0xb4, 0x59, 0xdd, 0x9d, 0x35, 0xfa, 0xcc, 0xe7,
+ 0x8b, 0x07, 0xf1, 0x75, 0x63, 0x93, 0xd6, 0x50, 0x63, 0xb1, 0x15, 0xef,
+ 0x10, 0xad, 0x3c, 0x3e, 0xab, 0x4e, 0x0f, 0xd7, 0x66, 0x27, 0x97, 0x24,
+ 0xc7, 0x9f, 0xab, 0x38, 0xd2, 0xf3, 0x6f, 0x54, 0x79, 0x8b, 0x08, 0x3c,
+ 0xc5, 0x55, 0x22, 0x27, 0xdd, 0x24, 0x1d, 0x93, 0x96, 0x42, 0x20, 0xd5,
+ 0x5d, 0xfa, 0x92, 0x02, 0x3a, 0x4d, 0x2a, 0x6d, 0xb0, 0xe6, 0x1a, 0xb5,
+ 0x91, 0x0c, 0x5d, 0xad, 0xcf, 0x94, 0xd3, 0xdc, 0x00, 0xba, 0xd8, 0xe8,
+ 0x1a, 0x7c, 0xf8, 0xc9, 0x1d, 0x45, 0xff, 0x65, 0xb7, 0x0a, 0x2a, 0xf4,
+ 0x5b, 0x5a, 0xe4, 0x7e, 0xcc, 0x3a, 0x09, 0x85, 0x5a, 0x2b, 0x0f, 0x0d,
+ 0x31, 0xd7, 0xc0, 0x78, 0xe9, 0xd6, 0x36, 0x1f, 0x62, 0xaf, 0xde, 0x79,
+ 0xfa, 0x23, 0xcc, 0x0d, 0x81, 0xb5, 0xe5, 0x1a, 0x30, 0xa3, 0xc9, 0xa8,
+ 0x84, 0x68, 0xa6, 0x51, 0xc6, 0xce, 0xf9, 0x16, 0x58, 0x39, 0x82, 0xe3,
+ 0xf6, 0x0c, 0x34, 0xa4, 0x88, 0x8c, 0x50, 0xb1, 0xb6, 0xe8, 0x57, 0x86,
+ 0xc3, 0x8f, 0x51, 0xd0, 0x30, 0xf5, 0xfc, 0x24, 0xb9, 0xc6, 0xbf, 0x97,
+ 0x62, 0x90, 0x38, 0xd2, 0xd9, 0x5d, 0x7d, 0x40, 0x98, 0xa9, 0x0a, 0x22,
+ 0x1d, 0xbb, 0x26, 0x6d, 0x19, 0x0f, 0x8b, 0x8e, 0x60, 0x87, 0xe8, 0x0f,
+ 0xa9, 0x3e, 0xe6, 0x10, 0x57, 0xfa, 0xda, 0x2c, 0x03, 0xb3, 0x81, 0xfa,
+ 0x62, 0x6c, 0x52, 0xdd, 0x62, 0x0d, 0x94, 0xa6, 0x2e, 0xef, 0xb3, 0x0c,
+ 0x54, 0x7d, 0x94, 0xec, 0x0b, 0xe5, 0x62, 0xf0, 0x2b, 0x01, 0x42, 0xe6,
+ 0x8c, 0x39, 0x25, 0xab, 0x20, 0xb6, 0x1d, 0xd8, 0x55, 0x78, 0x80, 0xc3,
+ 0x27, 0x2a, 0x4c, 0xae, 0x0f, 0x35, 0x47, 0xf1, 0xdb, 0x99, 0x93, 0x58,
+ 0x64, 0x29, 0x8c, 0x46, 0xb4, 0x0c, 0xd0, 0xf7, 0xe0, 0x8b, 0x16, 0xf6,
+ 0x1d, 0x8f, 0xf1, 0x28, 0x72, 0xca, 0x6c, 0x43, 0x80, 0xe0, 0xb5, 0xe4,
+ 0x44, 0x72, 0x03, 0xe4, 0x80, 0x8f, 0xb7, 0xb6, 0xa5, 0x5c, 0xb8, 0xec,
+ 0xfe, 0x11, 0x7f, 0xf8, 0x73, 0xa8, 0xe3, 0x52, 0x60, 0xca, 0xa4, 0x70,
+ 0x42, 0x7c, 0x9c, 0x58, 0x2c, 0xbd, 0xde, 0xd6, 0x81, 0xc3, 0x3d, 0x96,
+ 0xb7, 0x4d, 0x3c, 0x63, 0x8d, 0x0e, 0xde, 0x8a, 0x18, 0x27, 0xa9, 0xc1,
+ 0x5a, 0x27, 0xc9, 0x21, 0x7a, 0xf8, 0x6d, 0xb4, 0x18, 0xa2, 0xed, 0x52,
+ 0xa0, 0x90, 0x6a, 0x8a, 0x7a, 0x53, 0x6d, 0x1b, 0x16, 0xd9, 0x9c, 0x0d,
+ 0x52, 0x65, 0x32, 0x46, 0x20, 0x8c, 0x02, 0xff, 0xc1, 0x8d, 0xa6, 0x3c,
+ 0x16, 0xc6, 0x61, 0xb0, 0x68, 0x2e, 0xf3, 0xbc, 0x42, 0x3f, 0x3b, 0x1d,
+ 0xf5, 0x51, 0xe2, 0x6d, 0xfe, 0x25, 0x9c, 0xf7, 0x45, 0xe9, 0x6e, 0x89,
+ 0xaa, 0x4a, 0xd8, 0x2c, 0x87, 0x03, 0xa3, 0xe4, 0x26, 0x39, 0xaa, 0x1c,
+ 0xc0, 0xe4, 0x30, 0xba, 0x60, 0x2e, 0x0d, 0xa7, 0xb6, 0x92, 0x89, 0x57,
+ 0x79, 0x24, 0xa1, 0x49, 0x2e, 0x2b, 0x1e, 0x6e, 0xa5, 0x44, 0x37, 0xa2,
+ 0xbd, 0x6e, 0x30, 0xed, 0x46, 0x06, 0xa0, 0x83, 0x0c, 0x75, 0x16, 0x0c,
+ 0xd5, 0x2f, 0xcd, 0xc1, 0xfa, 0x24, 0x25, 0x61, 0x61, 0x44, 0xde, 0x0c,
+ 0x03, 0x05, 0x66, 0x1c, 0x7d, 0x20, 0xe6, 0x13, 0x65, 0xd4, 0x38, 0x4c,
+ 0x02, 0x32, 0x99, 0xa1, 0x16, 0x3c, 0x4c, 0xfd, 0x3c, 0x72, 0xca, 0x41,
+ 0x98, 0x57, 0x2d, 0xc5, 0xd7, 0x94, 0x82, 0x3e, 0x5b, 0xb4, 0x56, 0x93,
+ 0x7e, 0xbb, 0x25, 0x9c, 0xa4, 0x87, 0x5c, 0x81, 0x72, 0x91, 0xba, 0x02,
+ 0xa7, 0x07, 0x45, 0xa8, 0x69, 0xd0, 0x92, 0x48, 0xbc, 0x5c, 0xae, 0x9c,
+ 0x63, 0x81, 0x02, 0xe0, 0x25, 0x8b, 0xac, 0x22, 0x62, 0x6c, 0xe0, 0x42,
+ 0x28, 0x18, 0x01, 0x9b, 0x4d, 0xa7, 0x53, 0x2f, 0xc1, 0x79, 0xa6, 0x01,
+ 0x23, 0x26, 0xb1, 0x8b, 0x93, 0x29, 0x49, 0xa4, 0x13, 0x43, 0x29, 0x91,
+ 0x0e, 0x9b, 0xc9, 0x58, 0x21, 0x12, 0x10, 0x11, 0x54, 0x39, 0xc3, 0xee,
+ 0x87, 0x6d, 0x93, 0x14, 0x02, 0xb4, 0x3f, 0x1b, 0xc5, 0xc0, 0xfd, 0xe6,
+ 0xcb, 0xcd, 0xf7, 0xee, 0x8c, 0x3f, 0x41, 0x7a, 0x7a, 0xbd, 0x7d, 0xfd,
+ 0x9b, 0x32, 0x89, 0x6d, 0xc6, 0xfa, 0x08, 0xed, 0x52, 0xac, 0x7b, 0x3d,
+ 0xd0, 0x12, 0x65, 0x7e, 0xa9, 0xa5, 0x8b, 0xf3, 0x27, 0xa3, 0x06, 0xde,
+ 0x40, 0xed, 0xc9, 0x25, 0x9b, 0xac, 0xaa, 0x2e, 0xed, 0xc8, 0x77, 0xdc,
+ 0x6c, 0x7d, 0x93, 0xed, 0xee, 0xea, 0x6e, 0x7a, 0xf2, 0x5f, 0x6d, 0x6f,
+ 0x65, 0x5b, 0xb9, 0xec, 0x18, 0x0f, 0x94, 0x4c, 0x15, 0x33, 0x41, 0x7f,
+ 0x71, 0x7a, 0x62, 0xc3, 0x89, 0xb7, 0xc9, 0x53, 0xc2, 0xa3, 0xa2, 0xba,
+ 0x11, 0x91, 0x3c, 0x69, 0x38, 0x82, 0xde, 0x41, 0x61, 0x4a, 0x0c, 0xd8,
+ 0x8a, 0xe9, 0xf6, 0xa2, 0x8e, 0x70, 0x60, 0xd9, 0x8a, 0x2a, 0x39, 0xee,
+ 0xf2, 0x7e, 0x2a, 0x3a, 0xe1, 0xd6, 0xff, 0x0d, 0x54, 0x12, 0xaa, 0xb3,
+ 0xd5, 0x46, 0x27, 0xc3, 0x04, 0x03, 0xb2, 0xc2, 0xc9, 0xa9, 0x7d, 0xe1,
+ 0xc2, 0xb1, 0x3e, 0x85, 0xb7, 0xbe, 0xe6, 0xf4, 0x3b, 0x4e, 0x0f, 0x8a,
+ 0x9b, 0x6b, 0x49, 0x57, 0x6e, 0xf4, 0x73, 0x5f, 0x5e, 0xfb, 0x29, 0x14,
+ 0x0e, 0x3b, 0x8a, 0xe3, 0x23, 0x2e, 0x1b, 0x54, 0x21, 0x66, 0xff, 0xad,
+ 0x59, 0xf0, 0xb5, 0x96, 0xbf, 0x81, 0x2e, 0x31, 0x4c, 0x30, 0xc2, 0x90,
+ 0xdc, 0x53, 0xdc, 0x89, 0xfc, 0x4a, 0x71, 0x87, 0xb4, 0x11, 0x2e, 0xb4,
+ 0x4f, 0xc3, 0x66, 0xd4, 0x6a, 0x5a, 0xae, 0x35, 0x1e, 0x4c, 0x9c, 0x77,
+ 0xf7, 0x88, 0x1e, 0xfa, 0xa0, 0x3d, 0xa2, 0x16, 0x3e, 0xfb, 0x1e, 0xd1,
+ 0x28, 0xb6, 0x0d, 0x9c, 0xb0, 0x64, 0xb6, 0x7f, 0xb4, 0x8d, 0xd2, 0xdd,
+ 0x71, 0x9c, 0x89, 0x91, 0x9c, 0x15, 0xee, 0xdb, 0xda, 0x69, 0xbc, 0x30,
+ 0xb8, 0x96, 0xfd, 0x81, 0x16, 0xe3, 0xea, 0x6e, 0x9e, 0x46, 0x87, 0xf8,
+ 0xef, 0x92, 0x3d, 0x32, 0x0f, 0x7e, 0xc8, 0x36, 0x99, 0x46, 0x42, 0x3b,
+ 0x65, 0xb0, 0x5d, 0x58, 0x11, 0xc2, 0xcd, 0xc2, 0xdd, 0xf2, 0x52, 0xb1,
+ 0x3f, 0xb4, 0x26, 0x76, 0x73, 0x2c, 0x18, 0x1b, 0xeb, 0x7e, 0xca, 0x61,
+ 0xb6, 0x0f, 0xdd, 0x34, 0x2b, 0xdd, 0x48, 0x73, 0xbd, 0x7b, 0x9c, 0x12,
+ 0x62, 0x64, 0xf8, 0xef, 0x4f, 0xc2, 0x53, 0x7f, 0x59, 0xbe, 0x13, 0x0f,
+ 0xd9, 0x84, 0x7a, 0x6f, 0x9f, 0x0f, 0xf3, 0xe0, 0x93, 0x2d, 0x34, 0xed,
+ 0xe6, 0x7d, 0x56, 0x3b, 0x9b, 0x5f, 0xa1, 0xf9, 0xe0, 0x30, 0x04, 0x57,
+ 0xe8, 0xac, 0xb3, 0x3c, 0xf6, 0x21, 0xf4, 0x2e, 0x4d, 0x7c, 0x46, 0x5b,
+ 0x95, 0x33, 0x8a, 0x93, 0xe3, 0x67, 0x2f, 0x4e, 0x62, 0xf8, 0xb7, 0x7f,
+ 0x14, 0x1f, 0x9d, 0xf4, 0xf7, 0x1e, 0x3f, 0x89, 0x8f, 0x8f, 0x5f, 0x7d,
+ 0xf9, 0xa1, 0x1b, 0x20, 0xcd, 0x53, 0xc1, 0x96, 0x45, 0x81, 0x4e, 0xaa,
+ 0xe6, 0xa5, 0x71, 0x8f, 0x2d, 0x29, 0x26, 0xb6, 0x66, 0xe6, 0x92, 0x2d,
+ 0x91, 0xc7, 0x3e, 0x64, 0x4b, 0xa4, 0x89, 0xcf, 0xbc, 0x25, 0x32, 0x8a,
+ 0x22, 0xfd, 0x95, 0xca, 0xcb, 0x7f, 0xc8, 0x75, 0xae, 0xdb, 0x20, 0x4d,
+ 0xae, 0xbf, 0xf8, 0x2c, 0x60, 0xad, 0x74, 0x2d, 0x91, 0x14, 0xfc, 0x4c,
+ 0x90, 0x9d, 0x02, 0x02, 0xf7, 0x83, 0x25, 0x6e, 0x41, 0x8b, 0xf2, 0x45,
+ 0x6e, 0xe9, 0x0c, 0xdf, 0x6d, 0xda, 0x1b, 0x55, 0xe6, 0x26, 0x91, 0x7b,
+ 0xb5, 0x78, 0x2c, 0x5d, 0x7c, 0x2a, 0xf9, 0x58, 0x9a, 0xff, 0x4c, 0x02,
+ 0x32, 0x49, 0xe7, 0xfe, 0xb6, 0x72, 0x02, 0x78, 0x74, 0xc8, 0x3f, 0xb7,
+ 0xbf, 0x0d, 0x1d, 0x2d, 0x05, 0x62, 0xa4, 0x15, 0x90, 0x17, 0xd0, 0xae,
+ 0x20, 0xa5, 0xb9, 0xc4, 0x3c, 0xa7, 0xe1, 0x32, 0xb4, 0xcd, 0x9a, 0x6b,
+ 0x40, 0x5b, 0xe4, 0x39, 0x65, 0x14, 0x29, 0x93, 0x91, 0x76, 0xd1, 0x1a,
+ 0x6d, 0xaa, 0x7d, 0x9b, 0x5c, 0x13, 0xb4, 0x6e, 0xa6, 0x4e, 0x8f, 0xa5,
+ 0x29, 0x10, 0x19, 0x30, 0x82, 0x60, 0x90, 0x1d, 0x9c, 0x41, 0x34, 0x24,
+ 0x5a, 0x8c, 0x88, 0x58, 0x27, 0x87, 0x8c, 0x40, 0x20, 0x30, 0x94, 0x03,
+ 0x18, 0x1a, 0xf4, 0x92, 0x25, 0x18, 0x32, 0x8e, 0xb0, 0x3e, 0x28, 0x83,
+ 0xeb, 0xf8, 0xec, 0xf5, 0xeb, 0x93, 0xe3, 0x66, 0x3c, 0x2c, 0x06, 0xa9,
+ 0x10, 0xd4, 0x9d, 0x53, 0x84, 0x8e, 0x7b, 0xf3, 0x42, 0x01, 0x19, 0x0f,
+ 0xcf, 0x86, 0xc6, 0xc0, 0x1f, 0x37, 0x82, 0x1d, 0xe9, 0x7e, 0xc9, 0x45,
+ 0x97, 0x97, 0x52, 0xac, 0x75, 0xda, 0x50, 0x04, 0x51, 0xb9, 0x28, 0x04,
+ 0xeb, 0x99, 0x8c, 0xea, 0x32, 0x59, 0x86, 0x91, 0x48, 0x46, 0xa3, 0x6d,
+ 0x41, 0x9f, 0xe1, 0x4b, 0x1c, 0xbb, 0x6a, 0x3b, 0x6d, 0x5c, 0x71, 0x1a,
+ 0xc1, 0x07, 0xe3, 0x7c, 0x1c, 0x53, 0x74, 0xc4, 0x34, 0x29, 0xde, 0x63,
+ 0x04, 0xad, 0x03, 0xa8, 0x43, 0xf0, 0xc7, 0x54, 0x1e, 0x7a, 0x34, 0x0a,
+ 0xd5, 0x02, 0xa2, 0x10, 0x0f, 0x07, 0xbc, 0x4c, 0x07, 0x44, 0xec, 0x76,
+ 0x56, 0x1d, 0x60, 0xb6, 0x99, 0xbe, 0x3e, 0x4b, 0x6f, 0xb0, 0x1b, 0x2e,
+ 0x68, 0x87, 0x05, 0x7d, 0xfc, 0x4a, 0xb1, 0x45, 0x5a, 0x2d, 0x8a, 0x19,
+ 0x33, 0xda, 0x3b, 0xc7, 0x55, 0x85, 0xc0, 0xeb, 0x11, 0x61, 0x5a, 0x97,
+ 0x88, 0x08, 0x20, 0xd8, 0x82, 0xde, 0x5a, 0xbd, 0x60, 0xa2, 0xa9, 0xe5,
+ 0x5b, 0x79, 0x69, 0x71, 0xa6, 0x08, 0xcb, 0x20, 0x55, 0x6a, 0x26, 0x1e,
+ 0xd8, 0x56, 0xdf, 0x8f, 0x57, 0x9b, 0xb6, 0x01, 0x6d, 0xa7, 0x65, 0xad,
+ 0x01, 0xdd, 0xcc, 0xa4, 0x25, 0x30, 0xae, 0x5f, 0xc1, 0xda, 0x90, 0x25,
+ 0x9f, 0x98, 0xec, 0x63, 0x04, 0xb9, 0xad, 0x1a, 0xe6, 0xc5, 0x0a, 0xf7,
+ 0x15, 0x11, 0x56, 0x8a, 0xcb, 0x05, 0xc3, 0xcc, 0x22, 0x09, 0xd2, 0xa1,
+ 0x8c, 0x03, 0x8e, 0xe7, 0x88, 0x31, 0x50, 0xd5, 0x51, 0x46, 0x61, 0x7e,
+ 0xb0, 0xbc, 0xb8, 0x11, 0xb2, 0xf8, 0x1a, 0x4c, 0xc1, 0x31, 0x2f, 0x72,
+ 0x52, 0xb3, 0xd9, 0x7c, 0x51, 0x85, 0xaa, 0xcd, 0x48, 0x45, 0xa5, 0x6f,
+ 0x63, 0x87, 0xca, 0x68, 0xb6, 0x68, 0xf5, 0x77, 0xf7, 0x94, 0x0b, 0x9e,
+ 0xa2, 0x3b, 0xa2, 0xac, 0x46, 0xd9, 0xec, 0xde, 0x66, 0x53, 0x3f, 0x10,
+ 0x83, 0x02, 0x23, 0x2d, 0xb1, 0x6e, 0x93, 0xbf, 0xa3, 0x49, 0x0b, 0xe6,
+ 0x2d, 0x65, 0x05, 0x41, 0x63, 0xb9, 0xe5, 0x66, 0x9f, 0x0e, 0x7b, 0xa4,
+ 0xde, 0x4f, 0xe7, 0xc7, 0xf8, 0x39, 0x86, 0x63, 0xc6, 0xaf, 0x61, 0x33,
+ 0x0e, 0xa2, 0x3f, 0xe7, 0x69, 0xc7, 0x09, 0xd2, 0x6a, 0x67, 0xe6, 0xf7,
+ 0x69, 0x1a, 0xe3, 0xee, 0xe2, 0xa3, 0x4b, 0x3a, 0x39, 0x70, 0xd2, 0xe7,
+ 0x45, 0x56, 0x7e, 0xc4, 0xd6, 0x5f, 0x00, 0x7f, 0x39, 0xb8, 0x5f, 0x73,
+ 0xf7, 0xc1, 0xf2, 0xad, 0xa5, 0xef, 0x3c, 0x0d, 0x89, 0x0f, 0x0a, 0x0d,
+ 0xde, 0x2a, 0xb5, 0xe9, 0x03, 0x6b, 0x8b, 0x6d, 0xcd, 0xb0, 0x1f, 0xa7,
+ 0xb3, 0x7b, 0x95, 0x4d, 0x5d, 0x2b, 0xec, 0xc7, 0x69, 0xfc, 0x61, 0x42,
+ 0x80, 0x19, 0xda, 0x87, 0x09, 0x72, 0xcd, 0x30, 0xbe, 0x3a, 0xfc, 0xfa,
+ 0x6a, 0x69, 0xee, 0x7d, 0x7a, 0x77, 0x2f, 0x85, 0xde, 0x3c, 0xf7, 0x01,
+ 0xc2, 0xb4, 0x69, 0xc3, 0x95, 0xa6, 0x3f, 0x93, 0x3e, 0x6f, 0xc6, 0x82,
+ 0xa9, 0x8d, 0xce, 0x87, 0x11, 0x45, 0xdc, 0x7d, 0x14, 0x25, 0xd3, 0xe4,
+ 0x97, 0xaf, 0x25, 0x5e, 0x53, 0x4e, 0x31, 0xfc, 0xb3, 0x74, 0x2b, 0x3e,
+ 0x48, 0xa1, 0x37, 0x49, 0xac, 0xfe, 0x1e, 0xfc, 0xfb, 0x54, 0x9a, 0x8f,
+ 0xbe, 0xd4, 0xbc, 0x9b, 0xeb, 0xaf, 0xb7, 0x01, 0xa3, 0xbd, 0x9f, 0x46,
+ 0xf3, 0xda, 0x60, 0xd7, 0x46, 0x9b, 0xfd, 0xf3, 0xd7, 0x27, 0xdf, 0x9f,
+ 0x6d, 0x35, 0xb1, 0xae, 0xb9, 0x50, 0xa1, 0x17, 0xd4, 0xe2, 0x68, 0x3b,
+ 0x4b, 0xf5, 0x1b, 0x8b, 0x8e, 0xeb, 0xaa, 0x38, 0x81, 0x48, 0x7c, 0x67,
+ 0x2c, 0x66, 0x28, 0x12, 0xa9, 0xb9, 0x9e, 0xba, 0x63, 0x7b, 0xfc, 0x54,
+ 0x1a, 0x8f, 0xed, 0xe1, 0x23, 0x2b, 0x3d, 0xeb, 0xeb, 0x39, 0x88, 0xe6,
+ 0x7a, 0xcf, 0xad, 0x0e, 0xe0, 0x98, 0x47, 0x1f, 0xa8, 0xbc, 0x12, 0x96,
+ 0x6c, 0x4d, 0x75, 0xa5, 0x5e, 0x6a, 0xdb, 0xe6, 0x95, 0x59, 0xbf, 0xdf,
+ 0x26, 0x7e, 0x1a, 0x60, 0x6a, 0xa7, 0xf1, 0x65, 0x5b, 0xf7, 0x70, 0xe1,
+ 0xc1, 0xa3, 0x10, 0x77, 0x0f, 0x03, 0x60, 0xd0, 0xfc, 0xc5, 0x32, 0x60,
+ 0x13, 0xcb, 0x29, 0xe9, 0xa9, 0x0f, 0xb8, 0xb0, 0xee, 0x83, 0x71, 0x62,
+ 0x6f, 0xaa, 0x4f, 0xe5, 0x27, 0xa8, 0x83, 0x9d, 0x7c, 0x54, 0xf6, 0xe9,
+ 0x25, 0x01, 0x98, 0xd6, 0xef, 0xc1, 0x39, 0xff, 0x73, 0x60, 0x30, 0x1c,
+ 0x3f, 0x7b, 0x00, 0x07, 0xe3, 0xff, 0xc2, 0x60, 0xfc, 0x5f, 0x18, 0x8c,
+ 0x0f, 0x87, 0xc1, 0x70, 0x25, 0xa8, 0x87, 0xe0, 0x39, 0x3c, 0x58, 0x8e,
+ 0x5d, 0xa1, 0x81, 0x7e, 0x28, 0xaa, 0x83, 0xdf, 0xc8, 0x47, 0xc4, 0x76,
+ 0xa8, 0xb5, 0xbb, 0x54, 0x36, 0xfb, 0x2a, 0xc4, 0x61, 0x90, 0x64, 0xb3,
+ 0xa1, 0x40, 0x55, 0x1f, 0xe2, 0xbf, 0xcb, 0xe0, 0xd4, 0xeb, 0x69, 0x63,
+ 0x4e, 0x5e, 0x80, 0x34, 0xc3, 0x96, 0x12, 0x6b, 0xfc, 0x8b, 0x7c, 0x50,
+ 0x3c, 0x39, 0x4d, 0xe1, 0x30, 0xaa, 0xf0, 0xb0, 0x3e, 0xf5, 0xf6, 0x2f,
+ 0xdf, 0xfd, 0xda, 0x50, 0x3a, 0xe5, 0x55, 0xb1, 0xc0, 0x52, 0xb5, 0x77,
+ 0x9d, 0x87, 0x8a, 0x53, 0xb5, 0xf6, 0x96, 0x6d, 0xd8, 0xa3, 0xfd, 0xe0,
+ 0x86, 0x95, 0x93, 0x98, 0xb6, 0x01, 0x41, 0xf8, 0x3d, 0x27, 0x81, 0xbd,
+ 0x98, 0x1b, 0xcf, 0x7d, 0x80, 0xaa, 0xdf, 0xd2, 0xf3, 0x8a, 0x3a, 0x6a,
+ 0x8d, 0xe6, 0x9a, 0x99, 0xcd, 0xed, 0x3a, 0x7f, 0xa3, 0x9b, 0x07, 0x6e,
+ 0x5a, 0x63, 0xac, 0x1f, 0xa8, 0x02, 0x35, 0x9b, 0x5b, 0x5f, 0x07, 0xa2,
+ 0x16, 0x16, 0x15, 0x96, 0x3a, 0xce, 0x80, 0xd9, 0x93, 0x7b, 0x74, 0xf9,
+ 0xde, 0x35, 0x1e, 0xfe, 0x58, 0x1b, 0xd8, 0x6c, 0xb6, 0x4d, 0x9e, 0x8d,
+ 0xfd, 0x6c, 0xb5, 0x25, 0x9b, 0x28, 0x85, 0x37, 0x9a, 0xdb, 0xe8, 0x74,
+ 0x16, 0xb8, 0x0d, 0x3f, 0x60, 0x6b, 0x9b, 0xb3, 0xf8, 0xe0, 0x80, 0x8e,
+ 0x60, 0xab, 0x1c, 0xae, 0xdb, 0xc8, 0x14, 0xe7, 0xad, 0x0e, 0x05, 0x74,
+ 0x3c, 0x0d, 0x5a, 0xe3, 0xaa, 0x49, 0xb9, 0xbb, 0x6f, 0x5d, 0xdc, 0xf2,
+ 0xcb, 0x02, 0xb1, 0xfa, 0x43, 0xee, 0x6e, 0x16, 0xe7, 0xfa, 0xa6, 0x6e,
+ 0x85, 0x84, 0xba, 0xd2, 0x5b, 0x14, 0x44, 0x99, 0x96, 0xaa, 0x42, 0x99,
+ 0x58, 0x6d, 0xbd, 0x84, 0x03, 0xd8, 0xd5, 0x54, 0x0b, 0xc8, 0x25, 0x17,
+ 0x52, 0xae, 0x10, 0x96, 0x4e, 0xb5, 0x81, 0x92, 0x44, 0x9a, 0xdd, 0xde,
+ 0x3e, 0xd7, 0x5d, 0xa1, 0xd8, 0x73, 0x10, 0xb3, 0x64, 0x9c, 0x4d, 0x17,
+ 0x0b, 0x0f, 0x60, 0x8a, 0xd8, 0xe7, 0xea, 0x47, 0x02, 0x46, 0x9b, 0x8d,
+ 0xf4, 0xf9, 0x5e, 0xf4, 0x06, 0xed, 0xd7, 0x58, 0x95, 0x1d, 0xc7, 0x43,
+ 0xd2, 0x12, 0xb4, 0x1d, 0xc9, 0xf7, 0xa1, 0xe6, 0x34, 0x87, 0x8b, 0x33,
+ 0xbf, 0x80, 0xd9, 0xbf, 0x7d, 0x73, 0xea, 0x67, 0xe5, 0xe8, 0x86, 0x52,
+ 0x12, 0x73, 0x99, 0x6e, 0x8f, 0xf2, 0x61, 0xb9, 0x8d, 0xbb, 0xa6, 0x1d,
+ 0x5f, 0x55, 0xd3, 0x49, 0xd0, 0x36, 0xae, 0x97, 0x17, 0x89, 0x53, 0x52,
+ 0x14, 0x60, 0x72, 0x27, 0x25, 0x8d, 0x2d, 0xa0, 0x03, 0x11, 0x59, 0xe6,
+ 0xd4, 0xe4, 0x81, 0xef, 0xbd, 0x4a, 0xb8, 0x04, 0x75, 0x05, 0x13, 0x82,
+ 0xff, 0x43, 0xa1, 0x86, 0x42, 0xed, 0x03, 0xf5, 0x14, 0x92, 0x68, 0x94,
+ 0xc1, 0x59, 0xa1, 0xf2, 0x03, 0x0e, 0x94, 0x95, 0xbf, 0x37, 0x0c, 0x42,
+ 0x5e, 0x15, 0x77, 0x78, 0x81, 0x91, 0x3c, 0x28, 0x9b, 0xd1, 0xd8, 0x71,
+ 0x93, 0x6c, 0xcd, 0x40, 0xed, 0x4c, 0x59, 0xcd, 0x23, 0x25, 0x24, 0xb6,
+ 0x22, 0x4a, 0xd9, 0x23, 0xc9, 0xcf, 0x7b, 0xbd, 0xd6, 0xc7, 0x02, 0xb3,
+ 0x7f, 0x77, 0x74, 0xd2, 0x7f, 0xb7, 0xbb, 0xf7, 0xe5, 0xbb, 0xef, 0x8f,
+ 0x5f, 0xbd, 0xeb, 0xbf, 0x38, 0x42, 0xe9, 0xfe, 0x81, 0x57, 0x6d, 0xbd,
+ 0x6d, 0x09, 0xcb, 0xa2, 0x88, 0x88, 0x3a, 0xa4, 0xe7, 0x6e, 0xcb, 0xb9,
+ 0x45, 0xc5, 0xf8, 0x3e, 0x96, 0x5b, 0xf7, 0xd1, 0x0f, 0x31, 0x1b, 0xba,
+ 0xed, 0x7c, 0xfe, 0x6d, 0x31, 0x43, 0xe9, 0xbf, 0x39, 0xff, 0x34, 0x4a,
+ 0x30, 0x74, 0x42, 0x98, 0xa0, 0xab, 0xaf, 0x4f, 0x78, 0xd2, 0x60, 0x22,
+ 0x1c, 0x32, 0xe0, 0xc1, 0xd2, 0xed, 0x30, 0x0f, 0x7f, 0x80, 0x69, 0xc2,
+ 0x6d, 0xe6, 0xde, 0x16, 0x8a, 0x4f, 0xb7, 0x1d, 0x66, 0x2c, 0x75, 0x93,
+ 0xd0, 0x67, 0xdc, 0x11, 0xb2, 0x52, 0x05, 0x75, 0x86, 0xda, 0x5e, 0xd0,
+ 0x63, 0x1f, 0xb6, 0x0f, 0xd4, 0xc4, 0xe7, 0x0d, 0x10, 0xd2, 0x51, 0x94,
+ 0x53, 0x92, 0x57, 0x3f, 0xd1, 0xe2, 0xeb, 0x26, 0xdf, 0x6f, 0x03, 0xae,
+ 0x77, 0x97, 0xad, 0xfb, 0xf5, 0xee, 0x47, 0x90, 0x19, 0xb9, 0x9d, 0x4f,
+ 0x65, 0xf4, 0xe4, 0xd6, 0x3f, 0xd6, 0x62, 0x2e, 0x5b, 0xb4, 0xb7, 0xdd,
+ 0xba, 0x71, 0xf5, 0xb0, 0x56, 0x06, 0xd0, 0xa3, 0x5f, 0xa7, 0x98, 0x9d,
+ 0x53, 0xcc, 0xad, 0x86, 0xcc, 0xc2, 0x32, 0x98, 0xa3, 0xeb, 0x2e, 0xaf,
+ 0xf2, 0xd8, 0x5a, 0xc6, 0x91, 0xab, 0x2b, 0x6b, 0x4d, 0x90, 0x7e, 0xff,
+ 0xfc, 0x65, 0xcc, 0x49, 0x65, 0x23, 0xa9, 0x79, 0xc9, 0x85, 0x52, 0x19,
+ 0xcc, 0x41, 0x4b, 0x15, 0xbf, 0x6e, 0xd1, 0xab, 0x29, 0xbf, 0x33, 0x50,
+ 0x01, 0x94, 0xe3, 0x15, 0xb4, 0xc8, 0x4e, 0xe5, 0xe2, 0x2b, 0xc3, 0x99,
+ 0x99, 0xf8, 0xd9, 0x53, 0x4b, 0x66, 0x4e, 0x96, 0x27, 0x92, 0x2b, 0xdd,
+ 0x22, 0xbd, 0x03, 0x13, 0x58, 0x44, 0x02, 0x90, 0x57, 0xa5, 0x90, 0x6c,
+ 0x7f, 0x0e, 0x32, 0x8c, 0x63, 0x5c, 0x3a, 0x88, 0x3a, 0xf1, 0xdb, 0xe8,
+ 0xa0, 0xe3, 0x2d, 0xd1, 0x19, 0x02, 0x5f, 0x94, 0x55, 0x3a, 0xa5, 0x48,
+ 0xa0, 0x82, 0xf4, 0x0d, 0x18, 0xc2, 0xfb, 0xd2, 0x35, 0x47, 0x5d, 0x61,
+ 0x19, 0x5f, 0xeb, 0x0b, 0x50, 0x4b, 0x45, 0x71, 0xe9, 0x65, 0x12, 0x71,
+ 0x94, 0x07, 0x1b, 0xce, 0x60, 0xcf, 0x86, 0x18, 0xdd, 0x82, 0xe2, 0x2e,
+ 0xc6, 0xb7, 0x98, 0x88, 0x27, 0x36, 0x99, 0xcd, 0x28, 0xa9, 0x52, 0xd2,
+ 0x52, 0x31, 0xaf, 0x72, 0x18, 0xc8, 0xc9, 0xe6, 0x9c, 0xba, 0x92, 0x5b,
+ 0x9c, 0xe7, 0x65, 0x99, 0x0d, 0x40, 0x98, 0xbc, 0x14, 0x41, 0xae, 0x4c,
+ 0x39, 0xd1, 0x9d, 0xeb, 0x55, 0xe0, 0x5a, 0x92, 0x84, 0x6b, 0x0b, 0x22,
+ 0x35, 0x97, 0x88, 0x66, 0x4a, 0xb1, 0x3d, 0x1c, 0x87, 0x23, 0x98, 0x24,
+ 0x30, 0x3e, 0x85, 0x26, 0xb9, 0xce, 0xb0, 0x0b, 0x4d, 0x25, 0x4e, 0xa2,
+ 0x69, 0xce, 0x4b, 0x4f, 0xc6, 0xb6, 0xa6, 0x34, 0x38, 0xc1, 0x1a, 0x7d,
+ 0xc0, 0x48, 0xfa, 0x88, 0xd8, 0x53, 0xa6, 0xb3, 0x32, 0x23, 0x1c, 0x27,
+ 0x42, 0x24, 0xb1, 0x18, 0x51, 0x45, 0x8a, 0x79, 0x9f, 0xd7, 0xa9, 0x6c,
+ 0xab, 0x98, 0x72, 0x5b, 0x91, 0x62, 0x10, 0x70, 0x65, 0x9a, 0x21, 0x72,
+ 0x3d, 0x21, 0xbd, 0x51, 0x0d, 0x57, 0x65, 0x30, 0xd4, 0x63, 0x84, 0x7c,
+ 0xc5, 0x0f, 0xfd, 0xe8, 0x2d, 0x91, 0x7a, 0x88, 0xcc, 0x3e, 0x77, 0xf4,
+ 0xb3, 0xa1, 0xf5, 0x83, 0xf9, 0x87, 0x7a, 0xca, 0xf0, 0xa0, 0x38, 0x9c,
+ 0xc7, 0x61, 0xf6, 0x0f, 0x06, 0x3c, 0x5b, 0x06, 0xff, 0xe5, 0x40, 0x40,
+ 0x79, 0x25, 0x2e, 0xc3, 0xb8, 0x5f, 0xe3, 0xec, 0x96, 0x90, 0xd0, 0xfd,
+ 0x3a, 0xd9, 0x4d, 0x0c, 0x2d, 0xc4, 0x5e, 0x60, 0xb7, 0x93, 0x59, 0xe2,
+ 0x8a, 0xaa, 0x41, 0x51, 0x89, 0x16, 0x37, 0x03, 0xef, 0xad, 0xa7, 0x2c,
+ 0x59, 0x5c, 0xb0, 0x1a, 0x12, 0x98, 0x05, 0x02, 0x43, 0x62, 0xb2, 0x30,
+ 0x60, 0x84, 0xd6, 0xc7, 0x51, 0x8d, 0x09, 0x8e, 0xc0, 0xd7, 0x6e, 0xc6,
+ 0xd9, 0xb0, 0x1d, 0x04, 0xcc, 0xcf, 0xb8, 0xcd, 0x6e, 0xb5, 0x9c, 0x3b,
+ 0xf6, 0x92, 0x56, 0x0c, 0x1c, 0x61, 0x31, 0x54, 0xc6, 0xda, 0xbf, 0x4e,
+ 0xa1, 0x0f, 0xc4, 0x45, 0x89, 0x22, 0x01, 0xe8, 0x11, 0x05, 0xed, 0xc7,
+ 0xaf, 0x28, 0xf0, 0xae, 0x17, 0xa5, 0xbd, 0xcb, 0x9e, 0x33, 0x01, 0xf3,
+ 0xe6, 0x36, 0xba, 0x45, 0xb6, 0xab, 0x7c, 0x9b, 0xbb, 0xed, 0xe1, 0x8f,
+ 0x2f, 0xda, 0x51, 0xde, 0x4c, 0x5a, 0xed, 0x75, 0x96, 0x18, 0x72, 0xb3,
+ 0x7b, 0xc1, 0xdb, 0x15, 0x51, 0xb5, 0x58, 0x29, 0x8e, 0xd3, 0x96, 0x4b,
+ 0xc2, 0x95, 0x56, 0x03, 0x10, 0xd1, 0xaf, 0xfb, 0xfd, 0xc0, 0xfa, 0x14,
+ 0xe9, 0x30, 0xbf, 0x9c, 0x65, 0xbf, 0x51, 0x5d, 0x52, 0xb4, 0x73, 0x34,
+ 0x01, 0x66, 0x6a, 0x68, 0x6f, 0x9a, 0x57, 0xa9, 0xd9, 0xbb, 0x3e, 0x7f,
+ 0x27, 0x5c, 0x0a, 0xba, 0x75, 0x51, 0x8e, 0x40, 0x20, 0x52, 0xd9, 0xa6,
+ 0x92, 0xa2, 0x4e, 0x29, 0xc1, 0x3d, 0x15, 0x40, 0x35, 0x83, 0x5e, 0xc3,
+ 0x1d, 0x7b, 0xb4, 0xa3, 0x44, 0x27, 0xb5, 0x0b, 0xff, 0x03, 0xa0, 0xd9,
+ 0x5c, 0x2b, 0xb8, 0x16, 0x8f, 0x2f, 0xb9, 0x30, 0x26, 0x9e, 0xbc, 0x60,
+ 0xb9, 0x7a, 0x53, 0x0f, 0xd8, 0xd7, 0x0b, 0x74, 0x19, 0x70, 0x8d, 0x59,
+ 0x92, 0xe8, 0x49, 0x41, 0xce, 0x22, 0xdd, 0x28, 0x69, 0x95, 0x9d, 0x16,
+ 0x4d, 0xb1, 0x43, 0x35, 0x12, 0x24, 0xa1, 0x12, 0xf7, 0xb6, 0x88, 0x1e,
+ 0xb2, 0x49, 0x13, 0x00, 0xbb, 0xba, 0xe0, 0xfd, 0x11, 0xc6, 0x7b, 0x6a,
+ 0x59, 0x4f, 0x09, 0xbc, 0xc4, 0xb3, 0x22, 0x85, 0x4e, 0x52, 0x2e, 0xf1,
+ 0x8e, 0x83, 0xb2, 0x27, 0x9e, 0xf9, 0x01, 0xa1, 0x59, 0x78, 0x05, 0xbc,
+ 0x13, 0xb5, 0xb0, 0x0c, 0x52, 0xc5, 0x93, 0x25, 0x9a, 0x82, 0x61, 0x60,
+ 0x03, 0x3d, 0xac, 0x18, 0x8e, 0x98, 0x9a, 0x1a, 0xe3, 0x09, 0x5f, 0xe3,
+ 0x31, 0x6d, 0x49, 0x27, 0x57, 0x38, 0x40, 0x77, 0x88, 0x9c, 0xea, 0x2b,
+ 0xc1, 0xa0, 0x89, 0x02, 0x51, 0xd4, 0xef, 0x70, 0x32, 0x8d, 0x25, 0x1e,
+ 0x69, 0x49, 0xa9, 0x42, 0x12, 0x83, 0x16, 0xb3, 0x19, 0x96, 0x0a, 0x12,
+ 0x88, 0x46, 0x43, 0x2b, 0x5d, 0x64, 0x6e, 0x98, 0x0d, 0x6e, 0xc2, 0x0c,
+ 0x84, 0x81, 0xc3, 0x0b, 0x5e, 0x68, 0x68, 0x3a, 0x69, 0x33, 0xb8, 0xfc,
+ 0xff, 0x07, 0x9a, 0x9f, 0xbd, 0x84, 0x88, 0x37, 0x7a, 0x57, 0x90, 0x49,
+ 0xc1, 0xbf, 0x01, 0x26, 0x20, 0x25, 0x26, 0x85, 0xf0, 0x91, 0xc4, 0x3d,
+ 0x8f, 0xac, 0x77, 0x88, 0xba, 0x91, 0xc4, 0x0b, 0x37, 0xd3, 0xf6, 0x95,
+ 0x37, 0x6e, 0x0a, 0xb7, 0xd8, 0x0a, 0xc0, 0xa0, 0x50, 0xc0, 0x3a, 0x22,
+ 0xcd, 0xe3, 0xa2, 0xd1, 0x1d, 0xff, 0x47, 0xb3, 0x1d, 0x4b, 0x74, 0xce,
+ 0xcf, 0x99, 0xc7, 0x2f, 0x52, 0x87, 0x87, 0x48, 0xb8, 0xa6, 0xc7, 0x82,
+ 0x2e, 0xa6, 0x7b, 0x44, 0xeb, 0xec, 0xc2, 0xc5, 0x71, 0xe8, 0xc8, 0x22,
+ 0xdf, 0x04, 0x84, 0x11, 0x2f, 0x8c, 0x80, 0xc1, 0x4b, 0xf1, 0x55, 0xbd,
+ 0x3c, 0xa5, 0x9a, 0xb0, 0xcf, 0x8f, 0xc3, 0xa7, 0x19, 0x41, 0x6b, 0x88,
+ 0x13, 0x1b, 0xde, 0x8b, 0x78, 0x12, 0xf8, 0x72, 0x0b, 0xf7, 0x4d, 0xd9,
+ 0x52, 0xab, 0x66, 0x55, 0xb8, 0x6c, 0x06, 0x69, 0x75, 0x83, 0x22, 0x36,
+ 0x29, 0x12, 0x5a, 0xb8, 0xd3, 0x61, 0x50, 0xc6, 0xec, 0x0b, 0x12, 0x58,
+ 0x38, 0x84, 0xb9, 0x1b, 0x31, 0x80, 0x0c, 0xb2, 0xbb, 0x0a, 0x64, 0x6f,
+ 0x81, 0xd4, 0xc0, 0x6b, 0x4e, 0x33, 0x11, 0x3c, 0xde, 0x10, 0x42, 0xa0,
+ 0xb4, 0x09, 0x15, 0xdc, 0x3f, 0xae, 0x8b, 0x03, 0x73, 0x53, 0x03, 0x59,
+ 0xd4, 0xdc, 0x73, 0x79, 0x70, 0x77, 0xb5, 0x0a, 0x8e, 0xad, 0x7d, 0x22,
+ 0xfd, 0x1b, 0x9b, 0xfe, 0x48, 0x61, 0xc9, 0x5d, 0x9f, 0xe6, 0xd2, 0x86,
+ 0xd4, 0x1a, 0xcf, 0xbb, 0x0e, 0x23, 0x9d, 0x79, 0x25, 0xb6, 0xb8, 0x98,
+ 0x5b, 0xed, 0x92, 0xd1, 0xf2, 0xd8, 0xb5, 0x8e, 0xaa, 0x9a, 0x51, 0xdf,
+ 0xc2, 0xbc, 0x86, 0x32, 0x38, 0x5a, 0x79, 0x3c, 0x3b, 0x3b, 0xe4, 0xdb,
+ 0x64, 0x0e, 0x9f, 0x25, 0x0c, 0x7f, 0x35, 0x4d, 0x46, 0x69, 0x28, 0xc1,
+ 0xa9, 0x41, 0x5d, 0x8d, 0x54, 0x15, 0x9a, 0xb4, 0xe0, 0x4f, 0x97, 0xb6,
+ 0x2a, 0xac, 0x31, 0x0d, 0x4c, 0xbc, 0x78, 0x0b, 0x64, 0xd8, 0x82, 0xea,
+ 0x25, 0x0e, 0x1c, 0xcd, 0x4e, 0x91, 0xc8, 0x42, 0xf7, 0x28, 0xb1, 0xb6,
+ 0x9b, 0xcc, 0x04, 0x84, 0x38, 0x7c, 0x0d, 0x99, 0x39, 0xe6, 0xa1, 0x82,
+ 0xa8, 0xa6, 0x1c, 0x6a, 0x73, 0xfc, 0x02, 0x83, 0x21, 0xe1, 0xfe, 0x75,
+ 0x5f, 0x08, 0xc7, 0x5c, 0x79, 0x4e, 0x25, 0x29, 0x3b, 0xaa, 0xaf, 0x2c,
+ 0x28, 0xee, 0x4e, 0x3b, 0x88, 0x65, 0x3a, 0x71, 0x5b, 0x02, 0x81, 0x1f,
+ 0x44, 0x2e, 0xdb, 0x10, 0x86, 0x8e, 0xfc, 0xd0, 0x20, 0x72, 0x6e, 0xfc,
+ 0x41, 0xe7, 0x43, 0xc6, 0xf5, 0xb1, 0x22, 0xf7, 0x5d, 0xd6, 0x2b, 0x21,
+ 0x5d, 0x81, 0x28, 0xe4, 0xcd, 0x3e, 0xc2, 0xc1, 0xf5, 0x8f, 0xcf, 0xb7,
+ 0xa2, 0xf3, 0x46, 0xb4, 0x16, 0x57, 0x0c, 0x3f, 0xaa, 0xdf, 0xf6, 0x7c,
+ 0x4d, 0xb1, 0x41, 0x66, 0x49, 0x60, 0x4f, 0x26, 0x9c, 0xd2, 0xa4, 0x50,
+ 0x51, 0x16, 0x4a, 0x73, 0xdc, 0x9b, 0x47, 0x54, 0x5b, 0x8b, 0x0b, 0x83,
+ 0x88, 0x95, 0xc5, 0xe5, 0x8d, 0xe8, 0x22, 0x45, 0x4c, 0x58, 0x2a, 0xf0,
+ 0xab, 0xb1, 0x49, 0x1a, 0x53, 0x34, 0xf1, 0x50, 0x42, 0x68, 0xe4, 0x8a,
+ 0xa4, 0xe5, 0x14, 0x3c, 0xa3, 0xce, 0xa9, 0x14, 0x01, 0x5e, 0xc6, 0x7c,
+ 0xb1, 0xd7, 0x10, 0x4c, 0xa3, 0xcb, 0x74, 0x96, 0x86, 0x6a, 0x8d, 0xde,
+ 0x91, 0x6c, 0x27, 0x27, 0x8d, 0xb0, 0x9f, 0xab, 0x54, 0xcf, 0x1b, 0x5e,
+ 0xda, 0x76, 0xc5, 0x64, 0x70, 0x19, 0xc1, 0xdc, 0xf1, 0xc1, 0xf4, 0x96,
+ 0x66, 0xa0, 0x46, 0xb0, 0x01, 0x21, 0xd5, 0x62, 0x1d, 0x49, 0xa2, 0x21,
+ 0x52, 0x42, 0x87, 0xf9, 0xfc, 0x0e, 0x17, 0x03, 0x1e, 0x2b, 0xcb, 0xab,
+ 0x3d, 0xe0, 0xd6, 0x7b, 0xbd, 0x2f, 0x19, 0xbe, 0xfa, 0x0a, 0x64, 0x38,
+ 0xcf, 0x99, 0x59, 0x49, 0xa6, 0x59, 0x56, 0x95, 0xe9, 0x64, 0xdc, 0x6c,
+ 0x4f, 0x14, 0xb3, 0xde, 0x56, 0x8b, 0x03, 0x88, 0x09, 0xe2, 0xb3, 0xc1,
+ 0x21, 0x73, 0xf7, 0x44, 0x13, 0xf0, 0x7b, 0x54, 0xae, 0x53, 0x60, 0xb1,
+ 0x69, 0xf1, 0xf8, 0x2b, 0x92, 0x3c, 0xd7, 0x84, 0x3f, 0x14, 0x23, 0x90,
+ 0x47, 0xe4, 0x44, 0xe3, 0xcf, 0x31, 0xd5, 0xb1, 0x9f, 0xce, 0x46, 0x9c,
+ 0x87, 0x35, 0xc8, 0x60, 0xc7, 0x8a, 0x3b, 0x63, 0x38, 0xaa, 0xf3, 0xc3,
+ 0xe7, 0x8c, 0x97, 0x1e, 0xd1, 0x6b, 0xc1, 0x22, 0x00, 0xa0, 0x78, 0xfe,
+ 0x95, 0x7a, 0x95, 0x06, 0x44, 0xe3, 0x47, 0x71, 0xf2, 0xbb, 0x93, 0xe7,
+ 0x67, 0x6f, 0x4e, 0xea, 0xd0, 0xc1, 0x15, 0x95, 0x74, 0xa4, 0x54, 0xa8,
+ 0xe6, 0xe8, 0xa8, 0xb6, 0x37, 0x97, 0x0b, 0xe0, 0x24, 0xae, 0x0c, 0x2d,
+ 0x7d, 0xd1, 0xf9, 0x0f, 0xcf, 0xcc, 0xe0, 0x32, 0xba, 0xab, 0x68, 0x50,
+ 0xda, 0x62, 0x97, 0x03, 0x2f, 0x3d, 0x41, 0x90, 0x02, 0xf0, 0xb6, 0x7a,
+ 0xc8, 0x85, 0x39, 0xcd, 0x4b, 0x87, 0x47, 0x29, 0x68, 0x9c, 0x38, 0xa8,
+ 0xb5, 0x09, 0x40, 0x22, 0x47, 0xbb, 0x24, 0xd6, 0x1a, 0x30, 0xcd, 0x7a,
+ 0xca, 0x1e, 0x89, 0xbd, 0x54, 0xa6, 0x4e, 0x0c, 0x3c, 0x58, 0x3f, 0x1b,
+ 0x8b, 0x6a, 0xfb, 0xe7, 0x19, 0x07, 0x88, 0x92, 0xd3, 0x96, 0xdf, 0xbb,
+ 0xe6, 0xd1, 0x71, 0xd7, 0x44, 0x08, 0xc4, 0x6f, 0x39, 0xac, 0x6b, 0x14,
+ 0x2a, 0x5b, 0x89, 0xc6, 0x57, 0x62, 0xdc, 0x06, 0x4a, 0xa3, 0x2b, 0x85,
+ 0xd0, 0x35, 0xe2, 0x4f, 0x0a, 0x9f, 0x4f, 0x9c, 0x75, 0x96, 0x0e, 0x37,
+ 0xcb, 0xad, 0xf6, 0x99, 0x98, 0x65, 0x95, 0x09, 0x6d, 0xfc, 0x71, 0xa3,
+ 0xae, 0xcd, 0x59, 0x5d, 0x94, 0x2e, 0xa8, 0x04, 0x87, 0xe0, 0xe9, 0x0e,
+ 0x82, 0xee, 0x21, 0x36, 0x5d, 0x3a, 0x4b, 0xfa, 0x9a, 0xb7, 0x32, 0xcb,
+ 0xb3, 0x61, 0x75, 0x91, 0x7a, 0x01, 0x5c, 0x4f, 0x23, 0xc3, 0x89, 0x88,
+ 0xc1, 0x45, 0x04, 0xab, 0x7c, 0x8e, 0x32, 0x2c, 0x97, 0x0c, 0x18, 0x83,
+ 0x46, 0x4a, 0xc9, 0x41, 0x66, 0xd1, 0xf1, 0x49, 0xb8, 0x18, 0x7d, 0xcf,
+ 0xc0, 0x6c, 0x81, 0x60, 0x8f, 0x18, 0x93, 0x31, 0xae, 0x2d, 0x04, 0x36,
+ 0x01, 0x87, 0xbe, 0x75, 0x89, 0x10, 0x4c, 0xae, 0x0c, 0x28, 0x75, 0x59,
+ 0xf9, 0x1e, 0xb6, 0xfd, 0x0f, 0x40, 0x6e, 0x54, 0x49, 0xeb, 0x26, 0x2b,
+ 0x81, 0xd1, 0x4a, 0xdb, 0x12, 0x9f, 0x2a, 0xe9, 0x9e, 0x3a, 0x4a, 0xb2,
+ 0x1b, 0xe5, 0xb3, 0x16, 0xcc, 0x33, 0x5d, 0x09, 0xe6, 0x3f, 0x68, 0xf2,
+ 0x2e, 0x52, 0xab, 0x8a, 0x1b, 0xb3, 0x20, 0x05, 0x85, 0xb6, 0x2d, 0x33,
+ 0x45, 0x8b, 0xe0, 0x31, 0x2f, 0xef, 0x66, 0x15, 0xf2, 0x64, 0xbe, 0x3e,
+ 0x86, 0x79, 0x41, 0xf2, 0x0f, 0xd2, 0xa8, 0x3d, 0xb2, 0x25, 0xd5, 0x14,
+ 0xf9, 0xea, 0xf1, 0x57, 0xb8, 0xd0, 0x7e, 0x89, 0x82, 0x99, 0x66, 0x32,
+ 0xd2, 0xd1, 0xe3, 0x19, 0xa1, 0x8e, 0x68, 0xe6, 0x50, 0x1b, 0x35, 0xd1,
+ 0x02, 0xea, 0xcb, 0x29, 0x82, 0xae, 0x7a, 0x82, 0x0c, 0x5d, 0xb5, 0xd2,
+ 0xc6, 0x03, 0xf1, 0xe8, 0xfc, 0xdc, 0x53, 0x6c, 0x13, 0x55, 0x12, 0xf5,
+ 0xdc, 0xa8, 0x2a, 0xd0, 0x8b, 0xde, 0xce, 0x28, 0xd7, 0x19, 0xd7, 0xfb,
+ 0x39, 0xc2, 0xbf, 0xb2, 0x98, 0x35, 0x83, 0x5d, 0x83, 0x6d, 0xc6, 0x8a,
+ 0x28, 0x01, 0xd6, 0xc6, 0x7c, 0xd4, 0x4e, 0x48, 0xaf, 0x97, 0x66, 0x88,
+ 0x2d, 0xb1, 0x03, 0xe1, 0x98, 0xca, 0x0e, 0x9f, 0x67, 0x5e, 0x09, 0x11,
+ 0x14, 0x21, 0xd8, 0x20, 0x07, 0xd3, 0xa1, 0xb6, 0x31, 0x84, 0x3a, 0x9d,
+ 0x4c, 0x18, 0xfa, 0x1a, 0x5b, 0x20, 0x7d, 0x99, 0x61, 0xd0, 0x29, 0x69,
+ 0xd8, 0xb5, 0x23, 0x78, 0x37, 0x32, 0xa1, 0xb9, 0xf7, 0x10, 0x0b, 0x52,
+ 0x4b, 0xb6, 0x28, 0x28, 0xa7, 0x06, 0x12, 0x21, 0x08, 0xad, 0x35, 0x2c,
+ 0xd2, 0xea, 0xfc, 0x43, 0xb9, 0xb4, 0xe7, 0xa1, 0xc1, 0x29, 0x7a, 0xb1,
+ 0x3f, 0x09, 0x2e, 0x34, 0x3a, 0x2e, 0x98, 0xb3, 0x84, 0xa1, 0x19, 0x51,
+ 0x9c, 0xe7, 0x07, 0xf5, 0x9c, 0x94, 0x69, 0x55, 0xda, 0x4b, 0x33, 0x21,
+ 0xbe, 0x4a, 0x7b, 0x46, 0x60, 0x9e, 0x24, 0x9e, 0xb7, 0x37, 0x87, 0xeb,
+ 0x24, 0x70, 0xa8, 0x86, 0xa3, 0x11, 0xd5, 0xcf, 0x46, 0xac, 0x3a, 0x1c,
+ 0xd2, 0x78, 0xd2, 0x5b, 0x92, 0x79, 0x81, 0x44, 0xbe, 0x09, 0xd7, 0x33,
+ 0xb7, 0x92, 0x0b, 0x48, 0x3b, 0x45, 0x45, 0xd2, 0x15, 0xbd, 0xc9, 0x76,
+ 0x9e, 0x92, 0xf1, 0xac, 0x25, 0x9a, 0x1a, 0xc8, 0xe1, 0xdd, 0x65, 0x5a,
+ 0xe1, 0xf7, 0x9b, 0xfb, 0x5b, 0xb4, 0x1c, 0xe1, 0xe6, 0xe6, 0x08, 0x85,
+ 0x4f, 0xf0, 0xd7, 0xf5, 0x41, 0x18, 0x38, 0x6c, 0x10, 0xe4, 0xac, 0x2b,
+ 0xf4, 0xe9, 0x7e, 0x6f, 0xc7, 0x13, 0x3b, 0x86, 0x57, 0x97, 0xc5, 0x3c,
+ 0xba, 0x04, 0x95, 0x61, 0xbe, 0x62, 0x55, 0xe5, 0x51, 0x6f, 0x59, 0xf9,
+ 0xdd, 0x97, 0xcf, 0xf4, 0xcc, 0x19, 0x11, 0x15, 0xcd, 0x53, 0xe1, 0xe6,
+ 0x9a, 0x4b, 0xa9, 0x04, 0x6b, 0x9a, 0xb2, 0x36, 0x06, 0x5d, 0x79, 0xfe,
+ 0x2e, 0xdc, 0x5c, 0x6d, 0x43, 0xb8, 0x0d, 0x6d, 0x98, 0x0e, 0xe0, 0x08,
+ 0x1a, 0x9b, 0x26, 0x7c, 0xc4, 0x2e, 0x81, 0xf1, 0x69, 0x37, 0x7e, 0xb6,
+ 0xff, 0xd5, 0x34, 0x1f, 0x21, 0x64, 0x6a, 0xba, 0x7a, 0x2d, 0xf0, 0x49,
+ 0xb3, 0x18, 0x0a, 0x36, 0x5b, 0x3a, 0x04, 0xc5, 0xed, 0x0c, 0x32, 0xde,
+ 0x6c, 0xff, 0x12, 0x6d, 0x5a, 0x42, 0x24, 0x1f, 0x1c, 0x9b, 0xa7, 0x37,
+ 0xdd, 0x29, 0xcc, 0xa2, 0x7c, 0x58, 0x39, 0x33, 0xc0, 0x07, 0x5a, 0x08,
+ 0x96, 0xee, 0xae, 0xc0, 0xcc, 0x10, 0x77, 0x94, 0x2c, 0x5f, 0xcb, 0x67,
+ 0xc6, 0x0f, 0x7a, 0x9b, 0x0c, 0x1f, 0xf2, 0x8d, 0xe8, 0xed, 0x70, 0xfb,
+ 0xcc, 0x42, 0x3b, 0x4c, 0x23, 0x68, 0x6e, 0x30, 0x2d, 0x19, 0xbb, 0xff,
+ 0xf0, 0xf1, 0xb8, 0xe5, 0xec, 0xe8, 0x0e, 0xd3, 0x93, 0x4b, 0x37, 0x58,
+ 0x7a, 0xf1, 0x56, 0x61, 0x82, 0x4e, 0xa0, 0x45, 0x31, 0x4c, 0xdf, 0xb1,
+ 0x68, 0x42, 0x05, 0x68, 0xdf, 0x2d, 0x5f, 0x90, 0x89, 0xd4, 0xa0, 0xb8,
+ 0x9b, 0xa2, 0x24, 0x6f, 0x19, 0xf0, 0x90, 0x1c, 0x60, 0x28, 0xaa, 0x51,
+ 0x4d, 0x06, 0xd0, 0x36, 0xe8, 0x7b, 0xd6, 0xf8, 0x5b, 0xc8, 0xde, 0xf6,
+ 0x17, 0x99, 0x7a, 0x4b, 0xf3, 0x1c, 0x46, 0xad, 0xf5, 0x8a, 0xd8, 0xc0,
+ 0xe6, 0x0c, 0x91, 0x9e, 0x6b, 0x59, 0x90, 0xa0, 0xb5, 0x79, 0xfa, 0x1e,
+ 0x61, 0x3b, 0x8d, 0x5c, 0xf6, 0x6e, 0xe6, 0x7b, 0x98, 0x5d, 0x3a, 0xe6,
+ 0xc7, 0x75, 0xbb, 0x79, 0x4e, 0x82, 0xd0, 0x6b, 0x50, 0xd2, 0xdc, 0x9d,
+ 0x0e, 0x88, 0x5b, 0x75, 0xa9, 0xeb, 0x1d, 0xa3, 0x4b, 0xcb, 0x89, 0xf4,
+ 0x46, 0x77, 0x5f, 0x16, 0x3e, 0x5d, 0xc2, 0xc2, 0x6b, 0x90, 0xc6, 0x2e,
+ 0x23, 0x5f, 0x42, 0x86, 0xb5, 0x39, 0xdc, 0x93, 0x8b, 0x87, 0x9b, 0x43,
+ 0x21, 0x67, 0x39, 0x17, 0x27, 0xc1, 0xa3, 0xc1, 0xc3, 0x3f, 0x25, 0x0b,
+ 0x47, 0x4f, 0xb5, 0x5a, 0xe0, 0xe1, 0x57, 0x5d, 0x34, 0x15, 0xef, 0x08,
+ 0xe9, 0x64, 0x50, 0xe6, 0x93, 0x05, 0x5a, 0x93, 0x92, 0xea, 0x8a, 0x77,
+ 0x68, 0xac, 0xe3, 0x6c, 0xdd, 0xcf, 0x59, 0x65, 0x04, 0x7d, 0x43, 0x0c,
+ 0xde, 0x8e, 0xc2, 0x63, 0xd8, 0x1c, 0xd3, 0xac, 0x50, 0x78, 0xfb, 0xb6,
+ 0xca, 0xd3, 0x76, 0x88, 0x2c, 0x87, 0xd8, 0x4d, 0x29, 0x02, 0x74, 0xd7,
+ 0x7e, 0x87, 0x68, 0xb7, 0x4d, 0x2e, 0x33, 0x4a, 0x51, 0xf2, 0x97, 0xf3,
+ 0x85, 0xd9, 0x69, 0xab, 0x99, 0x15, 0x8f, 0xbc, 0x95, 0x70, 0x8b, 0xe9,
+ 0x0a, 0x82, 0x85, 0x07, 0xec, 0xac, 0xb8, 0x24, 0x8c, 0x99, 0x95, 0xc7,
+ 0xec, 0x84, 0x00, 0x5b, 0x56, 0xbe, 0x6d, 0x04, 0xb5, 0x83, 0xbd, 0xe4,
+ 0x4c, 0xf3, 0x93, 0xc1, 0xe1, 0xd8, 0xc5, 0x85, 0xdd, 0x2d, 0xee, 0xec,
+ 0xc8, 0x5a, 0x68, 0xfd, 0xae, 0xf1, 0x96, 0x2c, 0x4f, 0xd7, 0x71, 0x5a,
+ 0x91, 0xad, 0x03, 0x0d, 0x43, 0x3e, 0x6d, 0x28, 0xcf, 0x5c, 0x8b, 0xe7,
+ 0xa2, 0x3d, 0x61, 0x52, 0x2b, 0x14, 0x27, 0x62, 0xe2, 0x03, 0x00, 0x46,
+ 0x3c, 0x6b, 0x87, 0x98, 0x39, 0xb8, 0xc5, 0xce, 0xb3, 0x93, 0xd3, 0x13,
+ 0xda, 0x8b, 0x4e, 0xe4, 0xdb, 0x39, 0xc6, 0x79, 0x6e, 0xda, 0xb1, 0x36,
+ 0x8e, 0x1f, 0xbb, 0xb6, 0x80, 0xb9, 0x3b, 0x46, 0x5c, 0x15, 0x90, 0x63,
+ 0xdb, 0xb1, 0xd2, 0x9e, 0x61, 0xa5, 0x8a, 0x21, 0x85, 0x4c, 0x68, 0xb5,
+ 0x8b, 0x46, 0xb5, 0x1e, 0xf6, 0x8c, 0x1b, 0x9f, 0x9e, 0xf8, 0xd2, 0xe1,
+ 0xd0, 0x7f, 0xf9, 0x08, 0x43, 0xd8, 0x9a, 0xc6, 0xd3, 0x8c, 0xca, 0x08,
+ 0xe4, 0x62, 0x6e, 0x92, 0x6a, 0x43, 0x57, 0x09, 0x03, 0x6b, 0x93, 0x85,
+ 0x14, 0xc3, 0x8c, 0x58, 0xb5, 0x18, 0xd7, 0xa2, 0xd9, 0xa3, 0x7c, 0xd2,
+ 0xdc, 0x6f, 0xe3, 0xa2, 0x07, 0xb6, 0xa0, 0x16, 0xaa, 0x2f, 0x96, 0x04,
+ 0xc3, 0x99, 0x43, 0x85, 0x4d, 0xd2, 0xa4, 0x25, 0xc1, 0x93, 0x52, 0xee,
+ 0x71, 0x44, 0xaa, 0x10, 0x52, 0x95, 0xd0, 0x51, 0x5a, 0x78, 0x24, 0x86,
+ 0x26, 0x06, 0x5e, 0xb5, 0x88, 0xd3, 0x00, 0x89, 0x78, 0x29, 0x2c, 0x49,
+ 0xd4, 0x12, 0xda, 0x6a, 0xc4, 0x36, 0x4f, 0xc5, 0x7f, 0x28, 0x8f, 0xa7,
+ 0xb3, 0x4b, 0xdc, 0x64, 0x3f, 0x32, 0xa3, 0x9e, 0x8b, 0xd9, 0x52, 0x0c,
+ 0xc6, 0xdd, 0xa9, 0xfb, 0x58, 0xd9, 0x3e, 0x4d, 0xbe, 0xb1, 0x3b, 0x0a,
+ 0xcc, 0x24, 0xcb, 0xca, 0xab, 0x35, 0x3d, 0x7b, 0xe9, 0xe5, 0x28, 0xae,
+ 0xdb, 0x6e, 0xe3, 0xa2, 0xcb, 0x2d, 0xc3, 0x8d, 0x72, 0x48, 0x3f, 0x82,
+ 0xa8, 0x62, 0x91, 0xda, 0xdc, 0xa2, 0xe7, 0x2f, 0x4f, 0x4f, 0xb6, 0xa2,
+ 0x37, 0x12, 0xfa, 0x85, 0x9a, 0xea, 0x5d, 0x45, 0xab, 0x0c, 0x0d, 0x6c,
+ 0x66, 0x3d, 0x10, 0x46, 0x19, 0x5d, 0x0a, 0xb5, 0xbe, 0x51, 0x3e, 0x0c,
+ 0x06, 0xd2, 0x6d, 0x49, 0xc0, 0x18, 0xfb, 0x6b, 0xb6, 0x77, 0x7b, 0xbb,
+ 0x5c, 0xc7, 0x04, 0xb7, 0xc3, 0x51, 0xcd, 0xd9, 0x64, 0x97, 0xb0, 0x3c,
+ 0x33, 0x89, 0xa8, 0xeb, 0x26, 0x4d, 0xbf, 0xc1, 0x8e, 0x4b, 0xdf, 0x75,
+ 0x4c, 0xe7, 0xdb, 0xda, 0x64, 0x6e, 0x92, 0x3b, 0x7f, 0x6b, 0x77, 0xe2,
+ 0x47, 0x5f, 0x7d, 0x55, 0x93, 0xa7, 0x95, 0xff, 0xa2, 0x1d, 0xe6, 0xf1,
+ 0xce, 0x0e, 0xcd, 0xcd, 0x03, 0xe4, 0x87, 0x2f, 0xe2, 0xaf, 0xe8, 0xc5,
+ 0xfa, 0x6b, 0x65, 0x0a, 0x74, 0x34, 0x6a, 0x7f, 0x2f, 0xc6, 0x6f, 0x02,
+ 0xdd, 0x11, 0xc5, 0xb4, 0xbe, 0xf5, 0x15, 0x76, 0x17, 0x78, 0x8b, 0x1e,
+ 0xe6, 0x75, 0xcc, 0xc7, 0x63, 0xa4, 0x37, 0x7c, 0x52, 0xab, 0x89, 0xdd,
+ 0x24, 0xc5, 0xc8, 0x9f, 0xee, 0x4e, 0x37, 0xde, 0x6d, 0x9b, 0x2e, 0xf1,
+ 0x41, 0x4a, 0xf6, 0xc3, 0xfd, 0x44, 0xc6, 0xb0, 0xf9, 0x87, 0x2d, 0x46,
+ 0x94, 0x6b, 0x36, 0xb4, 0x0b, 0x23, 0xda, 0xfd, 0xea, 0xab, 0x2e, 0x8e,
+ 0xec, 0xf1, 0x57, 0x5f, 0xb5, 0x96, 0x3b, 0x70, 0xba, 0xb9, 0xc9, 0xad,
+ 0xf3, 0x00, 0x5f, 0xb7, 0x44, 0x53, 0x42, 0x37, 0x51, 0xb8, 0x1f, 0xfc,
+ 0x26, 0xfa, 0x3a, 0x7a, 0x7d, 0x76, 0x71, 0xe2, 0x98, 0xe9, 0xe9, 0x04,
+ 0x71, 0x40, 0x91, 0x63, 0x97, 0xa2, 0x10, 0xb0, 0x39, 0xe6, 0xe3, 0xb0,
+ 0x11, 0x70, 0xba, 0x98, 0xf8, 0xf6, 0x32, 0x42, 0x3d, 0x53, 0xaf, 0x95,
+ 0xa2, 0x71, 0xe9, 0x89, 0x64, 0xd1, 0x87, 0xa2, 0xd3, 0xe2, 0x8c, 0xb2,
+ 0x66, 0xe8, 0xdc, 0xfd, 0x17, 0xf0, 0xcd, 0xa4, 0x28, 0x7d, 0x1c, 0x09,
+ 0x34, 0x1a, 0xa9, 0x95, 0x4c, 0x0c, 0x96, 0x79, 0x31, 0x35, 0xfe, 0x08,
+ 0xe3, 0x1c, 0x13, 0x93, 0x86, 0xfc, 0x9d, 0x0d, 0xb2, 0x49, 0x56, 0xdd,
+ 0xb5, 0xd8, 0xcb, 0x40, 0x48, 0x0c, 0xe8, 0x61, 0x67, 0xec, 0xbd, 0xbe,
+ 0xcc, 0x2a, 0xb7, 0x0a, 0xde, 0x26, 0x50, 0xe1, 0x16, 0x59, 0xa9, 0x39,
+ 0x89, 0x4a, 0x22, 0x41, 0x36, 0x4a, 0xc4, 0x2f, 0xe3, 0xb4, 0x75, 0xfc,
+ 0x23, 0x9f, 0x6f, 0x78, 0x76, 0xb0, 0x74, 0x82, 0xc6, 0x20, 0x91, 0xe6,
+ 0xf8, 0x85, 0x98, 0x9e, 0x94, 0x73, 0x4c, 0xa6, 0xb6, 0x5b, 0x72, 0xcc,
+ 0x27, 0x54, 0x23, 0xda, 0xed, 0x3c, 0x60, 0x37, 0xa4, 0xba, 0x71, 0x14,
+ 0x41, 0xab, 0x18, 0x83, 0xd8, 0x8c, 0x9b, 0xd7, 0xbe, 0xe1, 0x2c, 0x88,
+ 0x61, 0x81, 0x33, 0x24, 0x10, 0xaf, 0x88, 0x2e, 0x3b, 0xf8, 0x47, 0xe9,
+ 0x5c, 0xf3, 0xbf, 0x67, 0xf5, 0x76, 0xe0, 0x90, 0x8d, 0xb3, 0xcb, 0x45,
+ 0x11, 0x4e, 0x04, 0x46, 0x9b, 0xa1, 0x86, 0xa8, 0x12, 0xd3, 0x43, 0xd1,
+ 0xfb, 0x26, 0x51, 0x04, 0xbe, 0x29, 0x9a, 0x6a, 0x95, 0xe9, 0xa8, 0xf5,
+ 0x4e, 0x11, 0xef, 0xae, 0x12, 0x0f, 0xd1, 0x8c, 0xb6, 0x72, 0x0c, 0x0a,
+ 0x0e, 0xda, 0x3a, 0x25, 0xb4, 0x9a, 0x7c, 0x4f, 0xd4, 0x9a, 0x81, 0x18,
+ 0x14, 0x37, 0x17, 0x52, 0x21, 0x0a, 0x84, 0x54, 0x88, 0x9a, 0x96, 0x20,
+ 0x90, 0xb5, 0x45, 0xd3, 0x57, 0xcf, 0x3e, 0x3e, 0x8d, 0xb3, 0xbb, 0xb9,
+ 0xca, 0xb1, 0xe2, 0x1f, 0xf0, 0x4b, 0xe4, 0x8f, 0x7e, 0xb5, 0x14, 0x64,
+ 0x8a, 0xb4, 0xa3, 0xcc, 0x1f, 0x79, 0x9b, 0xe0, 0xf9, 0x9b, 0xd9, 0x24,
+ 0x4f, 0x46, 0x25, 0x5f, 0xe4, 0x1a, 0x0d, 0x48, 0xcb, 0xc5, 0x35, 0x1c,
+ 0x65, 0x73, 0xbd, 0x80, 0x5c, 0xdc, 0x6b, 0xde, 0xe5, 0x68, 0xd3, 0xa9,
+ 0xe5, 0x43, 0x87, 0xc7, 0x31, 0x85, 0x32, 0x03, 0x45, 0x5a, 0xe1, 0xca,
+ 0x34, 0x5b, 0x3d, 0x1a, 0x4b, 0xa0, 0xe4, 0x1f, 0xef, 0x57, 0xa9, 0xbb,
+ 0x95, 0xde, 0x56, 0xf0, 0x67, 0x3a, 0x72, 0xed, 0xb3, 0x51, 0xff, 0xe5,
+ 0x7f, 0x9f, 0xb4, 0xde, 0xaf, 0x97, 0xe9, 0x67, 0x0b, 0x9c, 0xe1, 0xde,
+ 0xf7, 0xf6, 0xe2, 0x47, 0x8f, 0xd6, 0xbb, 0x4f, 0x8f, 0x09, 0x26, 0x37,
+ 0x9f, 0x91, 0x25, 0x3e, 0x4e, 0x24, 0xb7, 0x37, 0xc1, 0x4f, 0x93, 0x39,
+ 0xae, 0x47, 0x5d, 0xda, 0x43, 0x9f, 0xd6, 0x14, 0x56, 0x5c, 0xfd, 0xfe,
+ 0xf8, 0xc9, 0xb2, 0xec, 0x01, 0x78, 0x36, 0x9b, 0x2e, 0xa6, 0xd6, 0x1b,
+ 0x32, 0xa6, 0x37, 0x67, 0xc3, 0x3b, 0x26, 0x3a, 0x2a, 0x06, 0x66, 0x42,
+ 0xf1, 0x09, 0xb3, 0xc3, 0x3b, 0x4d, 0x33, 0xe7, 0x12, 0xb4, 0x85, 0x2f,
+ 0x91, 0x28, 0xc8, 0xc1, 0xc1, 0xaa, 0xf0, 0x62, 0x96, 0x61, 0x7d, 0xb0,
+ 0x7c, 0x9a, 0xb2, 0x70, 0x4c, 0x7c, 0x68, 0xd4, 0x06, 0xaf, 0x48, 0xe3,
+ 0x06, 0x4a, 0xa8, 0x55, 0xe8, 0x33, 0x58, 0x0f, 0xae, 0x63, 0x83, 0x3b,
+ 0x12, 0xb5, 0x0b, 0x6b, 0x41, 0xb6, 0x54, 0xb1, 0x44, 0xb9, 0x6e, 0x4c,
+ 0x86, 0xd6, 0x52, 0x63, 0xe1, 0xd3, 0x60, 0xdc, 0x26, 0x33, 0x19, 0x43,
+ 0x1c, 0x6f, 0xdf, 0x9c, 0x72, 0xf8, 0x4e, 0x52, 0xf3, 0x18, 0xc1, 0xbe,
+ 0xd1, 0xdd, 0x08, 0x2d, 0x92, 0x13, 0x2e, 0x99, 0x05, 0x54, 0x38, 0x5a,
+ 0x3d, 0x9c, 0x24, 0x4c, 0xc6, 0x4d, 0x09, 0xb8, 0x49, 0x60, 0x2d, 0x16,
+ 0xb0, 0xa5, 0x13, 0x3e, 0x01, 0x18, 0x92, 0x6e, 0x1a, 0xa7, 0xb0, 0x06,
+ 0x9c, 0x93, 0x27, 0x99, 0xe2, 0x0e, 0x98, 0x2a, 0xf7, 0x2e, 0xce, 0xaa,
+ 0x74, 0x51, 0x97, 0xdc, 0x35, 0x08, 0x87, 0x45, 0xee, 0x00, 0x1e, 0x15,
+ 0xfa, 0x45, 0x0b, 0xdc, 0x85, 0x89, 0xc6, 0xb1, 0x04, 0xe3, 0x9a, 0x5c,
+ 0x4a, 0xaa, 0x1d, 0x1f, 0x68, 0xbf, 0xf3, 0x7a, 0xfb, 0x6d, 0x47, 0x72,
+ 0x1f, 0x5e, 0x8b, 0x41, 0x50, 0x6d, 0x5d, 0x40, 0x13, 0xb1, 0xe7, 0xfb,
+ 0x2d, 0x98, 0xc5, 0xbc, 0x65, 0xf3, 0x98, 0x21, 0x0c, 0xcc, 0x02, 0x50,
+ 0x0b, 0x3c, 0xfe, 0xcd, 0x9e, 0xd1, 0x8d, 0x72, 0x03, 0x28, 0x86, 0x24,
+ 0x9e, 0xad, 0x6e, 0xb4, 0x31, 0x6d, 0x5e, 0x32, 0x9b, 0x70, 0x13, 0x2e,
+ 0x80, 0x4c, 0xe0, 0xbb, 0x2b, 0x78, 0x12, 0x08, 0xa5, 0xa0, 0x18, 0xbb,
+ 0x68, 0x63, 0xb4, 0x11, 0x6d, 0x6f, 0x8e, 0x12, 0x8e, 0x94, 0x24, 0x31,
+ 0x6d, 0x0f, 0x8e, 0x1d, 0x46, 0x20, 0x50, 0xf3, 0xc8, 0x62, 0x2e, 0xbc,
+ 0xdd, 0x32, 0x6e, 0x33, 0x1a, 0x16, 0x3d, 0xd8, 0x95, 0x92, 0x5d, 0x1d,
+ 0x9c, 0xa6, 0x33, 0xf7, 0x2e, 0xb9, 0xfd, 0xea, 0x44, 0xef, 0xb9, 0x82,
+ 0x90, 0xa9, 0x21, 0xf9, 0x63, 0xbf, 0x21, 0x4a, 0xd3, 0x20, 0x96, 0x2a,
+ 0x9f, 0x90, 0x3a, 0xc1, 0x67, 0x6d, 0x77, 0xc7, 0xc2, 0xcb, 0xe2, 0xdb,
+ 0x11, 0x4f, 0xb2, 0x4b, 0xd5, 0xd5, 0x85, 0xe4, 0x03, 0x61, 0x6b, 0x8d,
+ 0x43, 0x60, 0x2b, 0x56, 0x33, 0x99, 0x3d, 0x11, 0xc9, 0xb1, 0xa4, 0x0b,
+ 0x28, 0x4a, 0x27, 0xc9, 0x9c, 0xf4, 0x55, 0x52, 0xe5, 0x7c, 0xc2, 0x05,
+ 0x95, 0xf0, 0x3a, 0xc3, 0x9a, 0x4b, 0x86, 0x2a, 0x31, 0xbe, 0x5b, 0xa8,
+ 0x32, 0xec, 0x88, 0x1a, 0x2f, 0x66, 0x1c, 0xcc, 0x40, 0xc5, 0x48, 0xa6,
+ 0x30, 0xce, 0x4c, 0x84, 0x55, 0xb8, 0x94, 0xd1, 0xc6, 0x43, 0xaa, 0xa5,
+ 0x84, 0xe1, 0x99, 0x93, 0x81, 0xec, 0x26, 0xc0, 0x00, 0x90, 0xfd, 0x50,
+ 0x2c, 0x48, 0xc5, 0x65, 0xdd, 0xe8, 0x7c, 0x81, 0x4c, 0xb7, 0x43, 0x4b,
+ 0xc2, 0xed, 0x52, 0x80, 0x5e, 0xed, 0xa2, 0x2b, 0x16, 0x58, 0x90, 0xd4,
+ 0xf7, 0xba, 0xa2, 0x11, 0x6c, 0x18, 0x1a, 0x38, 0x45, 0x74, 0x61, 0x86,
+ 0x09, 0xe5, 0x04, 0x99, 0xd2, 0x77, 0xdd, 0x48, 0xaf, 0x61, 0x8b, 0x1b,
+ 0x40, 0x4f, 0x29, 0x32, 0xa1, 0x8a, 0x99, 0x3e, 0x4c, 0x6d, 0x81, 0x65,
+ 0x15, 0xb1, 0xec, 0xf1, 0x24, 0xbf, 0xcc, 0x86, 0x26, 0x3e, 0x8c, 0x92,
+ 0x51, 0xf2, 0x4a, 0x23, 0x5c, 0x28, 0x48, 0xba, 0x25, 0xd3, 0xd6, 0x3b,
+ 0x66, 0x9f, 0xe2, 0x96, 0x2a, 0xdb, 0xaf, 0x29, 0xe8, 0x7d, 0x6f, 0xbb,
+ 0x5c, 0x03, 0x3e, 0x86, 0x5e, 0xd9, 0xdf, 0xbe, 0x5a, 0xf7, 0x95, 0xdd,
+ 0x47, 0xdb, 0xd3, 0x35, 0x55, 0x4b, 0x2a, 0x62, 0xc8, 0x6f, 0x73, 0x10,
+ 0x1f, 0xad, 0x78, 0x4c, 0x2b, 0x5e, 0x4b, 0xae, 0x63, 0xcb, 0x84, 0x7b,
+ 0x2f, 0xde, 0x18, 0xe8, 0x6a, 0xda, 0x74, 0x5c, 0x1c, 0x22, 0x20, 0x53,
+ 0xd8, 0x2d, 0x99, 0x88, 0xab, 0x13, 0xa4, 0x14, 0x0e, 0xa4, 0xa3, 0x58,
+ 0x66, 0x92, 0x0e, 0xc7, 0x41, 0xd7, 0x38, 0x85, 0x01, 0x3b, 0x15, 0x9c,
+ 0x19, 0xf2, 0x89, 0xc0, 0x88, 0x39, 0x00, 0x83, 0xa9, 0x72, 0x4a, 0x61,
+ 0x1c, 0xe4, 0xfe, 0xc4, 0x38, 0x14, 0xae, 0x20, 0xeb, 0x93, 0x29, 0xd5,
+ 0xb2, 0xc7, 0x41, 0xc1, 0x58, 0x97, 0x06, 0x5d, 0xe2, 0x5c, 0xee, 0x11,
+ 0x6f, 0x69, 0x03, 0xcf, 0x60, 0x9a, 0xcd, 0xbe, 0x1a, 0x71, 0x68, 0xa1,
+ 0x2e, 0x57, 0xca, 0x33, 0x37, 0xeb, 0x26, 0xbb, 0x17, 0xb1, 0x2e, 0x90,
+ 0xb3, 0x35, 0x29, 0xdb, 0xad, 0x30, 0x68, 0xb6, 0x88, 0x0e, 0xe1, 0xb2,
+ 0x6d, 0x01, 0x1c, 0xef, 0x93, 0xe4, 0x87, 0xc4, 0xdf, 0x79, 0x93, 0x52,
+ 0x51, 0xea, 0x02, 0x74, 0xa6, 0xcb, 0xb4, 0xe3, 0xd6, 0x01, 0x57, 0x33,
+ 0x2b, 0x6d, 0x9f, 0x38, 0x99, 0x43, 0xbc, 0x0a, 0x35, 0x79, 0x15, 0xdc,
+ 0xf1, 0x18, 0x39, 0x71, 0xf4, 0x0a, 0x6a, 0x3c, 0x49, 0x64, 0xdf, 0x17,
+ 0x05, 0xe6, 0x3e, 0x18, 0xa2, 0x09, 0x01, 0xfd, 0x21, 0x65, 0xaa, 0xd7,
+ 0xc4, 0x04, 0xef, 0xb3, 0x70, 0x16, 0x75, 0xfe, 0x84, 0x21, 0x69, 0x1d,
+ 0x1d, 0x99, 0x9d, 0x2b, 0x86, 0xcb, 0x7b, 0xfe, 0x7e, 0x1b, 0x8b, 0x51,
+ 0x0f, 0x64, 0x2b, 0x45, 0x84, 0x37, 0x7c, 0x19, 0xdf, 0x56, 0xa4, 0x0c,
+ 0xd0, 0xc5, 0x39, 0xe2, 0xce, 0x4b, 0xbb, 0x38, 0x95, 0x51, 0x1d, 0x44,
+ 0x12, 0x0b, 0xc9, 0xb6, 0x2c, 0x1d, 0x53, 0x3d, 0x2b, 0x8b, 0x19, 0xd5,
+ 0x04, 0x24, 0xf3, 0xae, 0x06, 0x7c, 0x04, 0x34, 0x0b, 0x51, 0x63, 0x70,
+ 0x40, 0x74, 0xd7, 0x73, 0xe0, 0x51, 0x6d, 0x1b, 0x5b, 0xc4, 0x6f, 0x99,
+ 0xf7, 0x7a, 0xac, 0x6d, 0x69, 0x04, 0xd9, 0xba, 0xbc, 0x4d, 0x46, 0xd0,
+ 0x51, 0xba, 0x1d, 0xc3, 0x6a, 0x6b, 0xf8, 0x7a, 0x67, 0x1d, 0xf6, 0xb5,
+ 0xac, 0x21, 0x59, 0xdb, 0xf8, 0xf4, 0x21, 0x0d, 0x2e, 0x7f, 0xb9, 0xf5,
+ 0x6c, 0x1d, 0xe1, 0xea, 0xa3, 0x6f, 0x31, 0x4e, 0x2e, 0x29, 0x62, 0x0a,
+ 0x99, 0xe3, 0x8b, 0xae, 0x21, 0x67, 0xe7, 0xbc, 0xfd, 0x99, 0x37, 0x0a,
+ 0x23, 0xd6, 0xe4, 0xcb, 0x38, 0xe0, 0x89, 0x93, 0x43, 0xd7, 0xc0, 0x27,
+ 0xa9, 0x18, 0xc2, 0x4f, 0xe9, 0x98, 0xda, 0x10, 0xaf, 0x9a, 0x9e, 0x3e,
+ 0xb1, 0x98, 0x04, 0xc3, 0xdf, 0x62, 0x6b, 0x39, 0x3b, 0x66, 0x1c, 0xf8,
+ 0x18, 0x58, 0x14, 0xc8, 0xe2, 0x5c, 0x63, 0x95, 0xcc, 0xb5, 0x8c, 0x64,
+ 0xae, 0xac, 0x93, 0xfc, 0x67, 0x41, 0xa8, 0x9f, 0xa1, 0xc1, 0xbb, 0xb3,
+ 0x6f, 0x99, 0x40, 0x4e, 0x38, 0x1c, 0x46, 0xd2, 0x90, 0xae, 0x0d, 0xc9,
+ 0x8d, 0xc3, 0x21, 0x27, 0x2e, 0x0e, 0x20, 0x17, 0xb7, 0xaa, 0x5c, 0x63,
+ 0x31, 0x9e, 0x14, 0x38, 0xcf, 0x18, 0x25, 0x3f, 0xd6, 0xc0, 0x96, 0xb6,
+ 0x00, 0x0d, 0x85, 0x04, 0x6b, 0x15, 0xa8, 0x23, 0x35, 0xf1, 0x96, 0xc9,
+ 0xb5, 0xcd, 0xae, 0x11, 0xe0, 0x17, 0x37, 0x72, 0x0d, 0xee, 0x16, 0xf9,
+ 0xb2, 0xcd, 0xbb, 0xd2, 0xc8, 0xa4, 0x8c, 0xa5, 0x30, 0x7c, 0x8c, 0x05,
+ 0xb8, 0x03, 0xa7, 0xd0, 0xc5, 0x00, 0x34, 0x76, 0xb3, 0xc4, 0x3a, 0x22,
+ 0x45, 0xcf, 0x11, 0xb4, 0x44, 0x62, 0x6d, 0x9c, 0x20, 0x16, 0x20, 0x11,
+ 0x2d, 0xff, 0xca, 0x39, 0x66, 0x25, 0xa3, 0xd3, 0xd3, 0x9a, 0xb8, 0x4e,
+ 0x2e, 0x77, 0x3a, 0x2a, 0xae, 0x71, 0x5a, 0x54, 0xd3, 0xd2, 0x05, 0x83,
+ 0xba, 0x29, 0xd0, 0x00, 0xc0, 0x6e, 0x6d, 0xcd, 0xe3, 0x13, 0xb4, 0xff,
+ 0x21, 0x2c, 0x4f, 0xcf, 0xc9, 0xab, 0x53, 0xe3, 0x2d, 0x81, 0x08, 0xb6,
+ 0xa6, 0x71, 0xdc, 0xd5, 0x26, 0x47, 0x29, 0xe6, 0x55, 0x9b, 0x86, 0x14,
+ 0xda, 0x2a, 0xca, 0x75, 0x23, 0xc8, 0x30, 0xc7, 0xf8, 0xc2, 0x29, 0x4e,
+ 0xd1, 0xef, 0x63, 0x2e, 0x57, 0x8b, 0x41, 0x48, 0x9b, 0x77, 0x69, 0xb5,
+ 0xe5, 0xa4, 0x49, 0x11, 0xa9, 0x7d, 0xd1, 0xe2, 0xed, 0x15, 0xd3, 0x8e,
+ 0x1d, 0x06, 0x7a, 0x15, 0x9c, 0x28, 0x69, 0x5e, 0x78, 0x10, 0x72, 0x28,
+ 0x2d, 0x1b, 0x84, 0x79, 0x98, 0x4a, 0xd5, 0xde, 0x9c, 0x6f, 0x72, 0xfe,
+ 0xe1, 0xe8, 0xcd, 0xeb, 0x97, 0xaf, 0xbf, 0x3f, 0x40, 0x8e, 0x98, 0x16,
+ 0x43, 0x34, 0x1d, 0x46, 0xbf, 0x2e, 0x46, 0xd9, 0x90, 0x6e, 0x0e, 0x76,
+ 0xb4, 0x8c, 0xeb, 0xe0, 0x89, 0xa9, 0xc4, 0x50, 0x51, 0x91, 0xd6, 0x66,
+ 0x73, 0x9c, 0xf9, 0x8f, 0xd8, 0x8f, 0x45, 0x7e, 0xb9, 0x30, 0x14, 0x34,
+ 0x24, 0xfb, 0x17, 0x85, 0xcd, 0x51, 0xa8, 0x37, 0xa9, 0x1e, 0x74, 0x10,
+ 0xf1, 0xd4, 0xc2, 0xc9, 0x7c, 0x76, 0x7a, 0x8a, 0xf2, 0x51, 0x73, 0xa3,
+ 0x69, 0x5e, 0xec, 0x72, 0xa3, 0xec, 0x3a, 0xcd, 0xf4, 0x46, 0x23, 0x13,
+ 0xde, 0x40, 0xb5, 0x8b, 0x6f, 0x70, 0x67, 0x90, 0x07, 0x28, 0x1d, 0x76,
+ 0x1a, 0x30, 0x9e, 0x11, 0xe4, 0x48, 0x51, 0xc1, 0x2d, 0x99, 0x8f, 0x2b,
+ 0x34, 0xc3, 0x2d, 0x17, 0x9f, 0x3c, 0xde, 0xd7, 0x22, 0x4d, 0x89, 0x38,
+ 0x05, 0xe4, 0xe1, 0x6b, 0x76, 0xab, 0x90, 0xe2, 0xfc, 0x4e, 0xd6, 0x94,
+ 0xaf, 0xce, 0xfe, 0x1c, 0xba, 0x01, 0xb6, 0x89, 0xdd, 0xb4, 0x5e, 0x03,
+ 0x67, 0xdd, 0x3a, 0x5f, 0xae, 0x49, 0xc0, 0xf6, 0x63, 0x44, 0x8a, 0x5b,
+ 0x86, 0x43, 0xc5, 0xf1, 0xb5, 0xf5, 0x72, 0xc8, 0x12, 0xa8, 0x8e, 0xce,
+ 0x2c, 0x14, 0x94, 0xd9, 0x46, 0x42, 0xa6, 0x11, 0x0a, 0x4e, 0xf7, 0x34,
+ 0x69, 0x90, 0x66, 0xc5, 0x4a, 0x5e, 0xa2, 0x0a, 0x5d, 0xbf, 0x2e, 0x6e,
+ 0xd2, 0x42, 0xc4, 0x0d, 0x53, 0x92, 0x02, 0xa4, 0x8e, 0x5e, 0xd4, 0xcf,
+ 0x25, 0xfb, 0xb1, 0x29, 0x64, 0x61, 0x71, 0x15, 0xb7, 0x5e, 0x30, 0x11,
+ 0x0e, 0x8d, 0xc5, 0x66, 0x5f, 0xa2, 0x44, 0xc4, 0x91, 0xc2, 0xab, 0x26,
+ 0x8b, 0xfb, 0x3b, 0x48, 0x8d, 0x12, 0x70, 0xa7, 0x11, 0xa0, 0x78, 0x30,
+ 0x3a, 0x31, 0xac, 0x63, 0x07, 0x69, 0xcd, 0xdd, 0xc7, 0xe0, 0x06, 0x06,
+ 0x88, 0x4a, 0x3b, 0x5c, 0x2a, 0x9f, 0xaf, 0x9f, 0x26, 0xd2, 0x68, 0x7d,
+ 0x6d, 0x51, 0xbd, 0x31, 0xb8, 0x80, 0x4b, 0x19, 0xc8, 0x6a, 0xb7, 0xe5,
+ 0xf3, 0xbd, 0x07, 0xd1, 0x5b, 0xf3, 0xab, 0x26, 0x4f, 0x29, 0x10, 0x57,
+ 0x4d, 0xf3, 0x74, 0x08, 0xa2, 0x97, 0xfd, 0x6f, 0x4e, 0x4c, 0x0c, 0x85,
+ 0xa2, 0x3a, 0xf1, 0xf5, 0xf4, 0xd5, 0x4d, 0x8a, 0xe6, 0xec, 0xe6, 0xda,
+ 0x6d, 0x9e, 0x71, 0xc5, 0x72, 0x79, 0xc8, 0x2d, 0x3c, 0xe3, 0xbe, 0x2c,
+ 0x97, 0x72, 0xd7, 0x7a, 0x8a, 0x19, 0x71, 0xad, 0xf2, 0x40, 0x7c, 0xc7,
+ 0x7e, 0x1a, 0x84, 0xbd, 0xb9, 0x8d, 0x50, 0x10, 0xba, 0xbe, 0xfd, 0xc0,
+ 0x14, 0x41, 0x5f, 0x0b, 0xd1, 0xb4, 0x0d, 0xc4, 0xd0, 0xa6, 0x28, 0x6e,
+ 0x5c, 0x91, 0xd9, 0x6a, 0x51, 0xec, 0xa4, 0x1a, 0x70, 0x9d, 0x9f, 0x40,
+ 0x73, 0x02, 0x75, 0x6a, 0xe2, 0x34, 0xc3, 0x63, 0x51, 0xd1, 0x25, 0x9b,
+ 0x5d, 0xe7, 0xf4, 0x8d, 0x98, 0x24, 0x03, 0xc9, 0x64, 0x4e, 0x36, 0x79,
+ 0x21, 0x09, 0x54, 0x4b, 0x64, 0x8b, 0x8b, 0xc6, 0x4a, 0xab, 0x07, 0x5e,
+ 0x11, 0x68, 0x60, 0x7e, 0x1a, 0x7a, 0x6b, 0x01, 0x83, 0x2d, 0x46, 0x70,
+ 0x93, 0x3c, 0xc4, 0x04, 0x0b, 0x47, 0xba, 0x4b, 0x97, 0xfb, 0x15, 0xbd,
+ 0x9c, 0x4e, 0xd0, 0xa1, 0xe6, 0x20, 0x08, 0xab, 0x08, 0x22, 0x12, 0x48,
+ 0x56, 0xb5, 0x58, 0x42, 0x1c, 0xd9, 0xc2, 0x60, 0xe1, 0x99, 0xf5, 0xb7,
+ 0xbe, 0x3d, 0xcc, 0x06, 0x67, 0x85, 0x19, 0x0d, 0xad, 0xc3, 0xab, 0x3c,
+ 0x97, 0xd4, 0xd2, 0xb6, 0xab, 0x37, 0x22, 0xb9, 0x9d, 0xcb, 0x4b, 0x05,
+ 0xae, 0x15, 0x2d, 0x02, 0x6e, 0xb5, 0x2b, 0xdc, 0xe0, 0x91, 0x07, 0xd3,
+ 0x92, 0x59, 0xd5, 0xd5, 0xac, 0x7a, 0x43, 0x7e, 0x95, 0xd1, 0x94, 0x46,
+ 0xe2, 0xd5, 0xab, 0x36, 0x94, 0x51, 0x0c, 0xbc, 0x91, 0x85, 0xb9, 0xf0,
+ 0xf2, 0x48, 0x56, 0xba, 0xbb, 0x28, 0x41, 0xd1, 0x87, 0x33, 0x1b, 0x88,
+ 0xaf, 0x1a, 0x4b, 0xc8, 0x88, 0xfc, 0x36, 0xb3, 0x7a, 0xb0, 0x25, 0x8d,
+ 0x35, 0xab, 0x88, 0xcb, 0xfd, 0x7e, 0x6f, 0xa7, 0xed, 0xca, 0xc7, 0x86,
+ 0x14, 0x14, 0x7b, 0x9e, 0x14, 0x26, 0xfa, 0x54, 0x84, 0x22, 0x5b, 0xda,
+ 0x09, 0x25, 0x0a, 0xc4, 0x67, 0x64, 0x1f, 0x29, 0xfc, 0x68, 0x5b, 0xff,
+ 0xb0, 0x63, 0x0e, 0xc5, 0x29, 0x56, 0x43, 0x1c, 0x5c, 0xe0, 0x92, 0xbd,
+ 0x72, 0xcc, 0x8e, 0x25, 0xcb, 0xdb, 0xda, 0x6f, 0xe9, 0x22, 0xf3, 0x0f,
+ 0x15, 0x9a, 0x4a, 0x03, 0xe5, 0x85, 0xdc, 0xab, 0xec, 0xc3, 0xab, 0x0b,
+ 0xb5, 0x09, 0x00, 0xad, 0xf7, 0x3f, 0xb1, 0xd3, 0x65, 0x50, 0xa1, 0x0d,
+ 0x7e, 0x4f, 0xe0, 0xa0, 0xf6, 0xec, 0x2a, 0x68, 0xe8, 0x9f, 0xbb, 0xce,
+ 0xb3, 0xcd, 0x89, 0x87, 0xe4, 0x96, 0xf8, 0x8d, 0xc3, 0xd3, 0x71, 0x8e,
+ 0x41, 0x38, 0x72, 0x66, 0xb0, 0x8e, 0x17, 0xdd, 0x31, 0x69, 0x58, 0x19,
+ 0x9a, 0x9c, 0xab, 0x69, 0xc4, 0x9e, 0x1d, 0xbe, 0x25, 0x7d, 0xff, 0x21,
+ 0x4c, 0x3b, 0xc0, 0xc5, 0xbb, 0xca, 0x00, 0x34, 0x9d, 0xcd, 0xc0, 0x2b,
+ 0x70, 0x57, 0x0c, 0x77, 0x97, 0x7b, 0xf0, 0x2c, 0x7a, 0xb9, 0xb0, 0x37,
+ 0x14, 0x5e, 0xa5, 0xa4, 0x7f, 0xda, 0x2b, 0xec, 0x69, 0x79, 0x16, 0xa8,
+ 0x33, 0xeb, 0x8f, 0x9f, 0x05, 0xea, 0x34, 0xfe, 0xc0, 0xab, 0x9d, 0xc6,
+ 0x05, 0x92, 0xcb, 0x38, 0xcf, 0xd7, 0x33, 0x1c, 0x34, 0xaf, 0x69, 0xb6,
+ 0x1c, 0xfc, 0x86, 0x9f, 0xd2, 0x9e, 0xa0, 0x9d, 0xbd, 0x29, 0x45, 0x5e,
+ 0xa7, 0x71, 0x3e, 0x8b, 0x43, 0x20, 0x2b, 0x3f, 0x98, 0xd4, 0x5c, 0x0d,
+ 0xf1, 0xb4, 0x5a, 0x1c, 0xe9, 0x5e, 0xe2, 0xe8, 0xc0, 0xdb, 0x4e, 0xef,
+ 0x7e, 0xd4, 0x1a, 0x35, 0xfa, 0x26, 0x70, 0xce, 0x95, 0x94, 0xf4, 0x20,
+ 0xdb, 0x98, 0x41, 0xda, 0xc1, 0x6b, 0xd1, 0xe8, 0xf5, 0x62, 0x03, 0x56,
+ 0x47, 0xa6, 0x75, 0x12, 0x68, 0x03, 0x3e, 0x8d, 0x14, 0x33, 0x94, 0x69,
+ 0x84, 0x74, 0xf5, 0x4c, 0x52, 0xbe, 0x97, 0x6c, 0x34, 0x91, 0xa0, 0x4b,
+ 0x19, 0x70, 0x0e, 0x4a, 0x10, 0x99, 0x61, 0xe8, 0xa3, 0x0f, 0x04, 0x51,
+ 0x44, 0xa3, 0x45, 0xe1, 0x3a, 0x0e, 0xda, 0x54, 0x6e, 0x9d, 0xaa, 0x94,
+ 0xcc, 0x93, 0x89, 0xdd, 0x5f, 0x13, 0xf5, 0x48, 0xd1, 0xd9, 0x82, 0x8f,
+ 0x5b, 0xd5, 0xaa, 0xd1, 0xf8, 0x43, 0xc8, 0xd1, 0x1d, 0x1b, 0x90, 0xa4,
+ 0xa6, 0x62, 0xaf, 0x43, 0x95, 0x63, 0xa4, 0x3f, 0x4c, 0xfe, 0xaa, 0xdb,
+ 0xf4, 0x1b, 0x70, 0xe3, 0xe2, 0xe0, 0x8a, 0x25, 0x40, 0xf6, 0x10, 0x05,
+ 0xba, 0x16, 0xe3, 0xb1, 0x5f, 0xdd, 0x85, 0x0c, 0xc0, 0x64, 0xec, 0x27,
+ 0xd0, 0xb1, 0x0e, 0x37, 0xd2, 0x89, 0x36, 0xb1, 0x95, 0x2d, 0x63, 0x81,
+ 0xf2, 0xab, 0x3b, 0x08, 0x0a, 0x89, 0x64, 0xcf, 0x27, 0xac, 0xe1, 0x34,
+ 0x91, 0x52, 0xc8, 0x00, 0x75, 0x8e, 0x24, 0x35, 0x5c, 0x4c, 0x92, 0x62,
+ 0x42, 0x17, 0xd2, 0x78, 0xd1, 0x24, 0x70, 0x3a, 0x14, 0x28, 0x88, 0x48,
+ 0x94, 0x7d, 0x56, 0x96, 0x0b, 0x31, 0x5e, 0x1b, 0x17, 0x20, 0x6d, 0x0e,
+ 0xf2, 0x49, 0x24, 0x56, 0xa6, 0x81, 0x72, 0x82, 0xd9, 0x94, 0x6d, 0xd7,
+ 0x2c, 0x47, 0x2a, 0x8a, 0xdd, 0xc6, 0xd4, 0x58, 0x60, 0x13, 0xb1, 0xf0,
+ 0xd2, 0x4b, 0x1c, 0x14, 0xdd, 0xc7, 0x73, 0xe4, 0xc9, 0xc5, 0xac, 0x4b,
+ 0xc2, 0x76, 0xa3, 0xb9, 0xce, 0xd9, 0xf9, 0xc5, 0xcb, 0xb3, 0xd7, 0xfd,
+ 0xe8, 0x0f, 0x9d, 0x36, 0x8b, 0x6e, 0x6d, 0x03, 0x3e, 0x6b, 0x45, 0xaf,
+ 0xc6, 0x58, 0x3a, 0x7f, 0xe8, 0x44, 0xf1, 0x8f, 0x91, 0xce, 0x60, 0x2d,
+ 0xea, 0xab, 0x45, 0xd2, 0xd6, 0x10, 0x1b, 0x1f, 0xd7, 0x08, 0xd0, 0x7d,
+ 0x2e, 0x3a, 0x9c, 0xa6, 0xb0, 0x4d, 0xa3, 0x36, 0xe7, 0x85, 0x63, 0x6c,
+ 0x1b, 0x82, 0xaa, 0x09, 0xac, 0x47, 0x5f, 0xe4, 0xf7, 0x94, 0x2c, 0x19,
+ 0xdc, 0xc0, 0x14, 0x16, 0xf2, 0x23, 0x2d, 0x9c, 0xba, 0x51, 0xae, 0x93,
+ 0x83, 0x04, 0x70, 0x6b, 0x0c, 0x6c, 0x34, 0x2e, 0x5e, 0xe3, 0xa0, 0x87,
+ 0xb0, 0x61, 0x6c, 0xa5, 0x6d, 0x92, 0xd7, 0x6c, 0xe4, 0x19, 0x3d, 0xb8,
+ 0xc9, 0xf2, 0xac, 0x58, 0x04, 0x4a, 0xdf, 0x79, 0xf1, 0xfd, 0xc9, 0xc5,
+ 0x96, 0xc0, 0x6b, 0x9b, 0xf1, 0x51, 0x04, 0x94, 0xa8, 0xe8, 0x89, 0x31,
+ 0x21, 0x28, 0xa0, 0x36, 0x8b, 0x22, 0xe9, 0xed, 0x7c, 0x92, 0xcc, 0x82,
+ 0xa0, 0x94, 0x98, 0xb9, 0x77, 0x0c, 0xcb, 0x81, 0x96, 0xc4, 0x64, 0xc4,
+ 0x92, 0xb2, 0xba, 0xe7, 0xcc, 0x11, 0xd1, 0xda, 0xb3, 0xe7, 0x6f, 0x2f,
+ 0xa8, 0x41, 0x8c, 0x9e, 0xbe, 0x38, 0x69, 0x86, 0x45, 0x21, 0xd4, 0x68,
+ 0x91, 0x4e, 0x28, 0xd0, 0xb9, 0x4a, 0x87, 0x57, 0xb3, 0x1c, 0x5d, 0xb4,
+ 0x69, 0xc9, 0x7a, 0xe6, 0x0f, 0xe9, 0xe0, 0xd9, 0xd1, 0xdf, 0x50, 0xf3,
+ 0x43, 0xaf, 0xfd, 0xf9, 0x9b, 0xb3, 0xf3, 0xe7, 0x2f, 0x5f, 0x3f, 0xeb,
+ 0x46, 0xc7, 0x67, 0xe7, 0x7f, 0xef, 0x46, 0xaf, 0xce, 0xfe, 0x76, 0xf2,
+ 0x85, 0x97, 0xf4, 0x43, 0xae, 0x69, 0x8f, 0x50, 0x5f, 0xa3, 0x33, 0x0a,
+ 0x4d, 0x57, 0x0c, 0x9f, 0x3d, 0xca, 0x49, 0x83, 0x89, 0x66, 0x1c, 0x2b,
+ 0xec, 0x08, 0xf8, 0x47, 0x6e, 0xb2, 0x06, 0xac, 0x5d, 0x37, 0x7a, 0x71,
+ 0x72, 0xf4, 0xac, 0x39, 0xec, 0xf3, 0xb3, 0x3e, 0xcf, 0x0a, 0x67, 0x67,
+ 0xa6, 0x8c, 0xd1, 0x11, 0x62, 0x21, 0x24, 0x5d, 0x8e, 0xa3, 0xb3, 0x99,
+ 0x35, 0x01, 0xbd, 0x66, 0x1c, 0xcf, 0xdd, 0x92, 0xc0, 0xc8, 0xf5, 0x3f,
+ 0x79, 0x18, 0x2d, 0x59, 0xa5, 0xc6, 0xe4, 0xcf, 0x15, 0x70, 0x5d, 0x8b,
+ 0x90, 0xd4, 0xa6, 0x25, 0xbc, 0x28, 0x55, 0x6a, 0xcc, 0x76, 0xb7, 0x44,
+ 0xf3, 0x74, 0x6b, 0xf5, 0x5e, 0x88, 0xf1, 0x72, 0x44, 0x5a, 0x22, 0x21,
+ 0xe5, 0x83, 0x14, 0x65, 0xed, 0x92, 0x4c, 0x40, 0x64, 0x13, 0x12, 0x4c,
+ 0xa1, 0xa0, 0x0b, 0xca, 0xda, 0x83, 0x48, 0xe0, 0x4b, 0xb4, 0x66, 0x2d,
+ 0x2e, 0x9f, 0x2e, 0x51, 0x57, 0x16, 0x03, 0x98, 0x00, 0x7d, 0xac, 0x9a,
+ 0x8f, 0x87, 0xef, 0x3e, 0x06, 0xc2, 0x4c, 0xb9, 0xf6, 0x30, 0x6f, 0x91,
+ 0xf1, 0x61, 0x88, 0xf7, 0xa4, 0x0d, 0x3d, 0x8b, 0x92, 0x81, 0xf8, 0xa0,
+ 0x88, 0x1f, 0x8d, 0xea, 0xe3, 0xaa, 0x37, 0xd1, 0xb2, 0x06, 0x65, 0x6b,
+ 0x72, 0xdc, 0x18, 0x1a, 0xd3, 0x33, 0x4a, 0xe9, 0xd6, 0x76, 0xa5, 0x4c,
+ 0x91, 0xe2, 0x80, 0xb9, 0xab, 0xc1, 0x6a, 0xb8, 0x71, 0x35, 0xa2, 0xa2,
+ 0xc3, 0x31, 0xaa, 0xbe, 0x37, 0x19, 0x3d, 0xd9, 0x14, 0x1b, 0x87, 0x31,
+ 0xee, 0x31, 0xcb, 0x01, 0x2e, 0x76, 0x8a, 0xd9, 0x0c, 0x35, 0x1c, 0xe8,
+ 0x68, 0x65, 0x4e, 0x5e, 0x1a, 0xed, 0x10, 0xf6, 0x5b, 0xae, 0x29, 0xb3,
+ 0xdb, 0xfb, 0x3b, 0xb7, 0x36, 0xe2, 0x12, 0x15, 0xbb, 0x32, 0x8a, 0x39,
+ 0x27, 0x8d, 0x31, 0x38, 0x83, 0xd9, 0xfe, 0x41, 0x6e, 0xe8, 0x46, 0xf0,
+ 0x99, 0xe2, 0x01, 0x06, 0x97, 0xe8, 0xf4, 0x25, 0x9c, 0x81, 0x40, 0x00,
+ 0xd3, 0x28, 0xc7, 0x11, 0x71, 0xd6, 0x1a, 0xa9, 0xb8, 0xb4, 0xf2, 0xd0,
+ 0x96, 0xdf, 0xf1, 0xf9, 0xd9, 0xf9, 0x7e, 0xb0, 0x67, 0xfc, 0x62, 0x55,
+ 0xd7, 0xde, 0x4d, 0xfb, 0xe6, 0xe4, 0xe2, 0x8d, 0xdf, 0xc7, 0xcb, 0x57,
+ 0x47, 0xe8, 0x33, 0xb3, 0x9d, 0xd8, 0x5e, 0xf0, 0xab, 0x15, 0xbd, 0x78,
+ 0x36, 0x2d, 0xb7, 0x8c, 0xea, 0x4e, 0x20, 0xbb, 0x6a, 0xb3, 0xff, 0xaa,
+ 0x65, 0x35, 0xf1, 0x8b, 0x25, 0xbd, 0xbd, 0x38, 0x39, 0x3d, 0xf7, 0xe7,
+ 0xf4, 0xb7, 0x37, 0xcf, 0xff, 0x5e, 0xcf, 0xe9, 0xda, 0x7f, 0x14, 0xe8,
+ 0x55, 0x82, 0x54, 0x84, 0x5a, 0x3e, 0x1e, 0x1a, 0xc8, 0x7a, 0xbe, 0xdc,
+ 0x1f, 0x39, 0x47, 0xe6, 0xe2, 0x64, 0x0d, 0xb7, 0xed, 0x8f, 0xd1, 0xeb,
+ 0x53, 0xd8, 0xcc, 0xb5, 0x80, 0x43, 0xea, 0x62, 0x45, 0x5d, 0xfa, 0x2c,
+ 0xf3, 0x09, 0x48, 0x8e, 0x87, 0x3f, 0xfd, 0x91, 0x90, 0x52, 0x09, 0x9c,
+ 0xec, 0x00, 0xee, 0xa8, 0xe2, 0xa7, 0x2e, 0xfe, 0xfb, 0x4b, 0xaf, 0xd7,
+ 0xfb, 0x26, 0x28, 0xc7, 0xa7, 0x76, 0xa3, 0xf0, 0x41, 0x4c, 0xfa, 0x6e,
+ 0x98, 0xb2, 0x09, 0xa8, 0x8e, 0x80, 0xf9, 0x30, 0xd2, 0x76, 0x9e, 0x64,
+ 0xe8, 0xfa, 0x7a, 0x5b, 0x86, 0xa4, 0x01, 0xba, 0x52, 0x2c, 0xb0, 0xa2,
+ 0xd1, 0x80, 0x45, 0x0b, 0x63, 0x9e, 0xb2, 0x59, 0x6e, 0x09, 0x8a, 0xb3,
+ 0x15, 0x11, 0x02, 0x76, 0x28, 0x1a, 0x0a, 0x75, 0xcb, 0x9a, 0x12, 0xeb,
+ 0x2e, 0x46, 0x08, 0x98, 0xe9, 0xc5, 0x26, 0x53, 0x1f, 0x99, 0xe1, 0x07,
+ 0x41, 0x45, 0x68, 0x5b, 0xf1, 0xf6, 0xe6, 0x34, 0x1b, 0x0a, 0x5f, 0x4b,
+ 0xe8, 0xc2, 0x43, 0x1a, 0xdc, 0x4e, 0xab, 0xe1, 0x36, 0xce, 0xb3, 0xac,
+ 0xc9, 0xe1, 0x86, 0x98, 0x3c, 0x2f, 0x94, 0x0b, 0x30, 0x41, 0x80, 0xbd,
+ 0x9c, 0x56, 0xe8, 0x60, 0x50, 0x59, 0xcc, 0x60, 0xc7, 0xb8, 0x63, 0x78,
+ 0x6e, 0x08, 0xdf, 0xd2, 0x2c, 0xb8, 0x03, 0xf8, 0x69, 0x40, 0x54, 0x5d,
+ 0x69, 0x14, 0x1b, 0x70, 0x50, 0x21, 0x7d, 0x4b, 0x11, 0x5d, 0x1d, 0x7a,
+ 0x00, 0x30, 0x83, 0x0d, 0xcf, 0x63, 0xe6, 0x5a, 0x1a, 0x2d, 0x10, 0x92,
+ 0xbb, 0xe9, 0x0a, 0x3e, 0x18, 0xa8, 0xf7, 0x48, 0x02, 0x8b, 0xb5, 0x05,
+ 0xe3, 0x4c, 0xc3, 0x68, 0x1f, 0x0e, 0xaa, 0xf5, 0xc6, 0x1f, 0x36, 0x50,
+ 0x1d, 0xa1, 0xd7, 0x83, 0x58, 0xda, 0x4a, 0xb5, 0x68, 0x0b, 0x0b, 0xa0,
+ 0xc8, 0x12, 0xef, 0xd6, 0x45, 0x31, 0xc4, 0x67, 0x50, 0x1b, 0x1c, 0xe2,
+ 0xa1, 0x29, 0x60, 0x78, 0xee, 0x64, 0x34, 0x4c, 0xb8, 0xfe, 0x80, 0x7f,
+ 0xf7, 0x0b, 0x99, 0x08, 0x1b, 0xc8, 0xa9, 0x57, 0x7b, 0x72, 0x24, 0x89,
+ 0xa2, 0x85, 0xea, 0xdb, 0x79, 0x05, 0xe7, 0x92, 0xb4, 0xe1, 0x3c, 0x4a,
+ 0x68, 0xaa, 0xac, 0x31, 0xf2, 0x1e, 0xca, 0x15, 0x6c, 0xd4, 0x79, 0x77,
+ 0xee, 0x63, 0x0a, 0x75, 0xf1, 0x05, 0x8d, 0x38, 0xce, 0xe6, 0xd7, 0x8f,
+ 0xd8, 0x11, 0x04, 0xbf, 0x3d, 0xd1, 0x70, 0xc4, 0xca, 0x05, 0x4c, 0x61,
+ 0x4d, 0x92, 0xf5, 0xae, 0x97, 0xe7, 0x9a, 0xac, 0x16, 0xda, 0x25, 0x86,
+ 0x49, 0x51, 0x84, 0x48, 0x21, 0x30, 0x45, 0x92, 0xf1, 0x8f, 0x2f, 0x27,
+ 0x41, 0x72, 0x0a, 0xb1, 0xe7, 0x9e, 0xb0, 0x78, 0x38, 0x1b, 0xa5, 0x71,
+ 0xd0, 0xe1, 0xb3, 0xa8, 0x26, 0x6e, 0xee, 0x4a, 0xc0, 0xe8, 0x16, 0x41,
+ 0x28, 0x57, 0xa9, 0xaa, 0x82, 0x6c, 0x46, 0x09, 0x2c, 0x2b, 0x8b, 0x78,
+ 0xe2, 0x5e, 0x48, 0x67, 0x62, 0xb1, 0x9f, 0xe4, 0x30, 0xd6, 0x62, 0x31,
+ 0xa3, 0xc4, 0x39, 0x13, 0x27, 0x6c, 0x42, 0x24, 0x75, 0xf4, 0x93, 0xdc,
+ 0x77, 0x9e, 0xd0, 0x8d, 0x0c, 0xc4, 0xf1, 0x72, 0xc6, 0xf8, 0x9d, 0x68,
+ 0x47, 0x29, 0x05, 0xe3, 0xa5, 0x96, 0x58, 0x48, 0x1b, 0x60, 0xa3, 0xa2,
+ 0x69, 0xca, 0xb9, 0x1f, 0xbd, 0x49, 0xd4, 0xc2, 0x27, 0x96, 0x69, 0x84,
+ 0x6c, 0xd9, 0x86, 0x1d, 0xdd, 0xd0, 0xb1, 0xcf, 0x25, 0x90, 0xd5, 0x2c,
+ 0x04, 0x1a, 0x42, 0xfc, 0xd0, 0x91, 0x39, 0xa1, 0x72, 0x79, 0x1c, 0x5f,
+ 0x92, 0x1a, 0x04, 0x2c, 0x5f, 0x8c, 0x2d, 0xd8, 0x1a, 0xec, 0xaa, 0xd2,
+ 0x12, 0xce, 0x18, 0xee, 0xc5, 0x9f, 0x06, 0x45, 0x42, 0x70, 0xcd, 0xbf,
+ 0x50, 0x4c, 0x2c, 0x41, 0x1e, 0xfb, 0x01, 0xf1, 0xa0, 0x2d, 0xd6, 0x8a,
+ 0x2d, 0x35, 0x3a, 0x6a, 0xf4, 0x64, 0x6c, 0x38, 0xb6, 0xbb, 0x94, 0xa3,
+ 0x7f, 0x99, 0x10, 0x96, 0x77, 0xf4, 0xd5, 0x92, 0x8e, 0xc6, 0x54, 0xd9,
+ 0x10, 0x97, 0xd0, 0xe8, 0x8e, 0x37, 0x7a, 0x66, 0x4d, 0xab, 0x52, 0x65,
+ 0xe6, 0xd1, 0x8a, 0x76, 0x28, 0x91, 0x07, 0xa8, 0x55, 0x20, 0x7f, 0xf0,
+ 0xf5, 0x46, 0x13, 0x4f, 0x1f, 0xf7, 0x76, 0xee, 0x0f, 0x53, 0x63, 0x0d,
+ 0xf2, 0xe8, 0x00, 0x1c, 0xc9, 0x27, 0xb4, 0xc5, 0x92, 0x7d, 0x9d, 0xb7,
+ 0x31, 0x95, 0xa0, 0x55, 0x9e, 0x09, 0xe5, 0x93, 0x59, 0xe4, 0x4d, 0x0f,
+ 0x8e, 0xec, 0x70, 0xf0, 0xe8, 0xd1, 0xfe, 0xc1, 0xee, 0x1e, 0x6e, 0xf5,
+ 0x0e, 0x68, 0xba, 0xeb, 0x05, 0x44, 0x2a, 0x0e, 0x21, 0xce, 0x9e, 0xa2,
+ 0x59, 0xe1, 0x26, 0x8c, 0xcb, 0xeb, 0x61, 0x5d, 0xcc, 0xc0, 0x00, 0x57,
+ 0xa0, 0x73, 0xb6, 0xa8, 0x35, 0x6d, 0x9a, 0x6f, 0x28, 0xe2, 0x18, 0x1d,
+ 0x1c, 0xb0, 0x72, 0x6c, 0xb2, 0x6b, 0x66, 0xef, 0x4a, 0xb2, 0x2a, 0x88,
+ 0x2f, 0xc8, 0xa5, 0x8c, 0x6e, 0x52, 0x15, 0x77, 0xbd, 0x95, 0xd5, 0xa8,
+ 0x28, 0xdc, 0xb2, 0x9c, 0xa4, 0xa3, 0x4b, 0xd0, 0xcf, 0xa6, 0xd3, 0xb4,
+ 0xe8, 0xe0, 0xf1, 0xd6, 0x80, 0xe9, 0x5e, 0xf4, 0x8c, 0x83, 0x01, 0xd5,
+ 0xdb, 0xd2, 0xe4, 0x04, 0xdc, 0xd0, 0xe0, 0xce, 0x30, 0xa9, 0xcd, 0xf4,
+ 0x92, 0x80, 0xf8, 0x61, 0x3d, 0x8b, 0xe1, 0x56, 0x97, 0xe1, 0xa4, 0x4d,
+ 0x56, 0xed, 0xcc, 0x28, 0x2d, 0x98, 0x9b, 0x1b, 0x0e, 0x0b, 0x47, 0xa9,
+ 0x5a, 0x41, 0x81, 0x83, 0xc5, 0x3b, 0x47, 0x8b, 0xf9, 0x84, 0x2b, 0x8d,
+ 0x72, 0xee, 0xae, 0x1d, 0x62, 0x28, 0x72, 0x13, 0x98, 0x01, 0xf9, 0x46,
+ 0x89, 0x80, 0xd1, 0x4e, 0x89, 0x09, 0x77, 0x64, 0xb1, 0x24, 0x95, 0x70,
+ 0x83, 0xc4, 0x89, 0x29, 0xf6, 0x37, 0x48, 0xd1, 0x52, 0x46, 0xbe, 0x61,
+ 0x34, 0xf8, 0x7b, 0x0a, 0xd7, 0x88, 0x2a, 0x39, 0x33, 0xca, 0x21, 0xcc,
+ 0x04, 0x06, 0x8b, 0xe7, 0x7b, 0x30, 0xc1, 0xda, 0x10, 0x88, 0x75, 0x8c,
+ 0x10, 0x46, 0x51, 0x39, 0x2c, 0xb2, 0x39, 0x34, 0x7d, 0x3e, 0x49, 0xd1,
+ 0xb6, 0x5c, 0xa8, 0xa9, 0xc4, 0xe7, 0x53, 0xac, 0xf0, 0x11, 0x2a, 0x54,
+ 0x7b, 0x7c, 0xcf, 0x73, 0xf4, 0xac, 0x6a, 0x30, 0xce, 0x74, 0x0e, 0x22,
+ 0x94, 0x24, 0xfe, 0x79, 0xb0, 0x88, 0x1c, 0x99, 0x4e, 0x80, 0x5a, 0x7e,
+ 0x24, 0xd1, 0x24, 0x79, 0x7f, 0x17, 0x39, 0xac, 0x1d, 0xd7, 0x76, 0x38,
+ 0x41, 0xe7, 0xa7, 0x93, 0x2a, 0x83, 0xad, 0x5c, 0xb1, 0x05, 0xf1, 0x8e,
+ 0x03, 0x38, 0x24, 0x1b, 0x20, 0x64, 0x67, 0xa9, 0x5c, 0x60, 0x34, 0x6d,
+ 0x20, 0xbc, 0xe0, 0x94, 0x7e, 0xab, 0x4b, 0x8e, 0x33, 0xf2, 0xb1, 0xe9,
+ 0x70, 0x29, 0xba, 0x16, 0xc0, 0xcd, 0xc4, 0xeb, 0xe3, 0x2d, 0xa0, 0xfe,
+ 0x00, 0x31, 0x33, 0x93, 0xed, 0x53, 0x0b, 0x45, 0x84, 0x26, 0xab, 0x76,
+ 0x7e, 0x0b, 0xb2, 0x47, 0x61, 0x7e, 0xc8, 0xca, 0x24, 0xf8, 0x0c, 0x85,
+ 0x59, 0xb4, 0xf8, 0x4b, 0x8b, 0x02, 0x7e, 0x13, 0xbd, 0xc8, 0x6f, 0x90,
+ 0x99, 0x84, 0xfc, 0xe4, 0x8a, 0xe7, 0x5d, 0x2c, 0x52, 0xc1, 0xdd, 0x48,
+ 0xdc, 0x79, 0x52, 0x74, 0xc3, 0xff, 0xc0, 0xcd, 0x33, 0x27, 0x18, 0x89,
+ 0x6f, 0xc4, 0xfc, 0x1f, 0x2a, 0x46, 0x8c, 0x66, 0x1d, 0x86, 0x8f, 0x04,
+ 0x51, 0x03, 0xa4, 0x2b, 0x0a, 0x3c, 0x84, 0x8b, 0x98, 0xf2, 0xee, 0x2e,
+ 0x2f, 0x53, 0x11, 0xeb, 0x24, 0x06, 0x17, 0x27, 0x83, 0x1e, 0x6a, 0x5c,
+ 0x41, 0x04, 0xcb, 0x2f, 0x46, 0x61, 0x18, 0x54, 0x42, 0xee, 0x37, 0x23,
+ 0xa2, 0x03, 0x98, 0x4f, 0x07, 0x1a, 0xa1, 0xd7, 0x2c, 0x76, 0xd2, 0x95,
+ 0xa4, 0x10, 0x5f, 0xc8, 0xc5, 0x73, 0xca, 0x07, 0x2d, 0x6d, 0x1e, 0xb3,
+ 0x80, 0xc4, 0xa3, 0x67, 0xde, 0xde, 0xef, 0x54, 0xb8, 0x84, 0xfc, 0x02,
+ 0xb9, 0xc5, 0xd1, 0xad, 0xd9, 0x0f, 0xc4, 0xa7, 0xe7, 0x1f, 0x2e, 0xea,
+ 0xaa, 0x34, 0x2f, 0x51, 0x2b, 0x06, 0x35, 0xae, 0x9e, 0xa3, 0x62, 0xf0,
+ 0x09, 0x7b, 0x74, 0x3e, 0x90, 0x7e, 0x3c, 0x21, 0x60, 0xc2, 0x90, 0x73,
+ 0x89, 0x05, 0x9c, 0x83, 0xd9, 0x40, 0xfb, 0x8f, 0x76, 0x1e, 0xa1, 0xcc,
+ 0x04, 0x2f, 0x2e, 0x66, 0x23, 0x83, 0xd9, 0x2c, 0x49, 0xbf, 0x14, 0xbc,
+ 0x00, 0xed, 0x4e, 0xee, 0x7c, 0x58, 0x3f, 0x5c, 0x13, 0x06, 0x24, 0x9c,
+ 0xa9, 0xbc, 0xa5, 0xde, 0x9e, 0x99, 0xf2, 0x65, 0xf2, 0x8e, 0x09, 0xeb,
+ 0xb5, 0x8c, 0xd9, 0xb7, 0x6a, 0xd8, 0x05, 0x2b, 0x94, 0xbb, 0x63, 0xdc,
+ 0x5b, 0x60, 0xb9, 0x4a, 0x5d, 0x2f, 0x5e, 0x1f, 0x3e, 0xc3, 0xde, 0x7d,
+ 0x99, 0x51, 0x28, 0x09, 0x23, 0x62, 0xf3, 0x25, 0xd2, 0x95, 0x43, 0x9a,
+ 0x38, 0x46, 0x39, 0x35, 0xa2, 0x4e, 0xf1, 0xfa, 0x7d, 0x74, 0x6b, 0x0d,
+ 0x3b, 0x5e, 0xbd, 0x6c, 0xec, 0x57, 0x59, 0x30, 0x2c, 0x58, 0x23, 0xa2,
+ 0x22, 0xb7, 0xa3, 0xa6, 0x48, 0x31, 0x3b, 0x62, 0x7e, 0x35, 0x14, 0xad,
+ 0xe0, 0xcc, 0xc0, 0x1d, 0x66, 0xb4, 0x89, 0xe3, 0xc0, 0x5d, 0x78, 0x7c,
+ 0x7b, 0xbb, 0xc5, 0x8b, 0xcb, 0x94, 0x2b, 0xcc, 0x24, 0x1e, 0xfb, 0xc0,
+ 0xd9, 0xe4, 0x36, 0x5a, 0x1e, 0xaa, 0x55, 0xbf, 0x51, 0x3f, 0xb6, 0x03,
+ 0xad, 0xde, 0xfa, 0xfa, 0x7e, 0x0c, 0x5c, 0xbc, 0xc7, 0xa1, 0x71, 0xae,
+ 0x27, 0x5c, 0xf0, 0x0d, 0xef, 0xba, 0x2f, 0x9e, 0xee, 0x36, 0xfd, 0x67,
+ 0xd8, 0x01, 0x0a, 0x21, 0x20, 0xcf, 0x05, 0x52, 0x1b, 0x5e, 0x3a, 0x36,
+ 0x77, 0x55, 0x01, 0x59, 0xd5, 0x41, 0xaf, 0x30, 0x7d, 0x8c, 0x75, 0x8e,
+ 0x54, 0xbf, 0x3f, 0x41, 0xc4, 0xe6, 0x37, 0x27, 0xcf, 0xdf, 0xf6, 0x4f,
+ 0x9e, 0x21, 0x69, 0x24, 0xa1, 0x3c, 0x4c, 0xa2, 0x45, 0xe6, 0x01, 0x55,
+ 0xce, 0xa6, 0x5e, 0x33, 0x54, 0x57, 0x6e, 0xa1, 0xb3, 0xc6, 0xfa, 0x99,
+ 0x8a, 0x2e, 0xa1, 0xeb, 0xbb, 0x4d, 0x90, 0x69, 0x38, 0x4c, 0x1b, 0xf3,
+ 0xf4, 0x3d, 0xf8, 0x8d, 0x3d, 0x7f, 0x48, 0xbc, 0x67, 0xa3, 0x8f, 0x07,
+ 0xed, 0x7b, 0x6d, 0x90, 0x4a, 0x0b, 0x0f, 0xd8, 0xf6, 0x5a, 0x72, 0x94,
+ 0x43, 0x8b, 0xcb, 0x6a, 0xb6, 0x39, 0x99, 0x54, 0xd1, 0xa1, 0xe4, 0x0a,
+ 0x36, 0xed, 0x57, 0xaf, 0x8c, 0xe2, 0x0b, 0x32, 0x61, 0x3a, 0x17, 0x64,
+ 0xfb, 0x29, 0x30, 0x4b, 0x0e, 0xb7, 0x43, 0x75, 0x55, 0x6f, 0x69, 0x8a,
+ 0xea, 0x54, 0xb9, 0x83, 0xec, 0xce, 0x61, 0x8a, 0x40, 0xbe, 0xcd, 0x01,
+ 0x14, 0x7c, 0x5f, 0xab, 0x62, 0xd9, 0x24, 0x97, 0xcd, 0xac, 0x6a, 0x04,
+ 0xa6, 0x7a, 0xbb, 0x44, 0xd7, 0x0d, 0x56, 0x32, 0x45, 0x19, 0x8d, 0x06,
+ 0x93, 0x4c, 0x2e, 0x73, 0xb8, 0xd6, 0xaf, 0xa6, 0x06, 0x8c, 0x9f, 0xcb,
+ 0x49, 0x95, 0x9c, 0x00, 0x5a, 0x97, 0x76, 0x83, 0x6a, 0x31, 0x65, 0x84,
+ 0xa5, 0x02, 0xd7, 0x3a, 0x76, 0xd9, 0x37, 0x2d, 0x38, 0x1b, 0xb9, 0xfa,
+ 0x52, 0xf5, 0x84, 0xd6, 0x83, 0x97, 0xd0, 0xd3, 0x63, 0x7f, 0x4b, 0x8b,
+ 0xbc, 0x19, 0x10, 0xa3, 0x8e, 0x06, 0xbd, 0x2a, 0xdd, 0xb1, 0xb7, 0xb9,
+ 0x5c, 0xed, 0x2e, 0x7d, 0x46, 0x8c, 0x18, 0x67, 0x14, 0x8f, 0x3f, 0x84,
+ 0x50, 0x7d, 0x02, 0x9c, 0x26, 0xb7, 0x1c, 0xcd, 0xd2, 0x46, 0x83, 0x0c,
+ 0x24, 0x95, 0xaa, 0x79, 0xa4, 0x60, 0xcb, 0x13, 0xd9, 0x79, 0x6c, 0x5a,
+ 0x06, 0xa3, 0x8d, 0xd8, 0xcc, 0x6f, 0x96, 0x84, 0xd1, 0x37, 0xe9, 0xa7,
+ 0x92, 0x50, 0x0d, 0x63, 0x59, 0x0c, 0x0a, 0x6f, 0x4b, 0xf0, 0x6a, 0x46,
+ 0x17, 0xd7, 0x26, 0x62, 0xa6, 0xc9, 0xc0, 0xb6, 0xf0, 0x63, 0xb2, 0x89,
+ 0x24, 0x0a, 0xa5, 0x48, 0xdd, 0x07, 0x42, 0x8b, 0x59, 0x36, 0x2b, 0xf0,
+ 0x00, 0xa8, 0xcb, 0x8f, 0xe3, 0x19, 0x29, 0x7b, 0x91, 0x10, 0xc1, 0xb3,
+ 0xa1, 0x8a, 0x3a, 0x63, 0x63, 0xb3, 0x28, 0xf0, 0xe5, 0xa6, 0x59, 0x91,
+ 0x64, 0x41, 0x6d, 0x28, 0xe5, 0x16, 0xba, 0x6e, 0xe6, 0xb7, 0x19, 0x3a,
+ 0x95, 0x05, 0x20, 0x77, 0x2a, 0x08, 0x96, 0xc8, 0xd9, 0x02, 0x78, 0x85,
+ 0x82, 0x1d, 0x22, 0xa9, 0xc4, 0x28, 0xce, 0x31, 0xc2, 0x33, 0x4d, 0x0c,
+ 0xcf, 0xa1, 0xa4, 0xb1, 0x9b, 0x11, 0xd3, 0x4e, 0x40, 0x43, 0x59, 0x8e,
+ 0x70, 0x74, 0xb9, 0x07, 0x4f, 0x3e, 0x65, 0x9b, 0x2e, 0xd7, 0xce, 0x93,
+ 0x11, 0x6d, 0x94, 0x16, 0x53, 0x20, 0xc3, 0xc0, 0x3e, 0xf2, 0x5a, 0x4d,
+ 0x29, 0xda, 0x4c, 0x77, 0xb7, 0x87, 0xa4, 0x50, 0x2d, 0x89, 0x39, 0x85,
+ 0xeb, 0x86, 0x0e, 0x4c, 0xc5, 0x92, 0xae, 0xda, 0x74, 0xe4, 0xf4, 0xb6,
+ 0x65, 0xce, 0xd6, 0x29, 0xa8, 0x5e, 0xb1, 0xcd, 0x8b, 0x48, 0xf8, 0xa4,
+ 0x35, 0x6a, 0x1b, 0x43, 0xd9, 0xdf, 0x31, 0xa7, 0x64, 0x77, 0xe7, 0xa3,
+ 0x1c, 0x94, 0xe8, 0x70, 0xb6, 0x98, 0x7e, 0xe3, 0x2f, 0x83, 0xcf, 0x38,
+ 0xe9, 0x7c, 0x08, 0xea, 0x8c, 0xf5, 0xff, 0x31, 0xdd, 0x93, 0xb2, 0x23,
+ 0x10, 0xd4, 0xed, 0xfc, 0xd9, 0x4d, 0x3d, 0x97, 0x93, 0x77, 0x55, 0x4f,
+ 0x7f, 0xa7, 0x4b, 0x54, 0xce, 0xdf, 0x25, 0xeb, 0xe1, 0x8b, 0x79, 0xcf,
+ 0x9b, 0x93, 0x72, 0x49, 0x63, 0x9d, 0x87, 0xee, 0x77, 0x24, 0x3f, 0x56,
+ 0xbc, 0x92, 0x78, 0x0d, 0xcb, 0x2e, 0x6b, 0xc0, 0x01, 0xed, 0x63, 0xd5,
+ 0x96, 0xad, 0x4f, 0x9c, 0xdc, 0x4c, 0x59, 0xe6, 0x2c, 0x76, 0x7a, 0xae,
+ 0x45, 0x79, 0x20, 0x40, 0x03, 0x40, 0x40, 0x5d, 0x85, 0x44, 0x07, 0xc1,
+ 0xd2, 0xb7, 0x33, 0x3a, 0x7a, 0x48, 0x6e, 0xab, 0x49, 0x3d, 0xda, 0xf9,
+ 0xb2, 0x1b, 0x3d, 0xda, 0xfb, 0xaa, 0x8b, 0xf0, 0x49, 0xf8, 0xcf, 0x1e,
+ 0xfe, 0xb3, 0x8f, 0x8f, 0x3c, 0x06, 0x75, 0x61, 0x89, 0x98, 0x1c, 0x4e,
+ 0x37, 0x17, 0xec, 0x0a, 0xbc, 0x41, 0x06, 0xf9, 0xc2, 0x91, 0x98, 0x13,
+ 0x67, 0xc1, 0x35, 0x56, 0x97, 0x19, 0x19, 0xc1, 0x45, 0xe4, 0x33, 0x3f,
+ 0xab, 0x8e, 0xd2, 0xeb, 0x45, 0x4d, 0xb1, 0xc9, 0x19, 0xf0, 0xb3, 0xba,
+ 0x02, 0xa2, 0xc2, 0xc5, 0xd6, 0xb5, 0xd4, 0x06, 0x61, 0x89, 0x17, 0x1c,
+ 0xe2, 0xec, 0x63, 0xa7, 0x27, 0x19, 0x27, 0xd5, 0x09, 0x2a, 0x03, 0xc2,
+ 0x06, 0x64, 0xca, 0x7f, 0x4a, 0x24, 0x5c, 0x36, 0x2c, 0x6b, 0xc9, 0x77,
+ 0xea, 0xd3, 0x54, 0xdd, 0x0b, 0xec, 0xcf, 0x84, 0xec, 0x3a, 0x5a, 0x04,
+ 0x87, 0xd0, 0x89, 0x9c, 0xb0, 0x7c, 0x3e, 0xc9, 0xec, 0xc2, 0x90, 0x98,
+ 0xaa, 0xda, 0xcd, 0x12, 0x72, 0xfc, 0x9b, 0x04, 0x10, 0xb1, 0x66, 0xa7,
+ 0xb7, 0xb0, 0xf6, 0x5c, 0xe5, 0x32, 0x32, 0xb7, 0xa7, 0xbd, 0xf5, 0x7b,
+ 0x4e, 0x60, 0x6c, 0xc0, 0x5e, 0x58, 0x3b, 0xa2, 0xb0, 0x0d, 0xcc, 0xcf,
+ 0x88, 0x1f, 0xe7, 0x95, 0x5c, 0xa6, 0x06, 0xa8, 0x80, 0x0d, 0xa9, 0x61,
+ 0xf6, 0xd3, 0x27, 0x85, 0x99, 0xf6, 0xf5, 0x69, 0xef, 0xc9, 0x13, 0x53,
+ 0x98, 0x82, 0x51, 0xa4, 0x10, 0x2b, 0xe4, 0xce, 0x64, 0xd3, 0xa5, 0x62,
+ 0xb4, 0x8b, 0x8f, 0xd0, 0x8a, 0x7f, 0x10, 0x85, 0x2c, 0x9c, 0xa2, 0x2f,
+ 0x49, 0x2a, 0x32, 0xdc, 0x11, 0x54, 0xeb, 0x8b, 0xe2, 0xcc, 0x52, 0x42,
+ 0xc4, 0x87, 0xc1, 0xbe, 0x9f, 0xe5, 0x37, 0x1a, 0x55, 0x29, 0x81, 0x63,
+ 0x0a, 0x25, 0x12, 0x42, 0x25, 0x58, 0x22, 0x4e, 0x7c, 0x3e, 0x48, 0x1c,
+ 0xea, 0xfd, 0xe9, 0x43, 0xf8, 0xa1, 0xbd, 0x49, 0x1c, 0xc6, 0x58, 0x26,
+ 0xe5, 0x24, 0xc6, 0xb2, 0xb2, 0xbf, 0x65, 0xa3, 0xe8, 0x30, 0xa3, 0xf2,
+ 0xa7, 0xd5, 0xdd, 0x37, 0xc1, 0xe2, 0x95, 0x78, 0xfc, 0xe0, 0x49, 0xa0,
+ 0x93, 0xdf, 0xd8, 0x0c, 0xa2, 0x8f, 0x47, 0x9b, 0xd2, 0xc2, 0x56, 0x57,
+ 0xc3, 0x3b, 0xfb, 0x47, 0xfd, 0xd3, 0xe8, 0xfc, 0xf4, 0xe8, 0xe5, 0x6b,
+ 0x78, 0x27, 0xf6, 0x1d, 0x89, 0xa6, 0x88, 0x6d, 0x97, 0x03, 0xfc, 0xeb,
+ 0x2a, 0x53, 0xa3, 0xce, 0xad, 0xe9, 0x87, 0x3b, 0xf2, 0xab, 0x48, 0x8e,
+ 0x48, 0xd4, 0xa8, 0x21, 0x73, 0xc6, 0x0b, 0xcd, 0xef, 0x6d, 0x2f, 0x34,
+ 0x68, 0x0d, 0xbe, 0xb5, 0x1a, 0x83, 0x2e, 0x3e, 0x16, 0x6f, 0x1d, 0x90,
+ 0x14, 0x1a, 0x70, 0x78, 0x68, 0xfe, 0x6c, 0x70, 0xed, 0x4c, 0x22, 0x2d,
+ 0x8e, 0x10, 0x46, 0xc4, 0xf6, 0x02, 0xa0, 0x43, 0xa7, 0x59, 0x2a, 0xf7,
+ 0x6b, 0xf0, 0xb3, 0xb4, 0x70, 0x6c, 0x30, 0xef, 0x17, 0x98, 0x1d, 0xee,
+ 0x2b, 0x82, 0x4e, 0xc9, 0x32, 0x21, 0x5f, 0x69, 0x60, 0x29, 0x0a, 0xfc,
+ 0xb9, 0x7a, 0xd3, 0x70, 0xb2, 0x1b, 0xa5, 0xe7, 0xee, 0x18, 0xe4, 0xb7,
+ 0x5d, 0x5b, 0xbd, 0x88, 0xd0, 0x94, 0x4d, 0x36, 0xd7, 0x25, 0x70, 0x4f,
+ 0x2a, 0xfc, 0xc9, 0x2d, 0x41, 0xa3, 0x5d, 0x03, 0xee, 0x57, 0x5e, 0x25,
+ 0x3e, 0xd0, 0xe3, 0x14, 0x14, 0x0e, 0x68, 0xd0, 0x0d, 0xb1, 0x69, 0x91,
+ 0x2c, 0x6a, 0x94, 0xf5, 0xb9, 0xca, 0x7c, 0xd7, 0x06, 0x41, 0x03, 0x99,
+ 0x26, 0x6b, 0x84, 0x32, 0x60, 0xb4, 0xdb, 0x2c, 0xd6, 0xa8, 0x2f, 0x57,
+ 0x15, 0x44, 0x8e, 0xe5, 0x9d, 0xa3, 0xac, 0x29, 0xda, 0x9e, 0xcc, 0x58,
+ 0xf9, 0x95, 0x8c, 0x7f, 0x0b, 0x3d, 0x37, 0xe3, 0x03, 0x52, 0xa7, 0xf3,
+ 0xa5, 0x26, 0x18, 0xe9, 0x60, 0x2d, 0x14, 0x8b, 0x26, 0x29, 0xf8, 0x3a,
+ 0xb8, 0xb4, 0xfa, 0xa0, 0x65, 0x85, 0xc1, 0xac, 0xb7, 0x9a, 0xee, 0x66,
+ 0xd4, 0x16, 0x73, 0xbf, 0x61, 0x65, 0xc1, 0x23, 0x00, 0xe2, 0x3e, 0x47,
+ 0xd7, 0x07, 0x6b, 0xd1, 0xbb, 0x76, 0x8f, 0x7a, 0xa1, 0x44, 0x89, 0xcd,
+ 0xd2, 0x13, 0x8c, 0x5a, 0x03, 0x35, 0x43, 0x90, 0xa2, 0xe7, 0xaf, 0x4f,
+ 0xbe, 0x3f, 0x6b, 0x8f, 0x9b, 0xe1, 0xde, 0x67, 0xa9, 0x96, 0xdd, 0xf6,
+ 0x07, 0xc3, 0x15, 0x70, 0x11, 0xa1, 0x99, 0x3d, 0xa8, 0xa1, 0x3a, 0xa7,
+ 0xf4, 0xc4, 0xb6, 0xe4, 0xd0, 0x07, 0x53, 0x6e, 0xe8, 0x1e, 0xa9, 0xb5,
+ 0x7b, 0xdf, 0xf3, 0xf1, 0xf1, 0x0f, 0x88, 0x3b, 0x0a, 0x77, 0xe4, 0x6b,
+ 0xde, 0x30, 0x76, 0xd1, 0xdc, 0xea, 0x84, 0x6e, 0xeb, 0xb5, 0x1d, 0x7f,
+ 0x54, 0x8f, 0x4b, 0xef, 0x53, 0xa5, 0xb9, 0xab, 0xfc, 0xa6, 0x3d, 0x45,
+ 0x82, 0x78, 0x1e, 0x13, 0x6e, 0x49, 0x4f, 0x63, 0x56, 0x0f, 0x07, 0x49,
+ 0x3a, 0xc2, 0x30, 0xb6, 0x61, 0x13, 0x28, 0x60, 0xfd, 0xca, 0xe4, 0x32,
+ 0x50, 0x2c, 0x34, 0xe3, 0x6a, 0x2e, 0xcb, 0xcb, 0x83, 0xa0, 0x46, 0x37,
+ 0xc9, 0x07, 0xb0, 0x13, 0x5c, 0xa6, 0x5d, 0x8c, 0xbe, 0x1a, 0xf1, 0x58,
+ 0x43, 0x35, 0xd5, 0x9c, 0xdc, 0x00, 0x00, 0x1f, 0x08, 0x6f, 0xf1, 0x41,
+ 0x97, 0x96, 0xe8, 0xb6, 0x5a, 0x7e, 0xc4, 0xcd, 0x02, 0xdc, 0xfb, 0x94,
+ 0x7b, 0x2e, 0xb0, 0x16, 0x5b, 0x9b, 0x6d, 0x7a, 0x6d, 0x02, 0xb1, 0x83,
+ 0xd2, 0x45, 0x5f, 0x97, 0x34, 0xa8, 0x66, 0xdb, 0x25, 0x95, 0x91, 0x9b,
+ 0xa6, 0x55, 0x0d, 0x59, 0xc3, 0xd9, 0x4a, 0x4f, 0x3e, 0xa4, 0xae, 0xa0,
+ 0xdb, 0x7f, 0x2c, 0x32, 0x82, 0xb4, 0x02, 0xe5, 0x40, 0x3d, 0x93, 0xb4,
+ 0xcd, 0xda, 0x68, 0x44, 0x8d, 0xd2, 0xad, 0x65, 0x34, 0x19, 0x6f, 0x61,
+ 0x90, 0x0e, 0x50, 0x72, 0x7e, 0x45, 0xb4, 0x12, 0x1d, 0x93, 0x3e, 0x31,
+ 0x5d, 0x20, 0xfe, 0xdb, 0xcb, 0x4a, 0xab, 0xfd, 0x10, 0x6a, 0x82, 0xa4,
+ 0xd7, 0x2a, 0x7c, 0x31, 0x01, 0xfa, 0x95, 0xef, 0x7d, 0xab, 0x40, 0x37,
+ 0x9a, 0xe7, 0x15, 0xcb, 0xd1, 0x58, 0x35, 0xed, 0x3a, 0x35, 0xd2, 0x0b,
+ 0x8c, 0x06, 0xa4, 0xfe, 0x64, 0xb2, 0x5d, 0x56, 0x23, 0xd4, 0x56, 0x16,
+ 0xb3, 0x09, 0x0e, 0x13, 0x5b, 0x52, 0x87, 0x92, 0xc7, 0x99, 0x43, 0x85,
+ 0x66, 0xa3, 0xfa, 0xf2, 0x7b, 0x72, 0x52, 0x4d, 0xf5, 0x57, 0x29, 0x5f,
+ 0x57, 0xc5, 0x43, 0xf7, 0xc5, 0x35, 0x42, 0x91, 0x84, 0xa7, 0x49, 0x2b,
+ 0x58, 0x3b, 0x25, 0xe5, 0x72, 0xda, 0xe4, 0xed, 0xb8, 0x17, 0x5d, 0xae,
+ 0x71, 0xfd, 0x50, 0xab, 0x6b, 0x92, 0xe4, 0x9a, 0x56, 0xfd, 0x6b, 0x24,
+ 0x31, 0x60, 0x68, 0x83, 0xbc, 0x24, 0xc0, 0x1d, 0xd8, 0x14, 0x98, 0xb7,
+ 0xb0, 0xa9, 0x65, 0xb4, 0xc9, 0xa5, 0x2f, 0x1f, 0xad, 0x2c, 0xa4, 0x5a,
+ 0x0f, 0xf3, 0xa2, 0x62, 0xe6, 0x8f, 0x56, 0x56, 0x50, 0xe5, 0x37, 0xfc,
+ 0x4a, 0x48, 0x2b, 0x6a, 0xa8, 0x42, 0x87, 0xc6, 0x68, 0x2a, 0x25, 0xd0,
+ 0x41, 0x68, 0xbb, 0x9b, 0xa7, 0x4b, 0xaa, 0x65, 0x06, 0xa2, 0x81, 0x2c,
+ 0x70, 0x89, 0x2d, 0xd5, 0x67, 0x83, 0xec, 0x8c, 0x1c, 0x1e, 0x2a, 0x48,
+ 0x1d, 0x2c, 0x43, 0x29, 0xc0, 0x21, 0x5c, 0x49, 0x11, 0xaf, 0x64, 0x74,
+ 0xe7, 0xdf, 0x46, 0x5a, 0xab, 0x5d, 0x46, 0xda, 0x15, 0x2c, 0x4c, 0x53,
+ 0x55, 0x3d, 0x14, 0x64, 0x88, 0x9f, 0x77, 0xb9, 0x0e, 0xbb, 0xad, 0x36,
+ 0xbf, 0x56, 0x1d, 0xf6, 0x46, 0x30, 0xbe, 0xa9, 0xeb, 0x8d, 0xe1, 0x1e,
+ 0x06, 0x0b, 0x4a, 0x39, 0xb3, 0x5b, 0x83, 0x94, 0x53, 0x5c, 0xef, 0x02,
+ 0xfe, 0x65, 0x60, 0x14, 0x0b, 0x29, 0x8e, 0x38, 0x9c, 0x80, 0xe2, 0x1d,
+ 0x08, 0xa6, 0x69, 0xdc, 0x1c, 0xe5, 0x02, 0x4d, 0x44, 0x93, 0x05, 0xf6,
+ 0x65, 0x7c, 0xc3, 0x5c, 0xc7, 0xdb, 0xa0, 0xac, 0x08, 0x7d, 0xf1, 0xb2,
+ 0x85, 0x5d, 0x35, 0xbc, 0xa2, 0xac, 0xea, 0x27, 0x76, 0x3d, 0x9a, 0xe5,
+ 0x92, 0x5b, 0xb4, 0x6b, 0xf6, 0x58, 0x74, 0x9d, 0xc2, 0xad, 0xb5, 0x48,
+ 0x9f, 0x2a, 0x77, 0x06, 0x43, 0x74, 0x2b, 0x3b, 0x98, 0x84, 0x2a, 0x9b,
+ 0x9b, 0xd4, 0x4f, 0xb7, 0x9e, 0xb2, 0xbd, 0x95, 0x15, 0x33, 0x1c, 0xff,
+ 0xe9, 0x1b, 0xf2, 0x9f, 0x71, 0xe4, 0x49, 0x73, 0x49, 0x23, 0xce, 0x13,
+ 0xe4, 0xa4, 0x42, 0x32, 0xd7, 0x48, 0x5c, 0x4f, 0xa9, 0x3c, 0xb4, 0x36,
+ 0x1c, 0x35, 0xd6, 0xe8, 0x43, 0xcd, 0xa0, 0x6e, 0x2d, 0x92, 0x4a, 0x2f,
+ 0x6d, 0xd5, 0xc2, 0xed, 0x81, 0xbf, 0xb9, 0x23, 0x0a, 0x4b, 0x62, 0xbc,
+ 0x0f, 0xeb, 0xc9, 0x60, 0xd1, 0xc7, 0xab, 0xd3, 0x28, 0xfd, 0x23, 0x7d,
+ 0xe3, 0xb9, 0x3c, 0x78, 0xb4, 0xf3, 0xd5, 0x93, 0x87, 0x54, 0x86, 0x7e,
+ 0x94, 0x78, 0x05, 0x7b, 0xf9, 0x8f, 0x58, 0x9b, 0xf6, 0xb9, 0x5b, 0xf2,
+ 0x20, 0xf6, 0x96, 0xdc, 0x8f, 0xbf, 0xb5, 0x40, 0x48, 0x2f, 0xe3, 0x6f,
+ 0x5c, 0xfa, 0xbc, 0x7c, 0x5f, 0xd6, 0x4a, 0xed, 0xa2, 0xc9, 0xb5, 0x25,
+ 0xaa, 0xcd, 0xc6, 0x86, 0x06, 0x45, 0x6d, 0xe0, 0x4e, 0x86, 0xc8, 0x4d,
+ 0x0d, 0x69, 0x4e, 0x9f, 0x25, 0x16, 0x25, 0x1c, 0x4a, 0x19, 0x14, 0xb2,
+ 0x05, 0xcb, 0x9e, 0xee, 0xc3, 0x9d, 0x92, 0x07, 0xb1, 0x27, 0x85, 0x89,
+ 0xb8, 0x3f, 0x73, 0x52, 0x1f, 0xca, 0xbf, 0x9b, 0x3d, 0x25, 0xeb, 0xb2,
+ 0xa7, 0xe4, 0x33, 0xf1, 0xa7, 0x87, 0x32, 0xa8, 0x20, 0x7f, 0x7a, 0x10,
+ 0x7b, 0xfa, 0x34, 0xfc, 0xc9, 0x39, 0xaa, 0x9f, 0xa9, 0x8e, 0xac, 0x76,
+ 0xff, 0xe1, 0x0c, 0x6a, 0x6d, 0xfe, 0xf4, 0x98, 0x0b, 0xdc, 0x37, 0x89,
+ 0xd9, 0x4b, 0x4d, 0x46, 0xab, 0x16, 0x36, 0xb0, 0x8d, 0xf2, 0x0c, 0xa5,
+ 0xd9, 0x35, 0x4c, 0x88, 0x37, 0xce, 0xfd, 0x11, 0xce, 0x09, 0xc9, 0x95,
+ 0xc8, 0x1e, 0x2b, 0x71, 0x98, 0xfa, 0x64, 0x4b, 0x5b, 0xf6, 0x9c, 0xe0,
+ 0x0a, 0x83, 0x6b, 0x63, 0x38, 0x7b, 0xcc, 0x49, 0xcd, 0x9c, 0x2e, 0x41,
+ 0xe0, 0x9e, 0x67, 0xc4, 0xd5, 0x80, 0xc5, 0x60, 0x5d, 0x98, 0xef, 0xfb,
+ 0xfd, 0xf8, 0xe8, 0xfc, 0x65, 0xb4, 0xc2, 0x58, 0x8a, 0xaf, 0x38, 0x63,
+ 0xcc, 0x56, 0x09, 0xed, 0xce, 0x12, 0x7e, 0x82, 0x72, 0xf3, 0xb5, 0xe6,
+ 0xcd, 0xc6, 0x7e, 0x30, 0x95, 0x3c, 0x5e, 0x96, 0x40, 0x5c, 0x5f, 0x42,
+ 0xd0, 0xa9, 0x9b, 0xb4, 0x71, 0x54, 0x46, 0x35, 0x2c, 0x23, 0x5d, 0x59,
+ 0x35, 0x50, 0x90, 0xc5, 0x88, 0xf8, 0x13, 0x17, 0x96, 0xe1, 0xf2, 0x7c,
+ 0x78, 0x69, 0xd1, 0x03, 0x9e, 0x42, 0x8d, 0x10, 0xc8, 0x54, 0xbc, 0x74,
+ 0xf7, 0xab, 0x27, 0xbb, 0xc0, 0x63, 0xee, 0x38, 0x34, 0x55, 0x5e, 0x7e,
+ 0xd4, 0xdb, 0xdf, 0x7e, 0xd4, 0x7b, 0x84, 0x57, 0x9a, 0xa4, 0xd2, 0x50,
+ 0x96, 0x84, 0x34, 0x1f, 0x0e, 0xf4, 0x64, 0x6e, 0xf5, 0xfa, 0xe4, 0x38,
+ 0x62, 0x2c, 0x9c, 0x94, 0x2a, 0x03, 0xd5, 0xcd, 0xbd, 0x0e, 0x48, 0x9f,
+ 0xd0, 0x21, 0xf3, 0x6e, 0xcf, 0x23, 0xe3, 0x2d, 0x87, 0x9a, 0xc3, 0xc8,
+ 0xd6, 0x3b, 0x33, 0x03, 0xc1, 0xab, 0x81, 0x2d, 0x63, 0xb2, 0x2e, 0x38,
+ 0x46, 0x1f, 0x9d, 0xd7, 0x59, 0x12, 0x67, 0xc1, 0x96, 0xc7, 0x0a, 0xf9,
+ 0x43, 0xf8, 0xf8, 0xb1, 0x42, 0x5e, 0x1f, 0x0f, 0xa4, 0x55, 0x67, 0x90,
+ 0x1f, 0x93, 0x60, 0x5b, 0xe9, 0x53, 0x4d, 0x90, 0x2d, 0x46, 0x4c, 0x1b,
+ 0xc6, 0xe2, 0xd9, 0x2a, 0xe5, 0x3a, 0x55, 0x77, 0x00, 0x7a, 0xa4, 0x87,
+ 0x53, 0x63, 0x56, 0x1c, 0xff, 0x63, 0x34, 0xeb, 0xad, 0x6b, 0x13, 0xcd,
+ 0xaa, 0xa5, 0xa6, 0x4f, 0xb3, 0x20, 0xcc, 0xff, 0xc4, 0xe0, 0xd9, 0x36,
+ 0x23, 0x36, 0x16, 0x7a, 0xa5, 0xa4, 0xf1, 0x08, 0x20, 0x43, 0x66, 0x53,
+ 0xa2, 0xd3, 0x90, 0x69, 0x7d, 0x59, 0xe3, 0x01, 0x57, 0x88, 0xed, 0x6b,
+ 0xbb, 0x48, 0x93, 0x89, 0xbc, 0x28, 0xd6, 0x57, 0x52, 0x27, 0xbd, 0x2f,
+ 0x71, 0xf9, 0x28, 0x7f, 0xc6, 0x87, 0x8e, 0x90, 0x58, 0x17, 0x67, 0x0c,
+ 0xc6, 0xae, 0x37, 0x4d, 0x2a, 0x76, 0xd0, 0x62, 0x4d, 0xfb, 0xd9, 0x30,
+ 0x9b, 0xc3, 0xe5, 0xba, 0xc4, 0x7a, 0x1b, 0x5c, 0x94, 0x25, 0x17, 0xb4,
+ 0x05, 0x73, 0xf0, 0x26, 0x59, 0x7d, 0x84, 0xe0, 0x89, 0xf0, 0x78, 0xd8,
+ 0x58, 0xfd, 0xef, 0xa0, 0xf4, 0xe0, 0x0d, 0x2d, 0x06, 0x08, 0x2d, 0x82,
+ 0xa1, 0xac, 0x78, 0xc9, 0xd5, 0x2c, 0xd9, 0xd2, 0xcd, 0xa8, 0x8a, 0xc0,
+ 0xbd, 0xdc, 0xd2, 0x18, 0x96, 0xaf, 0xb3, 0xf7, 0xaf, 0x1e, 0xaf, 0xa6,
+ 0x40, 0x96, 0x8d, 0x23, 0x53, 0x49, 0x00, 0x7d, 0xcd, 0x36, 0x88, 0x4e,
+ 0x9b, 0x95, 0x92, 0x2d, 0x5b, 0xcd, 0xab, 0x3b, 0x24, 0x8e, 0x54, 0xb9,
+ 0x5c, 0xe3, 0x2b, 0x65, 0x85, 0x07, 0x5d, 0xdf, 0x22, 0x2d, 0x04, 0xee,
+ 0xef, 0x3a, 0xe2, 0xe6, 0x9a, 0x51, 0xb7, 0xb5, 0xd6, 0x3f, 0x88, 0xdc,
+ 0xfe, 0xdd, 0x77, 0xbf, 0xf6, 0xb2, 0x52, 0x75, 0xad, 0x65, 0xac, 0x62,
+ 0x3c, 0x93, 0x4b, 0x47, 0xd1, 0x26, 0xa5, 0x34, 0x19, 0x90, 0x70, 0xfc,
+ 0x48, 0x4d, 0x65, 0xbe, 0xed, 0xcb, 0x68, 0x98, 0x5b, 0x2b, 0x8d, 0x7a,
+ 0x46, 0xc9, 0x8d, 0x18, 0x89, 0x8d, 0xd4, 0x5c, 0x4f, 0xac, 0x70, 0x94,
+ 0xde, 0x7f, 0xb7, 0xce, 0xfa, 0xf8, 0xea, 0x7f, 0x91, 0xce, 0xfa, 0x10,
+ 0xa5, 0x95, 0x09, 0x31, 0x0e, 0x61, 0x4c, 0xf3, 0x72, 0xb6, 0xab, 0xaf,
+ 0xb4, 0x36, 0xff, 0x57, 0x7d, 0xfd, 0xf8, 0xea, 0xab, 0x73, 0x6c, 0x5b,
+ 0x82, 0x0c, 0xff, 0x1d, 0x31, 0x86, 0xcd, 0xa1, 0xf0, 0xb0, 0x85, 0x41,
+ 0x1d, 0x3c, 0xc5, 0x62, 0x29, 0x0f, 0xe1, 0x5a, 0xae, 0x36, 0xfb, 0x28,
+ 0xf1, 0x59, 0xd6, 0x43, 0x8c, 0x6c, 0xca, 0xa6, 0x62, 0x41, 0xe1, 0x69,
+ 0x58, 0xbb, 0x04, 0xcb, 0x32, 0x08, 0xda, 0x37, 0xb9, 0x73, 0x61, 0xbf,
+ 0x39, 0x79, 0x76, 0x19, 0xa3, 0xaa, 0x59, 0xe3, 0x9a, 0x46, 0xff, 0x65,
+ 0x6c, 0xea, 0x93, 0x1a, 0xfe, 0x1f, 0xff, 0xff, 0xb6, 0xe1, 0xff, 0xf1,
+ 0xba, 0x86, 0xff, 0xc7, 0xff, 0xd7, 0xf0, 0xff, 0xf1, 0x38, 0x93, 0xbb,
+ 0x6b, 0x9b, 0x98, 0xc9, 0x88, 0xa9, 0xa6, 0xf0, 0x53, 0x0f, 0xf1, 0x96,
+ 0x55, 0x0c, 0x10, 0x11, 0x98, 0xa7, 0xfa, 0xf2, 0xfc, 0x6f, 0x4f, 0xba,
+ 0x54, 0x68, 0xaf, 0xef, 0xd7, 0x9c, 0x3c, 0x7d, 0x76, 0x74, 0xbe, 0x94,
+ 0x01, 0x46, 0x9f, 0xd5, 0x7e, 0xf7, 0xf8, 0x63, 0xf1, 0x3a, 0xcb, 0x3c,
+ 0xdb, 0x98, 0xde, 0xdf, 0xc9, 0xcc, 0x37, 0x4f, 0xd3, 0x11, 0x17, 0x1f,
+ 0x8a, 0x0e, 0xe9, 0x8f, 0xf6, 0xc8, 0x6b, 0xa9, 0xe0, 0x56, 0x62, 0xd4,
+ 0x68, 0xe1, 0x05, 0xd4, 0xd3, 0xcb, 0x20, 0xb3, 0xcf, 0xa4, 0xb4, 0xaa,
+ 0x54, 0xb3, 0x8a, 0xbd, 0xdc, 0x93, 0xd1, 0x96, 0x20, 0x45, 0x71, 0xdf,
+ 0x44, 0xb2, 0x5a, 0xc1, 0x0b, 0x46, 0x71, 0x89, 0x75, 0xe7, 0x93, 0x01,
+ 0x15, 0x4c, 0xeb, 0xb9, 0xcf, 0x30, 0x4a, 0x45, 0xf8, 0x1c, 0x3a, 0x8f,
+ 0x11, 0x84, 0x6a, 0x89, 0x71, 0xe9, 0x54, 0xdf, 0x8c, 0xb6, 0xaa, 0x45,
+ 0x39, 0x74, 0xe6, 0xfe, 0xf9, 0x32, 0x4e, 0xdc, 0x51, 0xec, 0xef, 0xec,
+ 0xd4, 0x27, 0xb3, 0x6e, 0x48, 0xfd, 0x5d, 0xb7, 0xf6, 0x7e, 0x37, 0x50,
+ 0x58, 0x6a, 0xda, 0x75, 0xb3, 0x15, 0x2c, 0x39, 0x34, 0x5e, 0x6d, 0xcd,
+ 0x52, 0xa9, 0xd3, 0x43, 0xb1, 0x98, 0xd5, 0x29, 0xc2, 0x9d, 0x4e, 0x8d,
+ 0x10, 0x30, 0x9e, 0x7b, 0xb4, 0x28, 0x42, 0x56, 0xdd, 0xc4, 0xdd, 0x66,
+ 0xce, 0xc9, 0xe8, 0xd6, 0xd3, 0x5f, 0x33, 0x87, 0x24, 0xf0, 0xb0, 0xda,
+ 0xe7, 0x9b, 0xcd, 0x95, 0x0e, 0x4e, 0xaf, 0x63, 0xb7, 0x71, 0x46, 0xa5,
+ 0x9b, 0xb5, 0xab, 0x11, 0x1f, 0x16, 0xd8, 0xec, 0xef, 0x7e, 0xd2, 0xa5,
+ 0xf3, 0xe6, 0x72, 0xf8, 0x87, 0x7c, 0x56, 0x15, 0xf9, 0xa4, 0x74, 0x92,
+ 0xcd, 0xe9, 0x2c, 0xe4, 0xd0, 0x2e, 0x07, 0x93, 0x60, 0x70, 0xe2, 0x16,
+ 0x49, 0x09, 0x2d, 0x88, 0x6d, 0x09, 0x97, 0x33, 0xa4, 0xe5, 0xb4, 0x0c,
+ 0x37, 0xad, 0x86, 0xa2, 0xcb, 0x70, 0x3e, 0x36, 0xe2, 0x3c, 0xc0, 0xe5,
+ 0x51, 0x70, 0x50, 0x3c, 0xdc, 0x5a, 0x5d, 0x46, 0x17, 0xf1, 0x74, 0x21,
+ 0x07, 0x85, 0x41, 0x72, 0x4c, 0x5a, 0xe0, 0xde, 0x9c, 0xc3, 0xa0, 0x07,
+ 0x6d, 0xd9, 0x59, 0xf8, 0x5f, 0x73, 0x18, 0x3c, 0x06, 0xc7, 0x9c, 0xd0,
+ 0x1e, 0x88, 0x9a, 0x04, 0x88, 0x41, 0x8f, 0x68, 0x8e, 0x8b, 0x07, 0xa9,
+ 0x6f, 0xfd, 0x71, 0x77, 0xba, 0xaa, 0xb9, 0x35, 0xcc, 0xd5, 0x93, 0x14,
+ 0x9c, 0x59, 0x8d, 0xb4, 0xbe, 0x28, 0x30, 0x0c, 0x7a, 0x3c, 0x49, 0x6e,
+ 0x04, 0x42, 0xb0, 0x39, 0xc6, 0xfe, 0xe9, 0x3e, 0x8d, 0xe6, 0xe2, 0xb4,
+ 0xbf, 0xdb, 0xdb, 0x31, 0xe2, 0x42, 0x49, 0xb1, 0xef, 0x84, 0xe9, 0xfd,
+ 0xdd, 0xc9, 0x51, 0xff, 0xa2, 0x17, 0x99, 0x9d, 0xaf, 0x05, 0x41, 0x07,
+ 0x22, 0xd4, 0x85, 0xe0, 0xb1, 0x1c, 0xfb, 0x24, 0xb9, 0x83, 0x23, 0xa3,
+ 0x58, 0xe1, 0x38, 0x38, 0x1e, 0x9b, 0xb6, 0x8e, 0xa6, 0xc6, 0x84, 0x81,
+ 0xd3, 0xaa, 0xb4, 0xc8, 0xe7, 0xcd, 0x23, 0x09, 0x1b, 0x2e, 0x60, 0x0b,
+ 0x06, 0xe6, 0x81, 0x8e, 0x07, 0xa5, 0x6a, 0xe7, 0x13, 0x0c, 0xdc, 0xc7,
+ 0x6e, 0xea, 0xa6, 0xf0, 0x25, 0xb5, 0x5a, 0xdc, 0xf1, 0x4f, 0x10, 0xeb,
+ 0x7d, 0x56, 0x9a, 0xb1, 0xea, 0x62, 0x71, 0xd4, 0xb5, 0x01, 0x7a, 0x0c,
+ 0x40, 0x6e, 0x50, 0xd9, 0x32, 0x09, 0xf3, 0xd2, 0xb8, 0xe6, 0x61, 0x45,
+ 0xb5, 0x11, 0x92, 0x15, 0xb8, 0xc2, 0x8d, 0xbd, 0xfd, 0xb8, 0x69, 0xd1,
+ 0x8d, 0xc6, 0xd7, 0xa6, 0xf8, 0xc6, 0xd8, 0xd6, 0xbb, 0xeb, 0x25, 0x7e,
+ 0xb3, 0xd1, 0x06, 0xd1, 0xf9, 0x7b, 0xa4, 0xfe, 0x6c, 0x46, 0x0b, 0xec,
+ 0x53, 0xfa, 0xa2, 0xca, 0xe3, 0xe1, 0x04, 0x13, 0x8b, 0x62, 0xe0, 0x25,
+ 0x55, 0xc0, 0x2e, 0x18, 0x4d, 0xb2, 0x81, 0x12, 0x79, 0xbd, 0x70, 0x0d,
+ 0xa1, 0x34, 0xf2, 0x6d, 0xc2, 0xd0, 0x6b, 0x11, 0xb7, 0x04, 0x3f, 0xa1,
+ 0x29, 0xd0, 0x57, 0x7c, 0x5d, 0xa7, 0x12, 0x7b, 0x6f, 0xdd, 0xd0, 0xd6,
+ 0x65, 0xa3, 0xa2, 0xad, 0xf4, 0x3a, 0xb8, 0x73, 0x62, 0xfa, 0x4d, 0xda,
+ 0x74, 0x08, 0x3d, 0x15, 0x0f, 0x82, 0x5b, 0xb4, 0x59, 0x82, 0x3b, 0xfb,
+ 0x68, 0x43, 0x9f, 0xa5, 0x13, 0x94, 0x39, 0xd1, 0x4a, 0x4f, 0xc8, 0x6b,
+ 0x5a, 0x65, 0x07, 0xe9, 0x0d, 0x66, 0xe5, 0x55, 0x6e, 0x2d, 0x92, 0xe2,
+ 0x6e, 0xab, 0x07, 0x24, 0x93, 0x51, 0xee, 0x36, 0xe6, 0x93, 0x3f, 0x85,
+ 0x43, 0xc9, 0x38, 0xef, 0x49, 0xbd, 0x58, 0x0c, 0xa1, 0x79, 0x66, 0x1c,
+ 0xe6, 0x27, 0x0b, 0x14, 0x92, 0x48, 0x74, 0x1c, 0x3d, 0x91, 0xf4, 0xdd,
+ 0x72, 0x07, 0x89, 0x99, 0x31, 0xa9, 0x3c, 0xb2, 0x66, 0xb4, 0x46, 0x48,
+ 0xca, 0x1e, 0x8c, 0x27, 0xcd, 0xaf, 0xb4, 0x8b, 0xdc, 0x30, 0x56, 0x2a,
+ 0x48, 0xe9, 0x59, 0xbf, 0xd6, 0x54, 0x59, 0x51, 0x35, 0x8c, 0xca, 0x4b,
+ 0xde, 0x12, 0x20, 0x39, 0x74, 0xae, 0x65, 0xd7, 0xc9, 0xf0, 0x2e, 0x82,
+ 0xe9, 0x4c, 0xc4, 0xe1, 0x86, 0x3b, 0x6a, 0xaa, 0x32, 0x2d, 0x37, 0x7a,
+ 0x06, 0x88, 0x68, 0xc5, 0xb9, 0x7a, 0x80, 0x3b, 0x29, 0xd0, 0xc9, 0x83,
+ 0xce, 0x57, 0x73, 0xa0, 0x0f, 0x3e, 0x64, 0xcd, 0xc1, 0xd4, 0x40, 0x08,
+ 0x9e, 0x36, 0xcc, 0xa0, 0xf0, 0x02, 0xe5, 0xcf, 0x23, 0x88, 0xad, 0x07,
+ 0x70, 0x29, 0x04, 0xb2, 0xb5, 0xe4, 0x6a, 0xd1, 0x58, 0x51, 0x77, 0x5b,
+ 0xb1, 0xb5, 0x61, 0x10, 0x4f, 0x38, 0x1a, 0x5e, 0xa5, 0x20, 0xe2, 0xf7,
+ 0x1e, 0xc2, 0x78, 0x9b, 0x27, 0xc2, 0x65, 0xc3, 0x1f, 0xca, 0x78, 0xcd,
+ 0x12, 0xac, 0xf4, 0x37, 0x3e, 0x80, 0xf1, 0x9a, 0xc6, 0x1f, 0x42, 0x16,
+ 0x76, 0x64, 0x6b, 0x82, 0x5b, 0x15, 0x13, 0x46, 0xce, 0x71, 0x23, 0xe5,
+ 0x1f, 0xf9, 0x9b, 0x0f, 0xa7, 0x7c, 0x14, 0x40, 0x89, 0x65, 0xc4, 0x54,
+ 0x02, 0x67, 0x25, 0x34, 0x53, 0xd4, 0x48, 0xb7, 0xa2, 0x37, 0xc0, 0x12,
+ 0x40, 0x4c, 0xc4, 0xbd, 0xd9, 0x06, 0xa9, 0x40, 0x54, 0x24, 0xae, 0x79,
+ 0x23, 0x4e, 0x97, 0xdc, 0xf7, 0x25, 0x72, 0x08, 0x73, 0x95, 0x96, 0xde,
+ 0xa3, 0x14, 0x40, 0xdf, 0x52, 0x50, 0xce, 0x70, 0x15, 0x5f, 0x2c, 0xc1,
+ 0xbe, 0x57, 0xd9, 0x4e, 0x80, 0x72, 0x47, 0x13, 0x9e, 0x38, 0x8e, 0x5d,
+ 0xec, 0x27, 0x82, 0x10, 0x88, 0x68, 0xf6, 0x98, 0x27, 0x82, 0xf1, 0xda,
+ 0x54, 0x3a, 0xd9, 0x07, 0x95, 0xb1, 0x2c, 0x9b, 0x9c, 0x3f, 0x34, 0xc6,
+ 0xb3, 0x79, 0x3a, 0xa3, 0xc6, 0x30, 0xd5, 0x31, 0x95, 0xd4, 0xcf, 0x22,
+ 0xfd, 0x95, 0xbd, 0xe2, 0x72, 0x2f, 0x5c, 0xa6, 0x33, 0x50, 0x0e, 0x9a,
+ 0x7e, 0x9d, 0xc9, 0x28, 0x99, 0x9b, 0xd7, 0x60, 0xd2, 0x88, 0xb9, 0x9d,
+ 0x0d, 0x81, 0x60, 0x70, 0x19, 0x29, 0x45, 0x98, 0x56, 0x76, 0xb4, 0x74,
+ 0x5a, 0xc8, 0xe7, 0x31, 0x55, 0x38, 0x45, 0x44, 0x7b, 0x23, 0x84, 0xc5,
+ 0xf1, 0xb8, 0x9a, 0x9b, 0xbd, 0x5c, 0xc9, 0x10, 0xf1, 0xa1, 0x7b, 0xd5,
+ 0xc7, 0x8a, 0xd6, 0xcb, 0x0a, 0x68, 0xeb, 0xff, 0x1e, 0x34, 0x4e, 0x43,
+ 0xf2, 0x70, 0x61, 0x97, 0x59, 0x0f, 0xca, 0xc9, 0x3d, 0xe4, 0x07, 0x3e,
+ 0x37, 0x20, 0x6e, 0x94, 0x15, 0x22, 0x30, 0xfb, 0xa4, 0xe4, 0x30, 0xb8,
+ 0x25, 0x1c, 0x2e, 0xbb, 0x9c, 0xe1, 0x2d, 0xb5, 0x16, 0x83, 0x93, 0xcc,
+ 0x50, 0xc4, 0xea, 0x12, 0x58, 0x8d, 0xd1, 0x82, 0x72, 0x5c, 0xa7, 0x19,
+ 0xc5, 0x48, 0x6f, 0xe7, 0xe3, 0x31, 0xa1, 0x80, 0x03, 0xfb, 0xac, 0x8a,
+ 0x6c, 0xb0, 0x08, 0x04, 0x64, 0xcc, 0xf3, 0x0c, 0xab, 0x65, 0x28, 0xf2,
+ 0x1f, 0xf7, 0x69, 0xfb, 0x60, 0xc8, 0xe5, 0xd5, 0xac, 0xcd, 0x5f, 0x85,
+ 0x68, 0xd9, 0xf6, 0x37, 0xc5, 0xec, 0xf1, 0xfd, 0x6e, 0x40, 0xbf, 0x97,
+ 0x87, 0x11, 0x82, 0x37, 0xd6, 0x07, 0x71, 0xbd, 0x10, 0x71, 0xd4, 0x6e,
+ 0xc1, 0x1d, 0x8f, 0x11, 0x2e, 0x63, 0x7b, 0x3f, 0x24, 0x05, 0xc2, 0x70,
+ 0x1e, 0x18, 0xf5, 0x56, 0x41, 0x77, 0x90, 0x3b, 0x24, 0x24, 0xdd, 0xf8,
+ 0x70, 0x79, 0x43, 0xaa, 0x14, 0xa6, 0x60, 0xf3, 0x16, 0x87, 0x57, 0x70,
+ 0xd1, 0x2d, 0xe1, 0x2b, 0x32, 0xb4, 0xe4, 0x01, 0xe1, 0x6b, 0x01, 0x89,
+ 0x6d, 0x31, 0xbf, 0x2c, 0x92, 0x91, 0x60, 0x35, 0xf2, 0xc5, 0x98, 0xd6,
+ 0x98, 0x6e, 0x93, 0x6f, 0x10, 0x98, 0x27, 0xc9, 0xbe, 0xca, 0xad, 0x95,
+ 0x92, 0x9c, 0xb7, 0x80, 0xa3, 0x03, 0x4b, 0x64, 0x8b, 0x29, 0xca, 0xc8,
+ 0xb3, 0x7c, 0x16, 0x73, 0xdb, 0x9e, 0x48, 0x76, 0x2f, 0x9e, 0x2d, 0x5c,
+ 0xd3, 0x30, 0x69, 0xb3, 0x37, 0x3e, 0x4e, 0x94, 0xf0, 0x2c, 0x31, 0x49,
+ 0xa8, 0x01, 0xd0, 0x70, 0x03, 0xac, 0x52, 0x60, 0xc0, 0x77, 0x27, 0x30,
+ 0xca, 0x09, 0xe1, 0xf4, 0xa7, 0xb3, 0x61, 0x71, 0x17, 0x16, 0xb6, 0xef,
+ 0xc5, 0x42, 0x3f, 0xea, 0xcd, 0x20, 0x1c, 0x3f, 0x78, 0x2d, 0x08, 0xdb,
+ 0x70, 0xaf, 0x8f, 0xd5, 0x37, 0x83, 0x7f, 0x9a, 0x19, 0xa8, 0x10, 0xd7,
+ 0x56, 0x10, 0x4b, 0x0c, 0x66, 0x1a, 0xa1, 0xcf, 0x13, 0x4a, 0x60, 0x7d,
+ 0x4f, 0x15, 0xd3, 0x04, 0x63, 0xae, 0xfc, 0x75, 0x62, 0x06, 0x62, 0xec,
+ 0xd1, 0x84, 0xd6, 0xf6, 0x61, 0xb7, 0x0e, 0xc5, 0x50, 0x20, 0x88, 0x98,
+ 0x3a, 0x4b, 0x02, 0xe5, 0x06, 0xc9, 0x65, 0x51, 0xb9, 0x80, 0xce, 0xc6,
+ 0xc2, 0x34, 0x48, 0x05, 0x43, 0x50, 0xca, 0xef, 0x8d, 0x17, 0x15, 0x52,
+ 0x76, 0x1b, 0x94, 0x6f, 0x93, 0xbd, 0xad, 0x57, 0x89, 0x7d, 0x65, 0x21,
+ 0x76, 0x9c, 0xcf, 0xfa, 0x7c, 0x0b, 0x58, 0xf5, 0x7c, 0x7f, 0x8d, 0xdc,
+ 0x55, 0x21, 0xf2, 0x6e, 0x83, 0x45, 0xc9, 0x19, 0x18, 0x66, 0xf3, 0xab,
+ 0xd4, 0x45, 0x2e, 0x8b, 0xf7, 0xba, 0xfc, 0xd6, 0xf5, 0x9e, 0x77, 0x81,
+ 0xf5, 0x4f, 0xeb, 0xc2, 0xb9, 0xfa, 0xa6, 0x60, 0xab, 0x40, 0x12, 0x56,
+ 0x78, 0x5f, 0xcb, 0x08, 0xae, 0xf7, 0xba, 0x92, 0xb9, 0x95, 0x14, 0xe1,
+ 0xe0, 0x55, 0xc1, 0x07, 0xad, 0x29, 0x98, 0xc8, 0xa2, 0x8a, 0xc5, 0x50,
+ 0x4f, 0x90, 0x90, 0x76, 0x8f, 0x1b, 0x8c, 0xa8, 0xd2, 0xd8, 0x28, 0xf5,
+ 0x0e, 0x8a, 0xc3, 0x25, 0xcd, 0x14, 0x09, 0xd3, 0x07, 0x43, 0x20, 0x9f,
+ 0xec, 0x3e, 0x7d, 0xb2, 0xb5, 0x4a, 0x58, 0x81, 0xc6, 0x3f, 0x41, 0xa8,
+ 0x29, 0xb5, 0xbb, 0xde, 0xbd, 0x82, 0x4f, 0x63, 0x29, 0x15, 0xde, 0x21,
+ 0xfc, 0x6b, 0xaf, 0xe7, 0xee, 0x4b, 0xa4, 0xdc, 0xa7, 0xb4, 0x70, 0xcf,
+ 0x1e, 0x44, 0xc3, 0x6c, 0x84, 0x47, 0x88, 0x16, 0x59, 0xcd, 0x16, 0x78,
+ 0xb6, 0x06, 0x8b, 0x6c, 0x42, 0x90, 0x12, 0xca, 0x3c, 0x89, 0x71, 0x36,
+ 0x98, 0xd6, 0xd4, 0x8f, 0xe5, 0x6d, 0x38, 0x13, 0xa9, 0x0c, 0xe2, 0xbe,
+ 0x8e, 0x88, 0x2d, 0x77, 0xf1, 0x2e, 0xc1, 0xfe, 0x54, 0x93, 0xf2, 0x7a,
+ 0x57, 0xeb, 0xce, 0xf1, 0x5f, 0xbd, 0xdd, 0x00, 0xf4, 0xb8, 0x7e, 0xb7,
+ 0xe7, 0xd0, 0x9e, 0x6d, 0xf1, 0xc3, 0x69, 0x6f, 0x7f, 0x05, 0xed, 0xad,
+ 0x4b, 0x7a, 0xfb, 0x11, 0x43, 0x6a, 0xaf, 0x4b, 0x7b, 0x4f, 0x1f, 0x3f,
+ 0xf9, 0x72, 0x35, 0xed, 0xed, 0x7f, 0x22, 0xda, 0xdb, 0xbf, 0x2f, 0xed,
+ 0x99, 0x82, 0x82, 0x4a, 0x7d, 0x0d, 0xf2, 0x73, 0x36, 0xdb, 0x50, 0x9f,
+ 0x62, 0x33, 0xb4, 0xd3, 0xde, 0xda, 0xa4, 0xd7, 0x4e, 0x7b, 0x0e, 0xf1,
+ 0x91, 0x00, 0xe1, 0x1e, 0x08, 0x25, 0x3f, 0xa5, 0x3e, 0x97, 0xbe, 0xee,
+ 0x4b, 0x7b, 0x9a, 0x5f, 0x79, 0x88, 0x32, 0xdd, 0x37, 0x1e, 0xf4, 0xb2,
+ 0xe0, 0xa9, 0x22, 0xe4, 0x0e, 0x82, 0xc7, 0xb2, 0x6c, 0x24, 0xaf, 0x78,
+ 0x90, 0xf9, 0x52, 0x58, 0x8e, 0x44, 0x2d, 0xb2, 0x58, 0x07, 0xbc, 0xd3,
+ 0xb6, 0xb0, 0x28, 0xb9, 0x30, 0xe6, 0x13, 0xbc, 0x1c, 0x36, 0xe2, 0x0d,
+ 0x0d, 0x6c, 0x50, 0x49, 0xcd, 0x81, 0xaa, 0xe5, 0xb4, 0xdc, 0xcf, 0x9f,
+ 0xfb, 0xcd, 0xee, 0x11, 0x9e, 0xfb, 0xe7, 0x4b, 0x3e, 0xe3, 0xfe, 0x05,
+ 0x4d, 0xb8, 0xba, 0xad, 0x1e, 0x9e, 0x5d, 0xcb, 0x34, 0xe1, 0xa4, 0x74,
+ 0xd7, 0xc9, 0xe2, 0x0e, 0x04, 0x38, 0xa9, 0xa9, 0x19, 0x84, 0xc9, 0x10,
+ 0x53, 0x83, 0x31, 0x09, 0xeb, 0x0a, 0x0e, 0xb0, 0x02, 0xe2, 0x18, 0x44,
+ 0xce, 0x88, 0xda, 0x10, 0x3d, 0x0d, 0xf7, 0x13, 0x8f, 0x06, 0x3a, 0xf9,
+ 0x83, 0x95, 0x38, 0xcb, 0x66, 0x3a, 0x76, 0x4f, 0x22, 0x39, 0x51, 0x64,
+ 0x70, 0x07, 0x43, 0xc7, 0xa0, 0x04, 0x79, 0x62, 0xc8, 0x60, 0x43, 0xd3,
+ 0x40, 0x65, 0xe3, 0xff, 0x2c, 0x9c, 0x80, 0xda, 0xe8, 0x3f, 0x7a, 0x5c,
+ 0xa8, 0xdb, 0xfa, 0xda, 0xbc, 0xb2, 0x36, 0xb4, 0xf8, 0xe5, 0x7a, 0xc4,
+ 0xf4, 0xb2, 0xab, 0xf5, 0xa3, 0x88, 0x92, 0x5c, 0xda, 0xaa, 0x83, 0xaf,
+ 0x34, 0xf1, 0x42, 0x80, 0x13, 0x52, 0x0a, 0xb7, 0xfa, 0x25, 0x85, 0x02,
+ 0x82, 0x50, 0x62, 0x62, 0x76, 0xad, 0x16, 0x64, 0xce, 0xd7, 0x50, 0x96,
+ 0x84, 0x3c, 0x6c, 0x08, 0xc7, 0x7a, 0x72, 0x6c, 0x6a, 0x86, 0xd1, 0x25,
+ 0x8e, 0x18, 0x81, 0x0c, 0x1e, 0x1d, 0x46, 0x8a, 0xe6, 0x50, 0x15, 0xfb,
+ 0xa6, 0x40, 0xbc, 0xc8, 0x10, 0x02, 0x9c, 0x39, 0x95, 0x4a, 0x5c, 0xfe,
+ 0xf1, 0x15, 0xf4, 0x56, 0xd9, 0x8b, 0xd1, 0x62, 0x3a, 0x97, 0x99, 0x48,
+ 0x49, 0x0d, 0x81, 0x1b, 0x66, 0x28, 0xb1, 0xa4, 0x70, 0xa2, 0x79, 0xae,
+ 0xf2, 0x1b, 0x3f, 0x59, 0x9b, 0x03, 0x85, 0xf4, 0x34, 0x88, 0x35, 0x5f,
+ 0x61, 0xc3, 0x5f, 0x56, 0xf5, 0x02, 0x9a, 0x1c, 0x62, 0x3a, 0x4a, 0x07,
+ 0x0b, 0x44, 0x26, 0x0a, 0x6a, 0x6b, 0x16, 0xc2, 0xd8, 0x1e, 0x79, 0x1a,
+ 0x18, 0xd6, 0xa6, 0x4e, 0xbb, 0x0c, 0x00, 0x77, 0x87, 0xa2, 0x42, 0x95,
+ 0x81, 0xe6, 0x30, 0x5c, 0x11, 0xdd, 0xdc, 0xb2, 0x69, 0x1f, 0xdb, 0xd0,
+ 0xd1, 0xd2, 0xcd, 0xda, 0x94, 0xdd, 0x36, 0x5c, 0xbb, 0x2f, 0xf1, 0xad,
+ 0x10, 0xc3, 0x5a, 0x44, 0xff, 0xac, 0x5b, 0xdf, 0x6b, 0xf8, 0x33, 0xeb,
+ 0x3a, 0xad, 0xd2, 0x51, 0x98, 0x77, 0xeb, 0x74, 0xdb, 0x3c, 0xcf, 0x6e,
+ 0xd0, 0x74, 0xc3, 0x60, 0x5c, 0x0d, 0xe7, 0xf1, 0x18, 0xae, 0x8f, 0x7c,
+ 0xee, 0xa1, 0x66, 0x0b, 0x3c, 0x91, 0x70, 0x9f, 0x8b, 0xe3, 0xf3, 0xe8,
+ 0x39, 0xde, 0x33, 0xa8, 0x1b, 0x47, 0x9b, 0x20, 0x74, 0x3d, 0x7d, 0xb4,
+ 0xbb, 0xbf, 0xb5, 0x5c, 0x9d, 0x73, 0x5b, 0x6f, 0xa9, 0xf2, 0xfb, 0x70,
+ 0x43, 0xbc, 0xdb, 0xf8, 0xba, 0xfb, 0x55, 0x1b, 0xd8, 0x7a, 0x8a, 0xc3,
+ 0x18, 0x7e, 0xa6, 0x31, 0x49, 0xbc, 0x75, 0x53, 0xfc, 0x57, 0xfe, 0xca,
+ 0xce, 0xf2, 0x10, 0xf0, 0xde, 0xc5, 0xa2, 0x98, 0x69, 0xc9, 0x6f, 0x58,
+ 0xd6, 0x77, 0xaf, 0xcf, 0x9e, 0x9d, 0x9c, 0x1e, 0xfd, 0xdd, 0x58, 0x96,
+ 0xb0, 0x33, 0xad, 0x38, 0xf5, 0x2e, 0x4d, 0xca, 0xbb, 0x77, 0x70, 0xb7,
+ 0xc3, 0x97, 0x9b, 0xfb, 0x5b, 0x54, 0x6e, 0xd0, 0x03, 0xe0, 0xbf, 0x4c,
+ 0x6b, 0x35, 0x20, 0x05, 0x05, 0xd1, 0xa9, 0x8c, 0x18, 0x8e, 0x03, 0x44,
+ 0x72, 0xd8, 0xe9, 0x81, 0x84, 0x27, 0xe8, 0x38, 0x18, 0x01, 0xe5, 0xfa,
+ 0x6e, 0x9c, 0x32, 0x13, 0x48, 0x66, 0x77, 0xb6, 0xa0, 0x9f, 0x57, 0x51,
+ 0x80, 0x4d, 0xdf, 0xe8, 0x17, 0xe5, 0x9b, 0x12, 0xd1, 0x15, 0xc7, 0x63,
+ 0xad, 0xd7, 0x24, 0xe8, 0xfa, 0x04, 0x67, 0x4e, 0xb8, 0x8b, 0x4b, 0x8f,
+ 0xbe, 0xb3, 0x70, 0xed, 0x85, 0xa1, 0x1f, 0x7c, 0x81, 0x39, 0xad, 0x3f,
+ 0x84, 0x68, 0x74, 0x60, 0x6b, 0xd1, 0xcc, 0xeb, 0x2e, 0xf7, 0x3d, 0x58,
+ 0x8c, 0x6b, 0x35, 0x8d, 0xe3, 0x8a, 0xa4, 0xe9, 0x74, 0x32, 0x4b, 0x2b,
+ 0xc1, 0x11, 0x8b, 0x0e, 0xe1, 0xe7, 0xd7, 0x20, 0xc6, 0x79, 0x95, 0xce,
+ 0x92, 0x52, 0x37, 0xc6, 0x91, 0x5d, 0xf0, 0x4d, 0xc3, 0xcc, 0x7b, 0x5a,
+ 0x5b, 0x26, 0x1d, 0x99, 0x27, 0xe1, 0x1e, 0x38, 0xf0, 0xc4, 0x93, 0x8b,
+ 0xbf, 0x9f, 0x9f, 0x7c, 0x7d, 0x88, 0x92, 0xcf, 0x37, 0x88, 0x21, 0x5a,
+ 0xd6, 0x04, 0x21, 0x02, 0x0c, 0xf1, 0x96, 0xe6, 0xc7, 0x67, 0x2f, 0xfb,
+ 0xe7, 0xa7, 0x67, 0xc7, 0x5f, 0x1f, 0xfe, 0x88, 0x16, 0x6e, 0x10, 0xa4,
+ 0xef, 0x9c, 0x77, 0xcd, 0x67, 0x91, 0x96, 0x52, 0xf4, 0x8b, 0x78, 0x9e,
+ 0xfc, 0xf0, 0xee, 0xe4, 0xf5, 0xdf, 0xbe, 0x3e, 0xbc, 0x4e, 0x8a, 0x2e,
+ 0xce, 0x8f, 0xdf, 0x46, 0x34, 0xa6, 0xd9, 0x75, 0x56, 0xe4, 0x33, 0x0c,
+ 0xe9, 0x00, 0xf9, 0xb5, 0xc8, 0x70, 0xe7, 0x02, 0xd5, 0x68, 0xea, 0xcb,
+ 0xf4, 0xc9, 0x6a, 0xd2, 0x54, 0xb2, 0x3c, 0xd7, 0xd5, 0xee, 0xce, 0x8e,
+ 0xac, 0xf0, 0xbd, 0x0d, 0x41, 0x7f, 0xe9, 0x72, 0xf8, 0xd3, 0x38, 0xbb,
+ 0xec, 0x39, 0x9c, 0x00, 0xed, 0x6a, 0x83, 0xc9, 0xfb, 0x32, 0xfb, 0x2d,
+ 0x8d, 0x0e, 0x49, 0x44, 0xf7, 0xaa, 0xda, 0x5e, 0x70, 0x1d, 0x47, 0xd8,
+ 0x4d, 0xfc, 0x2d, 0xfa, 0xee, 0xf4, 0x2f, 0xfd, 0x97, 0xff, 0x7d, 0x62,
+ 0x62, 0x50, 0xa7, 0x0b, 0x2c, 0x5f, 0x96, 0x46, 0xdf, 0x3c, 0xde, 0xdd,
+ 0xdb, 0x12, 0xa9, 0x41, 0xaa, 0xc9, 0x0c, 0x26, 0x18, 0xec, 0xdc, 0x30,
+ 0x68, 0x62, 0x4f, 0xa4, 0x38, 0x36, 0x6b, 0x41, 0xd9, 0x9a, 0xb8, 0x1a,
+ 0x30, 0x46, 0x80, 0x8c, 0x04, 0x66, 0x04, 0xdf, 0x02, 0x17, 0x41, 0xa8,
+ 0x42, 0x2f, 0x30, 0x97, 0x06, 0xa5, 0xf1, 0x11, 0x4e, 0x29, 0x0a, 0x18,
+ 0x8e, 0x84, 0xdb, 0x2d, 0x0d, 0xbf, 0xe2, 0x40, 0xd7, 0xda, 0x3a, 0x7c,
+ 0x2e, 0xcc, 0xbf, 0xda, 0x20, 0x76, 0x77, 0xf6, 0x1e, 0x45, 0x95, 0x5f,
+ 0xbf, 0x10, 0xd5, 0xc6, 0x25, 0x57, 0x00, 0xb5, 0x01, 0xe7, 0xd9, 0x2b,
+ 0xf8, 0xea, 0x7d, 0x15, 0xde, 0x66, 0x27, 0x43, 0x9d, 0xb0, 0x98, 0x73,
+ 0x2a, 0xbc, 0xc3, 0x8b, 0xac, 0x07, 0x57, 0x2b, 0x0d, 0x2e, 0x57, 0x2e,
+ 0xa6, 0xb8, 0x86, 0x44, 0xf4, 0x14, 0x52, 0xe5, 0x04, 0x4c, 0x4d, 0xd2,
+ 0x4b, 0x8c, 0xb2, 0x90, 0x4d, 0x2b, 0x6d, 0xf9, 0xea, 0x00, 0x20, 0x76,
+ 0x94, 0x0c, 0xd1, 0x0a, 0x4c, 0x55, 0x89, 0x18, 0xe0, 0x91, 0xeb, 0xbf,
+ 0x02, 0x3f, 0x37, 0xd1, 0x56, 0xb5, 0xd1, 0x49, 0xe9, 0x8d, 0xf6, 0x0a,
+ 0x45, 0x2a, 0x38, 0xfb, 0x9b, 0xae, 0xe6, 0x9e, 0xa5, 0x37, 0x40, 0x7d,
+ 0x11, 0xef, 0xe5, 0xdb, 0x5c, 0xe3, 0x06, 0x68, 0xdb, 0xbd, 0x35, 0x08,
+ 0xc8, 0x19, 0x9c, 0x90, 0xcf, 0xee, 0x57, 0x7b, 0xbd, 0xdd, 0x27, 0x5f,
+ 0x62, 0xd1, 0xaa, 0xed, 0x55, 0xa4, 0x23, 0xcb, 0x51, 0x17, 0x1f, 0xbe,
+ 0xac, 0x89, 0x0f, 0xbf, 0xd1, 0xcd, 0x00, 0xd3, 0x8d, 0x29, 0x82, 0xf5,
+ 0x10, 0x7f, 0x0d, 0x96, 0xc2, 0xa6, 0x80, 0x73, 0xf6, 0xe3, 0x53, 0x68,
+ 0x0f, 0x9b, 0x3c, 0x68, 0xb3, 0x0d, 0x8e, 0xe7, 0x34, 0x1f, 0xb1, 0x82,
+ 0x89, 0xb5, 0x9a, 0x4d, 0x08, 0x75, 0xf3, 0x54, 0x39, 0x00, 0xe5, 0xa4,
+ 0xaa, 0xc2, 0xb3, 0x24, 0xb5, 0x23, 0x54, 0x6e, 0x4b, 0x7b, 0xa6, 0x36,
+ 0x41, 0x20, 0x82, 0x48, 0x50, 0xc9, 0x31, 0x1b, 0xf3, 0x10, 0xdb, 0x42,
+ 0x29, 0x01, 0x45, 0x64, 0x58, 0xb4, 0x6f, 0x94, 0x7d, 0x27, 0x6e, 0xc1,
+ 0xe6, 0x11, 0xc7, 0x0f, 0x21, 0x3f, 0x2a, 0xfd, 0x62, 0xaa, 0x8c, 0xcb,
+ 0xd7, 0xc8, 0xc7, 0x45, 0x85, 0x82, 0x48, 0x1f, 0xef, 0x2d, 0x18, 0x67,
+ 0xa9, 0x76, 0x1d, 0x04, 0x61, 0x27, 0xa7, 0x06, 0xba, 0xc0, 0x70, 0x45,
+ 0x82, 0xe9, 0x5e, 0x9c, 0x42, 0x40, 0x68, 0xce, 0x70, 0x06, 0x2f, 0x25,
+ 0xd9, 0x8f, 0x67, 0x27, 0x8e, 0x59, 0x1a, 0xd4, 0xe6, 0x14, 0x27, 0xb3,
+ 0xc5, 0x28, 0xae, 0x41, 0xd3, 0x95, 0x31, 0x43, 0xd5, 0x64, 0x37, 0x68,
+ 0x11, 0xdf, 0x47, 0xb9, 0x0d, 0x6e, 0x23, 0x12, 0xd4, 0xd8, 0xfb, 0xcb,
+ 0xcd, 0x3a, 0x2b, 0xe2, 0x21, 0x3d, 0x57, 0x41, 0x00, 0xc2, 0x3e, 0x4a,
+ 0x9d, 0x8a, 0x3e, 0xe7, 0xae, 0xa8, 0xd6, 0x78, 0x18, 0x61, 0x1d, 0xfb,
+ 0xcd, 0x78, 0xcb, 0x14, 0x55, 0x24, 0xb8, 0x69, 0x26, 0x0d, 0x3f, 0xa9,
+ 0x06, 0x9e, 0xcf, 0x87, 0x8b, 0x29, 0x17, 0x26, 0x4d, 0x68, 0xe1, 0x38,
+ 0xce, 0x52, 0x29, 0x44, 0x68, 0x02, 0x3b, 0xdb, 0xe6, 0xc0, 0x6e, 0x65,
+ 0xfc, 0x94, 0xbc, 0xe8, 0x15, 0x0f, 0x6e, 0x34, 0x36, 0x4b, 0x6f, 0xdc,
+ 0xc6, 0xac, 0xa1, 0xc3, 0x34, 0xd8, 0x76, 0x53, 0x18, 0xc2, 0xbf, 0x7f,
+ 0x36, 0xd8, 0x83, 0x6f, 0x8a, 0xb6, 0x8a, 0xb8, 0xbf, 0x45, 0x9d, 0x1f,
+ 0xa0, 0xcf, 0x9d, 0x5d, 0xd8, 0xd4, 0x79, 0xb4, 0xb7, 0xb3, 0xb7, 0x1b,
+ 0xed, 0xee, 0x1d, 0xec, 0x7e, 0x79, 0xb0, 0xb3, 0xb3, 0x46, 0x8d, 0x5c,
+ 0x68, 0x25, 0xfe, 0x28, 0xcd, 0xd0, 0xb9, 0x5e, 0x4f, 0x55, 0x01, 0x2a,
+ 0xba, 0x8c, 0xa9, 0x8e, 0x99, 0xba, 0xa2, 0xde, 0x74, 0x09, 0xef, 0x79,
+ 0x9a, 0x57, 0xa9, 0x07, 0xf6, 0x5c, 0x4d, 0x4a, 0x0c, 0xd0, 0x8f, 0x0e,
+ 0xff, 0x76, 0xf2, 0xa6, 0xff, 0xf2, 0xec, 0xf5, 0x37, 0x41, 0xf7, 0x80,
+ 0x7c, 0x89, 0x84, 0x00, 0xb2, 0x95, 0xad, 0x4c, 0x60, 0x7d, 0xa8, 0xe8,
+ 0x98, 0x56, 0x67, 0x1f, 0xd7, 0xf4, 0xce, 0x66, 0xf8, 0x88, 0x5f, 0x00,
+ 0x3b, 0x9d, 0x57, 0x8c, 0x3d, 0xae, 0xae, 0x5a, 0xda, 0x6d, 0x32, 0x64,
+ 0x92, 0x8b, 0x95, 0xcc, 0xc7, 0x3b, 0x5d, 0xfd, 0x6d, 0xd7, 0xfc, 0xb6,
+ 0xe7, 0xf3, 0x07, 0xfe, 0x62, 0x3f, 0x44, 0x50, 0x4d, 0x6f, 0x6a, 0xc9,
+ 0x55, 0x29, 0xf0, 0xc8, 0xa0, 0xa2, 0x04, 0xe3, 0xed, 0xd6, 0xf4, 0x1e,
+ 0x47, 0xc9, 0x68, 0x89, 0x1e, 0x64, 0xf9, 0x8b, 0x55, 0xf0, 0x32, 0xfa,
+ 0xeb, 0xdb, 0x97, 0xc7, 0x31, 0x07, 0x01, 0x10, 0x4b, 0xde, 0x86, 0xf3,
+ 0x6e, 0xc2, 0xf1, 0xbd, 0x01, 0x85, 0x93, 0xce, 0x9d, 0x6c, 0xbf, 0xc5,
+ 0x9c, 0x11, 0xec, 0x51, 0x86, 0xe5, 0xe2, 0x7d, 0xee, 0x8a, 0x36, 0x9b,
+ 0xc3, 0x38, 0xee, 0xda, 0x8b, 0xf0, 0xf0, 0x35, 0x59, 0xc0, 0x9a, 0xcf,
+ 0xed, 0x86, 0x9e, 0xdb, 0xf5, 0x9f, 0xdb, 0x0b, 0x3d, 0xb7, 0xe7, 0x3f,
+ 0xb7, 0x1f, 0x7a, 0xce, 0xd9, 0x00, 0x39, 0xca, 0x42, 0x55, 0x6b, 0xd4,
+ 0x8e, 0x08, 0xc3, 0xa2, 0xd7, 0x8f, 0xb0, 0x7f, 0x76, 0xf5, 0x7a, 0x96,
+ 0xfe, 0x70, 0x1e, 0xcb, 0x4e, 0x97, 0xf7, 0xf8, 0xbe, 0x75, 0x58, 0x2c,
+ 0x3d, 0x66, 0xee, 0x65, 0xae, 0x04, 0x6a, 0xdc, 0x20, 0x5d, 0xa7, 0x11,
+ 0xd7, 0x07, 0xb2, 0xdf, 0xab, 0xad, 0x85, 0x83, 0x56, 0xe6, 0xf9, 0x18,
+ 0xd7, 0xf3, 0xec, 0xa8, 0x04, 0xa1, 0xcd, 0x05, 0x2c, 0x3c, 0x93, 0x72,
+ 0x77, 0x5f, 0x5d, 0xd0, 0xd1, 0xa1, 0xfc, 0xb2, 0xc8, 0x2a, 0x2e, 0xf1,
+ 0xee, 0x6b, 0x22, 0xa7, 0x7d, 0xb7, 0x04, 0x3a, 0x9b, 0x13, 0xf9, 0xad,
+ 0x88, 0x5e, 0x2b, 0x6d, 0x01, 0xf4, 0xe6, 0xd1, 0xf2, 0x8b, 0xfe, 0x62,
+ 0xa2, 0xbb, 0x41, 0xff, 0x85, 0x69, 0x22, 0x29, 0xd3, 0x72, 0x5c, 0x5c,
+ 0x71, 0xff, 0x78, 0xf3, 0xeb, 0xe0, 0xa4, 0x79, 0x52, 0x76, 0x24, 0x05,
+ 0xd1, 0xcf, 0xf1, 0xcd, 0x46, 0xfa, 0x3c, 0xc6, 0xba, 0x24, 0x23, 0x24,
+ 0x3f, 0xe8, 0x5a, 0x1a, 0xae, 0x8d, 0xd4, 0x58, 0x44, 0x04, 0x4c, 0xdd,
+ 0x93, 0x56, 0xdf, 0xbe, 0x39, 0xf5, 0xb4, 0x63, 0xb3, 0xf9, 0xb8, 0xf2,
+ 0xbd, 0x32, 0xdd, 0x86, 0x6b, 0xad, 0xdc, 0xa6, 0xc0, 0x16, 0xe9, 0xf6,
+ 0xaa, 0x9a, 0x4e, 0x56, 0x16, 0xfa, 0x44, 0x02, 0xc3, 0x48, 0x97, 0xc9,
+ 0x9d, 0x18, 0x6e, 0x29, 0x6c, 0xdc, 0x96, 0x0b, 0xc9, 0x9c, 0x1d, 0xf5,
+ 0x51, 0xa2, 0xd1, 0xc8, 0x86, 0xe1, 0xb2, 0x78, 0x40, 0x77, 0x51, 0x08,
+ 0x23, 0xc9, 0xcd, 0x14, 0x86, 0x63, 0xeb, 0x2e, 0xe7, 0x30, 0xd9, 0x98,
+ 0x1a, 0x7c, 0x41, 0xc2, 0x4e, 0x02, 0xa5, 0x1e, 0xa8, 0x72, 0x35, 0xe8,
+ 0x80, 0xa5, 0x14, 0x0d, 0x09, 0x2d, 0x58, 0xe9, 0xc6, 0xe0, 0xa6, 0x36,
+ 0x72, 0x21, 0x28, 0xe4, 0x87, 0x3d, 0x56, 0x75, 0x72, 0xfb, 0x6c, 0x5a,
+ 0x5e, 0x6d, 0x14, 0x30, 0xd5, 0x77, 0x47, 0x27, 0xfd, 0x77, 0xbb, 0x7b,
+ 0x5f, 0xbe, 0xfb, 0xfe, 0xf8, 0xd5, 0xbb, 0xfe, 0x8b, 0xa3, 0xbd, 0xc7,
+ 0xeb, 0x22, 0x50, 0x68, 0x63, 0x12, 0xd2, 0xb1, 0x00, 0xb5, 0xaa, 0x5c,
+ 0xea, 0x77, 0x80, 0x31, 0x60, 0xcc, 0x3c, 0xe1, 0xaf, 0x1e, 0xe2, 0xbf,
+ 0xdf, 0xf8, 0xe5, 0x5b, 0xf8, 0x40, 0x78, 0x40, 0x20, 0x68, 0x81, 0x41,
+ 0x14, 0x62, 0x26, 0x20, 0x5e, 0xab, 0x46, 0xda, 0x41, 0x4b, 0x7e, 0x02,
+ 0x91, 0x5e, 0xa7, 0xff, 0xe6, 0xbc, 0xd3, 0x95, 0x58, 0x5e, 0xe8, 0x20,
+ 0x86, 0xbf, 0x23, 0xb2, 0xd9, 0x46, 0xd1, 0xe3, 0x9d, 0xc7, 0x8f, 0xb6,
+ 0x7a, 0x0e, 0x77, 0x26, 0xc8, 0xff, 0x40, 0x34, 0x36, 0x7d, 0x69, 0xa0,
+ 0x4a, 0x88, 0xe4, 0x9c, 0x12, 0x0a, 0xe8, 0xbf, 0xa9, 0xcd, 0x90, 0x33,
+ 0x84, 0xba, 0x9c, 0x91, 0xdb, 0xae, 0x18, 0xca, 0xed, 0x47, 0x3c, 0x84,
+ 0x86, 0x59, 0x77, 0x81, 0x60, 0xd6, 0x90, 0x64, 0x58, 0x48, 0xd0, 0x93,
+ 0x70, 0xc3, 0x60, 0x60, 0x8b, 0xb2, 0x47, 0x9a, 0x34, 0x9f, 0x26, 0xa9,
+ 0x0a, 0x62, 0x26, 0x2d, 0x0b, 0xd6, 0x8d, 0x84, 0x91, 0xa9, 0x5b, 0xbd,
+ 0xe5, 0xbc, 0xc1, 0x82, 0x7d, 0x3f, 0x5b, 0xe0, 0x9e, 0x50, 0x3b, 0xda,
+ 0x8c, 0xb4, 0xd2, 0x4a, 0xf1, 0xee, 0x2a, 0x7c, 0xa6, 0x7c, 0x4e, 0x77,
+ 0x14, 0x38, 0xe4, 0xf5, 0x88, 0x5b, 0xe8, 0xa0, 0x41, 0xbe, 0x66, 0xf7,
+ 0x0f, 0x59, 0x2d, 0x0b, 0x12, 0xb0, 0x25, 0x11, 0x24, 0x37, 0x32, 0x2f,
+ 0x71, 0xfd, 0xd3, 0x94, 0x68, 0xbb, 0x41, 0xda, 0xd3, 0x14, 0x84, 0xae,
+ 0x51, 0x3b, 0xbe, 0xb1, 0xea, 0xe9, 0xce, 0x74, 0x7a, 0x1a, 0xa4, 0x2e,
+ 0xb1, 0x10, 0x96, 0x6a, 0x69, 0xf0, 0xe8, 0x41, 0x4d, 0x97, 0xfb, 0xeb,
+ 0x03, 0xc9, 0xda, 0x7a, 0x0f, 0xb5, 0xed, 0xa8, 0x99, 0xd5, 0x67, 0xdd,
+ 0x51, 0x33, 0x8a, 0xf9, 0xcd, 0xc8, 0x99, 0x37, 0x57, 0xe9, 0xf8, 0x08,
+ 0x1b, 0x4c, 0x0d, 0x05, 0xd1, 0xc7, 0x68, 0x6b, 0x15, 0xb1, 0xe8, 0xdf,
+ 0xb1, 0xb5, 0x22, 0x00, 0x35, 0xb9, 0x0e, 0xc5, 0xcb, 0x78, 0xcc, 0xe4,
+ 0xe3, 0x6e, 0xb8, 0xb3, 0x16, 0x9f, 0x29, 0x07, 0xff, 0x63, 0x6f, 0xb5,
+ 0x36, 0xd6, 0xd8, 0x6e, 0x14, 0x56, 0x83, 0xe2, 0xde, 0x73, 0x04, 0xa8,
+ 0xaa, 0x63, 0x66, 0x3a, 0x3a, 0x07, 0xe9, 0x18, 0x2a, 0x83, 0x48, 0xe5,
+ 0xc9, 0x25, 0x60, 0x99, 0x14, 0xce, 0xcc, 0x3a, 0x26, 0xb5, 0x22, 0x66,
+ 0xe3, 0x2f, 0x02, 0xc5, 0x50, 0x31, 0x76, 0x43, 0x7b, 0x41, 0xf1, 0x69,
+ 0x6c, 0x40, 0xc1, 0x1a, 0xd1, 0xaa, 0x6a, 0x5a, 0x90, 0xca, 0x36, 0x98,
+ 0x74, 0xd8, 0x68, 0xee, 0x1d, 0x5e, 0x1a, 0xef, 0x64, 0x9b, 0x77, 0x34,
+ 0x84, 0xd5, 0xe4, 0xcd, 0x61, 0x23, 0xa0, 0xb0, 0x61, 0x0c, 0x59, 0x89,
+ 0xb8, 0xfc, 0x4e, 0xa5, 0x9d, 0x3c, 0x64, 0x0c, 0xc3, 0x76, 0xe0, 0x7a,
+ 0xc1, 0x1c, 0x3d, 0x8d, 0x0c, 0x51, 0xe9, 0x3d, 0xab, 0x17, 0xe7, 0x45,
+ 0x72, 0x48, 0x8c, 0x1a, 0x2c, 0xcb, 0xe6, 0x97, 0x0c, 0x5e, 0xe5, 0xf4,
+ 0xe2, 0xdd, 0xf9, 0x04, 0x01, 0x6a, 0xda, 0xf2, 0xda, 0x44, 0xc4, 0x6a,
+ 0x8b, 0x5b, 0x88, 0xc5, 0xd7, 0x2c, 0x02, 0xa1, 0x5f, 0xf7, 0xa4, 0xa8,
+ 0xdd, 0xff, 0x5d, 0x14, 0xb5, 0xfb, 0xbf, 0x94, 0xa2, 0x76, 0x3f, 0x19,
+ 0x45, 0xed, 0x3e, 0x8c, 0xa2, 0xac, 0x5a, 0x8c, 0x53, 0xbf, 0x07, 0x7d,
+ 0xed, 0x3d, 0x8c, 0xbe, 0xf6, 0xfe, 0x77, 0xd1, 0xd7, 0xde, 0xff, 0x52,
+ 0xfa, 0xda, 0xfb, 0x64, 0xf4, 0xb5, 0xf7, 0x6f, 0xa2, 0xaf, 0xfd, 0x87,
+ 0xd1, 0xd7, 0xfe, 0x27, 0xa0, 0xaf, 0x71, 0x28, 0x9d, 0x72, 0x95, 0xb5,
+ 0xd2, 0xc4, 0x69, 0x7d, 0x7c, 0x53, 0xe5, 0x6b, 0x93, 0xa3, 0xa2, 0xc6,
+ 0x02, 0x05, 0x08, 0x73, 0x13, 0x66, 0xd0, 0x89, 0x83, 0xdf, 0x8b, 0xe9,
+ 0xa1, 0xec, 0xad, 0x24, 0x9a, 0xfd, 0x4f, 0x46, 0x34, 0xfb, 0x0f, 0x22,
+ 0x9a, 0xbd, 0x25, 0x44, 0xd3, 0xa8, 0xea, 0x6d, 0x2d, 0x7c, 0xe1, 0xe0,
+ 0x79, 0x0f, 0x7b, 0x3c, 0xc1, 0x5c, 0x27, 0x14, 0x1b, 0xeb, 0xe4, 0x73,
+ 0x2b, 0x54, 0xa3, 0xb6, 0xb1, 0xa0, 0x7e, 0xcb, 0xba, 0x6c, 0x12, 0x29,
+ 0xed, 0xb0, 0xb1, 0xc0, 0xc2, 0x14, 0x40, 0xdb, 0x5c, 0x96, 0xd5, 0x17,
+ 0xd6, 0x9a, 0x41, 0xaf, 0xd9, 0x25, 0x16, 0x7c, 0x5f, 0xb5, 0x33, 0x9f,
+ 0x6a, 0x5f, 0x3e, 0x4a, 0x6e, 0x86, 0x13, 0x7a, 0xfe, 0x1f, 0x92, 0x9b,
+ 0x61, 0x6e, 0xc2, 0x5a, 0xb8, 0x7b, 0xc3, 0xf0, 0xeb, 0x32, 0x9c, 0x22,
+ 0x4e, 0x81, 0xa3, 0xe3, 0x8a, 0x87, 0x5c, 0xb9, 0xae, 0x17, 0x17, 0xbd,
+ 0x36, 0xe8, 0xdb, 0x43, 0xeb, 0xbf, 0x9c, 0xcf, 0xf8, 0x44, 0xde, 0xb5,
+ 0x61, 0xa4, 0x7c, 0x92, 0xfd, 0x3a, 0xb6, 0xb9, 0x72, 0x12, 0x53, 0xb8,
+ 0x55, 0x2b, 0xa0, 0x09, 0xac, 0x43, 0x57, 0x40, 0x17, 0xb4, 0x1b, 0x5b,
+ 0xd1, 0x8a, 0x6a, 0x5d, 0x7b, 0xf5, 0x4e, 0x87, 0x29, 0xd7, 0x20, 0xce,
+ 0x96, 0xc7, 0x1e, 0x3b, 0x13, 0xfc, 0x14, 0xa1, 0x5b, 0xb6, 0xf5, 0xb5,
+ 0xa9, 0xd0, 0x19, 0xd8, 0x9a, 0x66, 0x3f, 0xb3, 0x11, 0xf5, 0x9d, 0x4c,
+ 0x86, 0x69, 0x9c, 0x94, 0xc3, 0x2c, 0x0b, 0x3b, 0x84, 0x35, 0x68, 0x3d,
+ 0xa1, 0x84, 0xc3, 0x88, 0x9e, 0x8f, 0x30, 0x8e, 0x13, 0xf7, 0x06, 0x39,
+ 0x26, 0x5e, 0xed, 0x54, 0x4f, 0x18, 0x37, 0x02, 0x18, 0xfb, 0x65, 0xae,
+ 0x71, 0x38, 0x58, 0xf3, 0xd4, 0x4b, 0x3d, 0x05, 0xf6, 0x4d, 0xdf, 0xa7,
+ 0xe5, 0xb0, 0xc8, 0xe6, 0x84, 0x2f, 0x92, 0xcd, 0x30, 0x87, 0x4f, 0x10,
+ 0x4d, 0x24, 0x22, 0x8c, 0xfd, 0xb5, 0x12, 0x7b, 0x1c, 0x31, 0x5c, 0x00,
+ 0x0a, 0x03, 0x8d, 0xe6, 0x3a, 0x71, 0x07, 0x9d, 0xe3, 0xf8, 0x3d, 0xe9,
+ 0xf7, 0xf0, 0x36, 0x48, 0x1d, 0xa9, 0x13, 0x02, 0x1c, 0x69, 0x55, 0xdc,
+ 0x65, 0xe9, 0x10, 0x08, 0x8d, 0x96, 0x4d, 0xb3, 0x49, 0x52, 0xc8, 0x71,
+ 0xe0, 0x48, 0x5f, 0x34, 0x0e, 0x02, 0xcf, 0xc3, 0xb8, 0x94, 0x5c, 0x8a,
+ 0xa5, 0x5d, 0xa5, 0xb7, 0x8c, 0xbb, 0x4f, 0xb3, 0x9d, 0xf9, 0x19, 0x98,
+ 0x57, 0x8a, 0x4a, 0x7f, 0xd4, 0x3f, 0x7e, 0xf9, 0xb2, 0x86, 0xd1, 0x8f,
+ 0xab, 0x46, 0x11, 0xc9, 0x5c, 0xc9, 0xaf, 0x9c, 0xc2, 0xf2, 0xa1, 0xc9,
+ 0x52, 0x67, 0x19, 0x88, 0x3d, 0x98, 0x02, 0xbb, 0xa3, 0x78, 0x29, 0xe0,
+ 0xbc, 0x19, 0x57, 0xc5, 0x2e, 0xd0, 0x55, 0x40, 0x66, 0x8c, 0x19, 0x0c,
+ 0x33, 0xc3, 0xda, 0xdd, 0x57, 0x8b, 0x69, 0x32, 0x2b, 0xff, 0x43, 0x32,
+ 0x3d, 0x5c, 0x8a, 0xfa, 0x8c, 0x36, 0x27, 0x67, 0x14, 0x93, 0xfc, 0x72,
+ 0x9d, 0x8c, 0x8f, 0xd6, 0x94, 0x0f, 0x6e, 0x34, 0xc0, 0x63, 0x0d, 0x4f,
+ 0x0d, 0x50, 0xbb, 0xc3, 0x63, 0xe9, 0xe8, 0xf8, 0x21, 0xff, 0xde, 0x69,
+ 0x0c, 0xc0, 0xb2, 0x9d, 0x17, 0x24, 0x33, 0x97, 0x52, 0xaf, 0x1c, 0x83,
+ 0xcf, 0xa7, 0xe4, 0xac, 0xc4, 0x7d, 0x92, 0x43, 0x09, 0xbb, 0xa6, 0xc3,
+ 0xa5, 0x70, 0x41, 0xbd, 0x52, 0x02, 0x19, 0xdb, 0x12, 0xe4, 0xf8, 0x1f,
+ 0x56, 0x18, 0xd2, 0xce, 0xfe, 0xa3, 0x17, 0x86, 0xb4, 0x4d, 0x3f, 0x8c,
+ 0x90, 0x04, 0x17, 0xd4, 0xa5, 0x2a, 0x39, 0xb5, 0x6b, 0x8a, 0x69, 0xf7,
+ 0xa4, 0x81, 0xff, 0xad, 0xbc, 0x98, 0x22, 0x95, 0x0c, 0x37, 0xbe, 0x07,
+ 0x3b, 0x26, 0x05, 0xaf, 0xf3, 0x7b, 0xe4, 0xe2, 0x9e, 0xa5, 0xf5, 0x5e,
+ 0x3c, 0x3d, 0x2d, 0x8a, 0xff, 0x24, 0xc6, 0xf7, 0xd9, 0x2a, 0xa6, 0x73,
+ 0xef, 0x6b, 0xb2, 0x3a, 0x97, 0x2a, 0x85, 0xac, 0x1d, 0x4e, 0xc7, 0xe7,
+ 0xa5, 0x8d, 0xdd, 0x79, 0xa1, 0xf3, 0x2e, 0xb3, 0x6b, 0x63, 0x9e, 0xdc,
+ 0x89, 0x4b, 0xee, 0x08, 0xa4, 0x1c, 0x4b, 0x89, 0xc7, 0x43, 0x44, 0x3f,
+ 0xfe, 0x26, 0x2c, 0x51, 0x1e, 0xb3, 0x2a, 0x19, 0x29, 0x16, 0x2e, 0x69,
+ 0x8e, 0x6f, 0x03, 0x38, 0xf1, 0x9a, 0x09, 0x09, 0x3b, 0x46, 0x52, 0x65,
+ 0x20, 0x99, 0x72, 0x96, 0x56, 0x68, 0x4f, 0x0f, 0x6f, 0xa3, 0x3b, 0xa0,
+ 0xcf, 0x77, 0x7f, 0xb9, 0xa3, 0xe0, 0x1f, 0x31, 0x2e, 0xce, 0x9a, 0x1b,
+ 0x9b, 0x0c, 0x4a, 0x5c, 0xf6, 0xca, 0x6d, 0xae, 0x1e, 0xac, 0x59, 0x47,
+ 0x1b, 0xb9, 0xa0, 0x62, 0xf2, 0xf3, 0x49, 0x9e, 0x8c, 0x62, 0x0a, 0xd3,
+ 0x0a, 0xb2, 0x21, 0x0e, 0x11, 0xb0, 0x38, 0x9d, 0xcd, 0xfa, 0x03, 0x84,
+ 0x66, 0x2d, 0xe1, 0x9b, 0xb9, 0x00, 0xc4, 0x90, 0xda, 0xf7, 0xf6, 0xcd,
+ 0x69, 0x2f, 0x98, 0xde, 0x5a, 0x88, 0xdb, 0x95, 0x5f, 0x22, 0x99, 0x29,
+ 0x6b, 0x86, 0xda, 0xc1, 0xcb, 0x5d, 0x27, 0x0a, 0x3c, 0x99, 0xe3, 0x85,
+ 0x18, 0xd0, 0x97, 0x9c, 0xde, 0xb9, 0x1e, 0xf3, 0xeb, 0xb3, 0x8b, 0x13,
+ 0xbe, 0x0a, 0xd1, 0x76, 0x44, 0x31, 0x19, 0x0c, 0xbb, 0x87, 0xe2, 0xd3,
+ 0x04, 0x19, 0xe0, 0xb6, 0x26, 0xb1, 0x04, 0xea, 0x96, 0x70, 0x26, 0x6f,
+ 0xce, 0x31, 0xe7, 0x58, 0x7d, 0x65, 0x42, 0xb0, 0x8e, 0x4c, 0xe7, 0x54,
+ 0x5f, 0x57, 0xf3, 0x9a, 0xeb, 0x93, 0x60, 0x06, 0xe8, 0xe9, 0xaf, 0x4e,
+ 0x18, 0xfb, 0x55, 0x36, 0x7b, 0x6f, 0xc6, 0x55, 0x30, 0x31, 0xd9, 0xde,
+ 0x34, 0xd7, 0xd7, 0x59, 0xbe, 0xb1, 0xaf, 0xd0, 0x28, 0x83, 0x5c, 0x94,
+ 0xa9, 0xe8, 0xd1, 0xd4, 0xf6, 0x14, 0xc1, 0xc7, 0x27, 0xd9, 0xfb, 0x74,
+ 0x72, 0x27, 0x50, 0x95, 0xe4, 0x81, 0xa6, 0x8d, 0x8d, 0x30, 0x20, 0x5a,
+ 0xeb, 0x74, 0x34, 0x79, 0x2e, 0x2c, 0x48, 0x0d, 0x2c, 0x55, 0x02, 0x3e,
+ 0x14, 0xfd, 0x7a, 0xb3, 0xbf, 0x25, 0x5a, 0x3b, 0x1f, 0x80, 0xf3, 0xb7,
+ 0x17, 0x26, 0x43, 0x61, 0x99, 0x0f, 0xa9, 0x05, 0x0a, 0xde, 0x2e, 0x14,
+ 0xde, 0x1d, 0x9b, 0x09, 0xe2, 0x9d, 0x5c, 0x4e, 0x52, 0x0a, 0xfe, 0xdc,
+ 0x52, 0xbb, 0x03, 0xf0, 0x78, 0xa0, 0x05, 0xe7, 0x54, 0x7b, 0xe1, 0x9a,
+ 0x7c, 0x3f, 0xe9, 0xc5, 0x14, 0x1d, 0x4d, 0x28, 0x8e, 0xb6, 0x4a, 0x31,
+ 0xe0, 0xa0, 0xd9, 0x4f, 0xcf, 0xed, 0x87, 0xa1, 0x72, 0xb7, 0x9a, 0x32,
+ 0x77, 0x72, 0x57, 0xbf, 0x16, 0x9c, 0xbe, 0x71, 0x9c, 0x5a, 0xe7, 0x45,
+ 0x46, 0x86, 0x94, 0x4a, 0xe0, 0x34, 0x94, 0xbf, 0xe0, 0x33, 0x1c, 0xaa,
+ 0x32, 0xc5, 0x20, 0x36, 0x68, 0x3b, 0x8d, 0x48, 0x80, 0x27, 0x6d, 0x5e,
+ 0xd0, 0x52, 0xe4, 0x4e, 0x23, 0x7d, 0x55, 0x67, 0x8b, 0xf1, 0xc9, 0xf8,
+ 0xcc, 0xc2, 0x0b, 0x8e, 0xc0, 0x2d, 0x0c, 0x2c, 0xe9, 0xdf, 0x1b, 0xe8,
+ 0xeb, 0x68, 0x69, 0xab, 0x1f, 0x65, 0xbd, 0xdc, 0xf0, 0x20, 0x69, 0x1c,
+ 0x11, 0x99, 0xe8, 0x68, 0xfb, 0x9a, 0xbd, 0x80, 0xfc, 0xd8, 0x8b, 0x4e,
+ 0xf0, 0x71, 0x9f, 0x29, 0xfc, 0x91, 0x9a, 0x98, 0x27, 0x59, 0x61, 0x16,
+ 0x09, 0xc3, 0xab, 0x12, 0x0e, 0x01, 0xa2, 0x07, 0x03, 0x59, 0xf4, 0xf0,
+ 0x1d, 0x55, 0x26, 0xea, 0xf1, 0x19, 0x20, 0x0e, 0x65, 0xc0, 0x19, 0x3b,
+ 0x78, 0x47, 0x0f, 0x60, 0xc6, 0x1d, 0x55, 0x96, 0x6a, 0x5d, 0x7a, 0x90,
+ 0xf5, 0x97, 0x64, 0x92, 0xee, 0x92, 0xd5, 0x88, 0x83, 0x7c, 0xe4, 0x78,
+ 0xe3, 0x1a, 0x08, 0x9d, 0x1b, 0x19, 0x12, 0x5b, 0x50, 0x70, 0x22, 0xda,
+ 0x78, 0x3f, 0x78, 0xaa, 0x1e, 0x2e, 0x44, 0x50, 0xf0, 0xf8, 0xa9, 0x8e,
+ 0x8a, 0x53, 0xb2, 0x1d, 0x6b, 0xa1, 0x70, 0x27, 0x64, 0x68, 0x5f, 0x04,
+ 0xcb, 0xb8, 0xd3, 0x10, 0xd4, 0x64, 0x3a, 0x63, 0xc4, 0x26, 0xde, 0xef,
+ 0x03, 0xe7, 0x2c, 0x72, 0x04, 0x71, 0xb2, 0xac, 0x84, 0x0a, 0xcb, 0x28,
+ 0x18, 0xf1, 0xf2, 0x78, 0x7f, 0x6f, 0x2f, 0x62, 0xe9, 0x8c, 0x71, 0x9c,
+ 0x39, 0x90, 0x1d, 0xcb, 0xf2, 0xa4, 0x09, 0x21, 0xd3, 0xf0, 0xdd, 0x36,
+ 0xc4, 0x42, 0xd7, 0x1c, 0x1f, 0x05, 0x8b, 0xd9, 0x92, 0x34, 0x8e, 0x3b,
+ 0x02, 0xd7, 0x26, 0xdc, 0x4f, 0xf9, 0xe8, 0xce, 0xb6, 0x0a, 0xe4, 0x50,
+ 0x20, 0x07, 0x02, 0xbe, 0x21, 0x08, 0x42, 0x91, 0x84, 0xd5, 0x94, 0x41,
+ 0x45, 0x42, 0x91, 0x98, 0xf9, 0x36, 0x18, 0x52, 0x41, 0x35, 0xa4, 0xb3,
+ 0x19, 0xfd, 0x8a, 0xf5, 0xe7, 0x17, 0x05, 0xb2, 0x46, 0x4a, 0x66, 0x9a,
+ 0xdd, 0x45, 0x37, 0x81, 0x64, 0xb5, 0x3a, 0x71, 0x7d, 0x78, 0x3e, 0x54,
+ 0x5b, 0x18, 0xf4, 0x45, 0x7b, 0xe4, 0x71, 0xcb, 0xf3, 0x9d, 0x6c, 0x7a,
+ 0xf9, 0xd3, 0x6e, 0xbc, 0xbb, 0xb3, 0xb3, 0xf3, 0x4b, 0x6f, 0x8e, 0xc4,
+ 0xc9, 0x29, 0x12, 0xf0, 0x6f, 0xaf, 0x96, 0x47, 0xd5, 0x72, 0x87, 0x3b,
+ 0xd3, 0xea, 0xfc, 0x13, 0x7f, 0xec, 0x76, 0xf1, 0xdf, 0xbd, 0x7f, 0x75,
+ 0xd6, 0xbb, 0xc7, 0xbf, 0xc7, 0x13, 0x88, 0x51, 0xfd, 0x24, 0x49, 0x99,
+ 0xf4, 0xf1, 0x9a, 0x18, 0x05, 0x3d, 0x1e, 0xc2, 0x3f, 0x5e, 0xf8, 0x83,
+ 0x16, 0xd8, 0x49, 0x98, 0xce, 0xb9, 0x1a, 0x63, 0x5a, 0x0d, 0xaf, 0x7c,
+ 0xc1, 0x0e, 0x2e, 0x0d, 0xd8, 0x77, 0xc4, 0xa0, 0x92, 0xf8, 0x3e, 0x38,
+ 0x50, 0xcd, 0xfd, 0x56, 0xcf, 0x8b, 0x34, 0x0b, 0x4d, 0x6e, 0x96, 0x5b,
+ 0xba, 0x35, 0x98, 0x2e, 0xc6, 0x6c, 0xb8, 0x25, 0x78, 0x99, 0x39, 0x35,
+ 0x8e, 0x03, 0xfb, 0x63, 0xbc, 0x39, 0x3c, 0x95, 0xc3, 0xab, 0x74, 0x2a,
+ 0x1c, 0x7a, 0x53, 0x93, 0xaf, 0x3b, 0xb8, 0x44, 0xb0, 0x42, 0x9d, 0xc0,
+ 0x2d, 0xda, 0x19, 0xeb, 0x57, 0x30, 0x93, 0x2d, 0x29, 0x9e, 0x60, 0x6e,
+ 0x56, 0xca, 0x17, 0x48, 0xa2, 0xcb, 0x05, 0xda, 0x03, 0x07, 0x89, 0x5c,
+ 0x61, 0x5a, 0x52, 0x24, 0x2c, 0x81, 0x20, 0x17, 0x4e, 0x0b, 0xba, 0x37,
+ 0xcb, 0xc5, 0x20, 0x16, 0x99, 0x92, 0x46, 0x44, 0x19, 0x1a, 0x68, 0xf7,
+ 0x7b, 0xf6, 0xf2, 0xf8, 0x82, 0xeb, 0x22, 0xc0, 0xbf, 0x88, 0xc6, 0x06,
+ 0x3f, 0x10, 0x5c, 0xab, 0x09, 0x7a, 0x4e, 0x18, 0x6d, 0x94, 0x7d, 0x44,
+ 0xc7, 0x5e, 0xca, 0xce, 0x10, 0x8b, 0x32, 0xe9, 0xea, 0xae, 0x6c, 0xd8,
+ 0x8d, 0x72, 0x3c, 0x23, 0x37, 0x59, 0x99, 0x86, 0x70, 0x1e, 0x6a, 0x62,
+ 0xa4, 0xa9, 0x7c, 0xf1, 0xe8, 0x71, 0x6f, 0x87, 0xa7, 0x88, 0x6b, 0x28,
+ 0xa7, 0x46, 0x10, 0x4f, 0xc9, 0x9b, 0xa1, 0xe1, 0x91, 0x49, 0x38, 0x6c,
+ 0xdb, 0x0c, 0xa5, 0x1b, 0x21, 0xf6, 0x0c, 0xa5, 0x5d, 0x57, 0x79, 0xac,
+ 0xdf, 0x3a, 0x69, 0xb8, 0xc1, 0xc2, 0x4d, 0x8a, 0x8d, 0x26, 0xd5, 0xe6,
+ 0x44, 0x1c, 0xe7, 0x8d, 0x15, 0x0c, 0x12, 0x2e, 0xd9, 0xc4, 0xbc, 0x5c,
+ 0xee, 0x38, 0x46, 0x79, 0xf3, 0xce, 0xbf, 0xc4, 0xf1, 0xd3, 0x6a, 0xb7,
+ 0x25, 0x33, 0x19, 0x50, 0xd6, 0xb3, 0x99, 0x02, 0x12, 0x77, 0x49, 0x52,
+ 0xcc, 0x86, 0x0b, 0xb4, 0xdb, 0x21, 0xd9, 0x61, 0xe5, 0x10, 0x0a, 0xc7,
+ 0x2f, 0x4b, 0xdc, 0x2f, 0x5c, 0x14, 0xc2, 0x1b, 0x80, 0xc1, 0x36, 0xaf,
+ 0x51, 0x84, 0x96, 0x63, 0x0d, 0x50, 0x94, 0x01, 0xfb, 0x9e, 0x30, 0x3e,
+ 0x11, 0x93, 0x90, 0xf9, 0xdf, 0xc1, 0xfd, 0x3f, 0xed, 0x45, 0xdf, 0xa5,
+ 0x37, 0x49, 0x91, 0xfe, 0x57, 0x80, 0x7f, 0x01, 0xe5, 0x7d, 0xb2, 0x3c,
+ 0x4e, 0x6a, 0x7d, 0x2d, 0x76, 0x61, 0xf4, 0x54, 0xe6, 0x17, 0xb5, 0x5c,
+ 0x4e, 0xc3, 0x31, 0xbe, 0xa3, 0x5b, 0xbd, 0x14, 0x8d, 0x2c, 0x04, 0xb3,
+ 0x2a, 0x08, 0x83, 0x92, 0x3d, 0xcf, 0xe6, 0x4c, 0x15, 0xfa, 0x7b, 0xe8,
+ 0x57, 0xe4, 0x93, 0x40, 0x3b, 0x8f, 0xb3, 0xd7, 0x20, 0xb6, 0xd4, 0x5b,
+ 0x6c, 0x2a, 0x1b, 0xe7, 0xa0, 0x93, 0x27, 0x44, 0x29, 0x6c, 0x9d, 0x22,
+ 0xab, 0x96, 0x38, 0x88, 0x3a, 0x7f, 0xc2, 0x58, 0xaa, 0xaf, 0x8f, 0x3a,
+ 0xbd, 0x7a, 0x1c, 0xb2, 0x07, 0xd9, 0xb6, 0xc0, 0x7d, 0xa2, 0x9b, 0xb3,
+ 0x6e, 0x4e, 0x90, 0xdb, 0x12, 0x6f, 0x67, 0x9c, 0x3e, 0x89, 0x5e, 0x48,
+ 0xc9, 0x37, 0xd9, 0x6c, 0x7f, 0x4f, 0xf6, 0x71, 0x89, 0x5b, 0xcf, 0x5d,
+ 0x91, 0x8f, 0x6e, 0x82, 0x32, 0x2d, 0xaf, 0xa9, 0x0a, 0x7e, 0xe7, 0xc3,
+ 0x8f, 0x6e, 0xbf, 0x39, 0x39, 0x7a, 0xf6, 0xea, 0x64, 0x05, 0xd8, 0xa4,
+ 0xe8, 0xdd, 0xb8, 0x4c, 0x9e, 0xda, 0x7d, 0x24, 0xbb, 0x5f, 0xc4, 0xc9,
+ 0x25, 0xae, 0x60, 0x30, 0x74, 0x4e, 0x34, 0x6f, 0xbd, 0x42, 0x48, 0xe0,
+ 0xc1, 0x57, 0x8e, 0xe8, 0x15, 0x8e, 0xa4, 0x34, 0x39, 0x9f, 0x6e, 0x51,
+ 0x1a, 0x75, 0x0b, 0xfb, 0x6c, 0x43, 0x04, 0x83, 0xc1, 0x24, 0x99, 0xbd,
+ 0x37, 0x58, 0x1d, 0xdc, 0x52, 0x17, 0xf1, 0x25, 0xb9, 0x06, 0x80, 0xfd,
+ 0x50, 0xf2, 0x40, 0x43, 0x52, 0xdb, 0x3f, 0x16, 0xa8, 0x13, 0x4d, 0x93,
+ 0xe2, 0xbd, 0xa2, 0x8f, 0x08, 0x88, 0x88, 0x4b, 0x8b, 0xa6, 0x34, 0x05,
+ 0xcb, 0x32, 0xb1, 0x02, 0x8d, 0x04, 0xd2, 0x6e, 0xae, 0x4c, 0xe1, 0x1f,
+ 0x83, 0x46, 0xd2, 0xc2, 0x8a, 0xd0, 0xbd, 0x8d, 0xb2, 0x26, 0xde, 0x66,
+ 0x94, 0xf7, 0x3d, 0x9d, 0x57, 0x77, 0x46, 0x28, 0x25, 0xfb, 0x47, 0x73,
+ 0x7d, 0x37, 0x3b, 0x9d, 0x2d, 0x4a, 0xe9, 0x0b, 0x68, 0x49, 0x8c, 0x31,
+ 0x28, 0xde, 0x05, 0x9e, 0x41, 0x8e, 0x3b, 0x8d, 0x0a, 0x0c, 0x67, 0xea,
+ 0xb1, 0x0e, 0x48, 0x1e, 0x35, 0x13, 0x39, 0x4f, 0x95, 0x91, 0x48, 0x32,
+ 0x6b, 0x2a, 0x5d, 0xb8, 0xb6, 0x91, 0x82, 0x6c, 0x98, 0xaa, 0x4c, 0x29,
+ 0x21, 0x16, 0x38, 0x42, 0x30, 0xdc, 0xe1, 0x68, 0x31, 0xda, 0xec, 0x44,
+ 0x9d, 0xad, 0x96, 0x60, 0x42, 0x67, 0x02, 0xf5, 0xac, 0x97, 0x7f, 0x63,
+ 0x04, 0xfc, 0x51, 0xd4, 0x61, 0x7a, 0xdb, 0xd9, 0x79, 0xba, 0xa6, 0xd8,
+ 0xf4, 0xa2, 0x6b, 0x37, 0x9c, 0xcf, 0x82, 0xbb, 0xbd, 0xce, 0x69, 0x58,
+ 0xe8, 0x6e, 0x81, 0x08, 0x05, 0xff, 0x1e, 0x68, 0xd4, 0x61, 0x9b, 0x30,
+ 0x55, 0x49, 0xc1, 0xec, 0xc8, 0xd4, 0x07, 0x32, 0x41, 0x8f, 0xa2, 0xb4,
+ 0x22, 0xd3, 0x11, 0xf5, 0xce, 0x06, 0x97, 0x86, 0xe2, 0xdc, 0x7b, 0xd1,
+ 0x99, 0x29, 0xe0, 0x85, 0x4c, 0xbb, 0x2a, 0x86, 0x32, 0x56, 0xfa, 0x5d,
+ 0x92, 0x73, 0x93, 0x49, 0x2b, 0x11, 0xa2, 0xe3, 0x6a, 0x8e, 0xb9, 0x19,
+ 0xa6, 0x94, 0xa2, 0x95, 0xda, 0x71, 0x78, 0xae, 0xcd, 0x04, 0xa6, 0x0f,
+ 0xa4, 0xca, 0x85, 0x04, 0x3c, 0xec, 0x8d, 0x66, 0xa0, 0xa5, 0x31, 0xf6,
+ 0xb4, 0xcd, 0xb5, 0x94, 0x50, 0xfa, 0x09, 0xd0, 0xd5, 0x62, 0xee, 0xa8,
+ 0x94, 0x5c, 0xf1, 0x0a, 0xa8, 0x78, 0x92, 0xcf, 0xba, 0x5e, 0x71, 0x5a,
+ 0x0c, 0x5e, 0x17, 0x0f, 0x18, 0xe5, 0xb8, 0x4e, 0xe7, 0x39, 0xc8, 0x30,
+ 0x83, 0x49, 0x6a, 0x02, 0x0d, 0xf8, 0x4d, 0xe5, 0x0e, 0xb6, 0x73, 0x3c,
+ 0xc8, 0xde, 0xa9, 0xb5, 0xd8, 0x20, 0x34, 0x54, 0xb3, 0x11, 0x40, 0xf4,
+ 0x5d, 0x06, 0xf6, 0xf4, 0xa6, 0x04, 0x12, 0x84, 0x5c, 0x05, 0x22, 0xbd,
+ 0x64, 0x1c, 0x5f, 0x5b, 0xba, 0x6b, 0x75, 0x05, 0x5b, 0xe2, 0x5a, 0xbf,
+ 0xa5, 0xe0, 0x30, 0x1c, 0xf2, 0xe6, 0x36, 0xd2, 0xa1, 0xe7, 0x83, 0x8a,
+ 0x2b, 0x8c, 0x52, 0x04, 0x25, 0x04, 0x61, 0xfa, 0xaf, 0x45, 0x38, 0x40,
+ 0x25, 0x29, 0x9d, 0xb1, 0xe9, 0x32, 0xd7, 0xca, 0xd9, 0xd1, 0xb0, 0xf0,
+ 0x12, 0x7a, 0x47, 0x48, 0x2c, 0x40, 0xc0, 0xdc, 0xa2, 0x2c, 0xce, 0x1d,
+ 0x26, 0xf5, 0xb2, 0x30, 0x82, 0x79, 0xcb, 0x70, 0x93, 0x92, 0xc8, 0x48,
+ 0x8b, 0x53, 0xda, 0x95, 0x2f, 0x7d, 0x7c, 0x53, 0x9e, 0xa9, 0xad, 0x51,
+ 0x29, 0x87, 0x51, 0x30, 0x4f, 0x49, 0x3c, 0xba, 0xce, 0x78, 0xfd, 0x39,
+ 0xcd, 0x22, 0x81, 0x6b, 0x93, 0xa6, 0xc4, 0x29, 0xd1, 0x9e, 0xcf, 0x20,
+ 0x4d, 0x18, 0xe4, 0x10, 0xc5, 0x74, 0x44, 0xc4, 0xcf, 0xc8, 0x6f, 0xc0,
+ 0x97, 0xf1, 0x95, 0x56, 0x47, 0x28, 0x52, 0xcc, 0x46, 0x46, 0xe4, 0x54,
+ 0x9a, 0x45, 0xa2, 0x18, 0x77, 0x5e, 0x70, 0x16, 0x1b, 0x56, 0x0a, 0xe3,
+ 0x7e, 0x45, 0x02, 0x9b, 0x21, 0x77, 0x61, 0x49, 0x0a, 0x61, 0x17, 0xb1,
+ 0x47, 0xbe, 0xcf, 0x3d, 0x49, 0xaa, 0x17, 0x84, 0xbe, 0x62, 0x21, 0x23,
+ 0xfa, 0x4b, 0x5a, 0x0c, 0xd2, 0x22, 0x87, 0x79, 0xff, 0xed, 0xb1, 0xa6,
+ 0x15, 0x6b, 0x29, 0x0b, 0xd6, 0x0a, 0xe4, 0x84, 0xe2, 0x31, 0xe2, 0xa1,
+ 0x7b, 0xb1, 0x2b, 0x8c, 0x4d, 0x84, 0x6b, 0xab, 0x6f, 0xba, 0x9a, 0x41,
+ 0x93, 0x42, 0xbb, 0x64, 0x0b, 0x02, 0xea, 0x43, 0xbe, 0x3c, 0x0e, 0x5e,
+ 0x31, 0x06, 0x98, 0x98, 0x02, 0x37, 0x48, 0xe4, 0x24, 0x20, 0xdf, 0x28,
+ 0x1f, 0x54, 0x09, 0xcd, 0xcf, 0x0c, 0xfb, 0x22, 0x63, 0x73, 0xed, 0x4b,
+ 0xc5, 0x9e, 0xf1, 0x01, 0x0f, 0x4c, 0x96, 0x0a, 0x8e, 0x25, 0x43, 0xb2,
+ 0x69, 0xc6, 0xb2, 0xa3, 0x36, 0x57, 0x5e, 0xa1, 0x42, 0x84, 0x66, 0x2d,
+ 0xb2, 0xef, 0x85, 0x0d, 0x16, 0xb4, 0x66, 0xaf, 0x2f, 0x4e, 0x5f, 0x75,
+ 0x1b, 0xa7, 0x4e, 0x04, 0x5b, 0xa7, 0xbc, 0xac, 0x72, 0x1c, 0x21, 0x29,
+ 0xdf, 0x79, 0x51, 0x44, 0xb2, 0x1c, 0x26, 0xd8, 0x8b, 0xdc, 0xdf, 0xb4,
+ 0x72, 0x5d, 0xc9, 0x87, 0x29, 0x04, 0xc9, 0x50, 0x4d, 0x7e, 0xbc, 0xac,
+ 0xbe, 0x25, 0x0a, 0x69, 0xb0, 0xa4, 0xad, 0x27, 0x2b, 0x29, 0xdc, 0x30,
+ 0xc0, 0x6b, 0xa4, 0x8a, 0x02, 0x5d, 0x01, 0x4b, 0xea, 0x35, 0xda, 0x5e,
+ 0x79, 0x2a, 0xc8, 0x5d, 0xd2, 0x8c, 0x0e, 0xce, 0xb3, 0xfc, 0x66, 0x16,
+ 0x9f, 0x22, 0x76, 0x73, 0x74, 0x9a, 0x5f, 0xe2, 0x01, 0x7a, 0x1d, 0x36,
+ 0xd8, 0xbe, 0x3d, 0x7f, 0x1d, 0x6d, 0xa2, 0xd8, 0x83, 0xf5, 0x4d, 0xa4,
+ 0x5e, 0x36, 0x3e, 0xba, 0x25, 0x46, 0x93, 0x92, 0x45, 0x61, 0x19, 0x4d,
+ 0x37, 0x3a, 0xf9, 0xf1, 0xe8, 0xd5, 0xf9, 0xe9, 0xc9, 0xcf, 0x9c, 0xd7,
+ 0xe1, 0x4d, 0x07, 0x3f, 0xfe, 0xd6, 0xb9, 0xbd, 0x28, 0x04, 0x06, 0x43,
+ 0xe4, 0x60, 0x24, 0xc1, 0xc2, 0xa2, 0xb8, 0xf5, 0xcc, 0x15, 0x6d, 0x19,
+ 0x96, 0xf3, 0x97, 0xb1, 0x56, 0x7f, 0x26, 0x86, 0x35, 0xc8, 0x66, 0x68,
+ 0xf0, 0x21, 0x10, 0x55, 0x2c, 0xcb, 0x08, 0x03, 0x23, 0xf2, 0xf7, 0x2a,
+ 0xb5, 0xe8, 0x71, 0xe8, 0x46, 0xaf, 0x35, 0x95, 0xb1, 0x4b, 0x9b, 0x8e,
+ 0x47, 0xf0, 0x59, 0x76, 0x49, 0x21, 0x3b, 0x8d, 0x14, 0x2e, 0x31, 0x04,
+ 0x20, 0x1d, 0x34, 0xe9, 0x19, 0xab, 0xdc, 0x68, 0x88, 0x58, 0x99, 0x4e,
+ 0xd8, 0x3d, 0xd3, 0x7a, 0x35, 0x32, 0x87, 0xa4, 0x5d, 0x24, 0xa8, 0x9c,
+ 0xe6, 0xe8, 0x14, 0x3a, 0x07, 0x75, 0x57, 0xde, 0x40, 0xb1, 0x0e, 0x30,
+ 0x85, 0xf0, 0xa5, 0x20, 0x79, 0x1b, 0x86, 0xeb, 0x1f, 0x44, 0x9d, 0x78,
+ 0x11, 0x1d, 0x74, 0x96, 0x48, 0x30, 0x9f, 0xcb, 0x25, 0x47, 0xfb, 0x56,
+ 0x1c, 0x94, 0x29, 0x30, 0xf9, 0x35, 0x3d, 0x72, 0xb3, 0x6e, 0x5d, 0x18,
+ 0x08, 0xab, 0x70, 0xae, 0x93, 0xad, 0xd1, 0xd4, 0x2b, 0xba, 0x5f, 0x69,
+ 0x1c, 0xea, 0x85, 0x1b, 0x2d, 0x0a, 0xb5, 0x6f, 0x1a, 0x0f, 0x00, 0xfb,
+ 0x71, 0x81, 0x01, 0x09, 0xef, 0x27, 0x5c, 0xbc, 0x4b, 0xdf, 0x86, 0x4d,
+ 0x94, 0x05, 0x37, 0x0f, 0x07, 0xf3, 0x81, 0xde, 0xb6, 0x01, 0x64, 0xc4,
+ 0xce, 0x65, 0xbc, 0x7c, 0x3a, 0x14, 0xa3, 0x26, 0x16, 0x96, 0x7c, 0x04,
+ 0xea, 0xdb, 0x11, 0x47, 0x20, 0x10, 0xb8, 0x98, 0xdf, 0x1c, 0x6d, 0xe2,
+ 0xc6, 0x37, 0x1b, 0x12, 0xf4, 0xd7, 0x11, 0x19, 0x0d, 0xef, 0x90, 0x0e,
+ 0x6b, 0x74, 0x98, 0x35, 0x8f, 0xa3, 0x07, 0x16, 0xb2, 0x71, 0xb8, 0x11,
+ 0xc9, 0x83, 0xfa, 0x64, 0xf3, 0xc6, 0xa4, 0xf7, 0x24, 0xb8, 0x4b, 0x61,
+ 0xcd, 0x35, 0x98, 0x99, 0x01, 0x1c, 0xe0, 0x36, 0x87, 0x7b, 0x15, 0xb9,
+ 0xc8, 0x0c, 0x4f, 0xed, 0x84, 0xea, 0x73, 0x4a, 0xf0, 0x58, 0x12, 0xb0,
+ 0x7d, 0x9b, 0x91, 0xcb, 0x58, 0xff, 0xa0, 0x63, 0x4d, 0x46, 0xa3, 0x8c,
+ 0x25, 0x32, 0x72, 0x95, 0x5b, 0xc2, 0x82, 0x3e, 0x29, 0xcf, 0xb6, 0xe5,
+ 0x08, 0x73, 0xd2, 0x2c, 0x5a, 0xcf, 0x48, 0x43, 0x0a, 0xa2, 0x15, 0xba,
+ 0x70, 0x78, 0x1c, 0xf8, 0xe3, 0xd3, 0x21, 0x6f, 0x1f, 0x9d, 0x4c, 0xcd,
+ 0x9f, 0x9d, 0xe4, 0x39, 0xba, 0x1d, 0x70, 0x07, 0xdb, 0x7a, 0x57, 0x5f,
+ 0x93, 0xb5, 0xf7, 0xf1, 0xf5, 0x6f, 0xdc, 0xe1, 0xa4, 0xca, 0xe0, 0x93,
+ 0x22, 0xa2, 0x88, 0xe9, 0xa7, 0xdb, 0x02, 0x5d, 0x6c, 0x2a, 0x05, 0x98,
+ 0xc8, 0x93, 0x46, 0xdc, 0x8f, 0xa0, 0x88, 0x7c, 0x76, 0xc7, 0xbc, 0x14,
+ 0xb5, 0x27, 0x98, 0x56, 0x03, 0x25, 0x42, 0xa4, 0x21, 0xae, 0xbc, 0x7f,
+ 0x2c, 0xb2, 0x74, 0x79, 0x54, 0x8a, 0x9e, 0x9f, 0x75, 0xd0, 0xdc, 0xfd,
+ 0xdc, 0xf1, 0xa6, 0x35, 0xc0, 0x0b, 0xfc, 0xb8, 0x9f, 0x2d, 0x48, 0x07,
+ 0xb3, 0x16, 0x37, 0x71, 0x71, 0x16, 0xeb, 0x56, 0x5f, 0xc1, 0x50, 0x0e,
+ 0x62, 0x26, 0xfb, 0x59, 0xb4, 0x36, 0x76, 0xa5, 0xc5, 0x99, 0xff, 0x37,
+ 0x61, 0x48, 0x01, 0x20, 0x98, 0x67, 0x12, 0x71, 0xe4, 0x06, 0x98, 0x08,
+ 0xbe, 0x1f, 0xbb, 0x83, 0x44, 0xed, 0xd7, 0x08, 0x57, 0x0d, 0x02, 0xce,
+ 0xc8, 0x59, 0xeb, 0xd9, 0x6c, 0x2e, 0x1c, 0x3d, 0x83, 0x63, 0x9d, 0x4c,
+ 0x64, 0x38, 0x39, 0xfc, 0x30, 0x3c, 0x46, 0x9b, 0xc0, 0xbc, 0x7c, 0x62,
+ 0x25, 0xda, 0xb6, 0x7f, 0x2b, 0xb3, 0x30, 0xbd, 0x8f, 0x49, 0x6b, 0x70,
+ 0xec, 0xef, 0x24, 0xfd, 0x00, 0xdd, 0x5a, 0xd0, 0xf8, 0x7b, 0xcd, 0xf8,
+ 0xc3, 0x96, 0xd3, 0xdb, 0x74, 0xb8, 0xa8, 0x82, 0xc8, 0x6e, 0x17, 0x57,
+ 0x5a, 0x87, 0x95, 0x87, 0xb4, 0x49, 0x3c, 0x44, 0x6a, 0xff, 0x75, 0xce,
+ 0xb5, 0x44, 0xe1, 0x41, 0x67, 0x4b, 0xa2, 0x04, 0x29, 0x64, 0xc7, 0xd6,
+ 0x2e, 0xf4, 0x4e, 0x3a, 0x46, 0x5c, 0xcb, 0x90, 0x8b, 0x94, 0xfd, 0x64,
+ 0x36, 0xdc, 0x37, 0xd8, 0x3d, 0x9c, 0xf0, 0x22, 0xd8, 0xfb, 0x73, 0xf6,
+ 0x10, 0x39, 0x9d, 0xcb, 0xe1, 0x1a, 0xaa, 0xf3, 0xa8, 0xf4, 0xb8, 0xa0,
+ 0xd7, 0x73, 0x4e, 0xa0, 0x7f, 0xd1, 0xd1, 0x35, 0xb0, 0x06, 0xb2, 0x72,
+ 0xe9, 0xab, 0xba, 0xf8, 0x1e, 0x04, 0x41, 0x32, 0xa9, 0xe2, 0xf2, 0x7a,
+ 0x18, 0x86, 0x08, 0x11, 0x8c, 0x3f, 0x53, 0xfb, 0xe3, 0x08, 0x1e, 0xee,
+ 0x5f, 0x0f, 0x0f, 0xd4, 0x0a, 0xe2, 0x5c, 0xdb, 0xde, 0x64, 0x8f, 0xca,
+ 0xbb, 0xd9, 0xf0, 0xea, 0xd9, 0xeb, 0x7e, 0xb8, 0x69, 0xa2, 0x71, 0x1a,
+ 0x3e, 0x59, 0x0a, 0x13, 0x7a, 0x1a, 0xe4, 0x0b, 0xac, 0x56, 0xcd, 0x8e,
+ 0x79, 0x29, 0x34, 0x8e, 0xe5, 0xbe, 0x8e, 0x9c, 0x6f, 0xc3, 0xcd, 0xd5,
+ 0x5f, 0x31, 0xc6, 0x76, 0xf4, 0xb1, 0x32, 0x23, 0x14, 0xa1, 0x92, 0x40,
+ 0x24, 0xe2, 0x04, 0x57, 0x24, 0x68, 0xe9, 0x36, 0x3b, 0x8b, 0x2e, 0xe0,
+ 0x74, 0xa4, 0x2d, 0x16, 0x4e, 0xc6, 0x81, 0x57, 0x5b, 0x2f, 0xaf, 0x26,
+ 0x59, 0x6d, 0xa9, 0x2c, 0x70, 0xb4, 0x7c, 0xa9, 0x81, 0xbd, 0x44, 0xeb,
+ 0xd8, 0x9a, 0x78, 0xea, 0xbd, 0xc6, 0x8e, 0xaf, 0x92, 0xe2, 0x38, 0x9f,
+ 0x5d, 0x87, 0x47, 0xd5, 0x08, 0x2c, 0x67, 0xc3, 0x9b, 0xd3, 0xef, 0x10,
+ 0xde, 0x4e, 0x86, 0x15, 0x15, 0xa3, 0xa5, 0x7a, 0xd6, 0x9a, 0x3c, 0x14,
+ 0x6e, 0x6e, 0x13, 0xc3, 0x0f, 0xa2, 0x93, 0xef, 0x8e, 0x9f, 0xbd, 0x3c,
+ 0xde, 0x6a, 0x8e, 0xe4, 0x19, 0xe3, 0xef, 0xb2, 0x8d, 0x97, 0x6f, 0x6a,
+ 0xde, 0x28, 0x43, 0x76, 0xce, 0x20, 0xe8, 0x61, 0xe1, 0x5b, 0x2c, 0xf6,
+ 0xb6, 0x74, 0x39, 0x45, 0x04, 0xaf, 0xb4, 0x28, 0xf2, 0x82, 0xf8, 0xd3,
+ 0x7b, 0x0d, 0x84, 0x9b, 0xa6, 0x53, 0x8c, 0xa8, 0x30, 0xc2, 0x0d, 0x97,
+ 0x84, 0x25, 0xb1, 0x9d, 0x3a, 0x8f, 0xc3, 0xcd, 0x8d, 0x50, 0x3b, 0x40,
+ 0x51, 0x89, 0xf3, 0xf8, 0x3d, 0xbb, 0xff, 0x65, 0x99, 0x60, 0x6d, 0x1e,
+ 0x62, 0x45, 0x34, 0xdc, 0x18, 0xb5, 0xbf, 0xfe, 0x51, 0xff, 0xb4, 0x29,
+ 0x43, 0x1b, 0xde, 0x04, 0xb7, 0x05, 0x6a, 0xcc, 0x8c, 0x7c, 0x19, 0xee,
+ 0xd5, 0x94, 0xa9, 0x39, 0x7e, 0x73, 0xf4, 0x0a, 0xc8, 0x8c, 0xc3, 0x37,
+ 0xfc, 0xc0, 0x7f, 0x5a, 0x1a, 0xf8, 0x98, 0x46, 0xe1, 0x6d, 0xf5, 0xf7,
+ 0xfd, 0x7e, 0x7c, 0x74, 0xfe, 0x32, 0xdc, 0x85, 0x7c, 0x29, 0x65, 0xdc,
+ 0xd9, 0xa3, 0xed, 0xb5, 0xf0, 0xa2, 0x7f, 0xd1, 0xd7, 0x1f, 0x3a, 0x26,
+ 0x3a, 0x91, 0x69, 0x59, 0x83, 0x3c, 0xd7, 0xc7, 0x81, 0xe6, 0xf6, 0xf8,
+ 0xc7, 0xf6, 0x9e, 0x79, 0xc1, 0x00, 0xad, 0xe9, 0xfa, 0xf4, 0x02, 0xaf,
+ 0xed, 0xcb, 0x6b, 0xfb, 0xcb, 0x5e, 0x0b, 0xbc, 0xd7, 0x8f, 0x43, 0x85,
+ 0xe5, 0x3d, 0x0e, 0x90, 0x05, 0x52, 0x25, 0x96, 0x95, 0x4c, 0x7f, 0xf9,
+ 0xec, 0x75, 0xbd, 0x01, 0x13, 0xa4, 0x80, 0xdf, 0xc4, 0x0a, 0xd3, 0x26,
+ 0x42, 0xa0, 0xa3, 0x5e, 0x06, 0x0c, 0xc5, 0xe7, 0xd7, 0x4f, 0x9c, 0xd8,
+ 0x0c, 0xdc, 0x48, 0xfa, 0xc8, 0x28, 0x31, 0xde, 0x1b, 0xaa, 0xfc, 0x87,
+ 0x27, 0x65, 0x4c, 0x03, 0x7f, 0x7b, 0xec, 0x91, 0xd8, 0xb2, 0xbd, 0x3c,
+ 0x4d, 0x8a, 0xcb, 0x34, 0x10, 0x47, 0xe1, 0xad, 0x95, 0x99, 0xaa, 0x0d,
+ 0xee, 0x82, 0xdb, 0x73, 0x82, 0xaf, 0x73, 0x14, 0x45, 0x57, 0x82, 0x29,
+ 0xe8, 0xa3, 0xa2, 0x8d, 0xbd, 0xc1, 0x5c, 0xf7, 0xbe, 0xff, 0xce, 0x1b,
+ 0x06, 0x50, 0xeb, 0x6f, 0xc8, 0xbb, 0x0d, 0x03, 0x1b, 0xa5, 0x2e, 0xef,
+ 0xda, 0xbc, 0xce, 0x92, 0xe8, 0xf2, 0xb7, 0x6c, 0x4e, 0xe0, 0x6c, 0x98,
+ 0x91, 0xb6, 0x45, 0x77, 0xb7, 0xc9, 0x5b, 0x08, 0x77, 0xc7, 0x03, 0x32,
+ 0x8c, 0x6f, 0xf9, 0x4a, 0xbc, 0x42, 0x21, 0xae, 0xdf, 0x3f, 0xbd, 0xf7,
+ 0x42, 0x18, 0xa9, 0xaf, 0x9e, 0x18, 0xd6, 0xcc, 0x2f, 0x43, 0x15, 0x5a,
+ 0x7e, 0xac, 0xb3, 0x31, 0xf8, 0xc2, 0xbb, 0x1f, 0xbe, 0x0b, 0x8f, 0x86,
+ 0x5a, 0x1b, 0xa5, 0x88, 0x7f, 0x29, 0xd1, 0x5a, 0xe8, 0xc7, 0x02, 0x5d,
+ 0x7f, 0x04, 0x37, 0xe4, 0x64, 0x2e, 0xc5, 0xe4, 0x5b, 0xdb, 0x3e, 0xc7,
+ 0x6a, 0xad, 0xfc, 0x03, 0x9f, 0xbb, 0x52, 0x3e, 0x7e, 0xbe, 0x18, 0x4c,
+ 0x60, 0xed, 0xfb, 0x8b, 0xf1, 0x38, 0xbb, 0x8d, 0x4e, 0x33, 0xa9, 0x77,
+ 0x2b, 0x1a, 0x96, 0x66, 0x21, 0x65, 0xe5, 0x92, 0x5b, 0x82, 0x33, 0x60,
+ 0xe8, 0x84, 0xd6, 0xd0, 0x4a, 0x2c, 0xf6, 0x26, 0x4b, 0x76, 0x9d, 0x39,
+ 0xf7, 0x55, 0x2e, 0xc6, 0x71, 0xdb, 0xe6, 0xdd, 0xa6, 0xa5, 0xaf, 0xbc,
+ 0xf7, 0xcf, 0x5f, 0x9f, 0x7c, 0x7f, 0xa6, 0x3f, 0xd6, 0x59, 0xd1, 0x3e,
+ 0xcf, 0x1a, 0x7f, 0x98, 0xe4, 0x56, 0x20, 0x22, 0x84, 0xe3, 0xc5, 0xcb,
+ 0xdf, 0x16, 0x8a, 0x26, 0xdb, 0xb5, 0x36, 0xd3, 0x65, 0xc8, 0x77, 0x3f,
+ 0x08, 0xd9, 0x65, 0x37, 0x5d, 0xf4, 0x77, 0xc2, 0xbf, 0xe8, 0xde, 0xef,
+ 0xd3, 0x9a, 0x81, 0x70, 0x1d, 0xc2, 0xa4, 0xee, 0x03, 0x6f, 0x95, 0x1f,
+ 0x4b, 0xc7, 0x2a, 0xa0, 0x2c, 0x2d, 0xd2, 0x11, 0x21, 0xdd, 0xf4, 0xb9,
+ 0x3c, 0xcc, 0x1b, 0x0e, 0x00, 0x3c, 0x17, 0x53, 0xca, 0xd6, 0xb2, 0x25,
+ 0x69, 0x59, 0x68, 0xd8, 0xf9, 0x60, 0x69, 0x4a, 0xbc, 0x28, 0x5f, 0xd1,
+ 0x05, 0x19, 0x7e, 0x91, 0xaf, 0x6a, 0xb9, 0x42, 0xcd, 0xb5, 0xba, 0x74,
+ 0x5e, 0x6f, 0x67, 0x19, 0x7a, 0xf9, 0x5a, 0x80, 0xe1, 0xf8, 0x4b, 0xc3,
+ 0x8a, 0x73, 0xe3, 0xce, 0x0f, 0xb5, 0x73, 0xdb, 0xa7, 0x98, 0xd5, 0xb2,
+ 0xb5, 0xad, 0x5b, 0x89, 0x8e, 0x2d, 0xeb, 0x97, 0x54, 0x8b, 0xd8, 0xf8,
+ 0x5b, 0x59, 0x8d, 0x56, 0x71, 0x20, 0x7c, 0x66, 0x4b, 0x12, 0xa2, 0x6d,
+ 0xee, 0x1a, 0xb3, 0x99, 0xf0, 0x30, 0x56, 0xf1, 0x9e, 0x9a, 0x83, 0xd9,
+ 0x20, 0x04, 0xde, 0x0b, 0x44, 0x3e, 0x54, 0x1f, 0x2c, 0xa0, 0x4a, 0xd6,
+ 0x73, 0x9c, 0x3d, 0x1d, 0xd2, 0x2a, 0x8f, 0xa4, 0x99, 0xf9, 0x00, 0x70,
+ 0x57, 0xec, 0x29, 0x9b, 0xcc, 0x59, 0xbd, 0x7b, 0x85, 0x7f, 0x4e, 0x93,
+ 0xd9, 0xc2, 0xf5, 0x3b, 0xc5, 0x37, 0xf8, 0x29, 0x55, 0xb3, 0xc1, 0x70,
+ 0x8e, 0xe8, 0x90, 0xf5, 0xb8, 0x6f, 0x02, 0x96, 0x27, 0xee, 0x50, 0x91,
+ 0xb4, 0x5d, 0x8d, 0x8f, 0x2c, 0x0f, 0xe4, 0xa9, 0x4f, 0xc6, 0x28, 0x4a,
+ 0x26, 0xc6, 0xd7, 0x39, 0xe2, 0x3b, 0xc7, 0xcf, 0xfd, 0x2d, 0x7a, 0xaa,
+ 0xee, 0x51, 0x2b, 0x91, 0x98, 0x8d, 0xc5, 0xfb, 0x4c, 0xa9, 0xa3, 0x58,
+ 0x6e, 0x2e, 0x9f, 0x91, 0xfd, 0x9c, 0x0b, 0xe3, 0xb0, 0xf7, 0x1f, 0x78,
+ 0xcb, 0x28, 0x64, 0x79, 0xc2, 0x40, 0xb4, 0xd9, 0x62, 0x3a, 0x40, 0x17,
+ 0xef, 0xd8, 0x20, 0x75, 0x97, 0xec, 0x40, 0x92, 0x5e, 0x7c, 0xab, 0x77,
+ 0x12, 0x00, 0x0a, 0x9d, 0xc0, 0x62, 0x10, 0xf8, 0x5f, 0x87, 0xc7, 0x83,
+ 0x58, 0x55, 0x28, 0x55, 0xaa, 0xd7, 0x95, 0xf2, 0x16, 0xd4, 0xdc, 0xc0,
+ 0x0a, 0xae, 0xb4, 0xcf, 0x6e, 0x91, 0x40, 0xca, 0x83, 0x28, 0x6c, 0xdf,
+ 0x6a, 0xfa, 0x43, 0x47, 0x83, 0x27, 0x6b, 0xd6, 0x56, 0xd3, 0x9c, 0x59,
+ 0x95, 0x00, 0xda, 0x35, 0xc7, 0x92, 0x52, 0xc2, 0x3c, 0xee, 0x1a, 0x34,
+ 0x1a, 0x77, 0x82, 0x6a, 0xa3, 0x5d, 0x83, 0x48, 0x05, 0xbc, 0xba, 0x65,
+ 0x4a, 0x7b, 0x51, 0x3f, 0x6e, 0xb9, 0x18, 0x94, 0x55, 0x56, 0x2d, 0x7c,
+ 0x76, 0x23, 0xc1, 0x33, 0x6c, 0x4a, 0xcd, 0xc5, 0x6f, 0x63, 0x01, 0xbc,
+ 0xc9, 0x10, 0x85, 0xf9, 0x7a, 0x55, 0x97, 0x16, 0x94, 0x53, 0x4f, 0x06,
+ 0x8c, 0xc0, 0x3b, 0xc9, 0x6f, 0xbc, 0x82, 0x0f, 0xa8, 0x21, 0xdb, 0xd1,
+ 0xd5, 0xb1, 0xbb, 0xa0, 0x81, 0xdf, 0xff, 0x53, 0xbf, 0x7c, 0x87, 0x8b,
+ 0xf5, 0x2f, 0x5d, 0x2c, 0x19, 0x76, 0xe2, 0xb9, 0x4c, 0xc8, 0xf8, 0xf7,
+ 0x7b, 0x5a, 0x94, 0x5f, 0x31, 0x12, 0x9c, 0x57, 0x06, 0xcb, 0xe1, 0x50,
+ 0x73, 0xbf, 0xef, 0x19, 0x69, 0x4d, 0x9b, 0x40, 0xf0, 0x57, 0x36, 0x31,
+ 0x0c, 0xee, 0x3c, 0xfb, 0x13, 0xd2, 0xe0, 0xcf, 0xb3, 0x2e, 0xd2, 0x71,
+ 0x52, 0xc0, 0x40, 0x2e, 0xc9, 0xf5, 0x85, 0x65, 0x11, 0x68, 0x1b, 0x7f,
+ 0x2e, 0xa4, 0xe2, 0x4a, 0x95, 0x0c, 0xc4, 0xdf, 0xce, 0x9f, 0x87, 0xd5,
+ 0x77, 0x93, 0x63, 0xa3, 0xeb, 0x5c, 0xab, 0xe6, 0x04, 0x2d, 0x25, 0xc5,
+ 0xc8, 0xd8, 0x0a, 0x07, 0x5a, 0x1a, 0x81, 0x49, 0xb5, 0xb9, 0xf7, 0x54,
+ 0xbe, 0x40, 0xca, 0xa6, 0xe8, 0xab, 0xa4, 0x1b, 0xd9, 0x30, 0x9c, 0xdf,
+ 0xff, 0x93, 0xf3, 0x67, 0xfe, 0xe5, 0x7b, 0x48, 0x79, 0x1c, 0x35, 0x53,
+ 0xa5, 0xd8, 0xef, 0x89, 0xe8, 0x28, 0x4e, 0x8e, 0x0c, 0xae, 0xb3, 0x2a,
+ 0x32, 0xb8, 0xbc, 0x64, 0x77, 0x0d, 0xe5, 0x5c, 0xfc, 0x9e, 0xdb, 0xf8,
+ 0x27, 0x6f, 0x91, 0x86, 0x8c, 0xb1, 0x56, 0x9d, 0x49, 0xfe, 0x00, 0x1a,
+ 0x64, 0xa9, 0x1e, 0x9a, 0x7a, 0x14, 0x39, 0x1a, 0x6c, 0x1c, 0x50, 0xa3,
+ 0xc5, 0x3e, 0xb0, 0xe9, 0x3a, 0x97, 0x4c, 0x2c, 0x3f, 0xb9, 0x09, 0xb6,
+ 0xf8, 0x2c, 0x9b, 0x70, 0x8a, 0x19, 0xe2, 0x4e, 0x30, 0xf9, 0xf8, 0x49,
+ 0x7a, 0x5c, 0x8c, 0x1b, 0x76, 0x9f, 0xe8, 0x9e, 0x98, 0xb9, 0x93, 0x24,
+ 0xd2, 0x15, 0x4d, 0x4b, 0x82, 0xb6, 0x19, 0x68, 0x59, 0xfa, 0xba, 0xb9,
+ 0x42, 0x66, 0xd8, 0x5c, 0x79, 0xda, 0x66, 0x60, 0x07, 0xd3, 0x29, 0xfa,
+ 0x49, 0x4d, 0xb2, 0x85, 0x94, 0x8f, 0xfb, 0xb2, 0x86, 0xdd, 0xa0, 0xa2,
+ 0xde, 0xd9, 0xc5, 0xc9, 0x01, 0x0d, 0xf9, 0xf7, 0x71, 0x79, 0x37, 0x1d,
+ 0xe4, 0x13, 0xe1, 0x72, 0x48, 0xeb, 0x40, 0xb0, 0xfa, 0x19, 0x9f, 0x49,
+ 0x8a, 0x66, 0x8a, 0x9d, 0x6a, 0x03, 0xbe, 0x93, 0x9d, 0x16, 0x98, 0xcc,
+ 0x4b, 0xf9, 0x90, 0xf1, 0x1b, 0x11, 0x04, 0x02, 0x56, 0xf3, 0xf7, 0x91,
+ 0x22, 0xf0, 0x03, 0x17, 0x26, 0x0f, 0xd2, 0x8d, 0x75, 0xff, 0x89, 0x81,
+ 0x38, 0x18, 0xa7, 0x10, 0xa2, 0x57, 0xe7, 0x60, 0x1a, 0x9b, 0x50, 0xa8,
+ 0x4e, 0x83, 0x6c, 0xc0, 0x3b, 0xc2, 0x74, 0xe3, 0x57, 0x8f, 0xf9, 0xa3,
+ 0xf8, 0x02, 0x3f, 0x92, 0x90, 0x6f, 0x25, 0x24, 0xe4, 0x06, 0x8a, 0x3a,
+ 0xd2, 0x0d, 0x40, 0x71, 0x46, 0xa1, 0xfc, 0x11, 0xd4, 0x8c, 0x81, 0xb1,
+ 0x7b, 0xe3, 0x24, 0x9a, 0x9f, 0x96, 0x97, 0xce, 0xb0, 0xf9, 0x18, 0x4c,
+ 0x31, 0x4c, 0xfa, 0x32, 0xed, 0x45, 0x9b, 0x6e, 0xf5, 0xdd, 0xc7, 0xbd,
+ 0x1d, 0xcf, 0x5a, 0x91, 0xde, 0xc2, 0x59, 0xa2, 0x28, 0x7e, 0xd3, 0x04,
+ 0x5c, 0x1f, 0x58, 0x2f, 0x15, 0xb6, 0xc6, 0x7c, 0x29, 0x93, 0xb0, 0x11,
+ 0x72, 0x9b, 0x4d, 0x48, 0xd3, 0xf0, 0xff, 0x5a, 0x3a, 0x55, 0xfe, 0xff,
+ 0x8e, 0x25, 0x01, 0x38, 0x11, 0xcb, 0x9b, 0xa1, 0x38, 0x0d, 0x90, 0x28,
+ 0xa6, 0x89, 0x64, 0x8a, 0x70, 0x6a, 0x88, 0xe1, 0xbc, 0x5a, 0x87, 0x8e,
+ 0x32, 0x99, 0x81, 0x2b, 0xf4, 0x56, 0x35, 0x87, 0x07, 0x33, 0x13, 0x08,
+ 0x43, 0x09, 0xb3, 0x47, 0x47, 0x51, 0x36, 0x36, 0x6a, 0x75, 0x85, 0x18,
+ 0x32, 0xa8, 0x95, 0x60, 0xcb, 0x2b, 0xf6, 0x28, 0xd7, 0x18, 0x00, 0x63,
+ 0x49, 0x6d, 0x84, 0x7d, 0x16, 0x36, 0x4a, 0x34, 0x40, 0x82, 0x51, 0x28,
+ 0x72, 0x26, 0x7a, 0x49, 0x7e, 0x28, 0x66, 0x46, 0x0b, 0xf6, 0x63, 0xe1,
+ 0x41, 0xcb, 0xa7, 0xe8, 0x10, 0xad, 0x32, 0xeb, 0x2e, 0x5c, 0x31, 0x3a,
+ 0x33, 0x14, 0x66, 0x18, 0x6e, 0x20, 0xaa, 0x47, 0x4f, 0xe3, 0x6a, 0xfe,
+ 0x0e, 0xe8, 0xb2, 0xb8, 0x7b, 0x47, 0xf9, 0x58, 0x17, 0x8e, 0xeb, 0x9d,
+ 0x3e, 0xa0, 0xc5, 0x61, 0xb4, 0xe3, 0xc5, 0x1c, 0x87, 0x43, 0xe7, 0x6b,
+ 0x92, 0xb3, 0xe5, 0x29, 0x9f, 0xad, 0x5c, 0x27, 0x27, 0xe1, 0xc7, 0xa9,
+ 0x55, 0xf1, 0x45, 0x90, 0x07, 0xbe, 0xfb, 0xb5, 0x44, 0x51, 0x12, 0xee,
+ 0xc9, 0xe8, 0xcf, 0xfd, 0xb3, 0xd7, 0x51, 0x3e, 0xc0, 0x82, 0xef, 0x22,
+ 0xe5, 0xc0, 0xe9, 0x27, 0x06, 0xde, 0xac, 0xd5, 0x15, 0x12, 0x15, 0xfc,
+ 0x23, 0xa5, 0xdc, 0xdd, 0xd2, 0xf3, 0xdf, 0xf0, 0x4e, 0x67, 0x26, 0x6a,
+ 0xe1, 0x8f, 0x49, 0x2a, 0x2a, 0x56, 0x6c, 0x57, 0x91, 0xdc, 0x95, 0x5d,
+ 0x29, 0x66, 0xac, 0x58, 0xbb, 0x09, 0xfb, 0x6e, 0x8c, 0x14, 0x6c, 0xaa,
+ 0xd9, 0xe1, 0x69, 0x5e, 0xde, 0x9c, 0xc8, 0x66, 0xe6, 0x55, 0x12, 0x36,
+ 0x7c, 0xf5, 0x21, 0x70, 0x40, 0xe4, 0x42, 0x20, 0x6b, 0x8d, 0x9d, 0x44,
+ 0x86, 0xfb, 0x73, 0x93, 0x16, 0x38, 0xa6, 0x2e, 0x85, 0xee, 0xdc, 0xe3,
+ 0xd8, 0x72, 0x94, 0x07, 0xe6, 0xdd, 0xce, 0xe7, 0x69, 0x02, 0x8b, 0x84,
+ 0x7e, 0x30, 0xbd, 0x3b, 0x6e, 0x32, 0xcc, 0x73, 0x39, 0xb9, 0x45, 0x60,
+ 0x70, 0x0e, 0xa5, 0x5e, 0xac, 0x58, 0x22, 0xac, 0x3b, 0x94, 0x60, 0xbf,
+ 0x4e, 0x41, 0xb5, 0xf4, 0x8e, 0x16, 0xfb, 0xb2, 0xc8, 0x17, 0x73, 0x8e,
+ 0x61, 0x77, 0xe2, 0xab, 0x56, 0x8c, 0xce, 0x70, 0x7d, 0xc5, 0xd0, 0x40,
+ 0x19, 0x51, 0x83, 0x02, 0x39, 0x0f, 0x88, 0x65, 0x34, 0xb6, 0xe9, 0xad,
+ 0x18, 0x5d, 0xc9, 0xf8, 0x4f, 0xb2, 0x77, 0x44, 0x6a, 0x20, 0xee, 0x04,
+ 0x72, 0x39, 0xd0, 0x2f, 0xf5, 0xce, 0xf2, 0xca, 0x3a, 0xab, 0x34, 0x84,
+ 0x48, 0x0f, 0xd0, 0x90, 0xb8, 0x80, 0x33, 0xc6, 0x7c, 0x66, 0xb3, 0xd5,
+ 0xe7, 0x94, 0x3c, 0xf5, 0x36, 0xb4, 0x48, 0x33, 0xd2, 0x38, 0x12, 0x19,
+ 0xf3, 0x10, 0x0c, 0xb1, 0xb6, 0x8c, 0x8b, 0x53, 0x48, 0x9b, 0xe3, 0x6a,
+ 0x1f, 0x8e, 0xf6, 0xb8, 0x6a, 0x79, 0x78, 0x5a, 0x9b, 0x12, 0xeb, 0x44,
+ 0x76, 0xc5, 0x2d, 0xe6, 0x79, 0xc4, 0x0e, 0x1a, 0xf5, 0xf6, 0xc2, 0xa3,
+ 0x33, 0x8a, 0x21, 0x8b, 0x82, 0xf8, 0x99, 0x83, 0x27, 0xcf, 0x1b, 0x88,
+ 0xe3, 0x8b, 0xcc, 0x85, 0xa0, 0x88, 0xcc, 0x2b, 0x58, 0xb9, 0x7b, 0xbf,
+ 0x3d, 0xde, 0x09, 0x5c, 0x35, 0xca, 0x44, 0x54, 0xe6, 0x0e, 0xf3, 0x12,
+ 0x7b, 0xc5, 0xbf, 0x4f, 0x03, 0xc8, 0x01, 0x94, 0x76, 0xf9, 0x2e, 0x9b,
+ 0xbb, 0xe2, 0xec, 0xcb, 0xf3, 0x08, 0x1d, 0xe6, 0x84, 0xcb, 0x22, 0xd7,
+ 0x23, 0x67, 0x67, 0x62, 0xc0, 0xb0, 0x7c, 0x40, 0xdc, 0x7b, 0xe5, 0x0a,
+ 0x0f, 0x19, 0x80, 0x9a, 0x5c, 0x2e, 0x0e, 0xa8, 0x54, 0xac, 0xbc, 0x40,
+ 0x3d, 0x30, 0x68, 0x5f, 0x7d, 0x14, 0x88, 0xe2, 0x89, 0x7c, 0xc3, 0x6c,
+ 0xcb, 0x0c, 0xc8, 0x86, 0x60, 0x66, 0xc0, 0xc3, 0x8d, 0xe8, 0x43, 0xab,
+ 0x32, 0x3a, 0xe3, 0x76, 0x06, 0xb6, 0x62, 0x06, 0xb6, 0xb2, 0xfd, 0x17,
+ 0x5e, 0x00, 0x21, 0xe1, 0x8d, 0xd6, 0x18, 0x15, 0xee, 0xbe, 0x7c, 0xae,
+ 0x81, 0x70, 0x8d, 0x5e, 0x99, 0xb9, 0xaf, 0x5e, 0x3a, 0x09, 0x1b, 0xae,
+ 0x49, 0x39, 0x7b, 0x01, 0x2a, 0x80, 0xe9, 0xe9, 0x09, 0x29, 0x51, 0x24,
+ 0xe5, 0xd9, 0xe2, 0x74, 0x41, 0x01, 0x8a, 0xcc, 0x37, 0x54, 0x28, 0x52,
+ 0x46, 0xe3, 0x5e, 0x11, 0x2b, 0x46, 0x11, 0x3a, 0x94, 0xd8, 0xa3, 0xd1,
+ 0x2e, 0xcc, 0xa1, 0x94, 0x35, 0xf6, 0x6e, 0x2d, 0x7f, 0x05, 0x56, 0x5c,
+ 0x3a, 0xaa, 0x95, 0x6c, 0x62, 0x00, 0x59, 0x42, 0xe9, 0x1e, 0x08, 0x62,
+ 0x45, 0xbc, 0xaf, 0x90, 0x0a, 0xbd, 0xa0, 0x28, 0x18, 0x6c, 0xb0, 0xd5,
+ 0x57, 0x22, 0x96, 0x7c, 0x5c, 0x94, 0xea, 0x71, 0x7e, 0xd9, 0x27, 0xc1,
+ 0x9d, 0x52, 0xab, 0x24, 0xa4, 0xd8, 0x1c, 0xb6, 0xfb, 0x48, 0x7d, 0xfb,
+ 0x2d, 0x9b, 0xa0, 0x63, 0x2b, 0xcd, 0x26, 0xd0, 0x72, 0xe8, 0x87, 0xcc,
+ 0xa8, 0x50, 0xe4, 0x1d, 0xe7, 0x98, 0x50, 0x6a, 0x89, 0xe3, 0x9e, 0xa4,
+ 0xd0, 0xec, 0x13, 0x48, 0x97, 0x04, 0x62, 0x87, 0xfc, 0x28, 0xe4, 0x4e,
+ 0xa5, 0x72, 0x95, 0xca, 0x28, 0x1f, 0x63, 0x46, 0xa1, 0xc6, 0x57, 0xf9,
+ 0x0d, 0x61, 0xe4, 0x47, 0xab, 0x79, 0xb6, 0xb2, 0xe4, 0x48, 0x14, 0x63,
+ 0xda, 0x05, 0x4e, 0x98, 0xfd, 0x2d, 0x2d, 0x72, 0x11, 0xd0, 0xa3, 0x0f,
+ 0x94, 0x96, 0x89, 0xe5, 0xbe, 0x2b, 0xcb, 0x09, 0xb2, 0xd1, 0x6c, 0x7c,
+ 0x07, 0x8b, 0x58, 0xb6, 0xd6, 0xa6, 0x68, 0xcc, 0x14, 0xd3, 0x9d, 0x64,
+ 0xae, 0x8e, 0x5f, 0x68, 0xa3, 0x24, 0x23, 0xf2, 0x3c, 0x45, 0x05, 0x32,
+ 0x2d, 0xaa, 0x6c, 0x9c, 0xad, 0xe2, 0x51, 0x28, 0x79, 0x53, 0xf7, 0x36,
+ 0x76, 0x4e, 0xee, 0x14, 0xa3, 0xd8, 0xf4, 0xa2, 0x1d, 0xb1, 0xb4, 0xaf,
+ 0x5c, 0xb8, 0x5a, 0x4b, 0xd8, 0x88, 0x0d, 0x17, 0xad, 0x9f, 0xe6, 0xc7,
+ 0xa1, 0xd3, 0xac, 0xf4, 0xf2, 0x8e, 0x64, 0x7f, 0x8e, 0xf1, 0x94, 0x24,
+ 0x6e, 0x73, 0x32, 0xb0, 0x51, 0x3a, 0xce, 0xaa, 0x48, 0x83, 0x20, 0xac,
+ 0x65, 0xef, 0x56, 0x8a, 0xa9, 0x42, 0x7d, 0x91, 0x43, 0x99, 0xd1, 0x26,
+ 0x6e, 0xe4, 0x8d, 0x94, 0x9f, 0x9d, 0x26, 0xb7, 0x31, 0x7d, 0x57, 0x46,
+ 0x6d, 0xce, 0x04, 0x87, 0x01, 0x6e, 0x49, 0x22, 0x91, 0xaa, 0x94, 0x6c,
+ 0x02, 0x41, 0x42, 0x13, 0xfc, 0xaf, 0x21, 0x06, 0xa9, 0x48, 0x0e, 0x63,
+ 0xb2, 0xea, 0xe4, 0x4b, 0xf9, 0xed, 0x1b, 0x0a, 0x47, 0x26, 0x23, 0xdc,
+ 0x25, 0x15, 0x7f, 0xca, 0x7b, 0xfe, 0x3a, 0x61, 0xcd, 0x81, 0x1a, 0xf1,
+ 0x47, 0x6f, 0xf8, 0xb3, 0x03, 0x23, 0x2f, 0x99, 0x88, 0x55, 0x55, 0x32,
+ 0xd7, 0xa0, 0xd6, 0x27, 0xc1, 0xcd, 0x41, 0xf1, 0xde, 0x5c, 0x96, 0x17,
+ 0x56, 0xe2, 0x87, 0x1b, 0xb3, 0x71, 0x61, 0xba, 0xa6, 0x16, 0x3c, 0x7b,
+ 0xeb, 0xdc, 0x34, 0xf6, 0x7e, 0x94, 0xeb, 0x91, 0x6e, 0xc7, 0xbc, 0x08,
+ 0xdf, 0x7f, 0x32, 0x2a, 0xbd, 0x00, 0x2f, 0x58, 0x23, 0xa7, 0x61, 0x7d,
+ 0xda, 0xfb, 0x4f, 0x59, 0xbd, 0x08, 0x8e, 0x9f, 0x42, 0x68, 0x34, 0x5c,
+ 0x68, 0x13, 0x2d, 0x99, 0x54, 0x10, 0x0e, 0x9d, 0x55, 0x33, 0x93, 0x68,
+ 0x4a, 0x7d, 0x07, 0x12, 0x61, 0x24, 0x35, 0xb5, 0x46, 0x1f, 0x44, 0x83,
+ 0xf2, 0xc5, 0x26, 0xd6, 0xa8, 0x63, 0x03, 0xfe, 0x10, 0xe1, 0xbc, 0x46,
+ 0xc6, 0xc5, 0xb4, 0x75, 0x8f, 0x4b, 0x05, 0x67, 0xe2, 0x8a, 0x73, 0x9c,
+ 0xe2, 0xb9, 0xf2, 0x70, 0x63, 0xcd, 0xb5, 0x77, 0x23, 0x18, 0x3e, 0xe5,
+ 0xb9, 0x73, 0xe4, 0x4f, 0x5e, 0x61, 0x24, 0xdd, 0x14, 0x96, 0x85, 0xb8,
+ 0x19, 0xd7, 0x32, 0x14, 0xa9, 0x91, 0xac, 0x41, 0xfa, 0xfc, 0x4a, 0x79,
+ 0xd1, 0xad, 0xc9, 0x48, 0xc5, 0xee, 0x64, 0xc7, 0x31, 0x53, 0x7c, 0x9b,
+ 0xeb, 0x2b, 0xea, 0x2e, 0xdc, 0xf3, 0xe6, 0x2f, 0xd0, 0xc3, 0x46, 0xc1,
+ 0x65, 0x8c, 0x5b, 0xd7, 0x52, 0x9a, 0x98, 0xa6, 0xa5, 0x09, 0x5a, 0xcb,
+ 0xa6, 0xa5, 0x78, 0x6a, 0x66, 0x46, 0xd4, 0xe4, 0x8a, 0x71, 0xb4, 0xf6,
+ 0x68, 0x04, 0x05, 0xde, 0x5d, 0xee, 0x32, 0xbc, 0x94, 0xb4, 0x92, 0x8e,
+ 0x79, 0x7c, 0x79, 0x8f, 0x2e, 0xb3, 0x0d, 0x77, 0x2d, 0x48, 0x05, 0x2d,
+ 0x93, 0x95, 0x9e, 0x6b, 0xbb, 0xa8, 0xb8, 0x01, 0xff, 0xb1, 0x7b, 0x08,
+ 0x17, 0xe6, 0xc8, 0xd2, 0x26, 0x4e, 0x2b, 0xc1, 0x88, 0xeb, 0x4b, 0xbb,
+ 0x5d, 0xfc, 0x8c, 0x63, 0x9a, 0x82, 0x0b, 0xb1, 0x5c, 0x14, 0x1c, 0xe6,
+ 0xb9, 0x5a, 0x08, 0x53, 0x87, 0x91, 0x69, 0x0f, 0xeb, 0x78, 0xe2, 0x3a,
+ 0xcd, 0x29, 0x34, 0x09, 0xe3, 0xef, 0x5a, 0x46, 0x65, 0x56, 0x9b, 0xf6,
+ 0x59, 0x87, 0xa5, 0x70, 0x11, 0x1f, 0x69, 0x54, 0xdc, 0xda, 0x7d, 0xc6,
+ 0xf4, 0xa1, 0xc2, 0x4a, 0x53, 0x3c, 0x21, 0xf9, 0xc3, 0x88, 0x0d, 0xf7,
+ 0xb0, 0xa0, 0xad, 0x92, 0x4f, 0x6a, 0x22, 0xc8, 0x6a, 0x46, 0xe6, 0xc8,
+ 0x27, 0x5f, 0xf8, 0x9e, 0x28, 0xa0, 0x20, 0xf3, 0xe7, 0x73, 0x4e, 0x6a,
+ 0x44, 0xd3, 0x43, 0x9e, 0x21, 0xad, 0xcf, 0xba, 0x62, 0x12, 0xb4, 0xee,
+ 0xc5, 0x9a, 0x2f, 0x64, 0x79, 0xe7, 0x2d, 0x8e, 0x12, 0x12, 0x2c, 0xeb,
+ 0xdc, 0xf4, 0x49, 0x48, 0xe6, 0x16, 0x87, 0x64, 0x6d, 0x70, 0x3c, 0xba,
+ 0x25, 0xc3, 0x53, 0xd0, 0x96, 0x87, 0x0e, 0x4e, 0xeb, 0xd3, 0x9b, 0x93,
+ 0xca, 0x62, 0xce, 0x68, 0x95, 0x08, 0x4f, 0xd9, 0xf9, 0xdd, 0x88, 0xbc,
+ 0x3f, 0x36, 0xc1, 0x9d, 0x54, 0x44, 0x92, 0xca, 0xa4, 0x6c, 0x35, 0x46,
+ 0xaa, 0xb0, 0x8b, 0x75, 0x85, 0xe5, 0x82, 0x1e, 0xd7, 0x3c, 0x5e, 0x46,
+ 0x53, 0x8b, 0x56, 0x2f, 0x19, 0x5e, 0x78, 0xef, 0x92, 0xf9, 0x5c, 0x2e,
+ 0xf5, 0xd5, 0x94, 0xcb, 0x35, 0x17, 0x11, 0xa5, 0x8b, 0x0e, 0x03, 0x97,
+ 0xb7, 0xac, 0xf2, 0xfc, 0xbd, 0x4d, 0x70, 0x25, 0x1d, 0x0d, 0xe1, 0x6e,
+ 0x57, 0x52, 0xee, 0x24, 0x52, 0xfa, 0xdf, 0xee, 0xf7, 0x5f, 0x6c, 0xa7,
+ 0xd5, 0x50, 0xa5, 0x8b, 0x6d, 0x9b, 0xee, 0x64, 0x2c, 0xa9, 0x2b, 0x9a,
+ 0x23, 0xf9, 0x06, 0x71, 0x21, 0x88, 0x86, 0x8d, 0x37, 0xba, 0x17, 0x9c,
+ 0x72, 0xdd, 0x82, 0xf4, 0x91, 0x27, 0x25, 0x55, 0xd4, 0x75, 0x2e, 0x0d,
+ 0x5b, 0x30, 0x0d, 0x11, 0x05, 0x6c, 0xb6, 0x2e, 0xad, 0x3e, 0x8e, 0x2b,
+ 0xa6, 0x82, 0x36, 0x50, 0xcc, 0x1c, 0x58, 0xcc, 0xff, 0xed, 0xbb, 0x47,
+ 0xde, 0x35, 0x34, 0xb1, 0x73, 0xfc, 0x2b, 0x79, 0xd2, 0x56, 0x0f, 0x78,
+ 0x8e, 0x86, 0x3f, 0x96, 0xe2, 0x56, 0x8f, 0xf8, 0xfe, 0x43, 0xbe, 0xf7,
+ 0x88, 0x19, 0xcf, 0x4c, 0xe5, 0x48, 0x1c, 0x30, 0x39, 0x90, 0x25, 0xd4,
+ 0x89, 0x0e, 0xdf, 0x20, 0xbd, 0xf4, 0x43, 0x1c, 0x83, 0x37, 0xb3, 0x06,
+ 0x84, 0x26, 0x94, 0x95, 0x9b, 0xc6, 0xa6, 0x5d, 0xc9, 0x6e, 0x2c, 0x25,
+ 0x11, 0xf2, 0x32, 0x5f, 0x39, 0xba, 0x44, 0xaa, 0xf7, 0x22, 0x2f, 0x77,
+ 0xfc, 0xe3, 0x43, 0xa5, 0x1f, 0x07, 0x23, 0x03, 0x48, 0x67, 0x55, 0x73,
+ 0x28, 0xb9, 0x32, 0xa2, 0xcb, 0x35, 0x86, 0x26, 0xb7, 0xec, 0x85, 0xd1,
+ 0xb0, 0x56, 0x91, 0x07, 0xc6, 0x2b, 0x4f, 0x26, 0x46, 0x23, 0x5b, 0x79,
+ 0x8f, 0xc0, 0x1d, 0x34, 0xd7, 0xe5, 0x41, 0xba, 0x20, 0x32, 0x61, 0x32,
+ 0xed, 0xea, 0xc1, 0xe8, 0x46, 0xf7, 0x26, 0x05, 0xca, 0x5b, 0xb2, 0x16,
+ 0x08, 0x5b, 0xe4, 0x97, 0xac, 0xe8, 0x54, 0x23, 0x1e, 0xbf, 0x4c, 0x86,
+ 0xaa, 0x64, 0xaf, 0x1a, 0x1d, 0x99, 0x91, 0x7a, 0x8d, 0x45, 0xb0, 0x98,
+ 0xbf, 0x46, 0x0a, 0xe0, 0x3c, 0x81, 0x7b, 0xdd, 0xc1, 0x88, 0x2c, 0x8a,
+ 0xeb, 0x64, 0xdc, 0x19, 0xce, 0x62, 0x95, 0xe1, 0xe5, 0xa7, 0x71, 0x7c,
+ 0xe6, 0xc3, 0x80, 0xa9, 0x17, 0x28, 0x9f, 0xda, 0x93, 0x50, 0x3b, 0x08,
+ 0xd1, 0x1a, 0x72, 0xa5, 0x41, 0xfb, 0xb0, 0x39, 0x1c, 0x8d, 0x03, 0xcf,
+ 0x51, 0x14, 0x93, 0x32, 0x5f, 0x2d, 0x88, 0xd1, 0x7a, 0xd2, 0x8c, 0x38,
+ 0xd1, 0x16, 0xf3, 0x89, 0x38, 0x0c, 0x02, 0xf4, 0x33, 0x3c, 0x06, 0x95,
+ 0x12, 0xc0, 0x6a, 0xb3, 0x3e, 0xec, 0x48, 0x78, 0x03, 0x44, 0x47, 0xa8,
+ 0xab, 0x0c, 0xfe, 0x2a, 0x2b, 0x32, 0x20, 0xe7, 0xa3, 0x50, 0xd6, 0xdd,
+ 0x7d, 0x48, 0x02, 0x35, 0xd6, 0xc0, 0xc9, 0x63, 0x4b, 0x4e, 0x6d, 0x67,
+ 0x0d, 0x8c, 0x0a, 0xa9, 0xc4, 0x29, 0x45, 0x7c, 0xdc, 0xc3, 0xa1, 0x0d,
+ 0x2d, 0x81, 0x82, 0xed, 0xb5, 0x94, 0xcd, 0x46, 0xe9, 0x6d, 0x4d, 0xcd,
+ 0xcf, 0x6c, 0x24, 0x70, 0x37, 0xda, 0x89, 0xe9, 0x81, 0x95, 0xba, 0xc7,
+ 0xb3, 0x34, 0x26, 0xdc, 0x34, 0x14, 0x49, 0xa0, 0x59, 0x2c, 0x84, 0x7b,
+ 0x95, 0xe8, 0xb1, 0x2b, 0x39, 0x6f, 0xda, 0xe9, 0x68, 0xd5, 0xa1, 0xa3,
+ 0x28, 0xa4, 0x22, 0x03, 0xce, 0x1a, 0x69, 0xb3, 0x84, 0x23, 0x79, 0x9f,
+ 0x59, 0x5a, 0xe7, 0x79, 0xfb, 0x7a, 0xd1, 0x72, 0xdb, 0x3c, 0x7d, 0xb2,
+ 0x6b, 0xa0, 0x08, 0xbc, 0x62, 0xa7, 0xc4, 0x1d, 0xae, 0x25, 0x49, 0x18,
+ 0xa1, 0x16, 0x1d, 0xe2, 0x1a, 0xa2, 0x25, 0xf6, 0x31, 0x35, 0xa8, 0x1d,
+ 0x2c, 0x6f, 0xae, 0x4d, 0x9f, 0x22, 0x48, 0x52, 0x2b, 0x76, 0x2e, 0x49,
+ 0x65, 0x65, 0xa2, 0xfe, 0x74, 0x90, 0xa4, 0x37, 0xd1, 0xc6, 0xef, 0xff,
+ 0x69, 0x4c, 0x25, 0xff, 0xfa, 0x79, 0xb6, 0xb1, 0x5e, 0x16, 0x9a, 0x0f,
+ 0x09, 0x1b, 0x04, 0x32, 0xbb, 0x4d, 0x80, 0xb3, 0x05, 0xd3, 0xfa, 0xcb,
+ 0xe4, 0x9a, 0x13, 0x4e, 0x15, 0x2e, 0x5d, 0x63, 0x0a, 0xea, 0x65, 0x44,
+ 0xaa, 0x5a, 0xe5, 0x8a, 0xb2, 0x0a, 0x60, 0x18, 0x80, 0xbe, 0x84, 0x51,
+ 0x82, 0x74, 0xa3, 0x4f, 0xd3, 0x2a, 0x21, 0x85, 0x18, 0x3e, 0xa0, 0xf4,
+ 0x8c, 0x91, 0x46, 0x7b, 0xa2, 0xb7, 0xa0, 0x2a, 0x32, 0x90, 0xb4, 0x29,
+ 0x4d, 0xc8, 0x56, 0xb1, 0x0c, 0xa4, 0x64, 0x0a, 0xf2, 0x15, 0xf5, 0x66,
+ 0xec, 0xf1, 0xb7, 0xa3, 0xcb, 0x1e, 0x53, 0x6e, 0x8f, 0xd2, 0xce, 0xb4,
+ 0x35, 0x9c, 0x7d, 0x97, 0x78, 0x3e, 0x5a, 0x08, 0x42, 0xcd, 0x49, 0xc0,
+ 0x4c, 0xa4, 0xa5, 0x18, 0xeb, 0xed, 0x4e, 0x89, 0x05, 0x51, 0x2c, 0x8d,
+ 0x69, 0xb3, 0x67, 0xaa, 0xae, 0x84, 0x62, 0x0a, 0x0d, 0x0a, 0x84, 0x49,
+ 0xb3, 0xd4, 0x68, 0x59, 0x33, 0x65, 0x3b, 0x57, 0x8c, 0x66, 0xbb, 0x49,
+ 0x8a, 0x19, 0xc7, 0xf9, 0x36, 0x53, 0x19, 0xcb, 0x72, 0x11, 0x0a, 0x36,
+ 0x77, 0x12, 0x26, 0x69, 0x07, 0x97, 0xa6, 0x4b, 0xda, 0xe8, 0xd6, 0xfb,
+ 0x27, 0x4c, 0x52, 0xab, 0xeb, 0xa6, 0x4b, 0xf2, 0x50, 0x62, 0x26, 0x03,
+ 0x54, 0xf6, 0xd7, 0xa2, 0xd8, 0x66, 0x8d, 0xf1, 0xae, 0x17, 0x03, 0x1b,
+ 0x02, 0xf2, 0x7e, 0xfe, 0xf2, 0xf4, 0xc4, 0xa4, 0xa5, 0xfd, 0xbf, 0xdb,
+ 0x3d, 0x1c, 0x4a, 0x31, 0xf4, 0x12, 0xa0, 0x18, 0x66, 0xcd, 0xc1, 0xcc,
+ 0x53, 0x1c, 0x36, 0xfd, 0xa8, 0x06, 0xc0, 0x76, 0xf2, 0xfa, 0x6f, 0x2f,
+ 0xdf, 0x9c, 0xbd, 0x7e, 0x75, 0xf2, 0xfa, 0xe2, 0x0b, 0x37, 0x92, 0xc9,
+ 0xc6, 0x80, 0x39, 0xc1, 0x58, 0x5e, 0xec, 0xaa, 0x06, 0x38, 0x48, 0xd4,
+ 0x45, 0x11, 0xc1, 0xe6, 0xcb, 0x5f, 0x3d, 0xb7, 0x39, 0xe7, 0x21, 0x75,
+ 0x3c, 0xe3, 0xbe, 0xcd, 0xd1, 0xcc, 0x3b, 0xc2, 0x60, 0x82, 0x1e, 0xbb,
+ 0xaa, 0x49, 0x05, 0xa1, 0x08, 0x35, 0x3c, 0x33, 0x18, 0xe4, 0x40, 0xd9,
+ 0x9c, 0xa5, 0x13, 0xa4, 0xac, 0x91, 0x43, 0xd6, 0x6b, 0x5c, 0x1b, 0x84,
+ 0xdd, 0xc8, 0xb7, 0x0c, 0xd6, 0x81, 0x9a, 0x6c, 0x68, 0x36, 0x5a, 0xe6,
+ 0x89, 0x24, 0x59, 0xea, 0x96, 0x30, 0x2f, 0xf5, 0x26, 0x61, 0x42, 0x72,
+ 0xee, 0x10, 0xb7, 0xe6, 0x2f, 0x3f, 0xdf, 0x8c, 0xe3, 0x71, 0x66, 0xf0,
+ 0x93, 0xda, 0x6a, 0x81, 0x22, 0x7e, 0x39, 0x44, 0x0d, 0xeb, 0x9b, 0x9f,
+ 0x0e, 0xf0, 0x58, 0xfc, 0xe2, 0x17, 0x91, 0x2c, 0x9d, 0x21, 0x88, 0x68,
+ 0xe1, 0x60, 0xfd, 0xe0, 0x41, 0x36, 0x4b, 0x49, 0x5e, 0xa4, 0x77, 0xe7,
+ 0x6f, 0xce, 0x7e, 0xfc, 0xfb, 0x47, 0xee, 0xc2, 0x89, 0xdf, 0xff, 0x09,
+ 0x13, 0xd7, 0xb4, 0xf1, 0x5f, 0x3e, 0x7a, 0x6f, 0xf5, 0xe6, 0xbb, 0x12,
+ 0x52, 0x48, 0x57, 0x4c, 0x40, 0x8b, 0x60, 0x4c, 0x43, 0x46, 0x31, 0xb5,
+ 0x19, 0xad, 0x91, 0x63, 0x4d, 0x33, 0x09, 0x35, 0x24, 0xc9, 0x95, 0x75,
+ 0xe2, 0x4c, 0x7c, 0x40, 0xd6, 0x1e, 0x83, 0xcb, 0xd9, 0x8c, 0x8b, 0xae,
+ 0x20, 0x2e, 0x22, 0xa4, 0x62, 0x97, 0x61, 0x17, 0x29, 0x8f, 0xcf, 0x2c,
+ 0xc8, 0xd1, 0xe9, 0xe9, 0x47, 0x5d, 0x05, 0xb8, 0xd8, 0xb1, 0xc6, 0x8b,
+ 0xb6, 0x15, 0x1b, 0xbd, 0x4a, 0x9e, 0x5e, 0x51, 0xcc, 0xf3, 0xf5, 0x99,
+ 0x8c, 0xe6, 0x90, 0x54, 0xba, 0xb8, 0x4c, 0x41, 0x11, 0xa3, 0x08, 0x1f,
+ 0x2d, 0x16, 0x8e, 0x03, 0x2b, 0xb7, 0x39, 0x81, 0xac, 0xfc, 0xc6, 0x8b,
+ 0x2c, 0xc7, 0x7b, 0x5c, 0x9e, 0x92, 0x80, 0x25, 0x5a, 0x4d, 0xc1, 0xd8,
+ 0xa1, 0xa4, 0xfd, 0xdc, 0xa0, 0xa1, 0x63, 0x48, 0x3b, 0xa7, 0xb3, 0xe1,
+ 0x35, 0x00, 0x03, 0xf1, 0x51, 0x64, 0x11, 0x15, 0x0d, 0x2e, 0x81, 0x22,
+ 0x2b, 0xdf, 0x13, 0x9e, 0x01, 0x1e, 0x4f, 0x52, 0x04, 0x14, 0xdf, 0x12,
+ 0x15, 0x35, 0x1a, 0x93, 0x00, 0xff, 0x5a, 0x88, 0x9b, 0xac, 0x0c, 0x8d,
+ 0x0e, 0x85, 0xa5, 0x84, 0x45, 0x28, 0x74, 0x63, 0xb0, 0x87, 0x29, 0xa9,
+ 0x01, 0xae, 0x48, 0xcd, 0x75, 0x8e, 0xcd, 0x2f, 0x0d, 0x04, 0x67, 0x1c,
+ 0x40, 0xb1, 0xee, 0x4a, 0xca, 0x2c, 0x3d, 0xc0, 0x5d, 0x57, 0x65, 0x3a,
+ 0x19, 0x87, 0x31, 0x04, 0x82, 0xac, 0x42, 0xd0, 0x2f, 0x4b, 0xc5, 0x05,
+ 0x50, 0x6a, 0xc5, 0xcd, 0x4a, 0x09, 0x22, 0x1a, 0x7d, 0x93, 0xbe, 0x69,
+ 0x58, 0x08, 0xd1, 0x89, 0x4c, 0xac, 0x71, 0x0e, 0xc6, 0xd5, 0x86, 0x4e,
+ 0x75, 0x4b, 0xbf, 0x66, 0xfd, 0x8c, 0x20, 0x60, 0x9b, 0x53, 0x51, 0x58,
+ 0x17, 0x09, 0xba, 0x8c, 0x6f, 0x99, 0xe1, 0x00, 0x25, 0xf2, 0xf6, 0xb8,
+ 0xd0, 0x2f, 0xfa, 0xcd, 0x7d, 0x9a, 0xb3, 0xa8, 0x96, 0x34, 0xab, 0x0a,
+ 0xf3, 0xef, 0x2a, 0x71, 0x45, 0xf1, 0xfb, 0x84, 0x76, 0x8d, 0xa7, 0xcb,
+ 0x19, 0x66, 0xec, 0xd7, 0x3f, 0xaa, 0x6a, 0x43, 0xe0, 0x7b, 0xf2, 0x3e,
+ 0x83, 0x44, 0x3f, 0x57, 0x1c, 0x8a, 0x33, 0xae, 0x3d, 0x6d, 0x86, 0x49,
+ 0xaa, 0x18, 0x0f, 0x92, 0x85, 0x6e, 0x45, 0xed, 0x4f, 0x5b, 0xd2, 0x2e,
+ 0x39, 0xdc, 0x46, 0xa9, 0x9e, 0xc9, 0x5e, 0xe8, 0xbe, 0x86, 0xe8, 0xa7,
+ 0x00, 0x19, 0xd6, 0x43, 0x48, 0x3e, 0x53, 0x0f, 0x45, 0x8b, 0xf2, 0x76,
+ 0x04, 0xe1, 0x83, 0x92, 0x2e, 0x4d, 0x3a, 0x98, 0x9c, 0x20, 0x02, 0xb6,
+ 0x19, 0x28, 0xbe, 0x97, 0x71, 0x81, 0xc3, 0x35, 0x37, 0xc9, 0xcb, 0x50,
+ 0x15, 0xb3, 0x01, 0x26, 0x3f, 0x01, 0xc7, 0x68, 0x49, 0xf3, 0xb4, 0x03,
+ 0x52, 0x17, 0xae, 0x04, 0x4b, 0xa2, 0x51, 0x00, 0x31, 0xb3, 0x88, 0xed,
+ 0x51, 0x9a, 0x08, 0x06, 0x43, 0xe6, 0x8c, 0xc6, 0x15, 0x30, 0x20, 0x73,
+ 0xc4, 0x2d, 0x9e, 0x2c, 0x2d, 0x1d, 0x5e, 0xa4, 0x92, 0x95, 0x21, 0xb6,
+ 0x9e, 0x44, 0x59, 0x31, 0xde, 0x81, 0x07, 0x51, 0xd4, 0x39, 0x38, 0xd8,
+ 0xed, 0x98, 0x50, 0xfa, 0x26, 0x81, 0x13, 0x10, 0x4f, 0x89, 0x0f, 0xed,
+ 0xe0, 0x63, 0x9c, 0x37, 0x90, 0xa2, 0xcf, 0x96, 0xb8, 0x08, 0xf5, 0xe4,
+ 0xb0, 0xd1, 0xf3, 0xf3, 0x67, 0x47, 0x17, 0x47, 0xd1, 0x21, 0x50, 0xd5,
+ 0x37, 0x3e, 0x70, 0x9a, 0xc5, 0x5e, 0x6d, 0xf8, 0xeb, 0x15, 0x2c, 0x9e,
+ 0xdc, 0xff, 0x55, 0x71, 0x27, 0x36, 0xe5, 0x71, 0x26, 0xc0, 0x0e, 0x57,
+ 0xb9, 0x07, 0x4d, 0x66, 0xc0, 0xee, 0x7b, 0x8a, 0x0f, 0x3c, 0x2f, 0xb2,
+ 0x29, 0x22, 0x19, 0xe1, 0xc3, 0xb6, 0x69, 0x9c, 0x2e, 0x32, 0xa7, 0xc5,
+ 0xac, 0xc6, 0x61, 0x8f, 0xcf, 0x4e, 0xdf, 0xbe, 0x7a, 0xdd, 0x8f, 0x0e,
+ 0x11, 0xb8, 0x97, 0x8c, 0x39, 0x37, 0xd9, 0xc8, 0xaf, 0x1f, 0xc1, 0xfc,
+ 0xb0, 0xdb, 0xa8, 0x26, 0x60, 0xb5, 0x5c, 0x93, 0xd7, 0x5e, 0xd6, 0xb4,
+ 0xa3, 0x36, 0x78, 0x2b, 0xd3, 0x19, 0xf7, 0xa6, 0xf1, 0x0e, 0xd8, 0x7a,
+ 0x22, 0xc0, 0xf3, 0xa8, 0x6e, 0x02, 0x91, 0x5f, 0x22, 0x0d, 0xc4, 0x83,
+ 0xa4, 0x90, 0xfc, 0xcb, 0x9b, 0x59, 0x00, 0x7a, 0x98, 0x64, 0x71, 0x1c,
+ 0x9e, 0x53, 0x18, 0x80, 0x6b, 0x0d, 0x80, 0x10, 0xb8, 0x60, 0x6c, 0x3a,
+ 0xa4, 0x4b, 0x29, 0x90, 0x46, 0x3c, 0xf6, 0xa6, 0x56, 0xb9, 0xe7, 0x18,
+ 0xce, 0xd7, 0xbb, 0xe3, 0xa3, 0x77, 0xdf, 0xbd, 0x7d, 0xfd, 0xec, 0xf4,
+ 0x24, 0x5c, 0xb1, 0x41, 0xd7, 0xa0, 0x36, 0x41, 0x91, 0xa3, 0x40, 0xe2,
+ 0x4c, 0x50, 0x23, 0x62, 0x7d, 0xb1, 0xd1, 0xee, 0x8b, 0xb3, 0x57, 0x27,
+ 0x41, 0x52, 0xd0, 0x16, 0xc5, 0xc7, 0xc8, 0xf6, 0x20, 0xb3, 0x63, 0x34,
+ 0x19, 0xb8, 0x19, 0x86, 0xef, 0x4b, 0x5d, 0x1f, 0xa6, 0x08, 0x8e, 0x1c,
+ 0xc9, 0x3c, 0x00, 0x8e, 0x0c, 0xc3, 0x47, 0x68, 0xd7, 0x1b, 0x54, 0x61,
+ 0xd6, 0x27, 0x23, 0x61, 0xb9, 0xca, 0x66, 0x0b, 0xc6, 0x72, 0xa7, 0xd6,
+ 0xa3, 0x1f, 0x9f, 0x7d, 0xff, 0xee, 0xf8, 0xec, 0x75, 0xf3, 0xb8, 0x3e,
+ 0x7f, 0xf9, 0x3d, 0x0d, 0xbd, 0x31, 0x9b, 0x7e, 0xff, 0xf4, 0xdd, 0x77,
+ 0x47, 0xc7, 0x7f, 0x39, 0x79, 0xfd, 0x2c, 0x3a, 0x74, 0x12, 0x7a, 0x03,
+ 0x93, 0x5b, 0x85, 0x86, 0xd0, 0xd1, 0x4c, 0xe2, 0x8e, 0x05, 0xa1, 0x17,
+ 0x47, 0x6d, 0xd6, 0xbc, 0x7c, 0x39, 0x5b, 0xd6, 0x20, 0x04, 0xb8, 0xcd,
+ 0x10, 0x64, 0x01, 0x25, 0x4c, 0x63, 0x7c, 0x8a, 0x33, 0x24, 0xd1, 0x69,
+ 0x97, 0xe1, 0x64, 0xd9, 0xd5, 0x16, 0x79, 0x3f, 0x35, 0x3e, 0x83, 0xd6,
+ 0x64, 0x9a, 0x00, 0x41, 0x3b, 0xf6, 0x61, 0xed, 0x3c, 0x52, 0x19, 0xe8,
+ 0xc6, 0x00, 0x6b, 0x93, 0xd1, 0xfa, 0x3a, 0x7f, 0x4f, 0xd0, 0x7f, 0x8a,
+ 0x2c, 0x4d, 0xcd, 0x86, 0x60, 0x4b, 0x04, 0xef, 0x30, 0xb1, 0xb3, 0x76,
+ 0xcf, 0x86, 0x05, 0xe9, 0x66, 0xd1, 0xb0, 0x4a, 0xee, 0x2c, 0x48, 0x6b,
+ 0x18, 0xad, 0x3a, 0x9c, 0xe7, 0x6b, 0x86, 0x2b, 0xf7, 0xc4, 0x26, 0xce,
+ 0x3b, 0x76, 0xe6, 0xbd, 0x75, 0x00, 0x0b, 0x93, 0x14, 0x65, 0x39, 0xe9,
+ 0x46, 0x97, 0xb3, 0x45, 0x35, 0x01, 0xbe, 0x75, 0x59, 0xbe, 0xcf, 0xbc,
+ 0x8c, 0x19, 0x60, 0x06, 0x23, 0xfa, 0x76, 0x56, 0xc2, 0x3f, 0xf9, 0x1c,
+ 0x1a, 0xc0, 0x77, 0x8a, 0x45, 0x49, 0x9f, 0x96, 0xc0, 0x24, 0x66, 0xb3,
+ 0x94, 0xb0, 0xb2, 0x31, 0x21, 0x97, 0xed, 0xf5, 0xb8, 0x8b, 0x70, 0xa6,
+ 0xf2, 0x89, 0x97, 0xdd, 0x0c, 0x2f, 0x9b, 0x01, 0x2f, 0x3b, 0x42, 0x4c,
+ 0xda, 0xe2, 0x6c, 0xc4, 0xff, 0xe8, 0x60, 0x36, 0xd9, 0xa6, 0x53, 0x15,
+ 0x84, 0xb9, 0x2b, 0x2f, 0x71, 0x93, 0x93, 0x90, 0xa1, 0xb3, 0x17, 0x9d,
+ 0x22, 0xee, 0x86, 0x24, 0x1d, 0x18, 0x60, 0x28, 0x8e, 0x97, 0x10, 0xa5,
+ 0x53, 0x54, 0xd2, 0x9e, 0x73, 0xc4, 0x7d, 0x48, 0x1c, 0x39, 0x59, 0x7a,
+ 0x92, 0xd8, 0xc0, 0xc5, 0x98, 0xb3, 0xa4, 0x09, 0x9a, 0xf9, 0xfd, 0xf5,
+ 0xf4, 0xec, 0xfb, 0x67, 0x2f, 0xdf, 0xd0, 0x14, 0x9d, 0xda, 0x25, 0xa1,
+ 0xd9, 0x86, 0x0e, 0x55, 0x1d, 0xfa, 0xa1, 0x6b, 0x60, 0xcb, 0xab, 0x86,
+ 0x98, 0xd7, 0xc4, 0xef, 0x76, 0xf4, 0xc3, 0x44, 0xc2, 0x74, 0x9d, 0x65,
+ 0xaa, 0x53, 0x18, 0x72, 0xe3, 0xd1, 0x02, 0x63, 0xe1, 0xff, 0x31, 0xc9,
+ 0x2f, 0xcb, 0x40, 0x74, 0x26, 0x9f, 0x5c, 0xd3, 0x40, 0xd7, 0x80, 0x48,
+ 0xb2, 0xf9, 0x84, 0xe9, 0x0b, 0xff, 0x1d, 0x49, 0xe2, 0x2a, 0xaf, 0x27,
+ 0x82, 0x7c, 0x86, 0xbc, 0xe3, 0x4e, 0x08, 0x56, 0x36, 0x8a, 0x36, 0x81,
+ 0xfe, 0xaf, 0xd2, 0xdb, 0xad, 0x5e, 0xf4, 0x8c, 0xae, 0xdc, 0xd4, 0x29,
+ 0xf6, 0x59, 0xa6, 0x8a, 0x60, 0xf0, 0xff, 0x2d, 0xee, 0xda, 0x7a, 0xdb,
+ 0x56, 0x8e, 0xf0, 0xbb, 0x7e, 0x05, 0x11, 0x14, 0x68, 0x0e, 0xe0, 0xab,
+ 0x2c, 0xc9, 0x52, 0x1e, 0x1a, 0x38, 0xb6, 0x4e, 0x6c, 0x9c, 0x24, 0x36,
+ 0x44, 0x25, 0x4e, 0x81, 0x02, 0x05, 0x6d, 0xd1, 0x32, 0x1b, 0x99, 0xf2,
+ 0xa1, 0xa4, 0x63, 0x3b, 0xbf, 0xbe, 0x3b, 0xf3, 0xcd, 0xec, 0x0e, 0xb9,
+ 0x54, 0xda, 0x93, 0x3e, 0xf4, 0xc5, 0xb0, 0x69, 0x72, 0x97, 0xbb, 0x9c,
+ 0x9d, 0xfb, 0x7c, 0xa3, 0xd1, 0xdc, 0xdb, 0x58, 0x50, 0x3a, 0xbb, 0x81,
+ 0xf8, 0x3e, 0x83, 0x2e, 0xec, 0x25, 0xd7, 0x04, 0x55, 0x8a, 0xcd, 0xbb,
+ 0x71, 0x02, 0x81, 0x5b, 0xe1, 0xb6, 0x40, 0x13, 0xa4, 0xe7, 0xe3, 0x0f,
+ 0x1f, 0x18, 0x01, 0x6b, 0x06, 0x6c, 0xd6, 0x2f, 0x1f, 0xd3, 0xa4, 0xce,
+ 0x8d, 0xdd, 0xde, 0xcd, 0x72, 0xc6, 0x21, 0x2d, 0xee, 0x3c, 0x34, 0xf7,
+ 0xd9, 0xe9, 0x07, 0x52, 0xc5, 0x33, 0x42, 0x75, 0x2b, 0x9e, 0x5f, 0x45,
+ 0xfd, 0x0d, 0x73, 0x8b, 0xa8, 0x4a, 0x1c, 0xf5, 0x74, 0x3c, 0x99, 0xfe,
+ 0x53, 0x29, 0xe0, 0xcf, 0x4a, 0x1e, 0xae, 0x99, 0x69, 0x48, 0x1e, 0x3f,
+ 0x28, 0xb9, 0x52, 0xda, 0x9b, 0x42, 0xfd, 0x8c, 0x40, 0x73, 0xc3, 0xfe,
+ 0x36, 0xfe, 0xbb, 0xa3, 0x56, 0x0c, 0xeb, 0x9b, 0xc2, 0xfc, 0xad, 0x1d,
+ 0x33, 0x0d, 0x5e, 0x87, 0x6d, 0xb6, 0x46, 0x28, 0x68, 0x12, 0xa4, 0x4b,
+ 0x29, 0xb2, 0x8a, 0xd5, 0x39, 0xf6, 0xdd, 0x49, 0xb7, 0x64, 0x42, 0x02,
+ 0x14, 0x60, 0x57, 0x92, 0x78, 0x81, 0x4c, 0x24, 0xbd, 0x99, 0x0a, 0x83,
+ 0xb9, 0x48, 0xea, 0x9e, 0xc1, 0xea, 0x98, 0xdf, 0xc6, 0x96, 0x1c, 0x40,
+ 0x70, 0x00, 0xec, 0x46, 0x76, 0x5d, 0xb6, 0x78, 0xf9, 0x0e, 0x85, 0x90,
+ 0x66, 0x71, 0xac, 0xe9, 0x8e, 0xcc, 0x54, 0x37, 0x20, 0x61, 0x9c, 0x21,
+ 0x20, 0x82, 0x8f, 0x5b, 0xe6, 0x91, 0xe9, 0x05, 0xe8, 0x7b, 0x1e, 0x02,
+ 0x14, 0x41, 0xd8, 0x08, 0xda, 0x82, 0xe1, 0x9a, 0x3a, 0xd3, 0x3a, 0xf5,
+ 0xe8, 0x9b, 0xb8, 0xc7, 0x9f, 0x02, 0xe5, 0xa1, 0x94, 0x79, 0x11, 0x77,
+ 0xa7, 0x79, 0xa2, 0x61, 0x2c, 0x58, 0xc6, 0x9b, 0xe4, 0xd2, 0xb1, 0x53,
+ 0xb7, 0xf9, 0x0c, 0xc0, 0x45, 0x3a, 0x91, 0x63, 0xa3, 0xef, 0x96, 0xa4,
+ 0x07, 0xf3, 0xc5, 0xe4, 0x7d, 0xb9, 0xe1, 0x5e, 0xd0, 0xc9, 0xa7, 0x34,
+ 0x6d, 0xc1, 0x1d, 0x24, 0xfe, 0xea, 0x6e, 0x34, 0x1e, 0xa3, 0x74, 0x3c,
+ 0x71, 0x06, 0x0e, 0xbe, 0xe2, 0xff, 0x43, 0x4b, 0x65, 0x2d, 0x6c, 0x47,
+ 0x95, 0xd5, 0x9d, 0x30, 0x3a, 0x6b, 0xaa, 0x28, 0xbb, 0x84, 0xae, 0x9a,
+ 0xc4, 0x0a, 0x5f, 0x43, 0xd9, 0xd3, 0x16, 0x09, 0x7c, 0x0e, 0x5e, 0xfd,
+ 0xc5, 0xac, 0xed, 0x1f, 0x27, 0x8f, 0x28, 0x0a, 0x22, 0x2e, 0x72, 0x46,
+ 0x10, 0x87, 0x61, 0x0b, 0x9a, 0xcc, 0x79, 0x9b, 0x78, 0x09, 0x0c, 0xde,
+ 0x37, 0xbc, 0x86, 0x2a, 0xdc, 0xd8, 0x13, 0x56, 0xa6, 0x74, 0x5b, 0x44,
+ 0x6c, 0xc4, 0x38, 0xac, 0x64, 0xdc, 0xd7, 0x45, 0x88, 0x36, 0xfb, 0x80,
+ 0xa7, 0xc3, 0xfd, 0x9c, 0x5e, 0x3a, 0xad, 0xdc, 0xfd, 0x32, 0xfe, 0xf5,
+ 0xe2, 0x6b, 0xf0, 0x82, 0x4e, 0x83, 0x8b, 0x05, 0x65, 0xfb, 0x51, 0x8b,
+ 0x25, 0x81, 0xe7, 0x35, 0x8e, 0x1b, 0x96, 0x35, 0xc5, 0x33, 0x92, 0x5a,
+ 0x00, 0x07, 0xea, 0x01, 0x10, 0xea, 0x7a, 0xf6, 0xf3, 0x4b, 0x80, 0xf5,
+ 0x08, 0x5b, 0x44, 0xcb, 0xb7, 0xfe, 0x1b, 0x56, 0xc2, 0xad, 0xd3, 0x69,
+ 0xdd, 0x7c, 0x29, 0xb7, 0x40, 0xb1, 0xb7, 0xe4, 0x02, 0x39, 0xcb, 0x3b,
+ 0x46, 0x4f, 0x87, 0x4d, 0x96, 0x99, 0x36, 0x40, 0x4e, 0x69, 0xdb, 0x31,
+ 0x03, 0x29, 0x37, 0x5a, 0xbb, 0x83, 0xb7, 0x06, 0x43, 0xd2, 0x9c, 0xeb,
+ 0x86, 0xd1, 0xcb, 0x58, 0x71, 0x7e, 0x98, 0xfa, 0x22, 0x64, 0xe5, 0x62,
+ 0x3d, 0x72, 0xae, 0x2b, 0x45, 0x92, 0x56, 0x6f, 0x6a, 0x2e, 0x4c, 0xb7,
+ 0x45, 0xad, 0x98, 0x9f, 0x00, 0xcc, 0x63, 0x0f, 0x7a, 0x73, 0x76, 0x9e,
+ 0x55, 0xbf, 0x20, 0xdc, 0x5b, 0x9a, 0xde, 0xda, 0x52, 0x02, 0x46, 0x9b,
+ 0x2f, 0xc7, 0xa5, 0xee, 0x3c, 0x5d, 0xfd, 0x60, 0xea, 0x78, 0xe5, 0x11,
+ 0xcc, 0x12, 0xe1, 0x75, 0xac, 0x7a, 0x3f, 0x1a, 0x83, 0x1c, 0xdb, 0xbf,
+ 0x6f, 0x0a, 0xc7, 0xbe, 0x73, 0x24, 0x42, 0xee, 0xee, 0xe2, 0xa1, 0xc6,
+ 0x18, 0xd9, 0x4f, 0x0d, 0x92, 0xd5, 0x47, 0xe9, 0xff, 0xcc, 0x20, 0xfd,
+ 0xc6, 0x18, 0xf7, 0x3f, 0x35, 0xc8, 0xae, 0xba, 0xba, 0x3a, 0x9d, 0xf1,
+ 0xd7, 0x8b, 0xa9, 0x33, 0x68, 0xcf, 0x6a, 0x67, 0xa6, 0x12, 0x8e, 0x42,
+ 0x6a, 0x74, 0xe9, 0x28, 0xcf, 0x3d, 0x3a, 0x2b, 0xee, 0x58, 0x01, 0x5b,
+ 0x4b, 0xd9, 0x04, 0x85, 0xe2, 0x56, 0x0a, 0x9e, 0x58, 0x54, 0x68, 0xdf,
+ 0x44, 0x09, 0xd3, 0x1c, 0x8b, 0x31, 0x08, 0xc0, 0xa6, 0xe2, 0x79, 0x15,
+ 0x50, 0x33, 0x50, 0xbb, 0x88, 0x16, 0xe3, 0x7e, 0xc4, 0x12, 0x08, 0xa7,
+ 0x0c, 0x8d, 0xb7, 0x56, 0x7f, 0x53, 0xc1, 0xe0, 0xc8, 0x9e, 0x99, 0x31,
+ 0x07, 0xa1, 0x38, 0x08, 0x37, 0x6e, 0x00, 0x30, 0x22, 0x5b, 0x68, 0x33,
+ 0x90, 0x6d, 0xa0, 0xd5, 0x03, 0x11, 0xbe, 0x48, 0x0e, 0x54, 0x2c, 0x8f,
+ 0xd0, 0x83, 0x2e, 0xe0, 0x7f, 0xd4, 0xe0, 0xb0, 0xb3, 0x5b, 0xb7, 0x14,
+ 0x6d, 0xa0, 0x15, 0x9b, 0x05, 0x04, 0x30, 0x5a, 0x6d, 0x9a, 0x39, 0x12,
+ 0x87, 0x22, 0x20, 0xca, 0xda, 0xd1, 0xe2, 0x43, 0x25, 0x12, 0x8c, 0x14,
+ 0xcf, 0x99, 0x22, 0x42, 0x6a, 0x50, 0x6a, 0x55, 0x03, 0x22, 0x8c, 0x14,
+ 0x6b, 0x3f, 0x84, 0x9f, 0xa7, 0x2b, 0x56, 0x66, 0x56, 0x2c, 0xa0, 0xae,
+ 0x4b, 0x05, 0x70, 0xf1, 0xdd, 0xa8, 0x1b, 0x47, 0xde, 0x97, 0xed, 0xb6,
+ 0x7a, 0xc1, 0x69, 0xe7, 0x33, 0x1c, 0xc1, 0xd5, 0x4b, 0xb9, 0xce, 0x9e,
+ 0x59, 0x11, 0x26, 0xb6, 0x22, 0x2d, 0xb7, 0xc2, 0x93, 0x3d, 0xad, 0xc3,
+ 0xf3, 0x8d, 0xbd, 0x88, 0x37, 0x69, 0x78, 0x53, 0xc3, 0xd7, 0x21, 0xb1,
+ 0x41, 0x21, 0x9f, 0x45, 0x27, 0x2d, 0x2a, 0x86, 0x16, 0xdc, 0xed, 0xb4,
+ 0x14, 0xff, 0xf8, 0x49, 0x15, 0x3f, 0x7a, 0x89, 0x54, 0xa6, 0xfc, 0x99,
+ 0x64, 0x4d, 0xc1, 0xa9, 0xfc, 0xda, 0x43, 0x88, 0x34, 0x54, 0xde, 0x2f,
+ 0xe9, 0x9b, 0xdb, 0xf0, 0xd7, 0x59, 0x30, 0x55, 0x55, 0x89, 0x66, 0x4b,
+ 0xde, 0x40, 0xb4, 0x9d, 0x70, 0xfb, 0x76, 0x93, 0x11, 0x74, 0x3d, 0x43,
+ 0xba, 0x66, 0x25, 0x9c, 0x17, 0xfa, 0x05, 0xda, 0xe1, 0x26, 0xc3, 0x26,
+ 0xf4, 0xc5, 0x6e, 0xf7, 0xde, 0x6e, 0x01, 0x4b, 0xb4, 0xbc, 0x0c, 0xae,
+ 0x3b, 0x09, 0x0b, 0x91, 0xc3, 0xf0, 0xd6, 0xdf, 0xcd, 0x29, 0x28, 0xf1,
+ 0x26, 0xac, 0x1a, 0x49, 0x4d, 0x03, 0x3b, 0x0b, 0x1e, 0xd4, 0x79, 0xd0,
+ 0x2b, 0x2a, 0x4c, 0x63, 0xf3, 0xf0, 0xc2, 0x3c, 0x37, 0xf9, 0x7f, 0x31,
+ 0xcb, 0x71, 0x93, 0x5e, 0x4c, 0x8a, 0x1f, 0x4f, 0xe3, 0xef, 0x1c, 0x4a,
+ 0xc0, 0x3b, 0x27, 0x1c, 0x4f, 0x89, 0x47, 0x54, 0xf9, 0xe3, 0x42, 0x16,
+ 0x2c, 0x57, 0x38, 0x03, 0x9d, 0x83, 0xd6, 0x70, 0xb4, 0xf8, 0xb7, 0x71,
+ 0xb6, 0xbc, 0x8d, 0xad, 0x8d, 0x64, 0x5e, 0x27, 0x01, 0xe0, 0x98, 0xa5,
+ 0xe6, 0x02, 0x85, 0x27, 0x43, 0x0c, 0x86, 0x4b, 0x54, 0xa1, 0xee, 0x84,
+ 0xe2, 0xd2, 0xff, 0xad, 0x4f, 0xc4, 0x40, 0x85, 0x70, 0xab, 0x1b, 0xaf,
+ 0x01, 0xed, 0xd8, 0xa6, 0x02, 0x0e, 0x70, 0xb0, 0xc1, 0x18, 0x77, 0x26,
+ 0x2b, 0xa5, 0xcb, 0x52, 0x45, 0x65, 0x77, 0x7b, 0xc9, 0xc7, 0x65, 0x54,
+ 0xb9, 0xbc, 0xbc, 0x5b, 0x0b, 0xc2, 0x38, 0xd5, 0xf5, 0x62, 0x7b, 0x9c,
+ 0xb5, 0x3d, 0x17, 0x1d, 0xdb, 0xf4, 0xdf, 0x24, 0xca, 0xf7, 0x01, 0x6c,
+ 0xc7, 0x6f, 0xd8, 0x57, 0x5c, 0xb6, 0xbc, 0x5d, 0xb3, 0x66, 0xfe, 0xf0,
+ 0xc0, 0xef, 0x03, 0x2f, 0x8b, 0x8a, 0xb2, 0xf9, 0x5b, 0x38, 0x63, 0x8a,
+ 0xbb, 0x2e, 0x3e, 0x65, 0xcc, 0xc9, 0xbc, 0xa5, 0x1c, 0x22, 0x41, 0xfa,
+ 0xa5, 0x48, 0x9b, 0x8d, 0xbd, 0xdf, 0x5c, 0x53, 0x95, 0x21, 0xc1, 0x04,
+ 0xc5, 0xfa, 0x00, 0x92, 0x12, 0xb9, 0xb9, 0xc3, 0x01, 0x52, 0xcf, 0xa8,
+ 0x91, 0x25, 0xcd, 0x90, 0x29, 0x54, 0x29, 0xbe, 0x25, 0xee, 0x4f, 0x5d,
+ 0xb5, 0x8c, 0xfd, 0x18, 0x7a, 0x23, 0x98, 0xf5, 0x1c, 0xfa, 0xf5, 0x3c,
+ 0x31, 0xa5, 0x5c, 0x9d, 0xa4, 0xa9, 0xd2, 0xc9, 0x69, 0x0b, 0x49, 0xa8,
+ 0x17, 0x79, 0xf1, 0xe2, 0x1b, 0x26, 0xc5, 0x3c, 0x55, 0x06, 0x69, 0x94,
+ 0x2b, 0x1c, 0x82, 0xd9, 0x9d, 0x01, 0x3d, 0xbc, 0x7d, 0xb9, 0x4f, 0xb5,
+ 0x4d, 0x04, 0x94, 0x78, 0xa3, 0xd9, 0x41, 0xbb, 0x81, 0x8c, 0x3c, 0x65,
+ 0xda, 0x66, 0x06, 0xe8, 0xd5, 0xfc, 0x2d, 0x72, 0x78, 0x3a, 0x8e, 0x44,
+ 0x8c, 0xcc, 0xbc, 0xc8, 0x51, 0xbc, 0xe8, 0x2f, 0x58, 0xd4, 0xce, 0xff,
+ 0xb4, 0xe8, 0x2f, 0x2d, 0x8b, 0xee, 0x35, 0xe6, 0xea, 0x76, 0x8f, 0x05,
+ 0x03, 0xa9, 0xb6, 0xc1, 0xe0, 0x18, 0x98, 0x0d, 0x2b, 0x76, 0x37, 0xee,
+ 0x6a, 0xf3, 0xf5, 0xc8, 0x13, 0x1f, 0x4e, 0xaf, 0x99, 0xaa, 0xef, 0xa7,
+ 0xba, 0xcd, 0x4a, 0x1a, 0x8f, 0xd4, 0x37, 0x30, 0x9f, 0x98, 0xf9, 0x69,
+ 0x80, 0x8c, 0x82, 0x1e, 0x4f, 0x54, 0xd5, 0xb6, 0xa5, 0x12, 0x45, 0x5f,
+ 0xc3, 0xcc, 0x33, 0xf0, 0xb1, 0xe9, 0xfd, 0xae, 0xe6, 0xc6, 0x9f, 0x30,
+ 0x93, 0x5e, 0xe4, 0x0f, 0x4c, 0x9a, 0xf0, 0x05, 0x04, 0xed, 0x18, 0x98,
+ 0x9e, 0x77, 0x55, 0xc6, 0x2d, 0xc5, 0x17, 0xd9, 0x4b, 0x4b, 0x4f, 0x27,
+ 0xc9, 0x9a, 0xa2, 0xe8, 0x10, 0x77, 0x00, 0x9d, 0xe7, 0x25, 0x45, 0x41,
+ 0x58, 0x25, 0x11, 0xbf, 0x24, 0x79, 0x36, 0x39, 0x65, 0xfe, 0xce, 0xa7,
+ 0x2c, 0xc9, 0xac, 0x11, 0xbe, 0x38, 0x65, 0x40, 0xac, 0x9b, 0x08, 0x2d,
+ 0xed, 0xbd, 0xe8, 0x0e, 0x8f, 0xc3, 0xbe, 0xf9, 0x6d, 0x22, 0x9b, 0x1d,
+ 0xcd, 0x10, 0xec, 0xe6, 0x09, 0x3b, 0x31, 0x89, 0xa0, 0x5a, 0x71, 0x1d,
+ 0xd1, 0xa5, 0x3c, 0x1c, 0x66, 0x01, 0x43, 0xbe, 0x22, 0x6e, 0x27, 0x5d,
+ 0x85, 0xf7, 0x9c, 0x81, 0x49, 0x0a, 0x0a, 0xda, 0x14, 0x4b, 0x98, 0x11,
+ 0x56, 0x7b, 0x16, 0xd2, 0xe5, 0xea, 0xa4, 0x3b, 0x6a, 0x79, 0x57, 0x2d,
+ 0x5f, 0xd9, 0x17, 0x46, 0x1b, 0x7a, 0xcd, 0x68, 0x4e, 0x53, 0x9e, 0x4c,
+ 0xc6, 0xd3, 0x09, 0x27, 0x7d, 0x13, 0x0b, 0x88, 0x6c, 0xed, 0xac, 0xfa,
+ 0xc5, 0x77, 0x43, 0x11, 0x7e, 0x16, 0x54, 0x94, 0xc0, 0x22, 0xd0, 0x28,
+ 0xcb, 0x7f, 0x71, 0xfc, 0xa9, 0xcf, 0xf9, 0xa2, 0x5c, 0x6c, 0x79, 0xc8,
+ 0x07, 0xad, 0xb7, 0xf0, 0xea, 0x76, 0x43, 0x45, 0xd3, 0x23, 0x7d, 0x13,
+ 0x10, 0xa5, 0x20, 0x31, 0xec, 0x49, 0x75, 0x8a, 0xa2, 0xf7, 0x90, 0xce,
+ 0xa3, 0x8a, 0x06, 0x0a, 0xf5, 0x96, 0x55, 0x9b, 0x34, 0xf6, 0xf5, 0xc0,
+ 0xa2, 0x1b, 0x68, 0x2d, 0xb0, 0xe9, 0xd8, 0x85, 0x22, 0x77, 0xc3, 0x43,
+ 0xd1, 0x17, 0xb7, 0x77, 0x70, 0x10, 0x17, 0xf9, 0x67, 0x37, 0x8e, 0xad,
+ 0x8a, 0xa2, 0x27, 0x28, 0x5c, 0x40, 0xe6, 0xe1, 0xef, 0xc5, 0xaa, 0xee,
+ 0x8a, 0xec, 0x9e, 0xdd, 0x5d, 0xda, 0xad, 0xd8, 0xb8, 0xe9, 0x82, 0xc3,
+ 0x5c, 0x33, 0x24, 0x98, 0xec, 0x57, 0x83, 0xb1, 0x00, 0x2e, 0x0c, 0x05,
+ 0x54, 0xc1, 0xf1, 0xc8, 0x0e, 0x3c, 0xc9, 0xb0, 0x8a, 0xde, 0x2a, 0xe2,
+ 0xde, 0xdd, 0x70, 0xe2, 0x2d, 0x1b, 0x49, 0xa7, 0x97, 0x13, 0x21, 0xb0,
+ 0x58, 0x3a, 0x73, 0xbd, 0x03, 0xdd, 0xe0, 0x15, 0xe7, 0x9d, 0x96, 0x06,
+ 0x15, 0x7c, 0x52, 0x68, 0x5c, 0xdf, 0x7e, 0xd6, 0xcc, 0x8a, 0xf3, 0x3f,
+ 0x21, 0xe0, 0x38, 0x59, 0xdb, 0x17, 0x01, 0xc5, 0xd4, 0x86, 0xc4, 0x7a,
+ 0x2a, 0xcd, 0x43, 0x38, 0x64, 0x97, 0x38, 0xbd, 0x00, 0x81, 0x24, 0x1a,
+ 0x12, 0x38, 0x48, 0x6a, 0x68, 0x2c, 0x0e, 0x0a, 0x2d, 0xa2, 0x8b, 0xe8,
+ 0x10, 0x07, 0xe8, 0x32, 0xf4, 0x9c, 0x06, 0x7f, 0x97, 0x45, 0x7a, 0x83,
+ 0x9c, 0x2e, 0x73, 0x4a, 0x15, 0x7a, 0x32, 0x4b, 0x55, 0x52, 0x86, 0xec,
+ 0x82, 0xdb, 0xdd, 0x48, 0x7c, 0x58, 0xdb, 0xc0, 0xda, 0x2c, 0x41, 0xfd,
+ 0x36, 0x32, 0xff, 0xea, 0x72, 0x32, 0x4d, 0xbc, 0xc8, 0xe7, 0x99, 0xf9,
+ 0x52, 0xe3, 0xf0, 0x10, 0x14, 0x00, 0x7b, 0x6f, 0x02, 0xee, 0x4e, 0x94,
+ 0xe2, 0x21, 0xa6, 0xc2, 0xba, 0x31, 0xc4, 0x0e, 0x47, 0xed, 0x66, 0x4b,
+ 0xb8, 0x50, 0x03, 0xa3, 0x11, 0x2f, 0x32, 0x4b, 0x99, 0x6d, 0xed, 0x8f,
+ 0x02, 0xb0, 0xf4, 0xd1, 0x61, 0x0b, 0x9f, 0x20, 0x71, 0x30, 0x19, 0xa7,
+ 0x53, 0xec, 0x18, 0xfd, 0x16, 0xbd, 0x37, 0x70, 0x6b, 0xe5, 0x62, 0x64,
+ 0xbf, 0x78, 0xca, 0xa0, 0xf2, 0x31, 0xf2, 0x60, 0xd3, 0xf8, 0x1e, 0xe0,
+ 0xd7, 0xec, 0xd8, 0x91, 0xa9, 0x5a, 0x64, 0x8e, 0x29, 0x74, 0xc2, 0x87,
+ 0x9b, 0x2f, 0xbc, 0x92, 0x49, 0x5e, 0x39, 0xb5, 0x4c, 0x0e, 0xc4, 0xb2,
+ 0xfa, 0x66, 0x86, 0xe8, 0x19, 0x36, 0x41, 0x62, 0x4a, 0x46, 0xb8, 0x00,
+ 0x66, 0xf2, 0x82, 0x2f, 0xee, 0x2a, 0xad, 0xb0, 0xac, 0x00, 0x55, 0xe0,
+ 0xbe, 0x30, 0x4e, 0xdf, 0x07, 0x79, 0x54, 0x53, 0x30, 0xef, 0x42, 0x97,
+ 0xb5, 0xd0, 0x87, 0xb5, 0xb6, 0x06, 0xcd, 0x1d, 0x81, 0xd4, 0xdf, 0x65,
+ 0xb3, 0x50, 0x73, 0x88, 0xb5, 0xd7, 0xa4, 0x82, 0x44, 0x13, 0x59, 0x47,
+ 0xcb, 0xaa, 0x45, 0x41, 0xd9, 0x2b, 0x37, 0xb0, 0x1a, 0xe9, 0xb1, 0xb6,
+ 0xc6, 0xdb, 0x66, 0x0e, 0x11, 0x3f, 0xe4, 0x84, 0xbc, 0x35, 0x62, 0xda,
+ 0x4d, 0x85, 0x33, 0x1c, 0x94, 0x7d, 0x8a, 0x26, 0x79, 0x21, 0xb1, 0x97,
+ 0x5c, 0x51, 0x00, 0x99, 0xf5, 0xa6, 0xd5, 0xdb, 0x30, 0x1c, 0x8e, 0x09,
+ 0xa5, 0x35, 0xa9, 0x1a, 0x40, 0x40, 0xbf, 0x7b, 0xb8, 0xc2, 0x98, 0xbf,
+ 0xc1, 0x64, 0x8e, 0xd6, 0x3b, 0x0a, 0x0f, 0xaf, 0xdc, 0x52, 0x6e, 0xef,
+ 0xa3, 0x5b, 0x7a, 0x42, 0x59, 0x9b, 0x12, 0x5a, 0xa5, 0xe7, 0xcc, 0x74,
+ 0x9a, 0xe9, 0x7b, 0xb0, 0xd1, 0xc8, 0x23, 0xdc, 0xe9, 0x3d, 0x35, 0x0e,
+ 0x6e, 0x86, 0x82, 0x28, 0x38, 0x91, 0xad, 0xa2, 0xbe, 0x27, 0xee, 0xcc,
+ 0x90, 0x22, 0xe7, 0xc6, 0x2a, 0x89, 0xcf, 0x7a, 0xaf, 0x65, 0x2d, 0x1f,
+ 0x9a, 0xf7, 0xd6, 0xb7, 0x9f, 0x89, 0x40, 0xf8, 0xea, 0x49, 0x7a, 0x3d,
+ 0xd0, 0xa2, 0xa7, 0x1b, 0x2f, 0xbd, 0x6a, 0x6f, 0x27, 0x15, 0xd7, 0xe2,
+ 0x3c, 0xbc, 0xc9, 0xb8, 0x7d, 0x43, 0xe6, 0x84, 0xbb, 0x55, 0xfe, 0x7b,
+ 0xfd, 0x30, 0xd4, 0x1d, 0x41, 0xf3, 0xf9, 0xb1, 0x02, 0xf7, 0x71, 0x8c,
+ 0x47, 0xba, 0xd9, 0x14, 0xfe, 0xb6, 0x9a, 0x8a, 0xf7, 0x1f, 0xfa, 0x01,
+ 0xf5, 0x8e, 0xc5, 0x26, 0x26, 0xa3, 0xb8, 0x7c, 0x09, 0x98, 0x08, 0x7b,
+ 0xc8, 0x5d, 0x86, 0x07, 0x8f, 0x26, 0xf0, 0xff, 0x11, 0x27, 0xf0, 0xbd,
+ 0x78, 0x88, 0x1e, 0xb2, 0xe7, 0x48, 0xc0, 0x3f, 0x6c, 0x1e, 0xa4, 0x1a,
+ 0xd8, 0xcc, 0x34, 0x14, 0x17, 0x07, 0xca, 0xd7, 0xb5, 0x9b, 0x4b, 0xe0,
+ 0xa3, 0x4b, 0x6f, 0x4a, 0x87, 0xaa, 0x8a, 0x19, 0xd7, 0x86, 0xfa, 0x4a,
+ 0xe2, 0xb8, 0xad, 0x33, 0xf5, 0x68, 0x02, 0x30, 0x07, 0xd4, 0x5d, 0xf5,
+ 0x35, 0x2c, 0x15, 0xb5, 0x53, 0x7c, 0x0e, 0x72, 0x1f, 0xfe, 0xb5, 0xbd,
+ 0x9d, 0x46, 0x95, 0xff, 0x8b, 0x15, 0xc9, 0x3d, 0x88, 0x1b, 0xe0, 0xa0,
+ 0x61, 0x95, 0x84, 0x29, 0x1b, 0x18, 0x5e, 0x6f, 0x24, 0xbe, 0x32, 0xf1,
+ 0x8f, 0x50, 0xf2, 0x76, 0x49, 0x6d, 0xcb, 0x1b, 0x39, 0x9b, 0xfd, 0x6e,
+ 0xf0, 0x9a, 0x8a, 0x5c, 0x2c, 0xf4, 0xc4, 0x91, 0x7e, 0xef, 0xf6, 0x9c,
+ 0x90, 0x45, 0xe7, 0x3b, 0x92, 0x71, 0xa6, 0xed, 0xc5, 0x7c, 0xc3, 0x1a,
+ 0x68, 0x19, 0x6d, 0xd0, 0x80, 0x66, 0x92, 0xa3, 0xc0, 0x74, 0xaa, 0x97,
+ 0x47, 0x0e, 0xb4, 0xcc, 0x49, 0x95, 0x6f, 0x39, 0x04, 0x7d, 0x30, 0xba,
+ 0x53, 0x1c, 0x55, 0x52, 0x3b, 0xe3, 0xc7, 0x58, 0xa3, 0x6e, 0x44, 0xaf,
+ 0xfb, 0x7d, 0xeb, 0x09, 0xa0, 0xc6, 0xa9, 0x12, 0x97, 0xe1, 0x38, 0x0c,
+ 0xe9, 0x15, 0xe6, 0xde, 0x81, 0xbf, 0x97, 0x13, 0x41, 0x4a, 0xe9, 0x70,
+ 0xf4, 0x83, 0x27, 0x86, 0x9a, 0x8c, 0x0d, 0x9d, 0x5e, 0x03, 0x35, 0xd0,
+ 0x52, 0x4c, 0x99, 0xb0, 0xd7, 0xeb, 0xfa, 0xa3, 0x86, 0x97, 0x85, 0xa4,
+ 0x4d, 0xa0, 0x26, 0x5e, 0x54, 0xf1, 0x78, 0x6f, 0xcf, 0xd3, 0x00, 0x82,
+ 0xf5, 0x8a, 0x2a, 0x8f, 0x6b, 0xa5, 0xc7, 0xca, 0xb7, 0x72, 0x8b, 0x4e,
+ 0xad, 0xc7, 0x13, 0xe4, 0x7a, 0x7a, 0xb2, 0x0d, 0x4b, 0x85, 0x09, 0xd4,
+ 0x4c, 0x72, 0x28, 0x64, 0xee, 0x96, 0xbc, 0x9c, 0x97, 0xc5, 0x77, 0xc5,
+ 0x07, 0x26, 0xa9, 0xca, 0x4d, 0x64, 0x6b, 0xca, 0xcd, 0xe0, 0x48, 0xe8,
+ 0xe8, 0xb9, 0xa0, 0x43, 0xc3, 0xda, 0x38, 0x97, 0xbd, 0x53, 0x76, 0x72,
+ 0x5e, 0x43, 0x82, 0x1e, 0xf4, 0x44, 0x0f, 0x52, 0x65, 0x95, 0xa4, 0x21,
+ 0xad, 0x73, 0xc1, 0xcd, 0xe0, 0x9a, 0x8c, 0x73, 0x20, 0x92, 0x48, 0xbe,
+ 0x14, 0xbb, 0xd8, 0x48, 0xfb, 0x13, 0x9e, 0x49, 0x20, 0x9d, 0x55, 0xfe,
+ 0x84, 0xf0, 0x51, 0x16, 0xab, 0x3f, 0x83, 0xc1, 0x16, 0x4f, 0xe1, 0x0a,
+ 0x62, 0x6c, 0xcc, 0xa4, 0x62, 0xee, 0x3f, 0xf6, 0x84, 0x6e, 0xba, 0x0a,
+ 0x6a, 0x0b, 0xb5, 0x1d, 0xdb, 0x29, 0x51, 0xd9, 0xb3, 0x78, 0x34, 0x40,
+ 0xe1, 0x33, 0x04, 0x22, 0x9b, 0xae, 0x7c, 0x3f, 0xfd, 0x62, 0x39, 0x4f,
+ 0x6c, 0x3b, 0x85, 0x01, 0x28, 0xe6, 0x57, 0x0e, 0x64, 0x06, 0x6d, 0xbd,
+ 0x4c, 0xa6, 0x6d, 0xd8, 0x83, 0x83, 0x91, 0x7c, 0x7a, 0x95, 0x60, 0xde,
+ 0x7c, 0xdc, 0xf6, 0xc4, 0xf1, 0x81, 0x55, 0x20, 0x67, 0x94, 0x7b, 0x0a,
+ 0x7c, 0xd4, 0xad, 0x0f, 0xe0, 0xc3, 0x5f, 0x2c, 0x08, 0xf6, 0x7e, 0x81,
+ 0x7b, 0x42, 0xbb, 0xb2, 0x70, 0x5b, 0xb7, 0xc6, 0x06, 0xa7, 0x56, 0xa5,
+ 0x49, 0x2e, 0xce, 0xcc, 0x8d, 0x47, 0x61, 0x81, 0xd9, 0x82, 0xe4, 0xf3,
+ 0x0b, 0x5c, 0x47, 0xab, 0xe4, 0x35, 0x3d, 0x65, 0x10, 0x3f, 0x8e, 0x41,
+ 0x19, 0x9f, 0x96, 0x88, 0x7f, 0xf2, 0xfe, 0x47, 0xf7, 0x1c, 0xd7, 0x4e,
+ 0x98, 0x6a, 0xce, 0x5a, 0x8e, 0x2f, 0xf4, 0x9d, 0xbc, 0xa6, 0x70, 0xde,
+ 0x5b, 0x75, 0xa1, 0x55, 0xd4, 0xcb, 0x6b, 0xf5, 0xd6, 0x0e, 0x33, 0xb4,
+ 0x35, 0xfd, 0x70, 0x9e, 0xf9, 0xd4, 0x0a, 0x6f, 0x7f, 0x93, 0x19, 0x55,
+ 0xf7, 0x77, 0x99, 0x11, 0xf0, 0x29, 0x9c, 0xc0, 0xdd, 0x94, 0xe1, 0xbc,
+ 0xc2, 0x4e, 0x12, 0xf0, 0xbf, 0x99, 0x6d, 0xf9, 0x96, 0xa6, 0xe7, 0xea,
+ 0xae, 0x31, 0xde, 0xc6, 0x83, 0x06, 0x75, 0xae, 0xee, 0x37, 0x30, 0x4c,
+ 0xfd, 0x8a, 0xda, 0x60, 0x5b, 0x86, 0xdd, 0x06, 0xd3, 0x60, 0x0d, 0xeb,
+ 0xd4, 0xbd, 0x2d, 0x2c, 0x57, 0x26, 0x0e, 0x04, 0xd4, 0x9e, 0xaa, 0x25,
+ 0xdc, 0x6a, 0xe4, 0x39, 0x09, 0x03, 0x88, 0x74, 0xa7, 0x5a, 0x92, 0x4a,
+ 0x32, 0xb9, 0x9a, 0x27, 0x67, 0xd8, 0xf3, 0x5b, 0x44, 0x1f, 0xf7, 0xca,
+ 0x99, 0xc2, 0x5b, 0x8d, 0xdd, 0x21, 0x0e, 0xe9, 0xc7, 0x62, 0x85, 0x10,
+ 0x9d, 0x23, 0xb5, 0xc9, 0x34, 0xbd, 0x4a, 0x4e, 0xd3, 0xfc, 0x77, 0xc9,
+ 0xf4, 0x33, 0xbc, 0x65, 0x38, 0x68, 0xbf, 0x3b, 0x15, 0x6f, 0xd6, 0x05,
+ 0x77, 0x60, 0x75, 0xfb, 0x59, 0x7b, 0xe8, 0x58, 0x08, 0x4e, 0x5d, 0xdd,
+ 0x70, 0xfa, 0xd0, 0xab, 0x31, 0xb7, 0x59, 0xd4, 0xbe, 0xce, 0x70, 0x18,
+ 0x14, 0xf9, 0xfb, 0x4d, 0xf9, 0xcd, 0xab, 0x48, 0xd2, 0x4e, 0x49, 0x3f,
+ 0x95, 0x79, 0x62, 0xa4, 0xc4, 0x67, 0x7c, 0x7f, 0xbe, 0x78, 0x42, 0xb2,
+ 0x17, 0xd5, 0xdd, 0x26, 0x61, 0x46, 0xc7, 0xc1, 0x6a, 0xb5, 0x38, 0xa3,
+ 0x03, 0x2f, 0xc0, 0xa4, 0xf1, 0xc2, 0x37, 0x4e, 0xf3, 0x14, 0x0a, 0xd2,
+ 0x64, 0xed, 0xc7, 0xa2, 0x24, 0xab, 0x3b, 0xdc, 0x62, 0x46, 0x90, 0xd3,
+ 0x57, 0xfe, 0xe1, 0x58, 0x94, 0xb0, 0x7f, 0xc3, 0xe1, 0x81, 0x7f, 0x66,
+ 0x6e, 0x07, 0x21, 0xa4, 0x14, 0xf5, 0x7b, 0x10, 0xe2, 0x2b, 0x4a, 0xf5,
+ 0x31, 0x35, 0x1c, 0x47, 0xfe, 0xa1, 0x23, 0xa5, 0x5c, 0xea, 0x41, 0xd3,
+ 0xa6, 0xcf, 0x21, 0x3f, 0x82, 0x05, 0x37, 0x03, 0x6b, 0x8b, 0x76, 0x19,
+ 0x46, 0xe8, 0xe9, 0x08, 0x8d, 0x36, 0x08, 0x7e, 0x30, 0xef, 0xd5, 0xc8,
+ 0x22, 0xd3, 0x62, 0xd4, 0xd7, 0xe0, 0x8a, 0xf2, 0x2e, 0xa0, 0x2a, 0x7a,
+ 0xe7, 0x97, 0xf5, 0x7e, 0xed, 0x1f, 0xc9, 0xdb, 0x47, 0x8e, 0xae, 0x66,
+ 0x2f, 0xa0, 0x3f, 0xe7, 0xf6, 0x82, 0xa7, 0x0b, 0x1e, 0x0e, 0x7e, 0xbf,
+ 0x08, 0x11, 0xf0, 0x07, 0x9e, 0xaf, 0x11, 0xe8, 0x97, 0xd3, 0x7e, 0x2c,
+ 0xb5, 0xa8, 0x62, 0x2b, 0x19, 0xf2, 0x70, 0xa1, 0x21, 0xd0, 0xce, 0x4d,
+ 0x84, 0x58, 0x57, 0x77, 0xef, 0xc6, 0xc2, 0x2e, 0x12, 0xc0, 0xd4, 0xf0,
+ 0xec, 0x45, 0x87, 0xe0, 0xb1, 0x0b, 0x5f, 0x1b, 0x81, 0xb0, 0xb4, 0xb7,
+ 0x23, 0x65, 0x67, 0x5a, 0x4c, 0xc8, 0xaf, 0x5f, 0x71, 0xb4, 0x7c, 0x23,
+ 0x26, 0x89, 0x08, 0x32, 0xc5, 0x4a, 0xb0, 0x11, 0xba, 0x19, 0x7d, 0x2c,
+ 0x0e, 0x6d, 0x55, 0xf9, 0x22, 0xa7, 0x5e, 0x8c, 0x30, 0xed, 0x98, 0xcb,
+ 0xb5, 0x25, 0x5f, 0xbb, 0xdd, 0x44, 0x3c, 0x9c, 0x92, 0x2d, 0xd9, 0x97,
+ 0x8b, 0x2e, 0xc1, 0xf0, 0xed, 0xb9, 0x37, 0x78, 0xf7, 0xf9, 0x7d, 0x6a,
+ 0x63, 0xff, 0xdc, 0x1b, 0x3b, 0x7f, 0x26, 0x77, 0x02, 0x60, 0x50, 0x49,
+ 0x2f, 0xf7, 0x5f, 0x40, 0x7d, 0x4c, 0xd2, 0x63, 0x72, 0xb5, 0xb9, 0x79,
+ 0xa0, 0x88, 0x79, 0x89, 0xfa, 0xb6, 0x86, 0x4f, 0xd5, 0x3d, 0x44, 0xfa,
+ 0xec, 0x5f, 0x29, 0x7c, 0x38, 0x47, 0x0f, 0x0c, 0x4a, 0x1d, 0x2e, 0x93,
+ 0xf7, 0xc5, 0xfa, 0x7c, 0x73, 0xf3, 0xc6, 0x47, 0xc5, 0xe7, 0x6e, 0xcc,
+ 0xcd, 0x0d, 0x25, 0xc2, 0xef, 0xd3, 0xc0, 0xf8, 0xc1, 0x23, 0xae, 0x3a,
+ 0x9d, 0x93, 0xcf, 0xd3, 0xf3, 0xcb, 0x49, 0x9a, 0xec, 0x13, 0x1c, 0xe8,
+ 0x74, 0x72, 0xf1, 0xee, 0xf3, 0xd4, 0xfd, 0xa9, 0x73, 0x9c, 0x65, 0x65,
+ 0xe1, 0xd4, 0x8f, 0x74, 0x9d, 0x97, 0x8e, 0x5b, 0xcd, 0x75, 0xf3, 0xd1,
+ 0x14, 0xd7, 0x51, 0xf9, 0xb2, 0x52, 0xc4, 0x77, 0xca, 0x0e, 0x5a, 0x0a,
+ 0xc7, 0x91, 0x2e, 0x15, 0x25, 0x4a, 0xf7, 0x96, 0xc1, 0x5d, 0x51, 0x34,
+ 0x70, 0x4c, 0xb5, 0xfa, 0x24, 0x99, 0x9e, 0x9f, 0x7c, 0xfa, 0x2d, 0xd5,
+ 0xbc, 0x8d, 0xeb, 0xeb, 0xeb, 0x66, 0x64, 0x9f, 0x4d, 0x87, 0x55, 0xde,
+ 0xe9, 0xa4, 0xe3, 0x71, 0x72, 0xf2, 0x21, 0xbd, 0xd4, 0x1b, 0xee, 0xd6,
+ 0x8f, 0xaf, 0x0f, 0x7f, 0x71, 0x1a, 0xf6, 0x3c, 0x5f, 0xbb, 0x5f, 0x3a,
+ 0x9d, 0x7f, 0x03, 0x79, 0x3a, 0x77, 0xa4, 0x90, 0xdd, 0x03, 0x00,
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
@@ -10939,9 +12244,5 @@ void hugehelp(void)
}
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 */
diff --git a/src/tool_hugehelp.h b/src/tool_hugehelp.h
index 06f73e540..d5880ac25 100644
--- a/src/tool_hugehelp.h
+++ b/src/tool_hugehelp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,9 +20,16 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
+#ifdef USE_MANUAL
void hugehelp(void);
+#else
+/* do nothing if not there */
+#define hugehelp()
+#endif
#endif /* HEADER_CURL_TOOL_HUGEHELP_H */
diff --git a/src/tool_libinfo.c b/src/tool_libinfo.c
index ef53fce34..801fd579f 100644
--- a/src/tool_libinfo.c
+++ b/src/tool_libinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -33,85 +35,90 @@
/* global variable definitions, for libcurl run-time info */
+static const char *no_protos = NULL;
+
curl_version_info_data *curlinfo = NULL;
-long built_in_protos = 0;
+const char * const *built_in_protos = &no_protos;
+
+size_t proto_count = 0;
-static struct proto_name_pattern {
- const char *proto_name;
- long proto_pattern;
+const char *proto_file = NULL;
+const char *proto_ftp = NULL;
+const char *proto_ftps = NULL;
+const char *proto_http = NULL;
+const char *proto_https = NULL;
+const char *proto_rtsp = NULL;
+const char *proto_scp = NULL;
+const char *proto_sftp = NULL;
+const char *proto_tftp = NULL;
+
+static struct proto_name_tokenp {
+ const char *proto_name;
+ const char **proto_tokenp;
} const possibly_built_in[] = {
- { "dict", CURLPROTO_DICT },
- { "file", CURLPROTO_FILE },
- { "ftp", CURLPROTO_FTP },
- { "ftps", CURLPROTO_FTPS },
- { "gopher", CURLPROTO_GOPHER },
- { "gophers",CURLPROTO_GOPHERS},
- { "http", CURLPROTO_HTTP },
- { "https", CURLPROTO_HTTPS },
- { "imap", CURLPROTO_IMAP },
- { "imaps", CURLPROTO_IMAPS },
- { "ldap", CURLPROTO_LDAP },
- { "ldaps", CURLPROTO_LDAPS },
- { "mqtt", CURLPROTO_MQTT },
- { "pop3", CURLPROTO_POP3 },
- { "pop3s", CURLPROTO_POP3S },
- { "rtmp", CURLPROTO_RTMP },
- { "rtmps", CURLPROTO_RTMPS },
- { "rtsp", CURLPROTO_RTSP },
- { "scp", CURLPROTO_SCP },
- { "sftp", CURLPROTO_SFTP },
- { "smb", CURLPROTO_SMB },
- { "smbs", CURLPROTO_SMBS },
- { "smtp", CURLPROTO_SMTP },
- { "smtps", CURLPROTO_SMTPS },
- { "telnet", CURLPROTO_TELNET },
- { "tftp", CURLPROTO_TFTP },
- { NULL, 0 }
+ { "file", &proto_file },
+ { "ftp", &proto_ftp },
+ { "ftps", &proto_ftps },
+ { "http", &proto_http },
+ { "https", &proto_https },
+ { "rtsp", &proto_rtsp },
+ { "scp", &proto_scp },
+ { "sftp", &proto_sftp },
+ { "tftp", &proto_tftp },
+ { NULL, NULL }
};
/*
* libcurl_info_init: retrieves run-time information about libcurl,
* setting a global pointer 'curlinfo' to libcurl's run-time info
- * struct, and a global bit pattern 'built_in_protos' composed of
- * CURLPROTO_* bits indicating which protocols are actually built
- * into library being used.
+ * struct, count protocols and flag those we are interested in.
*/
CURLcode get_libcurl_info(void)
{
- const char *const *proto;
+ CURLcode result = CURLE_OK;
/* Pointer to libcurl's run-time version information */
curlinfo = curl_version_info(CURLVERSION_NOW);
if(!curlinfo)
return CURLE_FAILED_INIT;
- /* Build CURLPROTO_* bit pattern with libcurl's built-in protocols */
- built_in_protos = 0;
if(curlinfo->protocols) {
- for(proto = curlinfo->protocols; *proto; proto++) {
- struct proto_name_pattern const *p;
- for(p = possibly_built_in; p->proto_name; p++) {
- if(curl_strequal(*proto, p->proto_name)) {
- built_in_protos |= p->proto_pattern;
+ const char *const *builtin;
+ const struct proto_name_tokenp *p;
+
+ built_in_protos = curlinfo->protocols;
+
+ for(builtin = built_in_protos; !result && *builtin; builtin++) {
+ /* Identify protocols we are interested in. */
+ for(p = possibly_built_in; p->proto_name; p++)
+ if(curl_strequal(p->proto_name, *builtin)) {
+ *p->proto_tokenp = *builtin;
break;
}
- }
}
+ proto_count = builtin - built_in_protos;
}
return CURLE_OK;
}
-/*
- * scheme2protocol() returns the protocol bit for the specified URL scheme
+/* Tokenize a protocol name.
+ * Return the address of the protocol name listed by the library, or NULL if
+ * not found.
+ * Although this may seem useless, this always returns the same address for
+ * a given protocol and thus allows comparing pointers rather than strings.
+ * In addition, the returned pointer is not deallocated until the program ends.
*/
-long scheme2protocol(const char *scheme)
+
+const char *proto_token(const char *proto)
{
- struct proto_name_pattern const *p;
- for(p = possibly_built_in; p->proto_name; p++) {
- if(curl_strequal(scheme, p->proto_name))
- return p->proto_pattern;
- }
- return 0;
+ const char * const *builtin;
+
+ if(!proto)
+ return NULL;
+ for(builtin = built_in_protos; *builtin; builtin++)
+ if(curl_strequal(*builtin, proto))
+ break;
+ return *builtin;
}
diff --git a/src/tool_libinfo.h b/src/tool_libinfo.h
index 823ced733..40e5aff3e 100644
--- a/src/tool_libinfo.h
+++ b/src/tool_libinfo.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,15 +20,29 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
/* global variable declarations, for libcurl run-time info */
+
extern curl_version_info_data *curlinfo;
-extern long built_in_protos;
+extern const char * const *built_in_protos;
+extern size_t proto_count;
+
+extern const char *proto_file;
+extern const char *proto_ftp;
+extern const char *proto_ftps;
+extern const char *proto_http;
+extern const char *proto_https;
+extern const char *proto_rtsp;
+extern const char *proto_scp;
+extern const char *proto_sftp;
+extern const char *proto_tftp;
CURLcode get_libcurl_info(void);
-long scheme2protocol(const char *scheme);
+const char *proto_token(const char *proto);
#endif /* HEADER_CURL_TOOL_LIBINFO_H */
diff --git a/src/tool_listhelp.c b/src/tool_listhelp.c
index 448fc7cb3..6a2d10fb6 100644
--- a/src/tool_listhelp.c
+++ b/src/tool_listhelp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#include "tool_help.h"
@@ -62,7 +64,7 @@ const struct helptxt helptext[] = {
"Verify the status of the server cert via OCSP-staple",
CURLHELP_TLS},
{" --cert-type <type>",
- "Certificate type (DER/PEM/ENG)",
+ "Certificate type (DER/PEM/ENG/P12)",
CURLHELP_TLS},
{" --ciphers <list of ciphers>",
"SSL ciphers to use",
@@ -119,7 +121,7 @@ const struct helptxt helptext[] = {
"HTTP POST data, '@' allowed",
CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
{" --data-urlencode <data>",
- "HTTP POST data url encoded",
+ "HTTP POST data URL encoded",
CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
{" --delegation <LEVEL>",
"GSS-API delegation permission",
@@ -137,7 +139,7 @@ const struct helptxt helptext[] = {
"Inhibit using EPSV",
CURLHELP_FTP},
{" --disallow-username-in-url",
- "Disallow username in url",
+ "Disallow username in URL",
CURLHELP_CURL | CURLHELP_HTTP},
{" --dns-interface <interface>",
"Interface to use for DNS requests",
@@ -179,7 +181,7 @@ const struct helptxt helptext[] = {
"How long to wait for 100-continue",
CURLHELP_HTTP},
{"-f, --fail",
- "Fail silently (no output at all) on HTTP errors",
+ "Fail fast with no output on HTTP errors",
CURLHELP_IMPORTANT | CURLHELP_HTTP},
{" --fail-early",
"Fail on first transfer error, do not continue",
@@ -195,7 +197,7 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP | CURLHELP_UPLOAD},
{" --form-escape",
"Escape multipart form field/file names using backslash",
- CURLHELP_HTTP | CURLHELP_POST},
+ CURLHELP_HTTP | CURLHELP_UPLOAD},
{" --form-string <name=string>",
"Specify multipart MIME data",
CURLHELP_HTTP | CURLHELP_UPLOAD},
@@ -249,7 +251,7 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_FILE},
{"-H, --header <header/@file>",
"Pass custom header(s) to server",
- CURLHELP_HTTP},
+ CURLHELP_HTTP | CURLHELP_IMAP | CURLHELP_SMTP},
{"-h, --help <category>",
"Get help for commands",
CURLHELP_IMPORTANT | CURLHELP_CURL},
@@ -298,6 +300,9 @@ const struct helptxt helptext[] = {
{"-6, --ipv6",
"Resolve names to IPv6 addresses",
CURLHELP_CONNECTION | CURLHELP_DNS},
+ {" --json <data>",
+ "HTTP POST JSON",
+ CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
{"-j, --junk-session-cookies",
"Ignore session cookies read from file",
CURLHELP_HTTP},
@@ -382,6 +387,9 @@ const struct helptxt helptext[] = {
{"-N, --no-buffer",
"Disable buffering of the output stream",
CURLHELP_CURL},
+ {" --no-clobber",
+ "Do not overwrite files that already exist",
+ CURLHELP_CURL | CURLHELP_OUTPUT},
{" --no-keepalive",
"Disable TCP keepalive on the connection",
CURLHELP_CONNECTION},
@@ -553,6 +561,9 @@ const struct helptxt helptext[] = {
{"-r, --range <range>",
"Retrieve only the bytes within RANGE",
CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_FILE},
+ {" --rate <max request rate>",
+ "Request rate for serial transfers",
+ CURLHELP_CONNECTION},
{" --raw",
"Do HTTP \"raw\"; no transfer decoding",
CURLHELP_HTTP},
@@ -571,6 +582,9 @@ const struct helptxt helptext[] = {
{"-R, --remote-time",
"Set the remote file's time on the local output",
CURLHELP_OUTPUT},
+ {" --remove-on-error",
+ "Remove output file on errors",
+ CURLHELP_CURL},
{"-X, --request <method>",
"Specify request method to use",
CURLHELP_CONNECTION},
@@ -579,7 +593,7 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP},
{" --resolve <[+]host:port:addr[,addr]...>",
"Resolve the host+port to this address",
- CURLHELP_CONNECTION},
+ CURLHELP_CONNECTION | CURLHELP_DNS},
{" --retry <num>",
"Retry request if transient problems occur",
CURLHELP_CURL},
diff --git a/src/tool_main.c b/src/tool_main.c
index 7db2e9359..434979dea 100644
--- a/src/tool_main.c
+++ b/src/tool_main.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -31,6 +33,10 @@
#include <signal.h>
#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
#ifdef USE_NSS
#include <nspr.h>
#include <plarenas.h>
@@ -41,7 +47,6 @@
#include "curlx.h"
#include "tool_cfgable.h"
-#include "tool_convert.h"
#include "tool_doswin.h"
#include "tool_msgs.h"
#include "tool_operate.h"
@@ -79,29 +84,30 @@ int _CRT_glob = 0;
/* if we build a static library for unit tests, there is no main() function */
#ifndef UNITTESTS
+#if defined(HAVE_PIPE) && defined(HAVE_FCNTL)
/*
* Ensure that file descriptors 0, 1 and 2 (stdin, stdout, stderr) are
* open before starting to run. Otherwise, the first three network
* sockets opened by curl could be used for input sources, downloaded data
* or error logs as they will effectively be stdin, stdout and/or stderr.
+ *
+ * fcntl's F_GETFD instruction returns -1 if the file descriptor is closed,
+ * otherwise it returns "the file descriptor flags (which typically can only
+ * be FD_CLOEXEC, which is not set here).
*/
-static void main_checkfds(void)
+static int main_checkfds(void)
{
-#ifdef HAVE_PIPE
- int fd[2] = { STDIN_FILENO, STDIN_FILENO };
- while(fd[0] == STDIN_FILENO ||
- fd[0] == STDOUT_FILENO ||
- fd[0] == STDERR_FILENO ||
- fd[1] == STDIN_FILENO ||
- fd[1] == STDOUT_FILENO ||
- fd[1] == STDERR_FILENO)
- if(pipe(fd) < 0)
- return; /* Out of handles. This isn't really a big problem now, but
- will be when we try to create a socket later. */
- close(fd[0]);
- close(fd[1]);
-#endif
+ int fd[2];
+ while((fcntl(STDIN_FILENO, F_GETFD) == -1) ||
+ (fcntl(STDOUT_FILENO, F_GETFD) == -1) ||
+ (fcntl(STDERR_FILENO, F_GETFD) == -1))
+ if(pipe(fd))
+ return 1;
+ return 0;
}
+#else
+#define main_checkfds() 0
+#endif
#ifdef CURLDEBUG
static void memory_tracking_init(void)
@@ -211,7 +217,6 @@ static void main_free(struct GlobalConfig *config)
/* Cleanup the easy handle */
/* Main cleanup */
curl_global_cleanup();
- convert_cleanup();
#ifdef USE_NSS
if(PR_Initialized()) {
/* prevent valgrind from reporting still reachable mem from NSPR arenas */
@@ -259,7 +264,10 @@ int main(int argc, char *argv[])
}
#endif
- main_checkfds();
+ if(main_checkfds()) {
+ fprintf(stderr, "curl: out of file descriptors\n");
+ return CURLE_FAILED_INIT;
+ }
#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
(void)signal(SIGPIPE, SIG_IGN);
@@ -279,6 +287,11 @@ int main(int argc, char *argv[])
main_free(&global);
}
+#ifdef WIN32
+ /* Flush buffers of all streams opened in write or update mode */
+ fflush(NULL);
+#endif
+
#ifdef __NOVELL_LIBC__
if(!getenv("_IN_NETWARE_BASH_"))
tool_pressanykey();
diff --git a/src/tool_main.h b/src/tool_main.h
index 74226ce5a..a1fd1070e 100644
--- a/src/tool_main.h
+++ b/src/tool_main.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_msgs.c b/src/tool_msgs.c
index 184adbae9..a880a667e 100644
--- a/src/tool_msgs.c
+++ b/src/tool_msgs.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -57,7 +59,7 @@ static void voutf(struct GlobalConfig *config,
if(len > width) {
size_t cut = width-1;
- while(!ISSPACE(ptr[cut]) && cut) {
+ while(!ISBLANK(ptr[cut]) && cut) {
cut--;
}
if(0 == cut)
diff --git a/src/tool_msgs.h b/src/tool_msgs.h
index c2ab6064a..e35884e9d 100644
--- a/src/tool_msgs.h
+++ b/src/tool_msgs.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_operate.c b/src/tool_operate.c
index fe2c43b55..43c1c5e6c 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -90,8 +92,6 @@
CURLcode curl_easy_perform_ev(CURL *easy);
#endif
-#define CURLseparator "--_curl_--"
-
#ifndef O_BINARY
/* since O_BINARY as used in bitmasks, setting it to zero makes it usable in
source code but yet it doesn't ruin anything */
@@ -205,6 +205,7 @@ static curl_off_t VmsSpecialSize(const char *name,
struct per_transfer *transfers; /* first node */
static struct per_transfer *transfersl; /* last node */
+static long all_pers;
/* add_per_transfer creates a new 'per_transfer' node in the linked
list of transfers */
@@ -227,6 +228,8 @@ static CURLcode add_per_transfer(struct per_transfer **per)
}
*per = p;
all_xfers++; /* count total number of transfers added */
+ all_pers++;
+
return CURLE_OK;
}
@@ -254,6 +257,7 @@ static struct per_transfer *del_per_transfer(struct per_transfer *per)
transfersl = p;
free(per);
+ all_pers--;
return n;
}
@@ -265,20 +269,15 @@ static CURLcode pre_transfer(struct GlobalConfig *global,
struct_stat fileinfo;
CURLcode result = CURLE_OK;
- if(per->separator_err)
- fprintf(global->errors, "%s\n", per->separator_err);
- if(per->separator)
- printf("%s\n", per->separator);
-
if(per->uploadfile && !stdin_upload(per->uploadfile)) {
/* VMS Note:
*
* Reading binary from files can be a problem... Only FIXED, VAR
- * etc WITHOUT implied CC will work Others need a \n appended to a
- * line
+ * etc WITHOUT implied CC will work. Others need a \n appended to
+ * a line
*
- * - Stat gives a size but this is UNRELIABLE in VMS As a f.e. a
- * fixed file with implied CC needs to have a byte added for every
+ * - Stat gives a size but this is UNRELIABLE in VMS. E.g.
+ * a fixed file with implied CC needs to have a byte added for every
* record processed, this can be derived from Filesize & recordsize
* for VARiable record files the records need to be counted! for
* every record add 1 for linefeed and subtract 2 for the record
@@ -332,6 +331,45 @@ static CURLcode pre_transfer(struct GlobalConfig *global,
return result;
}
+#ifdef __AMIGA__
+static void AmigaSetComment(struct per_transfer *per,
+ CURLcode result)
+{
+ struct OutStruct *outs = &per->outs;
+ if(!result && outs->s_isreg && outs->filename) {
+ /* Set the url (up to 80 chars) as comment for the file */
+ if(strlen(per->this_url) > 78)
+ per->this_url[79] = '\0';
+ SetComment(outs->filename, per->this_url);
+ }
+}
+#else
+#define AmigaSetComment(x,y) Curl_nop_stmt
+#endif
+
+/* When doing serial transfers, we use a single fixed error area */
+static char global_errorbuffer[CURL_ERROR_SIZE];
+
+void single_transfer_cleanup(struct OperationConfig *config)
+{
+ if(config) {
+ struct State *state = &config->state;
+ if(state->urls) {
+ /* Free list of remaining URLs */
+ glob_cleanup(state->urls);
+ state->urls = NULL;
+ }
+ Curl_safefree(state->outfiles);
+ Curl_safefree(state->httpgetfields);
+ Curl_safefree(state->uploadfile);
+ if(state->inglob) {
+ /* Free list of globbed upload files */
+ glob_cleanup(state->inglob);
+ state->inglob = NULL;
+ }
+ }
+}
+
/*
* Call this after a transfer has completed.
*/
@@ -363,9 +401,9 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
else
#endif
if(!config->synthetic_error && result && global->showerror) {
+ const char *msg = per->errorbuffer;
fprintf(global->errors, "curl: (%d) %s\n", result,
- (per->errorbuffer[0]) ? per->errorbuffer :
- curl_easy_strerror(result));
+ (msg && msg[0]) ? msg : curl_easy_strerror(result));
if(result == CURLE_PEER_FAILED_VERIFICATION)
fputs(CURL_CA_CERT_ERRORMSG, global->errors);
}
@@ -383,7 +421,7 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
}
/* Set file extended attributes */
if(!result && config->xattr && outs->fopened && outs->stream) {
- int rc = fwrite_xattr(curl, fileno(outs->stream));
+ int rc = fwrite_xattr(curl, per->this_url, fileno(outs->stream));
if(rc)
warnf(config->global, "Error setting extended attributes on '%s': %s\n",
outs->filename, strerror(errno));
@@ -442,14 +480,15 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
retry = RETRY_CONNREFUSED;
}
else if((CURLE_OK == result) ||
- (config->failonerror &&
+ ((config->failonerror || config->failwithbody) &&
(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. */
- long protocol = 0;
- curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
- if((protocol == CURLPROTO_HTTP) || (protocol == CURLPROTO_HTTPS)) {
+ const char *scheme;
+ curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
+ scheme = proto_token(scheme);
+ if(scheme == proto_http || scheme == proto_https) {
/* This was HTTP(S) */
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
@@ -476,13 +515,13 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
}
} /* if CURLE_OK */
else if(result) {
- long protocol = 0;
+ const char *scheme;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
- curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
+ curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
+ scheme = proto_token(scheme);
- if((protocol == CURLPROTO_FTP || protocol == CURLPROTO_FTPS) &&
- response / 100 == 4)
+ if((scheme == proto_ftp || scheme == proto_ftps) && response / 100 == 4)
/*
* This is typically when the FTP server only allows a certain
* amount of users and we are not one of them. All 4xx codes
@@ -602,8 +641,14 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
if(global->showerror)
fprintf(global->errors, "curl: (%d) Failed writing body\n", result);
}
+ if(result && config->rm_partial) {
+ notef(global, "Removing output file: %s\n", outs->filename);
+ unlink(outs->filename);
+ }
}
+ AmigaSetComment(per, result);
+
/* File time can only be set _after_ the file has been closed */
if(!result && config->remote_time && outs->s_isreg && outs->filename) {
/* Ask libcurl if we got a remote file time */
@@ -633,41 +678,22 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
if(outs->alloc_filename)
free(outs->filename);
free(per->this_url);
- free(per->separator_err);
- free(per->separator);
free(per->outfile);
free(per->uploadfile);
+ if(global->parallel)
+ free(per->errorbuffer);
return result;
}
-static void single_transfer_cleanup(struct OperationConfig *config)
-{
- if(config) {
- struct State *state = &config->state;
- if(state->urls) {
- /* Free list of remaining URLs */
- glob_cleanup(state->urls);
- state->urls = NULL;
- }
- Curl_safefree(state->outfiles);
- Curl_safefree(state->httpgetfields);
- Curl_safefree(state->uploadfile);
- if(state->inglob) {
- /* Free list of globbed upload files */
- glob_cleanup(state->inglob);
- state->inglob = NULL;
- }
- }
-}
-
/*
- * Return the proto bit for the scheme used in the given URL
+ * Return the protocol token for the scheme used in the given URL
*/
-static long url_proto(char *url)
+static const char *url_proto(char *url)
{
CURLU *uh = curl_url();
- long proto = 0;
+ const char *proto = NULL;
+
if(uh) {
if(url) {
if(!curl_url_set(uh, CURLUPART_URL, url,
@@ -676,18 +702,17 @@ static long url_proto(char *url)
if(!curl_url_get(uh, CURLUPART_SCHEME, &schemep,
CURLU_DEFAULT_SCHEME) &&
schemep) {
- proto = scheme2protocol(schemep);
+ proto = proto_token(schemep);
curl_free(schemep);
}
}
}
curl_url_cleanup(uh);
}
- return proto;
+ return proto? proto: "???"; /* Never match if not found. */
}
/* create the next (singular) transfer */
-
static CURLcode single_transfer(struct GlobalConfig *global,
struct OperationConfig *config,
CURLSH *share,
@@ -780,7 +805,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
}
{
- int separator;
unsigned long urlnum;
if(!state->up && !infiles)
@@ -820,10 +844,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
else
urlnum = state->urlnum;
- /* if multiple files extracted to stdout, insert separators! */
- separator = ((!state->outfiles ||
- !strcmp(state->outfiles, "-")) && urlnum > 1);
-
if(state->up < state->infilenum) {
struct per_transfer *per = NULL;
struct OutStruct *outs;
@@ -832,7 +852,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
struct OutStruct *etag_save;
struct HdrCbData *hdrcbdata = NULL;
struct OutStruct etag_first;
- long use_proto;
+ const char *use_proto;
CURL *curl;
/* --etag-save */
@@ -927,6 +947,12 @@ static CURLcode single_transfer(struct GlobalConfig *global,
result = CURLE_OUT_OF_MEMORY;
break;
}
+ if(SetHTTPrequest(config, HTTPREQ_PUT, &config->httpreq)) {
+ Curl_safefree(per->uploadfile);
+ curl_easy_cleanup(curl);
+ result = CURLE_FAILED_INIT;
+ break;
+ }
}
*added = TRUE;
per->config = config;
@@ -1030,6 +1056,11 @@ static CURLcode single_transfer(struct GlobalConfig *global,
warnf(global, "bad output glob!\n");
break;
}
+ if(!*per->outfile) {
+ warnf(global, "output glob produces empty string!\n");
+ result = CURLE_WRITE_ERROR;
+ break;
+ }
}
if(config->output_dir && *config->output_dir) {
@@ -1100,12 +1131,10 @@ static CURLcode single_transfer(struct GlobalConfig *global,
/*
* We have specified a file to upload and it isn't "-".
*/
- char *nurl = add_file_name_to_url(per->this_url, per->uploadfile);
- if(!nurl) {
- result = CURLE_OUT_OF_MEMORY;
+ result = add_file_name_to_url(per->curl, &per->this_url,
+ per->uploadfile);
+ if(result)
break;
- }
- per->this_url = nurl;
}
else if(per->uploadfile && stdin_upload(per->uploadfile)) {
/* count to see if there are more than one auth bit set
@@ -1124,7 +1153,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
/*
* If the user has also selected --anyauth or --proxy-anyauth
- * we should warn him/her.
+ * we should warn them.
*/
if(config->proxyanyauth || (authbits>1)) {
warnf(global,
@@ -1159,52 +1188,23 @@ static CURLcode single_transfer(struct GlobalConfig *global,
global->isatty = orig_isatty;
}
- if(urlnum > 1 && !global->mute) {
- per->separator_err =
- aprintf("\n[%lu/%lu]: %s --> %s",
- state->li + 1, urlnum, per->this_url,
- per->outfile ? per->outfile : "<stdout>");
- if(separator)
- per->separator = aprintf("%s%s", CURLseparator, per->this_url);
- }
if(httpgetfields) {
- char *urlbuffer;
- /* Find out whether the url contains a file name */
- const char *pc = strstr(per->this_url, "://");
- char sep = '?';
- if(pc)
- pc += 3;
- else
- pc = per->this_url;
-
- pc = strrchr(pc, '/'); /* check for a slash */
-
- if(pc) {
- /* there is a slash present in the URL */
-
- if(strchr(pc, '?'))
- /* Ouch, there's already a question mark in the URL string, we
- then append the data with an ampersand separator instead! */
- sep = '&';
- }
- /*
- * Then append ? followed by the get fields to the url.
- */
- if(pc)
- urlbuffer = aprintf("%s%c%s", per->this_url, sep, httpgetfields);
- else
- /* Append / before the ? to create a well-formed url
- if the url contains a hostname only
- */
- urlbuffer = aprintf("%s/?%s", per->this_url, httpgetfields);
-
- if(!urlbuffer) {
- result = CURLE_OUT_OF_MEMORY;
- break;
+ CURLU *uh = curl_url();
+ if(uh) {
+ char *updated;
+ if(curl_url_set(uh, CURLUPART_URL, per->this_url,
+ CURLU_GUESS_SCHEME) ||
+ curl_url_set(uh, CURLUPART_QUERY, httpgetfields,
+ CURLU_APPENDQUERY) ||
+ curl_url_get(uh, CURLUPART_URL, &updated, CURLU_GUESS_SCHEME)) {
+ curl_url_cleanup(uh);
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+ Curl_safefree(per->this_url); /* free previous URL */
+ per->this_url = updated; /* use our new URL instead! */
+ curl_url_cleanup(uh);
}
-
- Curl_safefree(per->this_url); /* free previous URL */
- per->this_url = urlbuffer; /* use our new URL instead! */
}
if(!global->errors)
@@ -1226,14 +1226,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
if(result)
break;
- /* here */
use_proto = url_proto(per->this_url);
-#if 0
- if(!(use_proto & built_in_protos)) {
- warnf(global, "URL is '%s' but no support for the scheme\n",
- per->this_url);
- }
-#endif
if(!config->tcp_nodelay)
my_setopt(curl, CURLOPT_TCP_NODELAY, 0L);
@@ -1281,45 +1274,51 @@ static CURLcode single_transfer(struct GlobalConfig *global,
if(config->oauth_bearer)
my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->oauth_bearer);
- {
- my_setopt_str(curl, CURLOPT_PROXY, config->proxy);
- /* new in libcurl 7.5 */
- if(config->proxy)
- my_setopt_enum(curl, CURLOPT_PROXYTYPE, config->proxyver);
-
- my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd);
-
- /* new in libcurl 7.3 */
- my_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, config->proxytunnel?1L:0L);
-
- /* new in libcurl 7.52.0 */
- if(config->preproxy)
- my_setopt_str(curl, CURLOPT_PRE_PROXY, config->preproxy);
-
- /* new in libcurl 7.10.6 */
- if(config->proxyanyauth)
- my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
- (long)CURLAUTH_ANY);
- else if(config->proxynegotiate)
- my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
- (long)CURLAUTH_GSSNEGOTIATE);
- else if(config->proxyntlm)
- my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
- (long)CURLAUTH_NTLM);
- else if(config->proxydigest)
- my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
- (long)CURLAUTH_DIGEST);
- else if(config->proxybasic)
- my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
- (long)CURLAUTH_BASIC);
-
- /* new in libcurl 7.19.4 */
- my_setopt_str(curl, CURLOPT_NOPROXY, config->noproxy);
-
- my_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS,
- config->suppress_connect_headers?1L:0L);
+ my_setopt_str(curl, CURLOPT_PROXY, config->proxy);
+
+ if(config->proxy && result) {
+ errorf(global, "proxy support is disabled in this libcurl\n");
+ config->synthetic_error = TRUE;
+ result = CURLE_NOT_BUILT_IN;
+ break;
}
+ /* new in libcurl 7.5 */
+ if(config->proxy)
+ my_setopt_enum(curl, CURLOPT_PROXYTYPE, config->proxyver);
+
+ my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd);
+
+ /* new in libcurl 7.3 */
+ my_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, config->proxytunnel?1L:0L);
+
+ /* new in libcurl 7.52.0 */
+ if(config->preproxy)
+ my_setopt_str(curl, CURLOPT_PRE_PROXY, config->preproxy);
+
+ /* new in libcurl 7.10.6 */
+ if(config->proxyanyauth)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_ANY);
+ else if(config->proxynegotiate)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_GSSNEGOTIATE);
+ else if(config->proxyntlm)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_NTLM);
+ else if(config->proxydigest)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_DIGEST);
+ else if(config->proxybasic)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_BASIC);
+
+ /* new in libcurl 7.19.4 */
+ my_setopt_str(curl, CURLOPT_NOPROXY, config->noproxy);
+
+ my_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS,
+ config->suppress_connect_headers?1L:0L);
+
my_setopt(curl, CURLOPT_FAILONERROR, config->failonerror?1L:0L);
my_setopt(curl, CURLOPT_REQUEST_TARGET, config->request_target);
my_setopt(curl, CURLOPT_UPLOAD, per->uploadfile?1L:0L);
@@ -1341,7 +1340,10 @@ static CURLcode single_transfer(struct GlobalConfig *global,
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, per->errorbuffer);
+ if(!global->parallel) {
+ per->errorbuffer = global_errorbuffer;
+ my_setopt(curl, CURLOPT_ERRORBUFFER, global_errorbuffer);
+ }
my_setopt(curl, CURLOPT_TIMEOUT_MS, (long)(config->timeout * 1000));
switch(config->httpreq) {
@@ -1376,13 +1378,12 @@ static CURLcode single_transfer(struct GlobalConfig *global,
my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers);
- if(built_in_protos & (CURLPROTO_HTTP | CURLPROTO_RTSP)) {
+ if(proto_http || proto_rtsp) {
my_setopt_str(curl, CURLOPT_REFERER, config->referer);
my_setopt_str(curl, CURLOPT_USERAGENT, config->useragent);
}
- if(built_in_protos & CURLPROTO_HTTP) {
-
+ if(proto_http) {
long postRedir = 0;
my_setopt(curl, CURLOPT_FOLLOWLOCATION,
@@ -1432,9 +1433,10 @@ static CURLcode single_transfer(struct GlobalConfig *global,
return result;
}
- } /* (built_in_protos & CURLPROTO_HTTP) */
+ } /* (proto_http) */
- my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport);
+ if(proto_ftp)
+ my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport);
my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT,
config->low_speed_limit);
my_setopt(curl, CURLOPT_LOW_SPEED_TIME, config->low_speed_time);
@@ -1451,7 +1453,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
my_setopt_str(curl, CURLOPT_KEYPASSWD, config->key_passwd);
my_setopt_str(curl, CURLOPT_PROXY_KEYPASSWD, config->proxy_key_passwd);
- if(use_proto & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
+ if(use_proto == proto_scp || use_proto == proto_sftp) {
/* SSH and SSL private key uses same command-line option */
/* new in libcurl 7.16.1 */
@@ -1491,8 +1493,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
}
/* For the time being if --proxy-capath is not set then we use the
--capath value for it, if any. See #1257 */
- if((config->proxy_capath || config->capath) &&
- !tool_setopt_skip(CURLOPT_PROXY_CAPATH)) {
+ if(config->proxy_capath || config->capath) {
result = res_setopt_str(curl, CURLOPT_PROXY_CAPATH,
(config->proxy_capath ?
config->proxy_capath :
@@ -1687,8 +1688,9 @@ static CURLcode single_transfer(struct GlobalConfig *global,
my_setopt_enum(curl, CURLOPT_SSLVERSION,
config->ssl_version | config->ssl_version_max);
- my_setopt_enum(curl, CURLOPT_PROXY_SSLVERSION,
- config->proxy_ssl_version);
+ if(config->proxy)
+ my_setopt_enum(curl, CURLOPT_PROXY_SSLVERSION,
+ config->proxy_ssl_version);
{
long mask =
@@ -1722,7 +1724,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
if(config->path_as_is)
my_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
- if((use_proto & (CURLPROTO_SCP|CURLPROTO_SFTP)) &&
+ if((use_proto == proto_scp || use_proto == proto_sftp) &&
!config->insecure_ok) {
char *known = findfile(".ssh/known_hosts", FALSE);
if(known) {
@@ -1752,18 +1754,20 @@ static CURLcode single_transfer(struct GlobalConfig *global,
if(config->cookies) {
struct curlx_dynbuf cookies;
struct curl_slist *cl;
- CURLcode ret;
/* The maximum size needs to match MAX_NAME in cookie.h */
- curlx_dyn_init(&cookies, 4096);
+#define MAX_COOKIE_LINE 4096
+ curlx_dyn_init(&cookies, MAX_COOKIE_LINE);
for(cl = config->cookies; cl; cl = cl->next) {
if(cl == config->cookies)
- ret = curlx_dyn_addf(&cookies, "%s", cl->data);
+ result = curlx_dyn_addf(&cookies, "%s", cl->data);
else
- ret = curlx_dyn_addf(&cookies, ";%s", cl->data);
+ result = curlx_dyn_addf(&cookies, ";%s", cl->data);
- if(ret) {
- result = CURLE_OUT_OF_MEMORY;
+ if(result) {
+ warnf(global,
+ "skipped provided cookie, the cookie header "
+ "would go over %u bytes\n", MAX_COOKIE_LINE);
break;
}
}
@@ -1828,8 +1832,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
my_setopt_slist(curl, CURLOPT_TELNETOPTIONS, config->telnet_options);
/* new in libcurl 7.7: */
- my_setopt_str(curl, CURLOPT_RANDOM_FILE, config->random_file);
- my_setopt_str(curl, CURLOPT_EGDSOCKET, config->egd_file);
my_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS,
(long)(config->connecttimeout * 1000));
@@ -1932,7 +1934,9 @@ static CURLcode single_transfer(struct GlobalConfig *global,
my_setopt(curl, CURLOPT_FTP_SKIP_PASV_IP, config->ftp_skip_ip?1L:0L);
/* curl 7.15.1 */
- my_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long)config->ftp_filemethod);
+ if(proto_ftp)
+ my_setopt(curl, CURLOPT_FTP_FILEMETHOD,
+ (long)config->ftp_filemethod);
/* curl 7.15.2 */
if(config->localport) {
@@ -1967,7 +1971,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
my_setopt(curl, CURLOPT_TCP_KEEPALIVE, 0L);
/* curl 7.20.0 */
- if(config->tftp_blksize)
+ if(config->tftp_blksize && proto_tftp)
my_setopt(curl, CURLOPT_TFTP_BLKSIZE, config->tftp_blksize);
if(config->mail_from)
@@ -1988,9 +1992,10 @@ static CURLcode single_transfer(struct GlobalConfig *global,
my_setopt(curl, CURLOPT_NEW_FILE_PERMS, config->create_file_mode);
if(config->proto_present)
- my_setopt_flags(curl, CURLOPT_PROTOCOLS, config->proto);
+ my_setopt_str(curl, CURLOPT_PROTOCOLS_STR, config->proto_str);
if(config->proto_redir_present)
- my_setopt_flags(curl, CURLOPT_REDIR_PROTOCOLS, config->proto_redir);
+ my_setopt_str(curl, CURLOPT_REDIR_PROTOCOLS_STR,
+ config->proto_redir_str);
if(config->content_disposition
&& (urlnode->flags & GETOUT_USEREMOTE))
@@ -2053,10 +2058,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
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);
}
@@ -2083,7 +2084,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
(long)(config->expect100timeout*1000));
/* new in 7.48.0 */
- if(config->tftp_no_options)
+ if(config->tftp_no_options && proto_tftp)
my_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L);
/* new in 7.59.0 */
@@ -2146,6 +2147,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
}
break;
}
+ Curl_safefree(state->outfiles);
if(!*added || result) {
*added = FALSE;
@@ -2171,11 +2173,14 @@ static CURLcode add_parallel_transfers(struct GlobalConfig *global,
CURLcode result = CURLE_OK;
CURLMcode mcode;
bool sleeping = FALSE;
+ char *errorbuf;
*addedp = FALSE;
*morep = FALSE;
- result = create_transfer(global, share, addedp);
- if(result)
- return result;
+ if(all_pers < (global->parallel_max*2)) {
+ result = create_transfer(global, share, addedp);
+ if(result)
+ return result;
+ }
for(per = transfers; per && (all_added < global->parallel_max);
per = per->next) {
bool getadded = FALSE;
@@ -2187,11 +2192,16 @@ static CURLcode add_parallel_transfers(struct GlobalConfig *global,
sleeping = TRUE;
continue;
}
+ per->added = TRUE;
result = pre_transfer(global, per);
if(result)
return result;
+ errorbuf = malloc(CURL_ERROR_SIZE);
+ if(!errorbuf)
+ return CURLE_OUT_OF_MEMORY;
+
/* parallel connect means that we don't set PIPEWAIT since pipewait
will make libcurl prefer multiplexing */
(void)curl_easy_setopt(per->curl, CURLOPT_PIPEWAIT,
@@ -2202,12 +2212,20 @@ static CURLcode add_parallel_transfers(struct GlobalConfig *global,
(void)curl_easy_setopt(per->curl, CURLOPT_NOPROGRESS, 0L);
mcode = curl_multi_add_handle(multi, per->curl);
- if(mcode)
- return CURLE_OUT_OF_MEMORY;
+ if(mcode) {
+ DEBUGASSERT(mcode == CURLM_OUT_OF_MEMORY);
+ result = CURLE_OUT_OF_MEMORY;
+ }
- result = create_transfer(global, share, &getadded);
- if(result)
+ if(!result)
+ result = create_transfer(global, share, &getadded);
+ if(result) {
+ free(errorbuf);
return result;
+ }
+ errorbuf[0] = 0;
+ (void)curl_easy_setopt(per->curl, CURLOPT_ERRORBUFFER, errorbuf);
+ per->errorbuffer = errorbuf;
per->added = TRUE;
all_added++;
*addedp = TRUE;
@@ -2281,8 +2299,9 @@ static CURLcode parallel_transfers(struct GlobalConfig *global,
curl_multi_remove_handle(multi, easy);
if(ended->abort && tres == CURLE_ABORTED_BY_CALLBACK) {
- msnprintf(ended->errorbuffer, sizeof(ended->errorbuffer),
- "Transfer aborted due to critical error in another transfer");
+ msnprintf(ended->errorbuffer, CURL_ERROR_SIZE,
+ "Transfer aborted due to critical error "
+ "in another transfer");
}
tres = post_per_transfer(global, ended, tres, &retry, &delay);
progress_finalize(ended); /* before it goes away */
@@ -2365,19 +2384,20 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
}
for(per = transfers; per;) {
bool retry;
- long delay;
+ long delay_ms;
bool bailout = FALSE;
+ struct timeval start;
result = pre_transfer(global, per);
if(result)
break;
-#ifndef CURL_DISABLE_LIBCURL_OPTION
if(global->libcurl) {
result = easysrc_perform();
if(result)
break;
}
-#endif
+
+ start = tvnow();
#ifdef CURLDEBUG
if(global->test_event_based)
result = curl_easy_perform_ev(per->curl);
@@ -2385,9 +2405,9 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
#endif
result = curl_easy_perform(per->curl);
- returncode = post_per_transfer(global, per, result, &retry, &delay);
+ returncode = post_per_transfer(global, per, result, &retry, &delay_ms);
if(retry) {
- tool_go_sleep(delay);
+ tool_go_sleep(delay_ms);
continue;
}
@@ -2405,6 +2425,18 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
if(bailout)
break;
+
+ if(per && global->ms_per_transfer) {
+ /* how long time did the most recent transfer take in number of
+ milliseconds */
+ long milli = tvdiff(tvnow(), start);
+ if(milli < global->ms_per_transfer) {
+ notef(global, "Transfer took %ld ms, waits %ldms as set by --rate\n",
+ milli, global->ms_per_transfer - milli);
+ /* The transfer took less time than wanted. Wait a little. */
+ tool_go_sleep(global->ms_per_transfer - milli);
+ }
+ }
}
if(returncode)
/* returncode errors have priority */
@@ -2454,8 +2486,10 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
*/
result = curl_easy_getinfo(curltls, CURLINFO_TLS_SSL_PTR,
&tls_backend_info);
- if(result)
+ if(result) {
+ curl_easy_cleanup(curltls);
return result;
+ }
/* Set the CA cert locations specified in the environment. For Windows if
* no environment-specified filename is found then check for CA bundle
@@ -2472,6 +2506,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
config->cacert = strdup(env);
if(!config->cacert) {
curl_free(env);
+ curl_easy_cleanup(curltls);
errorf(global, "out of memory\n");
return CURLE_OUT_OF_MEMORY;
}
@@ -2482,6 +2517,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
config->capath = strdup(env);
if(!config->capath) {
curl_free(env);
+ curl_easy_cleanup(curltls);
helpf(global->errors, "out of memory\n");
return CURLE_OUT_OF_MEMORY;
}
@@ -2493,6 +2529,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
config->cacert = strdup(env);
if(!config->cacert) {
curl_free(env);
+ curl_easy_cleanup(curltls);
errorf(global, "out of memory\n");
return CURLE_OUT_OF_MEMORY;
}
@@ -2625,16 +2662,16 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
tool_list_engines();
else if(res == PARAM_LIBCURL_UNSUPPORTED_PROTOCOL)
result = CURLE_UNSUPPORTED_PROTOCOL;
+ else if(res == PARAM_READ_ERROR)
+ result = CURLE_READ_ERROR;
else
result = CURLE_FAILED_INIT;
}
else {
-#ifndef CURL_DISABLE_LIBCURL_OPTION
if(global->libcurl) {
/* Initialise the libcurl source output */
result = easysrc_init();
}
-#endif
/* Perform the main operations */
if(!result) {
@@ -2642,12 +2679,10 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
struct OperationConfig *operation = global->first;
CURLSH *share = curl_share_init();
if(!share) {
-#ifndef CURL_DISABLE_LIBCURL_OPTION
if(global->libcurl) {
/* Cleanup the libcurl source output */
easysrc_cleanup();
}
-#endif
return CURLE_OUT_OF_MEMORY;
}
@@ -2671,7 +2706,6 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
result = run_all_transfers(global, share, result);
curl_share_cleanup(share);
-#ifndef CURL_DISABLE_LIBCURL_OPTION
if(global->libcurl) {
/* Cleanup the libcurl source output */
easysrc_cleanup();
@@ -2679,7 +2713,6 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
/* Dump the libcurl code if previously enabled */
dumpeasysrc(global);
}
-#endif
}
else
errorf(global, "out of memory\n");
diff --git a/src/tool_operate.h b/src/tool_operate.h
index 61994052f..c714da1bc 100644
--- a/src/tool_operate.h
+++ b/src/tool_operate.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#include "tool_cb_hdr.h"
@@ -50,7 +52,6 @@ struct per_transfer {
struct HdrCbData hdrcbdata;
long num_headers;
bool was_last_header_empty;
- char errorbuffer[CURL_ERROR_SIZE];
bool added; /* set TRUE when added to the multi handle */
time_t startat; /* when doing parallel transfers, this is a retry transfer
@@ -69,12 +70,13 @@ struct per_transfer {
bool ultotal_added;
/* NULL or malloced */
- char *separator_err;
- char *separator;
char *uploadfile;
+ char *errorbuffer; /* alloced and assigned while this is used for a
+ transfer */
};
CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]);
+void single_transfer_cleanup(struct OperationConfig *config);
extern struct per_transfer *transfers; /* first node */
diff --git a/src/tool_operhlp.c b/src/tool_operhlp.c
index 0a209bf65..eb58772fb 100644
--- a/src/tool_operhlp.c
+++ b/src/tool_operhlp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,8 +18,11 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
+#include "tool_operate.h"
#include "strcase.h"
@@ -28,7 +31,6 @@
#include "curlx.h"
#include "tool_cfgable.h"
-#include "tool_convert.h"
#include "tool_doswin.h"
#include "tool_operhlp.h"
@@ -50,6 +52,7 @@ void clean_getout(struct OperationConfig *config)
}
config->url_list = NULL;
}
+ single_transfer_cleanup(config);
}
bool output_expected(const char *url, const char *uploadfile)
@@ -72,61 +75,73 @@ bool stdin_upload(const char *uploadfile)
* Adds the file name to the URL if it doesn't already have one.
* url will be freed before return if the returned pointer is different
*/
-char *add_file_name_to_url(char *url, const char *filename)
+CURLcode add_file_name_to_url(CURL *curl, char **inurlp, const char *filename)
{
- /* If no file name part is given in the URL, we add this file name */
- char *ptr = strstr(url, "://");
- CURL *curl = curl_easy_init(); /* for url escaping */
- if(!curl)
- return NULL; /* error! */
- if(ptr)
- ptr += 3;
- else
- ptr = url;
- ptr = strrchr(ptr, '/');
- if(!ptr || !*++ptr) {
- /* The URL has no file name part, add the local file name. In order
- to be able to do so, we have to create a new URL in another
- buffer.*/
-
- /* We only want the part of the local path that is on the right
- side of the rightmost slash and backslash. */
- const char *filep = strrchr(filename, '/');
- char *file2 = strrchr(filep?filep:filename, '\\');
- char *encfile;
-
- if(file2)
- filep = file2 + 1;
- else if(filep)
- filep++;
- else
- filep = filename;
-
- /* URL encode the file name */
- encfile = curl_easy_escape(curl, filep, 0 /* use strlen */);
- if(encfile) {
- char *urlbuffer;
- if(ptr)
- /* there is a trailing slash on the URL */
- urlbuffer = aprintf("%s%s", url, encfile);
+ CURLcode result = CURLE_OUT_OF_MEMORY;
+ CURLU *uh = curl_url();
+ char *path = NULL;
+ if(uh) {
+ char *ptr;
+ if(curl_url_set(uh, CURLUPART_URL, *inurlp,
+ CURLU_GUESS_SCHEME|CURLU_NON_SUPPORT_SCHEME))
+ goto fail;
+ if(curl_url_get(uh, CURLUPART_PATH, &path, 0))
+ goto fail;
+
+ ptr = strrchr(path, '/');
+ if(!ptr || !*++ptr) {
+ /* The URL path has no file name part, add the local file name. In order
+ to be able to do so, we have to create a new URL in another buffer.*/
+
+ /* We only want the part of the local path that is on the right
+ side of the rightmost slash and backslash. */
+ const char *filep = strrchr(filename, '/');
+ char *file2 = strrchr(filep?filep:filename, '\\');
+ char *encfile;
+
+ if(file2)
+ filep = file2 + 1;
+ else if(filep)
+ filep++;
else
- /* there is no trailing slash on the URL */
- urlbuffer = aprintf("%s/%s", url, encfile);
-
- curl_free(encfile);
-
- if(!urlbuffer) {
- url = NULL;
- goto end;
+ filep = filename;
+
+ /* URL encode the file name */
+ encfile = curl_easy_escape(curl, filep, 0 /* use strlen */);
+ if(encfile) {
+ char *newpath;
+ char *newurl;
+ CURLUcode uerr;
+ if(ptr)
+ /* there is a trailing slash on the path */
+ newpath = aprintf("%s%s", path, encfile);
+ else
+ /* there is no trailing slash on the path */
+ newpath = aprintf("%s/%s", path, encfile);
+
+ curl_free(encfile);
+
+ if(!newpath)
+ goto fail;
+ uerr = curl_url_set(uh, CURLUPART_PATH, newpath, 0);
+ free(newpath);
+ if(uerr)
+ goto fail;
+ if(curl_url_get(uh, CURLUPART_URL, &newurl, CURLU_DEFAULT_SCHEME))
+ goto fail;
+ free(*inurlp);
+ *inurlp = newurl;
+ result = CURLE_OK;
}
-
- Curl_safefree(url);
- url = urlbuffer; /* use our new URL instead! */
}
+ else
+ /* nothing to do */
+ result = CURLE_OK;
}
- end:
- curl_easy_cleanup(curl);
- return url;
+ fail:
+ curl_url_cleanup(uh);
+ curl_free(path);
+ return result;
}
/* Extracts the name portion of the URL.
@@ -136,61 +151,65 @@ char *add_file_name_to_url(char *url, const char *filename)
CURLcode get_url_file_name(char **filename, const char *url)
{
const char *pc, *pc2;
+ CURLU *uh = curl_url();
+ char *path = NULL;
+
+ if(!uh)
+ return CURLE_OUT_OF_MEMORY;
*filename = NULL;
- /* Find and get the remote file name */
- pc = strstr(url, "://");
- if(pc)
- pc += 3;
- else
- pc = url;
-
- pc2 = strrchr(pc, '\\');
- pc = strrchr(pc, '/');
- if(pc2 && (!pc || pc < pc2))
- pc = pc2;
-
- if(pc)
- /* duplicate the string beyond the slash */
- pc++;
- else
- /* no slash => empty string */
- pc = "";
-
- *filename = strdup(pc);
- if(!*filename)
- return CURLE_OUT_OF_MEMORY;
+ if(!curl_url_set(uh, CURLUPART_URL, url, CURLU_GUESS_SCHEME) &&
+ !curl_url_get(uh, CURLUPART_PATH, &path, 0)) {
+ curl_url_cleanup(uh);
+
+ pc = strrchr(path, '/');
+ pc2 = strrchr(pc ? pc + 1 : path, '\\');
+ if(pc2)
+ pc = pc2;
+
+ if(pc)
+ /* duplicate the string beyond the slash */
+ pc++;
+ else
+ /* no slash => empty string */
+ pc = "";
+
+ *filename = strdup(pc);
+ curl_free(path);
+ if(!*filename)
+ return CURLE_OUT_OF_MEMORY;
#if defined(MSDOS) || defined(WIN32)
- {
- char *sanitized;
- SANITIZEcode sc = sanitize_file_name(&sanitized, *filename, 0);
- Curl_safefree(*filename);
- if(sc)
- return CURLE_URL_MALFORMAT;
- *filename = sanitized;
- }
+ {
+ char *sanitized;
+ SANITIZEcode sc = sanitize_file_name(&sanitized, *filename, 0);
+ Curl_safefree(*filename);
+ if(sc)
+ return CURLE_URL_MALFORMAT;
+ *filename = sanitized;
+ }
#endif /* MSDOS || WIN32 */
- /* 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
- * specific directory
- */
+ /* 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
+ * specific directory
+ */
#ifdef DEBUGBUILD
- {
- char *tdir = curlx_getenv("CURL_TESTDIR");
- if(tdir) {
- char buffer[512]; /* suitably large */
- msnprintf(buffer, sizeof(buffer), "%s/%s", tdir, *filename);
- Curl_safefree(*filename);
- *filename = strdup(buffer); /* clone the buffer */
- curl_free(tdir);
- if(!*filename)
- return CURLE_OUT_OF_MEMORY;
+ {
+ char *tdir = curlx_getenv("CURL_TESTDIR");
+ if(tdir) {
+ char *alt = aprintf("%s/%s", tdir, *filename);
+ Curl_safefree(*filename);
+ *filename = alt;
+ curl_free(tdir);
+ if(!*filename)
+ return CURLE_OUT_OF_MEMORY;
+ }
}
- }
#endif
-
- return CURLE_OK;
+ return CURLE_OK;
+ }
+ curl_url_cleanup(uh);
+ return CURLE_URL_MALFORMAT;
}
diff --git a/src/tool_operhlp.h b/src/tool_operhlp.h
index 482f6e50a..8018d1a67 100644
--- a/src/tool_operhlp.h
+++ b/src/tool_operhlp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -31,7 +33,7 @@ bool output_expected(const char *url, const char *uploadfile);
bool stdin_upload(const char *uploadfile);
-char *add_file_name_to_url(char *url, const char *filename);
+CURLcode add_file_name_to_url(CURL *curl, char **inurlp, const char *filename);
CURLcode get_url_file_name(char **filename, const char *url);
diff --git a/src/tool_panykey.c b/src/tool_panykey.c
index e570ca1b1..81feaba7e 100644
--- a/src/tool_panykey.c
+++ b/src/tool_panykey.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_panykey.h b/src/tool_panykey.h
index e1fb1ee9c..c5cc32260 100644
--- a/src/tool_panykey.h
+++ b/src/tool_panykey.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_paramhlp.c b/src/tool_paramhlp.c
index 8ac6cf53e..05afb8d3a 100644
--- a/src/tool_paramhlp.c
+++ b/src/tool_paramhlp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -32,6 +34,8 @@
#include "tool_getpass.h"
#include "tool_msgs.h"
#include "tool_paramhlp.h"
+#include "tool_libinfo.h"
+#include "tool_util.h"
#include "tool_version.h"
#include "dynbuf.h"
@@ -64,6 +68,7 @@ struct getout *new_getout(struct OperationConfig *config)
ParameterError file2string(char **bufp, FILE *file)
{
struct curlx_dynbuf dyn;
+ DEBUGASSERT(MAX_FILE2STRING < INT_MAX); /* needs to fit in an int later */
curlx_dyn_init(&dyn, MAX_FILE2STRING);
if(file) {
char buffer[256];
@@ -90,14 +95,22 @@ ParameterError file2memory(char **bufp, size_t *size, FILE *file)
if(file) {
size_t nread;
struct curlx_dynbuf dyn;
+ /* The size needs to fit in an int later */
+ DEBUGASSERT(MAX_FILE2MEMORY < INT_MAX);
curlx_dyn_init(&dyn, MAX_FILE2MEMORY);
do {
char buffer[4096];
nread = fread(buffer, 1, sizeof(buffer), file);
+ if(ferror(file)) {
+ curlx_dyn_free(&dyn);
+ *size = 0;
+ *bufp = NULL;
+ return PARAM_READ_ERROR;
+ }
if(nread)
if(curlx_dyn_addn(&dyn, buffer, nread))
return PARAM_NO_MEM;
- } while(nread);
+ } while(!feof(file));
*size = curlx_dyn_len(&dyn);
*bufp = curlx_dyn_ptr(&dyn);
}
@@ -108,21 +121,6 @@ ParameterError file2memory(char **bufp, size_t *size, FILE *file)
return PARAM_OK;
}
-void cleanarg(char *str)
-{
-#ifdef HAVE_WRITABLE_ARGV
- /* now that GetStr has copied the contents of nextarg, wipe the next
- * argument out so that the username:password isn't displayed in the
- * system process list */
- if(str) {
- size_t len = strlen(str);
- memset(str, ' ', len);
- }
-#else
- (void)str;
-#endif
-}
-
/*
* Parse the string and write the long in the given address. Return PARAM_OK
* on success, otherwise a parameter specific error enum.
@@ -220,7 +218,7 @@ ParameterError str2unummax(long *val, const char *str, long max)
* data.
*/
-static ParameterError str2double(double *val, const char *str, long max)
+static ParameterError str2double(double *val, const char *str, double max)
{
if(str) {
char *endptr;
@@ -253,7 +251,7 @@ static ParameterError str2double(double *val, const char *str, long max)
* data.
*/
-ParameterError str2udouble(double *valp, const char *str, long max)
+ParameterError str2udouble(double *valp, const char *str, double max)
{
double value;
ParameterError result = str2double(&value, str, max);
@@ -267,8 +265,55 @@ ParameterError str2udouble(double *valp, const char *str, long max)
}
/*
- * Parse the string and modify the long in the given address. Return
- * non-zero on failure, zero on success.
+ * Implement protocol sets in null-terminated array of protocol name pointers.
+ */
+
+/* Return index of prototype token in set, card(set) if not found.
+ Can be called with proto == NULL to get card(set). */
+static size_t protoset_index(const char * const *protoset, const char *proto)
+{
+ const char * const *p = protoset;
+
+ DEBUGASSERT(proto == proto_token(proto)); /* Ensure it is tokenized. */
+
+ for(; *p; p++)
+ if(proto == *p)
+ break;
+ return p - protoset;
+}
+
+/* Include protocol token in set. */
+static void protoset_set(const char **protoset, const char *proto)
+{
+ if(proto) {
+ size_t n = protoset_index(protoset, proto);
+
+ if(!protoset[n]) {
+ DEBUGASSERT(n < proto_count);
+ protoset[n] = proto;
+ protoset[n + 1] = NULL;
+ }
+ }
+}
+
+/* Exclude protocol token from set. */
+static void protoset_clear(const char **protoset, const char *proto)
+{
+ if(proto) {
+ size_t n = protoset_index(protoset, proto);
+
+ if(protoset[n]) {
+ size_t m = protoset_index(protoset, NULL) - 1;
+
+ protoset[n] = protoset[m];
+ protoset[m] = NULL;
+ }
+ }
+}
+
+/*
+ * Parse the string and provide an allocated libcurl compatible protocol
+ * string output. Return non-zero on failure, zero on success.
*
* The string is a list of protocols
*
@@ -277,48 +322,42 @@ ParameterError str2udouble(double *valp, const char *str, long max)
* data.
*/
-long proto2num(struct OperationConfig *config, long *val, const char *str)
+#define MAX_PROTOSTRING (64*11) /* Enough room for 64 10-chars proto names. */
+
+ParameterError proto2num(struct OperationConfig *config,
+ const char * const *val, char **ostr, const char *str)
{
char *buffer;
const char *sep = ",";
char *token;
+ const char **protoset;
+ struct curlx_dynbuf obuf;
+ size_t proto;
+ CURLcode result;
- static struct sprotos {
- const char *name;
- long bit;
- } const protos[] = {
- { "all", CURLPROTO_ALL },
- { "http", CURLPROTO_HTTP },
- { "https", CURLPROTO_HTTPS },
- { "ftp", CURLPROTO_FTP },
- { "ftps", CURLPROTO_FTPS },
- { "scp", CURLPROTO_SCP },
- { "sftp", CURLPROTO_SFTP },
- { "telnet", CURLPROTO_TELNET },
- { "ldap", CURLPROTO_LDAP },
- { "ldaps", CURLPROTO_LDAPS },
- { "dict", CURLPROTO_DICT },
- { "file", CURLPROTO_FILE },
- { "tftp", CURLPROTO_TFTP },
- { "imap", CURLPROTO_IMAP },
- { "imaps", CURLPROTO_IMAPS },
- { "pop3", CURLPROTO_POP3 },
- { "pop3s", CURLPROTO_POP3S },
- { "smtp", CURLPROTO_SMTP },
- { "smtps", CURLPROTO_SMTPS },
- { "rtsp", CURLPROTO_RTSP },
- { "gopher", CURLPROTO_GOPHER },
- { "smb", CURLPROTO_SMB },
- { "smbs", CURLPROTO_SMBS },
- { NULL, 0 }
- };
+ curlx_dyn_init(&obuf, MAX_PROTOSTRING);
if(!str)
- return 1;
+ return PARAM_OPTION_AMBIGUOUS;
buffer = strdup(str); /* because strtok corrupts it */
if(!buffer)
- return 1;
+ return PARAM_NO_MEM;
+
+ protoset = malloc((proto_count + 1) * sizeof(*protoset));
+ if(!protoset) {
+ free(buffer);
+ return PARAM_NO_MEM;
+ }
+
+ /* Preset protocol set with default values. */
+ protoset[0] = NULL;
+ for(; *val; val++) {
+ const char *p = proto_token(*val);
+
+ if(p)
+ protoset_set(protoset, p);
+ }
/* Allow strtok() here since this isn't used threaded */
/* !checksrc! disable BANNEDFUNC 2 */
@@ -327,8 +366,6 @@ long proto2num(struct OperationConfig *config, long *val, const char *str)
token = strtok(NULL, sep)) {
enum e_action { allow, deny, set } action = allow;
- struct sprotos const *pp;
-
/* Process token modifiers */
while(!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
switch (*token++) {
@@ -342,38 +379,62 @@ long proto2num(struct OperationConfig *config, long *val, const char *str)
action = allow;
break;
default: /* Includes case of terminating NULL */
- Curl_safefree(buffer);
- return 1;
+ free(buffer);
+ free((char *) protoset);
+ return PARAM_BAD_USE;
}
}
- for(pp = protos; pp->name; pp++) {
- if(curl_strequal(token, pp->name)) {
+ if(curl_strequal(token, "all")) {
+ switch(action) {
+ case deny:
+ protoset[0] = NULL;
+ break;
+ case allow:
+ case set:
+ memcpy((char *) protoset,
+ built_in_protos, (proto_count + 1) * sizeof(*protoset));
+ break;
+ }
+ }
+ else {
+ const char *p = proto_token(token);
+
+ if(p)
switch(action) {
case deny:
- *val &= ~(pp->bit);
- break;
- case allow:
- *val |= pp->bit;
+ protoset_clear(protoset, p);
break;
case set:
- *val = pp->bit;
+ protoset[0] = NULL;
+ /* FALLTHROUGH */
+ case allow:
+ protoset_set(protoset, p);
break;
}
- break;
+ else { /* unknown protocol */
+ /* If they have specified only this protocol, we say treat it as
+ if no protocols are allowed */
+ if(action == set)
+ protoset[0] = NULL;
+ warnf(config->global, "unrecognized protocol '%s'\n", token);
}
}
-
- if(!(pp->name)) { /* unknown protocol */
- /* If they have specified only this protocol, we say treat it as
- if no protocols are allowed */
- if(action == set)
- *val = 0;
- warnf(config->global, "unrecognized protocol '%s'\n", token);
- }
}
- Curl_safefree(buffer);
- return 0;
+ free(buffer);
+
+ /* We need the protocols in alphabetic order for CI tests requirements. */
+ qsort((char *) protoset, protoset_index(protoset, NULL), sizeof(*protoset),
+ struplocompare4sort);
+
+ result = curlx_dyn_addn(&obuf, "", 0);
+ for(proto = 0; protoset[proto] && !result; proto++)
+ result = curlx_dyn_addf(&obuf, "%s,", protoset[proto]);
+ free((char *) protoset);
+ curlx_dyn_setlen(&obuf, curlx_dyn_len(&obuf) - 1);
+ *ostr = curlx_dyn_ptr(&obuf);
+
+ return *ostr ? PARAM_OK : PARAM_NO_MEM;
}
/**
@@ -384,16 +445,13 @@ long proto2num(struct OperationConfig *config, long *val, const char *str)
* @return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL protocol not supported
* @return PARAM_REQUIRES_PARAMETER missing parameter
*/
-int check_protocol(const char *str)
+ParameterError check_protocol(const char *str)
{
- const char * const *pp;
- const curl_version_info_data *curlinfo = curl_version_info(CURLVERSION_NOW);
if(!str)
return PARAM_REQUIRES_PARAMETER;
- for(pp = curlinfo->protocols; *pp; pp++) {
- if(curl_strequal(*pp, str))
- return PARAM_OK;
- }
+
+ if(proto_token(str))
+ return PARAM_OK;
return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL;
}
@@ -548,11 +606,45 @@ static char *my_useragent(void)
return strdup(CURL_NAME "/" CURL_VERSION);
}
+#define isheadersep(x) ((((x)==':') || ((x)==';')))
+
+/*
+ * inlist() returns true if the given 'checkfor' header is present in the
+ * header list.
+ */
+static bool inlist(const struct curl_slist *head,
+ const char *checkfor)
+{
+ size_t thislen = strlen(checkfor);
+ DEBUGASSERT(thislen);
+ DEBUGASSERT(checkfor[thislen-1] != ':');
+
+ for(; head; head = head->next) {
+ if(curl_strnequal(head->data, checkfor, thislen) &&
+ isheadersep(head->data[thislen]) )
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
CURLcode get_args(struct OperationConfig *config, const size_t i)
{
CURLcode result = CURLE_OK;
bool last = (config->next ? FALSE : TRUE);
+ if(config->jsoned) {
+ ParameterError err = PARAM_OK;
+ /* --json also implies json Content-Type: and Accept: headers - if
+ they are not set with -H */
+ if(!inlist(config->headers, "Content-Type"))
+ err = add2list(&config->headers, "Content-Type: application/json");
+ if(!err && !inlist(config->headers, "Accept"))
+ err = add2list(&config->headers, "Accept: application/json");
+ if(err)
+ return CURLE_OUT_OF_MEMORY;
+ }
+
/* Check we have a password for the given host user */
if(config->userpwd && !config->oauth_bearer) {
result = checkpasswd("host", i, last, &config->userpwd);
diff --git a/src/tool_paramhlp.h b/src/tool_paramhlp.h
index 32b0fc49b..7d68583e6 100644
--- a/src/tool_paramhlp.h
+++ b/src/tool_paramhlp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,8 +20,11 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
+#include "tool_libinfo.h"
struct getout *new_getout(struct OperationConfig *config);
@@ -29,17 +32,17 @@ ParameterError file2string(char **bufp, FILE *file);
ParameterError file2memory(char **bufp, size_t *size, FILE *file);
-void cleanarg(char *str);
-
ParameterError str2num(long *val, const char *str);
ParameterError str2unum(long *val, const char *str);
ParameterError oct2nummax(long *val, const char *str, long max);
ParameterError str2unummax(long *val, const char *str, long max);
-ParameterError str2udouble(double *val, const char *str, long max);
+ParameterError str2udouble(double *val, const char *str, double max);
-long proto2num(struct OperationConfig *config, long *val, const char *str);
+ParameterError proto2num(struct OperationConfig *config,
+ const char * const *val, char **obuf,
+ const char *str);
-int check_protocol(const char *str);
+ParameterError check_protocol(const char *str);
ParameterError str2offset(curl_off_t *val, const char *str);
diff --git a/src/tool_parsecfg.c b/src/tool_parsecfg.c
index ddb345c6d..a166757f8 100644
--- a/src/tool_parsecfg.c
+++ b/src/tool_parsecfg.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -84,15 +86,10 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
int rc = 0;
struct OperationConfig *operation = global->last;
char *pathalloc = NULL;
-#ifdef WIN32
-#define DOTSCORE TRUE /* look for underscore-prefixed name too */
-#else
-#define DOTSCORE FALSE
-#endif
if(!filename) {
/* NULL means load .curlrc from homedir! */
- char *curlrc = findfile(".curlrc", DOTSCORE);
+ char *curlrc = findfile(".curlrc", CURLRC_DOTSCORE);
if(curlrc) {
file = fopen(curlrc, FOPEN_READTEXT);
if(!file) {
diff --git a/src/tool_parsecfg.h b/src/tool_parsecfg.h
index 5748c87e7..90af61961 100644
--- a/src/tool_parsecfg.h
+++ b/src/tool_parsecfg.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_progress.c b/src/tool_progress.c
index 031f8b8d4..266177b6e 100644
--- a/src/tool_progress.c
+++ b/src/tool_progress.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#include "tool_operate.h"
@@ -159,8 +161,8 @@ static bool indexwrapped;
static struct speedcount speedstore[SPEEDCNT];
/*
- |DL% UL% Dled Uled Xfers Live Qd Total Current Left Speed
- | 6 -- 9.9G 0 2 2 0 0:00:40 0:00:02 0:00:37 4087M
+ |DL% UL% Dled Uled Xfers Live Total Current Left Speed
+ | 6 -- 9.9G 0 2 2 0:00:40 0:00:02 0:00:37 4087M
*/
bool progress_meter(struct GlobalConfig *global,
struct timeval *start,
@@ -179,7 +181,7 @@ bool progress_meter(struct GlobalConfig *global,
if(!header) {
header = TRUE;
- fputs("DL% UL% Dled Uled Xfers Live Qd "
+ fputs("DL% UL% Dled Uled Xfers Live "
"Total Current Left Speed\n",
global->errors);
}
@@ -197,7 +199,6 @@ bool progress_meter(struct GlobalConfig *global,
bool dlknown = TRUE;
bool ulknown = TRUE;
curl_off_t all_running = 0; /* in progress */
- curl_off_t all_queued = 0; /* pending */
curl_off_t speed = 0;
unsigned int i;
stamp = now;
@@ -223,9 +224,7 @@ bool progress_meter(struct GlobalConfig *global,
all_ultotal += per->ultotal;
per->ultotal_added = TRUE;
}
- if(!per->added)
- all_queued++;
- else
+ if(per->added)
all_running++;
}
if(dlknown && all_dltotal)
@@ -266,6 +265,8 @@ bool progress_meter(struct GlobalConfig *global,
dl = all_dlnow;
ul = all_ulnow;
}
+ if(!deltams) /* no division by zero please */
+ deltams++;
dls = (curl_off_t)((double)dl / ((double)deltams/1000.0));
uls = (curl_off_t)((double)ul / ((double)deltams/1000.0));
speed = dls > uls ? dls : uls;
@@ -292,8 +293,7 @@ bool progress_meter(struct GlobalConfig *global,
"%s " /* Uled */
"%5" CURL_FORMAT_CURL_OFF_T " " /* Xfers */
"%5" CURL_FORMAT_CURL_OFF_T " " /* Live */
- "%5" CURL_FORMAT_CURL_OFF_T " " /* Queued */
- "%s " /* Total time */
+ " %s " /* Total time */
"%s " /* Current time */
"%s " /* Time left */
"%s " /* Speed */
@@ -305,7 +305,6 @@ bool progress_meter(struct GlobalConfig *global,
max5data(all_ulnow, buffer[1]),
all_xfers,
all_running,
- all_queued,
time_total,
time_spent,
time_left,
diff --git a/src/tool_progress.h b/src/tool_progress.h
index da9bdedd2..5f68474ff 100644
--- a/src/tool_progress.h
+++ b/src/tool_progress.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_sdecls.h b/src/tool_sdecls.h
index 543a953fd..70e44d4ed 100644
--- a/src/tool_sdecls.h
+++ b/src/tool_sdecls.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -127,7 +129,8 @@ typedef enum {
HTTPREQ_GET,
HTTPREQ_HEAD,
HTTPREQ_MIMEPOST,
- HTTPREQ_SIMPLEPOST
+ HTTPREQ_SIMPLEPOST,
+ HTTPREQ_PUT
} HttpReq;
diff --git a/src/tool_setopt.c b/src/tool_setopt.c
index 4c86eb321..3db2fe3c6 100644
--- a/src/tool_setopt.c
+++ b/src/tool_setopt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -30,8 +32,8 @@
#include "tool_cfgable.h"
#include "tool_easysrc.h"
#include "tool_setopt.h"
-#include "tool_convert.h"
#include "tool_msgs.h"
+#include "dynbuf.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -144,35 +146,6 @@ const struct NameValue setopt_nv_CURL_NETRC[] = {
NVEND,
};
-/* These mappings essentially triplicated - see
- * tool_libinfo.c and tool_paramhlp.c */
-const struct NameValue setopt_nv_CURLPROTO[] = {
- NV(CURLPROTO_ALL), /* combination */
- NV(CURLPROTO_DICT),
- NV(CURLPROTO_FILE),
- NV(CURLPROTO_FTP),
- NV(CURLPROTO_FTPS),
- NV(CURLPROTO_GOPHER),
- NV(CURLPROTO_HTTP),
- NV(CURLPROTO_HTTPS),
- NV(CURLPROTO_IMAP),
- NV(CURLPROTO_IMAPS),
- NV(CURLPROTO_LDAP),
- NV(CURLPROTO_LDAPS),
- NV(CURLPROTO_POP3),
- NV(CURLPROTO_POP3S),
- 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_TFTP),
- NVEND,
-};
-
/* These options have non-zero default values. */
static const struct NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
NV1(CURLOPT_SSL_VERIFYPEER, 1),
@@ -222,7 +195,7 @@ static const struct NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
#define REM0(s) ADD((&easysrc_toohard, s))
#define REM1(f,a) ADDF((&easysrc_toohard, f,a))
-#define REM2(f,a,b) ADDF((&easysrc_toohard, f,a,b))
+#define REM3(f,a,b,c) ADDF((&easysrc_toohard, f,a,b,c))
/* Escape string to C string syntax. Return NULL if out of memory.
* Is this correct for those wacky EBCDIC guys? */
@@ -233,9 +206,11 @@ static const struct NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
static char *c_escape(const char *str, curl_off_t len)
{
const char *s;
- unsigned char c;
- char *escaped, *e;
unsigned int cutoff = 0;
+ CURLcode result;
+ struct curlx_dynbuf escaped;
+
+ curlx_dyn_init(&escaped, 4 * MAX_STRING_LENGTH_OUTPUT + 3);
if(len == ZERO_TERMINATED)
len = strlen(str);
@@ -246,45 +221,44 @@ static char *c_escape(const char *str, curl_off_t len)
cutoff = 3;
}
- /* Allocate space based on worst-case */
- escaped = malloc(4 * (size_t)len + 1 + cutoff);
- if(!escaped)
- return NULL;
-
- e = escaped;
- for(s = str; len; s++, len--) {
- c = *s;
- if(c == '\n') {
- strcpy(e, "\\n");
- e += 2;
- }
- else if(c == '\r') {
- strcpy(e, "\\r");
- e += 2;
- }
- else if(c == '\t') {
- strcpy(e, "\\t");
- e += 2;
- }
- else if(c == '\\') {
- strcpy(e, "\\\\");
- e += 2;
- }
- else if(c == '"') {
- strcpy(e, "\\\"");
- e += 2;
- }
- else if(!isprint(c)) {
- msnprintf(e, 5, "\\x%02x", (unsigned)c);
- e += 4;
+ result = curlx_dyn_addn(&escaped, STRCONST(""));
+ for(s = str; !result && len; s++, len--) {
+ /* escape question marks as well, to prevent generating accidental
+ trigraphs */
+ static const char from[] = "\t\r\n?\"\\";
+ static const char to[] = "\\t\\r\\n\\?\\\"\\\\";
+ const char *p = strchr(from, *s);
+
+ if(!p && ISPRINT(*s))
+ continue;
+
+ result = curlx_dyn_addn(&escaped, str, s - str);
+ str = s + 1;
+
+ if(!result) {
+ if(p && *p)
+ result = curlx_dyn_addn(&escaped, to + 2 * (p - from), 2);
+ else {
+ const char *format = "\\x%02x";
+
+ if(len > 1 && ISXDIGIT(s[1])) {
+ /* Octal escape to avoid >2 digit hex. */
+ format = "\\%03o";
+ }
+
+ result = curlx_dyn_addf(&escaped, format,
+ (unsigned int) *(unsigned char *) s);
+ }
}
- else
- *e++ = c;
}
- while(cutoff--)
- *e++ = '.';
- *e = '\0';
- return escaped;
+
+ if(!result)
+ result = curlx_dyn_addn(&escaped, str, s - str);
+
+ if(!result)
+ (void) !curlx_dyn_addn(&escaped, "...", cutoff);
+
+ return curlx_dyn_ptr(&escaped);
}
/* setopt wrapper for enum types */
@@ -474,25 +448,7 @@ static CURLcode libcurl_generate_mime_part(CURL *curl,
break;
case TOOLMIME_DATA:
-#ifdef CURL_DOES_CONVERSIONS
- /* Data will be set in ASCII, thus issue a comment with clear text. */
- escaped = c_escape(part->data, ZERO_TERMINATED);
- NULL_CHECK(escaped);
- CODE1("/* \"%s\" */", escaped);
-
- /* Our data is always textual: convert it to ASCII. */
- {
- size_t size = strlen(part->data);
- char *cp = malloc(size + 1);
-
- NULL_CHECK(cp);
- memcpy(cp, part->data, size + 1);
- ret = convert_to_network(cp, size);
- data = cp;
- }
-#else
data = part->data;
-#endif
if(!ret) {
Curl_safefree(escaped);
escaped = c_escape(data, ZERO_TERMINATED);
@@ -566,11 +522,6 @@ static CURLcode libcurl_generate_mime_part(CURL *curl,
}
nomem:
-#ifdef CURL_DOES_CONVERSIONS
- if(data)
- free((char *) data);
-#endif
-
Curl_safefree(escaped);
return ret;
}
@@ -684,7 +635,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
/* function pointers are never printable */
if(tag >= CURLOPTTYPE_FUNCTIONPOINT) {
if(pval) {
- value = "functionpointer";
+ value = "function pointer";
remark = TRUE;
}
else
@@ -696,7 +647,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
escape = TRUE;
}
else if(pval) {
- value = "objectpointer";
+ value = "object pointer";
remark = TRUE;
}
else
@@ -722,7 +673,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
/* blobs are never printable */
if(pblob) {
- value = "blobpointer";
+ value = "blob pointer";
remark = TRUE;
}
else
@@ -737,7 +688,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
/* we only use this for real if --libcurl was used */
if(remark)
- REM2("%s set to a %s", name, value);
+ REM3("%s was set to a%s %s", name, (*value == 'o' ? "n" : ""), value);
else {
if(escape) {
curl_off_t len = ZERO_TERMINATED;
@@ -763,123 +714,3 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
#include "tool_setopt.h"
#endif /* CURL_DISABLE_LIBCURL_OPTION */
-
-/*
- * tool_setopt_skip() allows the curl tool code to avoid setopt options that
- * are explicitly disabled in the build.
- */
-bool tool_setopt_skip(CURLoption tag)
-{
-#ifdef CURL_DISABLE_PROXY
-#define USED_TAG
- switch(tag) {
- case CURLOPT_HAPROXYPROTOCOL:
- case CURLOPT_HTTPPROXYTUNNEL:
- case CURLOPT_NOPROXY:
- case CURLOPT_PRE_PROXY:
- case CURLOPT_PROXY:
- case CURLOPT_PROXYAUTH:
- case CURLOPT_PROXY_CAINFO:
- case CURLOPT_PROXY_CAPATH:
- case CURLOPT_PROXY_CRLFILE:
- case CURLOPT_PROXYHEADER:
- case CURLOPT_PROXY_KEYPASSWD:
- case CURLOPT_PROXYPASSWORD:
- case CURLOPT_PROXY_PINNEDPUBLICKEY:
- case CURLOPT_PROXYPORT:
- case CURLOPT_PROXY_SERVICE_NAME:
- case CURLOPT_PROXY_SSLCERT:
- case CURLOPT_PROXY_SSLCERTTYPE:
- case CURLOPT_PROXY_SSL_CIPHER_LIST:
- case CURLOPT_PROXY_SSLKEY:
- case CURLOPT_PROXY_SSLKEYTYPE:
- case CURLOPT_PROXY_SSL_OPTIONS:
- case CURLOPT_PROXY_SSL_VERIFYHOST:
- case CURLOPT_PROXY_SSL_VERIFYPEER:
- case CURLOPT_PROXY_SSLVERSION:
- case CURLOPT_PROXY_TLS13_CIPHERS:
- case CURLOPT_PROXY_TLSAUTH_PASSWORD:
- case CURLOPT_PROXY_TLSAUTH_TYPE:
- case CURLOPT_PROXY_TLSAUTH_USERNAME:
- case CURLOPT_PROXY_TRANSFER_MODE:
- case CURLOPT_PROXYTYPE:
- case CURLOPT_PROXYUSERNAME:
- case CURLOPT_PROXYUSERPWD:
- return TRUE;
- default:
- break;
- }
-#endif
-#ifdef CURL_DISABLE_FTP
-#define USED_TAG
- switch(tag) {
- case CURLOPT_FTPPORT:
- case CURLOPT_FTP_ACCOUNT:
- case CURLOPT_FTP_ALTERNATIVE_TO_USER:
- case CURLOPT_FTP_FILEMETHOD:
- case CURLOPT_FTP_SKIP_PASV_IP:
- case CURLOPT_FTP_USE_EPRT:
- case CURLOPT_FTP_USE_EPSV:
- case CURLOPT_FTP_USE_PRET:
- case CURLOPT_KRBLEVEL:
- return TRUE;
- default:
- break;
- }
-#endif
-#ifdef CURL_DISABLE_RTSP
-#define USED_TAG
- switch(tag) {
- case CURLOPT_INTERLEAVEDATA:
- return TRUE;
- default:
- break;
- }
-#endif
-#if defined(CURL_DISABLE_HTTP) || defined(CURL_DISABLE_COOKIES)
-#define USED_TAG
- switch(tag) {
- case CURLOPT_COOKIE:
- case CURLOPT_COOKIEFILE:
- case CURLOPT_COOKIEJAR:
- case CURLOPT_COOKIESESSION:
- return TRUE;
- default:
- break;
- }
-#endif
-#if defined(CURL_DISABLE_TELNET)
-#define USED_TAG
- switch(tag) {
- case CURLOPT_TELNETOPTIONS:
- return TRUE;
- default:
- break;
- }
-#endif
-#ifdef CURL_DISABLE_TFTP
-#define USED_TAG
- switch(tag) {
- case CURLOPT_TFTP_BLKSIZE:
- case CURLOPT_TFTP_NO_OPTIONS:
- return TRUE;
- default:
- break;
- }
-#endif
-#ifdef CURL_DISABLE_NETRC
-#define USED_TAG
- switch(tag) {
- case CURLOPT_NETRC:
- case CURLOPT_NETRC_FILE:
- return TRUE;
- default:
- break;
- }
-#endif
-
-#ifndef USED_TAG
- (void)tag;
-#endif
- return FALSE;
-}
diff --git a/src/tool_setopt.h b/src/tool_setopt.h
index da4429862..bc5afe9bc 100644
--- a/src/tool_setopt.h
+++ b/src/tool_setopt.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -29,17 +31,10 @@
* Macros used in operate()
*/
-#define SETOPT_CHECK(v,opt) do { \
- if(!tool_setopt_skip(opt)) { \
- result = (v); \
- if(result) \
- break; \
- } \
+#define SETOPT_CHECK(v,opt) do { \
+ result = (v); \
} while(0)
-/* allow removed features to simulate success: */
-bool tool_setopt_skip(CURLoption tag);
-
#ifndef CURL_DISABLE_LIBCURL_OPTION
/* Associate symbolic names with option values */
@@ -62,7 +57,6 @@ extern const struct NameValue setopt_nv_CURLFTPSSL_CCC[];
extern const struct NameValue setopt_nv_CURLUSESSL[];
extern const struct NameValueUnsigned setopt_nv_CURLSSLOPT[];
extern const struct NameValue setopt_nv_CURL_NETRC[];
-extern const struct NameValue setopt_nv_CURLPROTO[];
extern const struct NameValueUnsigned setopt_nv_CURLAUTH[];
extern const struct NameValueUnsigned setopt_nv_CURLHSTS[];
@@ -78,8 +72,6 @@ extern const struct NameValueUnsigned setopt_nv_CURLHSTS[];
#define setopt_nv_CURLOPT_SSL_OPTIONS setopt_nv_CURLSSLOPT
#define setopt_nv_CURLOPT_PROXY_SSL_OPTIONS setopt_nv_CURLSSLOPT
#define setopt_nv_CURLOPT_NETRC setopt_nv_CURL_NETRC
-#define setopt_nv_CURLOPT_PROTOCOLS setopt_nv_CURLPROTO
-#define setopt_nv_CURLOPT_REDIR_PROTOCOLS setopt_nv_CURLPROTO
#define setopt_nv_CURLOPT_PROXYTYPE setopt_nv_CURLPROXY
#define setopt_nv_CURLOPT_PROXYAUTH setopt_nv_CURLAUTH
#define setopt_nv_CURLOPT_SOCKS5_AUTH setopt_nv_CURLAUTH
diff --git a/src/tool_setup.h b/src/tool_setup.h
index d8786ecd9..16fa00e7d 100644
--- a/src/tool_setup.h
+++ b/src/tool_setup.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#define CURL_NO_OLDIES
@@ -49,14 +51,6 @@
# define main(x,y) curl_main(x,y)
#endif
-#ifdef TPF
-# undef select
- /* change which select is used for the curl command line tool */
-# define select(a,b,c,d,e) tpf_select_bsd(a,b,c,d,e)
- /* and turn off the progress meter */
-# define CONF_DEFAULT (0|CONF_NOPROGRESS)
-#endif
-
#ifndef OS
# define OS "unknown"
#endif
diff --git a/src/tool_sleep.c b/src/tool_sleep.c
index c9ed5a3e2..c52425f9a 100644
--- a/src/tool_sleep.c
+++ b/src/tool_sleep.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_sleep.h b/src/tool_sleep.h
index ac51941c6..d84b467a4 100644
--- a/src/tool_sleep.h
+++ b/src/tool_sleep.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_strdup.c b/src/tool_strdup.c
index 83fbc727f..402f1c982 100644
--- a/src/tool_strdup.c
+++ b/src/tool_strdup.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_strdup.h"
diff --git a/src/tool_strdup.h b/src/tool_strdup.h
index 82ef0eb61..c31c04652 100644
--- a/src/tool_strdup.h
+++ b/src/tool_strdup.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_urlglob.c b/src/tool_urlglob.c
index df882b28a..fae8b131f 100644
--- a/src/tool_urlglob.c
+++ b/src/tool_urlglob.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -686,6 +688,9 @@ CURLcode glob_match_url(char **result, char *filename, struct URLGlob *glob)
return CURLE_OUT_OF_MEMORY;
}
+ if(curlx_dyn_addn(&dyn, "", 0))
+ return CURLE_OUT_OF_MEMORY;
+
#if defined(MSDOS) || defined(WIN32)
{
char *sanitized;
diff --git a/src/tool_urlglob.h b/src/tool_urlglob.h
index 687f57cad..80c1537f9 100644
--- a/src/tool_urlglob.h
+++ b/src/tool_urlglob.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_util.c b/src/tool_util.c
index a16852c68..fb4829f84 100644
--- a/src/tool_util.c
+++ b/src/tool_util.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,9 +18,15 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
+#if defined(HAVE_STRCASECMP) && defined(HAVE_STRINGS_H)
+#include <strings.h>
+#endif
+
#include "tool_util.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -133,3 +139,27 @@ long tvdiff(struct timeval newer, struct timeval older)
return (long)(newer.tv_sec-older.tv_sec)*1000+
(long)(newer.tv_usec-older.tv_usec)/1000;
}
+
+/* Case insensitive compare. Accept NULL pointers. */
+int struplocompare(const char *p1, const char *p2)
+{
+ if(!p1)
+ return p2? -1: 0;
+ if(!p2)
+ return 1;
+#ifdef HAVE_STRCASECMP
+ return strcasecmp(p1, p2);
+#elif defined(HAVE_STRCMPI)
+ return strcmpi(p1, p2);
+#elif defined(HAVE_STRICMP)
+ return stricmp(p1, p2);
+#else
+ return strcmp(p1, p2);
+#endif
+}
+
+/* Indirect version to use as qsort callback. */
+int struplocompare4sort(const void *p1, const void *p2)
+{
+ return struplocompare(* (char * const *) p1, * (char * const *) p2);
+}
diff --git a/src/tool_util.h b/src/tool_util.h
index 4cc0b16ae..72b355e68 100644
--- a/src/tool_util.h
+++ b/src/tool_util.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -33,4 +35,8 @@ struct timeval tvnow(void);
*/
long tvdiff(struct timeval t1, struct timeval t2);
+/* Case insensitive comparison support. */
+int struplocompare(const char *p1, const char *p2);
+int struplocompare4sort(const void *p1, const void *p2);
+
#endif /* HEADER_CURL_TOOL_UTIL_H */
diff --git a/src/tool_version.h b/src/tool_version.h
index 2d35a73d5..0bbb9a509 100644
--- a/src/tool_version.h
+++ b/src/tool_version.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,12 +20,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <curl/curlver.h>
#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.81.0"
+#define CURL_VERSION "7.86.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
diff --git a/src/tool_vms.c b/src/tool_vms.c
index a2678313a..7d45d5f10 100644
--- a/src/tool_vms.c
+++ b/src/tool_vms.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_vms.h b/src/tool_vms.h
index 34ac2381a..949206dc5 100644
--- a/src/tool_vms.h
+++ b/src/tool_vms.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
diff --git a/src/tool_writeout.c b/src/tool_writeout.c
index 5b22a1a9c..2789ee20b 100644
--- a/src/tool_writeout.c
+++ b/src/tool_writeout.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#define ENABLE_CURLX_PRINTF
@@ -71,21 +73,22 @@ static const struct httpmap http_version[] = {
*/
static const struct writeoutvar variables[] = {
{"content_type", VAR_CONTENT_TYPE, CURLINFO_CONTENT_TYPE, writeString},
- {"errormsg", VAR_ERRORMSG, 0, writeString},
- {"exitcode", VAR_EXITCODE, 0, writeLong},
- {"filename_effective", VAR_EFFECTIVE_FILENAME, 0, writeString},
+ {"errormsg", VAR_ERRORMSG, CURLINFO_NONE, writeString},
+ {"exitcode", VAR_EXITCODE, CURLINFO_NONE, writeLong},
+ {"filename_effective", VAR_EFFECTIVE_FILENAME, CURLINFO_NONE, writeString},
{"ftp_entry_path", VAR_FTP_ENTRY_PATH, CURLINFO_FTP_ENTRY_PATH, writeString},
+ {"header_json", VAR_HEADER_JSON, CURLINFO_NONE, NULL},
{"http_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong},
{"http_connect", VAR_HTTP_CODE_PROXY, CURLINFO_HTTP_CONNECTCODE, writeLong},
{"http_version", VAR_HTTP_VERSION, CURLINFO_HTTP_VERSION, writeString},
- {"json", VAR_JSON, 0, NULL},
+ {"json", VAR_JSON, CURLINFO_NONE, NULL},
{"local_ip", VAR_LOCAL_IP, CURLINFO_LOCAL_IP, writeString},
{"local_port", VAR_LOCAL_PORT, CURLINFO_LOCAL_PORT, writeLong},
{"method", VAR_EFFECTIVE_METHOD, CURLINFO_EFFECTIVE_METHOD, writeString},
{"num_connects", VAR_NUM_CONNECTS, CURLINFO_NUM_CONNECTS, writeLong},
- {"num_headers", VAR_NUM_HEADERS, 0, writeLong},
+ {"num_headers", VAR_NUM_HEADERS, CURLINFO_NONE, writeLong},
{"num_redirects", VAR_REDIRECT_COUNT, CURLINFO_REDIRECT_COUNT, writeLong},
- {"onerror", VAR_ONERROR, 0, NULL},
+ {"onerror", VAR_ONERROR, CURLINFO_NONE, NULL},
{"proxy_ssl_verify_result", VAR_PROXY_SSL_VERIFY_RESULT,
CURLINFO_PROXY_SSL_VERIFYRESULT, writeLong},
{"redirect_url", VAR_REDIRECT_URL, CURLINFO_REDIRECT_URL, writeString},
@@ -103,8 +106,8 @@ static const struct writeoutvar variables[] = {
{"speed_upload", VAR_SPEED_UPLOAD, CURLINFO_SPEED_UPLOAD_T, writeOffset},
{"ssl_verify_result", VAR_SSL_VERIFY_RESULT, CURLINFO_SSL_VERIFYRESULT,
writeLong},
- {"stderr", VAR_STDERR, 0, NULL},
- {"stdout", VAR_STDOUT, 0, NULL},
+ {"stderr", VAR_STDERR, CURLINFO_NONE, NULL},
+ {"stdout", VAR_STDOUT, CURLINFO_NONE, NULL},
{"time_appconnect", VAR_APPCONNECT_TIME, CURLINFO_APPCONNECT_TIME_T,
writeTime},
{"time_connect", VAR_CONNECT_TIME, CURLINFO_CONNECT_TIME_T, writeTime},
@@ -116,10 +119,10 @@ static const struct writeoutvar variables[] = {
{"time_starttransfer", VAR_STARTTRANSFER_TIME, CURLINFO_STARTTRANSFER_TIME_T,
writeTime},
{"time_total", VAR_TOTAL_TIME, CURLINFO_TOTAL_TIME_T, writeTime},
- {"url", VAR_INPUT_URL, 0, writeString},
+ {"url", VAR_INPUT_URL, CURLINFO_NONE, writeString},
{"url_effective", VAR_EFFECTIVE_URL, CURLINFO_EFFECTIVE_URL, writeString},
- {"urlnum", VAR_URLNUM, 0, writeLong},
- {NULL, VAR_NONE, 0, NULL}
+ {"urlnum", VAR_URLNUM, CURLINFO_NONE, writeLong},
+ {NULL, VAR_NONE, CURLINFO_NONE, NULL}
};
static int writeTime(FILE *stream, const struct writeoutvar *wovar,
@@ -192,8 +195,8 @@ static int writeString(FILE *stream, const struct writeoutvar *wovar,
switch(wovar->id) {
case VAR_ERRORMSG:
if(per_result) {
- strinfo = per->errorbuffer[0] ? per->errorbuffer :
- curl_easy_strerror(per_result);
+ strinfo = (per->errorbuffer && per->errorbuffer[0]) ?
+ per->errorbuffer : curl_easy_strerror(per_result);
valid = true;
}
break;
@@ -218,9 +221,8 @@ static int writeString(FILE *stream, const struct writeoutvar *wovar,
if(valid) {
DEBUGASSERT(strinfo);
if(use_json) {
- fprintf(stream, "\"%s\":\"", wovar->name);
- jsonWriteString(stream, strinfo);
- fputs("\"", stream);
+ fprintf(stream, "\"%s\":", wovar->name);
+ jsonWriteString(stream, strinfo, FALSE);
}
else
fputs(strinfo, stream);
@@ -336,8 +338,8 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
else {
/* this is meant as a variable to output */
char *end;
+ size_t vlen;
if('{' == ptr[1]) {
- char keepit;
int i;
bool match = FALSE;
end = strchr(ptr, '}');
@@ -346,10 +348,10 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
fputs("%{", stream);
continue;
}
- keepit = *end;
- *end = 0; /* null-terminate */
+ vlen = end - ptr;
for(i = 0; variables[i].name; i++) {
- if(curl_strequal(ptr, variables[i].name)) {
+ if((strlen(variables[i].name) == vlen) &&
+ curl_strnequal(ptr, variables[i].name, vlen)) {
match = TRUE;
switch(variables[i].id) {
case VAR_ONERROR:
@@ -366,6 +368,9 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
case VAR_JSON:
ourWriteOutJSON(stream, variables, per, per_result);
break;
+ case VAR_HEADER_JSON:
+ headerJSON(stream, per);
+ break;
default:
(void)variables[i].writefunc(stream, &variables[i],
per, per_result, false);
@@ -375,10 +380,29 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
}
}
if(!match) {
- fprintf(stderr, "curl: unknown --write-out variable: '%s'\n", ptr);
+ fprintf(stderr, "curl: unknown --write-out variable: '%.*s'\n",
+ (int)vlen, ptr);
}
ptr = end + 1; /* pass the end */
- *end = keepit;
+ }
+ else if(!strncmp("header{", &ptr[1], 7)) {
+ ptr += 8;
+ end = strchr(ptr, '}');
+ if(end) {
+ char hname[256]; /* holds the longest header field name */
+ struct curl_header *header;
+ vlen = end - ptr;
+ if(vlen < sizeof(hname)) {
+ memcpy(hname, ptr, vlen);
+ hname[vlen] = 0;
+ if(CURLHE_OK == curl_easy_header(per->curl, hname, 0,
+ CURLH_HEADER, -1, &header))
+ fputs(header->value, stream);
+ }
+ ptr = end + 1;
+ }
+ else
+ fputs("%header{", stream);
}
else {
/* illegal syntax, then just output the characters that are used */
diff --git a/src/tool_writeout.h b/src/tool_writeout.h
index b8f51ffaa..c7cdb9771 100644
--- a/src/tool_writeout.h
+++ b/src/tool_writeout.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#include "tool_operate.h"
@@ -35,6 +37,7 @@ typedef enum {
VAR_ERRORMSG,
VAR_EXITCODE,
VAR_FTP_ENTRY_PATH,
+ VAR_HEADER_JSON,
VAR_HEADER_SIZE,
VAR_HTTP_CODE,
VAR_HTTP_CODE_PROXY,
diff --git a/src/tool_writeout_json.c b/src/tool_writeout_json.c
index caa1ea6f3..a36d60c4f 100644
--- a/src/tool_writeout_json.c
+++ b/src/tool_writeout_json.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
@@ -29,12 +31,12 @@
#include "tool_writeout_json.h"
#include "tool_writeout.h"
-
-void jsonWriteString(FILE *stream, const char *in)
+void jsonWriteString(FILE *stream, const char *in, bool lowercase)
{
const char *i = in;
const char *in_end = in + strlen(in);
+ fputc('\"', stream);
for(; i < in_end; i++) {
switch(*i) {
case '\\':
@@ -63,11 +65,16 @@ void jsonWriteString(FILE *stream, const char *in)
fprintf(stream, "u%04x", *i);
}
else {
- fputc(*i, stream);
+ char out = *i;
+ if(lowercase && (out >= 'A' && out <= 'Z'))
+ /* do not use tolower() since that's locale specific */
+ out |= ('a' - 'A');
+ fputc(out, stream);
}
break;
}
}
+ fputc('\"', stream);
}
void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
@@ -85,7 +92,54 @@ void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
/* The variables are sorted in alphabetical order but as a special case
curl_version (which is not actually a --write-out variable) is last. */
- fprintf(stream, "\"curl_version\":\"");
- jsonWriteString(stream, curl_version());
- fprintf(stream, "\"}");
+ fprintf(stream, "\"curl_version\":");
+ jsonWriteString(stream, curl_version(), FALSE);
+ fprintf(stream, "}");
+}
+
+#ifdef _MSC_VER
+/* warning C4706: assignment within conditional expression */
+#pragma warning(disable:4706)
+#endif
+
+void headerJSON(FILE *stream, struct per_transfer *per)
+{
+ struct curl_header *header;
+ struct curl_header *prev = NULL;
+
+ fputc('{', stream);
+ while((header = curl_easy_nextheader(per->curl, CURLH_HEADER, -1,
+ prev))) {
+ if(prev)
+ fputs(",\n", stream);
+ jsonWriteString(stream, header->name, TRUE);
+ fputc(':', stream);
+ prev = header;
+ if(header->amount > 1) {
+ if(!header->index) {
+ /* act on the 0-index entry and pull the others in, then output in a
+ JSON list */
+ size_t a = header->amount;
+ size_t i = 0;
+ char *name = header->name;
+ fputc('[', stream);
+ do {
+ jsonWriteString(stream, header->value, FALSE);
+ if(++i >= a)
+ break;
+ fputc(',', stream);
+ if(curl_easy_header(per->curl, name, i, CURLH_HEADER,
+ -1, &header))
+ break;
+ } while(1);
+ }
+ fputc(']', stream);
+ }
+ else {
+ fputc('[', stream);
+ jsonWriteString(stream, header->value, FALSE);
+ fputc(']', stream);
+ }
+ }
+ fputs("\n}", stream);
}
diff --git a/src/tool_writeout_json.h b/src/tool_writeout_json.h
index f6b3a86af..d8466051c 100644
--- a/src/tool_writeout_json.h
+++ b/src/tool_writeout_json.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,13 +20,15 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
#include "tool_writeout.h"
void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
struct per_transfer *per, CURLcode per_result);
-
-void jsonWriteString(FILE *stream, const char *in);
+void headerJSON(FILE *stream, struct per_transfer *per);
+void jsonWriteString(FILE *stream, const char *in, bool lowercase);
#endif /* HEADER_CURL_TOOL_WRITEOUT_H */
diff --git a/src/tool_xattr.c b/src/tool_xattr.c
index 91fc4ed38..bd0574996 100644
--- a/src/tool_xattr.c
+++ b/src/tool_xattr.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,19 +18,10 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
-
-#ifdef HAVE_FSETXATTR
-# include <sys/xattr.h> /* header from libc, not from libattr */
-# define USE_XATTR
-#elif (defined(__FreeBSD_version) && (__FreeBSD_version > 500000)) || \
- defined(__MidnightBSD_version)
-# include <sys/types.h>
-# include <sys/extattr.h>
-# define USE_XATTR
-#endif
-
#include "tool_xattr.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -46,26 +37,25 @@ static const struct xattr_mapping {
* https://freedesktop.org/wiki/CommonExtendedAttributes/
*/
{ "user.xdg.referrer.url", CURLINFO_REFERER },
- { "user.xdg.origin.url", CURLINFO_EFFECTIVE_URL },
{ "user.mime_type", CURLINFO_CONTENT_TYPE },
{ NULL, CURLINFO_NONE } /* last element, abort here */
};
-/* returns TRUE if a new URL is returned, that then needs to be freed */
+/* returns a new URL that needs to be freed */
/* @unittest: 1621 */
#ifdef UNITTESTS
-bool stripcredentials(char **url);
+char *stripcredentials(const char *url);
#else
static
#endif
-bool stripcredentials(char **url)
+char *stripcredentials(const char *url)
{
CURLU *u;
CURLUcode uc;
char *nurl;
u = curl_url();
if(u) {
- uc = curl_url_set(u, CURLUPART_URL, *url, 0);
+ uc = curl_url_set(u, CURLUPART_URL, url, 0);
if(uc)
goto error;
@@ -83,59 +73,64 @@ bool stripcredentials(char **url)
curl_url_cleanup(u);
- *url = nurl;
- return TRUE;
+ return nurl;
}
error:
curl_url_cleanup(u);
- return FALSE;
+ return NULL;
}
+static int xattr(int fd,
+ const char *attr, /* name of the xattr */
+ const char *value)
+{
+ int err = 0;
+ if(value) {
+#ifdef DEBUGBUILD
+ if(getenv("CURL_FAKE_XATTR")) {
+ printf("%s => %s\n", attr, value);
+ }
+ return 0;
+#endif
+#ifdef HAVE_FSETXATTR_6
+ err = fsetxattr(fd, attr, value, strlen(value), 0, 0);
+#elif defined(HAVE_FSETXATTR_5)
+ err = fsetxattr(fd, attr, value, strlen(value), 0);
+#elif defined(__FreeBSD_version) || defined(__MidnightBSD_version)
+ {
+ ssize_t rc = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER,
+ attr, value, strlen(value));
+ /* FreeBSD's extattr_set_fd returns the length of the extended
+ attribute */
+ err = (rc < 0 ? -1 : 0);
+ }
+#endif
+ }
+ return err;
+}
/* store metadata from the curl request alongside the downloaded
* file using extended attributes
*/
-int fwrite_xattr(CURL *curl, int fd)
+int fwrite_xattr(CURL *curl, const char *url, int fd)
{
int i = 0;
int err = 0;
/* loop through all xattr-curlinfo pairs and abort on a set error */
- while(err == 0 && mappings[i].attr) {
+ while(!err && mappings[i].attr) {
char *value = NULL;
CURLcode result = curl_easy_getinfo(curl, mappings[i].info, &value);
- if(!result && value) {
- bool freeptr = FALSE;
- if(CURLINFO_EFFECTIVE_URL == mappings[i].info)
- freeptr = stripcredentials(&value);
- if(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);
-#elif defined(__FreeBSD_version) || defined(__MidnightBSD_version)
- {
- ssize_t rc = 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 = (rc < 0 ? -1 : 0);
- }
-#endif
- if(freeptr)
- curl_free(value);
- }
- }
+ if(!result && value)
+ err = xattr(fd, mappings[i].attr, value);
i++;
}
-
+ if(!err) {
+ char *nurl = stripcredentials(url);
+ if(!nurl)
+ return 1;
+ err = xattr(fd, "user.xdg.origin.url", nurl);
+ curl_free(nurl);
+ }
return err;
}
-#else
-int fwrite_xattr(CURL *curl, int fd)
-{
- (void)curl;
- (void)fd;
-
- return 0;
-}
#endif
diff --git a/src/tool_xattr.h b/src/tool_xattr.h
index 8d741aaab..e85d4cded 100644
--- a/src/tool_xattr.h
+++ b/src/tool_xattr.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,9 +20,26 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "tool_setup.h"
-int fwrite_xattr(CURL *curl, int fd);
+#ifdef HAVE_FSETXATTR
+# include <sys/xattr.h> /* header from libc, not from libattr */
+# define USE_XATTR
+#elif (defined(__FreeBSD_version) && (__FreeBSD_version > 500000)) || \
+ defined(__MidnightBSD_version)
+# include <sys/types.h>
+# include <sys/extattr.h>
+# define USE_XATTR
+#endif
+
+#ifdef USE_XATTR
+int fwrite_xattr(CURL *curl, const char *url, int fd);
+
+#else
+#define fwrite_xattr(a,b,c) 0
+#endif
#endif /* HEADER_CURL_TOOL_XATTR_H */
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 5771bd2c9..8ce7610f9 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
add_custom_target(testdeps)
add_subdirectory(data)
diff --git a/tests/FILEFORMAT.md b/tests/FILEFORMAT.md
index bfd5d221e..464c2eb5e 100644
--- a/tests/FILEFORMAT.md
+++ b/tests/FILEFORMAT.md
@@ -1,18 +1,24 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
# curl test suite file format
-The curl test suite's file format is very simple and extensible, closely
-resembling XML. All data for a single test case resides in a single ASCII
-file. Labels mark the beginning and the end of all sections, and each label
-must be written in its own line. Comments are either XML-style (enclosed with
-`<!--` and `-->`) or shell script style (beginning with `#`) and must appear
-on their own lines and not alongside actual test data. Most test data files
-are syntactically valid XML, although a few files are not (lack of support for
+The curl test suite's file format is simple and extendable, closely resembling
+XML. All data for a single test case resides in a single ASCII file. Labels
+mark the beginning and the end of all sections, and each label must be written
+in its own line. Comments are either XML-style (enclosed with `<!--` and
+`-->`) or shell script style (beginning with `#`) and must appear on their own
+lines and not alongside actual test data. Most test data files are
+syntactically valid XML, although a few files are not (lack of support for
character entities and the preservation of CR/LF characters at the end of
lines are the biggest differences).
Each test case source exists as a file matching the format
-`tests/data/testNUM`, where NUM is the unique test number, and must begin with
-a 'testcase' tag, which encompasses the remainder of the file.
+`tests/data/testNUM`, where `NUM` is the unique test number, and must begin
+with a `testcase` tag, which encompasses the remainder of the file.
# Preprocessing
@@ -56,10 +62,10 @@ For example, to insert the binary octets 0, 1 and 255 into the test file:
## Repeat content
In the preprocess stage, a special instruction can be used to have runtests.pl
-generate a repetetive sequence of bytes.
+generate a repetitive sequence of bytes.
To insert a sequence of repeat bytes, use this syntax to make the `<string>`
-get repeated `<number>` of times. The number has to be 1 or large and the
+get repeated `<number>` of times. The number has to be 1 or larger and the
string may contain `%HH` hexadecimal codes:
%repeat[<number> x <string>]%
@@ -73,13 +79,13 @@ For example, to insert the word hello a 100 times:
Lines in the test file can be made to appear conditionally on a specific
feature (see the "features" section below) being set or not set. If the
specific feature is present, the following lines will be output, otherwise it
-outputs nothing, until a following else or endif clause. Like this:
+outputs nothing, until a following else or `endif` clause. Like this:
%if brotli
Accept-Encoding
%endif
-It can also check for the inversed condition, so if the feature us *not* set by
+It can also check for the inverse condition, so if the feature is *not* set by
the use of an exclamation mark:
%if !brotli
@@ -114,7 +120,7 @@ Available substitute variables include:
- `%FTPSPORT` - Port number of the FTPS server
- `%FTPTIME2` - Timeout in seconds that should be just sufficient to receive a
response from the test FTP server
-- `%FTPTIME3` - Even longer than %FTPTIME2
+- `%FTPTIME3` - Even longer than `%FTPTIME2`
- `%GOPHER6PORT` - IPv6 port number of the Gopher server
- `%GOPHERPORT` - Port number of the Gopher server
- `%GOPHERSPORT` - Port number of the Gophers server
@@ -128,6 +134,7 @@ Available substitute variables include:
- `%HTTPTLS6PORT` - IPv6 port number of the HTTP TLS server
- `%HTTPTLSPORT` - Port number of the HTTP TLS server
- `%HTTPUNIXPATH` - Path to the Unix socket of the HTTP server
+- `%SOCKSUNIXPATH` - Absolute Path to the Unix socket of the SOCKS server
- `%IMAP6PORT` - IPv6 port number of the IMAP server
- `%IMAPPORT` - Port number of the IMAP server
- `%MQTTPORT` - Port number of the MQTT server
@@ -158,8 +165,9 @@ Available substitute variables include:
# `<testcase>`
-Each test is always specified entirely within the testcase tag. Each test case
-is split up in four main sections: `info`, `reply`, `client` and `verify`.
+Each test is always specified entirely within the `testcase` tag. Each test
+case is split up in four main sections: `info`, `reply`, `client` and
+`verify`.
- **info** provides information about the test case
@@ -178,17 +186,17 @@ that will be checked/used if specified.
### `<keywords>`
A newline-separated list of keywords describing what this test case uses and
-tests. Try to use already used keywords. These keywords will be used for
+tests. Try to use already used keywords. These keywords will be used for
statistical/informational purposes and for choosing or skipping classes of
-tests. "Keywords" must begin with an alphabetic character, "-", "[" or "{"
-and may actually consist of multiple words separated by spaces which are
-treated together as a single identifier.
+tests. Keywords must begin with an alphabetic character, `-`, `[` or `{` and
+may actually consist of multiple words separated by spaces which are treated
+together as a single identifier.
When using curl built with Hyper, the keywords must include HTTP or HTTPS for
'hyper mode' to kick in and make line ending checks work for tests.
## `<reply>`
-### `<data [nocheck="yes"] [sendzero="yes"] [base64="yes"] [hex="yes"]>`
+### `<data [nocheck="yes"] [sendzero="yes"] [base64="yes"] [hex="yes"] [nonewline="yes"]>`
data to be sent to the client on its request and later verified that it
arrived safely. Set `nocheck="yes"` to prevent the test script from verifying
@@ -214,29 +222,32 @@ much sense for other sections than "data").
`hex=yes` means that the data is a sequence of hex pairs. It will get decoded
and used as "raw" data.
+`nonewline=yes` means that the last byte (the trailing newline character)
+should be cut off from the data before sending or comparing it.
+
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
+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.
### `<dataNUM>`
-Send back this contents instead of the <data> one. The num is set by:
+Send back this contents instead of the <data> one. The `NUM` is set by:
- The test number in the request line is >10000 and this is the remainder
of [test case number]%10000.
- - The request was HTTP and included digest details, which adds 1000 to NUM
- - If a HTTP request is NTLM type-1, it adds 1001 to num
- - If a HTTP request is NTLM type-3, it adds 1002 to num
- - If a HTTP request is Basic and num is already >=1000, it adds 1 to num
- - If a HTTP request is Negotiate, num gets incremented by one for each
+ - The request was HTTP and included digest details, which adds 1000 to `NUM`
+ - If a HTTP request is NTLM type-1, it adds 1001 to `NUM`
+ - If a HTTP request is NTLM type-3, it adds 1002 to `NUM`
+ - If a HTTP request is Basic and `NUM` is already >=1000, it adds 1 to `NUM`
+ - If a HTTP request is Negotiate, `NUM` gets incremented by one for each
request with Negotiate authorization header on the same test case.
-Dynamically changing num in this way allows the test harness to be used to
+Dynamically changing `NUM` in this way allows the test harness to be used to
test authentication negotiation where several different requests must be sent
to complete a transfer. The response to each request is found in its own data
-section. Validating the entire negotiation sequence can be done by specifying
-a datacheck section.
+section. Validating the entire negotiation sequence can be done by specifying
+a `datacheck` section.
### `<connect>`
The connect section is used instead of the 'data' for all CONNECT
@@ -255,14 +266,14 @@ Use the `mode="text"` attribute if the output is in text mode on platforms
that have a text/binary difference.
### `<datacheckNUM [nonewline="yes"] [mode="text"]>`
-The contents of numbered datacheck sections are appended to the non-numbered
+The contents of numbered `datacheck` sections are appended to the non-numbered
one.
### `<size>`
number to return on a ftp SIZE command (set to -1 to make this command fail)
### `<mdtm>`
-what to send back if the client sends a (FTP) MDTM command, set to -1 to
+what to send back if the client sends a (FTP) `MDTM` command, set to -1 to
have it return that the file doesn't exist
### `<postcmd>`
@@ -312,7 +323,7 @@ about to issue.
server will NOT wait for the full request body to get sent
- `idle` - do nothing after receiving the request, just "sit idle"
- `stream` - continuously send data to the client, never-ending
-- `writedelay: [secs]` delay this amount between reply packets
+- `writedelay: [msecs]` delay this amount between reply packets
- `skip: [num]` - instructs the server to ignore reading this many bytes from
a PUT or POST request
- `rtp: part [num] channel [num] size [num]` - stream a fake RTP packet for
@@ -333,33 +344,43 @@ about to issue.
### `<server>`
What server(s) this test case requires/uses. Available servers:
+- `dict`
- `file`
-- `ftp-ipv6`
- `ftp`
+- `ftp-ipv6`
- `ftps`
- `gopher`
+- `gopher-ipv6`
- `gophers`
+- `http`
+- `http/2`
- `http-ipv6`
- `http-proxy`
-- `http-unix`
-- `http/2`
-- `http`
- `https`
-- `httptls+srp-ipv6`
+- `https-proxy`
- `httptls+srp`
+- `httptls+srp-ipv6`
+- `http-unix`
- `imap`
- `mqtt`
- `none`
- `pop3`
-- `rtsp-ipv6`
- `rtsp`
+- `rtsp-ipv6`
- `scp`
- `sftp`
+- `smb`
- `smtp`
- `socks4`
- `socks5`
+- `socks5unix`
+- `telnet`
+- `tftp`
-Give only one per line. This subsection is mandatory.
+Give only one per line. This subsection is mandatory (use `none` if no servers
+are required). Servers that require a special server certificate can have the
+PEM certificate file name (found in the `certs` directory) appended to the
+server name separated by a space.
### `<features>`
A list of features that MUST be present in the client/library for this test to
@@ -373,6 +394,7 @@ SKIPPED.
Features testable here are:
- `alt-svc`
+- `bearssl`
- `c-ares`
- `cookies`
- `crypto`
@@ -381,6 +403,7 @@ Features testable here are:
- `getrlimit`
- `GnuTLS`
- `GSS-API`
+- `h2c`
- `HSTS`
- `HTTP-auth`
- `http/2`
@@ -392,6 +415,7 @@ Features testable here are:
- `ld_preload`
- `libssh2`
- `libssh`
+- `oldlibssh` (versions before 0.9.4)
- `libz`
- `manual`
- `Mime`
@@ -402,6 +426,7 @@ Features testable here are:
- `parsedate`
- `proxy`
- `PSL`
+- `rustls`
- `Schannel`
- `sectransp`
- `shuffle-dns`
@@ -421,10 +446,12 @@ Features testable here are:
- `wakeup`
- `win32`
- `wolfssh`
+- `wolfssl`
+- `xattr`
-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
-is `none`).
+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 is
+`none`).
### `<killserver>`
Using the same syntax as in `<server>` but when mentioned here these servers
@@ -445,8 +472,8 @@ to have failed.
### `<tool>`
Name of tool to invoke instead of "curl". This tool must be built and exist
-either in the libtest/ directory (if the tool name starts with 'lib') or in
-the unit/ directory (if the tool name starts with 'unit').
+either in the `libtest/` directory (if the tool name starts with `lib`) or in
+the `unit/` directory (if the tool name starts with `unit`).
### `<name>`
Brief test case description, shown when the test runs.
@@ -490,33 +517,33 @@ Set `option="no-include"` to prevent the test script to slap on the
`--include` argument.
Set `option="binary-trace"` to use `--trace` instead of `--trace-ascii` for
-tracing. Suitable for binary-oriented protocols such as MQTT.
+tracing. Suitable for binary-oriented protocols such as MQTT.
Set `timeout="secs"` to override default server logs advisor read lock
-timeout. This timeout is used by the test harness, once that the command has
+timeout. This timeout is used by the test harness, once that the command has
completed execution, to wait for the test server to write out server side log
files and remove the lock that advised not to read them. The "secs" parameter
is the not negative integer number of seconds for the timeout. This `timeout`
attribute is documented for completeness sake, but is deep test harness stuff
-and only needed for very singular and specific test cases. Avoid using it.
+and only needed for singular and specific test cases. Avoid using it.
Set `delay="secs"` to introduce a time delay once that the command has
completed execution and before the `<postcheck>` section runs. The "secs"
parameter is the not negative integer number of seconds for the delay. This
-'delay' attribute is intended for very specific test cases, and normally not
+'delay' attribute is intended for specific test cases, and normally not
needed.
### `<file name="log/filename" [nonewline="yes"]>`
This creates the named file with this content before the test case is run,
which is useful if the test case needs a file to act on.
-If 'nonewline="yes"` is used, the created file will have the final newline
+If `nonewline="yes"` is used, the created file will have the final newline
stripped off.
### `<stdin [nonewline="yes"]>`
Pass this given data on stdin to the tool.
-If 'nonewline' is set, we will cut off the trailing newline of this given data
+If `nonewline` is set, we will cut off the trailing newline of this given data
before comparing with the one actually received by the client
## `<verify>`
@@ -527,7 +554,7 @@ example.
### `<strip>`
One regex per line that is removed from the protocol dumps before the
-comparison is made. This is very useful to remove dependencies on dynamically
+comparison is made. This is useful to remove dependencies on dynamically
changing protocol data such as port numbers or user-agent strings.
### `<strippart>`
@@ -536,7 +563,7 @@ advanced. Example: `s/^EPRT .*/EPRT stripped/`.
### `<protocol [nonewline="yes"]>`
-the protocol dump curl should transmit, if 'nonewline' is set, we will cut off
+the protocol dump curl should transmit, if `nonewline` is set, we will cut off
the trailing newline of this given data before comparing with the one actually
sent by the client The `<strip>` and `<strippart>` rules are applied before
comparisons are made.
@@ -544,7 +571,7 @@ comparisons are made.
### `<proxy [nonewline="yes"]>`
The protocol dump curl should transmit to a HTTP proxy (when the http-proxy
-server is used), if 'nonewline' is set, we will cut off the trailing newline
+server is used), if `nonewline` is set, we will cut off the trailing newline
of this given data before comparing with the one actually sent by the client
The `<strip>` and `<strippart>` rules are applied before comparisons are made.
@@ -554,7 +581,7 @@ This verifies that this data was passed to stderr.
Use the mode="text" attribute if the output is in text mode on platforms that
have a text/binary difference.
-If 'nonewline' is set, we will cut off the trailing newline of this given data
+If `nonewline` is set, we will cut off the trailing newline of this given data
before comparing with the one actually received by the client
### `<stdout [mode="text"] [nonewline="yes"]>`
@@ -563,11 +590,11 @@ This verifies that this data was passed to stdout.
Use the mode="text" attribute if the output is in text mode on platforms that
have a text/binary difference.
-If 'nonewline' is set, we will cut off the trailing newline of this given data
+If `nonewline` is set, we will cut off the trailing newline of this given data
before comparing with the one actually received by the client
### `<file name="log/filename" [mode="text"]>`
-The file's contents must be identical to this after the test is complete. Use
+The file's contents must be identical to this after the test is complete. Use
the mode="text" attribute if the output is in text mode on platforms that have
a text/binary difference.
@@ -586,7 +613,7 @@ compared with what is stored in the test file. This is pretty
advanced. Example: "s/^EPRT .*/EPRT stripped/"
### `<stripfile1>`
-1 to 4 can be appended to 'stripfile' to strip the corresponding <fileN>
+1 to 4 can be appended to `stripfile` to strip the corresponding <fileN>
content
### `<stripfile2>`
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7c6498183..829e125d2 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
HTMLPAGES = testcurl.html runtests.html
@@ -32,7 +34,7 @@ EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl \
manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py \
negtelnetserver.py smbserver.py util.py \
disable-scan.pl manpage-syntax.pl error-codes.pl badsymbols.pl \
- azure.pm appveyor.pm version-scan.pl options-scan.pl
+ azure.pm appveyor.pm version-scan.pl options-scan.pl markdown-uppercase.pl
DISTCLEANFILES = configurehelp.pm
@@ -73,7 +75,7 @@ TEST_E = -a -e
TEST_NF = -a -p !flaky
# special CI target derived from nonflaky with CI-specific flags
-TEST_CI = $(TEST_NF) -r -rm
+TEST_CI = $(TEST_NF) -rm
endif
# make sure that PERL is pointing to an executable
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 984428107..1e4575f54 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
VPATH = @srcdir@
am__is_gnu_make = { \
@@ -111,15 +113,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -268,6 +268,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -285,6 +286,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -342,6 +344,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -360,12 +363,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -432,7 +436,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -449,7 +452,7 @@ EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl \
manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py \
negtelnetserver.py smbserver.py util.py \
disable-scan.pl manpage-syntax.pl error-codes.pl badsymbols.pl \
- azure.pm appveyor.pm version-scan.pl options-scan.pl
+ azure.pm appveyor.pm version-scan.pl options-scan.pl markdown-uppercase.pl
DISTCLEANFILES = configurehelp.pm
@BUILD_UNITTESTS_FALSE@BUILD_UNIT =
@@ -477,7 +480,7 @@ MAN2HTML = roffit $< >$@
@CROSSCOMPILING_FALSE@TEST_NF = -a -p !flaky
# special CI target derived from nonflaky with CI-specific flags
-@CROSSCOMPILING_FALSE@TEST_CI = $(TEST_NF) -r -rm
+@CROSSCOMPILING_FALSE@TEST_CI = $(TEST_NF) -rm
all: all-recursive
.SUFFIXES:
@@ -491,9 +494,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tests/Makefile
+ $(AUTOMAKE) --foreign tests/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/tests/README.md b/tests/README.md
index db884a2be..7fff0a534 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
# The curl Test Suite
# Running
@@ -47,7 +53,7 @@
continue to work independent on what port numbers the test servers actually
use.
- See [FILEFORMAT](FILEFORMAT.md) for the port number variables.
+ See [`FILEFORMAT`](FILEFORMAT.md) for the port number variables.
### Test servers
@@ -107,15 +113,15 @@
Tests which use the ssh test server, SCP/SFTP/SOCKS tests, might be badly
influenced by the output of system wide or user specific shell startup
scripts, .bashrc, .profile, /etc/csh.cshrc, .login, /etc/bashrc, etc. which
- output text messages or escape sequences on user login. When these shell
+ output text messages or escape sequences on user login. When these shell
startup messages or escape sequences are output they might corrupt the
expected stream of data which flows to the sftp-server or from the ssh
- client which can result in bad test behavior or even prevent the test
- server from running.
+ client which can result in bad test behavior or even prevent the test server
+ from running.
If the test suite ssh or sftp server fails to start up and logs the message
'Received message too long' then you are certainly suffering the unwanted
- output of a shell startup script. Locate, cleanup or adjust the shell
+ output of a shell startup script. Locate, cleanup or adjust the shell
script.
### Memory test
@@ -123,15 +129,15 @@
The test script will check that all allocated memory is freed properly IF
curl has been built with the `CURLDEBUG` define set. The script will
automatically detect if that is the case, and it will use the
- 'memanalyze.pl' script to analyze the memory debugging output.
+ `memanalyze.pl` script to analyze the memory debugging output.
Also, if you run tests on a machine where valgrind is found, the script will
use valgrind to run the test with (unless you use `-n`) to further verify
correctness.
- runtests.pl's `-t` option will enable torture testing mode, which runs each
+ The `runtests.pl` `-t` option enables torture testing mode. It 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
+ successive run. This tests the out of memory error handling code to ensure
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.
@@ -139,10 +145,9 @@
### Debug
If a test case fails, you can conveniently get the script to invoke the
- debugger (gdb) for you with the server running and the exact same command
- line parameters that failed. Just invoke `runtests.pl <test number> -g` and
- then just type 'run' in the debugger to perform the command through the
- debugger.
+ debugger (gdb) for you with the server running and the same command line
+ parameters that failed. Just invoke `runtests.pl <test number> -g` and then
+ just type 'run' in the debugger to perform the command through the debugger.
### Logs
@@ -154,33 +159,33 @@
All test cases are put in the `data/` subdirectory. Each test is stored in
the file named according to the test number.
- See [FILEFORMAT.md](FILEFORMAT.md) for a description of the test case file
+ See [`FILEFORMAT`](FILEFORMAT.md) for a description of the test case file
format.
### Code coverage
gcc provides a tool that can determine the code coverage figures for the
- test suite. To use it, configure curl with `CFLAGS='-fprofile-arcs
- -ftest-coverage -g -O0'`. Make sure you run the normal and torture tests to
+ test suite. To use it, configure curl with `CFLAGS='-fprofile-arcs
+ -ftest-coverage -g -O0'`. Make sure you run the normal and torture tests to
get more full coverage, i.e. do:
make test
make test-torture
- The graphical tool ggcov can be used to browse the source and create
- coverage reports on *NIX hosts:
+ The graphical tool `ggcov` can be used to browse the source and create
+ coverage reports on \*nix hosts:
ggcov -r lib src
- The text mode tool gcov may also be used, but it doesn't handle object files
- in more than one directory very well.
+ The text mode tool `gcov` may also be used, but it doesn't handle object
+ files in more than one directory correctly.
### Remote testing
The runtests.pl script provides some hooks to allow curl to be tested on a
- machine where perl can not be run. The test framework in this case runs on
+ machine where perl can not be run. The test framework in this case runs on
a workstation where perl is available, while curl itself is run on a remote
- system using ssh or some other remote execution method. See the comments at
+ system using ssh or some other remote execution method. See the comments at
the beginning of runtests.pl for details.
## Test case numbering
@@ -206,7 +211,7 @@
These files are `tests/data/test[num]` where `[num]` is just a unique
identifier described above, and the XML-like file format of them is
- described in the separate [FILEFORMAT.md](FILEFORMAT.md) document.
+ described in the separate [`FILEFORMAT`](FILEFORMAT.md) document.
### curl tests
diff --git a/tests/appveyor.pm b/tests/appveyor.pm
index bc905c1d6..182153464 100644
--- a/tests/appveyor.pm
+++ b/tests/appveyor.pm
@@ -5,8 +5,8 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-# Copyright (C) 2020, Marc Hoersken, <info@marc-hoersken.de>
+# Copyright (C) 2020-2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2020-2022, Marc Hoersken, <info@marc-hoersken.de>
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
use strict;
diff --git a/tests/azure.pm b/tests/azure.pm
index 4f64622b0..e6d3bf8f7 100644
--- a/tests/azure.pm
+++ b/tests/azure.pm
@@ -5,8 +5,8 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-# Copyright (C) 2020, Marc Hoersken, <info@marc-hoersken.de>
+# Copyright (C) 2020-2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2020-2022, Marc Hoersken, <info@marc-hoersken.de>
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
use strict;
diff --git a/tests/badsymbols.pl b/tests/badsymbols.pl
index 73daa5024..392b190f8 100755
--- a/tests/badsymbols.pl
+++ b/tests/badsymbols.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2010-2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010-2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# This script grew out of help from Przemyslaw Iskra and Balint Szilakszi
diff --git a/tests/certs/Makefile.am b/tests/certs/Makefile.am
index c406417ad..0563e079e 100644
--- a/tests/certs/Makefile.am
+++ b/tests/certs/Makefile.am
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign
diff --git a/tests/certs/Makefile.in b/tests/certs/Makefile.in
index f6873d46e..a631c1b51 100644
--- a/tests/certs/Makefile.in
+++ b/tests/certs/Makefile.in
@@ -89,15 +89,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = tests/certs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -247,6 +245,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -264,6 +263,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -321,6 +321,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -339,12 +340,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -411,7 +413,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -438,6 +439,8 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign
SUBDIRS = scripts
diff --git a/tests/certs/scripts/Makefile.am b/tests/certs/scripts/Makefile.am
index 0f381ee7a..c7e8a16c2 100644
--- a/tests/certs/scripts/Makefile.am
+++ b/tests/certs/scripts/Makefile.am
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign
diff --git a/tests/certs/scripts/Makefile.in b/tests/certs/scripts/Makefile.in
index 91676ff06..c1d63cc94 100644
--- a/tests/certs/scripts/Makefile.in
+++ b/tests/certs/scripts/Makefile.in
@@ -89,15 +89,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = tests/certs/scripts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -189,6 +187,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -206,6 +205,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -263,6 +263,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -281,12 +282,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -353,7 +355,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -380,6 +381,8 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign
SCRIPTFILES = \
diff --git a/tests/certs/scripts/genroot.sh b/tests/certs/scripts/genroot.sh
index 963f34350..cca09c7e3 100755
--- a/tests/certs/scripts/genroot.sh
+++ b/tests/certs/scripts/genroot.sh
@@ -1,9 +1,27 @@
#!/bin/bash
-
-# (c) CopyRight 2000 - 2020, EdelWeb for EdelKey and OpenEvidence
-# Author: Peter Sylvester
-
-# "libre" for integration with curl
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2000 - 2022, EdelWeb for EdelKey and OpenEvidence
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
OPENSSL=openssl
if [ -f /usr/local/ssl/bin/openssl ] ; then
diff --git a/tests/certs/scripts/genserv.sh b/tests/certs/scripts/genserv.sh
index dcbc0486b..24fb395f6 100755
--- a/tests/certs/scripts/genserv.sh
+++ b/tests/certs/scripts/genserv.sh
@@ -1,9 +1,27 @@
#!/bin/bash
-
-# (c) CopyRight 2000 - 2020, EdelWeb for EdelKey and OpenEvidence
-# Author: Peter Sylvester
-
-# "libre" for integration with curl
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2000 - 2022, EdelWeb for EdelKey and OpenEvidence
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
OPENSSL=openssl
if [ -f /usr/local/ssl/bin/openssl ] ; then
diff --git a/tests/data/CMakeLists.txt b/tests/data/CMakeLists.txt
index 883d58358..dfe0fe2f8 100644
--- a/tests/data/CMakeLists.txt
+++ b/tests/data/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,11 +18,9 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Loads 'TESTCASES' from for the 'make show' target in runtests.pl
transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
-
-# Prints all available test cases. Do not quote TESTCASES, it must be displayed
-# as a space-separated string rather than comma-separated (a list in CMake).
-add_custom_target(show COMMAND echo ${TESTCASES})
diff --git a/tests/data/DISABLED b/tests/data/DISABLED
index 371ebc481..d4a451b1d 100644
--- a/tests/data/DISABLED
+++ b/tests/data/DISABLED
@@ -1,3 +1,27 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+#
# This file can be used to specify test cases that should not run when all
# test cases are run by runtests.pl. Just add the plain test case numbers, one
# per line.
@@ -42,27 +66,43 @@
%if hyper
265
266
-357
-358
-359
565
579
-580
-581
587
-670
-671
-672
-673
-718
+# 1021 re-added here due to flakiness
1021
+1117
1417
1533
1540
1591
-1700
-1701
-1702
-1800
+1941
+1942
+1943
+2301
+2302
%endif
2043
+# Tests that are disabled here for rustls are SUPPOSED to work
+%if rustls
+312
+313
+400
+401
+403
+404
+406
+407
+408
+409
+1112
+1272
+%endif
+# The CRL test doesn't work with wolfSSL
+%if wolfssl
+313
+%endif
+# The CRL test doesn't work with BearSSL
+%if bearssl
+313
+%endif
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 2e10bd4d1..e627f16c5 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
iall:
install:
@@ -27,21 +29,3 @@ test:
include Makefile.inc
EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt
-
-filecheck:
- @mkdir test-place; \
- cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
- rm -f test-place/*~; \
- for f in $(EXTRA_DIST); do \
- if test -f "$(top_srcdir)/tests/data/$$f"; then \
- rm -f "test-place/$$f"; \
- else \
- echo "$$f is listed but missing!"; \
- fi \
- done; \
- echo "Local files not present in EXTRA_DIST:" ; \
- ls test-place; \
- ! ls test-place | grep . >/dev/null ; \
- RC=$$? ; \
- rm -rf test-place ; \
- exit $$RC
diff --git a/tests/data/Makefile.in b/tests/data/Makefile.in
index 813810851..f16966f9a 100644
--- a/tests/data/Makefile.in
+++ b/tests/data/Makefile.in
@@ -34,6 +34,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
VPATH = @srcdir@
am__is_gnu_make = { \
@@ -111,15 +113,13 @@ build_triplet = @build@
host_triplet = @host@
subdir = tests/data
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -211,6 +211,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -228,6 +229,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -285,6 +287,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -303,12 +306,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -375,7 +379,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -423,16 +426,17 @@ test334 test335 test336 test337 test338 test339 test340 test341 test342 \
test343 test344 test345 test346 test347 test348 test349 test350 test351 \
test352 test353 test354 test355 test356 test357 test358 test359 test360 \
test361 test362 test363 test364 test365 test366 test367 test368 test369 \
-test370 test371 \
-\
-test392 test393 test394 test395 test396 test397 \
+test370 test371 test372 test373 test374 test375 test376 test378 test379 \
+test380 test381 test383 test384 test385 test386 test387 test388 test389 \
+test390 test391 test392 test393 test394 test395 test396 test397 test398 \
+test399 test400 test401 test402 test403 test404 test405 test406 test407 \
+test408 test409 test410 test411 test412 test413 test414 test415 \
\
-test400 test401 test402 test403 test404 test405 test406 test407 test408 \
-test409 test410 \
+test430 test431 test432 test433 test434 test435 test436 \
\
-test430 test431 test432 test433 test434 test435 \
+test440 test441 test442 test443 test444 test445 \
\
-test490 test491 test492 test493 test494 \
+test490 test491 test492 test493 test494 test495 test496 \
\
test500 test501 test502 test503 test504 test505 test506 test507 test508 \
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
@@ -450,10 +454,11 @@ 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 test642 \
-test643 test645 test646 test647 test648 test649 test650 test651 \
+test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 test661 \
test662 test663 test664 test665 test666 test667 test668 test669 \
test670 test671 test672 test673 test674 test675 test676 test677 test678 \
+test679 test680 test681 test682 test683 test684 test685 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
@@ -469,7 +474,7 @@ 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 test883 test884 test885 test886 test887 test888 test889 \
-test890 test891 test892 test893 test894 test895 test896 test897 \
+test890 test891 test892 test893 test894 test895 test896 test897 test898 \
\
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
@@ -479,7 +484,7 @@ test936 test937 test938 test939 test940 test941 test942 test943 test944 \
test945 test946 test947 test948 test949 test950 test951 test952 test953 \
test954 test955 test956 test957 test958 test959 test960 test961 test962 \
test963 test964 test965 test966 test967 test968 test969 test970 test971 \
-test972 \
+test972 test973 test974 test975 test976 test977 \
\
test980 test981 test982 test983 test984 test985 test986 \
\
@@ -519,7 +524,7 @@ test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 \
test1248 test1249 test1250 test1251 test1252 test1253 test1254 test1255 \
test1256 test1257 test1258 test1259 test1260 test1261 test1262 test1263 \
test1264 test1265 test1266 test1267 test1268 test1269 test1270 test1271 \
-test1272 test1273 \
+test1272 test1273 test1274 test1275 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 test1293 test1294 test1295 \
@@ -544,40 +549,46 @@ test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 \
test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 \
test1448 test1449 test1450 test1451 test1452 test1453 test1454 test1455 \
test1456 test1457 test1458 test1459 test1460 test1461 test1462 test1463 \
-test1464 test1465 test1466 \
+test1464 test1465 test1466 test1467 test1468 \
\
test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
-test1540 test1542 \
+test1540 test1542 test1543 \
\
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
test1566 test1567 test1568 test1569 test1570 \
\
-test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
+test1590 test1591 test1592 test1593 test1594 test1595 test1596 test1597 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
-test1608 test1609 test1610 test1611 test1612 test1613 \
+test1608 test1609 test1610 test1611 test1612 test1613 test1614 \
\
test1620 test1621 \
\
-test1630 test1631 test1632 test1633 test1634 \
+test1630 test1631 test1632 test1633 test1634 test1635 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
test1660 test1661 \
\
+test1670 test1671 \
+\
+test1680 test1681 test1682 test1683 \
+\
test1700 test1701 test1702 test1703 \
\
test1800 test1801 \
\
test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \
-test1916 test1917 test1918 \
+test1916 test1917 test1918 test1919 \
\
-test1933 test1934 test1935 test1936 test1937 test1938 test1939 \
+test1933 test1934 test1935 test1936 test1937 test1938 test1939 test1940 \
+test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 \
+test1955 \
\
test2000 test2001 test2002 test2003 test2004 \
\
@@ -595,10 +606,12 @@ test2100 \
\
test2200 test2201 test2202 test2203 test2204 test2205 \
\
+test2300 test2301 test2302 test2303 \
+\
test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015 \
test3016 test3017 test3018 test3019 test3020 test3021 test3022 test3023 \
-test3024 test3025
+test3024 test3025 test3026 test3027
# TESTCASES are taken from Makefile.inc
@@ -615,9 +628,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/data/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tests/data/Makefile
+ $(AUTOMAKE) --foreign tests/data/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -804,7 +817,7 @@ uninstall-am:
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -817,29 +830,13 @@ uninstall-am:
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
iall:
install:
test:
-filecheck:
- @mkdir test-place; \
- cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
- rm -f test-place/*~; \
- for f in $(EXTRA_DIST); do \
- if test -f "$(top_srcdir)/tests/data/$$f"; then \
- rm -f "test-place/$$f"; \
- else \
- echo "$$f is listed but missing!"; \
- fi \
- done; \
- echo "Local files not present in EXTRA_DIST:" ; \
- ls test-place; \
- ! ls test-place | grep . >/dev/null ; \
- RC=$$? ; \
- rm -rf test-place ; \
- exit $$RC
-
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 9e0372b6e..cbb27973c 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# this list is in numerical order
@@ -61,16 +63,17 @@ test334 test335 test336 test337 test338 test339 test340 test341 test342 \
test343 test344 test345 test346 test347 test348 test349 test350 test351 \
test352 test353 test354 test355 test356 test357 test358 test359 test360 \
test361 test362 test363 test364 test365 test366 test367 test368 test369 \
-test370 test371 \
-\
-test392 test393 test394 test395 test396 test397 \
+test370 test371 test372 test373 test374 test375 test376 test378 test379 \
+test380 test381 test383 test384 test385 test386 test387 test388 test389 \
+test390 test391 test392 test393 test394 test395 test396 test397 test398 \
+test399 test400 test401 test402 test403 test404 test405 test406 test407 \
+test408 test409 test410 test411 test412 test413 test414 test415 \
\
-test400 test401 test402 test403 test404 test405 test406 test407 test408 \
-test409 test410 \
+test430 test431 test432 test433 test434 test435 test436 \
\
-test430 test431 test432 test433 test434 test435 \
+test440 test441 test442 test443 test444 test445 \
\
-test490 test491 test492 test493 test494 \
+test490 test491 test492 test493 test494 test495 test496 \
\
test500 test501 test502 test503 test504 test505 test506 test507 test508 \
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
@@ -88,10 +91,11 @@ 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 test642 \
-test643 test645 test646 test647 test648 test649 test650 test651 \
+test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 test661 \
test662 test663 test664 test665 test666 test667 test668 test669 \
test670 test671 test672 test673 test674 test675 test676 test677 test678 \
+test679 test680 test681 test682 test683 test684 test685 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
@@ -107,7 +111,7 @@ 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 test883 test884 test885 test886 test887 test888 test889 \
-test890 test891 test892 test893 test894 test895 test896 test897 \
+test890 test891 test892 test893 test894 test895 test896 test897 test898 \
\
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
@@ -117,7 +121,7 @@ test936 test937 test938 test939 test940 test941 test942 test943 test944 \
test945 test946 test947 test948 test949 test950 test951 test952 test953 \
test954 test955 test956 test957 test958 test959 test960 test961 test962 \
test963 test964 test965 test966 test967 test968 test969 test970 test971 \
-test972 \
+test972 test973 test974 test975 test976 test977 \
\
test980 test981 test982 test983 test984 test985 test986 \
\
@@ -157,7 +161,7 @@ test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 \
test1248 test1249 test1250 test1251 test1252 test1253 test1254 test1255 \
test1256 test1257 test1258 test1259 test1260 test1261 test1262 test1263 \
test1264 test1265 test1266 test1267 test1268 test1269 test1270 test1271 \
-test1272 test1273 \
+test1272 test1273 test1274 test1275 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 test1293 test1294 test1295 \
@@ -182,40 +186,46 @@ test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 \
test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 \
test1448 test1449 test1450 test1451 test1452 test1453 test1454 test1455 \
test1456 test1457 test1458 test1459 test1460 test1461 test1462 test1463 \
-test1464 test1465 test1466 \
+test1464 test1465 test1466 test1467 test1468 \
\
test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
-test1540 test1542 \
+test1540 test1542 test1543 \
\
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
test1566 test1567 test1568 test1569 test1570 \
\
-test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
+test1590 test1591 test1592 test1593 test1594 test1595 test1596 test1597 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
-test1608 test1609 test1610 test1611 test1612 test1613 \
+test1608 test1609 test1610 test1611 test1612 test1613 test1614 \
\
test1620 test1621 \
\
-test1630 test1631 test1632 test1633 test1634 \
+test1630 test1631 test1632 test1633 test1634 test1635 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
test1660 test1661 \
\
+test1670 test1671 \
+\
+test1680 test1681 test1682 test1683 \
+\
test1700 test1701 test1702 test1703 \
\
test1800 test1801 \
\
test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \
-test1916 test1917 test1918 \
+test1916 test1917 test1918 test1919 \
\
-test1933 test1934 test1935 test1936 test1937 test1938 test1939 \
+test1933 test1934 test1935 test1936 test1937 test1938 test1939 test1940 \
+test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 \
+test1955 \
\
test2000 test2001 test2002 test2003 test2004 \
\
@@ -233,7 +243,9 @@ test2100 \
\
test2200 test2201 test2202 test2203 test2204 test2205 \
\
+test2300 test2301 test2302 test2303 \
+\
test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015 \
test3016 test3017 test3018 test3019 test3020 test3021 test3022 test3023 \
-test3024 test3025
+test3024 test3025 test3026 test3027
diff --git a/tests/data/test1001 b/tests/data/test1001
index 59d2ff869..df42f7134 100644
--- a/tests/data/test1001
+++ b/tests/data/test1001
@@ -59,7 +59,7 @@ ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test1002 b/tests/data/test1002
index d33f35b9c..ca58be6f4 100644
--- a/tests/data/test1002
+++ b/tests/data/test1002
@@ -58,7 +58,7 @@ ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test1004 b/tests/data/test1004
index cb2b6d69c..3b75081bd 100644
--- a/tests/data/test1004
+++ b/tests/data/test1004
@@ -29,6 +29,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
</server>
diff --git a/tests/data/test1008 b/tests/data/test1008
index b115c31ff..fee52702f 100644
--- a/tests/data/test1008
+++ b/tests/data/test1008
@@ -7,6 +7,7 @@ HTTP CONNECT
HTTP proxy
HTTP proxy NTLM auth
chunked Transfer-Encoding
+NTLM
</keywords>
</info>
@@ -88,24 +89,14 @@ http
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy CONNECT auth NTLM with chunked-encoded 407 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>
+</name>
+<command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -119,7 +110,7 @@ Proxy-Connection: Keep-Alive
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test1021 b/tests/data/test1021
index 9afe95f4b..bb34615fd 100644
--- a/tests/data/test1021
+++ b/tests/data/test1021
@@ -7,6 +7,7 @@ HTTP CONNECT
HTTP proxy
HTTP proxy NTLM auth
--proxy-anyauth
+NTLM
</keywords>
</info>
# Server-side
@@ -17,7 +18,7 @@ HTTP/1.1 407 Authorization Required to proxy me my dear swsclose
Proxy-Authenticate: NTLM
Content-Length: 16
Connection: close
-
+
data to discard
</connect>
@@ -26,7 +27,7 @@ data to discard
HTTP/1.1 407 Authorization Required to proxy me my dear
Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
Content-Length: 28
-
+
27 bytes and newline to ign
</connect1001>
@@ -64,11 +65,11 @@ HTTP/1.1 407 Authorization Required to proxy me my dear swsclose
Proxy-Authenticate: NTLM
Content-Length: 16
Connection: close
-
+
HTTP/1.1 407 Authorization Required to proxy me my dear
Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
Content-Length: 28
-
+
HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
@@ -93,24 +94,14 @@ http
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
- </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>
+</name>
+<command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth --proxytunnel
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -129,7 +120,7 @@ Proxy-Connection: Keep-Alive
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test1034 b/tests/data/test1034
index 565a1b728..ec41651a2 100644
--- a/tests/data/test1034
+++ b/tests/data/test1034
@@ -25,6 +25,7 @@ none
<features>
idn
http
+proxy
</features>
<setenv>
LC_ALL=
diff --git a/tests/data/test1035 b/tests/data/test1035
index a2b98cc94..73d8aefed 100644
--- a/tests/data/test1035
+++ b/tests/data/test1035
@@ -23,6 +23,7 @@ none
<features>
idn
http
+proxy
</features>
<setenv>
LC_ALL=
diff --git a/tests/data/test1048 b/tests/data/test1048
index 5ed267b55..e81e19f26 100644
--- a/tests/data/test1048
+++ b/tests/data/test1048
@@ -7,7 +7,6 @@ IPv6
PASV
LIST
--interface
-IPv6
</keywords>
</info>
diff --git a/tests/data/test1053 b/tests/data/test1053
index bd5de2568..06abcf1fb 100644
--- a/tests/data/test1053
+++ b/tests/data/test1053
@@ -51,6 +51,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1064 b/tests/data/test1064
index 81014845f..1f5b4526f 100644
--- a/tests/data/test1064
+++ b/tests/data/test1064
@@ -27,7 +27,7 @@ still ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test1065 b/tests/data/test1065
index 8bef0e1e0..02e9a8565 100644
--- a/tests/data/test1065
+++ b/tests/data/test1065
@@ -28,7 +28,7 @@ still ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test1095 b/tests/data/test1095
index efb8413b2..d4cc082d1 100644
--- a/tests/data/test1095
+++ b/tests/data/test1095
@@ -73,7 +73,7 @@ Accept: */*
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: Digest username="testuser", realm="test \"this\" realm!!", nonce="1053604145", uri="/%TESTNUMBER", response="a1c7931ece9e8617bae2715045e4f49f"
+Authorization: Digest username="testuser", realm="test \"this\" realm!!", nonce="1053604145", uri="/%TESTNUMBER", response="df3246f44d2bc8de0e9f8fc4d7cf6e95"
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test1105 b/tests/data/test1105
index a06a05173..396933838 100644
--- a/tests/data/test1105
+++ b/tests/data/test1105
@@ -11,15 +11,18 @@ cookiejar
# Server-side
<reply>
<data>
-HTTP/1.1 200 OK
-Date: Tue, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Type: text/html
-Funny-head: yesyes swsclose
-Set-Cookie: foobar=name;
-Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
-Set-Cookie: partmatch=present; domain=.0.0.1; path=/;
-
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Type: text/html
+Funny-head: yesyes swsclose
+Set-Cookie: foobar=name;
+Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
+Set-Cookie: partmatch=present; domain=.0.0.1; path=/;
+Set-Cookie: foo bar=barfoo
+Set-Cookie: bar foo=
+Set-Cookie: bar=foo bar
+
</data>
</reply>
diff --git a/tests/data/test1115 b/tests/data/test1115
index 315fce3fc..f14182c87 100644
--- a/tests/data/test1115
+++ b/tests/data/test1115
@@ -25,7 +25,7 @@ Content-Length: 0
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test1116 b/tests/data/test1116
index 7a883bfe1..3543e751b 100644
--- a/tests/data/test1116
+++ b/tests/data/test1116
@@ -41,6 +41,9 @@ chunky-trailer: header data
another-header: yes
%endif
</datacheck>
+<servercmd>
+writedelay: 10
+</servercmd>
</reply>
#
diff --git a/tests/data/test1117 b/tests/data/test1117
index 50466aa32..405aa861e 100644
--- a/tests/data/test1117
+++ b/tests/data/test1117
@@ -31,7 +31,7 @@ partial body
</data1>
<servercmd>
-writedelay: 1
+writedelay: 1000
</servercmd>
</reply>
diff --git a/tests/data/test1133 b/tests/data/test1133
index cd15f549f..ae6c323ac 100644
--- a/tests/data/test1133
+++ b/tests/data/test1133
@@ -19,6 +19,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1135 b/tests/data/test1135
index 37a55427f..e0aae514f 100644
--- a/tests/data/test1135
+++ b/tests/data/test1135
@@ -28,83 +28,94 @@ Verify CURL_EXTERN order
<verify>
<stdout>
-CURL_EXTERN int curl_strequal(const char *s1, const char *s2);
-CURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n);
-CURL_EXTERN curl_mime *curl_mime_init(CURL *easy);
-CURL_EXTERN void curl_mime_free(curl_mime *mime);
-CURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime);
-CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name);
-CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);
-CURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part,
-CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
-CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
-CURL_EXTERN void curl_formfree(struct curl_httppost *form);
-CURL_EXTERN char *curl_getenv(const char *variable);
-CURL_EXTERN char *curl_version(void);
-CURL_EXTERN char *curl_easy_escape(CURL *handle,
-CURL_EXTERN char *curl_escape(const char *string,
-CURL_EXTERN char *curl_easy_unescape(CURL *handle,
-CURL_EXTERN char *curl_unescape(const char *string,
-CURL_EXTERN void curl_free(void *p);
-CURL_EXTERN CURLcode curl_global_init(long flags);
-CURL_EXTERN CURLcode curl_global_init_mem(long flags,
-CURL_EXTERN void curl_global_cleanup(void);
-CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
-CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
-CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
-CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
-CURL_EXTERN CURLSH *curl_share_init(void);
-CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
-CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
-CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
-CURL_EXTERN const char *curl_easy_strerror(CURLcode);
-CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
-CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
-CURL_EXTERN CURL *curl_easy_init(void);
-CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
-CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
-CURL_EXTERN void curl_easy_cleanup(CURL *curl);
-CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
-CURL_EXTERN CURL *curl_easy_duphandle(CURL *curl);
-CURL_EXTERN void curl_easy_reset(CURL *curl);
-CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
-CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
-CURL_EXTERN CURLcode curl_easy_upkeep(CURL *curl);
-CURL_EXTERN int curl_mprintf(const char *format, ...);
-CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
-CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
-CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
-CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
-CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
-CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
-CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
-CURL_EXTERN char *curl_maprintf(const char *format, ...);
-CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
-CURL_EXTERN CURLM *curl_multi_init(void);
-CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_wakeup(CURLM *multi_handle);
-CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
-CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
-CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
-CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
-CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
-CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
-CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
+CURL_EXTERN int curl_strequal
+CURL_EXTERN int curl_strnequal
+CURL_EXTERN curl_mime *curl_mime_init
+CURL_EXTERN void curl_mime_free
+CURL_EXTERN curl_mimepart *curl_mime_addpart
+CURL_EXTERN CURLcode curl_mime_name
+CURL_EXTERN CURLcode curl_mime_filename
+CURL_EXTERN CURLcode curl_mime_type
+CURL_EXTERN CURLcode curl_mime_encoder
+CURL_EXTERN CURLcode curl_mime_data
+CURL_EXTERN CURLcode curl_mime_filedata
+CURL_EXTERN CURLcode curl_mime_data_cb
+CURL_EXTERN CURLcode curl_mime_subparts
+CURL_EXTERN CURLcode curl_mime_headers
+CURL_EXTERN CURLFORMcode curl_formadd
+CURL_EXTERN int curl_formget
+CURL_EXTERN void curl_formfree
+CURL_EXTERN char *curl_getenv
+CURL_EXTERN char *curl_version
+CURL_EXTERN char *curl_easy_escape
+CURL_EXTERN char *curl_escape
+CURL_EXTERN char *curl_easy_unescape
+CURL_EXTERN char *curl_unescape
+CURL_EXTERN void curl_free
+CURL_EXTERN CURLcode curl_global_init
+CURL_EXTERN CURLcode curl_global_init_mem
+CURL_EXTERN void curl_global_cleanup
+CURL_EXTERN CURLsslset curl_global_sslset
+CURL_EXTERN struct curl_slist *curl_slist_append
+CURL_EXTERN void curl_slist_free_all
+CURL_EXTERN time_t curl_getdate
+CURL_EXTERN CURLSH *curl_share_init
+CURL_EXTERN CURLSHcode curl_share_setopt
+CURL_EXTERN CURLSHcode curl_share_cleanup
+CURL_EXTERN curl_version_info_data *curl_version_info
+CURL_EXTERN const char *curl_easy_strerror
+CURL_EXTERN const char *curl_share_strerror
+CURL_EXTERN CURLcode curl_easy_pause
+CURL_EXTERN CURL *curl_easy_init
+CURL_EXTERN CURLcode curl_easy_setopt
+CURL_EXTERN CURLcode curl_easy_perform
+CURL_EXTERN void curl_easy_cleanup
+CURL_EXTERN CURLcode curl_easy_getinfo
+CURL_EXTERN CURL *curl_easy_duphandle
+CURL_EXTERN void curl_easy_reset
+CURL_EXTERN CURLcode curl_easy_recv
+CURL_EXTERN CURLcode curl_easy_send
+CURL_EXTERN CURLcode curl_easy_upkeep
+CURL_EXTERN int curl_mprintf
+CURL_EXTERN int curl_mfprintf
+CURL_EXTERN int curl_msprintf
+CURL_EXTERN int curl_msnprintf
+CURL_EXTERN int curl_mvprintf
+CURL_EXTERN int curl_mvfprintf
+CURL_EXTERN int curl_mvsprintf
+CURL_EXTERN int curl_mvsnprintf
+CURL_EXTERN char *curl_maprintf
+CURL_EXTERN char *curl_mvaprintf
+CURL_EXTERN CURLM *curl_multi_init
+CURL_EXTERN CURLMcode curl_multi_add_handle
+CURL_EXTERN CURLMcode curl_multi_remove_handle
+CURL_EXTERN CURLMcode curl_multi_fdset
+CURL_EXTERN CURLMcode curl_multi_wait
+CURL_EXTERN CURLMcode curl_multi_poll
+CURL_EXTERN CURLMcode curl_multi_wakeup
+CURL_EXTERN CURLMcode curl_multi_perform
+CURL_EXTERN CURLMcode curl_multi_cleanup
+CURL_EXTERN CURLMsg *curl_multi_info_read
+CURL_EXTERN const char *curl_multi_strerror
+CURL_EXTERN CURLMcode curl_multi_socket
+CURL_EXTERN CURLMcode curl_multi_socket_action
+CURL_EXTERN CURLMcode curl_multi_socket_all
+CURL_EXTERN CURLMcode curl_multi_timeout
+CURL_EXTERN CURLMcode curl_multi_setopt
+CURL_EXTERN CURLMcode curl_multi_assign
+CURL_EXTERN char *curl_pushheader_bynum
+CURL_EXTERN char *curl_pushheader_byname
+CURL_EXTERN CURLU *curl_url
+CURL_EXTERN void curl_url_cleanup
+CURL_EXTERN CURLU *curl_url_dup
+CURL_EXTERN CURLUcode curl_url_get
+CURL_EXTERN CURLUcode curl_url_set
+CURL_EXTERN const char *curl_url_strerror
+CURL_EXTERN const struct curl_easyoption *curl_easy_option_by_name
+CURL_EXTERN const struct curl_easyoption *curl_easy_option_by_id
+CURL_EXTERN const struct curl_easyoption *curl_easy_option_next
+CURL_EXTERN CURLHcode curl_easy_header
+CURL_EXTERN struct curl_header *curl_easy_nextheader
</stdout>
</verify>
diff --git a/tests/data/test1158 b/tests/data/test1158
index 3771f5d0b..3352ba058 100644
--- a/tests/data/test1158
+++ b/tests/data/test1158
@@ -19,6 +19,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1185 b/tests/data/test1185
index 47b4f22aa..eb672efa4 100644
--- a/tests/data/test1185
+++ b/tests/data/test1185
@@ -16,7 +16,7 @@ checksrc
</name>
<command type="perl">
-%SRCDIR/../lib/checksrc.pl log/code%TESTNUMBER.c
+%SRCDIR/../scripts/checksrc.pl log/code%TESTNUMBER.c
</command>
<file name="log/code%TESTNUMBER.c">
/* test source code
diff --git a/tests/data/test1186 b/tests/data/test1186
index e4662b697..8b3834cda 100644
--- a/tests/data/test1186
+++ b/tests/data/test1186
@@ -19,6 +19,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1187 b/tests/data/test1187
index 53abf908f..a8be5c1e4 100644
--- a/tests/data/test1187
+++ b/tests/data/test1187
@@ -14,6 +14,9 @@ MULTIPART
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
smtp
</server>
diff --git a/tests/data/test1189 b/tests/data/test1189
index 229e443d9..c7f21d6f8 100644
--- a/tests/data/test1189
+++ b/tests/data/test1189
@@ -19,6 +19,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1210 b/tests/data/test1210
index 037eb16d8..89cfe61ea 100644
--- a/tests/data/test1210
+++ b/tests/data/test1210
@@ -39,7 +39,7 @@ HTTP GET with -J without Content-Disposition
CURL_TESTDIR=%PWD/log
</setenv>
<command option="no-output,no-include">
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER?junk -J -O
</command>
</client>
@@ -47,7 +47,7 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O
# Verify data after the test has been "shot"
<verify>
<protocol>
-GET /%TESTNUMBER HTTP/1.1
+GET /%TESTNUMBER?junk HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test1212 b/tests/data/test1212
index 5a9308971..d445f9376 100644
--- a/tests/data/test1212
+++ b/tests/data/test1212
@@ -23,6 +23,9 @@ boo
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
</server>
diff --git a/tests/data/test1215 b/tests/data/test1215
index 02e0681a9..6fc59d38b 100644
--- a/tests/data/test1215
+++ b/tests/data/test1215
@@ -6,6 +6,7 @@ HTTP
HTTP GET
HTTP NTLM auth
HTTP proxy
+NTLM
</keywords>
</info>
# Server-side
@@ -60,27 +61,17 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
proxy
</features>
<server>
http
</server>
- <name>
+<name>
HTTP with server NTLM authorization using a proxy
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm --proxy http://%HOSTIP:%HTTPPORT
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -95,7 +86,7 @@ Proxy-Connection: Keep-Alive
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test1235 b/tests/data/test1235
index b04958eeb..24e7f7391 100644
--- a/tests/data/test1235
+++ b/tests/data/test1235
@@ -63,25 +63,21 @@ Accept: */*
</protocol>
<stdout>
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0001
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 15
the number one
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 16
two is nice too
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0001
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 15
the number one
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 16
diff --git a/tests/data/test1238 b/tests/data/test1238
index cfb541c9c..5fbf640e8 100644
--- a/tests/data/test1238
+++ b/tests/data/test1238
@@ -10,7 +10,7 @@ TFTP RRQ
# Server-side
<reply>
<servercmd>
-writedelay: 2
+writedelay: 2000
</servercmd>
# ~1200 bytes (so that they don't fit in two 512 byte chunks)
<data nocheck="yes">
diff --git a/tests/data/test1248 b/tests/data/test1248
index 721c03e73..c289e8c0b 100644
--- a/tests/data/test1248
+++ b/tests/data/test1248
@@ -22,6 +22,9 @@ foo
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
</server>
diff --git a/tests/data/test1249 b/tests/data/test1249
index cae3e995a..554b173ef 100644
--- a/tests/data/test1249
+++ b/tests/data/test1249
@@ -22,6 +22,9 @@ foo
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
</server>
diff --git a/tests/data/test1252 b/tests/data/test1252
index 13fe3b3d9..262cf3c9b 100644
--- a/tests/data/test1252
+++ b/tests/data/test1252
@@ -23,6 +23,9 @@ foo
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
</server>
diff --git a/tests/data/test1274 b/tests/data/test1274
new file mode 100644
index 000000000..f640a69f6
--- /dev/null
+++ b/tests/data/test1274
@@ -0,0 +1,75 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+header line folding
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/
+ fake
+ folded
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Content-Length: 6
+Connection:
+ close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP header line folding
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -D log/out%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<file name="log/out%TESTNUMBER">
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+%if hyper
+Server: test-server/ fake folded
+%else
+Server: test-server/
+ fake
+ folded
+%endif
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Content-Length: 6
+%if hyper
+Connection: close
+%else
+Connection:
+ close
+%endif
+
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test1275 b/tests/data/test1275
new file mode 100644
index 000000000..d1cb223b8
--- /dev/null
+++ b/tests/data/test1275
@@ -0,0 +1,25 @@
+<testcase>
+<info>
+<keywords>
+documentation
+markdown
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+
+<name>
+Verify capital letters after period in markdown files
+</name>
+
+<command type="perl">
+%SRCDIR/markdown-uppercase.pl %SRCDIR/..
+</command>
+</client>
+
+</testcase>
diff --git a/tests/data/test1293 b/tests/data/test1293
index 824886194..fb39ebcd0 100644
--- a/tests/data/test1293
+++ b/tests/data/test1293
@@ -29,6 +29,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1308 b/tests/data/test1308
index 0c7d1b02d..3e827365c 100644
--- a/tests/data/test1308
+++ b/tests/data/test1308
@@ -16,6 +16,7 @@ none
<features>
unittest
http
+Mime
</features>
<name>
formpost unit tests
diff --git a/tests/data/test1315 b/tests/data/test1315
index 3d3faa8af..dd66df71a 100644
--- a/tests/data/test1315
+++ b/tests/data/test1315
@@ -22,6 +22,9 @@ Connection: close
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1322 b/tests/data/test1322
index ffd5048a7..ddc9aaa7f 100644
--- a/tests/data/test1322
+++ b/tests/data/test1322
@@ -46,7 +46,7 @@ HTTP with --resolve and hostname with trailing dot
<verify>
<protocol>
GET /%TESTNUMBER HTTP/1.1
-Host: example.com:%HTTPPORT
+Host: example.com.:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test133 b/tests/data/test133
index e9fe83f7c..ad0d2def7 100644
--- a/tests/data/test133
+++ b/tests/data/test133
@@ -34,7 +34,7 @@ dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
ftp
</server>
<name>
-FTP (compulsory .netrc; ignored user/passwd) dir list PASV
+FTP compulsory .netrc; ignore passwd in URL
</name>
<command>
-n --netrc-file log/netrc%TESTNUMBER ftp://mary:mark@%HOSTIP:%FTPPORT/
@@ -42,7 +42,7 @@ FTP (compulsory .netrc; ignored user/passwd) dir list PASV
<file name="log/netrc%TESTNUMBER" >
# the following two lines were created while testing curl
machine %HOSTIP login user1 password passwd1
-machine %HOSTIP login user2 password passwd2
+machine %HOSTIP login mary password drfrank
</file>
</client>
@@ -50,8 +50,8 @@ machine %HOSTIP login user2 password passwd2
# Verify data after the test has been "shot"
<verify>
<protocol>
-USER user1
-PASS passwd1
+USER mary
+PASS drfrank
PWD
EPSV
TYPE A
diff --git a/tests/data/test1400 b/tests/data/test1400
index b4d29d379..a92b2f22e 100644
--- a/tests/data/test1400
+++ b/tests/data/test1400
@@ -82,18 +82,18 @@ int main(int argc, char *argv[])
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1401 b/tests/data/test1401
index 65efc474c..bbd3e7b64 100644
--- a/tests/data/test1401
+++ b/tests/data/test1401
@@ -31,6 +31,11 @@ http
<name>
--libcurl for GET with various options
</name>
+<features>
+http
+ftp
+file
+</features>
<setenv>
SSL_CERT_FILE=
</setenv>
@@ -91,26 +96,24 @@ int main(int argc, char *argv[])
curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
%endif
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
- curl_easy_setopt(hnd, CURLOPT_PROTOCOLS, (long)CURLPROTO_FILE |
- (long)CURLPROTO_FTP |
- (long)CURLPROTO_HTTP);
+ curl_easy_setopt(hnd, CURLOPT_PROTOCOLS_STR, "file,ftp,http");
/* Here is a list of options the curl code used that cannot get generated
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1402 b/tests/data/test1402
index c111af4a9..667be124c 100644
--- a/tests/data/test1402
+++ b/tests/data/test1402
@@ -87,18 +87,18 @@ int main(int argc, char *argv[])
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1403 b/tests/data/test1403
index f86f0111c..5ecf2d28c 100644
--- a/tests/data/test1403
+++ b/tests/data/test1403
@@ -69,7 +69,7 @@ int main(int argc, char *argv[])
hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
- curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER?foo=bar&baz=quux");
+ curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER\?foo=bar&baz=quux");
curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
@@ -82,18 +82,18 @@ int main(int argc, char *argv[])
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1404 b/tests/data/test1404
index 3b41c5cef..ae37c3065 100644
--- a/tests/data/test1404
+++ b/tests/data/test1404
@@ -23,6 +23,9 @@ Connection: close
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
@@ -156,18 +159,18 @@ int main(int argc, char *argv[])
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1405 b/tests/data/test1405
index aa7cf4da1..31b7d6971 100644
--- a/tests/data/test1405
+++ b/tests/data/test1405
@@ -96,18 +96,18 @@ int main(int argc, char *argv[])
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1406 b/tests/data/test1406
index 969df638e..0be9bfa61 100644
--- a/tests/data/test1406
+++ b/tests/data/test1406
@@ -89,18 +89,18 @@ int main(int argc, char *argv[])
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1407 b/tests/data/test1407
index 7f48de2d1..d5bfb7f5d 100644
--- a/tests/data/test1407
+++ b/tests/data/test1407
@@ -69,18 +69,18 @@ int main(int argc, char *argv[])
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1420 b/tests/data/test1420
index 92905faba..415e35902 100644
--- a/tests/data/test1420
+++ b/tests/data/test1420
@@ -74,18 +74,18 @@ int main(int argc, char *argv[])
as source easily. You may choose 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
+ CURLOPT_WRITEDATA was set to an object pointer
+ CURLOPT_WRITEFUNCTION was set to a function pointer
+ CURLOPT_READDATA was set to an object pointer
+ CURLOPT_READFUNCTION was set to a function pointer
+ CURLOPT_SEEKDATA was set to an object pointer
+ CURLOPT_SEEKFUNCTION was set to a function pointer
+ CURLOPT_ERRORBUFFER was set to an object pointer
+ CURLOPT_STDERR was set to an object pointer
+ CURLOPT_DEBUGFUNCTION was set to a function pointer
+ CURLOPT_DEBUGDATA was set to an object pointer
+ CURLOPT_HEADERFUNCTION was set to a function pointer
+ CURLOPT_HEADERDATA was set to an object pointer
*/
diff --git a/tests/data/test1459 b/tests/data/test1459
index fde8bf1d6..e8c2b00c5 100644
--- a/tests/data/test1459
+++ b/tests/data/test1459
@@ -17,6 +17,7 @@ mkdir -p %PWD/log/test%TESTNUMBER.dir/.ssh
</precheck>
<features>
sftp
+!oldlibssh
</features>
<name>
SFTP with corrupted known_hosts
@@ -35,6 +36,7 @@ CURL_HOME=%PWD/log/test%TESTNUMBER.dir
# Verify data after the test has been "shot"
<verify>
+# old libssh installs return the wrong thing
<errorcode>
60
</errorcode>
diff --git a/tests/data/test1461 b/tests/data/test1461
index 847f8d1fb..65797a405 100644
--- a/tests/data/test1461
+++ b/tests/data/test1461
@@ -33,7 +33,7 @@ curl important --help
<stdout mode="text">
Usage: curl [options...] <url>
-d, --data <data> HTTP POST data
- -f, --fail Fail silently (no output at all) on HTTP errors
+ -f, --fail Fail fast with no output on HTTP errors
-h, --help <category> Get help for commands
-i, --include Include protocol response headers in the output
-o, --output <file> Write to file instead of stdout
diff --git a/tests/data/test1465 b/tests/data/test1465
index e8caaa2ef..1a28fb1c3 100644
--- a/tests/data/test1465
+++ b/tests/data/test1465
Binary files differ
diff --git a/tests/data/test1467 b/tests/data/test1467
new file mode 100644
index 000000000..1be4c2c76
--- /dev/null
+++ b/tests/data/test1467
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+SOCKS5
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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>
+<features>
+proxy
+unix-sockets
+</features>
+<server>
+http
+socks5unix
+</server>
+ <name>
+HTTP GET via SOCKS5 proxy via unix sockets
+ </name>
+ <command>
+--socks5 localhost%SOCKSUNIXPATH http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1468 b/tests/data/test1468
new file mode 100644
index 000000000..1ff6ada4d
--- /dev/null
+++ b/tests/data/test1468
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+SOCKS5
+SOCKS5h
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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>
+<features>
+proxy
+unix-sockets
+</features>
+<server>
+http
+socks5unix
+</server>
+ <name>
+HTTP GET with host name using SOCKS5h via unix sockets
+ </name>
+ <command>
+http://this.is.a.host.name:%HTTPPORT/%TESTNUMBER --proxy socks5h://localhost%SOCKSUNIXPATH
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: this.is.a.host.name:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<socks>
+atyp 3 => this.is.a.host.name
+</socks>
+</verify>
+</testcase>
diff --git a/tests/data/test150 b/tests/data/test150
index a23b57389..fb906bf4b 100644
--- a/tests/data/test150
+++ b/tests/data/test150
@@ -4,6 +4,7 @@
HTTP
HTTP GET
HTTP NTLM auth
+NTLM
</keywords>
</info>
@@ -59,26 +60,16 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
</server>
- <name>
+<name>
HTTP with NTLM authorization and --fail
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm --fail
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -92,7 +83,7 @@ Accept: */*
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test1501 b/tests/data/test1501
index 9a10e0e7d..9d9263a56 100644
--- a/tests/data/test1501
+++ b/tests/data/test1501
@@ -26,8 +26,11 @@ ftp
<tool>
lib%TESTNUMBER
</tool>
+<killserver>
+ftp
+</killserver>
<name>
-FTP with multi interface and slow LIST response
+FTP with multi interface and slow LIST response
</name>
<command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER/
diff --git a/tests/data/test1523 b/tests/data/test1523
index de31a43c9..a22b0765e 100644
--- a/tests/data/test1523
+++ b/tests/data/test1523
@@ -17,7 +17,7 @@ Funny-head: yesyes
AA
</data>
<servercmd>
-writedelay: 1
+writedelay: 1000
</servercmd>
</reply>
#
diff --git a/tests/data/test1538 b/tests/data/test1538
index d92ec219f..ba5cf29ce 100644
--- a/tests/data/test1538
+++ b/tests/data/test1538
@@ -94,7 +94,7 @@ e58: Problem with the local SSL certificate
e59: Couldn't use specified SSL cipher
e60: SSL peer certificate or SSH remote key was not OK
e61: Unrecognized or bad HTTP Content or Transfer-Encoding
-e62: Invalid LDAP URL
+e62: Unknown error
e63: Maximum file size exceeded
e64: Requested SSL level failed
e65: Send failed since rewinding of the data stream failed
@@ -107,8 +107,8 @@ e71: TFTP: Illegal operation
e72: TFTP: Unknown transfer ID
e73: Remote file already exists
e74: TFTP: No such user
-e75: Conversion failed
-e76: Caller must register CURLOPT_CONV_ callback options
+e75: Unknown error
+e76: Unknown error
e77: Problem with the SSL CA cert (path? access rights?)
e78: Remote file not found
e79: Error in the SSH layer
@@ -131,7 +131,8 @@ e95: HTTP/3 error
e96: QUIC connection error
e97: proxy handshake error
e98: SSL Client Certificate required
-e99: Unknown error
+e99: Unrecoverable error in select/poll
+e100: Unknown error
m-1: Please call curl_multi_perform() soon
m0: No error
m1: Invalid multi handle
@@ -145,7 +146,8 @@ m8: API function called from within callback
m9: Wakeup is unavailable or failed
m10: A libcurl function was given a bad argument
m11: Operation was aborted by an application callback
-m12: Unknown error
+m12: Unrecoverable error in select/poll
+m13: Unknown error
s0: No error
s1: Unknown share option
s2: Share currently in use
@@ -158,7 +160,7 @@ u1: An invalid CURLU pointer was passed as argument
u2: An invalid 'part' argument was passed as argument
u3: Malformed input to a URL function
u4: Port number was not a decimal number between 0 and 65535
-u5: This libcurl build doesn't support the given URL scheme
+u5: Unsupported URL scheme
u6: URL decode error, most likely because of rubbish in the input
u7: A memory function failed
u8: Credentials was passed in the URL when prohibited
@@ -181,7 +183,7 @@ u24: Bad password
u25: Bad path
u26: Bad query
u27: Bad scheme
-u28: Unsupported number of slashes
+u28: Unsupported number of slashes following scheme
u29: Bad user
u30: CURLUcode unknown
</stdout>
diff --git a/tests/data/test1540 b/tests/data/test1540
index 818cbb68d..2dc826555 100644
--- a/tests/data/test1540
+++ b/tests/data/test1540
@@ -34,7 +34,9 @@ Got 4 bytes but pausing!
datad474
MyCoolTrailerHeader: amazingtrailer
</datacheck>
-
+<servercmd>
+writedelay: 10
+</servercmd>
</reply>
# Client-side
<client>
diff --git a/tests/data/test1543 b/tests/data/test1543
new file mode 100644
index 000000000..be7ede209
--- /dev/null
+++ b/tests/data/test1543
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+CURLOPT_CURLU
+</keywords>
+</info>
+#
+# Similar to 1518 but using CURLOPT_CURLU
+#
+# Server-side
+<reply>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 17 Mar 2016 14:41:00 GMT
+Server: test-server/fake
+X-Special: swsclose
+Content-Length: 0
+Connection: close
+
+</data2>
+<data nocheck="yes">
+HTTP/1.1 302 redirect
+Date: Thu, 17 Mar 2016 14:41:00 GMT
+Server: test-server/fake
+Content-Type: text/plain; charset=US-ASCII
+Location: ../%TESTNUMBER0002
+Content-Length: 0
+Connection: close
+
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+# tool is what to use instead of 'curl'
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<name>
+CURLOPT_CURLU, URL with space and CURLINFO_EFFECTIVE_URL
+</name>
+<command>
+"http://%HOSTIP:%HTTPPORT/ /with/ space/ /file"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%20/with/%20space/%20/file HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+GET /%20/with/%20space/%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+<stdout>
+res 0
+status 200
+redirects 1
+effectiveurl http://%HOSTIP:%HTTPPORT/%20/with/%20space/%TESTNUMBER0002
+redirecturl blank
+</stdout>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test155 b/tests/data/test155
index 8eabab653..2d916c975 100644
--- a/tests/data/test155
+++ b/tests/data/test155
@@ -4,6 +4,7 @@
HTTP
HTTP PUT
HTTP NTLM auth
+NTLM
</keywords>
</info>
@@ -78,26 +79,16 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
</server>
- <name>
+<name>
HTTP PUT with --anyauth authorization (picking NTLM)
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --anyauth
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
<file name="log/put%TESTNUMBER">
This is data we upload with PUT
a second line
@@ -125,7 +116,7 @@ Content-Length: 0
PUT /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
Content-Length: 85
diff --git a/tests/data/test1553 b/tests/data/test1553
index bc8303211..595eb5ba5 100644
--- a/tests/data/test1553
+++ b/tests/data/test1553
@@ -28,6 +28,9 @@ body
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
imap
</server>
diff --git a/tests/data/test1561 b/tests/data/test1561
index fbfea08c6..882b25780 100644
--- a/tests/data/test1561
+++ b/tests/data/test1561
@@ -35,12 +35,12 @@ nomnom
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
-Set-Cookie: super=secret; domain=example.com; path=/%TESTNUMBER; httponly;
-Set-Cookie: super=secret; domain=example.com; path=/%TESTNUMBER/; httponly;
-Set-Cookie: super=secret; domain=example.com; path=/15; httponly;
+Set-Cookie: super=plain; domain=example.com; path=/%TESTNUMBER; httponly;
+Set-Cookie: super=plain; domain=example.com; path=/%TESTNUMBER/; httponly;
+Set-Cookie: super=plain; domain=example.com; path=/15; httponly;
Set-Cookie: public=yes; domain=example.com; path=/foo;
-Set-Cookie: supersuper=secret; domain=example.com; path=/%TESTNUMBER/login/en;
-Set-Cookie: supersuper=secret; domain=example.com; path=/%TESTNUMBER/login;
+Set-Cookie: supersuper=plain; domain=example.com; path=/%TESTNUMBER/login/en;
+Set-Cookie: supersuper=plain; domain=example.com; path=/%TESTNUMBER/login;
Set-Cookie: secureoverhttp=yes; domain=example.com; path=/%TESTNUMBER; secure;
Set-Cookie: __Secure-SID=22345; Domain=example.com
Set-Cookie: __Secure-SID=22346; Secure; Domain=example.com
@@ -94,11 +94,12 @@ Accept: */*
# This file was generated by libcurl! Edit at your own risk.
.example.com TRUE /foo FALSE 0 public yes
+#HttpOnly_.example.com TRUE /15 FALSE 0 super plain
www.example.com FALSE / TRUE 0 __Host-SID 12346
.example.com TRUE / TRUE 0 supersupersuper secret
.example.com TRUE / TRUE 0 __Secure-SID 12346
.example.com TRUE /%TESTNUMBER/login/ TRUE 0 supersuper secret
-#HttpOnly_.example.com TRUE /15 FALSE 0 super secret
+.example.com TRUE /1561 TRUE 0 super secret
</file>
</verify>
diff --git a/tests/data/test158 b/tests/data/test158
index 2fbaf65c0..23861365e 100644
--- a/tests/data/test158
+++ b/tests/data/test158
@@ -17,6 +17,9 @@ Silly-header: yeeeees
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1590 b/tests/data/test1590
index bfaa7545c..dbb81cc29 100644
--- a/tests/data/test1590
+++ b/tests/data/test1590
@@ -28,6 +28,9 @@ body
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
imap
</server>
diff --git a/tests/data/test1597 b/tests/data/test1597
new file mode 100644
index 000000000..047bf7bd8
--- /dev/null
+++ b/tests/data/test1597
@@ -0,0 +1,32 @@
+<testcase>
+<info>
+<keywords>
+CURLOPT_PROTOCOLS_STR
+</keywords>
+</info>
+
+# Server-side
+<reply>
+</reply>
+# Client-side
+<client>
+<server>
+none
+</server>
+<name>
+CURLOPT_PROTOCOLS_STR
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+-
+</command>
+</client>
+
+<verify>
+<stdout>
+Tested 15 strings
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1614 b/tests/data/test1614
new file mode 100644
index 000000000..4a9d54eb6
--- /dev/null
+++ b/tests/data/test1614
@@ -0,0 +1,25 @@
+<testcase>
+<info>
+<keywords>
+unittest
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+proxy
+</features>
+ <name>
+cidr comparisons
+ </name>
+</client>
+<errorcode>
+0
+</errorcode>
+</testcase>
diff --git a/tests/data/test163 b/tests/data/test163
index 344f1042d..b763c3ca8 100644
--- a/tests/data/test163
+++ b/tests/data/test163
@@ -20,6 +20,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1635 b/tests/data/test1635
new file mode 100644
index 000000000..399846c00
--- /dev/null
+++ b/tests/data/test1635
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+RETRY-AFTER
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 429 too many requests swsbounce
+Retry-After: 1
+Content-Length: 4
+
+moo
+</data>
+<data1 nocheck="yes">
+HTTP/1.1 200 OK
+Content-Length: 4
+Connection: close
+
+hey
+</data1>
+
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+--retry with a 429 response and Retry-After: and --fail-with-body
+</name>
+<command option="no-include">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --retry 1 --fail-with-body
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<stdout>
+moo
+hey
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test166 b/tests/data/test166
index 3ee1d69b6..bcbf37755 100644
--- a/tests/data/test166
+++ b/tests/data/test166
@@ -20,6 +20,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1670 b/tests/data/test1670
new file mode 100644
index 000000000..6d8722f61
--- /dev/null
+++ b/tests/data/test1670
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+-w
+%header
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Tue, 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>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+<name>
+-w individual header output
+</name>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w '%header{etag} %header{nope} %header{DATE}\n' -o log/%TESTNUMBER.out
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<stdout mode="text">
+"21025-dc7-39462498" Tue, 09 Nov 2010 14:49:00 GMT
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1671 b/tests/data/test1671
new file mode 100644
index 000000000..e45ea784d
--- /dev/null
+++ b/tests/data/test1671
@@ -0,0 +1,72 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+-w
+%header
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Tue, 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
+Set-Cookie: firstcookie=want1; path=/
+Funny-head: yesyes
+Set-Cookie: 2cookie=want2; path=/
+Content-Type: text/html
+Set-Cookie: cookie3=want3; path=/
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+<name>
+-w header JSON output
+</name>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w '%{header_json}\n' -o log/%TESTNUMBER.out
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<stdout mode="text">
+{"date":["Tue, 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"],
+"set-cookie":["firstcookie=want1; path=/","2cookie=want2; path=/","cookie3=want3; path=/"],
+"content-length":["6"],
+"connection":["close"]
+}
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1680 b/tests/data/test1680
new file mode 100644
index 000000000..7d8167c0e
--- /dev/null
+++ b/tests/data/test1680
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--clobber
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<name>
+HTTP GET with explicit clobber
+</name>
+<server>
+http
+</server>
+<features>
+http
+</features>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/exist%TESTNUMBER --clobber
+</command>
+<file name="log/exist%TESTNUMBER">
+to be overwritten
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<file name="log/exist%TESTNUMBER">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test1681 b/tests/data/test1681
new file mode 100644
index 000000000..cfc8a5db8
--- /dev/null
+++ b/tests/data/test1681
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--no-clobber
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<name>
+HTTP GET without clobber
+</name>
+<server>
+http
+</server>
+<features>
+http
+</features>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/exist%TESTNUMBER --no-clobber -w '%{filename_effective}\n'
+</command>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+<file1 name="log/exist%TESTNUMBER.1">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</file1>
+<stdout mode="text">
+log/exist%TESTNUMBER.1
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1682 b/tests/data/test1682
new file mode 100644
index 000000000..e981c20e9
--- /dev/null
+++ b/tests/data/test1682
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--no-clobber
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<name>
+HTTP GET without clobber and --output-dir
+</name>
+<server>
+http
+</server>
+<features>
+http
+</features>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --output-dir log -o exist%TESTNUMBER --no-clobber
+</command>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+<file1 name="log/exist%TESTNUMBER.1">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</file1>
+</verify>
+</testcase>
diff --git a/tests/data/test1683 b/tests/data/test1683
new file mode 100644
index 000000000..93d27d73c
--- /dev/null
+++ b/tests/data/test1683
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--no-clobber
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<name>
+HTTP GET without clobber when 100 files already exist
+</name>
+<server>
+http
+</server>
+<features>
+http
+</features>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/exist%TESTNUMBER --no-clobber
+</command>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+<precheck>
+perl -e 'for my $i ((1..100)) { my $filename = "log/exist%TESTNUMBER.$i"; open(FH, ">", $filename) or die $!; print FH "to stay the same" ; close(FH) }'
+# python3 -c 'for i in range(1, 101): open("log/exist%TESTNUMBER.{}".format(i), mode="w").write("to stay the same")'
+</precheck>
+<postcheck>
+perl -e 'for my $i ((1..100)) { my $filename = "log/exist%TESTNUMBER.$i"; open(FH, "<", $filename) or die $!; (<FH> eq "to stay the same" and <FH> eq "") or die "incorrect $filename" ; close(FH) }'
+# python3 -c 'for i in range(1, 101): assert open("log/exist%TESTNUMBER.{}".format(i), mode="r").read(17) == "to stay the same"'
+</postcheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+23
+</errorcode>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test169 b/tests/data/test169
index a5e5ba539..3a86cdf51 100644
--- a/tests/data/test169
+++ b/tests/data/test169
@@ -6,6 +6,7 @@ HTTP GET
HTTP proxy
HTTP proxy NTLM auth
HTTP Digest auth
+NTLM
</keywords>
</info>
@@ -79,24 +80,14 @@ http
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP with proxy-requiring-NTLM to site-requiring-Digest
- </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>
+</name>
+<command>
http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -111,7 +102,7 @@ Proxy-Connection: Keep-Alive
GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1
Host: data.from.server.requiring.digest.hohoho.com
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test170 b/tests/data/test170
index 28874a92e..22767cb5a 100644
--- a/tests/data/test170
+++ b/tests/data/test170
@@ -18,6 +18,7 @@ HTTP proxy NTLM auth
http
</server>
<features>
+Mime
NTLM
SSL
!SSPI
diff --git a/tests/data/test1700 b/tests/data/test1700
index 9cf873928..7f78bcf5f 100644
--- a/tests/data/test1700
+++ b/tests/data/test1700
@@ -11,26 +11,26 @@ HTTP/2
# Server-side
<reply>
<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Tue, 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
+Date: Tue, 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>
<data1>
-HTTP/1.1 200 OK
-Date: Tue, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+
-maa-
</data1>
</reply>
@@ -38,6 +38,9 @@ Content-Type: text/html
#
# Client-side
<client>
+<features>
+h2c
+</features>
<server>
http
http/2
diff --git a/tests/data/test1701 b/tests/data/test1701
index c4687d911..22f6147d0 100644
--- a/tests/data/test1701
+++ b/tests/data/test1701
@@ -11,17 +11,17 @@ HTTP/2
# Server-side
<reply>
<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Tue, 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
+Date: Tue, 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>
@@ -29,6 +29,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+h2c
+</features>
<server>
http
http/2
diff --git a/tests/data/test1702 b/tests/data/test1702
index b679c7bca..1da9bc6b5 100644
--- a/tests/data/test1702
+++ b/tests/data/test1702
@@ -28,6 +28,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+h2c
+</features>
<server>
http
http/2
diff --git a/tests/data/test173 b/tests/data/test173
index 096861623..a3356c976 100644
--- a/tests/data/test173
+++ b/tests/data/test173
@@ -21,6 +21,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test174 b/tests/data/test174
index d8090c5d5..b0b7c5f7a 100644
--- a/tests/data/test174
+++ b/tests/data/test174
@@ -21,7 +21,7 @@ This is not the real page
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test175 b/tests/data/test175
index 538543448..382e1a70b 100644
--- a/tests/data/test175
+++ b/tests/data/test175
@@ -45,7 +45,7 @@ content for you
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test177 b/tests/data/test177
index c190f0523..6ee5fd06e 100644
--- a/tests/data/test177
+++ b/tests/data/test177
@@ -21,7 +21,7 @@ Content-Type: text/html; charset=iso-8859-1
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test18 b/tests/data/test18
index 11b953ea6..888745889 100644
--- a/tests/data/test18
+++ b/tests/data/test18
@@ -65,19 +65,16 @@ Accept: */*
</protocol>
<stdout>
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4
moo
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4
foo
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0003
HTTP/1.1 200 OK
Funny-head: yesyes
Content-Length: 4
diff --git a/tests/data/test1800 b/tests/data/test1800
index 85e247c3c..d7cc73af4 100644
--- a/tests/data/test1800
+++ b/tests/data/test1800
@@ -23,6 +23,9 @@ Content-Type: text/html
# Client-side
<client>
+<features>
+h2c
+</features>
<server>
http
</server>
diff --git a/tests/data/test186 b/tests/data/test186
index 35232b82c..0f0c91cc8 100644
--- a/tests/data/test186
+++ b/tests/data/test186
@@ -21,6 +21,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test1919 b/tests/data/test1919
new file mode 100644
index 000000000..98613877b
--- /dev/null
+++ b/tests/data/test1919
@@ -0,0 +1,51 @@
+<testcase>
+<info>
+<keywords>
+conn-reuse
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Content-Length: 6
+
+-foo-
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+
+# This created a memory leak in 7.83.1 and earlier
+<name>
+set CURLOPT_XOAUTH2_BEARER and do connection reuse
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Bearer c4e448d652a961fda0ab64f882c8c161d5985f805d45d80c9ddca1
+Accept: */*
+
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Bearer c4e448d652a961fda0ab64f882c8c161d5985f805d45d80c9ddca1
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1933 b/tests/data/test1933
index d2aabb1fe..3f3e8ac2c 100644
--- a/tests/data/test1933
+++ b/tests/data/test1933
@@ -47,7 +47,7 @@ lib%TESTNUMBER
</tool>
<command>
-http://xxx:yyy@%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://xxx:yyy@127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
</command>
</client>
@@ -60,8 +60,8 @@ http://xxx:yyy@%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</strip>
<protocol>
GET /%TESTNUMBER/testapi/test HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-xxx-date, Signature=d2c2dff48c59ec49dc31ef94f18c5dc1ac3eae2a70d51633a4342dadc0683664
+Host: 127.0.0.1:9000
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-xxx-date, Signature=3d8e00a02e437211a596143dcd590fcc805b731365c68f7f48951ea6eda39c4f
X-Xxx-Date: 19700101T000000Z
</protocol>
diff --git a/tests/data/test1934 b/tests/data/test1934
index 35fa318c1..a131df49e 100644
--- a/tests/data/test1934
+++ b/tests/data/test1934
@@ -47,7 +47,7 @@ lib%TESTNUMBER
</tool>
<command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
</command>
</client>
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</strip>
<protocol>
GET /%TESTNUMBER/testapi/test HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=938937ca7da6bb3dbf15e30928265ec6f061532d035d2afda92fa7cb10feb196
+Host: 127.0.0.1:9000
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=cf8dc9a4af903a1a9bb1385d8e2366d780afb501e266436598438395e502d58c
X-Yyy-Date: 19700101T000000Z
</protocol>
diff --git a/tests/data/test1935 b/tests/data/test1935
index 6d48f325c..d39a86471 100644
--- a/tests/data/test1935
+++ b/tests/data/test1935
@@ -47,7 +47,7 @@ lib%TESTNUMBER
</tool>
<command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
</command>
</client>
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</strip>
<protocol>
GET /%TESTNUMBER/testapi/test HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=240750deb9263d4c8ece71c016f3919b56e518249390ef075740f94ef8df846f
+Host: 127.0.0.1:9000
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=a0b11b97b54689428d4188b788ed32865d607822d85d3e91cf06141f479dac0b
X-Yyy-Date: 19700101T000000Z
</protocol>
diff --git a/tests/data/test1936 b/tests/data/test1936
index 366abd64b..a0d38403b 100644
--- a/tests/data/test1936
+++ b/tests/data/test1936
@@ -47,7 +47,7 @@ lib%TESTNUMBER
</tool>
<command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
</command>
</client>
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</strip>
<protocol>
GET /%TESTNUMBER/testapi/test HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/sss/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=f32cf87977cea5d3274b524b53e5d28f4aac54c372f710ae0cc3a9ececaf169f
+Host: 127.0.0.1:9000
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/sss/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=026b713d76b0789bd224c5e41322f74eed088f8a22fd15183ca68376c575c5b0
X-Yyy-Date: 19700101T000000Z
</protocol>
diff --git a/tests/data/test1937 b/tests/data/test1937
index e24445ac6..ca1214b83 100644
--- a/tests/data/test1937
+++ b/tests/data/test1937
@@ -48,7 +48,7 @@ lib%TESTNUMBER
</tool>
<command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
</command>
</client>
@@ -61,8 +61,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
</strip>
<protocol nonewline="yes">
POST /%TESTNUMBER/testapi/test HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-Authorization: PROVIDER14-HMAC-SHA256 Credential=keyId/19700101/region/service/provider14_request, SignedHeaders=content-type;host;x-provider2-date, Signature=391e410177d0e9ee80728082446ef69d6b29157fe71f8b4805fce7c186fd956d
+Host: 127.0.0.1:9000
+Authorization: PROVIDER14-HMAC-SHA256 Credential=keyId/19700101/region/service/provider14_request, SignedHeaders=content-type;host;x-provider2-date, Signature=4928ccf97a9e71fe27f91db5a3b3c943b6080d25e6f4df8593d4c38e7d1e849b
X-Provider2-Date: 19700101T000000Z
Content-Length: 8
diff --git a/tests/data/test1938 b/tests/data/test1938
index 5341de00f..565a54ffe 100644
--- a/tests/data/test1938
+++ b/tests/data/test1938
Binary files differ
diff --git a/tests/data/test1940 b/tests/data/test1940
new file mode 100644
index 000000000..7f621b428
--- /dev/null
+++ b/tests/data/test1940
@@ -0,0 +1,62 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test with trailing space
+Content-Type: text/html
+Fold: is
+ folding a
+ line
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+</reply>
+
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == test with trailing space
+ Content-Type == text/html
+ Content-Length == 0
+ Location == /%TESTNUMBER0002
+- Set-Cookie == onecookie=data; (0/3)
+- Set-Cookie == secondcookie=2data; (1/3)
+- Set-Cookie == cookie3=data3; (2/3)
+ Fold == is folding a line
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1941 b/tests/data/test1941
new file mode 100644
index 000000000..fe3f1de39
--- /dev/null
+++ b/tests/data/test1941
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+CONNECT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test with trailing space
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<connect>
+HTTP/1.1 200 Sure go ahead
+Server: from the connect
+Silly-thing: yes yes
+
+</connect>
+</reply>
+
+# Client-side
+<client>
+<features>
+proxy
+SSL
+headers-api
+</features>
+<server>
+http
+http-proxy
+</server>
+
+<name>
+curl_easy_header with CONNECT
+</name>
+<tool>
+lib1940
+</tool>
+
+<command>
+http://hello:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<proxy>
+CONNECT hello:%HTTPPORT HTTP/1.1
+Host: hello:%HTTPPORT
+Proxy-Connection: Keep-Alive
+
+</proxy>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == test with trailing space
+ Content-Type == text/html
+ Content-Length == 0
+ Location == /%TESTNUMBER0002
+- Set-Cookie == onecookie=data; (0/3)
+- Set-Cookie == secondcookie=2data; (1/3)
+- Set-Cookie == cookie3=data3; (2/3)
+ Server == from the connect
+ Silly-thing == yes yes
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1942 b/tests/data/test1942
new file mode 100644
index 000000000..907980099
--- /dev/null
+++ b/tests/data/test1942
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+CONNECT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 100 continue
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: maybe different
+
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test with trailing space
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+</reply>
+
+# Client-side
+<client>
+<features>
+http
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header with 1xx response
+</name>
+<tool>
+lib1940
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == test with trailing space
+ Content-Type == text/html
+ Content-Length == 0
+ Location == /%TESTNUMBER0002
+- Set-Cookie == onecookie=data; (0/3)
+- Set-Cookie == secondcookie=2data; (1/3)
+- Set-Cookie == cookie3=data3; (2/3)
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == maybe different
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1943 b/tests/data/test1943
new file mode 100644
index 000000000..194ff111b
--- /dev/null
+++ b/tests/data/test1943
@@ -0,0 +1,62 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+CONNECT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 funky chunky!
+Server: fakeit/0.9 fakeitbad/1.0
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Transfer-Encoding: chunked
+Trailer: server
+Connection: mooo
+
+40
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+30
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+21;heresatest=moooo
+cccccccccccccccccccccccccccccccc
+
+0
+Server: sent-as-trailer
+
+</data>
+</reply>
+
+# Client-side
+<client>
+<features>
+http
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header with trailers
+</name>
+<tool>
+lib1940
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == fakeit/0.9 fakeitbad/1.0
+ Server == sent-as-trailer
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1944 b/tests/data/test1944
new file mode 100644
index 000000000..ad0920d4a
--- /dev/null
+++ b/tests/data/test1944
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 302 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Server: test with trailing space
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: the other one
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: 1cookie=data1;
+Set-Cookie: 2cookie=data2;
+
+</data2>
+</reply>
+
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header with redirect
+</name>
+<tool>
+lib1940
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == the other one
+ Content-Type == text/html
+ Content-Length == 0
+- Set-Cookie == 1cookie=data1; (0/2)
+- Set-Cookie == 2cookie=data2; (1/2)
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1945 b/tests/data/test1945
new file mode 100644
index 000000000..86fa147ad
--- /dev/null
+++ b/tests/data/test1945
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+CONNECT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test with trailing space
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<connect>
+HTTP/1.1 200 Sure go ahead
+Server: from the connect
+Silly-thing: yes yes
+
+</connect>
+</reply>
+
+# Client-side
+<client>
+<features>
+proxy
+SSL
+headers-api
+</features>
+<server>
+http
+http-proxy
+</server>
+
+<name>
+curl_easy_nextheader with server + CONNECT
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://hello:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<proxy>
+CONNECT hello:%HTTPPORT HTTP/1.1
+Host: hello:%HTTPPORT
+Proxy-Connection: Keep-Alive
+
+</proxy>
+<stdout>
+ Server == from the connect (0/2)
+ Silly-thing == yes yes (0/1)
+ Date == Thu, 09 Nov 2010 14:49:00 GMT (0/1)
+ Server == test with trailing space (1/2)
+ Content-Type == text/html (0/1)
+ Content-Length == 0 (0/1)
+ Set-Cookie == onecookie=data; (0/3)
+ Set-Cookie == secondcookie=2data; (1/3)
+ Set-Cookie == cookie3=data3; (2/3)
+ Location == /19450002 (0/1)
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1946 b/tests/data/test1946
new file mode 100644
index 000000000..220df012b
--- /dev/null
+++ b/tests/data/test1946
@@ -0,0 +1,68 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 302 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Server: test with trailing space
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: the other one
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: 1cookie=data1;
+Set-Cookie: 2cookie=data2;
+
+</data2>
+</reply>
+
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header with redirect but get headers from first request
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 01 Nov 2001 14:49:00 GMT
+ Server == test with trailing space
+ Content-Type == text/html
+ Content-Length == 0
+ Location == /19460002
+- Set-Cookie == onecookie=data; (0/3)
+- Set-Cookie == secondcookie=2data; (1/3)
+- Set-Cookie == cookie3=data3; (2/3)
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1947 b/tests/data/test1947
new file mode 100644
index 000000000..f159e4d51
--- /dev/null
+++ b/tests/data/test1947
@@ -0,0 +1,71 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_nextheader
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 302 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Server: test with trailing space
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: the other one
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: 1cookie=data1;
+Set-Cookie: 2cookie=data2;
+
+</data2>
+
+<data3 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: the other one
+Content-Type: text/html
+Content-Length: 0
+
+</data3>
+</reply>
+
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_nextheader on second request after first did redirects
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0003
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+count = 2
+count = 1
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1948 b/tests/data/test1948
new file mode 100644
index 000000000..639523d99
--- /dev/null
+++ b/tests/data/test1948
@@ -0,0 +1,73 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+HTTP PUT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Content-Type: text/html
+Content-Length: 6
+
+hello
+</data>
+<datacheck>
+HTTP/1.1 200 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Content-Type: text/html
+Content-Length: 6
+
+hello
+HTTP/1.1 200 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Content-Type: text/html
+Content-Length: 6
+
+hello
+</datacheck>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+
+<name>
+CURLOPT_POST after CURLOPT_UPLOAD reusing handle
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Content-Length: 22
+Expect: 100-continue
+
+This is test PUT data
+POST /1948 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
+This is test PUT data
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1955 b/tests/data/test1955
new file mode 100644
index 000000000..5ebbc54bc
--- /dev/null
+++ b/tests/data/test1955
@@ -0,0 +1,75 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+CURLOPT_AWS_SIGV4
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 302 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Type: text/html
+Content-Length: 0
+Location: /%TESTNUMBER0002
+
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Type: text/html
+Content-Length: 0
+
+</data2>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+# this relies on the debug feature which allow to set the time
+<features>
+SSL
+debug
+crypto
+</features>
+<setenv>
+CURL_FORCEHOST=1
+</setenv>
+
+<name>
+HTTP AWS_SIGV4 with X-Xxx-Content-Sha256
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://exam.ple.com:9000/%TESTNUMBER/testapi/test exam.ple.com:9000:%HOSTIP:%HTTPPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+^Content-Type:.*
+^Accept:.*
+</strip>
+<protocol>
+GET /%TESTNUMBER/testapi/test HTTP/1.1
+Host: exam.ple.com:9000
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/ple/exam/xxx4_request, SignedHeaders=content-type;host;tesmixcase;test0;test1;test2;test_space;x-xxx-date, Signature=819251feec8de52dfaa992320241f23d27cefa979c93e039ae7df03ac486ed16
+X-Xxx-Date: 19700101T000000Z
+test2: 1234
+test_space: t s m end
+tesMixCase: MixCase
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2025 b/tests/data/test2025
index 5ab8b8582..4794d3c0e 100644
--- a/tests/data/test2025
+++ b/tests/data/test2025
@@ -5,6 +5,7 @@ HTTP
HTTP GET
HTTP Basic auth
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -205,21 +206,12 @@ http
libauthretry
</tool>
- <name>
+<name>
HTTP authorization retry (Basic switching to NTLM)
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER basic ntlm
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -237,7 +229,7 @@ Accept: */*
GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0300 HTTP/1.1
@@ -252,7 +244,7 @@ Accept: */*
GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0500 HTTP/1.1
@@ -262,7 +254,7 @@ Accept: */*
GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
</protocol>
diff --git a/tests/data/test2028 b/tests/data/test2028
index 889561252..0ad03db58 100644
--- a/tests/data/test2028
+++ b/tests/data/test2028
@@ -5,6 +5,7 @@ HTTP
HTTP GET
HTTP Digest auth
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -241,21 +242,12 @@ http
libauthretry
</tool>
- <name>
+<name>
HTTP authorization retry (Digest switching to NTLM)
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER digest ntlm
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -277,7 +269,7 @@ Accept: */*
GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0300 HTTP/1.1
@@ -296,7 +288,7 @@ Accept: */*
GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0500 HTTP/1.1
@@ -306,7 +298,7 @@ Accept: */*
GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
</protocol>
diff --git a/tests/data/test2029 b/tests/data/test2029
index 53b433e83..616fec179 100644
--- a/tests/data/test2029
+++ b/tests/data/test2029
@@ -5,6 +5,7 @@ HTTP
HTTP GET
HTTP Basic auth
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -178,21 +179,12 @@ http
libauthretry
</tool>
- <name>
+<name>
HTTP authorization retry (NTLM switching to Basic)
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm basic
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -205,7 +197,7 @@ Accept: */*
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0200 HTTP/1.1
@@ -220,7 +212,7 @@ Accept: */*
GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0400 HTTP/1.1
diff --git a/tests/data/test2030 b/tests/data/test2030
index dc3dfe855..8931ca749 100644
--- a/tests/data/test2030
+++ b/tests/data/test2030
@@ -5,6 +5,7 @@ HTTP
HTTP GET
HTTP Digest auth
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -230,21 +231,12 @@ http
libauthretry
</tool>
- <name>
+<name>
HTTP authorization retry (NTLM switching to Digest)
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm digest
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -257,7 +249,7 @@ Accept: */*
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0200 HTTP/1.1
@@ -272,7 +264,7 @@ Accept: */*
GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0400 HTTP/1.1
diff --git a/tests/data/test2031 b/tests/data/test2031
index 6a8399546..20dd87413 100644
--- a/tests/data/test2031
+++ b/tests/data/test2031
@@ -4,6 +4,7 @@
HTTP
HTTP GET
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -244,21 +245,12 @@ http
libauthretry
</tool>
- <name>
+<name>
HTTP authorization retry (NTLM)
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm ntlm
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -271,7 +263,7 @@ Accept: */*
GET /%TESTNUMBER0100 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0200 HTTP/1.1
@@ -281,7 +273,7 @@ Accept: */*
GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0300 HTTP/1.1
@@ -291,7 +283,7 @@ Accept: */*
GET /%TESTNUMBER0300 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0400 HTTP/1.1
@@ -301,7 +293,7 @@ Accept: */*
GET /%TESTNUMBER0400 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
GET /%TESTNUMBER0500 HTTP/1.1
@@ -311,7 +303,7 @@ Accept: */*
GET /%TESTNUMBER0500 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
</protocol>
diff --git a/tests/data/test2032 b/tests/data/test2032
index 08ac71515..72c7cc4d2 100644
--- a/tests/data/test2032
+++ b/tests/data/test2032
@@ -6,6 +6,7 @@ HTTP GET
HTTP Basic auth
HTTP NTLM auth
flaky
+NTLM
</keywords>
</info>
# Server-side
@@ -76,21 +77,12 @@ http
libntlmconnect
</tool>
- <name>
+<name>
NTLM connection mapping
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -113,7 +105,7 @@ Accept: */*
GET /%TESTNUMBER0200 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
</protocol>
diff --git a/tests/data/test2058 b/tests/data/test2058
index daff038d7..c400f2630 100644
--- a/tests/data/test2058
+++ b/tests/data/test2058
@@ -59,7 +59,7 @@ ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test2059 b/tests/data/test2059
index 0bf160c7d..3170c99a1 100644
--- a/tests/data/test2059
+++ b/tests/data/test2059
@@ -59,7 +59,7 @@ ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test2060 b/tests/data/test2060
index e0b4505ef..11dd15526 100644
--- a/tests/data/test2060
+++ b/tests/data/test2060
@@ -59,7 +59,7 @@ ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test2073 b/tests/data/test2073
index dd3641546..c6b3dee5a 100644
--- a/tests/data/test2073
+++ b/tests/data/test2073
@@ -27,6 +27,9 @@ contents2
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test2081 b/tests/data/test2081
index a6733e737..add929252 100644
--- a/tests/data/test2081
+++ b/tests/data/test2081
@@ -19,6 +19,12 @@ Connection: close
This server reply is for testing a simple Location: following
</data>
+<data2>
+HTTP/1.1 200 This is another weirdo text message swsclose
+Connection: close
+
+Thanks for following.
+</data2>
</reply>
# Client-side
@@ -36,9 +42,6 @@ http://user:pass@%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER#anchor --location --r
# Verify data after the test has been "shot"
<verify>
-<errorcode>
-52
-</errorcode>
<protocol>
GET /we/want/our/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
@@ -60,6 +63,10 @@ Location: data/%TESTNUMBER0002.txt?coolsite=yes
Content-Length: 62
Connection: close
+HTTP/1.1 200 This is another weirdo text message swsclose
+Connection: close
+
+Thanks for following.
http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER
</stdout>
</verify>
diff --git a/tests/data/test209 b/tests/data/test209
index 59a293d66..887d04fbe 100644
--- a/tests/data/test209
+++ b/tests/data/test209
@@ -6,6 +6,7 @@ HTTP GET
HTTP CONNECT
HTTP proxy
HTTP proxy NTLM auth
+NTLM
</keywords>
</info>
@@ -79,24 +80,14 @@ http
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy CONNECT auth NTLM
- </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>
+</name>
+<command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -110,7 +101,7 @@ Proxy-Connection: Keep-Alive
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test21 b/tests/data/test21
index 8e4e847e0..5c099cf34 100644
--- a/tests/data/test21
+++ b/tests/data/test21
@@ -13,6 +13,9 @@ multiple HTTP requests
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test213 b/tests/data/test213
index b9ddc1c72..877d9276c 100644
--- a/tests/data/test213
+++ b/tests/data/test213
@@ -6,6 +6,7 @@ HTTP POST
HTTP CONNECT
HTTP proxy
HTTP proxy NTLM auth
+NTLM
</keywords>
</info>
@@ -79,24 +80,14 @@ http
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP 1.0 proxy CONNECT auth NTLM and then POST
- </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>
+</name>
+<command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy1.0 http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -110,7 +101,7 @@ Proxy-Connection: Keep-Alive
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.0
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test2300 b/tests/data/test2300
new file mode 100644
index 000000000..997acfad2
--- /dev/null
+++ b/tests/data/test2300
@@ -0,0 +1,62 @@
+<testcase>
+<info>
+<keywords>
+WebSockets
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 101 Switching to WebSockets swsclose
+Server: test-server/fake
+Upgrade: websocket
+Connection: Upgrade
+Sec-WebSocket-Accept: HkPsVga7+8LuxM4RGQ5p9tZHeYs=
+
+</data>
+# allow upgrade
+<servercmd>
+upgrade
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+# for the forced CURL_ENTROPY
+<features>
+debug
+ws
+</features>
+<server>
+http
+</server>
+ <name>
+WebSockets upgrade only
+ </name>
+ <command>
+ws://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nocheck="yes">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Upgrade: websocket
+Connection: Upgrade
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: NDMyMTUzMjE2MzIxNzMyMQ==
+
+</protocol>
+<errorcode>
+52
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test2301 b/tests/data/test2301
new file mode 100644
index 000000000..1f8ed662b
--- /dev/null
+++ b/tests/data/test2301
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+WebSockets
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes" nonewline="yes">
+HTTP/1.1 101 Switching to WebSockets
+Server: test-server/fake
+Upgrade: websocket
+Connection: Upgrade
+Something: else
+Sec-WebSocket-Accept: HkPsVga7+8LuxM4RGQ5p9tZHeYs=
+
+%hex[%89%00]hex%
+</data>
+# allow upgrade
+<servercmd>
+upgrade
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+# require debug for the forced CURL_ENTROPY
+<features>
+debug
+ws
+</features>
+<server>
+http
+</server>
+<name>
+WebSockets via callback (raw mode) + curl_ws_send()
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+ws://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nocheck="yes" nonewline="yes">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: webbie-sox/3
+Accept: */*
+Upgrade: websocket
+Connection: Upgrade
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: NDMyMTUzMjE2MzIxNzMyMQ==
+
+%hex[%8a%00]hex%
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2302 b/tests/data/test2302
new file mode 100644
index 000000000..013c324e8
--- /dev/null
+++ b/tests/data/test2302
@@ -0,0 +1,70 @@
+<testcase>
+<info>
+<keywords>
+WebSockets
+</keywords>
+</info>
+
+#
+# Sends a PING + a 5 byte hello TEXT
+<reply>
+<data nocheck="yes" nonewline="yes">
+HTTP/1.1 101 Switching to WebSockets
+Server: test-server/fake
+Upgrade: websocket
+Connection: Upgrade
+Something: else
+Sec-WebSocket-Accept: HkPsVga7+8LuxM4RGQ5p9tZHeYs=
+
+%hex[%89%00%81%05hello]hex%
+</data>
+# allow upgrade
+<servercmd>
+upgrade
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+# require debug for the forced CURL_ENTROPY
+<features>
+debug
+ws
+</features>
+<server>
+http
+</server>
+<name>
+WebSockets via callback (frame mode) + curl_ws_send()
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+ws://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# PONG with no data and the 32 bit mask
+#
+<verify>
+<protocol nocheck="yes" nonewline="yes">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: webbie-sox/3
+Accept: */*
+Upgrade: websocket
+Connection: Upgrade
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: NDMyMTUzMjE2MzIxNzMyMQ==
+
+%hex[%8a%808321]hex%
+</protocol>
+<stdout mode="text">
+68 65 6c 6c 6f
+RECFLAGS: 1
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test2303 b/tests/data/test2303
new file mode 100644
index 000000000..dbd1115c8
--- /dev/null
+++ b/tests/data/test2303
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+WebSockets
+</keywords>
+</info>
+
+#
+<reply>
+<data nocheck="yes" nonewline="yes">
+HTTP/1.1 200 Oblivious
+Server: test-server/fake
+Something: else
+Content-Length: 6
+
+hello
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+# require debug for the forced CURL_ENTROPY
+<features>
+debug
+ws
+</features>
+<server>
+http
+</server>
+<name>
+WebSockets but gets a 200 back
+</name>
+<tool>
+lib2302
+</tool>
+<command>
+ws://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: webbie-sox/3
+Accept: */*
+Upgrade: websocket
+Connection: Upgrade
+Sec-WebSocket-Version: 13
+Sec-WebSocket-Key: NDMyMTUzMjE2MzIxNzMyMQ==
+
+</protocol>
+# 22 == CURLE_HTTP_RETURNED_ERROR
+<errorcode>
+22
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test239 b/tests/data/test239
index 3ba2885a5..230fcc31a 100644
--- a/tests/data/test239
+++ b/tests/data/test239
@@ -5,6 +5,7 @@ HTTP
HTTP POST
HTTP proxy
HTTP proxy NTLM auth
+NTLM
</keywords>
</info>
@@ -54,24 +55,14 @@ http
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy-auth NTLM and then POST
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm -d "postit"
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -88,7 +79,7 @@ Content-Type: application/x-www-form-urlencoded
POST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test243 b/tests/data/test243
index 337fef7ee..3952571b6 100644
--- a/tests/data/test243
+++ b/tests/data/test243
@@ -6,6 +6,7 @@ HTTP GET
HTTP proxy
HTTP proxy NTLM auth
--proxy-anyauth
+NTLM
</keywords>
</info>
@@ -75,24 +76,14 @@ http
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP POST with --proxy-anyauth, picking NTLM
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth -d "postit"
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -117,7 +108,7 @@ Content-Type: application/x-www-form-urlencoded
POST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test245 b/tests/data/test245
index 2d19f0ded..569b4107d 100644
--- a/tests/data/test245
+++ b/tests/data/test245
@@ -45,7 +45,7 @@ ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test246 b/tests/data/test246
index 22b383370..383d07d9a 100644
--- a/tests/data/test246
+++ b/tests/data/test246
@@ -55,7 +55,7 @@ ok
# Client-side
<client>
-#
+#
<server>
http
</server>
diff --git a/tests/data/test258 b/tests/data/test258
index c0f8c18c7..748980007 100644
--- a/tests/data/test258
+++ b/tests/data/test258
@@ -56,6 +56,7 @@ ok
http
</server>
<features>
+Mime
!SSPI
crypto
proxy
diff --git a/tests/data/test259 b/tests/data/test259
index 4b5deee18..9f64cca12 100644
--- a/tests/data/test259
+++ b/tests/data/test259
@@ -52,6 +52,7 @@ ok
http
</server>
<features>
+Mime
!SSPI
crypto
proxy
diff --git a/tests/data/test262 b/tests/data/test262
index 43994b05f..d119d6672 100644
--- a/tests/data/test262
+++ b/tests/data/test262
Binary files differ
diff --git a/tests/data/test265 b/tests/data/test265
index 889cf06c4..c6db8964e 100644
--- a/tests/data/test265
+++ b/tests/data/test265
@@ -6,6 +6,7 @@ HTTP POST
HTTP CONNECT
HTTP proxy
HTTP proxy NTLM auth
+NTLM
</keywords>
</info>
@@ -80,24 +81,14 @@ http
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407
- </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>
+</name>
+<command>
http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -111,7 +102,7 @@ Proxy-Connection: Keep-Alive
CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test266 b/tests/data/test266
index 6b5d2e6c7..4f5f359d8 100644
--- a/tests/data/test266
+++ b/tests/data/test266
@@ -37,6 +37,9 @@ Connection: mooo
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc
chunky-trailer: header data
</datacheck>
+<servercmd>
+writedelay: 10
+</servercmd>
</reply>
#
diff --git a/tests/data/test267 b/tests/data/test267
index a07f67e48..f24c7f6a9 100644
--- a/tests/data/test267
+++ b/tests/data/test267
@@ -4,6 +4,7 @@
HTTP
HTTP POST
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -58,26 +59,16 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
</server>
- <name>
+<name>
HTTP POST with NTLM authorization and added custom headers
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no"
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -95,7 +86,7 @@ Content-Type: application/x-www-form-urlencoded
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
Header1: yes
diff --git a/tests/data/test277 b/tests/data/test277
index 466b79374..62d264fa3 100644
--- a/tests/data/test277
+++ b/tests/data/test277
@@ -20,6 +20,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test3021 b/tests/data/test3021
index 1b23ff048..775dd91f8 100644
--- a/tests/data/test3021
+++ b/tests/data/test3021
@@ -33,7 +33,7 @@ SFTP correct sha256 host key
<setenv>
# Needed for MSYS2 to not treat the argument as a POSIX path list
# that has to be converted to Windows paths
-MSYS2_ARG_CONV_EXCL=/
+MSYS2_ARG_CONV_EXCL=*
</setenv>
<file name="log/file%TESTNUMBER.txt">
test
diff --git a/tests/data/test3022 b/tests/data/test3022
index 3e117701a..a9dbcb0f2 100644
--- a/tests/data/test3022
+++ b/tests/data/test3022
@@ -33,7 +33,7 @@ SCP correct sha256 host key
<setenv>
# Needed for MSYS2 to not treat the argument as a POSIX path list
# that has to be converted to Windows paths
-MSYS2_ARG_CONV_EXCL=/
+MSYS2_ARG_CONV_EXCL=*
</setenv>
<file name="log/file%TESTNUMBER.txt">
test
diff --git a/tests/data/test3026 b/tests/data/test3026
new file mode 100644
index 000000000..ee9b30678
--- /dev/null
+++ b/tests/data/test3026
@@ -0,0 +1,45 @@
+<testcase>
+<info>
+<keywords>
+curl_global_init
+thread-safe
+slow
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+# require the threaded resolver only because it means pthreads might
+# be used for it
+<features>
+threadsafe
+threaded-resolver
+</features>
+<server>
+none
+</server>
+<name>
+curl_global_init thread-safety
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+none
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test3027 b/tests/data/test3027
new file mode 100644
index 000000000..6d7aeb620
--- /dev/null
+++ b/tests/data/test3027
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+FTP
+CURLOPT_FILETIME
+MDTM fail
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<servercmd>
+REPLY MDTM 550 Permission denied
+</servercmd>
+<data>
+data blobb
+</data>
+
+# data is sent to stdout
+</reply>
+
+# Client-side
+<client>
+<server>
+ftp
+</server>
+ <name>
+Get a file via FTP but 550 after MDTM command
+ </name>
+<tool>
+lib3027
+</tool>
+<command option="no-include">
+ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
+</command>
+<stdout>
+data blobb
+</stdout>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER anonymous
+PASS ftp@example.com
+PWD
+MDTM %TESTNUMBER
+EPSV
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test304 b/tests/data/test304
index b4030725d..b632af74f 100644
--- a/tests/data/test304
+++ b/tests/data/test304
@@ -21,6 +21,7 @@ blablabla
# Client-side
<client>
<features>
+Mime
SSL
</features>
<server>
diff --git a/tests/data/test31 b/tests/data/test31
index ac277264d..6dfd2d268 100644
--- a/tests/data/test31
+++ b/tests/data/test31
@@ -22,6 +22,7 @@ Server: test-server/fake
Content-Length: 4
Content-Type: text/html
Funny-head: yesyes
+Set-Cookie: blankdomain=sure; domain=; path=/
%if !hyper
Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure
Set-Cookie:ismatch=this ; domain=test31.curl; path=/silly/
@@ -162,6 +163,7 @@ test31.curl FALSE /we/want/ FALSE 2118138987 nodomain value
#HttpOnly_.test31.curl TRUE /p1/ FALSE 0 httpo1 value1
.test31.curl TRUE /overwrite FALSE 0 overwrite this2
.test31.curl TRUE /silly/ FALSE 0 ismatch this
+test31.curl FALSE / FALSE 0 blankdomain sure
</file>
</verify>
</testcase>
diff --git a/tests/data/test356 b/tests/data/test356
index 0f8795899..9f6459487 100644
--- a/tests/data/test356
+++ b/tests/data/test356
@@ -16,7 +16,9 @@ Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
+Alt-Svc: h1="nowhere.foo:-1"
Alt-Svc: h1="nowhere.foo:81", un-kno22!wn=":82"
+Alt-Svc: h1="nowhere.foo:70000"
-foo-
</data>
diff --git a/tests/data/test358 b/tests/data/test358
index d1ddc1b9e..0f8a9801b 100644
--- a/tests/data/test358
+++ b/tests/data/test358
@@ -12,14 +12,14 @@ HTTP/2
# Server-side
<reply>
<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Tue, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
-
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
+
-foo-
</data>
</reply>
@@ -30,6 +30,7 @@ Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
<features>
alt-svc
debug
+h2c
</features>
<server>
http
diff --git a/tests/data/test359 b/tests/data/test359
index c1b1cb86c..0e684e39e 100644
--- a/tests/data/test359
+++ b/tests/data/test359
@@ -12,14 +12,14 @@ HTTP/2
# Server-side
<reply>
<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Tue, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
-
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
+
-foo-
</data>
</reply>
@@ -30,6 +30,7 @@ Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
<features>
alt-svc
debug
+h2c
</features>
<server>
https
diff --git a/tests/data/test368 b/tests/data/test368
index 2f13b5723..505ce34ea 100644
--- a/tests/data/test368
+++ b/tests/data/test368
@@ -27,7 +27,7 @@ Connection: close
http
</server>
<name>
-Appened dash if -r range specified without one
+Append dash if -r range specified without one
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -r 4
diff --git a/tests/data/test372 b/tests/data/test372
new file mode 100644
index 000000000..e1cf356dd
--- /dev/null
+++ b/tests/data/test372
@@ -0,0 +1,49 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 22 Jul 2010 11:22:33 GMT
+Connection: close
+Content-Type: text/html
+X-Control: swsclose
+Content-Length: 2
+
+%hex[%00]hex%
+</data>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<name>
+Binary zero in data element.
+</name>
+<features>
+proxy
+</features>
+<command>
+--raw http://%HOSTIP:%HTTPPORT/binary-zero-in-data-section/%TESTNUMBER
+</command>
+</client>
+
+<verify>
+<protocol>
+GET /binary-zero-in-data-section/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test373 b/tests/data/test373
new file mode 100644
index 000000000..b11f227f2
--- /dev/null
+++ b/tests/data/test373
@@ -0,0 +1,78 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+chunked transfer encoding
+</keywords>
+</info>
+
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 22 Jul 2010 11:22:33 GMT
+Connection: close
+Content-Type: text/html
+Transfer-Encoding: chunked
+X-Control: swsclose
+
+100
+%repeat[255 x %00]%
+
+100
+%repeat[255 x %00]%
+
+100
+%repeat[255 x %00]%
+
+100
+%repeat[255 x %00]%
+
+0
+
+</data>
+
+<datacheck>
+HTTP/1.1 200 OK
+Date: Thu, 22 Jul 2010 11:22:33 GMT
+Connection: close
+Content-Type: text/html
+Transfer-Encoding: chunked
+X-Control: swsclose
+
+%repeat[255 x %00]%
+%repeat[255 x %00]%
+%repeat[255 x %00]%
+%repeat[255 x %00]%
+</datacheck>
+
+</reply>
+
+<client>
+<server>
+http
+</server>
+<name>
+Chunked transfer encoding - Multiple valid chunks with binary zeros.
+</name>
+<features>
+proxy
+</features>
+<command>
+http://%HOSTIP:%HTTPPORT/chunked-transfer-encoding/%TESTNUMBER
+</command>
+</client>
+
+<verify>
+<protocol>
+GET /chunked-transfer-encoding/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test374 b/tests/data/test374
new file mode 100644
index 000000000..d85bb7855
--- /dev/null
+++ b/tests/data/test374
@@ -0,0 +1,49 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+gif data
+</keywords>
+</info>
+
+<reply>
+<data nonewline="yes">
+HTTP/1.1 200 OK
+Date: Thu, 22 Jul 2010 11:22:33 GMT
+Connection: close
+Content-Type: image/gif
+X-Control: swsclose
+
+%hex[%47%49%46%38%39%61%14%00%14%00%a1%04%00%fe%00%00%ff%00%00%1e%42%ee%1f%42%ef%21%ff%0b%4e%45%54%53%43%41%50%45%32%2e%30%03%01%00%00%00%21%fe%24%43%72%65%61%74%65%64%20%62%79%20%46%61%62%69%61%6e%20%4b%65%69%6c%20%77%69%74%68%20%54%68%65%20%47%49%4d%50%00%21%f9%04%00%0a%00%ff%00%2c%00%00%00%00%14%00%14%00%00%02%11%8c%8f%a9%cb%ed%0f%a3%9c%b4%da%8b%b3%de%bc%fb%af%15%00%21%f9%04%01%0a%00%02%00%2c%00%00%00%00%14%00%14%00%00%02%11%9c%8f%a9%cb%ed%0f%a3%9c%b4%da%8b%b3%de%bc%fb%af%15%00%21%f9%04%00%0a%00%ff%00%2c%00%00%00%00%14%00%14%00%00%02%11%94%8f%a9%cb%ed%0f%a3%9c%b4%da%8b%b3%de%bc%fb%af%15%00%21%f9%04%00%0a%00%ff%00%2c%00%00%00%00%14%00%14%00%00%02%11%84%8f%a9%cb%ed%0f%a3%9c%b4%da%8b%b3%de%bc%fb%af%15%00%3b]hex%
+</data>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<name>
+Valid gif with two frames. No new line in data section.
+</name>
+<features>
+proxy
+</features>
+<command>
+http://%HOSTIP:%HTTPPORT/gif/%TESTNUMBER
+</command>
+</client>
+
+<verify>
+<protocol>
+GET /gif/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test375 b/tests/data/test375
new file mode 100644
index 000000000..aefc8e4ac
--- /dev/null
+++ b/tests/data/test375
@@ -0,0 +1,33 @@
+<testcase>
+<info>
+<keywords>
+CURL_DISABLE_PROXY
+</keywords>
+</info>
+
+<client>
+<features>
+!proxy
+</features>
+<server>
+none
+</server>
+<name>
+Disabled proxy should make curl fail with --proxy
+</name>
+<command>
+-x wohoo http://example.com/
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<stderr mode="text">
+curl: proxy support is disabled in this libcurl
+</stderr>
+<errorcode>
+4
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test376 b/tests/data/test376
new file mode 100644
index 000000000..34924c7ec
--- /dev/null
+++ b/tests/data/test376
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Crafted to cause error 18
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK swsclose
+Date: Tue, 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: 75
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+--remove-on-error
+ </name>
+ <command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/save-%TESTNUMBER --remove-on-error
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot". hyper doesn't do error 18
+<verify>
+<errorcode>
+%if hyper
+56
+%else
+18
+%endif
+</errorcode>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+
+# the file should be empty now
+<file name="log/save-%TESTNUMBER">
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test378 b/tests/data/test378
new file mode 100644
index 000000000..650e7d4e1
--- /dev/null
+++ b/tests/data/test378
@@ -0,0 +1,39 @@
+<testcase>
+<info>
+<keywords>
+HTTP PUT
+HTTP POST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+ <name>
+Reject using -T and -d at once
+ </name>
+ <command>
+-T log/%TESTNUMBER -d input http://never-accessed
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+2
+</errorcode>
+<stderr mode="text">
+Warning: You can only select one HTTP request method! You asked for both PUT
+Warning: (-T, --upload-file) and POST (-d, --data).
+</stderr>
+</verify>
+</testcase>
diff --git a/tests/data/test379 b/tests/data/test379
new file mode 100644
index 000000000..c7ffc1714
--- /dev/null
+++ b/tests/data/test379
@@ -0,0 +1,71 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Crafted to cause error
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK swsclose
+Date: Tue, 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: 75
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<file name="log/save">
+exists before command runs
+</file>
+<server>
+http
+</server>
+ <name>
+--remove-on-error with --no-clobber and an added number
+ </name>
+ <command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/save --remove-on-error --no-clobber
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot". hyper doesn't do error 18
+<verify>
+<errorcode>
+%if hyper
+56
+%else
+18
+%endif
+</errorcode>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+
+# this file should be untouched
+<file name="log/save">
+exists before command runs
+</file>
+# the file should be empty now
+<file2 name="log/save.1">
+</file2>
+</verify>
+</testcase>
diff --git a/tests/data/test380 b/tests/data/test380
new file mode 100644
index 000000000..a1849c178
--- /dev/null
+++ b/tests/data/test380
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+FTP
+EPSV
+LIST
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+# When doing LIST, we get the default list output hard-coded in the test
+# FTP server
+<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 ..
+drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
+-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
+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
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+ftp
+</server>
+<name>
+pick netrc password based on user name in URL
+</name>
+
+<command>
+--netrc --netrc-file log/netrc%TESTNUMBER ftp://mary@%HOSTIP:%FTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+# the following two lines were created while testing curl
+machine %HOSTIP login frankenstein password wrongone
+machine %HOSTIP login mary password yram
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER mary
+PASS yram
+PWD
+EPSV
+TYPE A
+LIST
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test381 b/tests/data/test381
new file mode 100644
index 000000000..c44fa74bc
--- /dev/null
+++ b/tests/data/test381
@@ -0,0 +1,67 @@
+<testcase>
+<info>
+<keywords>
+FTP
+EPSV
+LIST
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+# When doing LIST, we get the default list output hard-coded in the test
+# FTP server
+<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 ..
+drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
+-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
+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
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+ftp
+</server>
+
+# When CURL_NETRC_REQUIRED is set, the password in the URL is ignored and
+# using the netrc is mandatory.
+#
+<name>
+netrc-optional lets URL creds override netrc
+</name>
+
+<command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER ftp://mary:drfrank@%HOSTIP:%FTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+# the following two lines were created while testing curl
+machine %HOSTIP login frankenstein password wrongone
+machine %HOSTIP login mary password yram
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER mary
+PASS drfrank
+PWD
+EPSV
+TYPE A
+LIST
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test383 b/tests/data/test383
new file mode 100644
index 000000000..6ba8f5e2d
--- /dev/null
+++ b/tests/data/test383
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+--json
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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 with --json
+ </name>
+ <command>
+--json '{ "drink": "coffe" }' http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Content-Type: application/json
+Accept: application/json
+Content-Length: 20
+
+{ "drink": "coffe" }
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test384 b/tests/data/test384
new file mode 100644
index 000000000..9651f9f95
--- /dev/null
+++ b/tests/data/test384
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+--json
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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 with --json from stdin
+ </name>
+<stdin>
+{ "drink": "coffe" }
+</stdin>
+<command>
+--json @- http://%HOSTIP:%HTTPPORT/%TESTNUMBER -H "Accept: foobar/*"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: foobar/*
+Content-Type: application/json
+Content-Length: 21
+
+{ "drink": "coffe" }
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test385 b/tests/data/test385
new file mode 100644
index 000000000..ee543fa64
--- /dev/null
+++ b/tests/data/test385
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+--json
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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 with --json x 2
+ </name>
+ <command>
+--json '{ "drink": "coffe",' --json ' "crunch": "cookie" }' http://%HOSTIP:%HTTPPORT/%TESTNUMBER -H "Content-Type: drinks/hot"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Content-Type: drinks/hot
+Accept: application/json
+Content-Length: 40
+
+{ "drink": "coffe", "crunch": "cookie" }
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test386 b/tests/data/test386
new file mode 100644
index 000000000..5e2fd6adf
--- /dev/null
+++ b/tests/data/test386
@@ -0,0 +1,74 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+--json
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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>
+<data2>
+HTTP/1.1 200 OK
+Date: Tue, 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
+
+hello
+</data2>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP with --json + --next
+ </name>
+ <command>
+--json '{ "drink": "coffe" }' http://%HOSTIP:%HTTPPORT/%TESTNUMBER --next http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Content-Type: application/json
+Accept: application/json
+Content-Length: 20
+
+{ "drink": "coffe" }GET /%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test387 b/tests/data/test387
new file mode 100644
index 000000000..015ec25f1
--- /dev/null
+++ b/tests/data/test387
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+gzip
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Transfer-Encoding: gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+Response with overly long compression chain
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+
+# CURLE_BAD_CONTENT_ENCODING is 61
+<errorcode>
+61
+</errorcode>
+<stderr mode="text">
+curl: (61) Reject response due to 5 content encodings
+</stderr>
+</verify>
+</testcase>
diff --git a/tests/data/test388 b/tests/data/test388
new file mode 100644
index 000000000..3a0214a0b
--- /dev/null
+++ b/tests/data/test388
@@ -0,0 +1,156 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP Digest auth
+</keywords>
+</info>
+
+# Server-side
+<reply>
+# First reply back and ask for Digest auth
+<data1>
+HTTP/1.1 401 Authorization Required swsclose
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 26
+
+This is not the real page
+</data1>
+
+# second reply back
+<data2>
+HTTP/1.1 401 Authorization Required swsclose
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 26
+
+This is not the real page
+</data2>
+
+# This is supposed to be returned when the server gets a
+# Authorization: Digest line passed-in from the client
+<data1001>
+HTTP/1.1 200 OK
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 23
+
+This IS the real page!
+</data1001>
+
+#
+# This is the second request, and this sends back a response saying that
+# the request contained stale data. We want an update. Set swsbounce to
+# bounce on to data1003 on the second request.
+<data1002>
+HTTP/1.1 401 Authorization re-negotiation please swsbounce
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 26
+
+This is not the real page
+</data1002>
+
+# The second request to the 1002 section will bounce this one back instead
+# thanks to the swsbounce keyword up there
+<data1003>
+HTTP/1.1 200 OK
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 30
+
+This IS the second real page!
+</data1003>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+!SSPI
+crypto
+</features>
+ <name>
+HTTP with Digest and multiple qop values with leading space
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 -u testuser:testpass --digest http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^Authorization.*cnonce
+</strip>
+<protocol>
+GET /%TESTNUMBER0001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0001", response="ea598bbfdb5c54b7352c977e3885e44d"
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0002", response="921a8e6db782d6359db1f40d9ed7e6a6"
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/%TESTNUMBER0002", cnonce="MTA4MzIy", nc="00000001", qop="auth", response="25291c357671604a16c0242f56721c07", algorithm=MD5
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<stdout>
+HTTP/1.1 401 Authorization Required swsclose
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 26
+
+HTTP/1.1 200 OK
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 23
+
+This IS the real page!
+HTTP/1.1 401 Authorization Required swsclose
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 26
+
+HTTP/1.1 401 Authorization re-negotiation please swsbounce
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 26
+
+HTTP/1.1 200 OK
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 30
+
+This IS the second real page!
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test389 b/tests/data/test389
new file mode 100644
index 000000000..f805bc277
--- /dev/null
+++ b/tests/data/test389
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+.localhost
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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>
+*.localhost is a local host
+ </name>
+ <command>
+http://curlmachine.localhost:%HTTPPORT/%TESTNUMBER
+</command>
+# Ensure that we're running on localhost
+<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>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: curlmachine.localhost:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test39 b/tests/data/test39
index 81c7119bc..f48e639f8 100644
--- a/tests/data/test39
+++ b/tests/data/test39
@@ -19,6 +19,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test390 b/tests/data/test390
new file mode 100644
index 000000000..80e8c2b70
--- /dev/null
+++ b/tests/data/test390
@@ -0,0 +1,48 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+FTP
+parallel
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Content-Length: 10001
+Content-Type: text/html
+
+%repeat[1000 x hellohttp!]%
+</data>
+
+<data2 nocheck="yes">
+%repeat[1000 x hello ftp!]%
+</data2>
+
+</reply>
+
+#
+# Client-side
+<client>
+<file name="log/test%TESTNUMBER.txt">
+%repeat[1000 x hellofile!]%
+</file>
+<server>
+http
+ftp
+</server>
+<name>
+curl HTTP, FILE and FTP in parallel
+</name>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER file://localhost%FILE_PWD/log/test%TESTNUMBER.txt ftp://%HOSTIP:%FTPPORT/%TESTNUMBER0002 --parallel -o log/%TESTNUMBER.a -o log/%TESTNUMBER.b -o log/%TESTNUMBER.c
+</command>
+</client>
+
+#
+<verify>
+</verify>
+</testcase>
diff --git a/tests/data/test391 b/tests/data/test391
new file mode 100644
index 000000000..1eff2ef3e
--- /dev/null
+++ b/tests/data/test391
@@ -0,0 +1,72 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--path-as-is
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 OK
+Content-Length: 6
+Content-Type: text/html
+Location: ../%TESTNUMBER0002
+
+-foo-
+</data>
+<data2>
+HTTP/1.1 200 OK
+Content-Length: 6
+Content-Type: text/html
+
+-muu-
+</data2>
+<datacheck>
+HTTP/1.1 301 OK
+Content-Length: 6
+Content-Type: text/html
+Location: ../%TESTNUMBER0002
+
+HTTP/1.1 200 OK
+Content-Length: 6
+Content-Type: text/html
+
+-muu-
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+--path-as-is with redirect, keeping dotdots
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/../../%TESTNUMBER --path-as-is -L
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /../../%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /../%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test398 b/tests/data/test398
new file mode 100644
index 000000000..b949064d2
--- /dev/null
+++ b/tests/data/test398
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Tue, 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
+
+hello
+</data>
+<datacheck>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+Reject HTTP/1.1 response with colon-less header
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<errorcode>
+%if hyper
+1
+%else
+8
+%endif
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test399 b/tests/data/test399
new file mode 100644
index 000000000..da4bae5fd
--- /dev/null
+++ b/tests/data/test399
@@ -0,0 +1,32 @@
+<testcase>
+<info>
+<keywords>
+URL
+</keywords>
+</info>
+
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+65536 bytes long host name in URL
+</name>
+<file name="log/input%TESTNUM">
+url = http://%repeat[65536 x a]%/399
+</file>
+<command>
+-K log/input%TESTNUM
+</command>
+</client>
+
+<verify>
+# 3 == CURLE_URL_MALFORMAT
+<errorcode>
+3
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test41 b/tests/data/test41
index aaf0ae78b..7a133307d 100644
--- a/tests/data/test41
+++ b/tests/data/test41
@@ -12,6 +12,9 @@ FAILURE
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test411 b/tests/data/test411
new file mode 100644
index 000000000..912f07c6c
--- /dev/null
+++ b/tests/data/test411
@@ -0,0 +1,43 @@
+<testcase>
+<info>
+<keywords>
+-K
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+ <name>
+-K with missing file causes error
+ </name>
+ <command>
+-K log/missing http://localhost
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<stderr mode="text">
+curl: cannot read config from 'log/missing'
+curl: option -K: error encountered when reading a file
+%if manual
+curl: try 'curl --help' or 'curl --manual' for more information
+%else
+curl: try 'curl --help' for more information
+%endif
+</stderr>
+<errorcode>
+26
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test412 b/tests/data/test412
new file mode 100644
index 000000000..0dbc0cea2
--- /dev/null
+++ b/tests/data/test412
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+Alt-Svc
+trailing-dot
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+alt-svc
+debug
+</features>
+<server>
+http
+</server>
+ <name>
+alt-svc using host name with trailing dot in URL
+ </name>
+<setenv>
+# make debug-curl accept Alt-Svc over plain HTTP
+CURL_ALTSVC_HTTP="yeah"
+</setenv>
+ <command>
+--alt-svc "log/altsvc-%TESTNUMBER" "http://whohoo.:12345/%TESTNUMBER"
+</command>
+<file name="log/altsvc-%TESTNUMBER">
+h1 whohoo 12345 h1 %HOSTIP %HTTPPORT "20290222 22:19:28" 0 0
+</file>
+
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: whohoo.:12345
+User-Agent: curl/%VERSION
+Accept: */*
+Alt-Used: %HOSTIP:%HTTPPORT
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test413 b/tests/data/test413
new file mode 100644
index 000000000..975b3e37c
--- /dev/null
+++ b/tests/data/test413
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+Alt-Svc
+trailing-dot
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+alt-svc
+debug
+</features>
+<server>
+http
+</server>
+ <name>
+alt-svc using host name with trailing dot on host from file
+ </name>
+<setenv>
+# make debug-curl accept Alt-Svc over plain HTTP
+CURL_ALTSVC_HTTP="yeah"
+</setenv>
+ <command>
+--alt-svc "log/altsvc-%TESTNUMBER" "http://whohoo:12345/%TESTNUMBER"
+</command>
+<file name="log/altsvc-%TESTNUMBER">
+h1 whohoo. 12345 h1 %HOSTIP %HTTPPORT "20290222 22:19:28" 0 0
+</file>
+
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: whohoo:12345
+User-Agent: curl/%VERSION
+Accept: */*
+Alt-Used: %HOSTIP:%HTTPPORT
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test414 b/tests/data/test414
new file mode 100644
index 000000000..2211d0f40
--- /dev/null
+++ b/tests/data/test414
@@ -0,0 +1,84 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+cookies
+--resolve
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 301 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Set-Cookie: SESSIONID=originaltoken; secure
+Set-Cookie: second=originaltoken; secure; path=/a
+Location: http://attack.invalid:%HTTPPORT/a/b/%TESTNUMBER0002
+
+-foo-
+</data>
+
+<data2>
+HTTP/1.1 301 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Set-Cookie: SESSIONID=hacker; domain=attack.invalid;
+Set-Cookie: second=replacement; path=/a/b
+Location: https://attack.invalid:%HTTPSPORT/a/b/%TESTNUMBER0003
+
+-foo-
+</data2>
+
+<data3>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+
+-foo-
+</data3>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+https
+</server>
+<name>
+HTTPS sec-cookie, HTTP redirect, same name cookie, redirect back
+</name>
+<command>
+https://attack.invalid:%HTTPSPORT/a/b/%TESTNUMBER -k -c log/cookie%TESTNUMBER --resolve attack.invalid:%HTTPSPORT:%HOSTIP --resolve attack.invalid:%HTTPPORT:%HOSTIP -L
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /a/b/%TESTNUMBER HTTP/1.1
+Host: attack.invalid:%HTTPSPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /a/b/%TESTNUMBER0002 HTTP/1.1
+Host: attack.invalid:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /a/b/%TESTNUMBER0003 HTTP/1.1
+Host: attack.invalid:%HTTPSPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Cookie: SESSIONID=originaltoken; second=originaltoken
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test415 b/tests/data/test415
new file mode 100644
index 000000000..e65968043
--- /dev/null
+++ b/tests/data/test415
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK swsclose
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: -6
+Content-Type: text/html
+Funny-head: yesyes
+
+moooooooooooo
+</data>
+<datacheck>
+%if hyper
+%else
+HTTP/1.1 200 OK swsclose
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+%endif
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP response with control code then negative Content-Length
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+
+# Hyper curl returns unsupported protocol
+# bullt-in curl returns weird_server_reply
+<errorcode>
+%if hyper
+1
+%else
+8
+%endif
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test435 b/tests/data/test435
index eed9e2981..cfcca66dc 100644
--- a/tests/data/test435
+++ b/tests/data/test435
@@ -23,7 +23,7 @@ Content-Length: 0
http
</server>
<name>
-verify -w local/remote port+ip after connecton re-use
+verify -w local/remote port+ip after connection re-use
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n'
diff --git a/tests/data/test436 b/tests/data/test436
new file mode 100644
index 000000000..0a62cfb97
--- /dev/null
+++ b/tests/data/test436
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+--config
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Content-Length: 6
+Content-Type: text/1
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<file1 name="log/.config/curlrc">
+--next
+header = "a: a"
+data = "curlrc read"
+</file1>
+<server>
+http
+</server>
+<setenv>
+CURL_HOME=%PWD/log
+XDG_CONFIG_HOME=
+</setenv>
+<name>
+Find .curlrc in .config/curlrc via CURL_HOME
+</name>
+<command>
+%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+a: a
+Content-Length: 11
+Content-Type: application/x-www-form-urlencoded
+
+curlrc read
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test44 b/tests/data/test44
index 0ec2f4b79..4f39bc1eb 100644
--- a/tests/data/test44
+++ b/tests/data/test44
@@ -20,6 +20,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test440 b/tests/data/test440
new file mode 100644
index 000000000..0986cda1a
--- /dev/null
+++ b/tests/data/test440
@@ -0,0 +1,73 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+HSTS
+trailing-dot
+</keywords>
+</info>
+
+<reply>
+
+# we use this as response to a CONNECT
+<connect nocheck="yes">
+HTTP/1.1 403 not OK at all
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Connection: close
+Funny-head: yesyes
+
+-foo-
+</connect>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<features>
+HSTS
+proxy
+https
+</features>
+
+# no trailing dot in the file only in the URL
+<file name="log/input%TESTNUMBER">
+this.hsts.example "99991001 04:47:41"
+</file>
+
+<name>
+HSTS with trailing-dot host name in URL but none in hsts file
+</name>
+<command>
+-x http://%HOSTIP:%HTTPPORT http://this.hsts.example./%TESTNUMBER --hsts log/input%TESTNUMBER -w '%{url_effective}\n'
+</command>
+</client>
+
+<verify>
+# we let it CONNECT to the server to confirm HSTS but deny from there
+<protocol>
+CONNECT this.hsts.example.:443 HTTP/1.1
+Host: this.hsts.example.:443
+User-Agent: curl/%VERSION
+Proxy-Connection: Keep-Alive
+
+</protocol>
+<stdout>
+HTTP/1.1 403 not OK at all
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Connection: close
+Funny-head: yesyes
+
+https://this.hsts.example./%TESTNUMBER
+</stdout>
+# Proxy CONNECT aborted
+<errorcode>
+56
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test441 b/tests/data/test441
new file mode 100644
index 000000000..6fbf7be3b
--- /dev/null
+++ b/tests/data/test441
@@ -0,0 +1,73 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+HSTS
+trailing-dot
+</keywords>
+</info>
+
+<reply>
+
+# we use this as response to a CONNECT
+<connect nocheck="yes">
+HTTP/1.1 403 not OK at all
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Connection: close
+Funny-head: yesyes
+
+-foo-
+</connect>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<features>
+HSTS
+proxy
+https
+</features>
+
+# no trailing dot in the file only in the URL
+<file name="log/input%TESTNUMBER">
+this.hsts.example. "99991001 04:47:41"
+</file>
+
+<name>
+HSTS with no t-dot host name in URL but t-dot in file
+</name>
+<command>
+-x http://%HOSTIP:%HTTPPORT http://this.hsts.example/%TESTNUMBER --hsts log/input%TESTNUMBER -w '%{url_effective}\n'
+</command>
+</client>
+
+<verify>
+# we let it CONNECT to the server to confirm HSTS but deny from there
+<protocol>
+CONNECT this.hsts.example:443 HTTP/1.1
+Host: this.hsts.example:443
+User-Agent: curl/%VERSION
+Proxy-Connection: Keep-Alive
+
+</protocol>
+<stdout>
+HTTP/1.1 403 not OK at all
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Connection: close
+Funny-head: yesyes
+
+https://this.hsts.example/%TESTNUMBER
+</stdout>
+# Proxy CONNECT aborted
+<errorcode>
+56
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test442 b/tests/data/test442
new file mode 100644
index 000000000..baab4aade
--- /dev/null
+++ b/tests/data/test442
@@ -0,0 +1,210 @@
+<testcase>
+# perl:
+#
+# for(1 .. 151) {
+# print join("\t",
+# "attack.invalid", "TRUE", "/", "FALSE", "0",
+# "name$_", "could-be-large-$_")."\n";
+# }
+#
+<info>
+<keywords>
+HTTP
+cookies
+--resolve
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+Send capped huge number of matching cookies
+</name>
+<command>
+http://attack.invalid:%HTTPPORT/a/b/%TESTNUMBER -b log/cookie%TESTNUMBER --resolve attack.invalid:%HTTPPORT:%HOSTIP -L
+</command>
+<file name="log/cookie%TESTNUMBER" mode="text">
+attack.invalid TRUE / FALSE 0 name1 could-be-large-1
+attack.invalid TRUE / FALSE 0 name2 could-be-large-2
+attack.invalid TRUE / FALSE 0 name3 could-be-large-3
+attack.invalid TRUE / FALSE 0 name4 could-be-large-4
+attack.invalid TRUE / FALSE 0 name5 could-be-large-5
+attack.invalid TRUE / FALSE 0 name6 could-be-large-6
+attack.invalid TRUE / FALSE 0 name7 could-be-large-7
+attack.invalid TRUE / FALSE 0 name8 could-be-large-8
+attack.invalid TRUE / FALSE 0 name9 could-be-large-9
+attack.invalid TRUE / FALSE 0 name10 could-be-large-10
+attack.invalid TRUE / FALSE 0 name11 could-be-large-11
+attack.invalid TRUE / FALSE 0 name12 could-be-large-12
+attack.invalid TRUE / FALSE 0 name13 could-be-large-13
+attack.invalid TRUE / FALSE 0 name14 could-be-large-14
+attack.invalid TRUE / FALSE 0 name15 could-be-large-15
+attack.invalid TRUE / FALSE 0 name16 could-be-large-16
+attack.invalid TRUE / FALSE 0 name17 could-be-large-17
+attack.invalid TRUE / FALSE 0 name18 could-be-large-18
+attack.invalid TRUE / FALSE 0 name19 could-be-large-19
+attack.invalid TRUE / FALSE 0 name20 could-be-large-20
+attack.invalid TRUE / FALSE 0 name21 could-be-large-21
+attack.invalid TRUE / FALSE 0 name22 could-be-large-22
+attack.invalid TRUE / FALSE 0 name23 could-be-large-23
+attack.invalid TRUE / FALSE 0 name24 could-be-large-24
+attack.invalid TRUE / FALSE 0 name25 could-be-large-25
+attack.invalid TRUE / FALSE 0 name26 could-be-large-26
+attack.invalid TRUE / FALSE 0 name27 could-be-large-27
+attack.invalid TRUE / FALSE 0 name28 could-be-large-28
+attack.invalid TRUE / FALSE 0 name29 could-be-large-29
+attack.invalid TRUE / FALSE 0 name30 could-be-large-30
+attack.invalid TRUE / FALSE 0 name31 could-be-large-31
+attack.invalid TRUE / FALSE 0 name32 could-be-large-32
+attack.invalid TRUE / FALSE 0 name33 could-be-large-33
+attack.invalid TRUE / FALSE 0 name34 could-be-large-34
+attack.invalid TRUE / FALSE 0 name35 could-be-large-35
+attack.invalid TRUE / FALSE 0 name36 could-be-large-36
+attack.invalid TRUE / FALSE 0 name37 could-be-large-37
+attack.invalid TRUE / FALSE 0 name38 could-be-large-38
+attack.invalid TRUE / FALSE 0 name39 could-be-large-39
+attack.invalid TRUE / FALSE 0 name40 could-be-large-40
+attack.invalid TRUE / FALSE 0 name41 could-be-large-41
+attack.invalid TRUE / FALSE 0 name42 could-be-large-42
+attack.invalid TRUE / FALSE 0 name43 could-be-large-43
+attack.invalid TRUE / FALSE 0 name44 could-be-large-44
+attack.invalid TRUE / FALSE 0 name45 could-be-large-45
+attack.invalid TRUE / FALSE 0 name46 could-be-large-46
+attack.invalid TRUE / FALSE 0 name47 could-be-large-47
+attack.invalid TRUE / FALSE 0 name48 could-be-large-48
+attack.invalid TRUE / FALSE 0 name49 could-be-large-49
+attack.invalid TRUE / FALSE 0 name50 could-be-large-50
+attack.invalid TRUE / FALSE 0 name51 could-be-large-51
+attack.invalid TRUE / FALSE 0 name52 could-be-large-52
+attack.invalid TRUE / FALSE 0 name53 could-be-large-53
+attack.invalid TRUE / FALSE 0 name54 could-be-large-54
+attack.invalid TRUE / FALSE 0 name55 could-be-large-55
+attack.invalid TRUE / FALSE 0 name56 could-be-large-56
+attack.invalid TRUE / FALSE 0 name57 could-be-large-57
+attack.invalid TRUE / FALSE 0 name58 could-be-large-58
+attack.invalid TRUE / FALSE 0 name59 could-be-large-59
+attack.invalid TRUE / FALSE 0 name60 could-be-large-60
+attack.invalid TRUE / FALSE 0 name61 could-be-large-61
+attack.invalid TRUE / FALSE 0 name62 could-be-large-62
+attack.invalid TRUE / FALSE 0 name63 could-be-large-63
+attack.invalid TRUE / FALSE 0 name64 could-be-large-64
+attack.invalid TRUE / FALSE 0 name65 could-be-large-65
+attack.invalid TRUE / FALSE 0 name66 could-be-large-66
+attack.invalid TRUE / FALSE 0 name67 could-be-large-67
+attack.invalid TRUE / FALSE 0 name68 could-be-large-68
+attack.invalid TRUE / FALSE 0 name69 could-be-large-69
+attack.invalid TRUE / FALSE 0 name70 could-be-large-70
+attack.invalid TRUE / FALSE 0 name71 could-be-large-71
+attack.invalid TRUE / FALSE 0 name72 could-be-large-72
+attack.invalid TRUE / FALSE 0 name73 could-be-large-73
+attack.invalid TRUE / FALSE 0 name74 could-be-large-74
+attack.invalid TRUE / FALSE 0 name75 could-be-large-75
+attack.invalid TRUE / FALSE 0 name76 could-be-large-76
+attack.invalid TRUE / FALSE 0 name77 could-be-large-77
+attack.invalid TRUE / FALSE 0 name78 could-be-large-78
+attack.invalid TRUE / FALSE 0 name79 could-be-large-79
+attack.invalid TRUE / FALSE 0 name80 could-be-large-80
+attack.invalid TRUE / FALSE 0 name81 could-be-large-81
+attack.invalid TRUE / FALSE 0 name82 could-be-large-82
+attack.invalid TRUE / FALSE 0 name83 could-be-large-83
+attack.invalid TRUE / FALSE 0 name84 could-be-large-84
+attack.invalid TRUE / FALSE 0 name85 could-be-large-85
+attack.invalid TRUE / FALSE 0 name86 could-be-large-86
+attack.invalid TRUE / FALSE 0 name87 could-be-large-87
+attack.invalid TRUE / FALSE 0 name88 could-be-large-88
+attack.invalid TRUE / FALSE 0 name89 could-be-large-89
+attack.invalid TRUE / FALSE 0 name90 could-be-large-90
+attack.invalid TRUE / FALSE 0 name91 could-be-large-91
+attack.invalid TRUE / FALSE 0 name92 could-be-large-92
+attack.invalid TRUE / FALSE 0 name93 could-be-large-93
+attack.invalid TRUE / FALSE 0 name94 could-be-large-94
+attack.invalid TRUE / FALSE 0 name95 could-be-large-95
+attack.invalid TRUE / FALSE 0 name96 could-be-large-96
+attack.invalid TRUE / FALSE 0 name97 could-be-large-97
+attack.invalid TRUE / FALSE 0 name98 could-be-large-98
+attack.invalid TRUE / FALSE 0 name99 could-be-large-99
+attack.invalid TRUE / FALSE 0 name100 could-be-large-100
+attack.invalid TRUE / FALSE 0 name101 could-be-large-101
+attack.invalid TRUE / FALSE 0 name102 could-be-large-102
+attack.invalid TRUE / FALSE 0 name103 could-be-large-103
+attack.invalid TRUE / FALSE 0 name104 could-be-large-104
+attack.invalid TRUE / FALSE 0 name105 could-be-large-105
+attack.invalid TRUE / FALSE 0 name106 could-be-large-106
+attack.invalid TRUE / FALSE 0 name107 could-be-large-107
+attack.invalid TRUE / FALSE 0 name108 could-be-large-108
+attack.invalid TRUE / FALSE 0 name109 could-be-large-109
+attack.invalid TRUE / FALSE 0 name110 could-be-large-110
+attack.invalid TRUE / FALSE 0 name111 could-be-large-111
+attack.invalid TRUE / FALSE 0 name112 could-be-large-112
+attack.invalid TRUE / FALSE 0 name113 could-be-large-113
+attack.invalid TRUE / FALSE 0 name114 could-be-large-114
+attack.invalid TRUE / FALSE 0 name115 could-be-large-115
+attack.invalid TRUE / FALSE 0 name116 could-be-large-116
+attack.invalid TRUE / FALSE 0 name117 could-be-large-117
+attack.invalid TRUE / FALSE 0 name118 could-be-large-118
+attack.invalid TRUE / FALSE 0 name119 could-be-large-119
+attack.invalid TRUE / FALSE 0 name120 could-be-large-120
+attack.invalid TRUE / FALSE 0 name121 could-be-large-121
+attack.invalid TRUE / FALSE 0 name122 could-be-large-122
+attack.invalid TRUE / FALSE 0 name123 could-be-large-123
+attack.invalid TRUE / FALSE 0 name124 could-be-large-124
+attack.invalid TRUE / FALSE 0 name125 could-be-large-125
+attack.invalid TRUE / FALSE 0 name126 could-be-large-126
+attack.invalid TRUE / FALSE 0 name127 could-be-large-127
+attack.invalid TRUE / FALSE 0 name128 could-be-large-128
+attack.invalid TRUE / FALSE 0 name129 could-be-large-129
+attack.invalid TRUE / FALSE 0 name130 could-be-large-130
+attack.invalid TRUE / FALSE 0 name131 could-be-large-131
+attack.invalid TRUE / FALSE 0 name132 could-be-large-132
+attack.invalid TRUE / FALSE 0 name133 could-be-large-133
+attack.invalid TRUE / FALSE 0 name134 could-be-large-134
+attack.invalid TRUE / FALSE 0 name135 could-be-large-135
+attack.invalid TRUE / FALSE 0 name136 could-be-large-136
+attack.invalid TRUE / FALSE 0 name137 could-be-large-137
+attack.invalid TRUE / FALSE 0 name138 could-be-large-138
+attack.invalid TRUE / FALSE 0 name139 could-be-large-139
+attack.invalid TRUE / FALSE 0 name140 could-be-large-140
+attack.invalid TRUE / FALSE 0 name141 could-be-large-141
+attack.invalid TRUE / FALSE 0 name142 could-be-large-142
+attack.invalid TRUE / FALSE 0 name143 could-be-large-143
+attack.invalid TRUE / FALSE 0 name144 could-be-large-144
+attack.invalid TRUE / FALSE 0 name145 could-be-large-145
+attack.invalid TRUE / FALSE 0 name146 could-be-large-146
+attack.invalid TRUE / FALSE 0 name147 could-be-large-147
+attack.invalid TRUE / FALSE 0 name148 could-be-large-148
+attack.invalid TRUE / FALSE 0 name149 could-be-large-149
+attack.invalid TRUE / FALSE 0 name150 could-be-large-150
+attack.invalid TRUE / FALSE 0 name151 could-be-large-151
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /a/b/%TESTNUMBER HTTP/1.1
+Host: attack.invalid:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Cookie: name150=could-be-large-150; name149=could-be-large-149; name148=could-be-large-148; name147=could-be-large-147; name146=could-be-large-146; name145=could-be-large-145; name144=could-be-large-144; name143=could-be-large-143; name142=could-be-large-142; name141=could-be-large-141; name140=could-be-large-140; name139=could-be-large-139; name138=could-be-large-138; name137=could-be-large-137; name136=could-be-large-136; name135=could-be-large-135; name134=could-be-large-134; name133=could-be-large-133; name132=could-be-large-132; name131=could-be-large-131; name130=could-be-large-130; name129=could-be-large-129; name128=could-be-large-128; name127=could-be-large-127; name126=could-be-large-126; name125=could-be-large-125; name124=could-be-large-124; name123=could-be-large-123; name122=could-be-large-122; name121=could-be-large-121; name120=could-be-large-120; name119=could-be-large-119; name118=could-be-large-118; name117=could-be-large-117; name116=could-be-large-116; name115=could-be-large-115; name114=could-be-large-114; name113=could-be-large-113; name112=could-be-large-112; name111=could-be-large-111; name110=could-be-large-110; name109=could-be-large-109; name108=could-be-large-108; name107=could-be-large-107; name106=could-be-large-106; name105=could-be-large-105; name104=could-be-large-104; name103=could-be-large-103; name102=could-be-large-102; name101=could-be-large-101; name100=could-be-large-100; name99=could-be-large-99; name98=could-be-large-98; name97=could-be-large-97; name96=could-be-large-96; name95=could-be-large-95; name94=could-be-large-94; name93=could-be-large-93; name92=could-be-large-92; name91=could-be-large-91; name90=could-be-large-90; name89=could-be-large-89; name88=could-be-large-88; name87=could-be-large-87; name86=could-be-large-86; name85=could-be-large-85; name84=could-be-large-84; name83=could-be-large-83; name82=could-be-large-82; name81=could-be-large-81; name80=could-be-large-80; name79=could-be-large-79; name78=could-be-large-78; name77=could-be-large-77; name76=could-be-large-76; name75=could-be-large-75; name74=could-be-large-74; name73=could-be-large-73; name72=could-be-large-72; name71=could-be-large-71; name70=could-be-large-70; name69=could-be-large-69; name68=could-be-large-68; name67=could-be-large-67; name66=could-be-large-66; name65=could-be-large-65; name64=could-be-large-64; name63=could-be-large-63; name62=could-be-large-62; name61=could-be-large-61; name60=could-be-large-60; name59=could-be-large-59; name58=could-be-large-58; name57=could-be-large-57; name56=could-be-large-56; name55=could-be-large-55; name54=could-be-large-54; name53=could-be-large-53; name52=could-be-large-52; name51=could-be-large-51; name50=could-be-large-50; name49=could-be-large-49; name48=could-be-large-48; name47=could-be-large-47; name46=could-be-large-46; name45=could-be-large-45; name44=could-be-large-44; name43=could-be-large-43; name42=could-be-large-42; name41=could-be-large-41; name40=could-be-large-40; name39=could-be-large-39; name38=could-be-large-38; name37=could-be-large-37; name36=could-be-large-36; name35=could-be-large-35; name34=could-be-large-34; name33=could-be-large-33; name32=could-be-large-32; name31=could-be-large-31; name30=could-be-large-30; name29=could-be-large-29; name28=could-be-large-28; name27=could-be-large-27; name26=could-be-large-26; name25=could-be-large-25; name24=could-be-large-24; name23=could-be-large-23; name22=could-be-large-22; name21=could-be-large-21; name20=could-be-large-20; name19=could-be-large-19; name18=could-be-large-18; name17=could-be-large-17; name16=could-be-large-16; name15=could-be-large-15; name14=could-be-large-14; name13=could-be-large-13; name12=could-be-large-12; name11=could-be-large-11; name10=could-be-large-10; name9=could-be-large-9; name8=could-be-large-8; name7=could-be-large-7; name6=could-be-large-6; name5=could-be-large-5; name4=could-be-large-4; name3=could-be-large-3; name2=could-be-large-2; name1=could-be-large-1
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test443 b/tests/data/test443
new file mode 100644
index 000000000..f984e7397
--- /dev/null
+++ b/tests/data/test443
@@ -0,0 +1,79 @@
+<testcase>
+# perl:
+#
+#for(1 .. 20) {
+# print join("\t",
+# "attack.invalid", "TRUE", "/", "FALSE", "0",
+# "huge-$_", ('a' x 500)."-$_")."\n";
+#}
+#
+<info>
+<keywords>
+HTTP
+cookies
+--resolve
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+Cookie header in request no longer than 8K
+</name>
+<command>
+http://attack.invalid:%HTTPPORT/a/b/%TESTNUMBER -b log/cookie%TESTNUMBER --resolve attack.invalid:%HTTPPORT:%HOSTIP -L
+</command>
+<file name="log/cookie%TESTNUMBER" mode="text">
+attack.invalid TRUE / FALSE 0 huge-1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-1
+attack.invalid TRUE / FALSE 0 huge-2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-2
+attack.invalid TRUE / FALSE 0 huge-3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3
+attack.invalid TRUE / FALSE 0 huge-4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4
+attack.invalid TRUE / FALSE 0 huge-5 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-5
+attack.invalid TRUE / FALSE 0 huge-6 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-6
+attack.invalid TRUE / FALSE 0 huge-7 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-7
+attack.invalid TRUE / FALSE 0 huge-8 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-8
+attack.invalid TRUE / FALSE 0 huge-9 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9
+attack.invalid TRUE / FALSE 0 huge-10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10
+attack.invalid TRUE / FALSE 0 huge-11 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-11
+attack.invalid TRUE / FALSE 0 huge-12 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-12
+attack.invalid TRUE / FALSE 0 huge-13 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-13
+attack.invalid TRUE / FALSE 0 huge-14 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-14
+attack.invalid TRUE / FALSE 0 huge-15 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-15
+attack.invalid TRUE / FALSE 0 huge-16 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-16
+attack.invalid TRUE / FALSE 0 huge-17 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-17
+attack.invalid TRUE / FALSE 0 huge-18 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-18
+attack.invalid TRUE / FALSE 0 huge-19 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-19
+attack.invalid TRUE / FALSE 0 huge-20 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /a/b/%TESTNUMBER HTTP/1.1
+Host: attack.invalid:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Cookie: huge-20=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20; huge-19=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-19; huge-18=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-18; huge-17=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-17; huge-16=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-16; huge-15=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-15; huge-14=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-14; huge-13=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-13; huge-12=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-12; huge-11=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-11; huge-10=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10; huge-9=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9; huge-8=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-8; huge-7=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-7; huge-6=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-6
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test444 b/tests/data/test444
new file mode 100644
index 000000000..89d671c72
--- /dev/null
+++ b/tests/data/test444
@@ -0,0 +1,190 @@
+<testcase>
+# perl:
+#
+#for(1 .. 200) {
+#
+#}
+#
+<info>
+<keywords>
+HTTP
+cookies
+--resolve
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Set-Cookie: cookie-1=yes;
+Set-Cookie: cookie-2=yes;
+Set-Cookie: cookie-3=yes;
+Set-Cookie: cookie-4=yes;
+Set-Cookie: cookie-5=yes;
+Set-Cookie: cookie-6=yes;
+Set-Cookie: cookie-7=yes;
+Set-Cookie: cookie-8=yes;
+Set-Cookie: cookie-9=yes;
+Set-Cookie: cookie-10=yes;
+Set-Cookie: cookie-11=yes;
+Set-Cookie: cookie-12=yes;
+Set-Cookie: cookie-13=yes;
+Set-Cookie: cookie-14=yes;
+Set-Cookie: cookie-15=yes;
+Set-Cookie: cookie-16=yes;
+Set-Cookie: cookie-17=yes;
+Set-Cookie: cookie-18=yes;
+Set-Cookie: cookie-19=yes;
+Set-Cookie: cookie-20=yes;
+Set-Cookie: cookie-21=yes;
+Set-Cookie: cookie-22=yes;
+Set-Cookie: cookie-23=yes;
+Set-Cookie: cookie-24=yes;
+Set-Cookie: cookie-25=yes;
+Set-Cookie: cookie-26=yes;
+Set-Cookie: cookie-27=yes;
+Set-Cookie: cookie-28=yes;
+Set-Cookie: cookie-29=yes;
+Set-Cookie: cookie-30=yes;
+Set-Cookie: cookie-31=yes;
+Set-Cookie: cookie-32=yes;
+Set-Cookie: cookie-33=yes;
+Set-Cookie: cookie-34=yes;
+Set-Cookie: cookie-35=yes;
+Set-Cookie: cookie-36=yes;
+Set-Cookie: cookie-37=yes;
+Set-Cookie: cookie-38=yes;
+Set-Cookie: cookie-39=yes;
+Set-Cookie: cookie-40=yes;
+Set-Cookie: cookie-41=yes;
+Set-Cookie: cookie-42=yes;
+Set-Cookie: cookie-43=yes;
+Set-Cookie: cookie-44=yes;
+Set-Cookie: cookie-45=yes;
+Set-Cookie: cookie-46=yes;
+Set-Cookie: cookie-47=yes;
+Set-Cookie: cookie-48=yes;
+Set-Cookie: cookie-49=yes;
+Set-Cookie: cookie-50=yes;
+Set-Cookie: cookie-51=yes;
+Set-Cookie: cookie-52=yes;
+Set-Cookie: cookie-53=yes;
+Set-Cookie: cookie-54=yes;
+Set-Cookie: cookie-55=yes;
+Set-Cookie: cookie-56=yes;
+Set-Cookie: cookie-57=yes;
+Set-Cookie: cookie-58=yes;
+Set-Cookie: cookie-59=yes;
+Set-Cookie: cookie-60=yes;
+Set-Cookie: cookie-61=yes;
+Set-Cookie: cookie-62=yes;
+Set-Cookie: cookie-63=yes;
+Set-Cookie: cookie-64=yes;
+Set-Cookie: cookie-65=yes;
+Set-Cookie: cookie-66=yes;
+Set-Cookie: cookie-67=yes;
+Set-Cookie: cookie-68=yes;
+Set-Cookie: cookie-69=yes;
+Set-Cookie: cookie-70=yes;
+Set-Cookie: cookie-71=yes;
+Set-Cookie: cookie-72=yes;
+Set-Cookie: cookie-73=yes;
+Set-Cookie: cookie-74=yes;
+Set-Cookie: cookie-75=yes;
+Set-Cookie: cookie-76=yes;
+Set-Cookie: cookie-77=yes;
+Set-Cookie: cookie-78=yes;
+Set-Cookie: cookie-79=yes;
+Set-Cookie: cookie-80=yes;
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+Many Set-Cookie response headers
+</name>
+<command>
+http://attack.invalid:%HTTPPORT/a/b/%TESTNUMBER -c log/cookie%TESTNUMBER --resolve attack.invalid:%HTTPPORT:%HOSTIP
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /a/b/%TESTNUMBER HTTP/1.1
+Host: attack.invalid:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<file name="log/cookie%TESTNUMBER" mode="text">
+# Netscape HTTP Cookie File
+# https://curl.se/docs/http-cookies.html
+# This file was generated by libcurl! Edit at your own risk.
+
+attack.invalid FALSE /a/b/ FALSE 0 cookie-50 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-49 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-48 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-47 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-46 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-45 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-44 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-43 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-42 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-41 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-40 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-39 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-38 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-37 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-36 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-35 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-34 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-33 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-32 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-31 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-30 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-29 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-28 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-27 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-26 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-25 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-24 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-23 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-22 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-21 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-20 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-19 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-18 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-17 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-16 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-15 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-14 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-13 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-12 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-11 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-10 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-9 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-8 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-7 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-6 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-5 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-4 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-3 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-2 yes
+attack.invalid FALSE /a/b/ FALSE 0 cookie-1 yes
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test445 b/tests/data/test445
new file mode 100644
index 000000000..0406c0f9a
--- /dev/null
+++ b/tests/data/test445
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<connect>
+HTTP/1.1 503 no just no
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+
+-foo-
+</connect>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+gopher
+dict
+http
+ftp
+imap
+ldap
+mqtt
+pop3
+rtsp
+scp
+sftp
+smb
+smtp
+</features>
+<server>
+http-proxy
+</server>
+ <name>
+Refuse tunneling protocols through HTTP proxy
+ </name>
+ <command>
+-x http://%HOSTIP:%PROXYPORT/%TESTNUMBER -p gopher://127.0.0.1 dict://127.0.0.1 http://moo https://example telnet://another ftp://yes ftps://again imap://more ldap://perhaps mqtt://yes pop3://mail rtsp://harder scp://copy sftp://files smb://wird smtp://send
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# refused in the CONNECT
+<errorcode>
+56
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test493 b/tests/data/test493
index db053d105..f0c41105b 100644
--- a/tests/data/test493
+++ b/tests/data/test493
@@ -2,6 +2,7 @@
<info>
<keywords>
HTTP
+HTTP proxy
HSTS
url_effective
</keywords>
diff --git a/tests/data/test495 b/tests/data/test495
new file mode 100644
index 000000000..deba48ae1
--- /dev/null
+++ b/tests/data/test495
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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>
+user+password in URL with optional netrc
+</name>
+# the key is the URL encoded user, which needs to be sent encoded in the
+# Authorization: header
+<command>
+http://foo%40bar:secret@%HOSTIP:%HTTPPORT/%TESTNUMBER --netrc-optional
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic Zm9vQGJhcjpzZWNyZXQ=
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test496 b/tests/data/test496
new file mode 100644
index 000000000..19050f377
--- /dev/null
+++ b/tests/data/test496
@@ -0,0 +1,36 @@
+<testcase>
+<info>
+<keywords>
+curl tool
+cmdline
+parallel
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<name>
+parallel upload missing file
+</name>
+ <command>
+0 -Z -Tz
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+26
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test511 b/tests/data/test511
index 994907a9b..6bcf25de5 100644
--- a/tests/data/test511
+++ b/tests/data/test511
@@ -44,6 +44,8 @@ USER anonymous
PASS ftp@example.com
PWD
MDTM %TESTNUMBER
+TYPE I
+SIZE %TESTNUMBER
QUIT
</protocol>
</verify>
diff --git a/tests/data/test516 b/tests/data/test516
index c441cfb2f..5f7d210a5 100644
--- a/tests/data/test516
+++ b/tests/data/test516
@@ -21,6 +21,9 @@ OK
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test547 b/tests/data/test547
index 93ee7903c..de0780081 100644
--- a/tests/data/test547
+++ b/tests/data/test547
@@ -6,6 +6,7 @@ HTTP POST
POST callback
HTTP proxy
HTTP proxy NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -78,24 +79,14 @@ lib%TESTNUMBER
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy auth NTLM with POST data from read callback
- </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>
+</name>
+<command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -119,7 +110,7 @@ Content-Type: application/x-www-form-urlencoded
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
diff --git a/tests/data/test548 b/tests/data/test548
index 72e816bbb..98b43642b 100644
--- a/tests/data/test548
+++ b/tests/data/test548
@@ -5,6 +5,7 @@ HTTP
HTTP POST
HTTP proxy
HTTP proxy NTLM auth
+NTLM
</keywords>
</info>
@@ -78,24 +79,14 @@ lib%TESTNUMBER
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
- </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>
+</name>
+<command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -119,7 +110,7 @@ Content-Type: application/x-www-form-urlencoded
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
diff --git a/tests/data/test554 b/tests/data/test554
index 8488be60b..cee616427 100644
--- a/tests/data/test554
+++ b/tests/data/test554
@@ -38,6 +38,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test555 b/tests/data/test555
index b19949fd2..f3633f0b1 100644
--- a/tests/data/test555
+++ b/tests/data/test555
@@ -10,6 +10,7 @@ POST callback
HTTP proxy
HTTP proxy NTLM auth
multi
+NTLM
</keywords>
</info>
@@ -83,24 +84,14 @@ lib%TESTNUMBER
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy auth NTLM with POST data from read callback multi-if
- </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>
+</name>
+<command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -124,7 +115,7 @@ Content-Type: application/x-www-form-urlencoded
POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 36
diff --git a/tests/data/test58 b/tests/data/test58
index 01d7189a8..75765b224 100644
--- a/tests/data/test58
+++ b/tests/data/test58
@@ -36,7 +36,7 @@ a few bytes
# Verify data after the test has been "shot"
<verify>
<protocol>
-PUT /we/want/%TESTNUMBERte%5B%5Dst.txt HTTP/1.1
+PUT /we/want/%TESTNUMBERte%5b%5dst.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test584 b/tests/data/test584
index fb234440b..7a7d2499c 100644
--- a/tests/data/test584
+++ b/tests/data/test584
@@ -36,6 +36,9 @@ OK
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test587 b/tests/data/test587
index a40e4bf80..6af7d9936 100644
--- a/tests/data/test587
+++ b/tests/data/test587
@@ -16,6 +16,9 @@ flaky
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test589 b/tests/data/test589
index 02fe54315..6f4597877 100644
--- a/tests/data/test589
+++ b/tests/data/test589
@@ -22,6 +22,9 @@ OK
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test590 b/tests/data/test590
index 045b03718..00ef1b190 100644
--- a/tests/data/test590
+++ b/tests/data/test590
@@ -6,6 +6,7 @@ HTTP POST
POST callback
HTTP proxy
HTTP proxy NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -76,24 +77,14 @@ lib%TESTNUMBER
NTLM
SSL
!SSPI
-debug
proxy
</features>
- <name>
+<name>
HTTP proxy offers Negotiate+NTLM, use only NTLM
- </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>
+</name>
+<command>
http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -113,7 +104,7 @@ Proxy-Connection: Keep-Alive
GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
Host: test.remote.example.com
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAAIAAgAcgAAAAAAAAAAAAAAhoIBAAQt1KW5CgG4YdWWcfXyfXBz1ZMCzYp37xYjBiAizmw58O6eQS7yR66eqYGWeSwl9W1lY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAALAAsAcgAAAAAAAAAAAAAAhoIBAAQt1KW5CgG4YdWWcfXyfXBz1ZMCzYp37xYjBiAizmw58O6eQS7yR66eqYGWeSwl9W1lV09SS1NUQVRJT04=
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test643 b/tests/data/test643
index 65bb99059..ca6c5416a 100644
--- a/tests/data/test643
+++ b/tests/data/test643
@@ -39,6 +39,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test644 b/tests/data/test644
new file mode 100644
index 000000000..c067d034c
--- /dev/null
+++ b/tests/data/test644
@@ -0,0 +1,85 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+xattr
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 301 OK
+Date: Tue, 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: fake/data
+Funny-head: yesyes
+Location: data/%TESTNUMBER0002.txt?coolsite=yes
+
+-foo-
+</data>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/real
+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-
+</data2>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+debug
+xattr
+</features>
+# simulate the xattr operations
+<setenv>
+CURL_FAKE_XATTR=1
+</setenv>
+<name>
+--xattr with redirect
+</name>
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --xattr -L -o log/out%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<stdout mode="text">
+user.mime_type => text/html
+user.xdg.origin.url => http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test645 b/tests/data/test645
index d5ce825bb..523097222 100644
--- a/tests/data/test645
+++ b/tests/data/test645
@@ -39,6 +39,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test646 b/tests/data/test646
index 4c4297c92..3418fa24c 100644
--- a/tests/data/test646
+++ b/tests/data/test646
@@ -14,6 +14,9 @@ MULTIPART
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
smtp
</server>
diff --git a/tests/data/test647 b/tests/data/test647
index a609ad97d..90d44c2c4 100644
--- a/tests/data/test647
+++ b/tests/data/test647
@@ -15,6 +15,9 @@ MULTIPART
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
imap
</server>
diff --git a/tests/data/test648 b/tests/data/test648
index 3683530d7..fe32cd5ee 100644
--- a/tests/data/test648
+++ b/tests/data/test648
@@ -14,6 +14,9 @@ MULTIPART
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
smtp
</server>
diff --git a/tests/data/test649 b/tests/data/test649
index 0f759f0de..668cdc75a 100644
--- a/tests/data/test649
+++ b/tests/data/test649
@@ -14,6 +14,9 @@ MULTIPART
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
smtp
</server>
diff --git a/tests/data/test650 b/tests/data/test650
index 0e4c5d3c2..e2626b752 100644
--- a/tests/data/test650
+++ b/tests/data/test650
@@ -23,6 +23,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test651 b/tests/data/test651
index be2cbe405..38f21c3ad 100644
--- a/tests/data/test651
+++ b/tests/data/test651
@@ -23,6 +23,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test652 b/tests/data/test652
index f4b997216..d3ff7a0f7 100644
--- a/tests/data/test652
+++ b/tests/data/test652
@@ -14,6 +14,9 @@ MIME
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
smtp
</server>
diff --git a/tests/data/test653 b/tests/data/test653
index db62c985b..fa018be25 100644
--- a/tests/data/test653
+++ b/tests/data/test653
@@ -39,6 +39,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test654 b/tests/data/test654
index d8da0da1d..5716a0ba6 100644
--- a/tests/data/test654
+++ b/tests/data/test654
@@ -39,6 +39,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test666 b/tests/data/test666
index d8b3356bc..14fbe4933 100644
--- a/tests/data/test666
+++ b/tests/data/test666
@@ -32,6 +32,9 @@ OK
#
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test667 b/tests/data/test667
index e54e15b0e..754645394 100644
--- a/tests/data/test667
+++ b/tests/data/test667
@@ -32,6 +32,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test668 b/tests/data/test668
index 0606e3707..c1a0f8f19 100644
--- a/tests/data/test668
+++ b/tests/data/test668
@@ -32,6 +32,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test669 b/tests/data/test669
index 20c02a638..7f1be86b3 100644
--- a/tests/data/test669
+++ b/tests/data/test669
@@ -21,6 +21,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test67 b/tests/data/test67
index 0e50450b4..b2790099d 100644
--- a/tests/data/test67
+++ b/tests/data/test67
@@ -4,6 +4,7 @@
HTTP
HTTP GET
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -58,26 +59,16 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
</server>
- <name>
+<name>
HTTP with NTLM authorization
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -91,7 +82,7 @@ Accept: */*
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test670 b/tests/data/test670
index 4d1056c55..b7b5a90cb 100644
--- a/tests/data/test670
+++ b/tests/data/test670
@@ -32,6 +32,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test671 b/tests/data/test671
index b6550aa3d..110038298 100644
--- a/tests/data/test671
+++ b/tests/data/test671
@@ -32,6 +32,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test672 b/tests/data/test672
index 43d183e2d..d7f1cccb0 100644
--- a/tests/data/test672
+++ b/tests/data/test672
@@ -32,6 +32,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test673 b/tests/data/test673
index e263810fd..0fd3f3732 100644
--- a/tests/data/test673
+++ b/tests/data/test673
@@ -32,6 +32,9 @@ hello
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test675 b/tests/data/test675
index b0933bede..fdc5a7631 100644
--- a/tests/data/test675
+++ b/tests/data/test675
@@ -12,7 +12,7 @@ HTTP Basic auth
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Type: text/html
-Content-Length: 26
+Content-Length: 26
the content would go here
</data>
diff --git a/tests/data/test679 b/tests/data/test679
new file mode 100644
index 000000000..53b20c6e0
--- /dev/null
+++ b/tests/data/test679
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 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>
+netrc with quoted password
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP login user1 password "with spaces and \"\n\r\t\a"
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET / HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic dXNlcjE6d2l0aCBzcGFjZXMgYW5kICIKDQlh
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test68 b/tests/data/test68
index cd3378b5a..b6d8f67cb 100644
--- a/tests/data/test68
+++ b/tests/data/test68
@@ -4,6 +4,7 @@
HTTP
HTTP GET
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -57,26 +58,16 @@ Wrong password dude. Get it fixed and return.
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
</server>
- <name>
+<name>
HTTP with NTLM authorization and wrong password
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -90,7 +81,7 @@ Accept: */*
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test680 b/tests/data/test680
new file mode 100644
index 000000000..23e194daa
--- /dev/null
+++ b/tests/data/test680
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+http
+</features>
+ <name>
+netrc with quoted password but missing end quote
+ </name>
+ <command>
+--netrc --netrc-file log/netrc%TESTNUMBER http://user1@http.example/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP login user1 password "with spaces and \"\n\r\t\a
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+26
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test681 b/tests/data/test681
new file mode 100644
index 000000000..d98393ddb
--- /dev/null
+++ b/tests/data/test681
@@ -0,0 +1,51 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+--remote-name-all with --no-remote-name
+</name>
+<command option="no-include">
+--remote-name-all --no-remote-name --output-dir log http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+<stdout>
+-foo-
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test682 b/tests/data/test682
new file mode 100644
index 000000000..dfe076e5e
--- /dev/null
+++ b/tests/data/test682
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Fri, 05 Aug 2022 10:09:00 GMT
+Server: test-server/fake
+Content-Type: text/plain
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+netrc with multiple logins - pick first
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user1@%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP login user1 password passwd1
+machine %HOSTIP login user2 password passwd2
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET / HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic %b64[user1:passwd1]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test683 b/tests/data/test683
new file mode 100644
index 000000000..cf6ea4473
--- /dev/null
+++ b/tests/data/test683
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Fri, 05 Aug 2022 10:09:00 GMT
+Server: test-server/fake
+Content-Type: text/plain
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+netrc with multiple logins - pick second
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user2@%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP login user1 password passwd1
+machine %HOSTIP login user2 password passwd2
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET / HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic %b64[user2:passwd2]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test684 b/tests/data/test684
new file mode 100644
index 000000000..d7391a131
--- /dev/null
+++ b/tests/data/test684
@@ -0,0 +1,52 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Fri, 05 Aug 2022 10:09:00 GMT
+Server: test-server/fake
+Content-Type: text/plain
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+netrc with no login
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP password 5up3r53cr37
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET / HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic %b64[:5up3r53cr37]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test685 b/tests/data/test685
new file mode 100644
index 000000000..ba520bd54
--- /dev/null
+++ b/tests/data/test685
@@ -0,0 +1,52 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Fri, 05 Aug 2022 10:09:00 GMT
+Server: test-server/fake
+Content-Type: text/plain
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+netrc with no login - provided user
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user@%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP password 5up3r53cr37
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+</protocol>
+GET / HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic %b64[user:5up3r53cr37]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+
+</verify>
+</testcase>
diff --git a/tests/data/test69 b/tests/data/test69
index edaa3d8cf..1df70f3d9 100644
--- a/tests/data/test69
+++ b/tests/data/test69
@@ -4,6 +4,7 @@
HTTP
HTTP GET
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -74,26 +75,16 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
</server>
- <name>
+<name>
HTTP with NTLM, Basic or Wild-and-crazy authorization
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -112,7 +103,7 @@ Accept: */*
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test700 b/tests/data/test700
index 23e003766..e2a0d3320 100644
--- a/tests/data/test700
+++ b/tests/data/test700
@@ -29,6 +29,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
socks4
diff --git a/tests/data/test701 b/tests/data/test701
index db22d668e..f4cd7f14b 100644
--- a/tests/data/test701
+++ b/tests/data/test701
@@ -29,6 +29,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
socks5
diff --git a/tests/data/test702 b/tests/data/test702
index dd84ffe26..4e06f8889 100644
--- a/tests/data/test702
+++ b/tests/data/test702
@@ -20,6 +20,9 @@ response 91
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
socks4
</server>
diff --git a/tests/data/test706 b/tests/data/test706
index b0531e788..873f12989 100644
--- a/tests/data/test706
+++ b/tests/data/test706
@@ -31,6 +31,9 @@ dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
ftp
socks4
diff --git a/tests/data/test707 b/tests/data/test707
index d4c3ab7c6..e58919345 100644
--- a/tests/data/test707
+++ b/tests/data/test707
@@ -31,6 +31,9 @@ dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
ftp
socks5
diff --git a/tests/data/test708 b/tests/data/test708
index ff5b91444..72f4dcec8 100644
--- a/tests/data/test708
+++ b/tests/data/test708
@@ -29,6 +29,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
socks4
diff --git a/tests/data/test709 b/tests/data/test709
index 9d43c7521..d6380aff2 100644
--- a/tests/data/test709
+++ b/tests/data/test709
@@ -29,6 +29,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
socks5
diff --git a/tests/data/test71 b/tests/data/test71
index 7f8b049b2..56c36e1b6 100644
--- a/tests/data/test71
+++ b/tests/data/test71
@@ -21,6 +21,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test710 b/tests/data/test710
index 5302022fe..6400eefb3 100644
--- a/tests/data/test710
+++ b/tests/data/test710
@@ -29,6 +29,9 @@ Funny-head: yesyes
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
http
socks5
diff --git a/tests/data/test711 b/tests/data/test711
index a70631a08..e5f1c39fd 100644
--- a/tests/data/test711
+++ b/tests/data/test711
@@ -22,6 +22,9 @@ silly content
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
ftp
socks5
diff --git a/tests/data/test712 b/tests/data/test712
index 0c6a64338..dbdf1adbe 100644
--- a/tests/data/test712
+++ b/tests/data/test712
@@ -19,6 +19,9 @@ silly content
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
ftp
socks5
diff --git a/tests/data/test713 b/tests/data/test713
index 1803f8e9e..8c94a9cc1 100644
--- a/tests/data/test713
+++ b/tests/data/test713
@@ -20,6 +20,9 @@ silly content
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
ftp
socks5
diff --git a/tests/data/test714 b/tests/data/test714
index b405bcd96..1e042404e 100644
--- a/tests/data/test714
+++ b/tests/data/test714
@@ -35,6 +35,9 @@ silly content
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
ftp
http-proxy
diff --git a/tests/data/test715 b/tests/data/test715
index 1bbceb790..d3d89d514 100644
--- a/tests/data/test715
+++ b/tests/data/test715
@@ -36,6 +36,9 @@ silly content
#
# Client-side
<client>
+<features>
+proxy
+</features>
<server>
ftp
http-proxy
diff --git a/tests/data/test718 b/tests/data/test718
index 6ab6c5a31..613647aa0 100644
--- a/tests/data/test718
+++ b/tests/data/test718
@@ -17,11 +17,13 @@ HTTP proxy Digest auth
<connect>
HTTP/1.1 407 Authorization Required to proxy me swsclose
Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"
+
</connect>
<datacheck>
HTTP/1.1 407 Authorization Required to proxy me swsclose
Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"
+
</datacheck>
</reply>
diff --git a/tests/data/test8 b/tests/data/test8
index a8548e6c2..fa44a5a6a 100644
--- a/tests/data/test8
+++ b/tests/data/test8
@@ -46,6 +46,36 @@ Set-Cookie: trailingspace = removed; path=/we/want;
Set-Cookie: nocookie=yes; path=/WE;
Set-Cookie: blexp=yesyes; domain=%HOSTIP; domain=%HOSTIP; expiry=totally bad;
Set-Cookie: partialip=nono; domain=.0.0.1;
+Set-Cookie: cookie1=%hex[%01-junk]hex%
+Set-Cookie: cookie2=%hex[%02-junk]hex%
+Set-Cookie: cookie3=%hex[%03-junk]hex%
+Set-Cookie: cookie4=%hex[%04-junk]hex%
+Set-Cookie: cookie5=%hex[%05-junk]hex%
+Set-Cookie: cookie6=%hex[%06-junk]hex%
+Set-Cookie: cookie7=%hex[%07-junk]hex%
+Set-Cookie: cookie8=%hex[%08-junk]hex%
+Set-Cookie: cookie9=%hex[junk--%09]hex%
+Set-Cookie: cookie11=%hex[%0b-junk]hex%
+Set-Cookie: cookie12=%hex[%0c-junk]hex%
+Set-Cookie: cookie14=%hex[%0e-junk]hex%
+Set-Cookie: cookie15=%hex[%0f-junk]hex%
+Set-Cookie: cookie16=%hex[%10-junk]hex%
+Set-Cookie: cookie17=%hex[%11-junk]hex%
+Set-Cookie: cookie18=%hex[%12-junk]hex%
+Set-Cookie: cookie19=%hex[%13-junk]hex%
+Set-Cookie: cookie20=%hex[%14-junk]hex%
+Set-Cookie: cookie21=%hex[%15-junk]hex%
+Set-Cookie: cookie22=%hex[%16-junk]hex%
+Set-Cookie: cookie23=%hex[%17-junk]hex%
+Set-Cookie: cookie24=%hex[%18-junk]hex%
+Set-Cookie: cookie25=%hex[%19-junk]hex%
+Set-Cookie: cookie26=%hex[%1a-junk]hex%
+Set-Cookie: cookie27=%hex[%1b-junk]hex%
+Set-Cookie: cookie28=%hex[%1c-junk]hex%
+Set-Cookie: cookie29=%hex[%1d-junk]hex%
+Set-Cookie: cookie30=%hex[%1e-junk]hex%
+Set-Cookie: cookie31=%hex[%1f-junk]hex%
+Set-Cookie: cookie31=%hex[%7f-junk]hex%
</file>
<precheck>
@@ -60,7 +90,7 @@ GET /we/want/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
-Cookie: name with space=is weird but; trailingspace=removed; cookie=perhaps; cookie=yes; foobar=name; blexp=yesyes
+Cookie: name with space=is weird but; trailingspace=removed; cookie=perhaps; cookie=yes; foobar=name; blexp=yesyes; cookie9=junk--
</protocol>
</verify>
diff --git a/tests/data/test81 b/tests/data/test81
index 1808bab18..f692f34f4 100644
--- a/tests/data/test81
+++ b/tests/data/test81
@@ -5,6 +5,7 @@ HTTP
HTTP GET
HTTP proxy
HTTP proxy NTLM auth
+NTLM
</keywords>
</info>
@@ -57,27 +58,17 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
proxy
</features>
<server>
http
</server>
- <name>
+<name>
HTTP with proxy using NTLM authorization
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy-user testuser:testpass -x http://%HOSTIP:%HTTPPORT --proxy-ntlm
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -92,7 +83,7 @@ Proxy-Connection: Keep-Alive
GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
diff --git a/tests/data/test822 b/tests/data/test822
index 257115ba4..61db77dc3 100644
--- a/tests/data/test822
+++ b/tests/data/test822
@@ -4,6 +4,7 @@
IMAP
SASL
SASL AUTH NTLM
+NTLM
</keywords>
</info>
@@ -14,7 +15,7 @@ SASL AUTH NTLM
AUTH NTLM
REPLY AUTHENTICATE +
REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= A002 OK AUTHENTICATE completed
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= A002 OK AUTHENTICATE completed
</servercmd>
<data>
From: me@somewhere
@@ -37,23 +38,13 @@ imap
NTLM
SSL
!SSPI
-debug
</features>
- <name>
+<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>
+</name>
+<command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u testuser:testpass
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
#
@@ -63,7 +54,7 @@ chkhostname curlhost
A001 CAPABILITY
A002 AUTHENTICATE NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
diff --git a/tests/data/test827 b/tests/data/test827
index 79e449b79..493775381 100644
--- a/tests/data/test827
+++ b/tests/data/test827
@@ -5,6 +5,7 @@ IMAP
SASL
SASL AUTH NTLM
SASL-IR
+NTLM
</keywords>
</info>
@@ -15,7 +16,7 @@ SASL-IR
AUTH NTLM
CAPA SASL-IR
REPLY AUTHENTICATE + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= A002 OK AUTHENTICATE completed
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= A002 OK AUTHENTICATE completed
</servercmd>
<data>
From: me@somewhere
@@ -38,23 +39,13 @@ imap
NTLM
SSL
!SSPI
-debug
</features>
- <name>
+<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>
+</name>
+<command>
'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u testuser:testpass
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
#
@@ -63,7 +54,7 @@ chkhostname curlhost
<protocol>
A001 CAPABILITY
A002 AUTHENTICATE NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
A003 SELECT %TESTNUMBER
A004 FETCH 1 BODY[]
A005 LOGOUT
diff --git a/tests/data/test852 b/tests/data/test852
index 8e608eb57..2234087ee 100644
--- a/tests/data/test852
+++ b/tests/data/test852
@@ -34,7 +34,7 @@ pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -l -u user:secret
# Verify data after the test has been "shot"
<verify>
<errorcode>
-56
+8
</errorcode>
<protocol>
CAPA
diff --git a/tests/data/test855 b/tests/data/test855
index 24b1166c6..0ab1ab397 100644
--- a/tests/data/test855
+++ b/tests/data/test855
@@ -34,7 +34,7 @@ pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
# Verify data after the test has been "shot"
<verify>
<errorcode>
-56
+8
</errorcode>
<protocol>
CAPA
diff --git a/tests/data/test868 b/tests/data/test868
index 9216608af..6807fa56f 100644
--- a/tests/data/test868
+++ b/tests/data/test868
@@ -6,6 +6,7 @@ SASL
SASL AUTH NTLM
RFC1734
RFC5034
+NTLM
</keywords>
</info>
@@ -16,7 +17,7 @@ RFC5034
AUTH NTLM
REPLY AUTH +
REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= +OK Login successful
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= +OK Login successful
</servercmd>
<data>
From: me@somewhere
@@ -39,23 +40,13 @@ pop3
NTLM
SSL
!SSPI
-debug
</features>
- <name>
+<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>
+</name>
+<command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u testuser:testpass
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
#
@@ -65,7 +56,7 @@ chkhostname curlhost
CAPA
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
RETR %TESTNUMBER
QUIT
</protocol>
diff --git a/tests/data/test873 b/tests/data/test873
index 67c810788..0f5f3be9b 100644
--- a/tests/data/test873
+++ b/tests/data/test873
@@ -7,6 +7,7 @@ SASL AUTH NTLM
SASL-IR
RFC1734
RFC5034
+NTLM
</keywords>
</info>
@@ -16,7 +17,7 @@ RFC5034
<servercmd>
AUTH NTLM
REPLY AUTH + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= +OK Login successful
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= +OK Login successful
</servercmd>
<data>
From: me@somewhere
@@ -39,23 +40,13 @@ pop3
NTLM
SSL
!SSPI
-debug
</features>
- <name>
+<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>
+</name>
+<command>
pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u testuser:testpass --sasl-ir
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
#
@@ -64,7 +55,7 @@ chkhostname curlhost
<protocol>
CAPA
AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
RETR %TESTNUMBER
QUIT
</protocol>
diff --git a/tests/data/test89 b/tests/data/test89
index 6781e0479..fb621ae2b 100644
--- a/tests/data/test89
+++ b/tests/data/test89
@@ -5,6 +5,7 @@ HTTP
HTTP GET
HTTP NTLM auth
followlocation
+NTLM
</keywords>
</info>
# Server-side
@@ -91,26 +92,16 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
</server>
- <name>
+<name>
HTTP with NTLM and follow-location
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -L
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -124,7 +115,7 @@ Accept: */*
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
@@ -136,7 +127,7 @@ Accept: */*
GET /you/%TESTNUMBER0010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test898 b/tests/data/test898
new file mode 100644
index 000000000..33bcb2912
--- /dev/null
+++ b/tests/data/test898
@@ -0,0 +1,94 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+--location
+Authorization
+Cookie
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+proxy
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP with custom auth and cookies redirected to HTTP on a diff port
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://firsthost.com -L -H "Authorization: Basic am9lOnNlY3JldA==" -H "Cookie: userpwd=am9lOnNlY3JldA=="
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET http://firsthost.com/ HTTP/1.1
+Host: firsthost.com
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Authorization: Basic am9lOnNlY3JldA==
+Cookie: userpwd=am9lOnNlY3JldA==
+
+GET http://firsthost.com:9999/a/path/%TESTNUMBER0002 HTTP/1.1
+Host: firsthost.com:9999
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test9 b/tests/data/test9
index e3aa2b6af..fc53b7043 100644
--- a/tests/data/test9
+++ b/tests/data/test9
@@ -20,6 +20,9 @@ blablabla
# Client-side
<client>
+<features>
+Mime
+</features>
<server>
http
</server>
diff --git a/tests/data/test90 b/tests/data/test90
index 9ca9972a4..b043ce043 100644
--- a/tests/data/test90
+++ b/tests/data/test90
@@ -6,6 +6,7 @@ HTTP GET
HTTP NTLM auth
--anyauth
followlocation
+NTLM
</keywords>
</info>
# Server-side
@@ -129,26 +130,16 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
</server>
- <name>
+<name>
HTTP with NTLM via --anyauth, and then follow-location with NTLM again
- </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>
+</name>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth -L
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -167,7 +158,7 @@ Accept: */*
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
@@ -184,7 +175,7 @@ Accept: */*
GET /you/%TESTNUMBER0010 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test906 b/tests/data/test906
index 9330d0aa3..863dce698 100644
--- a/tests/data/test906
+++ b/tests/data/test906
@@ -5,6 +5,7 @@ SMTP
SASL
SASL AUTH NTLM
RFC4954
+NTLM
</keywords>
</info>
@@ -15,7 +16,7 @@ RFC4954
AUTH NTLM
REPLY AUTH 334 NTLM supported
REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 334 TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= 235 Authenticated
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= 235 Authenticated
</servercmd>
</reply>
@@ -29,26 +30,16 @@ smtp
NTLM
SSL
!SSPI
-debug
</features>
- <name>
+<name>
SMTP 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>
+</name>
<stdin>
mail body
</stdin>
- <command>
+<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass -T -
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
#
@@ -58,7 +49,7 @@ chkhostname curlhost
EHLO %TESTNUMBER
AUTH NTLM
TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
diff --git a/tests/data/test91 b/tests/data/test91
index 5f8f585fc..2fc020128 100644
--- a/tests/data/test91
+++ b/tests/data/test91
@@ -4,6 +4,7 @@
HTTP
HTTP GET
HTTP NTLM auth
+NTLM
</keywords>
</info>
# Server-side
@@ -75,7 +76,6 @@ Finally, this is the real page!
NTLM
SSL
!SSPI
-debug
</features>
<server>
http
@@ -83,18 +83,9 @@ http
<name>
HTTP with NTLM/Negotiate/Basic, anyauth and user with domain, with size 0
</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>
+<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --anyauth -u mydomain\\myself:secret
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
# Verify data after the test has been "shot"
@@ -113,7 +104,7 @@ Accept: */*
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABwAAAABgAGAHgAAAAIAAgAfgAAAAAAAAAAAAAAhoIBAMIyJpR5mHpg2FZha5kRaFZ9436GAxPu0C5llxexSQ5QzVkiLSfkcpVyRgCXXqR+Am15ZG9tYWlubXlzZWxmY3VybGhvc3Q=
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABwAAAABgAGAHgAAAALAAsAfgAAAAAAAAAAAAAAhoIBAMIyJpR5mHpg2FZha5kRaFZ9436GAxPu0C5llxexSQ5QzVkiLSfkcpVyRgCXXqR+Am15ZG9tYWlubXlzZWxmV09SS1NUQVRJT04=
User-Agent: curl/%VERSION
Accept: */*
diff --git a/tests/data/test921 b/tests/data/test921
index 57c4a7893..36820ceb7 100644
--- a/tests/data/test921
+++ b/tests/data/test921
@@ -6,6 +6,7 @@ SASL
SASL AUTH NTLM
SASL-IR
RFC4954
+NTLM
</keywords>
</info>
@@ -15,7 +16,7 @@ RFC4954
<servercmd>
AUTH NTLM
REPLY AUTH 334 TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= 235 Authenticated
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= 235 Authenticated
</servercmd>
</reply>
@@ -29,26 +30,16 @@ smtp
NTLM
SSL
!SSPI
-debug
</features>
- <name>
+<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>
+</name>
<stdin>
mail body
</stdin>
- <command>
+<command>
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass --sasl-ir -T -
</command>
-<precheck>
-chkhostname curlhost
-</precheck>
</client>
#
@@ -57,7 +48,7 @@ chkhostname curlhost
<protocol>
EHLO %TESTNUMBER
AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
diff --git a/tests/data/test926 b/tests/data/test926
index aed6f4b8d..248cce9a7 100644
--- a/tests/data/test926
+++ b/tests/data/test926
@@ -31,9 +31,9 @@ smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient
#
# Verify data after the test has been "shot"
<verify>
-# 56 - CURLE_RECV_ERROR
+# 8 - CURLE_WEIRD_SERVER_REPLY
<errorcode>
-56
+8
</errorcode>
<protocol>
EHLO %TESTNUMBER
diff --git a/tests/data/test957 b/tests/data/test957
index 5859f92fc..097385fe2 100644
--- a/tests/data/test957
+++ b/tests/data/test957
@@ -38,9 +38,9 @@ smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Användaren
#
# Verify data after the test has been "shot"
<verify>
-# 56 - CURLE_RECV_ERROR
+# 8 - CURLE_WEIRD_SERVER_REPLY
<errorcode>
-56
+8
</errorcode>
<protocol>
EHLO %TESTNUMBER
diff --git a/tests/data/test958 b/tests/data/test958
index ce3de3342..1df158084 100644
--- a/tests/data/test958
+++ b/tests/data/test958
@@ -38,9 +38,9 @@ smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Användaren@example.com
#
# Verify data after the test has been "shot"
<verify>
-# 56 - CURLE_RECV_ERROR
+# 8 - CURLE_WEIRD_SERVER_REPLY
<errorcode>
-56
+8
</errorcode>
<protocol>
EHLO %TESTNUMBER
diff --git a/tests/data/test961 b/tests/data/test961
index 02e265353..9cd10f574 100644
--- a/tests/data/test961
+++ b/tests/data/test961
@@ -39,9 +39,9 @@ smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt user@åäö.se
#
# Verify data after the test has been "shot"
<verify>
-# 56 - CURLE_RECV_ERROR
+# 8 - CURLE_WEIRD_SERVER_REPLY
<errorcode>
-56
+8
</errorcode>
<protocol>
EHLO %TESTNUMBER
diff --git a/tests/data/test963 b/tests/data/test963
index 22b252a96..4ddc87162 100644
--- a/tests/data/test963
+++ b/tests/data/test963
@@ -29,7 +29,7 @@ LC_CTYPE=en_US.UTF-8
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
<name>
-SMTP without SMTPUTF8 support (IDN Enabked) - UTF-8 based recipient (host part only)
+SMTP without SMTPUTF8 support (IDN Enabled) - UTF-8 based recipient (host part only)
</name>
<stdin>
From: different
diff --git a/tests/data/test972 b/tests/data/test972
index 971f1faf6..0bcf04e39 100644
--- a/tests/data/test972
+++ b/tests/data/test972
@@ -28,9 +28,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor i
#
# Client-side
<client>
-<precheck>
-/usr/bin/which jsonlint-php >log/%TESTNUMBER-check
-</precheck>
+
<server>
http
</server>
@@ -47,7 +45,7 @@ CURL_VERSION=curl-unit-test-fake-version
Verify JSON output
</name>
<command option="no-include">
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER -s --write-out '%{json}' -o log/out972 | jsonlint-php -q
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -s --write-out '%{json}\n' -o log/out972
</command>
</client>
@@ -61,5 +59,8 @@ User-Agent: curl/%VERSION
Accept: */*
</protocol>
+<stdout mode="text">
+{"content_type":"text/html","errormsg":null,"exitcode":0,"filename_effective":"log/out972","ftp_entry_path":null,"http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"%HOSTIP","local_port":13,"method":"GET","num_connects":1,"num_headers":9,"num_redirects":0,"proxy_ssl_verify_result":0,"redirect_url":null,"referer":null,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"HTTP","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_pretransfer":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"url":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","url_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urlnum":0,"curl_version":"curl-unit-test-fake-version"}
+</stdout>
</verify>
</testcase>
diff --git a/tests/data/test973 b/tests/data/test973
new file mode 100644
index 000000000..6ced10789
--- /dev/null
+++ b/tests/data/test973
@@ -0,0 +1,88 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+FTP
+--location
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+data
+ to
+ see
+that FTP
+works
+ so does it?
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER0002
+
+data
+ to
+ see
+that FTP
+works
+ so does it?
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+ftp
+</server>
+ <name>
+HTTP with auth redirected to FTP w/o auth
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -L -u joe:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic am9lOnNlY3JldA==
+User-Agent: curl/%VERSION
+Accept: */*
+
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD a
+CWD path
+EPSV
+TYPE I
+SIZE %TESTNUMBER0002
+RETR %TESTNUMBER0002
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test974 b/tests/data/test974
new file mode 100644
index 000000000..5a834ac25
--- /dev/null
+++ b/tests/data/test974
@@ -0,0 +1,91 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+--location
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+proxy
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP with auth redirected to HTTP on a diff port w/o auth
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://firsthost.com -L -u joe:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET http://firsthost.com/ HTTP/1.1
+Host: firsthost.com
+Authorization: Basic am9lOnNlY3JldA==
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://firsthost.com:9999/a/path/%TESTNUMBER0002 HTTP/1.1
+Host: firsthost.com:9999
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test975 b/tests/data/test975
new file mode 100644
index 000000000..85e03e4f2
--- /dev/null
+++ b/tests/data/test975
@@ -0,0 +1,88 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+FTP
+--location-trusted
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+data
+ to
+ see
+that FTP
+works
+ so does it?
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER0002
+
+data
+ to
+ see
+that FTP
+works
+ so does it?
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+ftp
+</server>
+ <name>
+HTTP with auth redirected to FTP allowing auth to continue
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --location-trusted -u joe:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic am9lOnNlY3JldA==
+User-Agent: curl/%VERSION
+Accept: */*
+
+USER joe
+PASS secret
+PWD
+CWD a
+CWD path
+EPSV
+TYPE I
+SIZE %TESTNUMBER0002
+RETR %TESTNUMBER0002
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test976 b/tests/data/test976
new file mode 100644
index 000000000..b2d948830
--- /dev/null
+++ b/tests/data/test976
@@ -0,0 +1,92 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+--location-trusted
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+proxy
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP with auth redirected to HTTP on a diff port --location-trusted
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://firsthost.com --location-trusted -u joe:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET http://firsthost.com/ HTTP/1.1
+Host: firsthost.com
+Authorization: Basic am9lOnNlY3JldA==
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://firsthost.com:9999/a/path/%TESTNUMBER0002 HTTP/1.1
+Host: firsthost.com:9999
+Authorization: Basic am9lOnNlY3JldA==
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test977 b/tests/data/test977
new file mode 100644
index 000000000..cecfd13f0
--- /dev/null
+++ b/tests/data/test977
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+cookies
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Set-Cookie: a=b; Domain=.me.;
+
+</data>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+proxy
+</features>
+<server>
+http
+</server>
+ <name>
+URL with trailing dot and receiving a cookie for the TLD with dot
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://firsthost.me. -c log/cookies%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET http://firsthost.me./ HTTP/1.1
+Host: firsthost.me.
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+</protocol>
+<file name="log/cookies%TESTNUMBER" mode="text">
+# Netscape HTTP Cookie File
+# https://curl.se/docs/http-cookies.html
+# This file was generated by libcurl! Edit at your own risk.
+
+</file>
+</verify>
+</testcase>
diff --git a/tests/dictserver.py b/tests/dictserver.py
index 702d255c6..5e38ffa07 100755
--- a/tests/dictserver.py
+++ b/tests/dictserver.py
@@ -7,7 +7,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2008 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2008 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
""" DICT server """
diff --git a/tests/directories.pm b/tests/directories.pm
index a55d8180c..641c6af24 100644
--- a/tests/directories.pm
+++ b/tests/directories.pm
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
%file_chmod1 = (
'name' => 'chmod1',
diff --git a/tests/disable-scan.pl b/tests/disable-scan.pl
index 65f5b03cb..5d09bff27 100755
--- a/tests/disable-scan.pl
+++ b/tests/disable-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2010 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
@@ -63,7 +65,7 @@ sub scan_file {
my ($source)=@_;
open F, "<$source";
while(<F>) {
- if(/(CURL_DISABLE_[A-Z_]+)/g) {
+ while(s/(CURL_DISABLE_[A-Z_]+)//) {
my ($sym)=($1);
$file{$sym} = $source;
}
@@ -93,7 +95,7 @@ sub scan_docs {
my $line = 0;
while(<F>) {
$line++;
- if(/^## (CURL_DISABLE_[A-Z_]+)/g) {
+ if(/^## `(CURL_DISABLE_[A-Z_]+)/g) {
my ($sym)=($1);
$docs{$sym} = $line;
}
diff --git a/tests/error-codes.pl b/tests/error-codes.pl
index e626f7ccb..5d28886cf 100644
--- a/tests/error-codes.pl
+++ b/tests/error-codes.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
#
diff --git a/tests/extern-scan.pl b/tests/extern-scan.pl
index 4eaff3a98..ac089f75f 100755
--- a/tests/extern-scan.pl
+++ b/tests/extern-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
#
@@ -34,6 +36,9 @@ my @incs = (
"$root/include/curl/easy.h",
"$root/include/curl/mprintf.h",
"$root/include/curl/multi.h",
+ "$root/include/curl/urlapi.h",
+ "$root/include/curl/options.h",
+ "$root/include/curl/header.h",
);
my $verbose=0;
@@ -47,12 +52,28 @@ my %rem;
sub scanheader {
my ($f)=@_;
open H, "<$f" || die;
+ my $first = "";
while(<H>) {
- if (/^(CURL_EXTERN.*)/) {
+ if (/^(^CURL_EXTERN .*)\(/) {
my $decl = $1;
$decl =~ s/\r$//;
print "$decl\n";
}
+ elsif (/^(^CURL_EXTERN .*)/) {
+ # handle two-line declarations
+ my $decl = $1;
+ $decl =~ s/\r$//;
+ $first = $decl;
+ }
+ elsif($first) {
+ if (/^(.*)\(/) {
+ my $decl = $1;
+ $decl =~ s/\r$//;
+ $first .= $decl;
+ print "$first\n";
+ }
+ $first = "";
+ }
}
close H;
}
diff --git a/tests/ftp.pm b/tests/ftp.pm
index 50c82b837..428befddf 100644
--- a/tests/ftp.pm
+++ b/tests/ftp.pm
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
BEGIN {
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index b74ac5bb7..422fdc2cc 100755
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# This is a server designed for the curl test suite.
diff --git a/tests/getpart.pm b/tests/getpart.pm
index 348bdd44d..f8cb6effc 100644
--- a/tests/getpart.pm
+++ b/tests/getpart.pm
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#use strict;
@@ -55,7 +57,7 @@ sub getpartattr {
if(!$inside && ($_ =~ /^ *\<$section/)) {
$inside++;
}
- if((1 ==$inside) && ( ($_ =~ /^ *\<$part([^>]*)/) ||
+ if((1 ==$inside) && ( ($_ =~ /^ *\<$part ([^>]*)/) ||
!(defined($part)) )
) {
$inside++;
diff --git a/tests/http2-server.pl b/tests/http2-server.pl
index 9708c8939..09ada660b 100755
--- a/tests/http2-server.pl
+++ b/tests/http2-server.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2016 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2016 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
# This script invokes nghttpx properly to have it serve HTTP/2 for us.
diff --git a/tests/httpserver.pl b/tests/httpserver.pl
index 3b8622810..64573aa43 100755
--- a/tests/httpserver.pl
+++ b/tests/httpserver.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
BEGIN {
diff --git a/tests/libtest/CMakeLists.txt b/tests/libtest/CMakeLists.txt
index 6d5bd6a12..e547c6a64 100644
--- a/tests/libtest/CMakeLists.txt
+++ b/tests/libtest/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
set(TARGET_LABEL_PREFIX "Test ")
diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am
index 82c3adef5..4a22f5282 100644
--- a/tests/libtest/Makefile.am
+++ b/tests/libtest/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
@@ -29,20 +31,10 @@ AUTOMAKE_OPTIONS = foreign nostdinc
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" 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_srcdir)/include \
- -I$(top_builddir)/lib \
- -I$(top_srcdir)/lib \
- -I$(top_builddir)/ares \
- -I$(top_srcdir)/ares
-else
AM_CPPFLAGS = -I$(top_srcdir)/include \
-I$(top_builddir)/lib \
-I$(top_srcdir)/lib
-endif
EXTRA_DIST = test307.pl test610.pl test613.pl test1013.pl test1022.pl \
Makefile.inc notexists.pl CMakeLists.txt mk-lib1521.pl .checksrc
@@ -140,7 +132,7 @@ CS_1 =
CS_ = $(CS_0)
checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/*.[ch]
+ $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/*.[ch]
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/tests/libtest/Makefile.in b/tests/libtest/Makefile.in
index 05d144527..b7b036105 100644
--- a/tests/libtest/Makefile.in
+++ b/tests/libtest/Makefile.in
@@ -138,21 +138,25 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
lib1532$(EXEEXT) lib1533$(EXEEXT) lib1534$(EXEEXT) \
lib1535$(EXEEXT) lib1536$(EXEEXT) lib1537$(EXEEXT) \
lib1538$(EXEEXT) lib1539$(EXEEXT) lib1540$(EXEEXT) \
- lib1542$(EXEEXT) lib1550$(EXEEXT) lib1551$(EXEEXT) \
- lib1552$(EXEEXT) lib1553$(EXEEXT) lib1554$(EXEEXT) \
- lib1555$(EXEEXT) lib1556$(EXEEXT) lib1557$(EXEEXT) \
- lib1558$(EXEEXT) lib1559$(EXEEXT) lib1560$(EXEEXT) \
- lib1564$(EXEEXT) lib1565$(EXEEXT) lib1567$(EXEEXT) \
- lib1568$(EXEEXT) lib1569$(EXEEXT) lib1591$(EXEEXT) \
- lib1592$(EXEEXT) lib1593$(EXEEXT) lib1594$(EXEEXT) \
- lib1596$(EXEEXT) lib1905$(EXEEXT) lib1906$(EXEEXT) \
- lib1907$(EXEEXT) lib1908$(EXEEXT) lib1910$(EXEEXT) \
- lib1911$(EXEEXT) lib1912$(EXEEXT) lib1913$(EXEEXT) \
- lib1915$(EXEEXT) lib1916$(EXEEXT) lib1917$(EXEEXT) \
- lib1918$(EXEEXT) lib1933$(EXEEXT) lib1934$(EXEEXT) \
+ lib1542$(EXEEXT) lib1543$(EXEEXT) lib1550$(EXEEXT) \
+ lib1551$(EXEEXT) lib1552$(EXEEXT) lib1553$(EXEEXT) \
+ lib1554$(EXEEXT) lib1555$(EXEEXT) lib1556$(EXEEXT) \
+ lib1557$(EXEEXT) lib1558$(EXEEXT) lib1559$(EXEEXT) \
+ lib1560$(EXEEXT) lib1564$(EXEEXT) lib1565$(EXEEXT) \
+ lib1567$(EXEEXT) lib1568$(EXEEXT) lib1569$(EXEEXT) \
+ lib1591$(EXEEXT) lib1592$(EXEEXT) lib1593$(EXEEXT) \
+ lib1594$(EXEEXT) lib1596$(EXEEXT) lib1597$(EXEEXT) \
+ lib1905$(EXEEXT) lib1906$(EXEEXT) lib1907$(EXEEXT) \
+ lib1908$(EXEEXT) lib1910$(EXEEXT) lib1911$(EXEEXT) \
+ lib1912$(EXEEXT) lib1913$(EXEEXT) lib1915$(EXEEXT) \
+ lib1916$(EXEEXT) lib1917$(EXEEXT) lib1918$(EXEEXT) \
+ lib1919$(EXEEXT) lib1933$(EXEEXT) lib1934$(EXEEXT) \
lib1935$(EXEEXT) lib1936$(EXEEXT) lib1937$(EXEEXT) \
- lib1938$(EXEEXT) lib1939$(EXEEXT) lib3010$(EXEEXT) \
- lib3025$(EXEEXT)
+ lib1938$(EXEEXT) lib1939$(EXEEXT) lib1940$(EXEEXT) \
+ lib1945$(EXEEXT) lib1946$(EXEEXT) lib1947$(EXEEXT) \
+ lib1948$(EXEEXT) lib1955$(EXEEXT) lib2301$(EXEEXT) \
+ lib2302$(EXEEXT) lib3010$(EXEEXT) lib3025$(EXEEXT) \
+ lib3026$(EXEEXT) lib3027$(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_NO_UNDEFINED_TRUE@am__append_3 = -no-undefined
@@ -165,15 +169,13 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
@BUILD_STUB_GSS_FALSE@libstubgss_la_DEPENDENCIES =
subdir = tests/libtest
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -226,7 +228,6 @@ am__dirstamp = $(am__leading_dot)dirstamp
am_chkdecimalpoint_OBJECTS = \
chkdecimalpoint-chkdecimalpoint.$(OBJEXT) \
../../lib/chkdecimalpoint-mprintf.$(OBJEXT) \
- ../../lib/chkdecimalpoint-curl_ctype.$(OBJEXT) \
../../lib/chkdecimalpoint-dynbuf.$(OBJEXT) \
../../lib/chkdecimalpoint-strdup.$(OBJEXT)
chkdecimalpoint_OBJECTS = $(am_chkdecimalpoint_OBJECTS)
@@ -234,7 +235,8 @@ chkdecimalpoint_DEPENDENCIES =
am_chkhostname_OBJECTS = chkhostname-chkhostname.$(OBJEXT) \
../../lib/chkhostname-curl_gethostname.$(OBJEXT)
chkhostname_OBJECTS = $(am_chkhostname_OBJECTS)
-am__objects_1 = lib1156-first.$(OBJEXT)
+am__objects_1 = ../../lib/lib1156-timediff.$(OBJEXT) \
+ lib1156-first.$(OBJEXT)
am__objects_2 = lib1156-testutil.$(OBJEXT)
am__objects_3 = ../../lib/lib1156-warnless.$(OBJEXT)
am_lib1156_OBJECTS = lib1156-lib1156.$(OBJEXT) $(am__objects_1) \
@@ -245,262 +247,301 @@ lib1156_OBJECTS = $(am_lib1156_OBJECTS)
@USE_EXPLICIT_LIB_DEPS_TRUE@am__DEPENDENCIES_1 = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(top_builddir)/lib/libcurl.la
lib1156_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_4 = lib1500-first.$(OBJEXT)
+am__objects_4 = ../../lib/lib1500-timediff.$(OBJEXT) \
+ lib1500-first.$(OBJEXT)
am__objects_5 = lib1500-testutil.$(OBJEXT)
am_lib1500_OBJECTS = lib1500-lib1500.$(OBJEXT) $(am__objects_4) \
$(am__objects_5)
lib1500_OBJECTS = $(am_lib1500_OBJECTS)
lib1500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_6 = lib1501-first.$(OBJEXT)
+am__objects_6 = ../../lib/lib1501-timediff.$(OBJEXT) \
+ lib1501-first.$(OBJEXT)
am__objects_7 = lib1501-testutil.$(OBJEXT)
am__objects_8 = ../../lib/lib1501-warnless.$(OBJEXT)
am_lib1501_OBJECTS = lib1501-lib1501.$(OBJEXT) $(am__objects_6) \
$(am__objects_7) $(am__objects_8)
lib1501_OBJECTS = $(am_lib1501_OBJECTS)
lib1501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_9 = lib1502-first.$(OBJEXT)
+am__objects_9 = ../../lib/lib1502-timediff.$(OBJEXT) \
+ lib1502-first.$(OBJEXT)
am__objects_10 = lib1502-testutil.$(OBJEXT)
am__objects_11 = ../../lib/lib1502-warnless.$(OBJEXT)
am_lib1502_OBJECTS = lib1502-lib1502.$(OBJEXT) $(am__objects_9) \
$(am__objects_10) $(am__objects_11)
lib1502_OBJECTS = $(am_lib1502_OBJECTS)
lib1502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_12 = lib1503-first.$(OBJEXT)
+am__objects_12 = ../../lib/lib1503-timediff.$(OBJEXT) \
+ lib1503-first.$(OBJEXT)
am__objects_13 = lib1503-testutil.$(OBJEXT)
am__objects_14 = ../../lib/lib1503-warnless.$(OBJEXT)
am_lib1503_OBJECTS = lib1503-lib1502.$(OBJEXT) $(am__objects_12) \
$(am__objects_13) $(am__objects_14)
lib1503_OBJECTS = $(am_lib1503_OBJECTS)
lib1503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_15 = lib1504-first.$(OBJEXT)
+am__objects_15 = ../../lib/lib1504-timediff.$(OBJEXT) \
+ lib1504-first.$(OBJEXT)
am__objects_16 = lib1504-testutil.$(OBJEXT)
am__objects_17 = ../../lib/lib1504-warnless.$(OBJEXT)
am_lib1504_OBJECTS = lib1504-lib1502.$(OBJEXT) $(am__objects_15) \
$(am__objects_16) $(am__objects_17)
lib1504_OBJECTS = $(am_lib1504_OBJECTS)
lib1504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_18 = lib1505-first.$(OBJEXT)
+am__objects_18 = ../../lib/lib1505-timediff.$(OBJEXT) \
+ lib1505-first.$(OBJEXT)
am__objects_19 = lib1505-testutil.$(OBJEXT)
am__objects_20 = ../../lib/lib1505-warnless.$(OBJEXT)
am_lib1505_OBJECTS = lib1505-lib1502.$(OBJEXT) $(am__objects_18) \
$(am__objects_19) $(am__objects_20)
lib1505_OBJECTS = $(am_lib1505_OBJECTS)
lib1505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_21 = lib1506-first.$(OBJEXT)
+am__objects_21 = ../../lib/lib1506-timediff.$(OBJEXT) \
+ lib1506-first.$(OBJEXT)
am__objects_22 = lib1506-testutil.$(OBJEXT)
am__objects_23 = ../../lib/lib1506-warnless.$(OBJEXT)
am_lib1506_OBJECTS = lib1506-lib1506.$(OBJEXT) $(am__objects_21) \
$(am__objects_22) $(am__objects_23)
lib1506_OBJECTS = $(am_lib1506_OBJECTS)
lib1506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_24 = lib1507-first.$(OBJEXT)
+am__objects_24 = ../../lib/lib1507-timediff.$(OBJEXT) \
+ lib1507-first.$(OBJEXT)
am__objects_25 = lib1507-testutil.$(OBJEXT)
am__objects_26 = ../../lib/lib1507-warnless.$(OBJEXT)
am_lib1507_OBJECTS = lib1507-lib1507.$(OBJEXT) $(am__objects_24) \
$(am__objects_25) $(am__objects_26)
lib1507_OBJECTS = $(am_lib1507_OBJECTS)
lib1507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_27 = lib1508-first.$(OBJEXT)
+am__objects_27 = ../../lib/lib1508-timediff.$(OBJEXT) \
+ lib1508-first.$(OBJEXT)
am__objects_28 = lib1508-testutil.$(OBJEXT)
am__objects_29 = ../../lib/lib1508-warnless.$(OBJEXT)
am_lib1508_OBJECTS = lib1508-lib1508.$(OBJEXT) $(am__objects_27) \
$(am__objects_28) $(am__objects_29)
lib1508_OBJECTS = $(am_lib1508_OBJECTS)
lib1508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_30 = lib1509-first.$(OBJEXT)
+am__objects_30 = ../../lib/lib1509-timediff.$(OBJEXT) \
+ lib1509-first.$(OBJEXT)
am__objects_31 = lib1509-testutil.$(OBJEXT)
am__objects_32 = ../../lib/lib1509-warnless.$(OBJEXT)
am_lib1509_OBJECTS = lib1509-lib1509.$(OBJEXT) $(am__objects_30) \
$(am__objects_31) $(am__objects_32)
lib1509_OBJECTS = $(am_lib1509_OBJECTS)
lib1509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_33 = lib1510-first.$(OBJEXT)
+am__objects_33 = ../../lib/lib1510-timediff.$(OBJEXT) \
+ lib1510-first.$(OBJEXT)
am__objects_34 = lib1510-testutil.$(OBJEXT)
am__objects_35 = ../../lib/lib1510-warnless.$(OBJEXT)
am_lib1510_OBJECTS = lib1510-lib1510.$(OBJEXT) $(am__objects_33) \
$(am__objects_34) $(am__objects_35)
lib1510_OBJECTS = $(am_lib1510_OBJECTS)
lib1510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_36 = lib1511-first.$(OBJEXT)
+am__objects_36 = ../../lib/lib1511-timediff.$(OBJEXT) \
+ lib1511-first.$(OBJEXT)
am__objects_37 = lib1511-testutil.$(OBJEXT)
am__objects_38 = ../../lib/lib1511-warnless.$(OBJEXT)
am_lib1511_OBJECTS = lib1511-lib1511.$(OBJEXT) $(am__objects_36) \
$(am__objects_37) $(am__objects_38)
lib1511_OBJECTS = $(am_lib1511_OBJECTS)
lib1511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_39 = lib1512-first.$(OBJEXT)
+am__objects_39 = ../../lib/lib1512-timediff.$(OBJEXT) \
+ lib1512-first.$(OBJEXT)
am__objects_40 = lib1512-testutil.$(OBJEXT)
am__objects_41 = ../../lib/lib1512-warnless.$(OBJEXT)
am_lib1512_OBJECTS = lib1512-lib1512.$(OBJEXT) $(am__objects_39) \
$(am__objects_40) $(am__objects_41)
lib1512_OBJECTS = $(am_lib1512_OBJECTS)
lib1512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_42 = lib1513-first.$(OBJEXT)
+am__objects_42 = ../../lib/lib1513-timediff.$(OBJEXT) \
+ lib1513-first.$(OBJEXT)
am__objects_43 = lib1513-testutil.$(OBJEXT)
am__objects_44 = ../../lib/lib1513-warnless.$(OBJEXT)
am_lib1513_OBJECTS = lib1513-lib1513.$(OBJEXT) $(am__objects_42) \
$(am__objects_43) $(am__objects_44)
lib1513_OBJECTS = $(am_lib1513_OBJECTS)
lib1513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_45 = lib1514-first.$(OBJEXT)
+am__objects_45 = ../../lib/lib1514-timediff.$(OBJEXT) \
+ lib1514-first.$(OBJEXT)
am__objects_46 = lib1514-testutil.$(OBJEXT)
am__objects_47 = ../../lib/lib1514-warnless.$(OBJEXT)
am_lib1514_OBJECTS = lib1514-lib1514.$(OBJEXT) $(am__objects_45) \
$(am__objects_46) $(am__objects_47)
lib1514_OBJECTS = $(am_lib1514_OBJECTS)
lib1514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_48 = lib1515-first.$(OBJEXT)
+am__objects_48 = ../../lib/lib1515-timediff.$(OBJEXT) \
+ lib1515-first.$(OBJEXT)
am__objects_49 = lib1515-testutil.$(OBJEXT)
am__objects_50 = ../../lib/lib1515-warnless.$(OBJEXT)
am_lib1515_OBJECTS = lib1515-lib1515.$(OBJEXT) $(am__objects_48) \
$(am__objects_49) $(am__objects_50)
lib1515_OBJECTS = $(am_lib1515_OBJECTS)
lib1515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_51 = lib1517-first.$(OBJEXT)
+am__objects_51 = ../../lib/lib1517-timediff.$(OBJEXT) \
+ lib1517-first.$(OBJEXT)
am_lib1517_OBJECTS = lib1517-lib1517.$(OBJEXT) $(am__objects_51)
lib1517_OBJECTS = $(am_lib1517_OBJECTS)
lib1517_LDADD = $(LDADD)
lib1517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_52 = lib1518-first.$(OBJEXT)
+am__objects_52 = ../../lib/lib1518-timediff.$(OBJEXT) \
+ lib1518-first.$(OBJEXT)
am_lib1518_OBJECTS = lib1518-lib1518.$(OBJEXT) $(am__objects_52)
lib1518_OBJECTS = $(am_lib1518_OBJECTS)
lib1518_LDADD = $(LDADD)
lib1518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_53 = lib1520-first.$(OBJEXT)
+am__objects_53 = ../../lib/lib1520-timediff.$(OBJEXT) \
+ lib1520-first.$(OBJEXT)
am_lib1520_OBJECTS = lib1520-lib1520.$(OBJEXT) $(am__objects_53)
lib1520_OBJECTS = $(am_lib1520_OBJECTS)
lib1520_LDADD = $(LDADD)
lib1520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_54 = lib1521-first.$(OBJEXT)
+am__objects_54 = ../../lib/lib1521-timediff.$(OBJEXT) \
+ lib1521-first.$(OBJEXT)
nodist_lib1521_OBJECTS = lib1521-lib1521.$(OBJEXT) $(am__objects_54)
lib1521_OBJECTS = $(nodist_lib1521_OBJECTS)
lib1521_LDADD = $(LDADD)
lib1521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_55 = lib1522-first.$(OBJEXT)
+am__objects_55 = ../../lib/lib1522-timediff.$(OBJEXT) \
+ lib1522-first.$(OBJEXT)
am__objects_56 = lib1522-testutil.$(OBJEXT)
am__objects_57 = lib1522-testtrace.$(OBJEXT)
am_lib1522_OBJECTS = lib1522-lib1522.$(OBJEXT) $(am__objects_55) \
$(am__objects_56) $(am__objects_57)
lib1522_OBJECTS = $(am_lib1522_OBJECTS)
lib1522_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_58 = lib1523-first.$(OBJEXT)
+am__objects_58 = ../../lib/lib1523-timediff.$(OBJEXT) \
+ lib1523-first.$(OBJEXT)
am_lib1523_OBJECTS = lib1523-lib1523.$(OBJEXT) $(am__objects_58)
lib1523_OBJECTS = $(am_lib1523_OBJECTS)
lib1523_LDADD = $(LDADD)
lib1523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_59 = lib1525-first.$(OBJEXT)
+am__objects_59 = ../../lib/lib1525-timediff.$(OBJEXT) \
+ lib1525-first.$(OBJEXT)
am__objects_60 = lib1525-testutil.$(OBJEXT)
am__objects_61 = ../../lib/lib1525-warnless.$(OBJEXT)
am_lib1525_OBJECTS = lib1525-lib1525.$(OBJEXT) $(am__objects_59) \
$(am__objects_60) $(am__objects_61)
lib1525_OBJECTS = $(am_lib1525_OBJECTS)
lib1525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_62 = lib1526-first.$(OBJEXT)
+am__objects_62 = ../../lib/lib1526-timediff.$(OBJEXT) \
+ lib1526-first.$(OBJEXT)
am__objects_63 = lib1526-testutil.$(OBJEXT)
am__objects_64 = ../../lib/lib1526-warnless.$(OBJEXT)
am_lib1526_OBJECTS = lib1526-lib1526.$(OBJEXT) $(am__objects_62) \
$(am__objects_63) $(am__objects_64)
lib1526_OBJECTS = $(am_lib1526_OBJECTS)
lib1526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_65 = lib1527-first.$(OBJEXT)
+am__objects_65 = ../../lib/lib1527-timediff.$(OBJEXT) \
+ lib1527-first.$(OBJEXT)
am__objects_66 = lib1527-testutil.$(OBJEXT)
am__objects_67 = ../../lib/lib1527-warnless.$(OBJEXT)
am_lib1527_OBJECTS = lib1527-lib1527.$(OBJEXT) $(am__objects_65) \
$(am__objects_66) $(am__objects_67)
lib1527_OBJECTS = $(am_lib1527_OBJECTS)
lib1527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_68 = lib1528-first.$(OBJEXT)
+am__objects_68 = ../../lib/lib1528-timediff.$(OBJEXT) \
+ lib1528-first.$(OBJEXT)
am__objects_69 = lib1528-testutil.$(OBJEXT)
am__objects_70 = ../../lib/lib1528-warnless.$(OBJEXT)
am_lib1528_OBJECTS = lib1528-lib1528.$(OBJEXT) $(am__objects_68) \
$(am__objects_69) $(am__objects_70)
lib1528_OBJECTS = $(am_lib1528_OBJECTS)
lib1528_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_71 = lib1529-first.$(OBJEXT)
+am__objects_71 = ../../lib/lib1529-timediff.$(OBJEXT) \
+ lib1529-first.$(OBJEXT)
am__objects_72 = lib1529-testutil.$(OBJEXT)
am__objects_73 = ../../lib/lib1529-warnless.$(OBJEXT)
am_lib1529_OBJECTS = lib1529-lib1529.$(OBJEXT) $(am__objects_71) \
$(am__objects_72) $(am__objects_73)
lib1529_OBJECTS = $(am_lib1529_OBJECTS)
lib1529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_74 = lib1530-first.$(OBJEXT)
+am__objects_74 = ../../lib/lib1530-timediff.$(OBJEXT) \
+ lib1530-first.$(OBJEXT)
am__objects_75 = lib1530-testutil.$(OBJEXT)
am__objects_76 = ../../lib/lib1530-warnless.$(OBJEXT)
am_lib1530_OBJECTS = lib1530-lib1530.$(OBJEXT) $(am__objects_74) \
$(am__objects_75) $(am__objects_76)
lib1530_OBJECTS = $(am_lib1530_OBJECTS)
lib1530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_77 = lib1531-first.$(OBJEXT)
+am__objects_77 = ../../lib/lib1531-timediff.$(OBJEXT) \
+ lib1531-first.$(OBJEXT)
am__objects_78 = lib1531-testutil.$(OBJEXT)
am__objects_79 = ../../lib/lib1531-warnless.$(OBJEXT)
am_lib1531_OBJECTS = lib1531-lib1531.$(OBJEXT) $(am__objects_77) \
$(am__objects_78) $(am__objects_79)
lib1531_OBJECTS = $(am_lib1531_OBJECTS)
lib1531_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_80 = lib1532-first.$(OBJEXT)
+am__objects_80 = ../../lib/lib1532-timediff.$(OBJEXT) \
+ lib1532-first.$(OBJEXT)
am__objects_81 = lib1532-testutil.$(OBJEXT)
am__objects_82 = ../../lib/lib1532-warnless.$(OBJEXT)
am_lib1532_OBJECTS = lib1532-lib1532.$(OBJEXT) $(am__objects_80) \
$(am__objects_81) $(am__objects_82)
lib1532_OBJECTS = $(am_lib1532_OBJECTS)
lib1532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_83 = lib1533-first.$(OBJEXT)
+am__objects_83 = ../../lib/lib1533-timediff.$(OBJEXT) \
+ lib1533-first.$(OBJEXT)
am__objects_84 = lib1533-testutil.$(OBJEXT)
am__objects_85 = ../../lib/lib1533-warnless.$(OBJEXT)
am_lib1533_OBJECTS = lib1533-lib1533.$(OBJEXT) $(am__objects_83) \
$(am__objects_84) $(am__objects_85)
lib1533_OBJECTS = $(am_lib1533_OBJECTS)
lib1533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_86 = lib1534-first.$(OBJEXT)
+am__objects_86 = ../../lib/lib1534-timediff.$(OBJEXT) \
+ lib1534-first.$(OBJEXT)
am__objects_87 = lib1534-testutil.$(OBJEXT)
am__objects_88 = ../../lib/lib1534-warnless.$(OBJEXT)
am_lib1534_OBJECTS = lib1534-lib1534.$(OBJEXT) $(am__objects_86) \
$(am__objects_87) $(am__objects_88)
lib1534_OBJECTS = $(am_lib1534_OBJECTS)
lib1534_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_89 = lib1535-first.$(OBJEXT)
+am__objects_89 = ../../lib/lib1535-timediff.$(OBJEXT) \
+ lib1535-first.$(OBJEXT)
am__objects_90 = lib1535-testutil.$(OBJEXT)
am__objects_91 = ../../lib/lib1535-warnless.$(OBJEXT)
am_lib1535_OBJECTS = lib1535-lib1535.$(OBJEXT) $(am__objects_89) \
$(am__objects_90) $(am__objects_91)
lib1535_OBJECTS = $(am_lib1535_OBJECTS)
lib1535_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_92 = lib1536-first.$(OBJEXT)
+am__objects_92 = ../../lib/lib1536-timediff.$(OBJEXT) \
+ lib1536-first.$(OBJEXT)
am__objects_93 = lib1536-testutil.$(OBJEXT)
am__objects_94 = ../../lib/lib1536-warnless.$(OBJEXT)
am_lib1536_OBJECTS = lib1536-lib1536.$(OBJEXT) $(am__objects_92) \
$(am__objects_93) $(am__objects_94)
lib1536_OBJECTS = $(am_lib1536_OBJECTS)
lib1536_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_95 = lib1537-first.$(OBJEXT)
+am__objects_95 = ../../lib/lib1537-timediff.$(OBJEXT) \
+ lib1537-first.$(OBJEXT)
am__objects_96 = lib1537-testutil.$(OBJEXT)
am__objects_97 = ../../lib/lib1537-warnless.$(OBJEXT)
am_lib1537_OBJECTS = lib1537-lib1537.$(OBJEXT) $(am__objects_95) \
$(am__objects_96) $(am__objects_97)
lib1537_OBJECTS = $(am_lib1537_OBJECTS)
lib1537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_98 = lib1538-first.$(OBJEXT)
+am__objects_98 = ../../lib/lib1538-timediff.$(OBJEXT) \
+ lib1538-first.$(OBJEXT)
am__objects_99 = lib1538-testutil.$(OBJEXT)
am__objects_100 = ../../lib/lib1538-warnless.$(OBJEXT)
am_lib1538_OBJECTS = lib1538-lib1538.$(OBJEXT) $(am__objects_98) \
$(am__objects_99) $(am__objects_100)
lib1538_OBJECTS = $(am_lib1538_OBJECTS)
lib1538_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_101 = lib1539-first.$(OBJEXT)
+am__objects_101 = ../../lib/lib1539-timediff.$(OBJEXT) \
+ lib1539-first.$(OBJEXT)
am__objects_102 = lib1539-testutil.$(OBJEXT)
am__objects_103 = ../../lib/lib1539-warnless.$(OBJEXT)
am_lib1539_OBJECTS = lib1539-lib1514.$(OBJEXT) $(am__objects_101) \
$(am__objects_102) $(am__objects_103)
lib1539_OBJECTS = $(am_lib1539_OBJECTS)
lib1539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_104 = lib1540-first.$(OBJEXT)
+am__objects_104 = ../../lib/lib1540-timediff.$(OBJEXT) \
+ lib1540-first.$(OBJEXT)
am__objects_105 = lib1540-testutil.$(OBJEXT)
am__objects_106 = ../../lib/lib1540-warnless.$(OBJEXT)
am_lib1540_OBJECTS = lib1540-lib1540.$(OBJEXT) $(am__objects_104) \
$(am__objects_105) $(am__objects_106)
lib1540_OBJECTS = $(am_lib1540_OBJECTS)
lib1540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_107 = lib1542-first.$(OBJEXT)
+am__objects_107 = ../../lib/lib1542-timediff.$(OBJEXT) \
+ lib1542-first.$(OBJEXT)
am__objects_108 = lib1542-testutil.$(OBJEXT)
am__objects_109 = lib1542-testtrace.$(OBJEXT)
am__objects_110 = ../../lib/lib1542-warnless.$(OBJEXT)
@@ -508,896 +549,1110 @@ am_lib1542_OBJECTS = lib1542-lib1542.$(OBJEXT) $(am__objects_107) \
$(am__objects_108) $(am__objects_109) $(am__objects_110)
lib1542_OBJECTS = $(am_lib1542_OBJECTS)
lib1542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_111 = lib1550-first.$(OBJEXT)
-am_lib1550_OBJECTS = lib1550-lib1550.$(OBJEXT) $(am__objects_111)
+am__objects_111 = ../../lib/lib1543-timediff.$(OBJEXT) \
+ lib1543-first.$(OBJEXT)
+am_lib1543_OBJECTS = lib1543-lib1518.$(OBJEXT) $(am__objects_111)
+lib1543_OBJECTS = $(am_lib1543_OBJECTS)
+lib1543_LDADD = $(LDADD)
+lib1543_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_112 = ../../lib/lib1550-timediff.$(OBJEXT) \
+ lib1550-first.$(OBJEXT)
+am_lib1550_OBJECTS = lib1550-lib1550.$(OBJEXT) $(am__objects_112)
lib1550_OBJECTS = $(am_lib1550_OBJECTS)
lib1550_LDADD = $(LDADD)
lib1550_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_112 = lib1551-first.$(OBJEXT)
-am_lib1551_OBJECTS = lib1551-lib1551.$(OBJEXT) $(am__objects_112)
+am__objects_113 = ../../lib/lib1551-timediff.$(OBJEXT) \
+ lib1551-first.$(OBJEXT)
+am_lib1551_OBJECTS = lib1551-lib1551.$(OBJEXT) $(am__objects_113)
lib1551_OBJECTS = $(am_lib1551_OBJECTS)
lib1551_LDADD = $(LDADD)
lib1551_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_113 = lib1552-first.$(OBJEXT)
-am__objects_114 = lib1552-testutil.$(OBJEXT)
-am_lib1552_OBJECTS = lib1552-lib1552.$(OBJEXT) $(am__objects_113) \
- $(am__objects_114)
+am__objects_114 = ../../lib/lib1552-timediff.$(OBJEXT) \
+ lib1552-first.$(OBJEXT)
+am__objects_115 = lib1552-testutil.$(OBJEXT)
+am_lib1552_OBJECTS = lib1552-lib1552.$(OBJEXT) $(am__objects_114) \
+ $(am__objects_115)
lib1552_OBJECTS = $(am_lib1552_OBJECTS)
lib1552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_115 = lib1553-first.$(OBJEXT)
-am__objects_116 = lib1553-testutil.$(OBJEXT)
-am_lib1553_OBJECTS = lib1553-lib1553.$(OBJEXT) $(am__objects_115) \
- $(am__objects_116)
+am__objects_116 = ../../lib/lib1553-timediff.$(OBJEXT) \
+ lib1553-first.$(OBJEXT)
+am__objects_117 = lib1553-testutil.$(OBJEXT)
+am_lib1553_OBJECTS = lib1553-lib1553.$(OBJEXT) $(am__objects_116) \
+ $(am__objects_117)
lib1553_OBJECTS = $(am_lib1553_OBJECTS)
lib1553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_117 = lib1554-first.$(OBJEXT)
-am_lib1554_OBJECTS = lib1554-lib1554.$(OBJEXT) $(am__objects_117)
+am__objects_118 = ../../lib/lib1554-timediff.$(OBJEXT) \
+ lib1554-first.$(OBJEXT)
+am_lib1554_OBJECTS = lib1554-lib1554.$(OBJEXT) $(am__objects_118)
lib1554_OBJECTS = $(am_lib1554_OBJECTS)
lib1554_LDADD = $(LDADD)
lib1554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_118 = lib1555-first.$(OBJEXT)
-am__objects_119 = lib1555-testutil.$(OBJEXT)
-am__objects_120 = ../../lib/lib1555-warnless.$(OBJEXT)
-am_lib1555_OBJECTS = lib1555-lib1555.$(OBJEXT) $(am__objects_118) \
- $(am__objects_119) $(am__objects_120)
+am__objects_119 = ../../lib/lib1555-timediff.$(OBJEXT) \
+ lib1555-first.$(OBJEXT)
+am__objects_120 = lib1555-testutil.$(OBJEXT)
+am__objects_121 = ../../lib/lib1555-warnless.$(OBJEXT)
+am_lib1555_OBJECTS = lib1555-lib1555.$(OBJEXT) $(am__objects_119) \
+ $(am__objects_120) $(am__objects_121)
lib1555_OBJECTS = $(am_lib1555_OBJECTS)
lib1555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_121 = lib1556-first.$(OBJEXT)
-am__objects_122 = lib1556-testutil.$(OBJEXT)
-am__objects_123 = ../../lib/lib1556-warnless.$(OBJEXT)
-am_lib1556_OBJECTS = lib1556-lib1556.$(OBJEXT) $(am__objects_121) \
- $(am__objects_122) $(am__objects_123)
+am__objects_122 = ../../lib/lib1556-timediff.$(OBJEXT) \
+ lib1556-first.$(OBJEXT)
+am__objects_123 = lib1556-testutil.$(OBJEXT)
+am__objects_124 = ../../lib/lib1556-warnless.$(OBJEXT)
+am_lib1556_OBJECTS = lib1556-lib1556.$(OBJEXT) $(am__objects_122) \
+ $(am__objects_123) $(am__objects_124)
lib1556_OBJECTS = $(am_lib1556_OBJECTS)
lib1556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_124 = lib1557-first.$(OBJEXT)
-am__objects_125 = lib1557-testutil.$(OBJEXT)
-am__objects_126 = ../../lib/lib1557-warnless.$(OBJEXT)
-am_lib1557_OBJECTS = lib1557-lib1557.$(OBJEXT) $(am__objects_124) \
- $(am__objects_125) $(am__objects_126)
+am__objects_125 = ../../lib/lib1557-timediff.$(OBJEXT) \
+ lib1557-first.$(OBJEXT)
+am__objects_126 = lib1557-testutil.$(OBJEXT)
+am__objects_127 = ../../lib/lib1557-warnless.$(OBJEXT)
+am_lib1557_OBJECTS = lib1557-lib1557.$(OBJEXT) $(am__objects_125) \
+ $(am__objects_126) $(am__objects_127)
lib1557_OBJECTS = $(am_lib1557_OBJECTS)
lib1557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_127 = first.$(OBJEXT)
-am__objects_128 = testutil.$(OBJEXT)
-am__objects_129 = ../../lib/warnless.$(OBJEXT)
-am_lib1558_OBJECTS = lib1558.$(OBJEXT) $(am__objects_127) \
- $(am__objects_128) $(am__objects_129)
+am__objects_128 = ../../lib/timediff.$(OBJEXT) first.$(OBJEXT)
+am__objects_129 = testutil.$(OBJEXT)
+am__objects_130 = ../../lib/warnless.$(OBJEXT)
+am_lib1558_OBJECTS = lib1558.$(OBJEXT) $(am__objects_128) \
+ $(am__objects_129) $(am__objects_130)
lib1558_OBJECTS = $(am_lib1558_OBJECTS)
lib1558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_lib1559_OBJECTS = lib1559.$(OBJEXT) $(am__objects_127) \
- $(am__objects_128) $(am__objects_129)
+am_lib1559_OBJECTS = lib1559.$(OBJEXT) $(am__objects_128) \
+ $(am__objects_129) $(am__objects_130)
lib1559_OBJECTS = $(am_lib1559_OBJECTS)
lib1559_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_127) \
- $(am__objects_128) $(am__objects_129)
+am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_128) \
+ $(am__objects_129) $(am__objects_130)
lib1560_OBJECTS = $(am_lib1560_OBJECTS)
lib1560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_130 = lib1564-first.$(OBJEXT)
-am__objects_131 = lib1564-testutil.$(OBJEXT)
-am__objects_132 = ../../lib/lib1564-warnless.$(OBJEXT)
-am_lib1564_OBJECTS = lib1564-lib1564.$(OBJEXT) $(am__objects_130) \
- $(am__objects_131) $(am__objects_132)
+am__objects_131 = ../../lib/lib1564-timediff.$(OBJEXT) \
+ lib1564-first.$(OBJEXT)
+am__objects_132 = lib1564-testutil.$(OBJEXT)
+am__objects_133 = ../../lib/lib1564-warnless.$(OBJEXT)
+am_lib1564_OBJECTS = lib1564-lib1564.$(OBJEXT) $(am__objects_131) \
+ $(am__objects_132) $(am__objects_133)
lib1564_OBJECTS = $(am_lib1564_OBJECTS)
lib1564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_133 = lib1565-first.$(OBJEXT)
-am__objects_134 = lib1565-testutil.$(OBJEXT)
-am__objects_135 = ../../lib/lib1565-warnless.$(OBJEXT)
-am_lib1565_OBJECTS = lib1565-lib1565.$(OBJEXT) $(am__objects_133) \
- $(am__objects_134) $(am__objects_135)
+am__objects_134 = ../../lib/lib1565-timediff.$(OBJEXT) \
+ lib1565-first.$(OBJEXT)
+am__objects_135 = lib1565-testutil.$(OBJEXT)
+am__objects_136 = ../../lib/lib1565-warnless.$(OBJEXT)
+am_lib1565_OBJECTS = lib1565-lib1565.$(OBJEXT) $(am__objects_134) \
+ $(am__objects_135) $(am__objects_136)
lib1565_OBJECTS = $(am_lib1565_OBJECTS)
lib1565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_136 = lib1567-first.$(OBJEXT)
-am_lib1567_OBJECTS = lib1567-lib1567.$(OBJEXT) $(am__objects_136)
+am__objects_137 = ../../lib/lib1567-timediff.$(OBJEXT) \
+ lib1567-first.$(OBJEXT)
+am_lib1567_OBJECTS = lib1567-lib1567.$(OBJEXT) $(am__objects_137)
lib1567_OBJECTS = $(am_lib1567_OBJECTS)
lib1567_LDADD = $(LDADD)
lib1567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_137 = lib1568-first.$(OBJEXT)
-am_lib1568_OBJECTS = lib1568-lib1568.$(OBJEXT) $(am__objects_137)
+am__objects_138 = ../../lib/lib1568-timediff.$(OBJEXT) \
+ lib1568-first.$(OBJEXT)
+am_lib1568_OBJECTS = lib1568-lib1568.$(OBJEXT) $(am__objects_138)
lib1568_OBJECTS = $(am_lib1568_OBJECTS)
lib1568_LDADD = $(LDADD)
lib1568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_138 = lib1569-first.$(OBJEXT)
-am_lib1569_OBJECTS = lib1569-lib1569.$(OBJEXT) $(am__objects_138)
+am__objects_139 = ../../lib/lib1569-timediff.$(OBJEXT) \
+ lib1569-first.$(OBJEXT)
+am_lib1569_OBJECTS = lib1569-lib1569.$(OBJEXT) $(am__objects_139)
lib1569_OBJECTS = $(am_lib1569_OBJECTS)
lib1569_LDADD = $(LDADD)
lib1569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_139 = lib1591-first.$(OBJEXT)
-am__objects_140 = lib1591-testutil.$(OBJEXT)
-am__objects_141 = ../../lib/lib1591-warnless.$(OBJEXT)
-am_lib1591_OBJECTS = lib1591-lib1591.$(OBJEXT) $(am__objects_139) \
- $(am__objects_140) $(am__objects_141)
+am__objects_140 = ../../lib/lib1591-timediff.$(OBJEXT) \
+ lib1591-first.$(OBJEXT)
+am__objects_141 = lib1591-testutil.$(OBJEXT)
+am__objects_142 = ../../lib/lib1591-warnless.$(OBJEXT)
+am_lib1591_OBJECTS = lib1591-lib1591.$(OBJEXT) $(am__objects_140) \
+ $(am__objects_141) $(am__objects_142)
lib1591_OBJECTS = $(am_lib1591_OBJECTS)
lib1591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_142 = lib1592-first.$(OBJEXT)
-am__objects_143 = lib1592-testutil.$(OBJEXT)
-am__objects_144 = ../../lib/lib1592-warnless.$(OBJEXT)
-am_lib1592_OBJECTS = lib1592-lib1592.$(OBJEXT) $(am__objects_142) \
- $(am__objects_143) $(am__objects_144)
+am__objects_143 = ../../lib/lib1592-timediff.$(OBJEXT) \
+ lib1592-first.$(OBJEXT)
+am__objects_144 = lib1592-testutil.$(OBJEXT)
+am__objects_145 = ../../lib/lib1592-warnless.$(OBJEXT)
+am_lib1592_OBJECTS = lib1592-lib1592.$(OBJEXT) $(am__objects_143) \
+ $(am__objects_144) $(am__objects_145)
lib1592_OBJECTS = $(am_lib1592_OBJECTS)
lib1592_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_127) \
- $(am__objects_128) $(am__objects_129)
+am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_128) \
+ $(am__objects_129) $(am__objects_130)
lib1593_OBJECTS = $(am_lib1593_OBJECTS)
lib1593_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_127) \
- $(am__objects_128) $(am__objects_129)
+am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_128) \
+ $(am__objects_129) $(am__objects_130)
lib1594_OBJECTS = $(am_lib1594_OBJECTS)
lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_145 = lib1596-first.$(OBJEXT)
-am__objects_146 = lib1596-testutil.$(OBJEXT)
-am__objects_147 = ../../lib/lib1596-warnless.$(OBJEXT)
-am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_145) \
- $(am__objects_146) $(am__objects_147)
+am__objects_146 = ../../lib/lib1596-timediff.$(OBJEXT) \
+ lib1596-first.$(OBJEXT)
+am__objects_147 = lib1596-testutil.$(OBJEXT)
+am__objects_148 = ../../lib/lib1596-warnless.$(OBJEXT)
+am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_146) \
+ $(am__objects_147) $(am__objects_148)
lib1596_OBJECTS = $(am_lib1596_OBJECTS)
lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_148 = lib1905-first.$(OBJEXT)
-am__objects_149 = lib1905-testutil.$(OBJEXT)
-am__objects_150 = ../../lib/lib1905-warnless.$(OBJEXT)
-am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_148) \
- $(am__objects_149) $(am__objects_150)
+am_lib1597_OBJECTS = lib1597.$(OBJEXT) $(am__objects_128) \
+ $(am__objects_129) $(am__objects_130)
+lib1597_OBJECTS = $(am_lib1597_OBJECTS)
+lib1597_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_149 = ../../lib/lib1905-timediff.$(OBJEXT) \
+ lib1905-first.$(OBJEXT)
+am__objects_150 = lib1905-testutil.$(OBJEXT)
+am__objects_151 = ../../lib/lib1905-warnless.$(OBJEXT)
+am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_149) \
+ $(am__objects_150) $(am__objects_151)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)
lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_151 = lib1906-first.$(OBJEXT)
-am__objects_152 = lib1906-testutil.$(OBJEXT)
-am__objects_153 = ../../lib/lib1906-warnless.$(OBJEXT)
-am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_151) \
- $(am__objects_152) $(am__objects_153)
+am__objects_152 = ../../lib/lib1906-timediff.$(OBJEXT) \
+ lib1906-first.$(OBJEXT)
+am__objects_153 = lib1906-testutil.$(OBJEXT)
+am__objects_154 = ../../lib/lib1906-warnless.$(OBJEXT)
+am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_152) \
+ $(am__objects_153) $(am__objects_154)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_154 = lib1907-first.$(OBJEXT)
-am__objects_155 = lib1907-testutil.$(OBJEXT)
-am__objects_156 = ../../lib/lib1907-warnless.$(OBJEXT)
-am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_154) \
- $(am__objects_155) $(am__objects_156)
+am__objects_155 = ../../lib/lib1907-timediff.$(OBJEXT) \
+ lib1907-first.$(OBJEXT)
+am__objects_156 = lib1907-testutil.$(OBJEXT)
+am__objects_157 = ../../lib/lib1907-warnless.$(OBJEXT)
+am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_155) \
+ $(am__objects_156) $(am__objects_157)
lib1907_OBJECTS = $(am_lib1907_OBJECTS)
lib1907_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_157 = lib1908-first.$(OBJEXT)
-am__objects_158 = lib1908-testutil.$(OBJEXT)
-am__objects_159 = ../../lib/lib1908-warnless.$(OBJEXT)
-am_lib1908_OBJECTS = lib1908-lib1908.$(OBJEXT) $(am__objects_157) \
- $(am__objects_158) $(am__objects_159)
+am__objects_158 = ../../lib/lib1908-timediff.$(OBJEXT) \
+ lib1908-first.$(OBJEXT)
+am__objects_159 = lib1908-testutil.$(OBJEXT)
+am__objects_160 = ../../lib/lib1908-warnless.$(OBJEXT)
+am_lib1908_OBJECTS = lib1908-lib1908.$(OBJEXT) $(am__objects_158) \
+ $(am__objects_159) $(am__objects_160)
lib1908_OBJECTS = $(am_lib1908_OBJECTS)
lib1908_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_160 = lib1910-first.$(OBJEXT)
-am__objects_161 = lib1910-testutil.$(OBJEXT)
-am__objects_162 = ../../lib/lib1910-warnless.$(OBJEXT)
-am_lib1910_OBJECTS = lib1910-lib1910.$(OBJEXT) $(am__objects_160) \
- $(am__objects_161) $(am__objects_162)
+am__objects_161 = ../../lib/lib1910-timediff.$(OBJEXT) \
+ lib1910-first.$(OBJEXT)
+am__objects_162 = lib1910-testutil.$(OBJEXT)
+am__objects_163 = ../../lib/lib1910-warnless.$(OBJEXT)
+am_lib1910_OBJECTS = lib1910-lib1910.$(OBJEXT) $(am__objects_161) \
+ $(am__objects_162) $(am__objects_163)
lib1910_OBJECTS = $(am_lib1910_OBJECTS)
lib1910_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_163 = lib1911-first.$(OBJEXT)
-am__objects_164 = lib1911-testutil.$(OBJEXT)
-am__objects_165 = ../../lib/lib1911-warnless.$(OBJEXT)
-am_lib1911_OBJECTS = lib1911-lib1911.$(OBJEXT) $(am__objects_163) \
- $(am__objects_164) $(am__objects_165)
+am__objects_164 = ../../lib/lib1911-timediff.$(OBJEXT) \
+ lib1911-first.$(OBJEXT)
+am__objects_165 = lib1911-testutil.$(OBJEXT)
+am__objects_166 = ../../lib/lib1911-warnless.$(OBJEXT)
+am_lib1911_OBJECTS = lib1911-lib1911.$(OBJEXT) $(am__objects_164) \
+ $(am__objects_165) $(am__objects_166)
lib1911_OBJECTS = $(am_lib1911_OBJECTS)
lib1911_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_166 = lib1912-first.$(OBJEXT)
-am__objects_167 = lib1912-testutil.$(OBJEXT)
-am__objects_168 = ../../lib/lib1912-warnless.$(OBJEXT)
-am_lib1912_OBJECTS = lib1912-lib1912.$(OBJEXT) $(am__objects_166) \
- $(am__objects_167) $(am__objects_168)
+am__objects_167 = ../../lib/lib1912-timediff.$(OBJEXT) \
+ lib1912-first.$(OBJEXT)
+am__objects_168 = lib1912-testutil.$(OBJEXT)
+am__objects_169 = ../../lib/lib1912-warnless.$(OBJEXT)
+am_lib1912_OBJECTS = lib1912-lib1912.$(OBJEXT) $(am__objects_167) \
+ $(am__objects_168) $(am__objects_169)
lib1912_OBJECTS = $(am_lib1912_OBJECTS)
lib1912_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_169 = lib1913-first.$(OBJEXT)
-am__objects_170 = lib1913-testutil.$(OBJEXT)
-am__objects_171 = ../../lib/lib1913-warnless.$(OBJEXT)
-am_lib1913_OBJECTS = lib1913-lib1913.$(OBJEXT) $(am__objects_169) \
- $(am__objects_170) $(am__objects_171)
+am__objects_170 = ../../lib/lib1913-timediff.$(OBJEXT) \
+ lib1913-first.$(OBJEXT)
+am__objects_171 = lib1913-testutil.$(OBJEXT)
+am__objects_172 = ../../lib/lib1913-warnless.$(OBJEXT)
+am_lib1913_OBJECTS = lib1913-lib1913.$(OBJEXT) $(am__objects_170) \
+ $(am__objects_171) $(am__objects_172)
lib1913_OBJECTS = $(am_lib1913_OBJECTS)
lib1913_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_172 = lib1915-first.$(OBJEXT)
-am__objects_173 = lib1915-testutil.$(OBJEXT)
-am__objects_174 = ../../lib/lib1915-warnless.$(OBJEXT)
-am_lib1915_OBJECTS = lib1915-lib1915.$(OBJEXT) $(am__objects_172) \
- $(am__objects_173) $(am__objects_174)
+am__objects_173 = ../../lib/lib1915-timediff.$(OBJEXT) \
+ lib1915-first.$(OBJEXT)
+am__objects_174 = lib1915-testutil.$(OBJEXT)
+am__objects_175 = ../../lib/lib1915-warnless.$(OBJEXT)
+am_lib1915_OBJECTS = lib1915-lib1915.$(OBJEXT) $(am__objects_173) \
+ $(am__objects_174) $(am__objects_175)
lib1915_OBJECTS = $(am_lib1915_OBJECTS)
lib1915_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_175 = lib1916-first.$(OBJEXT)
-am__objects_176 = ../../lib/lib1916-warnless.$(OBJEXT)
-am_lib1916_OBJECTS = lib1916-lib1916.$(OBJEXT) $(am__objects_175) \
- $(am__objects_176)
+am__objects_176 = ../../lib/lib1916-timediff.$(OBJEXT) \
+ lib1916-first.$(OBJEXT)
+am__objects_177 = ../../lib/lib1916-warnless.$(OBJEXT)
+am_lib1916_OBJECTS = lib1916-lib1916.$(OBJEXT) $(am__objects_176) \
+ $(am__objects_177)
lib1916_OBJECTS = $(am_lib1916_OBJECTS)
lib1916_LDADD = $(LDADD)
lib1916_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_177 = lib1917-first.$(OBJEXT)
-am__objects_178 = ../../lib/lib1917-warnless.$(OBJEXT)
-am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_177) \
- $(am__objects_178)
+am__objects_178 = ../../lib/lib1917-timediff.$(OBJEXT) \
+ lib1917-first.$(OBJEXT)
+am__objects_179 = ../../lib/lib1917-warnless.$(OBJEXT)
+am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_178) \
+ $(am__objects_179)
lib1917_OBJECTS = $(am_lib1917_OBJECTS)
lib1917_LDADD = $(LDADD)
lib1917_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_179 = lib1918-first.$(OBJEXT)
-am__objects_180 = ../../lib/lib1918-warnless.$(OBJEXT)
-am_lib1918_OBJECTS = lib1918-lib1918.$(OBJEXT) $(am__objects_179) \
- $(am__objects_180)
+am__objects_180 = ../../lib/lib1918-timediff.$(OBJEXT) \
+ lib1918-first.$(OBJEXT)
+am__objects_181 = ../../lib/lib1918-warnless.$(OBJEXT)
+am_lib1918_OBJECTS = lib1918-lib1918.$(OBJEXT) $(am__objects_180) \
+ $(am__objects_181)
lib1918_OBJECTS = $(am_lib1918_OBJECTS)
lib1918_LDADD = $(LDADD)
lib1918_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_181 = lib1933-first.$(OBJEXT)
-am__objects_182 = lib1933-testutil.$(OBJEXT)
-am__objects_183 = ../../lib/lib1933-warnless.$(OBJEXT)
-am_lib1933_OBJECTS = lib1933-lib1933.$(OBJEXT) $(am__objects_181) \
- $(am__objects_182) $(am__objects_183)
+am__objects_182 = ../../lib/lib1919-timediff.$(OBJEXT) \
+ lib1919-first.$(OBJEXT)
+am__objects_183 = ../../lib/lib1919-warnless.$(OBJEXT)
+am_lib1919_OBJECTS = lib1919-lib1919.$(OBJEXT) $(am__objects_182) \
+ $(am__objects_183)
+lib1919_OBJECTS = $(am_lib1919_OBJECTS)
+lib1919_LDADD = $(LDADD)
+lib1919_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_184 = ../../lib/lib1933-timediff.$(OBJEXT) \
+ lib1933-first.$(OBJEXT)
+am__objects_185 = lib1933-testutil.$(OBJEXT)
+am__objects_186 = ../../lib/lib1933-warnless.$(OBJEXT)
+am_lib1933_OBJECTS = lib1933-lib1933.$(OBJEXT) $(am__objects_184) \
+ $(am__objects_185) $(am__objects_186)
lib1933_OBJECTS = $(am_lib1933_OBJECTS)
lib1933_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_184 = lib1934-first.$(OBJEXT)
-am__objects_185 = lib1934-testutil.$(OBJEXT)
-am__objects_186 = ../../lib/lib1934-warnless.$(OBJEXT)
-am_lib1934_OBJECTS = lib1934-lib1934.$(OBJEXT) $(am__objects_184) \
- $(am__objects_185) $(am__objects_186)
+am__objects_187 = ../../lib/lib1934-timediff.$(OBJEXT) \
+ lib1934-first.$(OBJEXT)
+am__objects_188 = lib1934-testutil.$(OBJEXT)
+am__objects_189 = ../../lib/lib1934-warnless.$(OBJEXT)
+am_lib1934_OBJECTS = lib1934-lib1934.$(OBJEXT) $(am__objects_187) \
+ $(am__objects_188) $(am__objects_189)
lib1934_OBJECTS = $(am_lib1934_OBJECTS)
lib1934_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_187 = lib1935-first.$(OBJEXT)
-am__objects_188 = lib1935-testutil.$(OBJEXT)
-am__objects_189 = ../../lib/lib1935-warnless.$(OBJEXT)
-am_lib1935_OBJECTS = lib1935-lib1935.$(OBJEXT) $(am__objects_187) \
- $(am__objects_188) $(am__objects_189)
+am__objects_190 = ../../lib/lib1935-timediff.$(OBJEXT) \
+ lib1935-first.$(OBJEXT)
+am__objects_191 = lib1935-testutil.$(OBJEXT)
+am__objects_192 = ../../lib/lib1935-warnless.$(OBJEXT)
+am_lib1935_OBJECTS = lib1935-lib1935.$(OBJEXT) $(am__objects_190) \
+ $(am__objects_191) $(am__objects_192)
lib1935_OBJECTS = $(am_lib1935_OBJECTS)
lib1935_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_190 = lib1936-first.$(OBJEXT)
-am__objects_191 = lib1936-testutil.$(OBJEXT)
-am__objects_192 = ../../lib/lib1936-warnless.$(OBJEXT)
-am_lib1936_OBJECTS = lib1936-lib1936.$(OBJEXT) $(am__objects_190) \
- $(am__objects_191) $(am__objects_192)
+am__objects_193 = ../../lib/lib1936-timediff.$(OBJEXT) \
+ lib1936-first.$(OBJEXT)
+am__objects_194 = lib1936-testutil.$(OBJEXT)
+am__objects_195 = ../../lib/lib1936-warnless.$(OBJEXT)
+am_lib1936_OBJECTS = lib1936-lib1936.$(OBJEXT) $(am__objects_193) \
+ $(am__objects_194) $(am__objects_195)
lib1936_OBJECTS = $(am_lib1936_OBJECTS)
lib1936_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_193 = lib1937-first.$(OBJEXT)
-am_lib1937_OBJECTS = lib1937-lib1937.$(OBJEXT) $(am__objects_193)
+am__objects_196 = ../../lib/lib1937-timediff.$(OBJEXT) \
+ lib1937-first.$(OBJEXT)
+am_lib1937_OBJECTS = lib1937-lib1937.$(OBJEXT) $(am__objects_196)
lib1937_OBJECTS = $(am_lib1937_OBJECTS)
lib1937_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_194 = lib1938-first.$(OBJEXT)
-am_lib1938_OBJECTS = lib1938-lib1938.$(OBJEXT) $(am__objects_194)
+am__objects_197 = ../../lib/lib1938-timediff.$(OBJEXT) \
+ lib1938-first.$(OBJEXT)
+am_lib1938_OBJECTS = lib1938-lib1938.$(OBJEXT) $(am__objects_197)
lib1938_OBJECTS = $(am_lib1938_OBJECTS)
lib1938_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_195 = lib1939-first.$(OBJEXT)
-am_lib1939_OBJECTS = lib1939-lib1939.$(OBJEXT) $(am__objects_195)
+am__objects_198 = ../../lib/lib1939-timediff.$(OBJEXT) \
+ lib1939-first.$(OBJEXT)
+am_lib1939_OBJECTS = lib1939-lib1939.$(OBJEXT) $(am__objects_198)
lib1939_OBJECTS = $(am_lib1939_OBJECTS)
lib1939_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_196 = lib3010-first.$(OBJEXT)
-am__objects_197 = lib3010-testutil.$(OBJEXT)
-am__objects_198 = ../../lib/lib3010-warnless.$(OBJEXT)
-am_lib3010_OBJECTS = lib3010-lib3010.$(OBJEXT) $(am__objects_196) \
- $(am__objects_197) $(am__objects_198)
+am__objects_199 = ../../lib/lib1940-timediff.$(OBJEXT) \
+ lib1940-first.$(OBJEXT)
+am_lib1940_OBJECTS = lib1940-lib1940.$(OBJEXT) $(am__objects_199)
+lib1940_OBJECTS = $(am_lib1940_OBJECTS)
+lib1940_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_200 = ../../lib/lib1945-timediff.$(OBJEXT) \
+ lib1945-first.$(OBJEXT)
+am_lib1945_OBJECTS = lib1945-lib1945.$(OBJEXT) $(am__objects_200)
+lib1945_OBJECTS = $(am_lib1945_OBJECTS)
+lib1945_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_201 = ../../lib/lib1946-timediff.$(OBJEXT) \
+ lib1946-first.$(OBJEXT)
+am_lib1946_OBJECTS = lib1946-lib1940.$(OBJEXT) $(am__objects_201)
+lib1946_OBJECTS = $(am_lib1946_OBJECTS)
+lib1946_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_202 = ../../lib/lib1947-timediff.$(OBJEXT) \
+ lib1947-first.$(OBJEXT)
+am_lib1947_OBJECTS = lib1947-lib1947.$(OBJEXT) $(am__objects_202)
+lib1947_OBJECTS = $(am_lib1947_OBJECTS)
+lib1947_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_203 = ../../lib/lib1948-timediff.$(OBJEXT) \
+ lib1948-first.$(OBJEXT)
+am_lib1948_OBJECTS = lib1948-lib1948.$(OBJEXT) $(am__objects_203)
+lib1948_OBJECTS = $(am_lib1948_OBJECTS)
+lib1948_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_204 = ../../lib/lib1955-timediff.$(OBJEXT) \
+ lib1955-first.$(OBJEXT)
+am__objects_205 = lib1955-testutil.$(OBJEXT)
+am__objects_206 = ../../lib/lib1955-warnless.$(OBJEXT)
+am_lib1955_OBJECTS = lib1955-lib1955.$(OBJEXT) $(am__objects_204) \
+ $(am__objects_205) $(am__objects_206)
+lib1955_OBJECTS = $(am_lib1955_OBJECTS)
+lib1955_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_lib2301_OBJECTS = lib2301.$(OBJEXT) $(am__objects_128)
+lib2301_OBJECTS = $(am_lib2301_OBJECTS)
+lib2301_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_lib2302_OBJECTS = lib2302.$(OBJEXT) $(am__objects_128)
+lib2302_OBJECTS = $(am_lib2302_OBJECTS)
+lib2302_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_207 = ../../lib/lib3010-timediff.$(OBJEXT) \
+ lib3010-first.$(OBJEXT)
+am__objects_208 = lib3010-testutil.$(OBJEXT)
+am__objects_209 = ../../lib/lib3010-warnless.$(OBJEXT)
+am_lib3010_OBJECTS = lib3010-lib3010.$(OBJEXT) $(am__objects_207) \
+ $(am__objects_208) $(am__objects_209)
lib3010_OBJECTS = $(am_lib3010_OBJECTS)
lib3010_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_199 = lib3025-first.$(OBJEXT)
-am__objects_200 = lib3025-testutil.$(OBJEXT)
-am__objects_201 = ../../lib/lib3025-warnless.$(OBJEXT)
-am_lib3025_OBJECTS = lib3025-lib3025.$(OBJEXT) $(am__objects_199) \
- $(am__objects_200) $(am__objects_201)
+am__objects_210 = ../../lib/lib3025-timediff.$(OBJEXT) \
+ lib3025-first.$(OBJEXT)
+am__objects_211 = lib3025-testutil.$(OBJEXT)
+am__objects_212 = ../../lib/lib3025-warnless.$(OBJEXT)
+am_lib3025_OBJECTS = lib3025-lib3025.$(OBJEXT) $(am__objects_210) \
+ $(am__objects_211) $(am__objects_212)
lib3025_OBJECTS = $(am_lib3025_OBJECTS)
lib3025_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_202 = lib500-first.$(OBJEXT)
-am__objects_203 = lib500-testutil.$(OBJEXT)
-am__objects_204 = lib500-testtrace.$(OBJEXT)
-am__objects_205 = ../../lib/lib500-curl_multibyte.$(OBJEXT)
-am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_202) \
- $(am__objects_203) $(am__objects_204) $(am__objects_205)
+am__objects_213 = ../../lib/lib3026-timediff.$(OBJEXT) \
+ lib3026-first.$(OBJEXT)
+am__objects_214 = lib3026-testutil.$(OBJEXT)
+am__objects_215 = ../../lib/lib3026-warnless.$(OBJEXT)
+am_lib3026_OBJECTS = lib3026-lib3026.$(OBJEXT) $(am__objects_213) \
+ $(am__objects_214) $(am__objects_215)
+lib3026_OBJECTS = $(am_lib3026_OBJECTS)
+lib3026_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_216 = ../../lib/lib3027-timediff.$(OBJEXT) \
+ lib3027-first.$(OBJEXT)
+am__objects_217 = lib3027-testutil.$(OBJEXT)
+am__objects_218 = ../../lib/lib3027-warnless.$(OBJEXT)
+am_lib3027_OBJECTS = lib3027-lib3027.$(OBJEXT) $(am__objects_216) \
+ $(am__objects_217) $(am__objects_218)
+lib3027_OBJECTS = $(am_lib3027_OBJECTS)
+lib3027_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_219 = ../../lib/lib500-timediff.$(OBJEXT) \
+ lib500-first.$(OBJEXT)
+am__objects_220 = lib500-testutil.$(OBJEXT)
+am__objects_221 = lib500-testtrace.$(OBJEXT)
+am__objects_222 = ../../lib/lib500-curl_multibyte.$(OBJEXT)
+am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_219) \
+ $(am__objects_220) $(am__objects_221) $(am__objects_222)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_206 = lib501-first.$(OBJEXT)
-am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_206)
+am__objects_223 = ../../lib/lib501-timediff.$(OBJEXT) \
+ lib501-first.$(OBJEXT)
+am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_223)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_207 = lib502-first.$(OBJEXT)
-am__objects_208 = lib502-testutil.$(OBJEXT)
-am__objects_209 = ../../lib/lib502-warnless.$(OBJEXT)
-am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_207) \
- $(am__objects_208) $(am__objects_209)
+am__objects_224 = ../../lib/lib502-timediff.$(OBJEXT) \
+ lib502-first.$(OBJEXT)
+am__objects_225 = lib502-testutil.$(OBJEXT)
+am__objects_226 = ../../lib/lib502-warnless.$(OBJEXT)
+am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_224) \
+ $(am__objects_225) $(am__objects_226)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_210 = lib503-first.$(OBJEXT)
-am__objects_211 = lib503-testutil.$(OBJEXT)
-am__objects_212 = ../../lib/lib503-warnless.$(OBJEXT)
-am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_210) \
- $(am__objects_211) $(am__objects_212)
+am__objects_227 = ../../lib/lib503-timediff.$(OBJEXT) \
+ lib503-first.$(OBJEXT)
+am__objects_228 = lib503-testutil.$(OBJEXT)
+am__objects_229 = ../../lib/lib503-warnless.$(OBJEXT)
+am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_227) \
+ $(am__objects_228) $(am__objects_229)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_213 = lib504-first.$(OBJEXT)
-am__objects_214 = lib504-testutil.$(OBJEXT)
-am__objects_215 = ../../lib/lib504-warnless.$(OBJEXT)
-am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_213) \
- $(am__objects_214) $(am__objects_215)
+am__objects_230 = ../../lib/lib504-timediff.$(OBJEXT) \
+ lib504-first.$(OBJEXT)
+am__objects_231 = lib504-testutil.$(OBJEXT)
+am__objects_232 = ../../lib/lib504-warnless.$(OBJEXT)
+am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_230) \
+ $(am__objects_231) $(am__objects_232)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_216 = lib505-first.$(OBJEXT)
-am__objects_217 = ../../lib/lib505-curl_multibyte.$(OBJEXT)
-am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_216) \
- $(am__objects_217)
+am__objects_233 = ../../lib/lib505-timediff.$(OBJEXT) \
+ lib505-first.$(OBJEXT)
+am__objects_234 = ../../lib/lib505-curl_multibyte.$(OBJEXT)
+am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_233) \
+ $(am__objects_234)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_218 = lib506-first.$(OBJEXT)
-am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_218)
+am__objects_235 = ../../lib/lib506-timediff.$(OBJEXT) \
+ lib506-first.$(OBJEXT)
+am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_235)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_219 = lib507-first.$(OBJEXT)
-am__objects_220 = lib507-testutil.$(OBJEXT)
-am__objects_221 = ../../lib/lib507-warnless.$(OBJEXT)
-am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_219) \
- $(am__objects_220) $(am__objects_221)
+am__objects_236 = ../../lib/lib507-timediff.$(OBJEXT) \
+ lib507-first.$(OBJEXT)
+am__objects_237 = lib507-testutil.$(OBJEXT)
+am__objects_238 = ../../lib/lib507-warnless.$(OBJEXT)
+am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_236) \
+ $(am__objects_237) $(am__objects_238)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_222 = lib508-first.$(OBJEXT)
-am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_222)
+am__objects_239 = ../../lib/lib508-timediff.$(OBJEXT) \
+ lib508-first.$(OBJEXT)
+am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_239)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_223 = lib509-first.$(OBJEXT)
-am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_223)
+am__objects_240 = ../../lib/lib509-timediff.$(OBJEXT) \
+ lib509-first.$(OBJEXT)
+am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_240)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_224 = lib510-first.$(OBJEXT)
-am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_224)
+am__objects_241 = ../../lib/lib510-timediff.$(OBJEXT) \
+ lib510-first.$(OBJEXT)
+am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_241)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_225 = lib511-first.$(OBJEXT)
-am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_225)
+am__objects_242 = ../../lib/lib511-timediff.$(OBJEXT) \
+ lib511-first.$(OBJEXT)
+am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_242)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_226 = lib512-first.$(OBJEXT)
-am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_226)
+am__objects_243 = ../../lib/lib512-timediff.$(OBJEXT) \
+ lib512-first.$(OBJEXT)
+am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_243)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_227 = lib513-first.$(OBJEXT)
-am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_227)
+am__objects_244 = ../../lib/lib513-timediff.$(OBJEXT) \
+ lib513-first.$(OBJEXT)
+am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_244)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_228 = lib514-first.$(OBJEXT)
-am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_228)
+am__objects_245 = ../../lib/lib514-timediff.$(OBJEXT) \
+ lib514-first.$(OBJEXT)
+am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_245)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_229 = lib515-first.$(OBJEXT)
-am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_229)
+am__objects_246 = ../../lib/lib515-timediff.$(OBJEXT) \
+ lib515-first.$(OBJEXT)
+am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_246)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_230 = lib516-first.$(OBJEXT)
-am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_230)
+am__objects_247 = ../../lib/lib516-timediff.$(OBJEXT) \
+ lib516-first.$(OBJEXT)
+am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_247)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_231 = lib517-first.$(OBJEXT)
-am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_231)
+am__objects_248 = ../../lib/lib517-timediff.$(OBJEXT) \
+ lib517-first.$(OBJEXT)
+am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_248)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_232 = lib518-first.$(OBJEXT)
-am__objects_233 = ../../lib/lib518-warnless.$(OBJEXT)
-am__objects_234 = ../../lib/lib518-curl_multibyte.$(OBJEXT)
-am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_232) \
- $(am__objects_233) $(am__objects_234)
+am__objects_249 = ../../lib/lib518-timediff.$(OBJEXT) \
+ lib518-first.$(OBJEXT)
+am__objects_250 = ../../lib/lib518-warnless.$(OBJEXT)
+am__objects_251 = ../../lib/lib518-curl_multibyte.$(OBJEXT)
+am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_249) \
+ $(am__objects_250) $(am__objects_251)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_235 = lib519-first.$(OBJEXT)
-am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_235)
+am__objects_252 = ../../lib/lib519-timediff.$(OBJEXT) \
+ lib519-first.$(OBJEXT)
+am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_252)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_236 = lib520-first.$(OBJEXT)
-am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_236)
+am__objects_253 = ../../lib/lib520-timediff.$(OBJEXT) \
+ lib520-first.$(OBJEXT)
+am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_253)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_237 = lib521-first.$(OBJEXT)
-am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_237)
+am__objects_254 = ../../lib/lib521-timediff.$(OBJEXT) \
+ lib521-first.$(OBJEXT)
+am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_254)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_238 = lib523-first.$(OBJEXT)
-am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_238)
+am__objects_255 = ../../lib/lib523-timediff.$(OBJEXT) \
+ lib523-first.$(OBJEXT)
+am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_255)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_239 = lib524-first.$(OBJEXT)
-am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_239)
+am__objects_256 = ../../lib/lib524-timediff.$(OBJEXT) \
+ lib524-first.$(OBJEXT)
+am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_256)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_240 = lib525-first.$(OBJEXT)
-am__objects_241 = lib525-testutil.$(OBJEXT)
-am__objects_242 = ../../lib/lib525-warnless.$(OBJEXT)
-am__objects_243 = ../../lib/lib525-curl_multibyte.$(OBJEXT)
-am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_240) \
- $(am__objects_241) $(am__objects_242) $(am__objects_243)
+am__objects_257 = ../../lib/lib525-timediff.$(OBJEXT) \
+ lib525-first.$(OBJEXT)
+am__objects_258 = lib525-testutil.$(OBJEXT)
+am__objects_259 = ../../lib/lib525-warnless.$(OBJEXT)
+am__objects_260 = ../../lib/lib525-curl_multibyte.$(OBJEXT)
+am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_257) \
+ $(am__objects_258) $(am__objects_259) $(am__objects_260)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_244 = lib526-first.$(OBJEXT)
-am__objects_245 = lib526-testutil.$(OBJEXT)
-am__objects_246 = ../../lib/lib526-warnless.$(OBJEXT)
-am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_244) \
- $(am__objects_245) $(am__objects_246)
+am__objects_261 = ../../lib/lib526-timediff.$(OBJEXT) \
+ lib526-first.$(OBJEXT)
+am__objects_262 = lib526-testutil.$(OBJEXT)
+am__objects_263 = ../../lib/lib526-warnless.$(OBJEXT)
+am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_261) \
+ $(am__objects_262) $(am__objects_263)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_247 = lib527-first.$(OBJEXT)
-am__objects_248 = lib527-testutil.$(OBJEXT)
-am__objects_249 = ../../lib/lib527-warnless.$(OBJEXT)
-am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_247) \
- $(am__objects_248) $(am__objects_249)
+am__objects_264 = ../../lib/lib527-timediff.$(OBJEXT) \
+ lib527-first.$(OBJEXT)
+am__objects_265 = lib527-testutil.$(OBJEXT)
+am__objects_266 = ../../lib/lib527-warnless.$(OBJEXT)
+am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_264) \
+ $(am__objects_265) $(am__objects_266)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_250 = lib529-first.$(OBJEXT)
-am__objects_251 = lib529-testutil.$(OBJEXT)
-am__objects_252 = ../../lib/lib529-warnless.$(OBJEXT)
-am__objects_253 = ../../lib/lib529-curl_multibyte.$(OBJEXT)
-am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_250) \
- $(am__objects_251) $(am__objects_252) $(am__objects_253)
+am__objects_267 = ../../lib/lib529-timediff.$(OBJEXT) \
+ lib529-first.$(OBJEXT)
+am__objects_268 = lib529-testutil.$(OBJEXT)
+am__objects_269 = ../../lib/lib529-warnless.$(OBJEXT)
+am__objects_270 = ../../lib/lib529-curl_multibyte.$(OBJEXT)
+am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_267) \
+ $(am__objects_268) $(am__objects_269) $(am__objects_270)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_254 = lib530-first.$(OBJEXT)
-am__objects_255 = lib530-testutil.$(OBJEXT)
-am__objects_256 = ../../lib/lib530-warnless.$(OBJEXT)
-am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_254) \
- $(am__objects_255) $(am__objects_256)
+am__objects_271 = ../../lib/lib530-timediff.$(OBJEXT) \
+ lib530-first.$(OBJEXT)
+am__objects_272 = lib530-testutil.$(OBJEXT)
+am__objects_273 = ../../lib/lib530-warnless.$(OBJEXT)
+am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_271) \
+ $(am__objects_272) $(am__objects_273)
lib530_OBJECTS = $(am_lib530_OBJECTS)
lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_257 = lib532-first.$(OBJEXT)
-am__objects_258 = lib532-testutil.$(OBJEXT)
-am__objects_259 = ../../lib/lib532-warnless.$(OBJEXT)
-am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_257) \
- $(am__objects_258) $(am__objects_259)
+am__objects_274 = ../../lib/lib532-timediff.$(OBJEXT) \
+ lib532-first.$(OBJEXT)
+am__objects_275 = lib532-testutil.$(OBJEXT)
+am__objects_276 = ../../lib/lib532-warnless.$(OBJEXT)
+am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_274) \
+ $(am__objects_275) $(am__objects_276)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_260 = lib533-first.$(OBJEXT)
-am__objects_261 = lib533-testutil.$(OBJEXT)
-am__objects_262 = ../../lib/lib533-warnless.$(OBJEXT)
-am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_260) \
- $(am__objects_261) $(am__objects_262)
+am__objects_277 = ../../lib/lib533-timediff.$(OBJEXT) \
+ lib533-first.$(OBJEXT)
+am__objects_278 = lib533-testutil.$(OBJEXT)
+am__objects_279 = ../../lib/lib533-warnless.$(OBJEXT)
+am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_277) \
+ $(am__objects_278) $(am__objects_279)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_263 = lib537-first.$(OBJEXT)
-am__objects_264 = ../../lib/lib537-warnless.$(OBJEXT)
-am__objects_265 = ../../lib/lib537-curl_multibyte.$(OBJEXT)
-am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_263) \
- $(am__objects_264) $(am__objects_265)
+am__objects_280 = ../../lib/lib537-timediff.$(OBJEXT) \
+ lib537-first.$(OBJEXT)
+am__objects_281 = ../../lib/lib537-warnless.$(OBJEXT)
+am__objects_282 = ../../lib/lib537-curl_multibyte.$(OBJEXT)
+am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_280) \
+ $(am__objects_281) $(am__objects_282)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_266 = lib539-first.$(OBJEXT)
-am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_266)
+am__objects_283 = ../../lib/lib539-timediff.$(OBJEXT) \
+ lib539-first.$(OBJEXT)
+am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_283)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_267 = lib540-first.$(OBJEXT)
-am__objects_268 = lib540-testutil.$(OBJEXT)
-am__objects_269 = ../../lib/lib540-warnless.$(OBJEXT)
-am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_267) \
- $(am__objects_268) $(am__objects_269)
+am__objects_284 = ../../lib/lib540-timediff.$(OBJEXT) \
+ lib540-first.$(OBJEXT)
+am__objects_285 = lib540-testutil.$(OBJEXT)
+am__objects_286 = ../../lib/lib540-warnless.$(OBJEXT)
+am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_284) \
+ $(am__objects_285) $(am__objects_286)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_270 = lib541-first.$(OBJEXT)
-am__objects_271 = ../../lib/lib541-curl_multibyte.$(OBJEXT)
-am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_270) \
- $(am__objects_271)
+am__objects_287 = ../../lib/lib541-timediff.$(OBJEXT) \
+ lib541-first.$(OBJEXT)
+am__objects_288 = ../../lib/lib541-curl_multibyte.$(OBJEXT)
+am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_287) \
+ $(am__objects_288)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_272 = lib542-first.$(OBJEXT)
-am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_272)
+am__objects_289 = ../../lib/lib542-timediff.$(OBJEXT) \
+ lib542-first.$(OBJEXT)
+am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_289)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_273 = lib543-first.$(OBJEXT)
-am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_273)
+am__objects_290 = ../../lib/lib543-timediff.$(OBJEXT) \
+ lib543-first.$(OBJEXT)
+am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_290)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_274 = lib544-first.$(OBJEXT)
-am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_274)
+am__objects_291 = ../../lib/lib544-timediff.$(OBJEXT) \
+ lib544-first.$(OBJEXT)
+am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_291)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_275 = lib545-first.$(OBJEXT)
-am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_275)
+am__objects_292 = ../../lib/lib545-timediff.$(OBJEXT) \
+ lib545-first.$(OBJEXT)
+am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_292)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_276 = lib547-first.$(OBJEXT)
-am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_276)
+am__objects_293 = ../../lib/lib547-timediff.$(OBJEXT) \
+ lib547-first.$(OBJEXT)
+am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_293)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_277 = lib548-first.$(OBJEXT)
-am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_277)
+am__objects_294 = ../../lib/lib548-timediff.$(OBJEXT) \
+ lib548-first.$(OBJEXT)
+am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_294)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_278 = lib549-first.$(OBJEXT)
-am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_278)
+am__objects_295 = ../../lib/lib549-timediff.$(OBJEXT) \
+ lib549-first.$(OBJEXT)
+am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_295)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_279 = lib552-first.$(OBJEXT)
-am__objects_280 = ../../lib/lib552-warnless.$(OBJEXT)
-am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_279) \
- $(am__objects_280)
+am__objects_296 = ../../lib/lib552-timediff.$(OBJEXT) \
+ lib552-first.$(OBJEXT)
+am__objects_297 = ../../lib/lib552-warnless.$(OBJEXT)
+am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_296) \
+ $(am__objects_297)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_281 = lib553-first.$(OBJEXT)
-am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_281)
+am__objects_298 = ../../lib/lib553-timediff.$(OBJEXT) \
+ lib553-first.$(OBJEXT)
+am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_298)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_282 = lib554-first.$(OBJEXT)
-am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_282)
+am__objects_299 = ../../lib/lib554-timediff.$(OBJEXT) \
+ lib554-first.$(OBJEXT)
+am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_299)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_283 = lib555-first.$(OBJEXT)
-am__objects_284 = lib555-testutil.$(OBJEXT)
-am__objects_285 = ../../lib/lib555-warnless.$(OBJEXT)
-am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_283) \
- $(am__objects_284) $(am__objects_285)
+am__objects_300 = ../../lib/lib555-timediff.$(OBJEXT) \
+ lib555-first.$(OBJEXT)
+am__objects_301 = lib555-testutil.$(OBJEXT)
+am__objects_302 = ../../lib/lib555-warnless.$(OBJEXT)
+am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_300) \
+ $(am__objects_301) $(am__objects_302)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_286 = lib556-first.$(OBJEXT)
-am__objects_287 = ../../lib/lib556-warnless.$(OBJEXT)
-am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_286) \
- $(am__objects_287)
+am__objects_303 = ../../lib/lib556-timediff.$(OBJEXT) \
+ lib556-first.$(OBJEXT)
+am__objects_304 = ../../lib/lib556-warnless.$(OBJEXT)
+am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_303) \
+ $(am__objects_304)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_288 = lib557-first.$(OBJEXT)
-am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_288)
+am__objects_305 = ../../lib/lib557-timediff.$(OBJEXT) \
+ lib557-first.$(OBJEXT)
+am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_305)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_289 = lib558-first.$(OBJEXT)
-am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_289)
+am__objects_306 = ../../lib/lib558-timediff.$(OBJEXT) \
+ lib558-first.$(OBJEXT)
+am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_306)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_290 = lib559-first.$(OBJEXT)
-am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_290)
+am__objects_307 = ../../lib/lib559-timediff.$(OBJEXT) \
+ lib559-first.$(OBJEXT)
+am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_307)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_291 = lib560-first.$(OBJEXT)
-am__objects_292 = lib560-testutil.$(OBJEXT)
-am__objects_293 = ../../lib/lib560-warnless.$(OBJEXT)
-am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_291) \
- $(am__objects_292) $(am__objects_293)
+am__objects_308 = ../../lib/lib560-timediff.$(OBJEXT) \
+ lib560-first.$(OBJEXT)
+am__objects_309 = lib560-testutil.$(OBJEXT)
+am__objects_310 = ../../lib/lib560-warnless.$(OBJEXT)
+am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_308) \
+ $(am__objects_309) $(am__objects_310)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_294 = lib562-first.$(OBJEXT)
-am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_294)
+am__objects_311 = ../../lib/lib562-timediff.$(OBJEXT) \
+ lib562-first.$(OBJEXT)
+am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_311)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_295 = lib564-first.$(OBJEXT)
-am__objects_296 = lib564-testutil.$(OBJEXT)
-am__objects_297 = ../../lib/lib564-warnless.$(OBJEXT)
-am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_295) \
- $(am__objects_296) $(am__objects_297)
+am__objects_312 = ../../lib/lib564-timediff.$(OBJEXT) \
+ lib564-first.$(OBJEXT)
+am__objects_313 = lib564-testutil.$(OBJEXT)
+am__objects_314 = ../../lib/lib564-warnless.$(OBJEXT)
+am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_312) \
+ $(am__objects_313) $(am__objects_314)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_298 = lib565-first.$(OBJEXT)
-am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_298)
+am__objects_315 = ../../lib/lib565-timediff.$(OBJEXT) \
+ lib565-first.$(OBJEXT)
+am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_315)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_299 = lib566-first.$(OBJEXT)
-am__objects_300 = ../../lib/lib566-curl_multibyte.$(OBJEXT)
-am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_299) \
- $(am__objects_300)
+am__objects_316 = ../../lib/lib566-timediff.$(OBJEXT) \
+ lib566-first.$(OBJEXT)
+am__objects_317 = ../../lib/lib566-curl_multibyte.$(OBJEXT)
+am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_316) \
+ $(am__objects_317)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_301 = lib567-first.$(OBJEXT)
-am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_301)
+am__objects_318 = ../../lib/lib567-timediff.$(OBJEXT) \
+ lib567-first.$(OBJEXT)
+am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_318)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_302 = lib568-first.$(OBJEXT)
-am__objects_303 = ../../lib/lib568-curl_multibyte.$(OBJEXT)
-am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_302) \
- $(am__objects_303)
+am__objects_319 = ../../lib/lib568-timediff.$(OBJEXT) \
+ lib568-first.$(OBJEXT)
+am__objects_320 = ../../lib/lib568-curl_multibyte.$(OBJEXT)
+am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_319) \
+ $(am__objects_320)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_304 = lib569-first.$(OBJEXT)
-am__objects_305 = ../../lib/lib569-curl_multibyte.$(OBJEXT)
-am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_304) \
- $(am__objects_305)
+am__objects_321 = ../../lib/lib569-timediff.$(OBJEXT) \
+ lib569-first.$(OBJEXT)
+am__objects_322 = ../../lib/lib569-curl_multibyte.$(OBJEXT)
+am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_321) \
+ $(am__objects_322)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_306 = lib570-first.$(OBJEXT)
-am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_306)
+am__objects_323 = ../../lib/lib570-timediff.$(OBJEXT) \
+ lib570-first.$(OBJEXT)
+am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_323)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_307 = lib571-first.$(OBJEXT)
-am__objects_308 = ../../lib/lib571-warnless.$(OBJEXT)
-am__objects_309 = ../../lib/lib571-curl_multibyte.$(OBJEXT)
-am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_307) \
- $(am__objects_308) $(am__objects_309)
+am__objects_324 = ../../lib/lib571-timediff.$(OBJEXT) \
+ lib571-first.$(OBJEXT)
+am__objects_325 = ../../lib/lib571-warnless.$(OBJEXT)
+am__objects_326 = ../../lib/lib571-curl_multibyte.$(OBJEXT)
+am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_324) \
+ $(am__objects_325) $(am__objects_326)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_310 = lib572-first.$(OBJEXT)
-am__objects_311 = ../../lib/lib572-curl_multibyte.$(OBJEXT)
-am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_310) \
- $(am__objects_311)
+am__objects_327 = ../../lib/lib572-timediff.$(OBJEXT) \
+ lib572-first.$(OBJEXT)
+am__objects_328 = ../../lib/lib572-curl_multibyte.$(OBJEXT)
+am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_327) \
+ $(am__objects_328)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_312 = lib573-first.$(OBJEXT)
-am__objects_313 = lib573-testutil.$(OBJEXT)
-am__objects_314 = ../../lib/lib573-warnless.$(OBJEXT)
-am__objects_315 = lib573-testtrace.$(OBJEXT)
-am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_312) \
- $(am__objects_313) $(am__objects_314) $(am__objects_315)
+am__objects_329 = ../../lib/lib573-timediff.$(OBJEXT) \
+ lib573-first.$(OBJEXT)
+am__objects_330 = lib573-testutil.$(OBJEXT)
+am__objects_331 = ../../lib/lib573-warnless.$(OBJEXT)
+am__objects_332 = lib573-testtrace.$(OBJEXT)
+am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_329) \
+ $(am__objects_330) $(am__objects_331) $(am__objects_332)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_316 = lib574-first.$(OBJEXT)
-am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_316)
+am__objects_333 = ../../lib/lib574-timediff.$(OBJEXT) \
+ lib574-first.$(OBJEXT)
+am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_333)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_317 = lib575-first.$(OBJEXT)
-am__objects_318 = lib575-testutil.$(OBJEXT)
-am__objects_319 = ../../lib/lib575-warnless.$(OBJEXT)
-am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_317) \
- $(am__objects_318) $(am__objects_319)
+am__objects_334 = ../../lib/lib575-timediff.$(OBJEXT) \
+ lib575-first.$(OBJEXT)
+am__objects_335 = lib575-testutil.$(OBJEXT)
+am__objects_336 = ../../lib/lib575-warnless.$(OBJEXT)
+am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_334) \
+ $(am__objects_335) $(am__objects_336)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_320 = lib576-first.$(OBJEXT)
-am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_320)
+am__objects_337 = ../../lib/lib576-timediff.$(OBJEXT) \
+ lib576-first.$(OBJEXT)
+am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_337)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_321 = lib578-first.$(OBJEXT)
-am__objects_322 = ../../lib/lib578-curl_multibyte.$(OBJEXT)
-am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_321) \
- $(am__objects_322)
+am__objects_338 = ../../lib/lib578-timediff.$(OBJEXT) \
+ lib578-first.$(OBJEXT)
+am__objects_339 = ../../lib/lib578-curl_multibyte.$(OBJEXT)
+am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_338) \
+ $(am__objects_339)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_323 = lib579-first.$(OBJEXT)
-am__objects_324 = ../../lib/lib579-curl_multibyte.$(OBJEXT)
-am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_323) \
- $(am__objects_324)
+am__objects_340 = ../../lib/lib579-timediff.$(OBJEXT) \
+ lib579-first.$(OBJEXT)
+am__objects_341 = ../../lib/lib579-curl_multibyte.$(OBJEXT)
+am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_340) \
+ $(am__objects_341)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_325 = lib582-first.$(OBJEXT)
-am__objects_326 = lib582-testutil.$(OBJEXT)
-am__objects_327 = ../../lib/lib582-warnless.$(OBJEXT)
-am__objects_328 = ../../lib/lib582-curl_multibyte.$(OBJEXT)
-am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_325) \
- $(am__objects_326) $(am__objects_327) $(am__objects_328)
+am__objects_342 = ../../lib/lib582-timediff.$(OBJEXT) \
+ lib582-first.$(OBJEXT)
+am__objects_343 = lib582-testutil.$(OBJEXT)
+am__objects_344 = ../../lib/lib582-warnless.$(OBJEXT)
+am__objects_345 = ../../lib/lib582-curl_multibyte.$(OBJEXT)
+am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_342) \
+ $(am__objects_343) $(am__objects_344) $(am__objects_345)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_329 = lib583-first.$(OBJEXT)
-am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_329)
+am__objects_346 = ../../lib/lib583-timediff.$(OBJEXT) \
+ lib583-first.$(OBJEXT)
+am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_346)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_330 = lib584-first.$(OBJEXT)
-am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_330)
+am__objects_347 = ../../lib/lib584-timediff.$(OBJEXT) \
+ lib584-first.$(OBJEXT)
+am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_347)
lib584_OBJECTS = $(am_lib584_OBJECTS)
lib584_LDADD = $(LDADD)
lib584_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_331 = lib585-first.$(OBJEXT)
-am__objects_332 = lib585-testutil.$(OBJEXT)
-am__objects_333 = lib585-testtrace.$(OBJEXT)
-am__objects_334 = ../../lib/lib585-curl_multibyte.$(OBJEXT)
-am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_331) \
- $(am__objects_332) $(am__objects_333) $(am__objects_334)
+am__objects_348 = ../../lib/lib585-timediff.$(OBJEXT) \
+ lib585-first.$(OBJEXT)
+am__objects_349 = lib585-testutil.$(OBJEXT)
+am__objects_350 = lib585-testtrace.$(OBJEXT)
+am__objects_351 = ../../lib/lib585-curl_multibyte.$(OBJEXT)
+am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_348) \
+ $(am__objects_349) $(am__objects_350) $(am__objects_351)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_335 = lib586-first.$(OBJEXT)
-am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_335)
+am__objects_352 = ../../lib/lib586-timediff.$(OBJEXT) \
+ lib586-first.$(OBJEXT)
+am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_352)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_336 = lib587-first.$(OBJEXT)
-am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_336)
+am__objects_353 = ../../lib/lib587-timediff.$(OBJEXT) \
+ lib587-first.$(OBJEXT)
+am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_353)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_337 = lib589-first.$(OBJEXT)
-am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_337)
+am__objects_354 = ../../lib/lib589-timediff.$(OBJEXT) \
+ lib589-first.$(OBJEXT)
+am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_354)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_338 = lib590-first.$(OBJEXT)
-am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_338)
+am__objects_355 = ../../lib/lib590-timediff.$(OBJEXT) \
+ lib590-first.$(OBJEXT)
+am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_355)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_339 = lib591-first.$(OBJEXT)
-am__objects_340 = lib591-testutil.$(OBJEXT)
-am__objects_341 = ../../lib/lib591-warnless.$(OBJEXT)
-am__objects_342 = ../../lib/lib591-curl_multibyte.$(OBJEXT)
-am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_339) \
- $(am__objects_340) $(am__objects_341) $(am__objects_342)
+am__objects_356 = ../../lib/lib591-timediff.$(OBJEXT) \
+ lib591-first.$(OBJEXT)
+am__objects_357 = lib591-testutil.$(OBJEXT)
+am__objects_358 = ../../lib/lib591-warnless.$(OBJEXT)
+am__objects_359 = ../../lib/lib591-curl_multibyte.$(OBJEXT)
+am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_356) \
+ $(am__objects_357) $(am__objects_358) $(am__objects_359)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_343 = lib597-first.$(OBJEXT)
-am__objects_344 = lib597-testutil.$(OBJEXT)
-am__objects_345 = ../../lib/lib597-warnless.$(OBJEXT)
-am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_343) \
- $(am__objects_344) $(am__objects_345)
+am__objects_360 = ../../lib/lib597-timediff.$(OBJEXT) \
+ lib597-first.$(OBJEXT)
+am__objects_361 = lib597-testutil.$(OBJEXT)
+am__objects_362 = ../../lib/lib597-warnless.$(OBJEXT)
+am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_360) \
+ $(am__objects_361) $(am__objects_362)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_346 = lib598-first.$(OBJEXT)
-am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_346)
+am__objects_363 = ../../lib/lib598-timediff.$(OBJEXT) \
+ lib598-first.$(OBJEXT)
+am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_363)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_347 = lib599-first.$(OBJEXT)
-am__objects_348 = ../../lib/lib599-curl_multibyte.$(OBJEXT)
-am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_347) \
- $(am__objects_348)
+am__objects_364 = ../../lib/lib599-timediff.$(OBJEXT) \
+ lib599-first.$(OBJEXT)
+am__objects_365 = ../../lib/lib599-curl_multibyte.$(OBJEXT)
+am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_364) \
+ $(am__objects_365)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_349 = lib643-first.$(OBJEXT)
-am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_349)
+am__objects_366 = ../../lib/lib643-timediff.$(OBJEXT) \
+ lib643-first.$(OBJEXT)
+am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_366)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_350 = lib645-first.$(OBJEXT)
-am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_350)
+am__objects_367 = ../../lib/lib645-timediff.$(OBJEXT) \
+ lib645-first.$(OBJEXT)
+am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_367)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_351 = lib650-first.$(OBJEXT)
-am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_351)
+am__objects_368 = ../../lib/lib650-timediff.$(OBJEXT) \
+ lib650-first.$(OBJEXT)
+am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_368)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_352 = lib651-first.$(OBJEXT)
-am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_352)
+am__objects_369 = ../../lib/lib651-timediff.$(OBJEXT) \
+ lib651-first.$(OBJEXT)
+am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_369)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_353 = lib652-first.$(OBJEXT)
-am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_353)
+am__objects_370 = ../../lib/lib652-timediff.$(OBJEXT) \
+ lib652-first.$(OBJEXT)
+am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_370)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_354 = lib653-first.$(OBJEXT)
-am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_354)
+am__objects_371 = ../../lib/lib653-timediff.$(OBJEXT) \
+ lib653-first.$(OBJEXT)
+am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_371)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_355 = lib654-first.$(OBJEXT)
-am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_355)
+am__objects_372 = ../../lib/lib654-timediff.$(OBJEXT) \
+ lib654-first.$(OBJEXT)
+am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_372)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_356 = lib655-first.$(OBJEXT)
-am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_356)
+am__objects_373 = ../../lib/lib655-timediff.$(OBJEXT) \
+ lib655-first.$(OBJEXT)
+am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_373)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_357 = lib658-first.$(OBJEXT)
-am__objects_358 = lib658-testutil.$(OBJEXT)
-am__objects_359 = ../../lib/lib658-warnless.$(OBJEXT)
-am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_357) \
- $(am__objects_358) $(am__objects_359)
+am__objects_374 = ../../lib/lib658-timediff.$(OBJEXT) \
+ lib658-first.$(OBJEXT)
+am__objects_375 = lib658-testutil.$(OBJEXT)
+am__objects_376 = ../../lib/lib658-warnless.$(OBJEXT)
+am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_374) \
+ $(am__objects_375) $(am__objects_376)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_360 = lib659-first.$(OBJEXT)
-am__objects_361 = lib659-testutil.$(OBJEXT)
-am__objects_362 = ../../lib/lib659-warnless.$(OBJEXT)
-am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_360) \
- $(am__objects_361) $(am__objects_362)
+am__objects_377 = ../../lib/lib659-timediff.$(OBJEXT) \
+ lib659-first.$(OBJEXT)
+am__objects_378 = lib659-testutil.$(OBJEXT)
+am__objects_379 = ../../lib/lib659-warnless.$(OBJEXT)
+am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_377) \
+ $(am__objects_378) $(am__objects_379)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_363 = lib661-first.$(OBJEXT)
-am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_363)
+am__objects_380 = ../../lib/lib661-timediff.$(OBJEXT) \
+ lib661-first.$(OBJEXT)
+am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_380)
lib661_OBJECTS = $(am_lib661_OBJECTS)
lib661_LDADD = $(LDADD)
lib661_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_364 = lib666-first.$(OBJEXT)
-am_lib666_OBJECTS = lib666-lib666.$(OBJEXT) $(am__objects_364)
+am__objects_381 = ../../lib/lib666-timediff.$(OBJEXT) \
+ lib666-first.$(OBJEXT)
+am_lib666_OBJECTS = lib666-lib666.$(OBJEXT) $(am__objects_381)
lib666_OBJECTS = $(am_lib666_OBJECTS)
lib666_LDADD = $(LDADD)
lib666_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_365 = lib667-first.$(OBJEXT)
-am__objects_366 = lib667-testutil.$(OBJEXT)
-am__objects_367 = ../../lib/lib667-warnless.$(OBJEXT)
-am_lib667_OBJECTS = lib667-lib667.$(OBJEXT) $(am__objects_365) \
- $(am__objects_366) $(am__objects_367)
+am__objects_382 = ../../lib/lib667-timediff.$(OBJEXT) \
+ lib667-first.$(OBJEXT)
+am__objects_383 = lib667-testutil.$(OBJEXT)
+am__objects_384 = ../../lib/lib667-warnless.$(OBJEXT)
+am_lib667_OBJECTS = lib667-lib667.$(OBJEXT) $(am__objects_382) \
+ $(am__objects_383) $(am__objects_384)
lib667_OBJECTS = $(am_lib667_OBJECTS)
lib667_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_368 = lib668-first.$(OBJEXT)
-am__objects_369 = lib668-testutil.$(OBJEXT)
-am__objects_370 = ../../lib/lib668-warnless.$(OBJEXT)
-am_lib668_OBJECTS = lib668-lib668.$(OBJEXT) $(am__objects_368) \
- $(am__objects_369) $(am__objects_370)
+am__objects_385 = ../../lib/lib668-timediff.$(OBJEXT) \
+ lib668-first.$(OBJEXT)
+am__objects_386 = lib668-testutil.$(OBJEXT)
+am__objects_387 = ../../lib/lib668-warnless.$(OBJEXT)
+am_lib668_OBJECTS = lib668-lib668.$(OBJEXT) $(am__objects_385) \
+ $(am__objects_386) $(am__objects_387)
lib668_OBJECTS = $(am_lib668_OBJECTS)
lib668_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_371 = lib670-first.$(OBJEXT)
-am__objects_372 = lib670-testutil.$(OBJEXT)
-am__objects_373 = ../../lib/lib670-warnless.$(OBJEXT)
-am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_371) \
- $(am__objects_372) $(am__objects_373)
+am__objects_388 = ../../lib/lib670-timediff.$(OBJEXT) \
+ lib670-first.$(OBJEXT)
+am__objects_389 = lib670-testutil.$(OBJEXT)
+am__objects_390 = ../../lib/lib670-warnless.$(OBJEXT)
+am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_388) \
+ $(am__objects_389) $(am__objects_390)
lib670_OBJECTS = $(am_lib670_OBJECTS)
lib670_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_374 = lib671-first.$(OBJEXT)
-am__objects_375 = lib671-testutil.$(OBJEXT)
-am__objects_376 = ../../lib/lib671-warnless.$(OBJEXT)
-am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_374) \
- $(am__objects_375) $(am__objects_376)
+am__objects_391 = ../../lib/lib671-timediff.$(OBJEXT) \
+ lib671-first.$(OBJEXT)
+am__objects_392 = lib671-testutil.$(OBJEXT)
+am__objects_393 = ../../lib/lib671-warnless.$(OBJEXT)
+am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_391) \
+ $(am__objects_392) $(am__objects_393)
lib671_OBJECTS = $(am_lib671_OBJECTS)
lib671_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_377 = lib672-first.$(OBJEXT)
-am__objects_378 = lib672-testutil.$(OBJEXT)
-am__objects_379 = ../../lib/lib672-warnless.$(OBJEXT)
-am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_377) \
- $(am__objects_378) $(am__objects_379)
+am__objects_394 = ../../lib/lib672-timediff.$(OBJEXT) \
+ lib672-first.$(OBJEXT)
+am__objects_395 = lib672-testutil.$(OBJEXT)
+am__objects_396 = ../../lib/lib672-warnless.$(OBJEXT)
+am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_394) \
+ $(am__objects_395) $(am__objects_396)
lib672_OBJECTS = $(am_lib672_OBJECTS)
lib672_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_380 = lib673-first.$(OBJEXT)
-am__objects_381 = lib673-testutil.$(OBJEXT)
-am__objects_382 = ../../lib/lib673-warnless.$(OBJEXT)
-am_lib673_OBJECTS = lib673-lib670.$(OBJEXT) $(am__objects_380) \
- $(am__objects_381) $(am__objects_382)
+am__objects_397 = ../../lib/lib673-timediff.$(OBJEXT) \
+ lib673-first.$(OBJEXT)
+am__objects_398 = lib673-testutil.$(OBJEXT)
+am__objects_399 = ../../lib/lib673-warnless.$(OBJEXT)
+am_lib673_OBJECTS = lib673-lib670.$(OBJEXT) $(am__objects_397) \
+ $(am__objects_398) $(am__objects_399)
lib673_OBJECTS = $(am_lib673_OBJECTS)
lib673_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_383 = lib674-first.$(OBJEXT)
-am__objects_384 = lib674-testutil.$(OBJEXT)
-am__objects_385 = ../../lib/lib674-warnless.$(OBJEXT)
-am_lib674_OBJECTS = lib674-lib674.$(OBJEXT) $(am__objects_383) \
- $(am__objects_384) $(am__objects_385)
+am__objects_400 = ../../lib/lib674-timediff.$(OBJEXT) \
+ lib674-first.$(OBJEXT)
+am__objects_401 = lib674-testutil.$(OBJEXT)
+am__objects_402 = ../../lib/lib674-warnless.$(OBJEXT)
+am_lib674_OBJECTS = lib674-lib674.$(OBJEXT) $(am__objects_400) \
+ $(am__objects_401) $(am__objects_402)
lib674_OBJECTS = $(am_lib674_OBJECTS)
lib674_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_386 = lib676-first.$(OBJEXT)
-am__objects_387 = lib676-testutil.$(OBJEXT)
-am__objects_388 = ../../lib/lib676-warnless.$(OBJEXT)
-am_lib676_OBJECTS = lib676-lib676.$(OBJEXT) $(am__objects_386) \
- $(am__objects_387) $(am__objects_388)
+am__objects_403 = ../../lib/lib676-timediff.$(OBJEXT) \
+ lib676-first.$(OBJEXT)
+am__objects_404 = lib676-testutil.$(OBJEXT)
+am__objects_405 = ../../lib/lib676-warnless.$(OBJEXT)
+am_lib676_OBJECTS = lib676-lib676.$(OBJEXT) $(am__objects_403) \
+ $(am__objects_404) $(am__objects_405)
lib676_OBJECTS = $(am_lib676_OBJECTS)
lib676_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_389 = lib677-first.$(OBJEXT)
-am__objects_390 = lib677-testutil.$(OBJEXT)
-am__objects_391 = ../../lib/lib677-warnless.$(OBJEXT)
-am__objects_392 = ../../lib/lib677-curl_multibyte.$(OBJEXT)
-am_lib677_OBJECTS = lib677-lib677.$(OBJEXT) $(am__objects_389) \
- $(am__objects_390) $(am__objects_391) $(am__objects_392)
+am__objects_406 = ../../lib/lib677-timediff.$(OBJEXT) \
+ lib677-first.$(OBJEXT)
+am__objects_407 = lib677-testutil.$(OBJEXT)
+am__objects_408 = ../../lib/lib677-warnless.$(OBJEXT)
+am__objects_409 = ../../lib/lib677-curl_multibyte.$(OBJEXT)
+am_lib677_OBJECTS = lib677-lib677.$(OBJEXT) $(am__objects_406) \
+ $(am__objects_407) $(am__objects_408) $(am__objects_409)
lib677_OBJECTS = $(am_lib677_OBJECTS)
lib677_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_393 = lib678-first.$(OBJEXT)
-am__objects_394 = lib678-testutil.$(OBJEXT)
-am__objects_395 = ../../lib/lib678-warnless.$(OBJEXT)
-am__objects_396 = ../../lib/lib678-curl_multibyte.$(OBJEXT)
-am_lib678_OBJECTS = lib678-lib678.$(OBJEXT) $(am__objects_393) \
- $(am__objects_394) $(am__objects_395) $(am__objects_396)
+am__objects_410 = ../../lib/lib678-timediff.$(OBJEXT) \
+ lib678-first.$(OBJEXT)
+am__objects_411 = lib678-testutil.$(OBJEXT)
+am__objects_412 = ../../lib/lib678-warnless.$(OBJEXT)
+am__objects_413 = ../../lib/lib678-curl_multibyte.$(OBJEXT)
+am_lib678_OBJECTS = lib678-lib678.$(OBJEXT) $(am__objects_410) \
+ $(am__objects_411) $(am__objects_412) $(am__objects_413)
lib678_OBJECTS = $(am_lib678_OBJECTS)
lib678_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_397 = libauthretry-first.$(OBJEXT)
+am__objects_414 = ../../lib/libauthretry-timediff.$(OBJEXT) \
+ libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
- $(am__objects_397)
+ $(am__objects_414)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_398 = libntlmconnect-first.$(OBJEXT)
-am__objects_399 = libntlmconnect-testutil.$(OBJEXT)
-am__objects_400 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
+am__objects_415 = ../../lib/libntlmconnect-timediff.$(OBJEXT) \
+ libntlmconnect-first.$(OBJEXT)
+am__objects_416 = libntlmconnect-testutil.$(OBJEXT)
+am__objects_417 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
- $(am__objects_398) $(am__objects_399) $(am__objects_400)
+ $(am__objects_415) $(am__objects_416) $(am__objects_417)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_401 = libprereq-first.$(OBJEXT)
-am__objects_402 = libprereq-testutil.$(OBJEXT)
-am__objects_403 = ../../lib/libprereq-warnless.$(OBJEXT)
+am__objects_418 = ../../lib/libprereq-timediff.$(OBJEXT) \
+ libprereq-first.$(OBJEXT)
+am__objects_419 = libprereq-testutil.$(OBJEXT)
+am__objects_420 = ../../lib/libprereq-warnless.$(OBJEXT)
am_libprereq_OBJECTS = libprereq-libprereq.$(OBJEXT) \
- $(am__objects_401) $(am__objects_402) $(am__objects_403)
+ $(am__objects_418) $(am__objects_419) $(am__objects_420)
libprereq_OBJECTS = $(am_libprereq_OBJECTS)
libprereq_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
@@ -1415,130 +1670,324 @@ am__v_at_1 =
DEFAULT_INCLUDES =
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = \
- ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po \
- ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po \
+am__depfiles_remade = ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po \
../../lib/$(DEPDIR)/chkdecimalpoint-mprintf.Po \
../../lib/$(DEPDIR)/chkdecimalpoint-strdup.Po \
../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po \
+ ../../lib/$(DEPDIR)/lib1156-timediff.Po \
../../lib/$(DEPDIR)/lib1156-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1500-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1501-timediff.Po \
../../lib/$(DEPDIR)/lib1501-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1502-timediff.Po \
../../lib/$(DEPDIR)/lib1502-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1503-timediff.Po \
../../lib/$(DEPDIR)/lib1503-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1504-timediff.Po \
../../lib/$(DEPDIR)/lib1504-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1505-timediff.Po \
../../lib/$(DEPDIR)/lib1505-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1506-timediff.Po \
../../lib/$(DEPDIR)/lib1506-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1507-timediff.Po \
../../lib/$(DEPDIR)/lib1507-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1508-timediff.Po \
../../lib/$(DEPDIR)/lib1508-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1509-timediff.Po \
../../lib/$(DEPDIR)/lib1509-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1510-timediff.Po \
../../lib/$(DEPDIR)/lib1510-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1511-timediff.Po \
../../lib/$(DEPDIR)/lib1511-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1512-timediff.Po \
../../lib/$(DEPDIR)/lib1512-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1513-timediff.Po \
../../lib/$(DEPDIR)/lib1513-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1514-timediff.Po \
../../lib/$(DEPDIR)/lib1514-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1515-timediff.Po \
../../lib/$(DEPDIR)/lib1515-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1517-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1518-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1520-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1521-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1522-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1523-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1525-timediff.Po \
../../lib/$(DEPDIR)/lib1525-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1526-timediff.Po \
../../lib/$(DEPDIR)/lib1526-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1527-timediff.Po \
../../lib/$(DEPDIR)/lib1527-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1528-timediff.Po \
../../lib/$(DEPDIR)/lib1528-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1529-timediff.Po \
../../lib/$(DEPDIR)/lib1529-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1530-timediff.Po \
../../lib/$(DEPDIR)/lib1530-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1531-timediff.Po \
../../lib/$(DEPDIR)/lib1531-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1532-timediff.Po \
../../lib/$(DEPDIR)/lib1532-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1533-timediff.Po \
../../lib/$(DEPDIR)/lib1533-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1534-timediff.Po \
../../lib/$(DEPDIR)/lib1534-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1535-timediff.Po \
../../lib/$(DEPDIR)/lib1535-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1536-timediff.Po \
../../lib/$(DEPDIR)/lib1536-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1537-timediff.Po \
../../lib/$(DEPDIR)/lib1537-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1538-timediff.Po \
../../lib/$(DEPDIR)/lib1538-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1539-timediff.Po \
../../lib/$(DEPDIR)/lib1539-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1540-timediff.Po \
../../lib/$(DEPDIR)/lib1540-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1542-timediff.Po \
../../lib/$(DEPDIR)/lib1542-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1543-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1550-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1551-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1552-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1553-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1554-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1555-timediff.Po \
../../lib/$(DEPDIR)/lib1555-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1556-timediff.Po \
../../lib/$(DEPDIR)/lib1556-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1557-timediff.Po \
../../lib/$(DEPDIR)/lib1557-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1564-timediff.Po \
../../lib/$(DEPDIR)/lib1564-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1565-timediff.Po \
../../lib/$(DEPDIR)/lib1565-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1567-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1568-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1569-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1591-timediff.Po \
../../lib/$(DEPDIR)/lib1591-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1592-timediff.Po \
../../lib/$(DEPDIR)/lib1592-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1596-timediff.Po \
../../lib/$(DEPDIR)/lib1596-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1905-timediff.Po \
../../lib/$(DEPDIR)/lib1905-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1906-timediff.Po \
../../lib/$(DEPDIR)/lib1906-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1907-timediff.Po \
../../lib/$(DEPDIR)/lib1907-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1908-timediff.Po \
../../lib/$(DEPDIR)/lib1908-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1910-timediff.Po \
../../lib/$(DEPDIR)/lib1910-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1911-timediff.Po \
../../lib/$(DEPDIR)/lib1911-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1912-timediff.Po \
../../lib/$(DEPDIR)/lib1912-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1913-timediff.Po \
../../lib/$(DEPDIR)/lib1913-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1915-timediff.Po \
../../lib/$(DEPDIR)/lib1915-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1916-timediff.Po \
../../lib/$(DEPDIR)/lib1916-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1917-timediff.Po \
../../lib/$(DEPDIR)/lib1917-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1918-timediff.Po \
../../lib/$(DEPDIR)/lib1918-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1919-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1919-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1933-timediff.Po \
../../lib/$(DEPDIR)/lib1933-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1934-timediff.Po \
../../lib/$(DEPDIR)/lib1934-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1935-timediff.Po \
../../lib/$(DEPDIR)/lib1935-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1936-timediff.Po \
../../lib/$(DEPDIR)/lib1936-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1937-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1938-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1939-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1940-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1945-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1946-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1947-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1948-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1955-timediff.Po \
+ ../../lib/$(DEPDIR)/lib1955-warnless.Po \
+ ../../lib/$(DEPDIR)/lib3010-timediff.Po \
../../lib/$(DEPDIR)/lib3010-warnless.Po \
+ ../../lib/$(DEPDIR)/lib3025-timediff.Po \
../../lib/$(DEPDIR)/lib3025-warnless.Po \
+ ../../lib/$(DEPDIR)/lib3026-timediff.Po \
+ ../../lib/$(DEPDIR)/lib3026-warnless.Po \
+ ../../lib/$(DEPDIR)/lib3027-timediff.Po \
+ ../../lib/$(DEPDIR)/lib3027-warnless.Po \
../../lib/$(DEPDIR)/lib500-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib500-timediff.Po \
+ ../../lib/$(DEPDIR)/lib501-timediff.Po \
+ ../../lib/$(DEPDIR)/lib502-timediff.Po \
../../lib/$(DEPDIR)/lib502-warnless.Po \
+ ../../lib/$(DEPDIR)/lib503-timediff.Po \
../../lib/$(DEPDIR)/lib503-warnless.Po \
+ ../../lib/$(DEPDIR)/lib504-timediff.Po \
../../lib/$(DEPDIR)/lib504-warnless.Po \
../../lib/$(DEPDIR)/lib505-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib505-timediff.Po \
+ ../../lib/$(DEPDIR)/lib506-timediff.Po \
+ ../../lib/$(DEPDIR)/lib507-timediff.Po \
../../lib/$(DEPDIR)/lib507-warnless.Po \
+ ../../lib/$(DEPDIR)/lib508-timediff.Po \
+ ../../lib/$(DEPDIR)/lib509-timediff.Po \
+ ../../lib/$(DEPDIR)/lib510-timediff.Po \
+ ../../lib/$(DEPDIR)/lib511-timediff.Po \
+ ../../lib/$(DEPDIR)/lib512-timediff.Po \
+ ../../lib/$(DEPDIR)/lib513-timediff.Po \
+ ../../lib/$(DEPDIR)/lib514-timediff.Po \
+ ../../lib/$(DEPDIR)/lib515-timediff.Po \
+ ../../lib/$(DEPDIR)/lib516-timediff.Po \
+ ../../lib/$(DEPDIR)/lib517-timediff.Po \
../../lib/$(DEPDIR)/lib518-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib518-timediff.Po \
../../lib/$(DEPDIR)/lib518-warnless.Po \
+ ../../lib/$(DEPDIR)/lib519-timediff.Po \
+ ../../lib/$(DEPDIR)/lib520-timediff.Po \
+ ../../lib/$(DEPDIR)/lib521-timediff.Po \
+ ../../lib/$(DEPDIR)/lib523-timediff.Po \
+ ../../lib/$(DEPDIR)/lib524-timediff.Po \
../../lib/$(DEPDIR)/lib525-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib525-timediff.Po \
../../lib/$(DEPDIR)/lib525-warnless.Po \
+ ../../lib/$(DEPDIR)/lib526-timediff.Po \
../../lib/$(DEPDIR)/lib526-warnless.Po \
+ ../../lib/$(DEPDIR)/lib527-timediff.Po \
../../lib/$(DEPDIR)/lib527-warnless.Po \
../../lib/$(DEPDIR)/lib529-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib529-timediff.Po \
../../lib/$(DEPDIR)/lib529-warnless.Po \
+ ../../lib/$(DEPDIR)/lib530-timediff.Po \
../../lib/$(DEPDIR)/lib530-warnless.Po \
+ ../../lib/$(DEPDIR)/lib532-timediff.Po \
../../lib/$(DEPDIR)/lib532-warnless.Po \
+ ../../lib/$(DEPDIR)/lib533-timediff.Po \
../../lib/$(DEPDIR)/lib533-warnless.Po \
../../lib/$(DEPDIR)/lib537-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib537-timediff.Po \
../../lib/$(DEPDIR)/lib537-warnless.Po \
+ ../../lib/$(DEPDIR)/lib539-timediff.Po \
+ ../../lib/$(DEPDIR)/lib540-timediff.Po \
../../lib/$(DEPDIR)/lib540-warnless.Po \
../../lib/$(DEPDIR)/lib541-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib541-timediff.Po \
+ ../../lib/$(DEPDIR)/lib542-timediff.Po \
+ ../../lib/$(DEPDIR)/lib543-timediff.Po \
+ ../../lib/$(DEPDIR)/lib544-timediff.Po \
+ ../../lib/$(DEPDIR)/lib545-timediff.Po \
+ ../../lib/$(DEPDIR)/lib547-timediff.Po \
+ ../../lib/$(DEPDIR)/lib548-timediff.Po \
+ ../../lib/$(DEPDIR)/lib549-timediff.Po \
+ ../../lib/$(DEPDIR)/lib552-timediff.Po \
../../lib/$(DEPDIR)/lib552-warnless.Po \
+ ../../lib/$(DEPDIR)/lib553-timediff.Po \
+ ../../lib/$(DEPDIR)/lib554-timediff.Po \
+ ../../lib/$(DEPDIR)/lib555-timediff.Po \
../../lib/$(DEPDIR)/lib555-warnless.Po \
+ ../../lib/$(DEPDIR)/lib556-timediff.Po \
../../lib/$(DEPDIR)/lib556-warnless.Po \
+ ../../lib/$(DEPDIR)/lib557-timediff.Po \
+ ../../lib/$(DEPDIR)/lib558-timediff.Po \
+ ../../lib/$(DEPDIR)/lib559-timediff.Po \
+ ../../lib/$(DEPDIR)/lib560-timediff.Po \
../../lib/$(DEPDIR)/lib560-warnless.Po \
+ ../../lib/$(DEPDIR)/lib562-timediff.Po \
+ ../../lib/$(DEPDIR)/lib564-timediff.Po \
../../lib/$(DEPDIR)/lib564-warnless.Po \
+ ../../lib/$(DEPDIR)/lib565-timediff.Po \
../../lib/$(DEPDIR)/lib566-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib566-timediff.Po \
+ ../../lib/$(DEPDIR)/lib567-timediff.Po \
../../lib/$(DEPDIR)/lib568-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib568-timediff.Po \
../../lib/$(DEPDIR)/lib569-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib569-timediff.Po \
+ ../../lib/$(DEPDIR)/lib570-timediff.Po \
../../lib/$(DEPDIR)/lib571-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib571-timediff.Po \
../../lib/$(DEPDIR)/lib571-warnless.Po \
../../lib/$(DEPDIR)/lib572-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib572-timediff.Po \
+ ../../lib/$(DEPDIR)/lib573-timediff.Po \
../../lib/$(DEPDIR)/lib573-warnless.Po \
+ ../../lib/$(DEPDIR)/lib574-timediff.Po \
+ ../../lib/$(DEPDIR)/lib575-timediff.Po \
../../lib/$(DEPDIR)/lib575-warnless.Po \
+ ../../lib/$(DEPDIR)/lib576-timediff.Po \
../../lib/$(DEPDIR)/lib578-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib578-timediff.Po \
../../lib/$(DEPDIR)/lib579-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib579-timediff.Po \
../../lib/$(DEPDIR)/lib582-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib582-timediff.Po \
../../lib/$(DEPDIR)/lib582-warnless.Po \
+ ../../lib/$(DEPDIR)/lib583-timediff.Po \
+ ../../lib/$(DEPDIR)/lib584-timediff.Po \
../../lib/$(DEPDIR)/lib585-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib585-timediff.Po \
+ ../../lib/$(DEPDIR)/lib586-timediff.Po \
+ ../../lib/$(DEPDIR)/lib587-timediff.Po \
+ ../../lib/$(DEPDIR)/lib589-timediff.Po \
+ ../../lib/$(DEPDIR)/lib590-timediff.Po \
../../lib/$(DEPDIR)/lib591-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib591-timediff.Po \
../../lib/$(DEPDIR)/lib591-warnless.Po \
+ ../../lib/$(DEPDIR)/lib597-timediff.Po \
../../lib/$(DEPDIR)/lib597-warnless.Po \
+ ../../lib/$(DEPDIR)/lib598-timediff.Po \
../../lib/$(DEPDIR)/lib599-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib599-timediff.Po \
+ ../../lib/$(DEPDIR)/lib643-timediff.Po \
+ ../../lib/$(DEPDIR)/lib645-timediff.Po \
+ ../../lib/$(DEPDIR)/lib650-timediff.Po \
+ ../../lib/$(DEPDIR)/lib651-timediff.Po \
+ ../../lib/$(DEPDIR)/lib652-timediff.Po \
+ ../../lib/$(DEPDIR)/lib653-timediff.Po \
+ ../../lib/$(DEPDIR)/lib654-timediff.Po \
+ ../../lib/$(DEPDIR)/lib655-timediff.Po \
+ ../../lib/$(DEPDIR)/lib658-timediff.Po \
../../lib/$(DEPDIR)/lib658-warnless.Po \
+ ../../lib/$(DEPDIR)/lib659-timediff.Po \
../../lib/$(DEPDIR)/lib659-warnless.Po \
+ ../../lib/$(DEPDIR)/lib661-timediff.Po \
+ ../../lib/$(DEPDIR)/lib666-timediff.Po \
+ ../../lib/$(DEPDIR)/lib667-timediff.Po \
../../lib/$(DEPDIR)/lib667-warnless.Po \
+ ../../lib/$(DEPDIR)/lib668-timediff.Po \
../../lib/$(DEPDIR)/lib668-warnless.Po \
+ ../../lib/$(DEPDIR)/lib670-timediff.Po \
../../lib/$(DEPDIR)/lib670-warnless.Po \
+ ../../lib/$(DEPDIR)/lib671-timediff.Po \
../../lib/$(DEPDIR)/lib671-warnless.Po \
+ ../../lib/$(DEPDIR)/lib672-timediff.Po \
../../lib/$(DEPDIR)/lib672-warnless.Po \
+ ../../lib/$(DEPDIR)/lib673-timediff.Po \
../../lib/$(DEPDIR)/lib673-warnless.Po \
+ ../../lib/$(DEPDIR)/lib674-timediff.Po \
../../lib/$(DEPDIR)/lib674-warnless.Po \
+ ../../lib/$(DEPDIR)/lib676-timediff.Po \
../../lib/$(DEPDIR)/lib676-warnless.Po \
../../lib/$(DEPDIR)/lib677-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib677-timediff.Po \
../../lib/$(DEPDIR)/lib677-warnless.Po \
../../lib/$(DEPDIR)/lib678-curl_multibyte.Po \
+ ../../lib/$(DEPDIR)/lib678-timediff.Po \
../../lib/$(DEPDIR)/lib678-warnless.Po \
+ ../../lib/$(DEPDIR)/libauthretry-timediff.Po \
+ ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po \
../../lib/$(DEPDIR)/libntlmconnect-warnless.Po \
+ ../../lib/$(DEPDIR)/libprereq-timediff.Po \
../../lib/$(DEPDIR)/libprereq-warnless.Po \
+ ../../lib/$(DEPDIR)/timediff.Po \
../../lib/$(DEPDIR)/warnless.Po \
./$(DEPDIR)/chkdecimalpoint-chkdecimalpoint.Po \
./$(DEPDIR)/chkhostname-chkhostname.Po ./$(DEPDIR)/first.Po \
@@ -1602,7 +2051,8 @@ am__depfiles_remade = \
./$(DEPDIR)/lib1540-testutil.Po ./$(DEPDIR)/lib1542-first.Po \
./$(DEPDIR)/lib1542-lib1542.Po \
./$(DEPDIR)/lib1542-testtrace.Po \
- ./$(DEPDIR)/lib1542-testutil.Po ./$(DEPDIR)/lib1550-first.Po \
+ ./$(DEPDIR)/lib1542-testutil.Po ./$(DEPDIR)/lib1543-first.Po \
+ ./$(DEPDIR)/lib1543-lib1518.Po ./$(DEPDIR)/lib1550-first.Po \
./$(DEPDIR)/lib1550-lib1550.Po ./$(DEPDIR)/lib1551-first.Po \
./$(DEPDIR)/lib1551-lib1551.Po ./$(DEPDIR)/lib1552-first.Po \
./$(DEPDIR)/lib1552-lib1552.Po ./$(DEPDIR)/lib1552-testutil.Po \
@@ -1626,35 +2076,47 @@ am__depfiles_remade = \
./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
- ./$(DEPDIR)/lib1905-first.Po ./$(DEPDIR)/lib1905-lib1905.Po \
- ./$(DEPDIR)/lib1905-testutil.Po ./$(DEPDIR)/lib1906-first.Po \
- ./$(DEPDIR)/lib1906-lib1906.Po ./$(DEPDIR)/lib1906-testutil.Po \
- ./$(DEPDIR)/lib1907-first.Po ./$(DEPDIR)/lib1907-lib1907.Po \
- ./$(DEPDIR)/lib1907-testutil.Po ./$(DEPDIR)/lib1908-first.Po \
- ./$(DEPDIR)/lib1908-lib1908.Po ./$(DEPDIR)/lib1908-testutil.Po \
- ./$(DEPDIR)/lib1910-first.Po ./$(DEPDIR)/lib1910-lib1910.Po \
- ./$(DEPDIR)/lib1910-testutil.Po ./$(DEPDIR)/lib1911-first.Po \
- ./$(DEPDIR)/lib1911-lib1911.Po ./$(DEPDIR)/lib1911-testutil.Po \
- ./$(DEPDIR)/lib1912-first.Po ./$(DEPDIR)/lib1912-lib1912.Po \
- ./$(DEPDIR)/lib1912-testutil.Po ./$(DEPDIR)/lib1913-first.Po \
- ./$(DEPDIR)/lib1913-lib1913.Po ./$(DEPDIR)/lib1913-testutil.Po \
- ./$(DEPDIR)/lib1915-first.Po ./$(DEPDIR)/lib1915-lib1915.Po \
- ./$(DEPDIR)/lib1915-testutil.Po ./$(DEPDIR)/lib1916-first.Po \
- ./$(DEPDIR)/lib1916-lib1916.Po ./$(DEPDIR)/lib1917-first.Po \
- ./$(DEPDIR)/lib1917-lib1916.Po ./$(DEPDIR)/lib1918-first.Po \
- ./$(DEPDIR)/lib1918-lib1918.Po ./$(DEPDIR)/lib1933-first.Po \
- ./$(DEPDIR)/lib1933-lib1933.Po ./$(DEPDIR)/lib1933-testutil.Po \
- ./$(DEPDIR)/lib1934-first.Po ./$(DEPDIR)/lib1934-lib1934.Po \
- ./$(DEPDIR)/lib1934-testutil.Po ./$(DEPDIR)/lib1935-first.Po \
- ./$(DEPDIR)/lib1935-lib1935.Po ./$(DEPDIR)/lib1935-testutil.Po \
- ./$(DEPDIR)/lib1936-first.Po ./$(DEPDIR)/lib1936-lib1936.Po \
- ./$(DEPDIR)/lib1936-testutil.Po ./$(DEPDIR)/lib1937-first.Po \
- ./$(DEPDIR)/lib1937-lib1937.Po ./$(DEPDIR)/lib1938-first.Po \
- ./$(DEPDIR)/lib1938-lib1938.Po ./$(DEPDIR)/lib1939-first.Po \
- ./$(DEPDIR)/lib1939-lib1939.Po ./$(DEPDIR)/lib3010-first.Po \
+ ./$(DEPDIR)/lib1597.Po ./$(DEPDIR)/lib1905-first.Po \
+ ./$(DEPDIR)/lib1905-lib1905.Po ./$(DEPDIR)/lib1905-testutil.Po \
+ ./$(DEPDIR)/lib1906-first.Po ./$(DEPDIR)/lib1906-lib1906.Po \
+ ./$(DEPDIR)/lib1906-testutil.Po ./$(DEPDIR)/lib1907-first.Po \
+ ./$(DEPDIR)/lib1907-lib1907.Po ./$(DEPDIR)/lib1907-testutil.Po \
+ ./$(DEPDIR)/lib1908-first.Po ./$(DEPDIR)/lib1908-lib1908.Po \
+ ./$(DEPDIR)/lib1908-testutil.Po ./$(DEPDIR)/lib1910-first.Po \
+ ./$(DEPDIR)/lib1910-lib1910.Po ./$(DEPDIR)/lib1910-testutil.Po \
+ ./$(DEPDIR)/lib1911-first.Po ./$(DEPDIR)/lib1911-lib1911.Po \
+ ./$(DEPDIR)/lib1911-testutil.Po ./$(DEPDIR)/lib1912-first.Po \
+ ./$(DEPDIR)/lib1912-lib1912.Po ./$(DEPDIR)/lib1912-testutil.Po \
+ ./$(DEPDIR)/lib1913-first.Po ./$(DEPDIR)/lib1913-lib1913.Po \
+ ./$(DEPDIR)/lib1913-testutil.Po ./$(DEPDIR)/lib1915-first.Po \
+ ./$(DEPDIR)/lib1915-lib1915.Po ./$(DEPDIR)/lib1915-testutil.Po \
+ ./$(DEPDIR)/lib1916-first.Po ./$(DEPDIR)/lib1916-lib1916.Po \
+ ./$(DEPDIR)/lib1917-first.Po ./$(DEPDIR)/lib1917-lib1916.Po \
+ ./$(DEPDIR)/lib1918-first.Po ./$(DEPDIR)/lib1918-lib1918.Po \
+ ./$(DEPDIR)/lib1919-first.Po ./$(DEPDIR)/lib1919-lib1919.Po \
+ ./$(DEPDIR)/lib1933-first.Po ./$(DEPDIR)/lib1933-lib1933.Po \
+ ./$(DEPDIR)/lib1933-testutil.Po ./$(DEPDIR)/lib1934-first.Po \
+ ./$(DEPDIR)/lib1934-lib1934.Po ./$(DEPDIR)/lib1934-testutil.Po \
+ ./$(DEPDIR)/lib1935-first.Po ./$(DEPDIR)/lib1935-lib1935.Po \
+ ./$(DEPDIR)/lib1935-testutil.Po ./$(DEPDIR)/lib1936-first.Po \
+ ./$(DEPDIR)/lib1936-lib1936.Po ./$(DEPDIR)/lib1936-testutil.Po \
+ ./$(DEPDIR)/lib1937-first.Po ./$(DEPDIR)/lib1937-lib1937.Po \
+ ./$(DEPDIR)/lib1938-first.Po ./$(DEPDIR)/lib1938-lib1938.Po \
+ ./$(DEPDIR)/lib1939-first.Po ./$(DEPDIR)/lib1939-lib1939.Po \
+ ./$(DEPDIR)/lib1940-first.Po ./$(DEPDIR)/lib1940-lib1940.Po \
+ ./$(DEPDIR)/lib1945-first.Po ./$(DEPDIR)/lib1945-lib1945.Po \
+ ./$(DEPDIR)/lib1946-first.Po ./$(DEPDIR)/lib1946-lib1940.Po \
+ ./$(DEPDIR)/lib1947-first.Po ./$(DEPDIR)/lib1947-lib1947.Po \
+ ./$(DEPDIR)/lib1948-first.Po ./$(DEPDIR)/lib1948-lib1948.Po \
+ ./$(DEPDIR)/lib1955-first.Po ./$(DEPDIR)/lib1955-lib1955.Po \
+ ./$(DEPDIR)/lib1955-testutil.Po ./$(DEPDIR)/lib2301.Po \
+ ./$(DEPDIR)/lib2302.Po ./$(DEPDIR)/lib3010-first.Po \
./$(DEPDIR)/lib3010-lib3010.Po ./$(DEPDIR)/lib3010-testutil.Po \
./$(DEPDIR)/lib3025-first.Po ./$(DEPDIR)/lib3025-lib3025.Po \
- ./$(DEPDIR)/lib3025-testutil.Po ./$(DEPDIR)/lib500-first.Po \
+ ./$(DEPDIR)/lib3025-testutil.Po ./$(DEPDIR)/lib3026-first.Po \
+ ./$(DEPDIR)/lib3026-lib3026.Po ./$(DEPDIR)/lib3026-testutil.Po \
+ ./$(DEPDIR)/lib3027-first.Po ./$(DEPDIR)/lib3027-lib3027.Po \
+ ./$(DEPDIR)/lib3027-testutil.Po ./$(DEPDIR)/lib500-first.Po \
./$(DEPDIR)/lib500-lib500.Po ./$(DEPDIR)/lib500-testtrace.Po \
./$(DEPDIR)/lib500-testutil.Po ./$(DEPDIR)/lib501-first.Po \
./$(DEPDIR)/lib501-lib501.Po ./$(DEPDIR)/lib502-first.Po \
@@ -1820,85 +2282,25 @@ SOURCES = $(libhostname_la_SOURCES) $(libstubgss_la_SOURCES) \
$(lib1533_SOURCES) $(lib1534_SOURCES) $(lib1535_SOURCES) \
$(lib1536_SOURCES) $(lib1537_SOURCES) $(lib1538_SOURCES) \
$(lib1539_SOURCES) $(lib1540_SOURCES) $(lib1542_SOURCES) \
- $(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
- $(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
- $(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
- $(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1564_SOURCES) \
- $(lib1565_SOURCES) $(lib1567_SOURCES) $(lib1568_SOURCES) \
- $(lib1569_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \
- $(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \
- $(lib1905_SOURCES) $(lib1906_SOURCES) $(lib1907_SOURCES) \
- $(lib1908_SOURCES) $(lib1910_SOURCES) $(lib1911_SOURCES) \
- $(lib1912_SOURCES) $(lib1913_SOURCES) $(lib1915_SOURCES) \
- $(lib1916_SOURCES) $(lib1917_SOURCES) $(lib1918_SOURCES) \
- $(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \
- $(lib1936_SOURCES) $(lib1937_SOURCES) $(lib1938_SOURCES) \
- $(lib1939_SOURCES) $(lib3010_SOURCES) $(lib3025_SOURCES) \
- $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
- $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
- $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
- $(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
- $(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
- $(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
- $(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
- $(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
- $(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
- $(lib529_SOURCES) $(lib530_SOURCES) $(lib532_SOURCES) \
- $(lib533_SOURCES) $(lib537_SOURCES) $(lib539_SOURCES) \
- $(lib540_SOURCES) $(lib541_SOURCES) $(lib542_SOURCES) \
- $(lib543_SOURCES) $(lib544_SOURCES) $(lib545_SOURCES) \
- $(lib547_SOURCES) $(lib548_SOURCES) $(lib549_SOURCES) \
- $(lib552_SOURCES) $(lib553_SOURCES) $(lib554_SOURCES) \
- $(lib555_SOURCES) $(lib556_SOURCES) $(lib557_SOURCES) \
- $(lib558_SOURCES) $(lib559_SOURCES) $(lib560_SOURCES) \
- $(lib562_SOURCES) $(lib564_SOURCES) $(lib565_SOURCES) \
- $(lib566_SOURCES) $(lib567_SOURCES) $(lib568_SOURCES) \
- $(lib569_SOURCES) $(lib570_SOURCES) $(lib571_SOURCES) \
- $(lib572_SOURCES) $(lib573_SOURCES) $(lib574_SOURCES) \
- $(lib575_SOURCES) $(lib576_SOURCES) $(lib578_SOURCES) \
- $(lib579_SOURCES) $(lib582_SOURCES) $(lib583_SOURCES) \
- $(lib584_SOURCES) $(lib585_SOURCES) $(lib586_SOURCES) \
- $(lib587_SOURCES) $(lib589_SOURCES) $(lib590_SOURCES) \
- $(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \
- $(lib599_SOURCES) $(lib643_SOURCES) $(lib645_SOURCES) \
- $(lib650_SOURCES) $(lib651_SOURCES) $(lib652_SOURCES) \
- $(lib653_SOURCES) $(lib654_SOURCES) $(lib655_SOURCES) \
- $(lib658_SOURCES) $(lib659_SOURCES) $(lib661_SOURCES) \
- $(lib666_SOURCES) $(lib667_SOURCES) $(lib668_SOURCES) \
- $(lib670_SOURCES) $(lib671_SOURCES) $(lib672_SOURCES) \
- $(lib673_SOURCES) $(lib674_SOURCES) $(lib676_SOURCES) \
- $(lib677_SOURCES) $(lib678_SOURCES) $(libauthretry_SOURCES) \
- $(libntlmconnect_SOURCES) $(libprereq_SOURCES)
-DIST_SOURCES = $(libhostname_la_SOURCES) \
- $(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
- $(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
- $(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
- $(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
- $(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
- $(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
- $(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
- $(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
- $(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
- $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
- $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
- $(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
- $(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
- $(lib1538_SOURCES) $(lib1539_SOURCES) $(lib1540_SOURCES) \
- $(lib1542_SOURCES) $(lib1550_SOURCES) $(lib1551_SOURCES) \
+ $(lib1543_SOURCES) $(lib1550_SOURCES) $(lib1551_SOURCES) \
$(lib1552_SOURCES) $(lib1553_SOURCES) $(lib1554_SOURCES) \
$(lib1555_SOURCES) $(lib1556_SOURCES) $(lib1557_SOURCES) \
$(lib1558_SOURCES) $(lib1559_SOURCES) $(lib1560_SOURCES) \
$(lib1564_SOURCES) $(lib1565_SOURCES) $(lib1567_SOURCES) \
$(lib1568_SOURCES) $(lib1569_SOURCES) $(lib1591_SOURCES) \
$(lib1592_SOURCES) $(lib1593_SOURCES) $(lib1594_SOURCES) \
- $(lib1596_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \
- $(lib1907_SOURCES) $(lib1908_SOURCES) $(lib1910_SOURCES) \
- $(lib1911_SOURCES) $(lib1912_SOURCES) $(lib1913_SOURCES) \
- $(lib1915_SOURCES) $(lib1916_SOURCES) $(lib1917_SOURCES) \
- $(lib1918_SOURCES) $(lib1933_SOURCES) $(lib1934_SOURCES) \
- $(lib1935_SOURCES) $(lib1936_SOURCES) $(lib1937_SOURCES) \
- $(lib1938_SOURCES) $(lib1939_SOURCES) $(lib3010_SOURCES) \
- $(lib3025_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
+ $(lib1596_SOURCES) $(lib1597_SOURCES) $(lib1905_SOURCES) \
+ $(lib1906_SOURCES) $(lib1907_SOURCES) $(lib1908_SOURCES) \
+ $(lib1910_SOURCES) $(lib1911_SOURCES) $(lib1912_SOURCES) \
+ $(lib1913_SOURCES) $(lib1915_SOURCES) $(lib1916_SOURCES) \
+ $(lib1917_SOURCES) $(lib1918_SOURCES) $(lib1919_SOURCES) \
+ $(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \
+ $(lib1936_SOURCES) $(lib1937_SOURCES) $(lib1938_SOURCES) \
+ $(lib1939_SOURCES) $(lib1940_SOURCES) $(lib1945_SOURCES) \
+ $(lib1946_SOURCES) $(lib1947_SOURCES) $(lib1948_SOURCES) \
+ $(lib1955_SOURCES) $(lib2301_SOURCES) $(lib2302_SOURCES) \
+ $(lib3010_SOURCES) $(lib3025_SOURCES) $(lib3026_SOURCES) \
+ $(lib3027_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
$(lib502_SOURCES) $(lib503_SOURCES) $(lib504_SOURCES) \
$(lib505_SOURCES) $(lib506_SOURCES) $(lib507_SOURCES) \
$(lib508_SOURCES) $(lib509_SOURCES) $(lib510_SOURCES) \
@@ -1934,6 +2336,75 @@ DIST_SOURCES = $(libhostname_la_SOURCES) \
$(lib676_SOURCES) $(lib677_SOURCES) $(lib678_SOURCES) \
$(libauthretry_SOURCES) $(libntlmconnect_SOURCES) \
$(libprereq_SOURCES)
+DIST_SOURCES = $(libhostname_la_SOURCES) \
+ $(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
+ $(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
+ $(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
+ $(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
+ $(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
+ $(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
+ $(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
+ $(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
+ $(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
+ $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
+ $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
+ $(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
+ $(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
+ $(lib1538_SOURCES) $(lib1539_SOURCES) $(lib1540_SOURCES) \
+ $(lib1542_SOURCES) $(lib1543_SOURCES) $(lib1550_SOURCES) \
+ $(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \
+ $(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
+ $(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \
+ $(lib1560_SOURCES) $(lib1564_SOURCES) $(lib1565_SOURCES) \
+ $(lib1567_SOURCES) $(lib1568_SOURCES) $(lib1569_SOURCES) \
+ $(lib1591_SOURCES) $(lib1592_SOURCES) $(lib1593_SOURCES) \
+ $(lib1594_SOURCES) $(lib1596_SOURCES) $(lib1597_SOURCES) \
+ $(lib1905_SOURCES) $(lib1906_SOURCES) $(lib1907_SOURCES) \
+ $(lib1908_SOURCES) $(lib1910_SOURCES) $(lib1911_SOURCES) \
+ $(lib1912_SOURCES) $(lib1913_SOURCES) $(lib1915_SOURCES) \
+ $(lib1916_SOURCES) $(lib1917_SOURCES) $(lib1918_SOURCES) \
+ $(lib1919_SOURCES) $(lib1933_SOURCES) $(lib1934_SOURCES) \
+ $(lib1935_SOURCES) $(lib1936_SOURCES) $(lib1937_SOURCES) \
+ $(lib1938_SOURCES) $(lib1939_SOURCES) $(lib1940_SOURCES) \
+ $(lib1945_SOURCES) $(lib1946_SOURCES) $(lib1947_SOURCES) \
+ $(lib1948_SOURCES) $(lib1955_SOURCES) $(lib2301_SOURCES) \
+ $(lib2302_SOURCES) $(lib3010_SOURCES) $(lib3025_SOURCES) \
+ $(lib3026_SOURCES) $(lib3027_SOURCES) $(lib500_SOURCES) \
+ $(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
+ $(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
+ $(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
+ $(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
+ $(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
+ $(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
+ $(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
+ $(lib523_SOURCES) $(lib524_SOURCES) $(lib525_SOURCES) \
+ $(lib526_SOURCES) $(lib527_SOURCES) $(lib529_SOURCES) \
+ $(lib530_SOURCES) $(lib532_SOURCES) $(lib533_SOURCES) \
+ $(lib537_SOURCES) $(lib539_SOURCES) $(lib540_SOURCES) \
+ $(lib541_SOURCES) $(lib542_SOURCES) $(lib543_SOURCES) \
+ $(lib544_SOURCES) $(lib545_SOURCES) $(lib547_SOURCES) \
+ $(lib548_SOURCES) $(lib549_SOURCES) $(lib552_SOURCES) \
+ $(lib553_SOURCES) $(lib554_SOURCES) $(lib555_SOURCES) \
+ $(lib556_SOURCES) $(lib557_SOURCES) $(lib558_SOURCES) \
+ $(lib559_SOURCES) $(lib560_SOURCES) $(lib562_SOURCES) \
+ $(lib564_SOURCES) $(lib565_SOURCES) $(lib566_SOURCES) \
+ $(lib567_SOURCES) $(lib568_SOURCES) $(lib569_SOURCES) \
+ $(lib570_SOURCES) $(lib571_SOURCES) $(lib572_SOURCES) \
+ $(lib573_SOURCES) $(lib574_SOURCES) $(lib575_SOURCES) \
+ $(lib576_SOURCES) $(lib578_SOURCES) $(lib579_SOURCES) \
+ $(lib582_SOURCES) $(lib583_SOURCES) $(lib584_SOURCES) \
+ $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
+ $(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \
+ $(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \
+ $(lib643_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \
+ $(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \
+ $(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
+ $(lib659_SOURCES) $(lib661_SOURCES) $(lib666_SOURCES) \
+ $(lib667_SOURCES) $(lib668_SOURCES) $(lib670_SOURCES) \
+ $(lib671_SOURCES) $(lib672_SOURCES) $(lib673_SOURCES) \
+ $(lib674_SOURCES) $(lib676_SOURCES) $(lib677_SOURCES) \
+ $(lib678_SOURCES) $(libauthretry_SOURCES) \
+ $(libntlmconnect_SOURCES) $(libprereq_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -2002,6 +2473,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -2019,6 +2491,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -2078,6 +2551,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -2096,12 +2570,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -2168,7 +2643,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -2182,7 +2656,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -2195,11 +2669,10 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
-@USE_EMBEDDED_ARES_FALSE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_FALSE@ -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_FALSE@ -I$(top_srcdir)/lib $(am__append_1)
# 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
@@ -2209,13 +2682,8 @@ AUTOMAKE_OPTIONS = foreign nostdinc
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" 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
-@USE_EMBEDDED_ARES_TRUE@AM_CPPFLAGS = -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 $(am__append_1)
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
+ -I$(top_srcdir)/lib $(am__append_1)
EXTRA_DIST = test307.pl test610.pl test613.pl test1013.pl test1022.pl \
Makefile.inc notexists.pl CMakeLists.txt mk-lib1521.pl .checksrc
@@ -2235,7 +2703,7 @@ LDADD = $(SUPPORTFILES_LIBS)
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -2248,6 +2716,8 @@ LDADD = $(SUPPORTFILES_LIBS)
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# files used only in some libcurl test programs
TESTUTIL = testutil.c testutil.h
@@ -2262,9 +2732,9 @@ WARNLESS = ../../lib/warnless.c ../../lib/warnless.h
MULTIBYTE = ../../lib/curl_multibyte.c ../../lib/curl_multibyte.h
# these files are used in every single test program below
-SUPPORTFILES = first.c test.h
+SUPPORTFILES = ../../lib/timediff.c ../../lib/timediff.h first.c test.h
chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
- ../../lib/curl_ctype.c ../../lib/dynbuf.c ../../lib/strdup.c
+ ../../lib/dynbuf.c ../../lib/strdup.c
chkdecimalpoint_LDADD =
chkdecimalpoint_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB \
@@ -2633,6 +3103,8 @@ lib1540_CPPFLAGS = $(AM_CPPFLAGS)
lib1542_SOURCES = lib1542.c $(SUPPORTFILES) $(TESTUTIL) $(TSTTRACE) $(WARNLESS)
lib1542_LDADD = $(TESTUTIL_LIBS)
lib1542_CPPFLAGS = $(AM_CPPFLAGS)
+lib1543_SOURCES = lib1518.c $(SUPPORTFILES)
+lib1543_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1543
lib1550_SOURCES = lib1550.c $(SUPPORTFILES)
lib1550_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1517
lib1551_SOURCES = lib1551.c $(SUPPORTFILES)
@@ -2685,6 +3157,8 @@ lib1594_LDADD = $(TESTUTIL_LIBS)
lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1596_LDADD = $(TESTUTIL_LIBS)
lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596
+lib1597_SOURCES = lib1597.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1597_LDADD = $(TESTUTIL_LIBS)
lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)
@@ -2718,6 +3192,8 @@ lib1917_SOURCES = lib1916.c $(SUPPORTFILES) $(WARNLESS)
lib1917_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1917
lib1918_SOURCES = lib1918.c $(SUPPORTFILES) $(WARNLESS)
lib1918_CPPFLAGS = $(AM_CPPFLAGS)
+lib1919_SOURCES = lib1919.c $(SUPPORTFILES) $(WARNLESS)
+lib1919_CPPFLAGS = $(AM_CPPFLAGS)
lib1933_SOURCES = lib1933.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1933_LDADD = $(TESTUTIL_LIBS)
lib1933_CPPFLAGS = $(AM_CPPFLAGS)
@@ -2739,12 +3215,40 @@ lib1938_CPPFLAGS = $(AM_CPPFLAGS)
lib1939_SOURCES = lib1939.c $(SUPPORTFILES)
lib1939_LDADD = $(TESTUTIL_LIBS)
lib1939_CPPFLAGS = $(AM_CPPFLAGS)
+lib1940_SOURCES = lib1940.c $(SUPPORTFILES)
+lib1940_LDADD = $(TESTUTIL_LIBS)
+lib1940_CPPFLAGS = $(AM_CPPFLAGS)
+lib1945_SOURCES = lib1945.c $(SUPPORTFILES)
+lib1945_LDADD = $(TESTUTIL_LIBS)
+lib1945_CPPFLAGS = $(AM_CPPFLAGS)
+lib1946_SOURCES = lib1940.c $(SUPPORTFILES)
+lib1946_LDADD = $(TESTUTIL_LIBS)
+lib1946_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1946
+lib1947_SOURCES = lib1947.c $(SUPPORTFILES)
+lib1947_LDADD = $(TESTUTIL_LIBS)
+lib1947_CPPFLAGS = $(AM_CPPFLAGS)
+lib1948_SOURCES = lib1948.c $(SUPPORTFILES)
+lib1948_LDADD = $(TESTUTIL_LIBS)
+lib1948_CPPFLAGS = $(AM_CPPFLAGS)
+lib1955_SOURCES = lib1955.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1955_LDADD = $(TESTUTIL_LIBS)
+lib1955_CPPFLAGS = $(AM_CPPFLAGS)
+lib2301_SOURCES = lib2301.c $(SUPPORTFILES)
+lib2301_LDADD = $(TESTUTIL_LIBS)
+lib2302_SOURCES = lib2302.c $(SUPPORTFILES)
+lib2302_LDADD = $(TESTUTIL_LIBS)
lib3010_SOURCES = lib3010.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib3010_LDADD = $(TESTUTIL_LIBS)
lib3010_CPPFLAGS = $(AM_CPPFLAGS)
lib3025_SOURCES = lib3025.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib3025_LDADD = $(TESTUTIL_LIBS)
lib3025_CPPFLAGS = $(AM_CPPFLAGS)
+lib3026_SOURCES = lib3026.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib3026_LDADD = $(TESTUTIL_LIBS)
+lib3026_CPPFLAGS = $(AM_CPPFLAGS)
+lib3027_SOURCES = lib3027.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib3027_LDADD = $(TESTUTIL_LIBS)
+lib3027_CPPFLAGS = $(AM_CPPFLAGS)
@BUILD_LIBHOSTNAME_FALSE@noinst_LTLIBRARIES = $(am__append_7)
# Makefile.inc provides the source defines (TESTUTIL, SUPPORTFILES,
@@ -2845,8 +3349,6 @@ libstubgss.la: $(libstubgss_la_OBJECTS) $(libstubgss_la_DEPENDENCIES) $(EXTRA_li
@: > ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/chkdecimalpoint-mprintf.$(OBJEXT): \
../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/chkdecimalpoint-curl_ctype.$(OBJEXT): \
- ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/chkdecimalpoint-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/chkdecimalpoint-strdup.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -2861,270 +3363,374 @@ chkdecimalpoint$(EXEEXT): $(chkdecimalpoint_OBJECTS) $(chkdecimalpoint_DEPENDENC
chkhostname$(EXEEXT): $(chkhostname_OBJECTS) $(chkhostname_DEPENDENCIES) $(EXTRA_chkhostname_DEPENDENCIES)
@rm -f chkhostname$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chkhostname_OBJECTS) $(chkhostname_LDADD) $(LIBS)
+../../lib/lib1156-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1156-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1156$(EXEEXT): $(lib1156_OBJECTS) $(lib1156_DEPENDENCIES) $(EXTRA_lib1156_DEPENDENCIES)
@rm -f lib1156$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1156_OBJECTS) $(lib1156_LDADD) $(LIBS)
+../../lib/lib1500-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1500$(EXEEXT): $(lib1500_OBJECTS) $(lib1500_DEPENDENCIES) $(EXTRA_lib1500_DEPENDENCIES)
@rm -f lib1500$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1500_OBJECTS) $(lib1500_LDADD) $(LIBS)
+../../lib/lib1501-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1502-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1503-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1504-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1505-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1506-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1507-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1508-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1509-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1510-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1511-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1512-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1513-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib1517-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1517$(EXEEXT): $(lib1517_OBJECTS) $(lib1517_DEPENDENCIES) $(EXTRA_lib1517_DEPENDENCIES)
@rm -f lib1517$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1517_OBJECTS) $(lib1517_LDADD) $(LIBS)
+../../lib/lib1518-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1518$(EXEEXT): $(lib1518_OBJECTS) $(lib1518_DEPENDENCIES) $(EXTRA_lib1518_DEPENDENCIES)
@rm -f lib1518$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1518_OBJECTS) $(lib1518_LDADD) $(LIBS)
+../../lib/lib1520-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1520$(EXEEXT): $(lib1520_OBJECTS) $(lib1520_DEPENDENCIES) $(EXTRA_lib1520_DEPENDENCIES)
@rm -f lib1520$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1520_OBJECTS) $(lib1520_LDADD) $(LIBS)
+../../lib/lib1521-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1521$(EXEEXT): $(lib1521_OBJECTS) $(lib1521_DEPENDENCIES) $(EXTRA_lib1521_DEPENDENCIES)
@rm -f lib1521$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1521_OBJECTS) $(lib1521_LDADD) $(LIBS)
+../../lib/lib1522-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1522$(EXEEXT): $(lib1522_OBJECTS) $(lib1522_DEPENDENCIES) $(EXTRA_lib1522_DEPENDENCIES)
@rm -f lib1522$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1522_OBJECTS) $(lib1522_LDADD) $(LIBS)
+../../lib/lib1523-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1523$(EXEEXT): $(lib1523_OBJECTS) $(lib1523_DEPENDENCIES) $(EXTRA_lib1523_DEPENDENCIES)
@rm -f lib1523$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1523_OBJECTS) $(lib1523_LDADD) $(LIBS)
+../../lib/lib1525-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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/lib1530-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1530-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1530$(EXEEXT): $(lib1530_OBJECTS) $(lib1530_DEPENDENCIES) $(EXTRA_lib1530_DEPENDENCIES)
@rm -f lib1530$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1530_OBJECTS) $(lib1530_LDADD) $(LIBS)
+../../lib/lib1531-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1531-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1531$(EXEEXT): $(lib1531_OBJECTS) $(lib1531_DEPENDENCIES) $(EXTRA_lib1531_DEPENDENCIES)
@rm -f lib1531$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1531_OBJECTS) $(lib1531_LDADD) $(LIBS)
+../../lib/lib1532-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1532-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1532$(EXEEXT): $(lib1532_OBJECTS) $(lib1532_DEPENDENCIES) $(EXTRA_lib1532_DEPENDENCIES)
@rm -f lib1532$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1532_OBJECTS) $(lib1532_LDADD) $(LIBS)
+../../lib/lib1533-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1533-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1533$(EXEEXT): $(lib1533_OBJECTS) $(lib1533_DEPENDENCIES) $(EXTRA_lib1533_DEPENDENCIES)
@rm -f lib1533$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1533_OBJECTS) $(lib1533_LDADD) $(LIBS)
+../../lib/lib1534-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1534-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1534$(EXEEXT): $(lib1534_OBJECTS) $(lib1534_DEPENDENCIES) $(EXTRA_lib1534_DEPENDENCIES)
@rm -f lib1534$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1534_OBJECTS) $(lib1534_LDADD) $(LIBS)
+../../lib/lib1535-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1535-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1535$(EXEEXT): $(lib1535_OBJECTS) $(lib1535_DEPENDENCIES) $(EXTRA_lib1535_DEPENDENCIES)
@rm -f lib1535$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1535_OBJECTS) $(lib1535_LDADD) $(LIBS)
+../../lib/lib1536-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1536-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1536$(EXEEXT): $(lib1536_OBJECTS) $(lib1536_DEPENDENCIES) $(EXTRA_lib1536_DEPENDENCIES)
@rm -f lib1536$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1536_OBJECTS) $(lib1536_LDADD) $(LIBS)
+../../lib/lib1537-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1537-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1537$(EXEEXT): $(lib1537_OBJECTS) $(lib1537_DEPENDENCIES) $(EXTRA_lib1537_DEPENDENCIES)
@rm -f lib1537$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1537_OBJECTS) $(lib1537_LDADD) $(LIBS)
+../../lib/lib1538-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1538-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1538$(EXEEXT): $(lib1538_OBJECTS) $(lib1538_DEPENDENCIES) $(EXTRA_lib1538_DEPENDENCIES)
@rm -f lib1538$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1538_OBJECTS) $(lib1538_LDADD) $(LIBS)
+../../lib/lib1539-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1539-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1539$(EXEEXT): $(lib1539_OBJECTS) $(lib1539_DEPENDENCIES) $(EXTRA_lib1539_DEPENDENCIES)
@rm -f lib1539$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1539_OBJECTS) $(lib1539_LDADD) $(LIBS)
+../../lib/lib1540-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1540-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1540$(EXEEXT): $(lib1540_OBJECTS) $(lib1540_DEPENDENCIES) $(EXTRA_lib1540_DEPENDENCIES)
@rm -f lib1540$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1540_OBJECTS) $(lib1540_LDADD) $(LIBS)
+../../lib/lib1542-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1542-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1542$(EXEEXT): $(lib1542_OBJECTS) $(lib1542_DEPENDENCIES) $(EXTRA_lib1542_DEPENDENCIES)
@rm -f lib1542$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1542_OBJECTS) $(lib1542_LDADD) $(LIBS)
+../../lib/lib1543-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1543$(EXEEXT): $(lib1543_OBJECTS) $(lib1543_DEPENDENCIES) $(EXTRA_lib1543_DEPENDENCIES)
+ @rm -f lib1543$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1543_OBJECTS) $(lib1543_LDADD) $(LIBS)
+../../lib/lib1550-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1550$(EXEEXT): $(lib1550_OBJECTS) $(lib1550_DEPENDENCIES) $(EXTRA_lib1550_DEPENDENCIES)
@rm -f lib1550$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1550_OBJECTS) $(lib1550_LDADD) $(LIBS)
+../../lib/lib1551-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1551$(EXEEXT): $(lib1551_OBJECTS) $(lib1551_DEPENDENCIES) $(EXTRA_lib1551_DEPENDENCIES)
@rm -f lib1551$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1551_OBJECTS) $(lib1551_LDADD) $(LIBS)
+../../lib/lib1552-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1552$(EXEEXT): $(lib1552_OBJECTS) $(lib1552_DEPENDENCIES) $(EXTRA_lib1552_DEPENDENCIES)
@rm -f lib1552$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1552_OBJECTS) $(lib1552_LDADD) $(LIBS)
+../../lib/lib1553-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1553$(EXEEXT): $(lib1553_OBJECTS) $(lib1553_DEPENDENCIES) $(EXTRA_lib1553_DEPENDENCIES)
@rm -f lib1553$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1553_OBJECTS) $(lib1553_LDADD) $(LIBS)
+../../lib/lib1554-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1554$(EXEEXT): $(lib1554_OBJECTS) $(lib1554_DEPENDENCIES) $(EXTRA_lib1554_DEPENDENCIES)
@rm -f lib1554$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1554_OBJECTS) $(lib1554_LDADD) $(LIBS)
+../../lib/lib1555-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1555-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1555$(EXEEXT): $(lib1555_OBJECTS) $(lib1555_DEPENDENCIES) $(EXTRA_lib1555_DEPENDENCIES)
@rm -f lib1555$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1555_OBJECTS) $(lib1555_LDADD) $(LIBS)
+../../lib/lib1556-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1556-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1556$(EXEEXT): $(lib1556_OBJECTS) $(lib1556_DEPENDENCIES) $(EXTRA_lib1556_DEPENDENCIES)
@rm -f lib1556$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1556_OBJECTS) $(lib1556_LDADD) $(LIBS)
+../../lib/lib1557-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1557-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1557$(EXEEXT): $(lib1557_OBJECTS) $(lib1557_DEPENDENCIES) $(EXTRA_lib1557_DEPENDENCIES)
@rm -f lib1557$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1557_OBJECTS) $(lib1557_LDADD) $(LIBS)
+../../lib/timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -3139,36 +3745,50 @@ lib1559$(EXEEXT): $(lib1559_OBJECTS) $(lib1559_DEPENDENCIES) $(EXTRA_lib1559_DEP
lib1560$(EXEEXT): $(lib1560_OBJECTS) $(lib1560_DEPENDENCIES) $(EXTRA_lib1560_DEPENDENCIES)
@rm -f lib1560$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1560_OBJECTS) $(lib1560_LDADD) $(LIBS)
+../../lib/lib1564-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1564-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1564$(EXEEXT): $(lib1564_OBJECTS) $(lib1564_DEPENDENCIES) $(EXTRA_lib1564_DEPENDENCIES)
@rm -f lib1564$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1564_OBJECTS) $(lib1564_LDADD) $(LIBS)
+../../lib/lib1565-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1565-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1565$(EXEEXT): $(lib1565_OBJECTS) $(lib1565_DEPENDENCIES) $(EXTRA_lib1565_DEPENDENCIES)
@rm -f lib1565$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1565_OBJECTS) $(lib1565_LDADD) $(LIBS)
+../../lib/lib1567-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1567$(EXEEXT): $(lib1567_OBJECTS) $(lib1567_DEPENDENCIES) $(EXTRA_lib1567_DEPENDENCIES)
@rm -f lib1567$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1567_OBJECTS) $(lib1567_LDADD) $(LIBS)
+../../lib/lib1568-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1568$(EXEEXT): $(lib1568_OBJECTS) $(lib1568_DEPENDENCIES) $(EXTRA_lib1568_DEPENDENCIES)
@rm -f lib1568$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1568_OBJECTS) $(lib1568_LDADD) $(LIBS)
+../../lib/lib1569-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1569$(EXEEXT): $(lib1569_OBJECTS) $(lib1569_DEPENDENCIES) $(EXTRA_lib1569_DEPENDENCIES)
@rm -f lib1569$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1569_OBJECTS) $(lib1569_LDADD) $(LIBS)
+../../lib/lib1591-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1591$(EXEEXT): $(lib1591_OBJECTS) $(lib1591_DEPENDENCIES) $(EXTRA_lib1591_DEPENDENCIES)
@rm -f lib1591$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1591_OBJECTS) $(lib1591_LDADD) $(LIBS)
+../../lib/lib1592-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1592-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -3183,216 +3803,372 @@ lib1593$(EXEEXT): $(lib1593_OBJECTS) $(lib1593_DEPENDENCIES) $(EXTRA_lib1593_DEP
lib1594$(EXEEXT): $(lib1594_OBJECTS) $(lib1594_DEPENDENCIES) $(EXTRA_lib1594_DEPENDENCIES)
@rm -f lib1594$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1594_OBJECTS) $(lib1594_LDADD) $(LIBS)
+../../lib/lib1596-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1596-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1596$(EXEEXT): $(lib1596_OBJECTS) $(lib1596_DEPENDENCIES) $(EXTRA_lib1596_DEPENDENCIES)
@rm -f lib1596$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1596_OBJECTS) $(lib1596_LDADD) $(LIBS)
+
+lib1597$(EXEEXT): $(lib1597_OBJECTS) $(lib1597_DEPENDENCIES) $(EXTRA_lib1597_DEPENDENCIES)
+ @rm -f lib1597$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1597_OBJECTS) $(lib1597_LDADD) $(LIBS)
+../../lib/lib1905-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1905-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1905$(EXEEXT): $(lib1905_OBJECTS) $(lib1905_DEPENDENCIES) $(EXTRA_lib1905_DEPENDENCIES)
@rm -f lib1905$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1905_OBJECTS) $(lib1905_LDADD) $(LIBS)
+../../lib/lib1906-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1906-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1906$(EXEEXT): $(lib1906_OBJECTS) $(lib1906_DEPENDENCIES) $(EXTRA_lib1906_DEPENDENCIES)
@rm -f lib1906$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1906_OBJECTS) $(lib1906_LDADD) $(LIBS)
+../../lib/lib1907-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1907-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1907$(EXEEXT): $(lib1907_OBJECTS) $(lib1907_DEPENDENCIES) $(EXTRA_lib1907_DEPENDENCIES)
@rm -f lib1907$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1907_OBJECTS) $(lib1907_LDADD) $(LIBS)
+../../lib/lib1908-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1908-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1908$(EXEEXT): $(lib1908_OBJECTS) $(lib1908_DEPENDENCIES) $(EXTRA_lib1908_DEPENDENCIES)
@rm -f lib1908$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1908_OBJECTS) $(lib1908_LDADD) $(LIBS)
+../../lib/lib1910-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1910-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1910$(EXEEXT): $(lib1910_OBJECTS) $(lib1910_DEPENDENCIES) $(EXTRA_lib1910_DEPENDENCIES)
@rm -f lib1910$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1910_OBJECTS) $(lib1910_LDADD) $(LIBS)
+../../lib/lib1911-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1911-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1911$(EXEEXT): $(lib1911_OBJECTS) $(lib1911_DEPENDENCIES) $(EXTRA_lib1911_DEPENDENCIES)
@rm -f lib1911$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1911_OBJECTS) $(lib1911_LDADD) $(LIBS)
+../../lib/lib1912-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1912-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1912$(EXEEXT): $(lib1912_OBJECTS) $(lib1912_DEPENDENCIES) $(EXTRA_lib1912_DEPENDENCIES)
@rm -f lib1912$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1912_OBJECTS) $(lib1912_LDADD) $(LIBS)
+../../lib/lib1913-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1913-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1913$(EXEEXT): $(lib1913_OBJECTS) $(lib1913_DEPENDENCIES) $(EXTRA_lib1913_DEPENDENCIES)
@rm -f lib1913$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1913_OBJECTS) $(lib1913_LDADD) $(LIBS)
+../../lib/lib1915-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1915-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1915$(EXEEXT): $(lib1915_OBJECTS) $(lib1915_DEPENDENCIES) $(EXTRA_lib1915_DEPENDENCIES)
@rm -f lib1915$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1915_OBJECTS) $(lib1915_LDADD) $(LIBS)
+../../lib/lib1916-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1916-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1916$(EXEEXT): $(lib1916_OBJECTS) $(lib1916_DEPENDENCIES) $(EXTRA_lib1916_DEPENDENCIES)
@rm -f lib1916$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1916_OBJECTS) $(lib1916_LDADD) $(LIBS)
+../../lib/lib1917-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1917-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1917$(EXEEXT): $(lib1917_OBJECTS) $(lib1917_DEPENDENCIES) $(EXTRA_lib1917_DEPENDENCIES)
@rm -f lib1917$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1917_OBJECTS) $(lib1917_LDADD) $(LIBS)
+../../lib/lib1918-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1918-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1918$(EXEEXT): $(lib1918_OBJECTS) $(lib1918_DEPENDENCIES) $(EXTRA_lib1918_DEPENDENCIES)
@rm -f lib1918$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1918_OBJECTS) $(lib1918_LDADD) $(LIBS)
+../../lib/lib1919-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/lib1919-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1919$(EXEEXT): $(lib1919_OBJECTS) $(lib1919_DEPENDENCIES) $(EXTRA_lib1919_DEPENDENCIES)
+ @rm -f lib1919$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1919_OBJECTS) $(lib1919_LDADD) $(LIBS)
+../../lib/lib1933-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1933-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1933$(EXEEXT): $(lib1933_OBJECTS) $(lib1933_DEPENDENCIES) $(EXTRA_lib1933_DEPENDENCIES)
@rm -f lib1933$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1933_OBJECTS) $(lib1933_LDADD) $(LIBS)
+../../lib/lib1934-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1934-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1934$(EXEEXT): $(lib1934_OBJECTS) $(lib1934_DEPENDENCIES) $(EXTRA_lib1934_DEPENDENCIES)
@rm -f lib1934$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1934_OBJECTS) $(lib1934_LDADD) $(LIBS)
+../../lib/lib1935-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1935-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1935$(EXEEXT): $(lib1935_OBJECTS) $(lib1935_DEPENDENCIES) $(EXTRA_lib1935_DEPENDENCIES)
@rm -f lib1935$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1935_OBJECTS) $(lib1935_LDADD) $(LIBS)
+../../lib/lib1936-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib1936-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib1936$(EXEEXT): $(lib1936_OBJECTS) $(lib1936_DEPENDENCIES) $(EXTRA_lib1936_DEPENDENCIES)
@rm -f lib1936$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1936_OBJECTS) $(lib1936_LDADD) $(LIBS)
+../../lib/lib1937-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1937$(EXEEXT): $(lib1937_OBJECTS) $(lib1937_DEPENDENCIES) $(EXTRA_lib1937_DEPENDENCIES)
@rm -f lib1937$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1937_OBJECTS) $(lib1937_LDADD) $(LIBS)
+../../lib/lib1938-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1938$(EXEEXT): $(lib1938_OBJECTS) $(lib1938_DEPENDENCIES) $(EXTRA_lib1938_DEPENDENCIES)
@rm -f lib1938$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1938_OBJECTS) $(lib1938_LDADD) $(LIBS)
+../../lib/lib1939-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib1939$(EXEEXT): $(lib1939_OBJECTS) $(lib1939_DEPENDENCIES) $(EXTRA_lib1939_DEPENDENCIES)
@rm -f lib1939$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1939_OBJECTS) $(lib1939_LDADD) $(LIBS)
+../../lib/lib1940-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1940$(EXEEXT): $(lib1940_OBJECTS) $(lib1940_DEPENDENCIES) $(EXTRA_lib1940_DEPENDENCIES)
+ @rm -f lib1940$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1940_OBJECTS) $(lib1940_LDADD) $(LIBS)
+../../lib/lib1945-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1945$(EXEEXT): $(lib1945_OBJECTS) $(lib1945_DEPENDENCIES) $(EXTRA_lib1945_DEPENDENCIES)
+ @rm -f lib1945$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1945_OBJECTS) $(lib1945_LDADD) $(LIBS)
+../../lib/lib1946-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1946$(EXEEXT): $(lib1946_OBJECTS) $(lib1946_DEPENDENCIES) $(EXTRA_lib1946_DEPENDENCIES)
+ @rm -f lib1946$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1946_OBJECTS) $(lib1946_LDADD) $(LIBS)
+../../lib/lib1947-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1947$(EXEEXT): $(lib1947_OBJECTS) $(lib1947_DEPENDENCIES) $(EXTRA_lib1947_DEPENDENCIES)
+ @rm -f lib1947$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1947_OBJECTS) $(lib1947_LDADD) $(LIBS)
+../../lib/lib1948-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1948$(EXEEXT): $(lib1948_OBJECTS) $(lib1948_DEPENDENCIES) $(EXTRA_lib1948_DEPENDENCIES)
+ @rm -f lib1948$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1948_OBJECTS) $(lib1948_LDADD) $(LIBS)
+../../lib/lib1955-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/lib1955-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1955$(EXEEXT): $(lib1955_OBJECTS) $(lib1955_DEPENDENCIES) $(EXTRA_lib1955_DEPENDENCIES)
+ @rm -f lib1955$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1955_OBJECTS) $(lib1955_LDADD) $(LIBS)
+
+lib2301$(EXEEXT): $(lib2301_OBJECTS) $(lib2301_DEPENDENCIES) $(EXTRA_lib2301_DEPENDENCIES)
+ @rm -f lib2301$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib2301_OBJECTS) $(lib2301_LDADD) $(LIBS)
+
+lib2302$(EXEEXT): $(lib2302_OBJECTS) $(lib2302_DEPENDENCIES) $(EXTRA_lib2302_DEPENDENCIES)
+ @rm -f lib2302$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib2302_OBJECTS) $(lib2302_LDADD) $(LIBS)
+../../lib/lib3010-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib3010-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib3010$(EXEEXT): $(lib3010_OBJECTS) $(lib3010_DEPENDENCIES) $(EXTRA_lib3010_DEPENDENCIES)
@rm -f lib3010$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib3010_OBJECTS) $(lib3010_LDADD) $(LIBS)
+../../lib/lib3025-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib3025-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib3025$(EXEEXT): $(lib3025_OBJECTS) $(lib3025_DEPENDENCIES) $(EXTRA_lib3025_DEPENDENCIES)
@rm -f lib3025$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib3025_OBJECTS) $(lib3025_LDADD) $(LIBS)
+../../lib/lib3026-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/lib3026-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib3026$(EXEEXT): $(lib3026_OBJECTS) $(lib3026_DEPENDENCIES) $(EXTRA_lib3026_DEPENDENCIES)
+ @rm -f lib3026$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib3026_OBJECTS) $(lib3026_LDADD) $(LIBS)
+../../lib/lib3027-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/lib3027-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib3027$(EXEEXT): $(lib3027_OBJECTS) $(lib3027_DEPENDENCIES) $(EXTRA_lib3027_DEPENDENCIES)
+ @rm -f lib3027$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib3027_OBJECTS) $(lib3027_LDADD) $(LIBS)
+../../lib/lib500-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib500-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib500$(EXEEXT): $(lib500_OBJECTS) $(lib500_DEPENDENCIES) $(EXTRA_lib500_DEPENDENCIES)
@rm -f lib500$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib500_OBJECTS) $(lib500_LDADD) $(LIBS)
+../../lib/lib501-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib501$(EXEEXT): $(lib501_OBJECTS) $(lib501_DEPENDENCIES) $(EXTRA_lib501_DEPENDENCIES)
@rm -f lib501$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib501_OBJECTS) $(lib501_LDADD) $(LIBS)
+../../lib/lib502-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib503-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib504-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib504-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib504$(EXEEXT): $(lib504_OBJECTS) $(lib504_DEPENDENCIES) $(EXTRA_lib504_DEPENDENCIES)
@rm -f lib504$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib504_OBJECTS) $(lib504_LDADD) $(LIBS)
+../../lib/lib505-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib505-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib505$(EXEEXT): $(lib505_OBJECTS) $(lib505_DEPENDENCIES) $(EXTRA_lib505_DEPENDENCIES)
@rm -f lib505$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib505_OBJECTS) $(lib505_LDADD) $(LIBS)
+../../lib/lib506-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib506$(EXEEXT): $(lib506_OBJECTS) $(lib506_DEPENDENCIES) $(EXTRA_lib506_DEPENDENCIES)
@rm -f lib506$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib506_OBJECTS) $(lib506_LDADD) $(LIBS)
+../../lib/lib507-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib507-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib507$(EXEEXT): $(lib507_OBJECTS) $(lib507_DEPENDENCIES) $(EXTRA_lib507_DEPENDENCIES)
@rm -f lib507$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib507_OBJECTS) $(lib507_LDADD) $(LIBS)
+../../lib/lib508-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib508$(EXEEXT): $(lib508_OBJECTS) $(lib508_DEPENDENCIES) $(EXTRA_lib508_DEPENDENCIES)
@rm -f lib508$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib508_OBJECTS) $(lib508_LDADD) $(LIBS)
+../../lib/lib509-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib509$(EXEEXT): $(lib509_OBJECTS) $(lib509_DEPENDENCIES) $(EXTRA_lib509_DEPENDENCIES)
@rm -f lib509$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib509_OBJECTS) $(lib509_LDADD) $(LIBS)
+../../lib/lib510-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib510$(EXEEXT): $(lib510_OBJECTS) $(lib510_DEPENDENCIES) $(EXTRA_lib510_DEPENDENCIES)
@rm -f lib510$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib510_OBJECTS) $(lib510_LDADD) $(LIBS)
+../../lib/lib511-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib511$(EXEEXT): $(lib511_OBJECTS) $(lib511_DEPENDENCIES) $(EXTRA_lib511_DEPENDENCIES)
@rm -f lib511$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib511_OBJECTS) $(lib511_LDADD) $(LIBS)
+../../lib/lib512-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib512$(EXEEXT): $(lib512_OBJECTS) $(lib512_DEPENDENCIES) $(EXTRA_lib512_DEPENDENCIES)
@rm -f lib512$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib512_OBJECTS) $(lib512_LDADD) $(LIBS)
+../../lib/lib513-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib513$(EXEEXT): $(lib513_OBJECTS) $(lib513_DEPENDENCIES) $(EXTRA_lib513_DEPENDENCIES)
@rm -f lib513$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib513_OBJECTS) $(lib513_LDADD) $(LIBS)
+../../lib/lib514-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib514$(EXEEXT): $(lib514_OBJECTS) $(lib514_DEPENDENCIES) $(EXTRA_lib514_DEPENDENCIES)
@rm -f lib514$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib514_OBJECTS) $(lib514_LDADD) $(LIBS)
+../../lib/lib515-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib515$(EXEEXT): $(lib515_OBJECTS) $(lib515_DEPENDENCIES) $(EXTRA_lib515_DEPENDENCIES)
@rm -f lib515$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib515_OBJECTS) $(lib515_LDADD) $(LIBS)
+../../lib/lib516-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib516$(EXEEXT): $(lib516_OBJECTS) $(lib516_DEPENDENCIES) $(EXTRA_lib516_DEPENDENCIES)
@rm -f lib516$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib516_OBJECTS) $(lib516_LDADD) $(LIBS)
+../../lib/lib517-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib517$(EXEEXT): $(lib517_OBJECTS) $(lib517_DEPENDENCIES) $(EXTRA_lib517_DEPENDENCIES)
@rm -f lib517$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib517_OBJECTS) $(lib517_LDADD) $(LIBS)
+../../lib/lib518-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib518-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib518-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3401,26 +4177,38 @@ lib517$(EXEEXT): $(lib517_OBJECTS) $(lib517_DEPENDENCIES) $(EXTRA_lib517_DEPENDE
lib518$(EXEEXT): $(lib518_OBJECTS) $(lib518_DEPENDENCIES) $(EXTRA_lib518_DEPENDENCIES)
@rm -f lib518$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib518_OBJECTS) $(lib518_LDADD) $(LIBS)
+../../lib/lib519-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib519$(EXEEXT): $(lib519_OBJECTS) $(lib519_DEPENDENCIES) $(EXTRA_lib519_DEPENDENCIES)
@rm -f lib519$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib519_OBJECTS) $(lib519_LDADD) $(LIBS)
+../../lib/lib520-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib520$(EXEEXT): $(lib520_OBJECTS) $(lib520_DEPENDENCIES) $(EXTRA_lib520_DEPENDENCIES)
@rm -f lib520$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib520_OBJECTS) $(lib520_LDADD) $(LIBS)
+../../lib/lib521-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib521$(EXEEXT): $(lib521_OBJECTS) $(lib521_DEPENDENCIES) $(EXTRA_lib521_DEPENDENCIES)
@rm -f lib521$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib521_OBJECTS) $(lib521_LDADD) $(LIBS)
+../../lib/lib523-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib523$(EXEEXT): $(lib523_OBJECTS) $(lib523_DEPENDENCIES) $(EXTRA_lib523_DEPENDENCIES)
@rm -f lib523$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib523_OBJECTS) $(lib523_LDADD) $(LIBS)
+../../lib/lib524-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib524$(EXEEXT): $(lib524_OBJECTS) $(lib524_DEPENDENCIES) $(EXTRA_lib524_DEPENDENCIES)
@rm -f lib524$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib524_OBJECTS) $(lib524_LDADD) $(LIBS)
+../../lib/lib525-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib525-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib525-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3429,18 +4217,24 @@ lib524$(EXEEXT): $(lib524_OBJECTS) $(lib524_DEPENDENCIES) $(EXTRA_lib524_DEPENDE
lib525$(EXEEXT): $(lib525_OBJECTS) $(lib525_DEPENDENCIES) $(EXTRA_lib525_DEPENDENCIES)
@rm -f lib525$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib525_OBJECTS) $(lib525_LDADD) $(LIBS)
+../../lib/lib526-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib527-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib529-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib529-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib529-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3449,24 +4243,32 @@ lib527$(EXEEXT): $(lib527_OBJECTS) $(lib527_DEPENDENCIES) $(EXTRA_lib527_DEPENDE
lib529$(EXEEXT): $(lib529_OBJECTS) $(lib529_DEPENDENCIES) $(EXTRA_lib529_DEPENDENCIES)
@rm -f lib529$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib529_OBJECTS) $(lib529_LDADD) $(LIBS)
+../../lib/lib530-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib532-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib533-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib537-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib537-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib537-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3475,134 +4277,190 @@ lib533$(EXEEXT): $(lib533_OBJECTS) $(lib533_DEPENDENCIES) $(EXTRA_lib533_DEPENDE
lib537$(EXEEXT): $(lib537_OBJECTS) $(lib537_DEPENDENCIES) $(EXTRA_lib537_DEPENDENCIES)
@rm -f lib537$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib537_OBJECTS) $(lib537_LDADD) $(LIBS)
+../../lib/lib539-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib539$(EXEEXT): $(lib539_OBJECTS) $(lib539_DEPENDENCIES) $(EXTRA_lib539_DEPENDENCIES)
@rm -f lib539$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib539_OBJECTS) $(lib539_LDADD) $(LIBS)
+../../lib/lib540-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib540-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib540$(EXEEXT): $(lib540_OBJECTS) $(lib540_DEPENDENCIES) $(EXTRA_lib540_DEPENDENCIES)
@rm -f lib540$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib540_OBJECTS) $(lib540_LDADD) $(LIBS)
+../../lib/lib541-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib541-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib541$(EXEEXT): $(lib541_OBJECTS) $(lib541_DEPENDENCIES) $(EXTRA_lib541_DEPENDENCIES)
@rm -f lib541$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib541_OBJECTS) $(lib541_LDADD) $(LIBS)
+../../lib/lib542-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib542$(EXEEXT): $(lib542_OBJECTS) $(lib542_DEPENDENCIES) $(EXTRA_lib542_DEPENDENCIES)
@rm -f lib542$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib542_OBJECTS) $(lib542_LDADD) $(LIBS)
+../../lib/lib543-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib543$(EXEEXT): $(lib543_OBJECTS) $(lib543_DEPENDENCIES) $(EXTRA_lib543_DEPENDENCIES)
@rm -f lib543$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib543_OBJECTS) $(lib543_LDADD) $(LIBS)
+../../lib/lib544-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib544$(EXEEXT): $(lib544_OBJECTS) $(lib544_DEPENDENCIES) $(EXTRA_lib544_DEPENDENCIES)
@rm -f lib544$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib544_OBJECTS) $(lib544_LDADD) $(LIBS)
+../../lib/lib545-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib545$(EXEEXT): $(lib545_OBJECTS) $(lib545_DEPENDENCIES) $(EXTRA_lib545_DEPENDENCIES)
@rm -f lib545$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib545_OBJECTS) $(lib545_LDADD) $(LIBS)
+../../lib/lib547-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib547$(EXEEXT): $(lib547_OBJECTS) $(lib547_DEPENDENCIES) $(EXTRA_lib547_DEPENDENCIES)
@rm -f lib547$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib547_OBJECTS) $(lib547_LDADD) $(LIBS)
+../../lib/lib548-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib548$(EXEEXT): $(lib548_OBJECTS) $(lib548_DEPENDENCIES) $(EXTRA_lib548_DEPENDENCIES)
@rm -f lib548$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib548_OBJECTS) $(lib548_LDADD) $(LIBS)
+../../lib/lib549-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib549$(EXEEXT): $(lib549_OBJECTS) $(lib549_DEPENDENCIES) $(EXTRA_lib549_DEPENDENCIES)
@rm -f lib549$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib549_OBJECTS) $(lib549_LDADD) $(LIBS)
+../../lib/lib552-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib552-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib552$(EXEEXT): $(lib552_OBJECTS) $(lib552_DEPENDENCIES) $(EXTRA_lib552_DEPENDENCIES)
@rm -f lib552$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib552_OBJECTS) $(lib552_LDADD) $(LIBS)
+../../lib/lib553-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib553$(EXEEXT): $(lib553_OBJECTS) $(lib553_DEPENDENCIES) $(EXTRA_lib553_DEPENDENCIES)
@rm -f lib553$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib553_OBJECTS) $(lib553_LDADD) $(LIBS)
+../../lib/lib554-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib554$(EXEEXT): $(lib554_OBJECTS) $(lib554_DEPENDENCIES) $(EXTRA_lib554_DEPENDENCIES)
@rm -f lib554$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib554_OBJECTS) $(lib554_LDADD) $(LIBS)
+../../lib/lib555-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../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)
+../../lib/lib556-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib556-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib556$(EXEEXT): $(lib556_OBJECTS) $(lib556_DEPENDENCIES) $(EXTRA_lib556_DEPENDENCIES)
@rm -f lib556$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib556_OBJECTS) $(lib556_LDADD) $(LIBS)
+../../lib/lib557-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib557$(EXEEXT): $(lib557_OBJECTS) $(lib557_DEPENDENCIES) $(EXTRA_lib557_DEPENDENCIES)
@rm -f lib557$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib557_OBJECTS) $(lib557_LDADD) $(LIBS)
+../../lib/lib558-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib558$(EXEEXT): $(lib558_OBJECTS) $(lib558_DEPENDENCIES) $(EXTRA_lib558_DEPENDENCIES)
@rm -f lib558$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib558_OBJECTS) $(lib558_LDADD) $(LIBS)
+../../lib/lib559-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib559$(EXEEXT): $(lib559_OBJECTS) $(lib559_DEPENDENCIES) $(EXTRA_lib559_DEPENDENCIES)
@rm -f lib559$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib559_OBJECTS) $(lib559_LDADD) $(LIBS)
+../../lib/lib560-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib560-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib560$(EXEEXT): $(lib560_OBJECTS) $(lib560_DEPENDENCIES) $(EXTRA_lib560_DEPENDENCIES)
@rm -f lib560$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib560_OBJECTS) $(lib560_LDADD) $(LIBS)
+../../lib/lib562-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib562$(EXEEXT): $(lib562_OBJECTS) $(lib562_DEPENDENCIES) $(EXTRA_lib562_DEPENDENCIES)
@rm -f lib562$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib562_OBJECTS) $(lib562_LDADD) $(LIBS)
+../../lib/lib564-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib564-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib564$(EXEEXT): $(lib564_OBJECTS) $(lib564_DEPENDENCIES) $(EXTRA_lib564_DEPENDENCIES)
@rm -f lib564$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib564_OBJECTS) $(lib564_LDADD) $(LIBS)
+../../lib/lib565-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib565$(EXEEXT): $(lib565_OBJECTS) $(lib565_DEPENDENCIES) $(EXTRA_lib565_DEPENDENCIES)
@rm -f lib565$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib565_OBJECTS) $(lib565_LDADD) $(LIBS)
+../../lib/lib566-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib566-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib566$(EXEEXT): $(lib566_OBJECTS) $(lib566_DEPENDENCIES) $(EXTRA_lib566_DEPENDENCIES)
@rm -f lib566$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib566_OBJECTS) $(lib566_LDADD) $(LIBS)
+../../lib/lib567-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib567$(EXEEXT): $(lib567_OBJECTS) $(lib567_DEPENDENCIES) $(EXTRA_lib567_DEPENDENCIES)
@rm -f lib567$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib567_OBJECTS) $(lib567_LDADD) $(LIBS)
+../../lib/lib568-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib568-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib568$(EXEEXT): $(lib568_OBJECTS) $(lib568_DEPENDENCIES) $(EXTRA_lib568_DEPENDENCIES)
@rm -f lib568$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib568_OBJECTS) $(lib568_LDADD) $(LIBS)
+../../lib/lib569-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib569-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib569$(EXEEXT): $(lib569_OBJECTS) $(lib569_DEPENDENCIES) $(EXTRA_lib569_DEPENDENCIES)
@rm -f lib569$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib569_OBJECTS) $(lib569_LDADD) $(LIBS)
+../../lib/lib570-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib570$(EXEEXT): $(lib570_OBJECTS) $(lib570_DEPENDENCIES) $(EXTRA_lib570_DEPENDENCIES)
@rm -f lib570$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib570_OBJECTS) $(lib570_LDADD) $(LIBS)
+../../lib/lib571-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib571-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib571-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3611,44 +4469,60 @@ lib570$(EXEEXT): $(lib570_OBJECTS) $(lib570_DEPENDENCIES) $(EXTRA_lib570_DEPENDE
lib571$(EXEEXT): $(lib571_OBJECTS) $(lib571_DEPENDENCIES) $(EXTRA_lib571_DEPENDENCIES)
@rm -f lib571$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib571_OBJECTS) $(lib571_LDADD) $(LIBS)
+../../lib/lib572-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib572-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib572$(EXEEXT): $(lib572_OBJECTS) $(lib572_DEPENDENCIES) $(EXTRA_lib572_DEPENDENCIES)
@rm -f lib572$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib572_OBJECTS) $(lib572_LDADD) $(LIBS)
+../../lib/lib573-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib573-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib573$(EXEEXT): $(lib573_OBJECTS) $(lib573_DEPENDENCIES) $(EXTRA_lib573_DEPENDENCIES)
@rm -f lib573$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib573_OBJECTS) $(lib573_LDADD) $(LIBS)
+../../lib/lib574-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib574$(EXEEXT): $(lib574_OBJECTS) $(lib574_DEPENDENCIES) $(EXTRA_lib574_DEPENDENCIES)
@rm -f lib574$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib574_OBJECTS) $(lib574_LDADD) $(LIBS)
+../../lib/lib575-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib575-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib575$(EXEEXT): $(lib575_OBJECTS) $(lib575_DEPENDENCIES) $(EXTRA_lib575_DEPENDENCIES)
@rm -f lib575$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib575_OBJECTS) $(lib575_LDADD) $(LIBS)
+../../lib/lib576-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib576$(EXEEXT): $(lib576_OBJECTS) $(lib576_DEPENDENCIES) $(EXTRA_lib576_DEPENDENCIES)
@rm -f lib576$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib576_OBJECTS) $(lib576_LDADD) $(LIBS)
+../../lib/lib578-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib578-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib578$(EXEEXT): $(lib578_OBJECTS) $(lib578_DEPENDENCIES) $(EXTRA_lib578_DEPENDENCIES)
@rm -f lib578$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib578_OBJECTS) $(lib578_LDADD) $(LIBS)
+../../lib/lib579-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib579-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib579$(EXEEXT): $(lib579_OBJECTS) $(lib579_DEPENDENCIES) $(EXTRA_lib579_DEPENDENCIES)
@rm -f lib579$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib579_OBJECTS) $(lib579_LDADD) $(LIBS)
+../../lib/lib582-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib582-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib582-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3657,36 +4531,52 @@ lib579$(EXEEXT): $(lib579_OBJECTS) $(lib579_DEPENDENCIES) $(EXTRA_lib579_DEPENDE
lib582$(EXEEXT): $(lib582_OBJECTS) $(lib582_DEPENDENCIES) $(EXTRA_lib582_DEPENDENCIES)
@rm -f lib582$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib582_OBJECTS) $(lib582_LDADD) $(LIBS)
+../../lib/lib583-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib583$(EXEEXT): $(lib583_OBJECTS) $(lib583_DEPENDENCIES) $(EXTRA_lib583_DEPENDENCIES)
@rm -f lib583$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib583_OBJECTS) $(lib583_LDADD) $(LIBS)
+../../lib/lib584-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib584$(EXEEXT): $(lib584_OBJECTS) $(lib584_DEPENDENCIES) $(EXTRA_lib584_DEPENDENCIES)
@rm -f lib584$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib584_OBJECTS) $(lib584_LDADD) $(LIBS)
+../../lib/lib585-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib585-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib585$(EXEEXT): $(lib585_OBJECTS) $(lib585_DEPENDENCIES) $(EXTRA_lib585_DEPENDENCIES)
@rm -f lib585$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib585_OBJECTS) $(lib585_LDADD) $(LIBS)
+../../lib/lib586-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib586$(EXEEXT): $(lib586_OBJECTS) $(lib586_DEPENDENCIES) $(EXTRA_lib586_DEPENDENCIES)
@rm -f lib586$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib586_OBJECTS) $(lib586_LDADD) $(LIBS)
+../../lib/lib587-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib587$(EXEEXT): $(lib587_OBJECTS) $(lib587_DEPENDENCIES) $(EXTRA_lib587_DEPENDENCIES)
@rm -f lib587$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib587_OBJECTS) $(lib587_LDADD) $(LIBS)
+../../lib/lib589-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib589$(EXEEXT): $(lib589_OBJECTS) $(lib589_DEPENDENCIES) $(EXTRA_lib589_DEPENDENCIES)
@rm -f lib589$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib589_OBJECTS) $(lib589_LDADD) $(LIBS)
+../../lib/lib590-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib590$(EXEEXT): $(lib590_OBJECTS) $(lib590_DEPENDENCIES) $(EXTRA_lib590_DEPENDENCIES)
@rm -f lib590$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib590_OBJECTS) $(lib590_LDADD) $(LIBS)
+../../lib/lib591-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib591-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3695,122 +4585,170 @@ lib590$(EXEEXT): $(lib590_OBJECTS) $(lib590_DEPENDENCIES) $(EXTRA_lib590_DEPENDE
lib591$(EXEEXT): $(lib591_OBJECTS) $(lib591_DEPENDENCIES) $(EXTRA_lib591_DEPENDENCIES)
@rm -f lib591$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib591_OBJECTS) $(lib591_LDADD) $(LIBS)
+../../lib/lib597-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib597-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib597$(EXEEXT): $(lib597_OBJECTS) $(lib597_DEPENDENCIES) $(EXTRA_lib597_DEPENDENCIES)
@rm -f lib597$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib597_OBJECTS) $(lib597_LDADD) $(LIBS)
+../../lib/lib598-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib598$(EXEEXT): $(lib598_OBJECTS) $(lib598_DEPENDENCIES) $(EXTRA_lib598_DEPENDENCIES)
@rm -f lib598$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib598_OBJECTS) $(lib598_LDADD) $(LIBS)
+../../lib/lib599-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib599-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib599$(EXEEXT): $(lib599_OBJECTS) $(lib599_DEPENDENCIES) $(EXTRA_lib599_DEPENDENCIES)
@rm -f lib599$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib599_OBJECTS) $(lib599_LDADD) $(LIBS)
+../../lib/lib643-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib643$(EXEEXT): $(lib643_OBJECTS) $(lib643_DEPENDENCIES) $(EXTRA_lib643_DEPENDENCIES)
@rm -f lib643$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib643_OBJECTS) $(lib643_LDADD) $(LIBS)
+../../lib/lib645-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib645$(EXEEXT): $(lib645_OBJECTS) $(lib645_DEPENDENCIES) $(EXTRA_lib645_DEPENDENCIES)
@rm -f lib645$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib645_OBJECTS) $(lib645_LDADD) $(LIBS)
+../../lib/lib650-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib650$(EXEEXT): $(lib650_OBJECTS) $(lib650_DEPENDENCIES) $(EXTRA_lib650_DEPENDENCIES)
@rm -f lib650$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib650_OBJECTS) $(lib650_LDADD) $(LIBS)
+../../lib/lib651-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib651$(EXEEXT): $(lib651_OBJECTS) $(lib651_DEPENDENCIES) $(EXTRA_lib651_DEPENDENCIES)
@rm -f lib651$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib651_OBJECTS) $(lib651_LDADD) $(LIBS)
+../../lib/lib652-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib652$(EXEEXT): $(lib652_OBJECTS) $(lib652_DEPENDENCIES) $(EXTRA_lib652_DEPENDENCIES)
@rm -f lib652$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib652_OBJECTS) $(lib652_LDADD) $(LIBS)
+../../lib/lib653-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib653$(EXEEXT): $(lib653_OBJECTS) $(lib653_DEPENDENCIES) $(EXTRA_lib653_DEPENDENCIES)
@rm -f lib653$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib653_OBJECTS) $(lib653_LDADD) $(LIBS)
+../../lib/lib654-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib654$(EXEEXT): $(lib654_OBJECTS) $(lib654_DEPENDENCIES) $(EXTRA_lib654_DEPENDENCIES)
@rm -f lib654$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib654_OBJECTS) $(lib654_LDADD) $(LIBS)
+../../lib/lib655-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib655$(EXEEXT): $(lib655_OBJECTS) $(lib655_DEPENDENCIES) $(EXTRA_lib655_DEPENDENCIES)
@rm -f lib655$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib655_OBJECTS) $(lib655_LDADD) $(LIBS)
+../../lib/lib658-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib658-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib658$(EXEEXT): $(lib658_OBJECTS) $(lib658_DEPENDENCIES) $(EXTRA_lib658_DEPENDENCIES)
@rm -f lib658$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib658_OBJECTS) $(lib658_LDADD) $(LIBS)
+../../lib/lib659-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib659-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib659$(EXEEXT): $(lib659_OBJECTS) $(lib659_DEPENDENCIES) $(EXTRA_lib659_DEPENDENCIES)
@rm -f lib659$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib659_OBJECTS) $(lib659_LDADD) $(LIBS)
+../../lib/lib661-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib661$(EXEEXT): $(lib661_OBJECTS) $(lib661_DEPENDENCIES) $(EXTRA_lib661_DEPENDENCIES)
@rm -f lib661$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib661_OBJECTS) $(lib661_LDADD) $(LIBS)
+../../lib/lib666-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
lib666$(EXEEXT): $(lib666_OBJECTS) $(lib666_DEPENDENCIES) $(EXTRA_lib666_DEPENDENCIES)
@rm -f lib666$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib666_OBJECTS) $(lib666_LDADD) $(LIBS)
+../../lib/lib667-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib667-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib667$(EXEEXT): $(lib667_OBJECTS) $(lib667_DEPENDENCIES) $(EXTRA_lib667_DEPENDENCIES)
@rm -f lib667$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib667_OBJECTS) $(lib667_LDADD) $(LIBS)
+../../lib/lib668-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib668-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib668$(EXEEXT): $(lib668_OBJECTS) $(lib668_DEPENDENCIES) $(EXTRA_lib668_DEPENDENCIES)
@rm -f lib668$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib668_OBJECTS) $(lib668_LDADD) $(LIBS)
+../../lib/lib670-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib670-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib670$(EXEEXT): $(lib670_OBJECTS) $(lib670_DEPENDENCIES) $(EXTRA_lib670_DEPENDENCIES)
@rm -f lib670$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib670_OBJECTS) $(lib670_LDADD) $(LIBS)
+../../lib/lib671-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib671-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib671$(EXEEXT): $(lib671_OBJECTS) $(lib671_DEPENDENCIES) $(EXTRA_lib671_DEPENDENCIES)
@rm -f lib671$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib671_OBJECTS) $(lib671_LDADD) $(LIBS)
+../../lib/lib672-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib672-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib672$(EXEEXT): $(lib672_OBJECTS) $(lib672_DEPENDENCIES) $(EXTRA_lib672_DEPENDENCIES)
@rm -f lib672$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib672_OBJECTS) $(lib672_LDADD) $(LIBS)
+../../lib/lib673-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib673-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib673$(EXEEXT): $(lib673_OBJECTS) $(lib673_DEPENDENCIES) $(EXTRA_lib673_DEPENDENCIES)
@rm -f lib673$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib673_OBJECTS) $(lib673_LDADD) $(LIBS)
+../../lib/lib674-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib674-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib674$(EXEEXT): $(lib674_OBJECTS) $(lib674_DEPENDENCIES) $(EXTRA_lib674_DEPENDENCIES)
@rm -f lib674$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib674_OBJECTS) $(lib674_LDADD) $(LIBS)
+../../lib/lib676-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib676-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
lib676$(EXEEXT): $(lib676_OBJECTS) $(lib676_DEPENDENCIES) $(EXTRA_lib676_DEPENDENCIES)
@rm -f lib676$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib676_OBJECTS) $(lib676_LDADD) $(LIBS)
+../../lib/lib677-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib677-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib677-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3819,6 +4757,8 @@ lib676$(EXEEXT): $(lib676_OBJECTS) $(lib676_DEPENDENCIES) $(EXTRA_lib676_DEPENDE
lib677$(EXEEXT): $(lib677_OBJECTS) $(lib677_DEPENDENCIES) $(EXTRA_lib677_DEPENDENCIES)
@rm -f lib677$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib677_OBJECTS) $(lib677_LDADD) $(LIBS)
+../../lib/lib678-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib678-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/lib678-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3827,16 +4767,22 @@ lib677$(EXEEXT): $(lib677_OBJECTS) $(lib677_DEPENDENCIES) $(EXTRA_lib677_DEPENDE
lib678$(EXEEXT): $(lib678_OBJECTS) $(lib678_DEPENDENCIES) $(EXTRA_lib678_DEPENDENCIES)
@rm -f lib678$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib678_OBJECTS) $(lib678_LDADD) $(LIBS)
+../../lib/libauthretry-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
libauthretry$(EXEEXT): $(libauthretry_OBJECTS) $(libauthretry_DEPENDENCIES) $(EXTRA_libauthretry_DEPENDENCIES)
@rm -f libauthretry$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(libauthretry_OBJECTS) $(libauthretry_LDADD) $(LIBS)
+../../lib/libntlmconnect-timediff.$(OBJEXT): \
+ ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/libntlmconnect-warnless.$(OBJEXT): \
../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
libntlmconnect$(EXEEXT): $(libntlmconnect_OBJECTS) $(libntlmconnect_DEPENDENCIES) $(EXTRA_libntlmconnect_DEPENDENCIES)
@rm -f libntlmconnect$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(libntlmconnect_OBJECTS) $(libntlmconnect_LDADD) $(LIBS)
+../../lib/libprereq-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/libprereq-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -3851,129 +4797,324 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkdecimalpoint-mprintf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkdecimalpoint-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1156-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1156-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1500-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1501-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1501-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1502-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1502-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1503-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1503-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1504-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1504-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1505-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1505-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1506-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1506-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1507-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1507-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1508-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1508-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1509-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1509-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1510-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1510-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1511-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1511-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1512-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1512-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1513-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1513-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1514-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1514-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1515-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1515-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1517-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1518-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1520-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1521-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1522-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1523-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1525-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1525-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1526-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1526-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1527-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1527-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1528-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1528-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1529-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1529-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1530-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1530-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1531-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1531-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1532-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1532-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1533-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1533-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1534-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1534-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1535-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1535-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1536-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1536-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1537-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1537-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1538-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1538-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1539-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1539-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1540-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1540-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1542-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1542-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1543-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1550-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1551-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1552-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1553-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1554-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1555-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1555-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1556-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1556-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1564-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1564-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1565-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1565-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1567-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1568-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1569-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1907-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1907-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1908-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1908-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1910-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1910-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1911-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1911-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1912-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1912-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1913-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1913-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1915-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1915-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1916-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1916-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1917-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1917-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1918-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1918-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1919-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1919-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1933-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1933-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1934-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1934-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1935-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1935-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1936-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1936-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1937-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1938-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1939-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1940-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1945-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1946-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1947-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1948-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1955-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1955-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3010-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3010-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3025-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3025-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3026-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3026-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3027-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3027-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib500-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib500-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib501-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib505-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib505-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib506-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib508-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib509-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib510-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib511-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib512-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib513-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib514-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib515-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib516-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib517-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib519-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib520-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib521-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib523-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib524-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib526-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib526-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib527-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib527-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib530-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib530-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib532-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib532-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib533-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib533-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib537-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib537-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib537-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib539-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib540-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib540-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib541-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib541-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib542-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib543-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib544-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib545-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib547-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib548-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib549-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib552-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib552-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib553-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib554-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib555-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib555-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib556-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib556-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib557-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib558-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib559-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib560-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib560-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib562-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib564-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib564-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib565-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib566-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib566-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib567-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib568-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib568-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib569-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib569-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib570-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib571-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib571-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib571-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib572-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib572-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib573-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib573-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib574-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib575-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib575-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib576-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib578-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib578-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib579-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib579-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib582-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib582-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib582-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib583-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib584-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib585-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib585-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib586-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib587-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib589-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib590-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib591-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib591-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib591-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib597-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib597-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib598-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib599-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib599-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib643-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib645-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib650-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib651-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib652-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib653-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib654-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib655-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib658-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib658-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib659-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib659-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib661-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib666-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib667-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib667-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib668-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib668-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib670-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib670-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib671-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib671-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib672-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib672-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib673-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib673-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib674-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib674-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib676-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib676-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib677-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib677-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib677-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib678-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib678-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib678-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libauthretry-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libntlmconnect-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libntlmconnect-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libprereq-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libprereq-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkdecimalpoint-chkdecimalpoint.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkhostname-chkhostname.Po@am__quote@ # am--include-marker
@@ -4095,6 +5236,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1542-lib1542.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1542-testtrace.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1542-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1543-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1543-lib1518.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1550-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1550-lib1550.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1551-first.Po@am__quote@ # am--include-marker
@@ -4142,6 +5285,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-lib1594.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1597.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-lib1905.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-testutil.Po@am__quote@ # am--include-marker
@@ -4175,6 +5319,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1917-lib1916.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1918-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1918-lib1918.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1919-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1919-lib1919.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1933-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1933-lib1933.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1933-testutil.Po@am__quote@ # am--include-marker
@@ -4193,12 +5339,33 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1938-lib1938.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1939-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1939-lib1939.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1940-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1940-lib1940.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1945-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1945-lib1945.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1946-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1946-lib1940.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1947-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1947-lib1947.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1948-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1948-lib1948.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1955-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1955-lib1955.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1955-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2301.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2302.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3010-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3010-lib3010.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3010-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3025-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3025-lib3025.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3025-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3026-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3026-lib3026.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3026-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3027-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3027-lib3027.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3027-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-lib500.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testtrace.Po@am__quote@ # am--include-marker
@@ -4522,20 +5689,6 @@ chkdecimalpoint-chkdecimalpoint.obj: chkdecimalpoint.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/chkdecimalpoint-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
-../../lib/chkdecimalpoint-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/chkdecimalpoint-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Tpo -c -o ../../lib/chkdecimalpoint-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Tpo ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/chkdecimalpoint-curl_ctype.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) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/chkdecimalpoint-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-
-../../lib/chkdecimalpoint-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/chkdecimalpoint-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Tpo -c -o ../../lib/chkdecimalpoint-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Tpo ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/chkdecimalpoint-curl_ctype.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) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/chkdecimalpoint-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-
../../lib/chkdecimalpoint-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/chkdecimalpoint-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Tpo -c -o ../../lib/chkdecimalpoint-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Tpo ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
@@ -4606,6 +5759,20 @@ lib1156-lib1156.obj: lib1156.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1156-lib1156.obj `if test -f 'lib1156.c'; then $(CYGPATH_W) 'lib1156.c'; else $(CYGPATH_W) '$(srcdir)/lib1156.c'; fi`
+../../lib/lib1156-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1156-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1156-timediff.Tpo -c -o ../../lib/lib1156-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1156-timediff.Tpo ../../lib/$(DEPDIR)/lib1156-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1156-timediff.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) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1156-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1156-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1156-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1156-timediff.Tpo -c -o ../../lib/lib1156-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1156-timediff.Tpo ../../lib/$(DEPDIR)/lib1156-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1156-timediff.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) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1156-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1156-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1156-first.o -MD -MP -MF $(DEPDIR)/lib1156-first.Tpo -c -o lib1156-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1156-first.Tpo $(DEPDIR)/lib1156-first.Po
@@ -4662,6 +5829,20 @@ lib1500-lib1500.obj: lib1500.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1500-lib1500.obj `if test -f 'lib1500.c'; then $(CYGPATH_W) 'lib1500.c'; else $(CYGPATH_W) '$(srcdir)/lib1500.c'; fi`
+../../lib/lib1500-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1500-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1500-timediff.Tpo -c -o ../../lib/lib1500-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1500-timediff.Tpo ../../lib/$(DEPDIR)/lib1500-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1500-timediff.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) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1500-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1500-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1500-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1500-timediff.Tpo -c -o ../../lib/lib1500-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1500-timediff.Tpo ../../lib/$(DEPDIR)/lib1500-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1500-timediff.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) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1500-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1500-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1500-first.o -MD -MP -MF $(DEPDIR)/lib1500-first.Tpo -c -o lib1500-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1500-first.Tpo $(DEPDIR)/lib1500-first.Po
@@ -4704,6 +5885,20 @@ lib1501-lib1501.obj: lib1501.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-lib1501.obj `if test -f 'lib1501.c'; then $(CYGPATH_W) 'lib1501.c'; else $(CYGPATH_W) '$(srcdir)/lib1501.c'; fi`
+../../lib/lib1501-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1501-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1501-timediff.Tpo -c -o ../../lib/lib1501-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1501-timediff.Tpo ../../lib/$(DEPDIR)/lib1501-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1501-timediff.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) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1501-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1501-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1501-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1501-timediff.Tpo -c -o ../../lib/lib1501-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1501-timediff.Tpo ../../lib/$(DEPDIR)/lib1501-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1501-timediff.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) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1501-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1501-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1501-first.o -MD -MP -MF $(DEPDIR)/lib1501-first.Tpo -c -o lib1501-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1501-first.Tpo $(DEPDIR)/lib1501-first.Po
@@ -4760,6 +5955,20 @@ lib1502-lib1502.obj: lib1502.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-lib1502.obj `if test -f 'lib1502.c'; then $(CYGPATH_W) 'lib1502.c'; else $(CYGPATH_W) '$(srcdir)/lib1502.c'; fi`
+../../lib/lib1502-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1502-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1502-timediff.Tpo -c -o ../../lib/lib1502-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1502-timediff.Tpo ../../lib/$(DEPDIR)/lib1502-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1502-timediff.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) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1502-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1502-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1502-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1502-timediff.Tpo -c -o ../../lib/lib1502-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1502-timediff.Tpo ../../lib/$(DEPDIR)/lib1502-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1502-timediff.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) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1502-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1502-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1502-first.o -MD -MP -MF $(DEPDIR)/lib1502-first.Tpo -c -o lib1502-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1502-first.Tpo $(DEPDIR)/lib1502-first.Po
@@ -4816,6 +6025,20 @@ lib1503-lib1502.obj: lib1502.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-lib1502.obj `if test -f 'lib1502.c'; then $(CYGPATH_W) 'lib1502.c'; else $(CYGPATH_W) '$(srcdir)/lib1502.c'; fi`
+../../lib/lib1503-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1503-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1503-timediff.Tpo -c -o ../../lib/lib1503-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1503-timediff.Tpo ../../lib/$(DEPDIR)/lib1503-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1503-timediff.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) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1503-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1503-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1503-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1503-timediff.Tpo -c -o ../../lib/lib1503-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1503-timediff.Tpo ../../lib/$(DEPDIR)/lib1503-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1503-timediff.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) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1503-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1503-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1503-first.o -MD -MP -MF $(DEPDIR)/lib1503-first.Tpo -c -o lib1503-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1503-first.Tpo $(DEPDIR)/lib1503-first.Po
@@ -4872,6 +6095,20 @@ lib1504-lib1502.obj: lib1502.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-lib1502.obj `if test -f 'lib1502.c'; then $(CYGPATH_W) 'lib1502.c'; else $(CYGPATH_W) '$(srcdir)/lib1502.c'; fi`
+../../lib/lib1504-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1504-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1504-timediff.Tpo -c -o ../../lib/lib1504-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1504-timediff.Tpo ../../lib/$(DEPDIR)/lib1504-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1504-timediff.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) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1504-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1504-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1504-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1504-timediff.Tpo -c -o ../../lib/lib1504-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1504-timediff.Tpo ../../lib/$(DEPDIR)/lib1504-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1504-timediff.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) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1504-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1504-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1504-first.o -MD -MP -MF $(DEPDIR)/lib1504-first.Tpo -c -o lib1504-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1504-first.Tpo $(DEPDIR)/lib1504-first.Po
@@ -4928,6 +6165,20 @@ lib1505-lib1502.obj: lib1502.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-lib1502.obj `if test -f 'lib1502.c'; then $(CYGPATH_W) 'lib1502.c'; else $(CYGPATH_W) '$(srcdir)/lib1502.c'; fi`
+../../lib/lib1505-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1505-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1505-timediff.Tpo -c -o ../../lib/lib1505-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1505-timediff.Tpo ../../lib/$(DEPDIR)/lib1505-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1505-timediff.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) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1505-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1505-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1505-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1505-timediff.Tpo -c -o ../../lib/lib1505-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1505-timediff.Tpo ../../lib/$(DEPDIR)/lib1505-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1505-timediff.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) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1505-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1505-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1505-first.o -MD -MP -MF $(DEPDIR)/lib1505-first.Tpo -c -o lib1505-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1505-first.Tpo $(DEPDIR)/lib1505-first.Po
@@ -4984,6 +6235,20 @@ lib1506-lib1506.obj: lib1506.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-lib1506.obj `if test -f 'lib1506.c'; then $(CYGPATH_W) 'lib1506.c'; else $(CYGPATH_W) '$(srcdir)/lib1506.c'; fi`
+../../lib/lib1506-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1506-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1506-timediff.Tpo -c -o ../../lib/lib1506-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1506-timediff.Tpo ../../lib/$(DEPDIR)/lib1506-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1506-timediff.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) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1506-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1506-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1506-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1506-timediff.Tpo -c -o ../../lib/lib1506-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1506-timediff.Tpo ../../lib/$(DEPDIR)/lib1506-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1506-timediff.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) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1506-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1506-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1506-first.o -MD -MP -MF $(DEPDIR)/lib1506-first.Tpo -c -o lib1506-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1506-first.Tpo $(DEPDIR)/lib1506-first.Po
@@ -5040,6 +6305,20 @@ lib1507-lib1507.obj: lib1507.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-lib1507.obj `if test -f 'lib1507.c'; then $(CYGPATH_W) 'lib1507.c'; else $(CYGPATH_W) '$(srcdir)/lib1507.c'; fi`
+../../lib/lib1507-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1507-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1507-timediff.Tpo -c -o ../../lib/lib1507-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1507-timediff.Tpo ../../lib/$(DEPDIR)/lib1507-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1507-timediff.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) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1507-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1507-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1507-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1507-timediff.Tpo -c -o ../../lib/lib1507-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1507-timediff.Tpo ../../lib/$(DEPDIR)/lib1507-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1507-timediff.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) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1507-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1507-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1507-first.o -MD -MP -MF $(DEPDIR)/lib1507-first.Tpo -c -o lib1507-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1507-first.Tpo $(DEPDIR)/lib1507-first.Po
@@ -5096,6 +6375,20 @@ lib1508-lib1508.obj: lib1508.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-lib1508.obj `if test -f 'lib1508.c'; then $(CYGPATH_W) 'lib1508.c'; else $(CYGPATH_W) '$(srcdir)/lib1508.c'; fi`
+../../lib/lib1508-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1508-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1508-timediff.Tpo -c -o ../../lib/lib1508-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1508-timediff.Tpo ../../lib/$(DEPDIR)/lib1508-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1508-timediff.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) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1508-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1508-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1508-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1508-timediff.Tpo -c -o ../../lib/lib1508-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1508-timediff.Tpo ../../lib/$(DEPDIR)/lib1508-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1508-timediff.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) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1508-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1508-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1508-first.o -MD -MP -MF $(DEPDIR)/lib1508-first.Tpo -c -o lib1508-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1508-first.Tpo $(DEPDIR)/lib1508-first.Po
@@ -5152,6 +6445,20 @@ lib1509-lib1509.obj: lib1509.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-lib1509.obj `if test -f 'lib1509.c'; then $(CYGPATH_W) 'lib1509.c'; else $(CYGPATH_W) '$(srcdir)/lib1509.c'; fi`
+../../lib/lib1509-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1509-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1509-timediff.Tpo -c -o ../../lib/lib1509-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1509-timediff.Tpo ../../lib/$(DEPDIR)/lib1509-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1509-timediff.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) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1509-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1509-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1509-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1509-timediff.Tpo -c -o ../../lib/lib1509-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1509-timediff.Tpo ../../lib/$(DEPDIR)/lib1509-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1509-timediff.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) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1509-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1509-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1509-first.o -MD -MP -MF $(DEPDIR)/lib1509-first.Tpo -c -o lib1509-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1509-first.Tpo $(DEPDIR)/lib1509-first.Po
@@ -5208,6 +6515,20 @@ lib1510-lib1510.obj: lib1510.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-lib1510.obj `if test -f 'lib1510.c'; then $(CYGPATH_W) 'lib1510.c'; else $(CYGPATH_W) '$(srcdir)/lib1510.c'; fi`
+../../lib/lib1510-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1510-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1510-timediff.Tpo -c -o ../../lib/lib1510-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1510-timediff.Tpo ../../lib/$(DEPDIR)/lib1510-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1510-timediff.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) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1510-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1510-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1510-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1510-timediff.Tpo -c -o ../../lib/lib1510-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1510-timediff.Tpo ../../lib/$(DEPDIR)/lib1510-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1510-timediff.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) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1510-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1510-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1510-first.o -MD -MP -MF $(DEPDIR)/lib1510-first.Tpo -c -o lib1510-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1510-first.Tpo $(DEPDIR)/lib1510-first.Po
@@ -5264,6 +6585,20 @@ lib1511-lib1511.obj: lib1511.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-lib1511.obj `if test -f 'lib1511.c'; then $(CYGPATH_W) 'lib1511.c'; else $(CYGPATH_W) '$(srcdir)/lib1511.c'; fi`
+../../lib/lib1511-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1511-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1511-timediff.Tpo -c -o ../../lib/lib1511-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1511-timediff.Tpo ../../lib/$(DEPDIR)/lib1511-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1511-timediff.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) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1511-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1511-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1511-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1511-timediff.Tpo -c -o ../../lib/lib1511-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1511-timediff.Tpo ../../lib/$(DEPDIR)/lib1511-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1511-timediff.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) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1511-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1511-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1511-first.o -MD -MP -MF $(DEPDIR)/lib1511-first.Tpo -c -o lib1511-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1511-first.Tpo $(DEPDIR)/lib1511-first.Po
@@ -5320,6 +6655,20 @@ lib1512-lib1512.obj: lib1512.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-lib1512.obj `if test -f 'lib1512.c'; then $(CYGPATH_W) 'lib1512.c'; else $(CYGPATH_W) '$(srcdir)/lib1512.c'; fi`
+../../lib/lib1512-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1512-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1512-timediff.Tpo -c -o ../../lib/lib1512-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1512-timediff.Tpo ../../lib/$(DEPDIR)/lib1512-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1512-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1512-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1512-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1512-timediff.Tpo -c -o ../../lib/lib1512-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1512-timediff.Tpo ../../lib/$(DEPDIR)/lib1512-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1512-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1512-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1512-first.o -MD -MP -MF $(DEPDIR)/lib1512-first.Tpo -c -o lib1512-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1512-first.Tpo $(DEPDIR)/lib1512-first.Po
@@ -5376,6 +6725,20 @@ lib1513-lib1513.obj: lib1513.c
@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`
+../../lib/lib1513-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1513-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1513-timediff.Tpo -c -o ../../lib/lib1513-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1513-timediff.Tpo ../../lib/$(DEPDIR)/lib1513-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1513-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1513-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1513-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1513-timediff.Tpo -c -o ../../lib/lib1513-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1513-timediff.Tpo ../../lib/$(DEPDIR)/lib1513-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1513-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -5432,6 +6795,20 @@ lib1514-lib1514.obj: lib1514.c
@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`
+../../lib/lib1514-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1514-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1514-timediff.Tpo -c -o ../../lib/lib1514-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1514-timediff.Tpo ../../lib/$(DEPDIR)/lib1514-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1514-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1514-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1514-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1514-timediff.Tpo -c -o ../../lib/lib1514-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1514-timediff.Tpo ../../lib/$(DEPDIR)/lib1514-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1514-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -5488,6 +6865,20 @@ lib1515-lib1515.obj: lib1515.c
@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`
+../../lib/lib1515-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1515-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1515-timediff.Tpo -c -o ../../lib/lib1515-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1515-timediff.Tpo ../../lib/$(DEPDIR)/lib1515-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1515-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1515-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1515-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1515-timediff.Tpo -c -o ../../lib/lib1515-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1515-timediff.Tpo ../../lib/$(DEPDIR)/lib1515-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1515-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -5544,6 +6935,20 @@ lib1517-lib1517.obj: lib1517.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1517-lib1517.obj `if test -f 'lib1517.c'; then $(CYGPATH_W) 'lib1517.c'; else $(CYGPATH_W) '$(srcdir)/lib1517.c'; fi`
+../../lib/lib1517-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1517-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1517-timediff.Tpo -c -o ../../lib/lib1517-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1517-timediff.Tpo ../../lib/$(DEPDIR)/lib1517-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1517-timediff.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) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1517-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1517-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1517-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1517-timediff.Tpo -c -o ../../lib/lib1517-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1517-timediff.Tpo ../../lib/$(DEPDIR)/lib1517-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1517-timediff.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) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1517-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1517-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1517-first.o -MD -MP -MF $(DEPDIR)/lib1517-first.Tpo -c -o lib1517-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1517-first.Tpo $(DEPDIR)/lib1517-first.Po
@@ -5572,6 +6977,20 @@ lib1518-lib1518.obj: lib1518.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1518-lib1518.obj `if test -f 'lib1518.c'; then $(CYGPATH_W) 'lib1518.c'; else $(CYGPATH_W) '$(srcdir)/lib1518.c'; fi`
+../../lib/lib1518-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1518-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1518-timediff.Tpo -c -o ../../lib/lib1518-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1518-timediff.Tpo ../../lib/$(DEPDIR)/lib1518-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1518-timediff.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) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1518-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1518-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1518-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1518-timediff.Tpo -c -o ../../lib/lib1518-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1518-timediff.Tpo ../../lib/$(DEPDIR)/lib1518-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1518-timediff.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) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1518-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1518-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1518-first.o -MD -MP -MF $(DEPDIR)/lib1518-first.Tpo -c -o lib1518-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1518-first.Tpo $(DEPDIR)/lib1518-first.Po
@@ -5600,6 +7019,20 @@ lib1520-lib1520.obj: lib1520.c
@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`
+../../lib/lib1520-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1520-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1520-timediff.Tpo -c -o ../../lib/lib1520-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1520-timediff.Tpo ../../lib/$(DEPDIR)/lib1520-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1520-timediff.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 ../../lib/lib1520-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1520-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1520-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1520-timediff.Tpo -c -o ../../lib/lib1520-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1520-timediff.Tpo ../../lib/$(DEPDIR)/lib1520-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1520-timediff.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 ../../lib/lib1520-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -5628,6 +7061,20 @@ lib1521-lib1521.obj: lib1521.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1521-lib1521.obj `if test -f 'lib1521.c'; then $(CYGPATH_W) 'lib1521.c'; else $(CYGPATH_W) '$(srcdir)/lib1521.c'; fi`
+../../lib/lib1521-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1521-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1521-timediff.Tpo -c -o ../../lib/lib1521-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1521-timediff.Tpo ../../lib/$(DEPDIR)/lib1521-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1521-timediff.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) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1521-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1521-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1521-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1521-timediff.Tpo -c -o ../../lib/lib1521-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1521-timediff.Tpo ../../lib/$(DEPDIR)/lib1521-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1521-timediff.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) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1521-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1521-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1521-first.o -MD -MP -MF $(DEPDIR)/lib1521-first.Tpo -c -o lib1521-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1521-first.Tpo $(DEPDIR)/lib1521-first.Po
@@ -5656,6 +7103,20 @@ lib1522-lib1522.obj: lib1522.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1522-lib1522.obj `if test -f 'lib1522.c'; then $(CYGPATH_W) 'lib1522.c'; else $(CYGPATH_W) '$(srcdir)/lib1522.c'; fi`
+../../lib/lib1522-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1522-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1522-timediff.Tpo -c -o ../../lib/lib1522-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1522-timediff.Tpo ../../lib/$(DEPDIR)/lib1522-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1522-timediff.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) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1522-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1522-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1522-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1522-timediff.Tpo -c -o ../../lib/lib1522-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1522-timediff.Tpo ../../lib/$(DEPDIR)/lib1522-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1522-timediff.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) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1522-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1522-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1522-first.o -MD -MP -MF $(DEPDIR)/lib1522-first.Tpo -c -o lib1522-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1522-first.Tpo $(DEPDIR)/lib1522-first.Po
@@ -5712,6 +7173,20 @@ lib1523-lib1523.obj: lib1523.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1523-lib1523.obj `if test -f 'lib1523.c'; then $(CYGPATH_W) 'lib1523.c'; else $(CYGPATH_W) '$(srcdir)/lib1523.c'; fi`
+../../lib/lib1523-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1523-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1523-timediff.Tpo -c -o ../../lib/lib1523-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1523-timediff.Tpo ../../lib/$(DEPDIR)/lib1523-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1523-timediff.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) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1523-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1523-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1523-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1523-timediff.Tpo -c -o ../../lib/lib1523-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1523-timediff.Tpo ../../lib/$(DEPDIR)/lib1523-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1523-timediff.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) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1523-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1523-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1523-first.o -MD -MP -MF $(DEPDIR)/lib1523-first.Tpo -c -o lib1523-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1523-first.Tpo $(DEPDIR)/lib1523-first.Po
@@ -5740,6 +7215,20 @@ lib1525-lib1525.obj: lib1525.c
@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`
+../../lib/lib1525-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1525-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1525-timediff.Tpo -c -o ../../lib/lib1525-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1525-timediff.Tpo ../../lib/$(DEPDIR)/lib1525-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1525-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1525-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1525-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1525-timediff.Tpo -c -o ../../lib/lib1525-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1525-timediff.Tpo ../../lib/$(DEPDIR)/lib1525-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1525-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -5796,6 +7285,20 @@ lib1526-lib1526.obj: lib1526.c
@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`
+../../lib/lib1526-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1526-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1526-timediff.Tpo -c -o ../../lib/lib1526-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1526-timediff.Tpo ../../lib/$(DEPDIR)/lib1526-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1526-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1526-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1526-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1526-timediff.Tpo -c -o ../../lib/lib1526-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1526-timediff.Tpo ../../lib/$(DEPDIR)/lib1526-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1526-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -5852,6 +7355,20 @@ lib1527-lib1527.obj: lib1527.c
@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`
+../../lib/lib1527-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1527-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1527-timediff.Tpo -c -o ../../lib/lib1527-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1527-timediff.Tpo ../../lib/$(DEPDIR)/lib1527-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1527-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1527-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1527-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1527-timediff.Tpo -c -o ../../lib/lib1527-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1527-timediff.Tpo ../../lib/$(DEPDIR)/lib1527-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1527-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -5908,6 +7425,20 @@ lib1528-lib1528.obj: lib1528.c
@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`
+../../lib/lib1528-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1528-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1528-timediff.Tpo -c -o ../../lib/lib1528-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1528-timediff.Tpo ../../lib/$(DEPDIR)/lib1528-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1528-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1528-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1528-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1528-timediff.Tpo -c -o ../../lib/lib1528-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1528-timediff.Tpo ../../lib/$(DEPDIR)/lib1528-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1528-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -5964,6 +7495,20 @@ lib1529-lib1529.obj: lib1529.c
@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`
+../../lib/lib1529-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1529-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1529-timediff.Tpo -c -o ../../lib/lib1529-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1529-timediff.Tpo ../../lib/$(DEPDIR)/lib1529-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1529-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1529-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1529-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1529-timediff.Tpo -c -o ../../lib/lib1529-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1529-timediff.Tpo ../../lib/$(DEPDIR)/lib1529-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1529-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.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
@@ -6020,6 +7565,20 @@ lib1530-lib1530.obj: lib1530.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-lib1530.obj `if test -f 'lib1530.c'; then $(CYGPATH_W) 'lib1530.c'; else $(CYGPATH_W) '$(srcdir)/lib1530.c'; fi`
+../../lib/lib1530-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1530-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1530-timediff.Tpo -c -o ../../lib/lib1530-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1530-timediff.Tpo ../../lib/$(DEPDIR)/lib1530-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1530-timediff.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) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1530-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1530-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1530-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1530-timediff.Tpo -c -o ../../lib/lib1530-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1530-timediff.Tpo ../../lib/$(DEPDIR)/lib1530-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1530-timediff.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) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1530-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1530-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-first.o -MD -MP -MF $(DEPDIR)/lib1530-first.Tpo -c -o lib1530-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-first.Tpo $(DEPDIR)/lib1530-first.Po
@@ -6076,6 +7635,20 @@ lib1531-lib1531.obj: lib1531.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-lib1531.obj `if test -f 'lib1531.c'; then $(CYGPATH_W) 'lib1531.c'; else $(CYGPATH_W) '$(srcdir)/lib1531.c'; fi`
+../../lib/lib1531-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1531-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1531-timediff.Tpo -c -o ../../lib/lib1531-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1531-timediff.Tpo ../../lib/$(DEPDIR)/lib1531-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1531-timediff.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) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1531-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1531-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1531-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1531-timediff.Tpo -c -o ../../lib/lib1531-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1531-timediff.Tpo ../../lib/$(DEPDIR)/lib1531-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1531-timediff.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) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1531-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1531-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-first.o -MD -MP -MF $(DEPDIR)/lib1531-first.Tpo -c -o lib1531-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-first.Tpo $(DEPDIR)/lib1531-first.Po
@@ -6132,6 +7705,20 @@ lib1532-lib1532.obj: lib1532.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1532-lib1532.obj `if test -f 'lib1532.c'; then $(CYGPATH_W) 'lib1532.c'; else $(CYGPATH_W) '$(srcdir)/lib1532.c'; fi`
+../../lib/lib1532-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1532-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1532-timediff.Tpo -c -o ../../lib/lib1532-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1532-timediff.Tpo ../../lib/$(DEPDIR)/lib1532-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1532-timediff.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) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1532-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1532-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1532-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1532-timediff.Tpo -c -o ../../lib/lib1532-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1532-timediff.Tpo ../../lib/$(DEPDIR)/lib1532-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1532-timediff.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) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1532-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1532-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1532-first.o -MD -MP -MF $(DEPDIR)/lib1532-first.Tpo -c -o lib1532-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1532-first.Tpo $(DEPDIR)/lib1532-first.Po
@@ -6188,6 +7775,20 @@ lib1533-lib1533.obj: lib1533.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1533-lib1533.obj `if test -f 'lib1533.c'; then $(CYGPATH_W) 'lib1533.c'; else $(CYGPATH_W) '$(srcdir)/lib1533.c'; fi`
+../../lib/lib1533-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1533-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1533-timediff.Tpo -c -o ../../lib/lib1533-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1533-timediff.Tpo ../../lib/$(DEPDIR)/lib1533-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1533-timediff.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) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1533-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1533-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1533-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1533-timediff.Tpo -c -o ../../lib/lib1533-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1533-timediff.Tpo ../../lib/$(DEPDIR)/lib1533-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1533-timediff.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) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1533-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1533-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1533-first.o -MD -MP -MF $(DEPDIR)/lib1533-first.Tpo -c -o lib1533-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1533-first.Tpo $(DEPDIR)/lib1533-first.Po
@@ -6244,6 +7845,20 @@ lib1534-lib1534.obj: lib1534.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1534-lib1534.obj `if test -f 'lib1534.c'; then $(CYGPATH_W) 'lib1534.c'; else $(CYGPATH_W) '$(srcdir)/lib1534.c'; fi`
+../../lib/lib1534-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1534-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1534-timediff.Tpo -c -o ../../lib/lib1534-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1534-timediff.Tpo ../../lib/$(DEPDIR)/lib1534-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1534-timediff.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) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1534-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1534-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1534-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1534-timediff.Tpo -c -o ../../lib/lib1534-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1534-timediff.Tpo ../../lib/$(DEPDIR)/lib1534-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1534-timediff.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) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1534-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1534-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1534-first.o -MD -MP -MF $(DEPDIR)/lib1534-first.Tpo -c -o lib1534-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1534-first.Tpo $(DEPDIR)/lib1534-first.Po
@@ -6300,6 +7915,20 @@ lib1535-lib1535.obj: lib1535.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1535-lib1535.obj `if test -f 'lib1535.c'; then $(CYGPATH_W) 'lib1535.c'; else $(CYGPATH_W) '$(srcdir)/lib1535.c'; fi`
+../../lib/lib1535-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1535-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1535-timediff.Tpo -c -o ../../lib/lib1535-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1535-timediff.Tpo ../../lib/$(DEPDIR)/lib1535-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1535-timediff.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) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1535-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1535-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1535-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1535-timediff.Tpo -c -o ../../lib/lib1535-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1535-timediff.Tpo ../../lib/$(DEPDIR)/lib1535-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1535-timediff.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) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1535-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1535-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1535-first.o -MD -MP -MF $(DEPDIR)/lib1535-first.Tpo -c -o lib1535-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1535-first.Tpo $(DEPDIR)/lib1535-first.Po
@@ -6356,6 +7985,20 @@ lib1536-lib1536.obj: lib1536.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1536-lib1536.obj `if test -f 'lib1536.c'; then $(CYGPATH_W) 'lib1536.c'; else $(CYGPATH_W) '$(srcdir)/lib1536.c'; fi`
+../../lib/lib1536-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1536-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1536-timediff.Tpo -c -o ../../lib/lib1536-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1536-timediff.Tpo ../../lib/$(DEPDIR)/lib1536-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1536-timediff.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) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1536-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1536-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1536-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1536-timediff.Tpo -c -o ../../lib/lib1536-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1536-timediff.Tpo ../../lib/$(DEPDIR)/lib1536-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1536-timediff.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) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1536-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1536-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1536-first.o -MD -MP -MF $(DEPDIR)/lib1536-first.Tpo -c -o lib1536-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1536-first.Tpo $(DEPDIR)/lib1536-first.Po
@@ -6412,6 +8055,20 @@ lib1537-lib1537.obj: lib1537.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1537-lib1537.obj `if test -f 'lib1537.c'; then $(CYGPATH_W) 'lib1537.c'; else $(CYGPATH_W) '$(srcdir)/lib1537.c'; fi`
+../../lib/lib1537-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1537-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1537-timediff.Tpo -c -o ../../lib/lib1537-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1537-timediff.Tpo ../../lib/$(DEPDIR)/lib1537-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1537-timediff.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) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1537-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1537-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1537-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1537-timediff.Tpo -c -o ../../lib/lib1537-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1537-timediff.Tpo ../../lib/$(DEPDIR)/lib1537-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1537-timediff.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) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1537-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1537-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1537-first.o -MD -MP -MF $(DEPDIR)/lib1537-first.Tpo -c -o lib1537-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1537-first.Tpo $(DEPDIR)/lib1537-first.Po
@@ -6468,6 +8125,20 @@ lib1538-lib1538.obj: lib1538.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1538-lib1538.obj `if test -f 'lib1538.c'; then $(CYGPATH_W) 'lib1538.c'; else $(CYGPATH_W) '$(srcdir)/lib1538.c'; fi`
+../../lib/lib1538-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1538-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1538-timediff.Tpo -c -o ../../lib/lib1538-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1538-timediff.Tpo ../../lib/$(DEPDIR)/lib1538-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1538-timediff.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) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1538-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1538-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1538-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1538-timediff.Tpo -c -o ../../lib/lib1538-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1538-timediff.Tpo ../../lib/$(DEPDIR)/lib1538-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1538-timediff.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) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1538-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1538-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1538-first.o -MD -MP -MF $(DEPDIR)/lib1538-first.Tpo -c -o lib1538-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1538-first.Tpo $(DEPDIR)/lib1538-first.Po
@@ -6524,6 +8195,20 @@ lib1539-lib1514.obj: lib1514.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1539-lib1514.obj `if test -f 'lib1514.c'; then $(CYGPATH_W) 'lib1514.c'; else $(CYGPATH_W) '$(srcdir)/lib1514.c'; fi`
+../../lib/lib1539-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1539-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1539-timediff.Tpo -c -o ../../lib/lib1539-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1539-timediff.Tpo ../../lib/$(DEPDIR)/lib1539-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1539-timediff.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) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1539-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1539-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1539-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1539-timediff.Tpo -c -o ../../lib/lib1539-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1539-timediff.Tpo ../../lib/$(DEPDIR)/lib1539-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1539-timediff.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) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1539-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1539-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1539-first.o -MD -MP -MF $(DEPDIR)/lib1539-first.Tpo -c -o lib1539-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1539-first.Tpo $(DEPDIR)/lib1539-first.Po
@@ -6580,6 +8265,20 @@ lib1540-lib1540.obj: lib1540.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1540-lib1540.obj `if test -f 'lib1540.c'; then $(CYGPATH_W) 'lib1540.c'; else $(CYGPATH_W) '$(srcdir)/lib1540.c'; fi`
+../../lib/lib1540-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1540-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1540-timediff.Tpo -c -o ../../lib/lib1540-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1540-timediff.Tpo ../../lib/$(DEPDIR)/lib1540-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1540-timediff.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) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1540-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1540-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1540-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1540-timediff.Tpo -c -o ../../lib/lib1540-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1540-timediff.Tpo ../../lib/$(DEPDIR)/lib1540-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1540-timediff.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) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1540-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1540-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1540-first.o -MD -MP -MF $(DEPDIR)/lib1540-first.Tpo -c -o lib1540-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1540-first.Tpo $(DEPDIR)/lib1540-first.Po
@@ -6636,6 +8335,20 @@ lib1542-lib1542.obj: lib1542.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1542-lib1542.obj `if test -f 'lib1542.c'; then $(CYGPATH_W) 'lib1542.c'; else $(CYGPATH_W) '$(srcdir)/lib1542.c'; fi`
+../../lib/lib1542-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1542-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1542-timediff.Tpo -c -o ../../lib/lib1542-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1542-timediff.Tpo ../../lib/$(DEPDIR)/lib1542-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1542-timediff.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) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1542-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1542-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1542-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1542-timediff.Tpo -c -o ../../lib/lib1542-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1542-timediff.Tpo ../../lib/$(DEPDIR)/lib1542-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1542-timediff.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) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1542-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1542-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1542-first.o -MD -MP -MF $(DEPDIR)/lib1542-first.Tpo -c -o lib1542-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1542-first.Tpo $(DEPDIR)/lib1542-first.Po
@@ -6692,6 +8405,48 @@ lib1542-testtrace.obj: testtrace.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1542-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+lib1543-lib1518.o: lib1518.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1543-lib1518.o -MD -MP -MF $(DEPDIR)/lib1543-lib1518.Tpo -c -o lib1543-lib1518.o `test -f 'lib1518.c' || echo '$(srcdir)/'`lib1518.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1543-lib1518.Tpo $(DEPDIR)/lib1543-lib1518.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1518.c' object='lib1543-lib1518.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) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-lib1518.o `test -f 'lib1518.c' || echo '$(srcdir)/'`lib1518.c
+
+lib1543-lib1518.obj: lib1518.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1543-lib1518.obj -MD -MP -MF $(DEPDIR)/lib1543-lib1518.Tpo -c -o lib1543-lib1518.obj `if test -f 'lib1518.c'; then $(CYGPATH_W) 'lib1518.c'; else $(CYGPATH_W) '$(srcdir)/lib1518.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1543-lib1518.Tpo $(DEPDIR)/lib1543-lib1518.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1518.c' object='lib1543-lib1518.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) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-lib1518.obj `if test -f 'lib1518.c'; then $(CYGPATH_W) 'lib1518.c'; else $(CYGPATH_W) '$(srcdir)/lib1518.c'; fi`
+
+../../lib/lib1543-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1543-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1543-timediff.Tpo -c -o ../../lib/lib1543-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1543-timediff.Tpo ../../lib/$(DEPDIR)/lib1543-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1543-timediff.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) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1543-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1543-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1543-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1543-timediff.Tpo -c -o ../../lib/lib1543-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1543-timediff.Tpo ../../lib/$(DEPDIR)/lib1543-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1543-timediff.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) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1543-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1543-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1543-first.o -MD -MP -MF $(DEPDIR)/lib1543-first.Tpo -c -o lib1543-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1543-first.Tpo $(DEPDIR)/lib1543-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1543-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) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1543-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1543-first.obj -MD -MP -MF $(DEPDIR)/lib1543-first.Tpo -c -o lib1543-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)/lib1543-first.Tpo $(DEPDIR)/lib1543-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1543-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) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
lib1550-lib1550.o: lib1550.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1550-lib1550.o -MD -MP -MF $(DEPDIR)/lib1550-lib1550.Tpo -c -o lib1550-lib1550.o `test -f 'lib1550.c' || echo '$(srcdir)/'`lib1550.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1550-lib1550.Tpo $(DEPDIR)/lib1550-lib1550.Po
@@ -6706,6 +8461,20 @@ lib1550-lib1550.obj: lib1550.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1550-lib1550.obj `if test -f 'lib1550.c'; then $(CYGPATH_W) 'lib1550.c'; else $(CYGPATH_W) '$(srcdir)/lib1550.c'; fi`
+../../lib/lib1550-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1550-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1550-timediff.Tpo -c -o ../../lib/lib1550-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1550-timediff.Tpo ../../lib/$(DEPDIR)/lib1550-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1550-timediff.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) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1550-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1550-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1550-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1550-timediff.Tpo -c -o ../../lib/lib1550-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1550-timediff.Tpo ../../lib/$(DEPDIR)/lib1550-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1550-timediff.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) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1550-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1550-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1550-first.o -MD -MP -MF $(DEPDIR)/lib1550-first.Tpo -c -o lib1550-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1550-first.Tpo $(DEPDIR)/lib1550-first.Po
@@ -6734,6 +8503,20 @@ lib1551-lib1551.obj: lib1551.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1551-lib1551.obj `if test -f 'lib1551.c'; then $(CYGPATH_W) 'lib1551.c'; else $(CYGPATH_W) '$(srcdir)/lib1551.c'; fi`
+../../lib/lib1551-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1551-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1551-timediff.Tpo -c -o ../../lib/lib1551-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1551-timediff.Tpo ../../lib/$(DEPDIR)/lib1551-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1551-timediff.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) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1551-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1551-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1551-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1551-timediff.Tpo -c -o ../../lib/lib1551-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1551-timediff.Tpo ../../lib/$(DEPDIR)/lib1551-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1551-timediff.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) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1551-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1551-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1551-first.o -MD -MP -MF $(DEPDIR)/lib1551-first.Tpo -c -o lib1551-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1551-first.Tpo $(DEPDIR)/lib1551-first.Po
@@ -6762,6 +8545,20 @@ lib1552-lib1552.obj: lib1552.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1552-lib1552.obj `if test -f 'lib1552.c'; then $(CYGPATH_W) 'lib1552.c'; else $(CYGPATH_W) '$(srcdir)/lib1552.c'; fi`
+../../lib/lib1552-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1552-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1552-timediff.Tpo -c -o ../../lib/lib1552-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1552-timediff.Tpo ../../lib/$(DEPDIR)/lib1552-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1552-timediff.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) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1552-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1552-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1552-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1552-timediff.Tpo -c -o ../../lib/lib1552-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1552-timediff.Tpo ../../lib/$(DEPDIR)/lib1552-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1552-timediff.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) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1552-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1552-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1552-first.o -MD -MP -MF $(DEPDIR)/lib1552-first.Tpo -c -o lib1552-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1552-first.Tpo $(DEPDIR)/lib1552-first.Po
@@ -6804,6 +8601,20 @@ lib1553-lib1553.obj: lib1553.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1553-lib1553.obj `if test -f 'lib1553.c'; then $(CYGPATH_W) 'lib1553.c'; else $(CYGPATH_W) '$(srcdir)/lib1553.c'; fi`
+../../lib/lib1553-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1553-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1553-timediff.Tpo -c -o ../../lib/lib1553-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1553-timediff.Tpo ../../lib/$(DEPDIR)/lib1553-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1553-timediff.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) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1553-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1553-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1553-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1553-timediff.Tpo -c -o ../../lib/lib1553-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1553-timediff.Tpo ../../lib/$(DEPDIR)/lib1553-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1553-timediff.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) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1553-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1553-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1553-first.o -MD -MP -MF $(DEPDIR)/lib1553-first.Tpo -c -o lib1553-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1553-first.Tpo $(DEPDIR)/lib1553-first.Po
@@ -6846,6 +8657,20 @@ lib1554-lib1554.obj: lib1554.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1554-lib1554.obj `if test -f 'lib1554.c'; then $(CYGPATH_W) 'lib1554.c'; else $(CYGPATH_W) '$(srcdir)/lib1554.c'; fi`
+../../lib/lib1554-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1554-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1554-timediff.Tpo -c -o ../../lib/lib1554-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1554-timediff.Tpo ../../lib/$(DEPDIR)/lib1554-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1554-timediff.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) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1554-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1554-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1554-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1554-timediff.Tpo -c -o ../../lib/lib1554-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1554-timediff.Tpo ../../lib/$(DEPDIR)/lib1554-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1554-timediff.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) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1554-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1554-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1554-first.o -MD -MP -MF $(DEPDIR)/lib1554-first.Tpo -c -o lib1554-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1554-first.Tpo $(DEPDIR)/lib1554-first.Po
@@ -6874,6 +8699,20 @@ lib1555-lib1555.obj: lib1555.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1555-lib1555.obj `if test -f 'lib1555.c'; then $(CYGPATH_W) 'lib1555.c'; else $(CYGPATH_W) '$(srcdir)/lib1555.c'; fi`
+../../lib/lib1555-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1555-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1555-timediff.Tpo -c -o ../../lib/lib1555-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1555-timediff.Tpo ../../lib/$(DEPDIR)/lib1555-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1555-timediff.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) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1555-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1555-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1555-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1555-timediff.Tpo -c -o ../../lib/lib1555-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1555-timediff.Tpo ../../lib/$(DEPDIR)/lib1555-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1555-timediff.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) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1555-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1555-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1555-first.o -MD -MP -MF $(DEPDIR)/lib1555-first.Tpo -c -o lib1555-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1555-first.Tpo $(DEPDIR)/lib1555-first.Po
@@ -6930,6 +8769,20 @@ lib1556-lib1556.obj: lib1556.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1556-lib1556.obj `if test -f 'lib1556.c'; then $(CYGPATH_W) 'lib1556.c'; else $(CYGPATH_W) '$(srcdir)/lib1556.c'; fi`
+../../lib/lib1556-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1556-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1556-timediff.Tpo -c -o ../../lib/lib1556-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1556-timediff.Tpo ../../lib/$(DEPDIR)/lib1556-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1556-timediff.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) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1556-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1556-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1556-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1556-timediff.Tpo -c -o ../../lib/lib1556-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1556-timediff.Tpo ../../lib/$(DEPDIR)/lib1556-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1556-timediff.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) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1556-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1556-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1556-first.o -MD -MP -MF $(DEPDIR)/lib1556-first.Tpo -c -o lib1556-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1556-first.Tpo $(DEPDIR)/lib1556-first.Po
@@ -6986,6 +8839,20 @@ lib1557-lib1557.obj: lib1557.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1557-lib1557.obj `if test -f 'lib1557.c'; then $(CYGPATH_W) 'lib1557.c'; else $(CYGPATH_W) '$(srcdir)/lib1557.c'; fi`
+../../lib/lib1557-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1557-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1557-timediff.Tpo -c -o ../../lib/lib1557-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1557-timediff.Tpo ../../lib/$(DEPDIR)/lib1557-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1557-timediff.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) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1557-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1557-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1557-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1557-timediff.Tpo -c -o ../../lib/lib1557-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1557-timediff.Tpo ../../lib/$(DEPDIR)/lib1557-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1557-timediff.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) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1557-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1557-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1557-first.o -MD -MP -MF $(DEPDIR)/lib1557-first.Tpo -c -o lib1557-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1557-first.Tpo $(DEPDIR)/lib1557-first.Po
@@ -7042,6 +8909,20 @@ lib1564-lib1564.obj: lib1564.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1564-lib1564.obj `if test -f 'lib1564.c'; then $(CYGPATH_W) 'lib1564.c'; else $(CYGPATH_W) '$(srcdir)/lib1564.c'; fi`
+../../lib/lib1564-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1564-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1564-timediff.Tpo -c -o ../../lib/lib1564-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1564-timediff.Tpo ../../lib/$(DEPDIR)/lib1564-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1564-timediff.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) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1564-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1564-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1564-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1564-timediff.Tpo -c -o ../../lib/lib1564-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1564-timediff.Tpo ../../lib/$(DEPDIR)/lib1564-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1564-timediff.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) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1564-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1564-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1564-first.o -MD -MP -MF $(DEPDIR)/lib1564-first.Tpo -c -o lib1564-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1564-first.Tpo $(DEPDIR)/lib1564-first.Po
@@ -7098,6 +8979,20 @@ lib1565-lib1565.obj: lib1565.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1565-lib1565.obj `if test -f 'lib1565.c'; then $(CYGPATH_W) 'lib1565.c'; else $(CYGPATH_W) '$(srcdir)/lib1565.c'; fi`
+../../lib/lib1565-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1565-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1565-timediff.Tpo -c -o ../../lib/lib1565-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1565-timediff.Tpo ../../lib/$(DEPDIR)/lib1565-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1565-timediff.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) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1565-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1565-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1565-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1565-timediff.Tpo -c -o ../../lib/lib1565-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1565-timediff.Tpo ../../lib/$(DEPDIR)/lib1565-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1565-timediff.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) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1565-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1565-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1565-first.o -MD -MP -MF $(DEPDIR)/lib1565-first.Tpo -c -o lib1565-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1565-first.Tpo $(DEPDIR)/lib1565-first.Po
@@ -7154,6 +9049,20 @@ lib1567-lib1567.obj: lib1567.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1567-lib1567.obj `if test -f 'lib1567.c'; then $(CYGPATH_W) 'lib1567.c'; else $(CYGPATH_W) '$(srcdir)/lib1567.c'; fi`
+../../lib/lib1567-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1567-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1567-timediff.Tpo -c -o ../../lib/lib1567-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1567-timediff.Tpo ../../lib/$(DEPDIR)/lib1567-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1567-timediff.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) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1567-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1567-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1567-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1567-timediff.Tpo -c -o ../../lib/lib1567-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1567-timediff.Tpo ../../lib/$(DEPDIR)/lib1567-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1567-timediff.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) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1567-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1567-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1567-first.o -MD -MP -MF $(DEPDIR)/lib1567-first.Tpo -c -o lib1567-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1567-first.Tpo $(DEPDIR)/lib1567-first.Po
@@ -7182,6 +9091,20 @@ lib1568-lib1568.obj: lib1568.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1568-lib1568.obj `if test -f 'lib1568.c'; then $(CYGPATH_W) 'lib1568.c'; else $(CYGPATH_W) '$(srcdir)/lib1568.c'; fi`
+../../lib/lib1568-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1568-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1568-timediff.Tpo -c -o ../../lib/lib1568-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1568-timediff.Tpo ../../lib/$(DEPDIR)/lib1568-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1568-timediff.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) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1568-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1568-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1568-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1568-timediff.Tpo -c -o ../../lib/lib1568-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1568-timediff.Tpo ../../lib/$(DEPDIR)/lib1568-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1568-timediff.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) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1568-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1568-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1568-first.o -MD -MP -MF $(DEPDIR)/lib1568-first.Tpo -c -o lib1568-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1568-first.Tpo $(DEPDIR)/lib1568-first.Po
@@ -7210,6 +9133,20 @@ lib1569-lib1569.obj: lib1569.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1569-lib1569.obj `if test -f 'lib1569.c'; then $(CYGPATH_W) 'lib1569.c'; else $(CYGPATH_W) '$(srcdir)/lib1569.c'; fi`
+../../lib/lib1569-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1569-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1569-timediff.Tpo -c -o ../../lib/lib1569-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1569-timediff.Tpo ../../lib/$(DEPDIR)/lib1569-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1569-timediff.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) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1569-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1569-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1569-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1569-timediff.Tpo -c -o ../../lib/lib1569-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1569-timediff.Tpo ../../lib/$(DEPDIR)/lib1569-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1569-timediff.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) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1569-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1569-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1569-first.o -MD -MP -MF $(DEPDIR)/lib1569-first.Tpo -c -o lib1569-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1569-first.Tpo $(DEPDIR)/lib1569-first.Po
@@ -7238,6 +9175,20 @@ lib1591-lib1591.obj: lib1591.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1591-lib1591.obj `if test -f 'lib1591.c'; then $(CYGPATH_W) 'lib1591.c'; else $(CYGPATH_W) '$(srcdir)/lib1591.c'; fi`
+../../lib/lib1591-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1591-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1591-timediff.Tpo -c -o ../../lib/lib1591-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1591-timediff.Tpo ../../lib/$(DEPDIR)/lib1591-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1591-timediff.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) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1591-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1591-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1591-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1591-timediff.Tpo -c -o ../../lib/lib1591-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1591-timediff.Tpo ../../lib/$(DEPDIR)/lib1591-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1591-timediff.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) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1591-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1591-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1591-first.o -MD -MP -MF $(DEPDIR)/lib1591-first.Tpo -c -o lib1591-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1591-first.Tpo $(DEPDIR)/lib1591-first.Po
@@ -7294,6 +9245,20 @@ lib1592-lib1592.obj: lib1592.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1592-lib1592.obj `if test -f 'lib1592.c'; then $(CYGPATH_W) 'lib1592.c'; else $(CYGPATH_W) '$(srcdir)/lib1592.c'; fi`
+../../lib/lib1592-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1592-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1592-timediff.Tpo -c -o ../../lib/lib1592-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1592-timediff.Tpo ../../lib/$(DEPDIR)/lib1592-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1592-timediff.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) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1592-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1592-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1592-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1592-timediff.Tpo -c -o ../../lib/lib1592-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1592-timediff.Tpo ../../lib/$(DEPDIR)/lib1592-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1592-timediff.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) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1592-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1592-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1592-first.o -MD -MP -MF $(DEPDIR)/lib1592-first.Tpo -c -o lib1592-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1592-first.Tpo $(DEPDIR)/lib1592-first.Po
@@ -7350,6 +9315,20 @@ lib1596-lib1594.obj: lib1594.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1596-lib1594.obj `if test -f 'lib1594.c'; then $(CYGPATH_W) 'lib1594.c'; else $(CYGPATH_W) '$(srcdir)/lib1594.c'; fi`
+../../lib/lib1596-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1596-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1596-timediff.Tpo -c -o ../../lib/lib1596-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1596-timediff.Tpo ../../lib/$(DEPDIR)/lib1596-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1596-timediff.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) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1596-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1596-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1596-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1596-timediff.Tpo -c -o ../../lib/lib1596-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1596-timediff.Tpo ../../lib/$(DEPDIR)/lib1596-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1596-timediff.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) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1596-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1596-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1596-first.o -MD -MP -MF $(DEPDIR)/lib1596-first.Tpo -c -o lib1596-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1596-first.Tpo $(DEPDIR)/lib1596-first.Po
@@ -7406,6 +9385,20 @@ lib1905-lib1905.obj: lib1905.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1905-lib1905.obj `if test -f 'lib1905.c'; then $(CYGPATH_W) 'lib1905.c'; else $(CYGPATH_W) '$(srcdir)/lib1905.c'; fi`
+../../lib/lib1905-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1905-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1905-timediff.Tpo -c -o ../../lib/lib1905-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1905-timediff.Tpo ../../lib/$(DEPDIR)/lib1905-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1905-timediff.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) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1905-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1905-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1905-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1905-timediff.Tpo -c -o ../../lib/lib1905-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1905-timediff.Tpo ../../lib/$(DEPDIR)/lib1905-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1905-timediff.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) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1905-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1905-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1905-first.o -MD -MP -MF $(DEPDIR)/lib1905-first.Tpo -c -o lib1905-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1905-first.Tpo $(DEPDIR)/lib1905-first.Po
@@ -7462,6 +9455,20 @@ lib1906-lib1906.obj: lib1906.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1906-lib1906.obj `if test -f 'lib1906.c'; then $(CYGPATH_W) 'lib1906.c'; else $(CYGPATH_W) '$(srcdir)/lib1906.c'; fi`
+../../lib/lib1906-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1906-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1906-timediff.Tpo -c -o ../../lib/lib1906-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1906-timediff.Tpo ../../lib/$(DEPDIR)/lib1906-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1906-timediff.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) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1906-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1906-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1906-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1906-timediff.Tpo -c -o ../../lib/lib1906-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1906-timediff.Tpo ../../lib/$(DEPDIR)/lib1906-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1906-timediff.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) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1906-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1906-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1906-first.o -MD -MP -MF $(DEPDIR)/lib1906-first.Tpo -c -o lib1906-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1906-first.Tpo $(DEPDIR)/lib1906-first.Po
@@ -7518,6 +9525,20 @@ lib1907-lib1907.obj: lib1907.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1907-lib1907.obj `if test -f 'lib1907.c'; then $(CYGPATH_W) 'lib1907.c'; else $(CYGPATH_W) '$(srcdir)/lib1907.c'; fi`
+../../lib/lib1907-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1907-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1907-timediff.Tpo -c -o ../../lib/lib1907-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1907-timediff.Tpo ../../lib/$(DEPDIR)/lib1907-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1907-timediff.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) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1907-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1907-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1907-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1907-timediff.Tpo -c -o ../../lib/lib1907-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1907-timediff.Tpo ../../lib/$(DEPDIR)/lib1907-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1907-timediff.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) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1907-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1907-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1907-first.o -MD -MP -MF $(DEPDIR)/lib1907-first.Tpo -c -o lib1907-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1907-first.Tpo $(DEPDIR)/lib1907-first.Po
@@ -7574,6 +9595,20 @@ lib1908-lib1908.obj: lib1908.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1908-lib1908.obj `if test -f 'lib1908.c'; then $(CYGPATH_W) 'lib1908.c'; else $(CYGPATH_W) '$(srcdir)/lib1908.c'; fi`
+../../lib/lib1908-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1908-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1908-timediff.Tpo -c -o ../../lib/lib1908-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1908-timediff.Tpo ../../lib/$(DEPDIR)/lib1908-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1908-timediff.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) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1908-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1908-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1908-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1908-timediff.Tpo -c -o ../../lib/lib1908-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1908-timediff.Tpo ../../lib/$(DEPDIR)/lib1908-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1908-timediff.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) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1908-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1908-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1908-first.o -MD -MP -MF $(DEPDIR)/lib1908-first.Tpo -c -o lib1908-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1908-first.Tpo $(DEPDIR)/lib1908-first.Po
@@ -7630,6 +9665,20 @@ lib1910-lib1910.obj: lib1910.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1910-lib1910.obj `if test -f 'lib1910.c'; then $(CYGPATH_W) 'lib1910.c'; else $(CYGPATH_W) '$(srcdir)/lib1910.c'; fi`
+../../lib/lib1910-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1910-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1910-timediff.Tpo -c -o ../../lib/lib1910-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1910-timediff.Tpo ../../lib/$(DEPDIR)/lib1910-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1910-timediff.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) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1910-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1910-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1910-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1910-timediff.Tpo -c -o ../../lib/lib1910-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1910-timediff.Tpo ../../lib/$(DEPDIR)/lib1910-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1910-timediff.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) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1910-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1910-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1910-first.o -MD -MP -MF $(DEPDIR)/lib1910-first.Tpo -c -o lib1910-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1910-first.Tpo $(DEPDIR)/lib1910-first.Po
@@ -7686,6 +9735,20 @@ lib1911-lib1911.obj: lib1911.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1911-lib1911.obj `if test -f 'lib1911.c'; then $(CYGPATH_W) 'lib1911.c'; else $(CYGPATH_W) '$(srcdir)/lib1911.c'; fi`
+../../lib/lib1911-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1911-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1911-timediff.Tpo -c -o ../../lib/lib1911-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1911-timediff.Tpo ../../lib/$(DEPDIR)/lib1911-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1911-timediff.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) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1911-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1911-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1911-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1911-timediff.Tpo -c -o ../../lib/lib1911-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1911-timediff.Tpo ../../lib/$(DEPDIR)/lib1911-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1911-timediff.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) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1911-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1911-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1911-first.o -MD -MP -MF $(DEPDIR)/lib1911-first.Tpo -c -o lib1911-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1911-first.Tpo $(DEPDIR)/lib1911-first.Po
@@ -7742,6 +9805,20 @@ lib1912-lib1912.obj: lib1912.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1912-lib1912.obj `if test -f 'lib1912.c'; then $(CYGPATH_W) 'lib1912.c'; else $(CYGPATH_W) '$(srcdir)/lib1912.c'; fi`
+../../lib/lib1912-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1912-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1912-timediff.Tpo -c -o ../../lib/lib1912-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1912-timediff.Tpo ../../lib/$(DEPDIR)/lib1912-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1912-timediff.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) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1912-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1912-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1912-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1912-timediff.Tpo -c -o ../../lib/lib1912-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1912-timediff.Tpo ../../lib/$(DEPDIR)/lib1912-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1912-timediff.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) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1912-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1912-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1912-first.o -MD -MP -MF $(DEPDIR)/lib1912-first.Tpo -c -o lib1912-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1912-first.Tpo $(DEPDIR)/lib1912-first.Po
@@ -7798,6 +9875,20 @@ lib1913-lib1913.obj: lib1913.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1913-lib1913.obj `if test -f 'lib1913.c'; then $(CYGPATH_W) 'lib1913.c'; else $(CYGPATH_W) '$(srcdir)/lib1913.c'; fi`
+../../lib/lib1913-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1913-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1913-timediff.Tpo -c -o ../../lib/lib1913-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1913-timediff.Tpo ../../lib/$(DEPDIR)/lib1913-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1913-timediff.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) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1913-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1913-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1913-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1913-timediff.Tpo -c -o ../../lib/lib1913-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1913-timediff.Tpo ../../lib/$(DEPDIR)/lib1913-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1913-timediff.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) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1913-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1913-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1913-first.o -MD -MP -MF $(DEPDIR)/lib1913-first.Tpo -c -o lib1913-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1913-first.Tpo $(DEPDIR)/lib1913-first.Po
@@ -7854,6 +9945,20 @@ lib1915-lib1915.obj: lib1915.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1915-lib1915.obj `if test -f 'lib1915.c'; then $(CYGPATH_W) 'lib1915.c'; else $(CYGPATH_W) '$(srcdir)/lib1915.c'; fi`
+../../lib/lib1915-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1915-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1915-timediff.Tpo -c -o ../../lib/lib1915-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1915-timediff.Tpo ../../lib/$(DEPDIR)/lib1915-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1915-timediff.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) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1915-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1915-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1915-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1915-timediff.Tpo -c -o ../../lib/lib1915-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1915-timediff.Tpo ../../lib/$(DEPDIR)/lib1915-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1915-timediff.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) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1915-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1915-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1915-first.o -MD -MP -MF $(DEPDIR)/lib1915-first.Tpo -c -o lib1915-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1915-first.Tpo $(DEPDIR)/lib1915-first.Po
@@ -7910,6 +10015,20 @@ lib1916-lib1916.obj: lib1916.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1916-lib1916.obj `if test -f 'lib1916.c'; then $(CYGPATH_W) 'lib1916.c'; else $(CYGPATH_W) '$(srcdir)/lib1916.c'; fi`
+../../lib/lib1916-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1916-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1916-timediff.Tpo -c -o ../../lib/lib1916-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1916-timediff.Tpo ../../lib/$(DEPDIR)/lib1916-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1916-timediff.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) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1916-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1916-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1916-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1916-timediff.Tpo -c -o ../../lib/lib1916-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1916-timediff.Tpo ../../lib/$(DEPDIR)/lib1916-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1916-timediff.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) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1916-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1916-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1916-first.o -MD -MP -MF $(DEPDIR)/lib1916-first.Tpo -c -o lib1916-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1916-first.Tpo $(DEPDIR)/lib1916-first.Po
@@ -7952,6 +10071,20 @@ lib1917-lib1916.obj: lib1916.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1917-lib1916.obj `if test -f 'lib1916.c'; then $(CYGPATH_W) 'lib1916.c'; else $(CYGPATH_W) '$(srcdir)/lib1916.c'; fi`
+../../lib/lib1917-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1917-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1917-timediff.Tpo -c -o ../../lib/lib1917-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1917-timediff.Tpo ../../lib/$(DEPDIR)/lib1917-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1917-timediff.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) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1917-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1917-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1917-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1917-timediff.Tpo -c -o ../../lib/lib1917-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1917-timediff.Tpo ../../lib/$(DEPDIR)/lib1917-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1917-timediff.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) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1917-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1917-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1917-first.o -MD -MP -MF $(DEPDIR)/lib1917-first.Tpo -c -o lib1917-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1917-first.Tpo $(DEPDIR)/lib1917-first.Po
@@ -7994,6 +10127,20 @@ lib1918-lib1918.obj: lib1918.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1918-lib1918.obj `if test -f 'lib1918.c'; then $(CYGPATH_W) 'lib1918.c'; else $(CYGPATH_W) '$(srcdir)/lib1918.c'; fi`
+../../lib/lib1918-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1918-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1918-timediff.Tpo -c -o ../../lib/lib1918-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1918-timediff.Tpo ../../lib/$(DEPDIR)/lib1918-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1918-timediff.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) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1918-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1918-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1918-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1918-timediff.Tpo -c -o ../../lib/lib1918-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1918-timediff.Tpo ../../lib/$(DEPDIR)/lib1918-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1918-timediff.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) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1918-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1918-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1918-first.o -MD -MP -MF $(DEPDIR)/lib1918-first.Tpo -c -o lib1918-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1918-first.Tpo $(DEPDIR)/lib1918-first.Po
@@ -8022,6 +10169,62 @@ lib1918-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) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1918-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+lib1919-lib1919.o: lib1919.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1919-lib1919.o -MD -MP -MF $(DEPDIR)/lib1919-lib1919.Tpo -c -o lib1919-lib1919.o `test -f 'lib1919.c' || echo '$(srcdir)/'`lib1919.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1919-lib1919.Tpo $(DEPDIR)/lib1919-lib1919.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1919.c' object='lib1919-lib1919.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) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1919-lib1919.o `test -f 'lib1919.c' || echo '$(srcdir)/'`lib1919.c
+
+lib1919-lib1919.obj: lib1919.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1919-lib1919.obj -MD -MP -MF $(DEPDIR)/lib1919-lib1919.Tpo -c -o lib1919-lib1919.obj `if test -f 'lib1919.c'; then $(CYGPATH_W) 'lib1919.c'; else $(CYGPATH_W) '$(srcdir)/lib1919.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1919-lib1919.Tpo $(DEPDIR)/lib1919-lib1919.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1919.c' object='lib1919-lib1919.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) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1919-lib1919.obj `if test -f 'lib1919.c'; then $(CYGPATH_W) 'lib1919.c'; else $(CYGPATH_W) '$(srcdir)/lib1919.c'; fi`
+
+../../lib/lib1919-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1919-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1919-timediff.Tpo -c -o ../../lib/lib1919-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1919-timediff.Tpo ../../lib/$(DEPDIR)/lib1919-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1919-timediff.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) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1919-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1919-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1919-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1919-timediff.Tpo -c -o ../../lib/lib1919-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1919-timediff.Tpo ../../lib/$(DEPDIR)/lib1919-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1919-timediff.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) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1919-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1919-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1919-first.o -MD -MP -MF $(DEPDIR)/lib1919-first.Tpo -c -o lib1919-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1919-first.Tpo $(DEPDIR)/lib1919-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1919-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) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1919-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1919-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1919-first.obj -MD -MP -MF $(DEPDIR)/lib1919-first.Tpo -c -o lib1919-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)/lib1919-first.Tpo $(DEPDIR)/lib1919-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1919-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) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1919-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+../../lib/lib1919-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1919-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1919-warnless.Tpo -c -o ../../lib/lib1919-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1919-warnless.Tpo ../../lib/$(DEPDIR)/lib1919-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1919-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) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1919-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1919-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1919-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1919-warnless.Tpo -c -o ../../lib/lib1919-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)/lib1919-warnless.Tpo ../../lib/$(DEPDIR)/lib1919-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1919-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) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1919-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
lib1933-lib1933.o: lib1933.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1933-lib1933.o -MD -MP -MF $(DEPDIR)/lib1933-lib1933.Tpo -c -o lib1933-lib1933.o `test -f 'lib1933.c' || echo '$(srcdir)/'`lib1933.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1933-lib1933.Tpo $(DEPDIR)/lib1933-lib1933.Po
@@ -8036,6 +10239,20 @@ lib1933-lib1933.obj: lib1933.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1933-lib1933.obj `if test -f 'lib1933.c'; then $(CYGPATH_W) 'lib1933.c'; else $(CYGPATH_W) '$(srcdir)/lib1933.c'; fi`
+../../lib/lib1933-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1933-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1933-timediff.Tpo -c -o ../../lib/lib1933-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1933-timediff.Tpo ../../lib/$(DEPDIR)/lib1933-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1933-timediff.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) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1933-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1933-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1933-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1933-timediff.Tpo -c -o ../../lib/lib1933-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1933-timediff.Tpo ../../lib/$(DEPDIR)/lib1933-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1933-timediff.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) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1933-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1933-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1933-first.o -MD -MP -MF $(DEPDIR)/lib1933-first.Tpo -c -o lib1933-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1933-first.Tpo $(DEPDIR)/lib1933-first.Po
@@ -8092,6 +10309,20 @@ lib1934-lib1934.obj: lib1934.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1934-lib1934.obj `if test -f 'lib1934.c'; then $(CYGPATH_W) 'lib1934.c'; else $(CYGPATH_W) '$(srcdir)/lib1934.c'; fi`
+../../lib/lib1934-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1934-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1934-timediff.Tpo -c -o ../../lib/lib1934-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1934-timediff.Tpo ../../lib/$(DEPDIR)/lib1934-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1934-timediff.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) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1934-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1934-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1934-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1934-timediff.Tpo -c -o ../../lib/lib1934-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1934-timediff.Tpo ../../lib/$(DEPDIR)/lib1934-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1934-timediff.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) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1934-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1934-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1934-first.o -MD -MP -MF $(DEPDIR)/lib1934-first.Tpo -c -o lib1934-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1934-first.Tpo $(DEPDIR)/lib1934-first.Po
@@ -8148,6 +10379,20 @@ lib1935-lib1935.obj: lib1935.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1935-lib1935.obj `if test -f 'lib1935.c'; then $(CYGPATH_W) 'lib1935.c'; else $(CYGPATH_W) '$(srcdir)/lib1935.c'; fi`
+../../lib/lib1935-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1935-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1935-timediff.Tpo -c -o ../../lib/lib1935-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1935-timediff.Tpo ../../lib/$(DEPDIR)/lib1935-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1935-timediff.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) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1935-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1935-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1935-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1935-timediff.Tpo -c -o ../../lib/lib1935-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1935-timediff.Tpo ../../lib/$(DEPDIR)/lib1935-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1935-timediff.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) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1935-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1935-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1935-first.o -MD -MP -MF $(DEPDIR)/lib1935-first.Tpo -c -o lib1935-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1935-first.Tpo $(DEPDIR)/lib1935-first.Po
@@ -8204,6 +10449,20 @@ lib1936-lib1936.obj: lib1936.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1936-lib1936.obj `if test -f 'lib1936.c'; then $(CYGPATH_W) 'lib1936.c'; else $(CYGPATH_W) '$(srcdir)/lib1936.c'; fi`
+../../lib/lib1936-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1936-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1936-timediff.Tpo -c -o ../../lib/lib1936-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1936-timediff.Tpo ../../lib/$(DEPDIR)/lib1936-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1936-timediff.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) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1936-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1936-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1936-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1936-timediff.Tpo -c -o ../../lib/lib1936-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1936-timediff.Tpo ../../lib/$(DEPDIR)/lib1936-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1936-timediff.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) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1936-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1936-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1936-first.o -MD -MP -MF $(DEPDIR)/lib1936-first.Tpo -c -o lib1936-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1936-first.Tpo $(DEPDIR)/lib1936-first.Po
@@ -8260,6 +10519,20 @@ lib1937-lib1937.obj: lib1937.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1937-lib1937.obj `if test -f 'lib1937.c'; then $(CYGPATH_W) 'lib1937.c'; else $(CYGPATH_W) '$(srcdir)/lib1937.c'; fi`
+../../lib/lib1937-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1937-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1937-timediff.Tpo -c -o ../../lib/lib1937-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1937-timediff.Tpo ../../lib/$(DEPDIR)/lib1937-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1937-timediff.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) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1937-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1937-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1937-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1937-timediff.Tpo -c -o ../../lib/lib1937-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1937-timediff.Tpo ../../lib/$(DEPDIR)/lib1937-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1937-timediff.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) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1937-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1937-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1937-first.o -MD -MP -MF $(DEPDIR)/lib1937-first.Tpo -c -o lib1937-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1937-first.Tpo $(DEPDIR)/lib1937-first.Po
@@ -8288,6 +10561,20 @@ lib1938-lib1938.obj: lib1938.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1938-lib1938.obj `if test -f 'lib1938.c'; then $(CYGPATH_W) 'lib1938.c'; else $(CYGPATH_W) '$(srcdir)/lib1938.c'; fi`
+../../lib/lib1938-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1938-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1938-timediff.Tpo -c -o ../../lib/lib1938-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1938-timediff.Tpo ../../lib/$(DEPDIR)/lib1938-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1938-timediff.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) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1938-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1938-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1938-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1938-timediff.Tpo -c -o ../../lib/lib1938-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1938-timediff.Tpo ../../lib/$(DEPDIR)/lib1938-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1938-timediff.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) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1938-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1938-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1938-first.o -MD -MP -MF $(DEPDIR)/lib1938-first.Tpo -c -o lib1938-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1938-first.Tpo $(DEPDIR)/lib1938-first.Po
@@ -8316,6 +10603,20 @@ lib1939-lib1939.obj: lib1939.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1939-lib1939.obj `if test -f 'lib1939.c'; then $(CYGPATH_W) 'lib1939.c'; else $(CYGPATH_W) '$(srcdir)/lib1939.c'; fi`
+../../lib/lib1939-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1939-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1939-timediff.Tpo -c -o ../../lib/lib1939-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1939-timediff.Tpo ../../lib/$(DEPDIR)/lib1939-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1939-timediff.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) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1939-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1939-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1939-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1939-timediff.Tpo -c -o ../../lib/lib1939-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1939-timediff.Tpo ../../lib/$(DEPDIR)/lib1939-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1939-timediff.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) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1939-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib1939-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1939-first.o -MD -MP -MF $(DEPDIR)/lib1939-first.Tpo -c -o lib1939-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1939-first.Tpo $(DEPDIR)/lib1939-first.Po
@@ -8330,6 +10631,286 @@ lib1939-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) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1939-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+lib1940-lib1940.o: lib1940.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1940-lib1940.o -MD -MP -MF $(DEPDIR)/lib1940-lib1940.Tpo -c -o lib1940-lib1940.o `test -f 'lib1940.c' || echo '$(srcdir)/'`lib1940.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1940-lib1940.Tpo $(DEPDIR)/lib1940-lib1940.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1940.c' object='lib1940-lib1940.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) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1940-lib1940.o `test -f 'lib1940.c' || echo '$(srcdir)/'`lib1940.c
+
+lib1940-lib1940.obj: lib1940.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1940-lib1940.obj -MD -MP -MF $(DEPDIR)/lib1940-lib1940.Tpo -c -o lib1940-lib1940.obj `if test -f 'lib1940.c'; then $(CYGPATH_W) 'lib1940.c'; else $(CYGPATH_W) '$(srcdir)/lib1940.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1940-lib1940.Tpo $(DEPDIR)/lib1940-lib1940.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1940.c' object='lib1940-lib1940.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) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1940-lib1940.obj `if test -f 'lib1940.c'; then $(CYGPATH_W) 'lib1940.c'; else $(CYGPATH_W) '$(srcdir)/lib1940.c'; fi`
+
+../../lib/lib1940-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1940-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1940-timediff.Tpo -c -o ../../lib/lib1940-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1940-timediff.Tpo ../../lib/$(DEPDIR)/lib1940-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1940-timediff.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) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1940-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1940-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1940-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1940-timediff.Tpo -c -o ../../lib/lib1940-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1940-timediff.Tpo ../../lib/$(DEPDIR)/lib1940-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1940-timediff.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) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1940-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1940-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1940-first.o -MD -MP -MF $(DEPDIR)/lib1940-first.Tpo -c -o lib1940-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1940-first.Tpo $(DEPDIR)/lib1940-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1940-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) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1940-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1940-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1940-first.obj -MD -MP -MF $(DEPDIR)/lib1940-first.Tpo -c -o lib1940-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)/lib1940-first.Tpo $(DEPDIR)/lib1940-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1940-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) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1940-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1945-lib1945.o: lib1945.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1945-lib1945.o -MD -MP -MF $(DEPDIR)/lib1945-lib1945.Tpo -c -o lib1945-lib1945.o `test -f 'lib1945.c' || echo '$(srcdir)/'`lib1945.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1945-lib1945.Tpo $(DEPDIR)/lib1945-lib1945.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1945.c' object='lib1945-lib1945.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) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1945-lib1945.o `test -f 'lib1945.c' || echo '$(srcdir)/'`lib1945.c
+
+lib1945-lib1945.obj: lib1945.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1945-lib1945.obj -MD -MP -MF $(DEPDIR)/lib1945-lib1945.Tpo -c -o lib1945-lib1945.obj `if test -f 'lib1945.c'; then $(CYGPATH_W) 'lib1945.c'; else $(CYGPATH_W) '$(srcdir)/lib1945.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1945-lib1945.Tpo $(DEPDIR)/lib1945-lib1945.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1945.c' object='lib1945-lib1945.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) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1945-lib1945.obj `if test -f 'lib1945.c'; then $(CYGPATH_W) 'lib1945.c'; else $(CYGPATH_W) '$(srcdir)/lib1945.c'; fi`
+
+../../lib/lib1945-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1945-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1945-timediff.Tpo -c -o ../../lib/lib1945-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1945-timediff.Tpo ../../lib/$(DEPDIR)/lib1945-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1945-timediff.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) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1945-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1945-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1945-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1945-timediff.Tpo -c -o ../../lib/lib1945-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1945-timediff.Tpo ../../lib/$(DEPDIR)/lib1945-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1945-timediff.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) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1945-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1945-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1945-first.o -MD -MP -MF $(DEPDIR)/lib1945-first.Tpo -c -o lib1945-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1945-first.Tpo $(DEPDIR)/lib1945-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1945-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) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1945-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1945-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1945-first.obj -MD -MP -MF $(DEPDIR)/lib1945-first.Tpo -c -o lib1945-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)/lib1945-first.Tpo $(DEPDIR)/lib1945-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1945-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) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1945-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1946-lib1940.o: lib1940.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1946-lib1940.o -MD -MP -MF $(DEPDIR)/lib1946-lib1940.Tpo -c -o lib1946-lib1940.o `test -f 'lib1940.c' || echo '$(srcdir)/'`lib1940.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1946-lib1940.Tpo $(DEPDIR)/lib1946-lib1940.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1940.c' object='lib1946-lib1940.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) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1946-lib1940.o `test -f 'lib1940.c' || echo '$(srcdir)/'`lib1940.c
+
+lib1946-lib1940.obj: lib1940.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1946-lib1940.obj -MD -MP -MF $(DEPDIR)/lib1946-lib1940.Tpo -c -o lib1946-lib1940.obj `if test -f 'lib1940.c'; then $(CYGPATH_W) 'lib1940.c'; else $(CYGPATH_W) '$(srcdir)/lib1940.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1946-lib1940.Tpo $(DEPDIR)/lib1946-lib1940.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1940.c' object='lib1946-lib1940.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) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1946-lib1940.obj `if test -f 'lib1940.c'; then $(CYGPATH_W) 'lib1940.c'; else $(CYGPATH_W) '$(srcdir)/lib1940.c'; fi`
+
+../../lib/lib1946-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1946-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1946-timediff.Tpo -c -o ../../lib/lib1946-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1946-timediff.Tpo ../../lib/$(DEPDIR)/lib1946-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1946-timediff.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) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1946-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1946-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1946-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1946-timediff.Tpo -c -o ../../lib/lib1946-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1946-timediff.Tpo ../../lib/$(DEPDIR)/lib1946-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1946-timediff.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) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1946-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1946-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1946-first.o -MD -MP -MF $(DEPDIR)/lib1946-first.Tpo -c -o lib1946-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1946-first.Tpo $(DEPDIR)/lib1946-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1946-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) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1946-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1946-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1946-first.obj -MD -MP -MF $(DEPDIR)/lib1946-first.Tpo -c -o lib1946-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)/lib1946-first.Tpo $(DEPDIR)/lib1946-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1946-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) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1946-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1947-lib1947.o: lib1947.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1947-lib1947.o -MD -MP -MF $(DEPDIR)/lib1947-lib1947.Tpo -c -o lib1947-lib1947.o `test -f 'lib1947.c' || echo '$(srcdir)/'`lib1947.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1947-lib1947.Tpo $(DEPDIR)/lib1947-lib1947.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1947.c' object='lib1947-lib1947.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) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1947-lib1947.o `test -f 'lib1947.c' || echo '$(srcdir)/'`lib1947.c
+
+lib1947-lib1947.obj: lib1947.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1947-lib1947.obj -MD -MP -MF $(DEPDIR)/lib1947-lib1947.Tpo -c -o lib1947-lib1947.obj `if test -f 'lib1947.c'; then $(CYGPATH_W) 'lib1947.c'; else $(CYGPATH_W) '$(srcdir)/lib1947.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1947-lib1947.Tpo $(DEPDIR)/lib1947-lib1947.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1947.c' object='lib1947-lib1947.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) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1947-lib1947.obj `if test -f 'lib1947.c'; then $(CYGPATH_W) 'lib1947.c'; else $(CYGPATH_W) '$(srcdir)/lib1947.c'; fi`
+
+../../lib/lib1947-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1947-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1947-timediff.Tpo -c -o ../../lib/lib1947-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1947-timediff.Tpo ../../lib/$(DEPDIR)/lib1947-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1947-timediff.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) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1947-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1947-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1947-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1947-timediff.Tpo -c -o ../../lib/lib1947-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1947-timediff.Tpo ../../lib/$(DEPDIR)/lib1947-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1947-timediff.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) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1947-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1947-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1947-first.o -MD -MP -MF $(DEPDIR)/lib1947-first.Tpo -c -o lib1947-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1947-first.Tpo $(DEPDIR)/lib1947-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1947-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) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1947-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1947-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1947-first.obj -MD -MP -MF $(DEPDIR)/lib1947-first.Tpo -c -o lib1947-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)/lib1947-first.Tpo $(DEPDIR)/lib1947-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1947-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) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1947-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1948-lib1948.o: lib1948.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1948-lib1948.o -MD -MP -MF $(DEPDIR)/lib1948-lib1948.Tpo -c -o lib1948-lib1948.o `test -f 'lib1948.c' || echo '$(srcdir)/'`lib1948.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1948-lib1948.Tpo $(DEPDIR)/lib1948-lib1948.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1948.c' object='lib1948-lib1948.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) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1948-lib1948.o `test -f 'lib1948.c' || echo '$(srcdir)/'`lib1948.c
+
+lib1948-lib1948.obj: lib1948.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1948-lib1948.obj -MD -MP -MF $(DEPDIR)/lib1948-lib1948.Tpo -c -o lib1948-lib1948.obj `if test -f 'lib1948.c'; then $(CYGPATH_W) 'lib1948.c'; else $(CYGPATH_W) '$(srcdir)/lib1948.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1948-lib1948.Tpo $(DEPDIR)/lib1948-lib1948.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1948.c' object='lib1948-lib1948.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) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1948-lib1948.obj `if test -f 'lib1948.c'; then $(CYGPATH_W) 'lib1948.c'; else $(CYGPATH_W) '$(srcdir)/lib1948.c'; fi`
+
+../../lib/lib1948-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1948-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1948-timediff.Tpo -c -o ../../lib/lib1948-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1948-timediff.Tpo ../../lib/$(DEPDIR)/lib1948-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1948-timediff.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) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1948-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1948-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1948-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1948-timediff.Tpo -c -o ../../lib/lib1948-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1948-timediff.Tpo ../../lib/$(DEPDIR)/lib1948-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1948-timediff.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) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1948-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1948-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1948-first.o -MD -MP -MF $(DEPDIR)/lib1948-first.Tpo -c -o lib1948-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1948-first.Tpo $(DEPDIR)/lib1948-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1948-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) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1948-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1948-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1948-first.obj -MD -MP -MF $(DEPDIR)/lib1948-first.Tpo -c -o lib1948-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)/lib1948-first.Tpo $(DEPDIR)/lib1948-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1948-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) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1948-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1955-lib1955.o: lib1955.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-lib1955.o -MD -MP -MF $(DEPDIR)/lib1955-lib1955.Tpo -c -o lib1955-lib1955.o `test -f 'lib1955.c' || echo '$(srcdir)/'`lib1955.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-lib1955.Tpo $(DEPDIR)/lib1955-lib1955.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1955.c' object='lib1955-lib1955.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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-lib1955.o `test -f 'lib1955.c' || echo '$(srcdir)/'`lib1955.c
+
+lib1955-lib1955.obj: lib1955.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-lib1955.obj -MD -MP -MF $(DEPDIR)/lib1955-lib1955.Tpo -c -o lib1955-lib1955.obj `if test -f 'lib1955.c'; then $(CYGPATH_W) 'lib1955.c'; else $(CYGPATH_W) '$(srcdir)/lib1955.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-lib1955.Tpo $(DEPDIR)/lib1955-lib1955.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1955.c' object='lib1955-lib1955.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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-lib1955.obj `if test -f 'lib1955.c'; then $(CYGPATH_W) 'lib1955.c'; else $(CYGPATH_W) '$(srcdir)/lib1955.c'; fi`
+
+../../lib/lib1955-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1955-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1955-timediff.Tpo -c -o ../../lib/lib1955-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1955-timediff.Tpo ../../lib/$(DEPDIR)/lib1955-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1955-timediff.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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1955-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1955-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1955-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1955-timediff.Tpo -c -o ../../lib/lib1955-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1955-timediff.Tpo ../../lib/$(DEPDIR)/lib1955-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1955-timediff.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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1955-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1955-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-first.o -MD -MP -MF $(DEPDIR)/lib1955-first.Tpo -c -o lib1955-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-first.Tpo $(DEPDIR)/lib1955-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1955-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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1955-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-first.obj -MD -MP -MF $(DEPDIR)/lib1955-first.Tpo -c -o lib1955-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)/lib1955-first.Tpo $(DEPDIR)/lib1955-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1955-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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1955-testutil.o: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-testutil.o -MD -MP -MF $(DEPDIR)/lib1955-testutil.Tpo -c -o lib1955-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-testutil.Tpo $(DEPDIR)/lib1955-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1955-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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1955-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-testutil.obj -MD -MP -MF $(DEPDIR)/lib1955-testutil.Tpo -c -o lib1955-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)/lib1955-testutil.Tpo $(DEPDIR)/lib1955-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1955-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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1955-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1955-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1955-warnless.Tpo -c -o ../../lib/lib1955-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1955-warnless.Tpo ../../lib/$(DEPDIR)/lib1955-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1955-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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1955-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1955-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1955-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1955-warnless.Tpo -c -o ../../lib/lib1955-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)/lib1955-warnless.Tpo ../../lib/$(DEPDIR)/lib1955-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1955-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) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1955-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
lib3010-lib3010.o: lib3010.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3010-lib3010.o -MD -MP -MF $(DEPDIR)/lib3010-lib3010.Tpo -c -o lib3010-lib3010.o `test -f 'lib3010.c' || echo '$(srcdir)/'`lib3010.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3010-lib3010.Tpo $(DEPDIR)/lib3010-lib3010.Po
@@ -8344,6 +10925,20 @@ lib3010-lib3010.obj: lib3010.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3010-lib3010.obj `if test -f 'lib3010.c'; then $(CYGPATH_W) 'lib3010.c'; else $(CYGPATH_W) '$(srcdir)/lib3010.c'; fi`
+../../lib/lib3010-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3010-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3010-timediff.Tpo -c -o ../../lib/lib3010-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3010-timediff.Tpo ../../lib/$(DEPDIR)/lib3010-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3010-timediff.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) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3010-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib3010-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3010-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3010-timediff.Tpo -c -o ../../lib/lib3010-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3010-timediff.Tpo ../../lib/$(DEPDIR)/lib3010-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3010-timediff.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) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3010-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib3010-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3010-first.o -MD -MP -MF $(DEPDIR)/lib3010-first.Tpo -c -o lib3010-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3010-first.Tpo $(DEPDIR)/lib3010-first.Po
@@ -8400,6 +10995,20 @@ lib3025-lib3025.obj: lib3025.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3025-lib3025.obj `if test -f 'lib3025.c'; then $(CYGPATH_W) 'lib3025.c'; else $(CYGPATH_W) '$(srcdir)/lib3025.c'; fi`
+../../lib/lib3025-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3025-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3025-timediff.Tpo -c -o ../../lib/lib3025-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3025-timediff.Tpo ../../lib/$(DEPDIR)/lib3025-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3025-timediff.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) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3025-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib3025-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3025-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3025-timediff.Tpo -c -o ../../lib/lib3025-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3025-timediff.Tpo ../../lib/$(DEPDIR)/lib3025-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3025-timediff.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) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3025-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib3025-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3025-first.o -MD -MP -MF $(DEPDIR)/lib3025-first.Tpo -c -o lib3025-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3025-first.Tpo $(DEPDIR)/lib3025-first.Po
@@ -8442,6 +11051,146 @@ lib3025-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) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3025-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+lib3026-lib3026.o: lib3026.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-lib3026.o -MD -MP -MF $(DEPDIR)/lib3026-lib3026.Tpo -c -o lib3026-lib3026.o `test -f 'lib3026.c' || echo '$(srcdir)/'`lib3026.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-lib3026.Tpo $(DEPDIR)/lib3026-lib3026.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib3026.c' object='lib3026-lib3026.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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-lib3026.o `test -f 'lib3026.c' || echo '$(srcdir)/'`lib3026.c
+
+lib3026-lib3026.obj: lib3026.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-lib3026.obj -MD -MP -MF $(DEPDIR)/lib3026-lib3026.Tpo -c -o lib3026-lib3026.obj `if test -f 'lib3026.c'; then $(CYGPATH_W) 'lib3026.c'; else $(CYGPATH_W) '$(srcdir)/lib3026.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-lib3026.Tpo $(DEPDIR)/lib3026-lib3026.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib3026.c' object='lib3026-lib3026.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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-lib3026.obj `if test -f 'lib3026.c'; then $(CYGPATH_W) 'lib3026.c'; else $(CYGPATH_W) '$(srcdir)/lib3026.c'; fi`
+
+../../lib/lib3026-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3026-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3026-timediff.Tpo -c -o ../../lib/lib3026-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3026-timediff.Tpo ../../lib/$(DEPDIR)/lib3026-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3026-timediff.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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3026-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib3026-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3026-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3026-timediff.Tpo -c -o ../../lib/lib3026-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3026-timediff.Tpo ../../lib/$(DEPDIR)/lib3026-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3026-timediff.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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3026-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib3026-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-first.o -MD -MP -MF $(DEPDIR)/lib3026-first.Tpo -c -o lib3026-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-first.Tpo $(DEPDIR)/lib3026-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib3026-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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib3026-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-first.obj -MD -MP -MF $(DEPDIR)/lib3026-first.Tpo -c -o lib3026-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)/lib3026-first.Tpo $(DEPDIR)/lib3026-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib3026-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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib3026-testutil.o: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-testutil.o -MD -MP -MF $(DEPDIR)/lib3026-testutil.Tpo -c -o lib3026-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-testutil.Tpo $(DEPDIR)/lib3026-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib3026-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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib3026-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-testutil.obj -MD -MP -MF $(DEPDIR)/lib3026-testutil.Tpo -c -o lib3026-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)/lib3026-testutil.Tpo $(DEPDIR)/lib3026-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib3026-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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib3026-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3026-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3026-warnless.Tpo -c -o ../../lib/lib3026-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3026-warnless.Tpo ../../lib/$(DEPDIR)/lib3026-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib3026-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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3026-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib3026-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3026-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3026-warnless.Tpo -c -o ../../lib/lib3026-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)/lib3026-warnless.Tpo ../../lib/$(DEPDIR)/lib3026-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib3026-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) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3026-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib3027-lib3027.o: lib3027.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-lib3027.o -MD -MP -MF $(DEPDIR)/lib3027-lib3027.Tpo -c -o lib3027-lib3027.o `test -f 'lib3027.c' || echo '$(srcdir)/'`lib3027.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-lib3027.Tpo $(DEPDIR)/lib3027-lib3027.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib3027.c' object='lib3027-lib3027.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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-lib3027.o `test -f 'lib3027.c' || echo '$(srcdir)/'`lib3027.c
+
+lib3027-lib3027.obj: lib3027.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-lib3027.obj -MD -MP -MF $(DEPDIR)/lib3027-lib3027.Tpo -c -o lib3027-lib3027.obj `if test -f 'lib3027.c'; then $(CYGPATH_W) 'lib3027.c'; else $(CYGPATH_W) '$(srcdir)/lib3027.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-lib3027.Tpo $(DEPDIR)/lib3027-lib3027.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib3027.c' object='lib3027-lib3027.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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-lib3027.obj `if test -f 'lib3027.c'; then $(CYGPATH_W) 'lib3027.c'; else $(CYGPATH_W) '$(srcdir)/lib3027.c'; fi`
+
+../../lib/lib3027-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3027-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3027-timediff.Tpo -c -o ../../lib/lib3027-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3027-timediff.Tpo ../../lib/$(DEPDIR)/lib3027-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3027-timediff.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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3027-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib3027-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3027-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3027-timediff.Tpo -c -o ../../lib/lib3027-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3027-timediff.Tpo ../../lib/$(DEPDIR)/lib3027-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3027-timediff.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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3027-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib3027-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-first.o -MD -MP -MF $(DEPDIR)/lib3027-first.Tpo -c -o lib3027-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-first.Tpo $(DEPDIR)/lib3027-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib3027-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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib3027-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-first.obj -MD -MP -MF $(DEPDIR)/lib3027-first.Tpo -c -o lib3027-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)/lib3027-first.Tpo $(DEPDIR)/lib3027-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib3027-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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib3027-testutil.o: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-testutil.o -MD -MP -MF $(DEPDIR)/lib3027-testutil.Tpo -c -o lib3027-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-testutil.Tpo $(DEPDIR)/lib3027-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib3027-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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib3027-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-testutil.obj -MD -MP -MF $(DEPDIR)/lib3027-testutil.Tpo -c -o lib3027-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)/lib3027-testutil.Tpo $(DEPDIR)/lib3027-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib3027-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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib3027-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3027-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3027-warnless.Tpo -c -o ../../lib/lib3027-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3027-warnless.Tpo ../../lib/$(DEPDIR)/lib3027-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib3027-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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3027-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib3027-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3027-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3027-warnless.Tpo -c -o ../../lib/lib3027-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)/lib3027-warnless.Tpo ../../lib/$(DEPDIR)/lib3027-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib3027-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) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3027-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
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib500-lib500.Tpo $(DEPDIR)/lib500-lib500.Po
@@ -8456,6 +11205,20 @@ lib500-lib500.obj: lib500.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib500-lib500.obj `if test -f 'lib500.c'; then $(CYGPATH_W) 'lib500.c'; else $(CYGPATH_W) '$(srcdir)/lib500.c'; fi`
+../../lib/lib500-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib500-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib500-timediff.Tpo -c -o ../../lib/lib500-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib500-timediff.Tpo ../../lib/$(DEPDIR)/lib500-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib500-timediff.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) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib500-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib500-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib500-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib500-timediff.Tpo -c -o ../../lib/lib500-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib500-timediff.Tpo ../../lib/$(DEPDIR)/lib500-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib500-timediff.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) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib500-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib500-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib500-first.o -MD -MP -MF $(DEPDIR)/lib500-first.Tpo -c -o lib500-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib500-first.Tpo $(DEPDIR)/lib500-first.Po
@@ -8526,6 +11289,20 @@ lib501-lib501.obj: lib501.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib501-lib501.obj `if test -f 'lib501.c'; then $(CYGPATH_W) 'lib501.c'; else $(CYGPATH_W) '$(srcdir)/lib501.c'; fi`
+../../lib/lib501-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib501-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib501-timediff.Tpo -c -o ../../lib/lib501-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib501-timediff.Tpo ../../lib/$(DEPDIR)/lib501-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib501-timediff.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) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib501-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib501-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib501-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib501-timediff.Tpo -c -o ../../lib/lib501-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib501-timediff.Tpo ../../lib/$(DEPDIR)/lib501-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib501-timediff.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) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib501-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib501-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib501-first.o -MD -MP -MF $(DEPDIR)/lib501-first.Tpo -c -o lib501-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib501-first.Tpo $(DEPDIR)/lib501-first.Po
@@ -8554,6 +11331,20 @@ lib502-lib502.obj: lib502.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-lib502.obj `if test -f 'lib502.c'; then $(CYGPATH_W) 'lib502.c'; else $(CYGPATH_W) '$(srcdir)/lib502.c'; fi`
+../../lib/lib502-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib502-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib502-timediff.Tpo -c -o ../../lib/lib502-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib502-timediff.Tpo ../../lib/$(DEPDIR)/lib502-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib502-timediff.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) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib502-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib502-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib502-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib502-timediff.Tpo -c -o ../../lib/lib502-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib502-timediff.Tpo ../../lib/$(DEPDIR)/lib502-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib502-timediff.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) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib502-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib502-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib502-first.o -MD -MP -MF $(DEPDIR)/lib502-first.Tpo -c -o lib502-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib502-first.Tpo $(DEPDIR)/lib502-first.Po
@@ -8610,6 +11401,20 @@ lib503-lib503.obj: lib503.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-lib503.obj `if test -f 'lib503.c'; then $(CYGPATH_W) 'lib503.c'; else $(CYGPATH_W) '$(srcdir)/lib503.c'; fi`
+../../lib/lib503-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib503-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib503-timediff.Tpo -c -o ../../lib/lib503-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib503-timediff.Tpo ../../lib/$(DEPDIR)/lib503-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib503-timediff.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) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib503-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib503-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib503-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib503-timediff.Tpo -c -o ../../lib/lib503-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib503-timediff.Tpo ../../lib/$(DEPDIR)/lib503-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib503-timediff.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) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib503-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib503-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib503-first.o -MD -MP -MF $(DEPDIR)/lib503-first.Tpo -c -o lib503-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib503-first.Tpo $(DEPDIR)/lib503-first.Po
@@ -8666,6 +11471,20 @@ lib504-lib504.obj: lib504.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-lib504.obj `if test -f 'lib504.c'; then $(CYGPATH_W) 'lib504.c'; else $(CYGPATH_W) '$(srcdir)/lib504.c'; fi`
+../../lib/lib504-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib504-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib504-timediff.Tpo -c -o ../../lib/lib504-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib504-timediff.Tpo ../../lib/$(DEPDIR)/lib504-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib504-timediff.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) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib504-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib504-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib504-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib504-timediff.Tpo -c -o ../../lib/lib504-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib504-timediff.Tpo ../../lib/$(DEPDIR)/lib504-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib504-timediff.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) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib504-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib504-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib504-first.o -MD -MP -MF $(DEPDIR)/lib504-first.Tpo -c -o lib504-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib504-first.Tpo $(DEPDIR)/lib504-first.Po
@@ -8722,6 +11541,20 @@ lib505-lib505.obj: lib505.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib505-lib505.obj `if test -f 'lib505.c'; then $(CYGPATH_W) 'lib505.c'; else $(CYGPATH_W) '$(srcdir)/lib505.c'; fi`
+../../lib/lib505-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib505-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib505-timediff.Tpo -c -o ../../lib/lib505-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib505-timediff.Tpo ../../lib/$(DEPDIR)/lib505-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib505-timediff.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) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib505-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib505-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib505-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib505-timediff.Tpo -c -o ../../lib/lib505-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib505-timediff.Tpo ../../lib/$(DEPDIR)/lib505-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib505-timediff.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) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib505-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib505-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib505-first.o -MD -MP -MF $(DEPDIR)/lib505-first.Tpo -c -o lib505-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib505-first.Tpo $(DEPDIR)/lib505-first.Po
@@ -8764,6 +11597,20 @@ lib506-lib506.obj: lib506.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib506-lib506.obj `if test -f 'lib506.c'; then $(CYGPATH_W) 'lib506.c'; else $(CYGPATH_W) '$(srcdir)/lib506.c'; fi`
+../../lib/lib506-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib506-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib506-timediff.Tpo -c -o ../../lib/lib506-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib506-timediff.Tpo ../../lib/$(DEPDIR)/lib506-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib506-timediff.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) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib506-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib506-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib506-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib506-timediff.Tpo -c -o ../../lib/lib506-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib506-timediff.Tpo ../../lib/$(DEPDIR)/lib506-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib506-timediff.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) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib506-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib506-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib506-first.o -MD -MP -MF $(DEPDIR)/lib506-first.Tpo -c -o lib506-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib506-first.Tpo $(DEPDIR)/lib506-first.Po
@@ -8792,6 +11639,20 @@ lib507-lib507.obj: lib507.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-lib507.obj `if test -f 'lib507.c'; then $(CYGPATH_W) 'lib507.c'; else $(CYGPATH_W) '$(srcdir)/lib507.c'; fi`
+../../lib/lib507-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib507-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib507-timediff.Tpo -c -o ../../lib/lib507-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib507-timediff.Tpo ../../lib/$(DEPDIR)/lib507-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib507-timediff.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) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib507-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib507-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib507-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib507-timediff.Tpo -c -o ../../lib/lib507-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib507-timediff.Tpo ../../lib/$(DEPDIR)/lib507-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib507-timediff.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) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib507-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib507-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib507-first.o -MD -MP -MF $(DEPDIR)/lib507-first.Tpo -c -o lib507-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib507-first.Tpo $(DEPDIR)/lib507-first.Po
@@ -8848,6 +11709,20 @@ lib508-lib508.obj: lib508.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib508-lib508.obj `if test -f 'lib508.c'; then $(CYGPATH_W) 'lib508.c'; else $(CYGPATH_W) '$(srcdir)/lib508.c'; fi`
+../../lib/lib508-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib508-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib508-timediff.Tpo -c -o ../../lib/lib508-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib508-timediff.Tpo ../../lib/$(DEPDIR)/lib508-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib508-timediff.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) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib508-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib508-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib508-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib508-timediff.Tpo -c -o ../../lib/lib508-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib508-timediff.Tpo ../../lib/$(DEPDIR)/lib508-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib508-timediff.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) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib508-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib508-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib508-first.o -MD -MP -MF $(DEPDIR)/lib508-first.Tpo -c -o lib508-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib508-first.Tpo $(DEPDIR)/lib508-first.Po
@@ -8876,6 +11751,20 @@ lib509-lib509.obj: lib509.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib509-lib509.obj `if test -f 'lib509.c'; then $(CYGPATH_W) 'lib509.c'; else $(CYGPATH_W) '$(srcdir)/lib509.c'; fi`
+../../lib/lib509-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib509-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib509-timediff.Tpo -c -o ../../lib/lib509-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib509-timediff.Tpo ../../lib/$(DEPDIR)/lib509-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib509-timediff.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) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib509-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib509-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib509-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib509-timediff.Tpo -c -o ../../lib/lib509-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib509-timediff.Tpo ../../lib/$(DEPDIR)/lib509-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib509-timediff.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) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib509-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib509-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib509-first.o -MD -MP -MF $(DEPDIR)/lib509-first.Tpo -c -o lib509-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib509-first.Tpo $(DEPDIR)/lib509-first.Po
@@ -8904,6 +11793,20 @@ lib510-lib510.obj: lib510.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib510-lib510.obj `if test -f 'lib510.c'; then $(CYGPATH_W) 'lib510.c'; else $(CYGPATH_W) '$(srcdir)/lib510.c'; fi`
+../../lib/lib510-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib510-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib510-timediff.Tpo -c -o ../../lib/lib510-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib510-timediff.Tpo ../../lib/$(DEPDIR)/lib510-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib510-timediff.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) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib510-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib510-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib510-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib510-timediff.Tpo -c -o ../../lib/lib510-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib510-timediff.Tpo ../../lib/$(DEPDIR)/lib510-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib510-timediff.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) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib510-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib510-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib510-first.o -MD -MP -MF $(DEPDIR)/lib510-first.Tpo -c -o lib510-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib510-first.Tpo $(DEPDIR)/lib510-first.Po
@@ -8932,6 +11835,20 @@ lib511-lib511.obj: lib511.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib511-lib511.obj `if test -f 'lib511.c'; then $(CYGPATH_W) 'lib511.c'; else $(CYGPATH_W) '$(srcdir)/lib511.c'; fi`
+../../lib/lib511-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib511-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib511-timediff.Tpo -c -o ../../lib/lib511-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib511-timediff.Tpo ../../lib/$(DEPDIR)/lib511-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib511-timediff.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) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib511-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib511-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib511-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib511-timediff.Tpo -c -o ../../lib/lib511-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib511-timediff.Tpo ../../lib/$(DEPDIR)/lib511-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib511-timediff.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) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib511-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib511-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib511-first.o -MD -MP -MF $(DEPDIR)/lib511-first.Tpo -c -o lib511-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib511-first.Tpo $(DEPDIR)/lib511-first.Po
@@ -8960,6 +11877,20 @@ lib512-lib512.obj: lib512.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib512-lib512.obj `if test -f 'lib512.c'; then $(CYGPATH_W) 'lib512.c'; else $(CYGPATH_W) '$(srcdir)/lib512.c'; fi`
+../../lib/lib512-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib512-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib512-timediff.Tpo -c -o ../../lib/lib512-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib512-timediff.Tpo ../../lib/$(DEPDIR)/lib512-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib512-timediff.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) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib512-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib512-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib512-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib512-timediff.Tpo -c -o ../../lib/lib512-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib512-timediff.Tpo ../../lib/$(DEPDIR)/lib512-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib512-timediff.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) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib512-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib512-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib512-first.o -MD -MP -MF $(DEPDIR)/lib512-first.Tpo -c -o lib512-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib512-first.Tpo $(DEPDIR)/lib512-first.Po
@@ -8988,6 +11919,20 @@ lib513-lib513.obj: lib513.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib513-lib513.obj `if test -f 'lib513.c'; then $(CYGPATH_W) 'lib513.c'; else $(CYGPATH_W) '$(srcdir)/lib513.c'; fi`
+../../lib/lib513-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib513-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib513-timediff.Tpo -c -o ../../lib/lib513-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib513-timediff.Tpo ../../lib/$(DEPDIR)/lib513-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib513-timediff.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) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib513-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib513-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib513-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib513-timediff.Tpo -c -o ../../lib/lib513-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib513-timediff.Tpo ../../lib/$(DEPDIR)/lib513-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib513-timediff.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) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib513-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib513-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib513-first.o -MD -MP -MF $(DEPDIR)/lib513-first.Tpo -c -o lib513-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib513-first.Tpo $(DEPDIR)/lib513-first.Po
@@ -9016,6 +11961,20 @@ lib514-lib514.obj: lib514.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib514-lib514.obj `if test -f 'lib514.c'; then $(CYGPATH_W) 'lib514.c'; else $(CYGPATH_W) '$(srcdir)/lib514.c'; fi`
+../../lib/lib514-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib514-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib514-timediff.Tpo -c -o ../../lib/lib514-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib514-timediff.Tpo ../../lib/$(DEPDIR)/lib514-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib514-timediff.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) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib514-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib514-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib514-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib514-timediff.Tpo -c -o ../../lib/lib514-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib514-timediff.Tpo ../../lib/$(DEPDIR)/lib514-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib514-timediff.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) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib514-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib514-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib514-first.o -MD -MP -MF $(DEPDIR)/lib514-first.Tpo -c -o lib514-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib514-first.Tpo $(DEPDIR)/lib514-first.Po
@@ -9044,6 +12003,20 @@ lib515-lib515.obj: lib515.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib515-lib515.obj `if test -f 'lib515.c'; then $(CYGPATH_W) 'lib515.c'; else $(CYGPATH_W) '$(srcdir)/lib515.c'; fi`
+../../lib/lib515-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib515-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib515-timediff.Tpo -c -o ../../lib/lib515-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib515-timediff.Tpo ../../lib/$(DEPDIR)/lib515-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib515-timediff.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) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib515-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib515-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib515-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib515-timediff.Tpo -c -o ../../lib/lib515-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib515-timediff.Tpo ../../lib/$(DEPDIR)/lib515-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib515-timediff.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) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib515-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib515-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib515-first.o -MD -MP -MF $(DEPDIR)/lib515-first.Tpo -c -o lib515-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib515-first.Tpo $(DEPDIR)/lib515-first.Po
@@ -9072,6 +12045,20 @@ lib516-lib516.obj: lib516.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib516-lib516.obj `if test -f 'lib516.c'; then $(CYGPATH_W) 'lib516.c'; else $(CYGPATH_W) '$(srcdir)/lib516.c'; fi`
+../../lib/lib516-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib516-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib516-timediff.Tpo -c -o ../../lib/lib516-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib516-timediff.Tpo ../../lib/$(DEPDIR)/lib516-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib516-timediff.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) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib516-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib516-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib516-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib516-timediff.Tpo -c -o ../../lib/lib516-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib516-timediff.Tpo ../../lib/$(DEPDIR)/lib516-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib516-timediff.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) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib516-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib516-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib516-first.o -MD -MP -MF $(DEPDIR)/lib516-first.Tpo -c -o lib516-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib516-first.Tpo $(DEPDIR)/lib516-first.Po
@@ -9100,6 +12087,20 @@ lib517-lib517.obj: lib517.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib517-lib517.obj `if test -f 'lib517.c'; then $(CYGPATH_W) 'lib517.c'; else $(CYGPATH_W) '$(srcdir)/lib517.c'; fi`
+../../lib/lib517-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib517-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib517-timediff.Tpo -c -o ../../lib/lib517-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib517-timediff.Tpo ../../lib/$(DEPDIR)/lib517-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib517-timediff.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) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib517-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib517-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib517-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib517-timediff.Tpo -c -o ../../lib/lib517-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib517-timediff.Tpo ../../lib/$(DEPDIR)/lib517-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib517-timediff.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) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib517-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib517-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib517-first.o -MD -MP -MF $(DEPDIR)/lib517-first.Tpo -c -o lib517-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib517-first.Tpo $(DEPDIR)/lib517-first.Po
@@ -9128,6 +12129,20 @@ lib518-lib518.obj: lib518.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-lib518.obj `if test -f 'lib518.c'; then $(CYGPATH_W) 'lib518.c'; else $(CYGPATH_W) '$(srcdir)/lib518.c'; fi`
+../../lib/lib518-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib518-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib518-timediff.Tpo -c -o ../../lib/lib518-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib518-timediff.Tpo ../../lib/$(DEPDIR)/lib518-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib518-timediff.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) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib518-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib518-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib518-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib518-timediff.Tpo -c -o ../../lib/lib518-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib518-timediff.Tpo ../../lib/$(DEPDIR)/lib518-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib518-timediff.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) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib518-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib518-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib518-first.o -MD -MP -MF $(DEPDIR)/lib518-first.Tpo -c -o lib518-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib518-first.Tpo $(DEPDIR)/lib518-first.Po
@@ -9184,6 +12199,20 @@ lib519-lib519.obj: lib519.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib519-lib519.obj `if test -f 'lib519.c'; then $(CYGPATH_W) 'lib519.c'; else $(CYGPATH_W) '$(srcdir)/lib519.c'; fi`
+../../lib/lib519-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib519-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib519-timediff.Tpo -c -o ../../lib/lib519-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib519-timediff.Tpo ../../lib/$(DEPDIR)/lib519-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib519-timediff.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) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib519-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib519-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib519-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib519-timediff.Tpo -c -o ../../lib/lib519-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib519-timediff.Tpo ../../lib/$(DEPDIR)/lib519-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib519-timediff.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) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib519-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib519-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib519-first.o -MD -MP -MF $(DEPDIR)/lib519-first.Tpo -c -o lib519-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib519-first.Tpo $(DEPDIR)/lib519-first.Po
@@ -9212,6 +12241,20 @@ lib520-lib520.obj: lib520.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib520-lib520.obj `if test -f 'lib520.c'; then $(CYGPATH_W) 'lib520.c'; else $(CYGPATH_W) '$(srcdir)/lib520.c'; fi`
+../../lib/lib520-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib520-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib520-timediff.Tpo -c -o ../../lib/lib520-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib520-timediff.Tpo ../../lib/$(DEPDIR)/lib520-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib520-timediff.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) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib520-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib520-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib520-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib520-timediff.Tpo -c -o ../../lib/lib520-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib520-timediff.Tpo ../../lib/$(DEPDIR)/lib520-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib520-timediff.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) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib520-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib520-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib520-first.o -MD -MP -MF $(DEPDIR)/lib520-first.Tpo -c -o lib520-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib520-first.Tpo $(DEPDIR)/lib520-first.Po
@@ -9240,6 +12283,20 @@ lib521-lib521.obj: lib521.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib521-lib521.obj `if test -f 'lib521.c'; then $(CYGPATH_W) 'lib521.c'; else $(CYGPATH_W) '$(srcdir)/lib521.c'; fi`
+../../lib/lib521-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib521-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib521-timediff.Tpo -c -o ../../lib/lib521-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib521-timediff.Tpo ../../lib/$(DEPDIR)/lib521-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib521-timediff.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) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib521-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib521-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib521-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib521-timediff.Tpo -c -o ../../lib/lib521-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib521-timediff.Tpo ../../lib/$(DEPDIR)/lib521-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib521-timediff.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) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib521-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib521-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib521-first.o -MD -MP -MF $(DEPDIR)/lib521-first.Tpo -c -o lib521-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib521-first.Tpo $(DEPDIR)/lib521-first.Po
@@ -9268,6 +12325,20 @@ lib523-lib523.obj: lib523.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib523-lib523.obj `if test -f 'lib523.c'; then $(CYGPATH_W) 'lib523.c'; else $(CYGPATH_W) '$(srcdir)/lib523.c'; fi`
+../../lib/lib523-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib523-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib523-timediff.Tpo -c -o ../../lib/lib523-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib523-timediff.Tpo ../../lib/$(DEPDIR)/lib523-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib523-timediff.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) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib523-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib523-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib523-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib523-timediff.Tpo -c -o ../../lib/lib523-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib523-timediff.Tpo ../../lib/$(DEPDIR)/lib523-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib523-timediff.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) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib523-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib523-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib523-first.o -MD -MP -MF $(DEPDIR)/lib523-first.Tpo -c -o lib523-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib523-first.Tpo $(DEPDIR)/lib523-first.Po
@@ -9296,6 +12367,20 @@ lib524-lib524.obj: lib524.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib524-lib524.obj `if test -f 'lib524.c'; then $(CYGPATH_W) 'lib524.c'; else $(CYGPATH_W) '$(srcdir)/lib524.c'; fi`
+../../lib/lib524-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib524-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib524-timediff.Tpo -c -o ../../lib/lib524-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib524-timediff.Tpo ../../lib/$(DEPDIR)/lib524-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib524-timediff.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) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib524-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib524-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib524-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib524-timediff.Tpo -c -o ../../lib/lib524-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib524-timediff.Tpo ../../lib/$(DEPDIR)/lib524-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib524-timediff.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) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib524-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib524-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib524-first.o -MD -MP -MF $(DEPDIR)/lib524-first.Tpo -c -o lib524-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib524-first.Tpo $(DEPDIR)/lib524-first.Po
@@ -9324,6 +12409,20 @@ lib525-lib525.obj: lib525.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-lib525.obj `if test -f 'lib525.c'; then $(CYGPATH_W) 'lib525.c'; else $(CYGPATH_W) '$(srcdir)/lib525.c'; fi`
+../../lib/lib525-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib525-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib525-timediff.Tpo -c -o ../../lib/lib525-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib525-timediff.Tpo ../../lib/$(DEPDIR)/lib525-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib525-timediff.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) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib525-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib525-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib525-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib525-timediff.Tpo -c -o ../../lib/lib525-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib525-timediff.Tpo ../../lib/$(DEPDIR)/lib525-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib525-timediff.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) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib525-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib525-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib525-first.o -MD -MP -MF $(DEPDIR)/lib525-first.Tpo -c -o lib525-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib525-first.Tpo $(DEPDIR)/lib525-first.Po
@@ -9394,6 +12493,20 @@ lib526-lib526.obj: lib526.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-lib526.obj `if test -f 'lib526.c'; then $(CYGPATH_W) 'lib526.c'; else $(CYGPATH_W) '$(srcdir)/lib526.c'; fi`
+../../lib/lib526-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib526-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib526-timediff.Tpo -c -o ../../lib/lib526-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib526-timediff.Tpo ../../lib/$(DEPDIR)/lib526-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib526-timediff.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) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib526-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib526-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib526-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib526-timediff.Tpo -c -o ../../lib/lib526-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib526-timediff.Tpo ../../lib/$(DEPDIR)/lib526-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib526-timediff.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) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib526-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib526-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib526-first.o -MD -MP -MF $(DEPDIR)/lib526-first.Tpo -c -o lib526-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib526-first.Tpo $(DEPDIR)/lib526-first.Po
@@ -9450,6 +12563,20 @@ lib527-lib526.obj: lib526.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-lib526.obj `if test -f 'lib526.c'; then $(CYGPATH_W) 'lib526.c'; else $(CYGPATH_W) '$(srcdir)/lib526.c'; fi`
+../../lib/lib527-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib527-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib527-timediff.Tpo -c -o ../../lib/lib527-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib527-timediff.Tpo ../../lib/$(DEPDIR)/lib527-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib527-timediff.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) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib527-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib527-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib527-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib527-timediff.Tpo -c -o ../../lib/lib527-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib527-timediff.Tpo ../../lib/$(DEPDIR)/lib527-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib527-timediff.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) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib527-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib527-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib527-first.o -MD -MP -MF $(DEPDIR)/lib527-first.Tpo -c -o lib527-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib527-first.Tpo $(DEPDIR)/lib527-first.Po
@@ -9506,6 +12633,20 @@ lib529-lib525.obj: lib525.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-lib525.obj `if test -f 'lib525.c'; then $(CYGPATH_W) 'lib525.c'; else $(CYGPATH_W) '$(srcdir)/lib525.c'; fi`
+../../lib/lib529-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib529-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib529-timediff.Tpo -c -o ../../lib/lib529-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib529-timediff.Tpo ../../lib/$(DEPDIR)/lib529-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib529-timediff.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) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib529-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib529-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib529-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib529-timediff.Tpo -c -o ../../lib/lib529-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib529-timediff.Tpo ../../lib/$(DEPDIR)/lib529-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib529-timediff.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) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib529-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib529-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib529-first.o -MD -MP -MF $(DEPDIR)/lib529-first.Tpo -c -o lib529-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib529-first.Tpo $(DEPDIR)/lib529-first.Po
@@ -9576,6 +12717,20 @@ lib530-lib530.obj: lib530.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-lib530.obj `if test -f 'lib530.c'; then $(CYGPATH_W) 'lib530.c'; else $(CYGPATH_W) '$(srcdir)/lib530.c'; fi`
+../../lib/lib530-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib530-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib530-timediff.Tpo -c -o ../../lib/lib530-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib530-timediff.Tpo ../../lib/$(DEPDIR)/lib530-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib530-timediff.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) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib530-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib530-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib530-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib530-timediff.Tpo -c -o ../../lib/lib530-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib530-timediff.Tpo ../../lib/$(DEPDIR)/lib530-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib530-timediff.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) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib530-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib530-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib530-first.o -MD -MP -MF $(DEPDIR)/lib530-first.Tpo -c -o lib530-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib530-first.Tpo $(DEPDIR)/lib530-first.Po
@@ -9632,6 +12787,20 @@ lib532-lib526.obj: lib526.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-lib526.obj `if test -f 'lib526.c'; then $(CYGPATH_W) 'lib526.c'; else $(CYGPATH_W) '$(srcdir)/lib526.c'; fi`
+../../lib/lib532-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib532-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib532-timediff.Tpo -c -o ../../lib/lib532-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib532-timediff.Tpo ../../lib/$(DEPDIR)/lib532-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib532-timediff.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) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib532-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib532-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib532-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib532-timediff.Tpo -c -o ../../lib/lib532-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib532-timediff.Tpo ../../lib/$(DEPDIR)/lib532-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib532-timediff.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) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib532-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib532-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib532-first.o -MD -MP -MF $(DEPDIR)/lib532-first.Tpo -c -o lib532-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib532-first.Tpo $(DEPDIR)/lib532-first.Po
@@ -9688,6 +12857,20 @@ lib533-lib533.obj: lib533.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-lib533.obj `if test -f 'lib533.c'; then $(CYGPATH_W) 'lib533.c'; else $(CYGPATH_W) '$(srcdir)/lib533.c'; fi`
+../../lib/lib533-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib533-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib533-timediff.Tpo -c -o ../../lib/lib533-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib533-timediff.Tpo ../../lib/$(DEPDIR)/lib533-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib533-timediff.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) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib533-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib533-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib533-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib533-timediff.Tpo -c -o ../../lib/lib533-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib533-timediff.Tpo ../../lib/$(DEPDIR)/lib533-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib533-timediff.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) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib533-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib533-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib533-first.o -MD -MP -MF $(DEPDIR)/lib533-first.Tpo -c -o lib533-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib533-first.Tpo $(DEPDIR)/lib533-first.Po
@@ -9744,6 +12927,20 @@ lib537-lib537.obj: lib537.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-lib537.obj `if test -f 'lib537.c'; then $(CYGPATH_W) 'lib537.c'; else $(CYGPATH_W) '$(srcdir)/lib537.c'; fi`
+../../lib/lib537-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib537-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib537-timediff.Tpo -c -o ../../lib/lib537-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib537-timediff.Tpo ../../lib/$(DEPDIR)/lib537-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib537-timediff.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) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib537-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib537-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib537-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib537-timediff.Tpo -c -o ../../lib/lib537-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib537-timediff.Tpo ../../lib/$(DEPDIR)/lib537-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib537-timediff.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) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib537-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib537-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib537-first.o -MD -MP -MF $(DEPDIR)/lib537-first.Tpo -c -o lib537-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib537-first.Tpo $(DEPDIR)/lib537-first.Po
@@ -9800,6 +12997,20 @@ lib539-lib539.obj: lib539.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib539-lib539.obj `if test -f 'lib539.c'; then $(CYGPATH_W) 'lib539.c'; else $(CYGPATH_W) '$(srcdir)/lib539.c'; fi`
+../../lib/lib539-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib539-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib539-timediff.Tpo -c -o ../../lib/lib539-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib539-timediff.Tpo ../../lib/$(DEPDIR)/lib539-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib539-timediff.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) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib539-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib539-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib539-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib539-timediff.Tpo -c -o ../../lib/lib539-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib539-timediff.Tpo ../../lib/$(DEPDIR)/lib539-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib539-timediff.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) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib539-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib539-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib539-first.o -MD -MP -MF $(DEPDIR)/lib539-first.Tpo -c -o lib539-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib539-first.Tpo $(DEPDIR)/lib539-first.Po
@@ -9828,6 +13039,20 @@ lib540-lib540.obj: lib540.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-lib540.obj `if test -f 'lib540.c'; then $(CYGPATH_W) 'lib540.c'; else $(CYGPATH_W) '$(srcdir)/lib540.c'; fi`
+../../lib/lib540-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib540-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib540-timediff.Tpo -c -o ../../lib/lib540-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib540-timediff.Tpo ../../lib/$(DEPDIR)/lib540-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib540-timediff.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) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib540-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib540-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib540-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib540-timediff.Tpo -c -o ../../lib/lib540-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib540-timediff.Tpo ../../lib/$(DEPDIR)/lib540-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib540-timediff.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) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib540-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib540-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib540-first.o -MD -MP -MF $(DEPDIR)/lib540-first.Tpo -c -o lib540-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib540-first.Tpo $(DEPDIR)/lib540-first.Po
@@ -9884,6 +13109,20 @@ lib541-lib541.obj: lib541.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib541-lib541.obj `if test -f 'lib541.c'; then $(CYGPATH_W) 'lib541.c'; else $(CYGPATH_W) '$(srcdir)/lib541.c'; fi`
+../../lib/lib541-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib541-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib541-timediff.Tpo -c -o ../../lib/lib541-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib541-timediff.Tpo ../../lib/$(DEPDIR)/lib541-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib541-timediff.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) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib541-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib541-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib541-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib541-timediff.Tpo -c -o ../../lib/lib541-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib541-timediff.Tpo ../../lib/$(DEPDIR)/lib541-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib541-timediff.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) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib541-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib541-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib541-first.o -MD -MP -MF $(DEPDIR)/lib541-first.Tpo -c -o lib541-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib541-first.Tpo $(DEPDIR)/lib541-first.Po
@@ -9926,6 +13165,20 @@ lib542-lib542.obj: lib542.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib542-lib542.obj `if test -f 'lib542.c'; then $(CYGPATH_W) 'lib542.c'; else $(CYGPATH_W) '$(srcdir)/lib542.c'; fi`
+../../lib/lib542-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib542-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib542-timediff.Tpo -c -o ../../lib/lib542-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib542-timediff.Tpo ../../lib/$(DEPDIR)/lib542-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib542-timediff.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) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib542-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib542-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib542-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib542-timediff.Tpo -c -o ../../lib/lib542-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib542-timediff.Tpo ../../lib/$(DEPDIR)/lib542-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib542-timediff.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) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib542-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib542-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib542-first.o -MD -MP -MF $(DEPDIR)/lib542-first.Tpo -c -o lib542-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib542-first.Tpo $(DEPDIR)/lib542-first.Po
@@ -9954,6 +13207,20 @@ lib543-lib543.obj: lib543.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib543-lib543.obj `if test -f 'lib543.c'; then $(CYGPATH_W) 'lib543.c'; else $(CYGPATH_W) '$(srcdir)/lib543.c'; fi`
+../../lib/lib543-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib543-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib543-timediff.Tpo -c -o ../../lib/lib543-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib543-timediff.Tpo ../../lib/$(DEPDIR)/lib543-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib543-timediff.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) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib543-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib543-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib543-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib543-timediff.Tpo -c -o ../../lib/lib543-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib543-timediff.Tpo ../../lib/$(DEPDIR)/lib543-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib543-timediff.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) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib543-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib543-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib543-first.o -MD -MP -MF $(DEPDIR)/lib543-first.Tpo -c -o lib543-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib543-first.Tpo $(DEPDIR)/lib543-first.Po
@@ -9982,6 +13249,20 @@ lib544-lib544.obj: lib544.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib544-lib544.obj `if test -f 'lib544.c'; then $(CYGPATH_W) 'lib544.c'; else $(CYGPATH_W) '$(srcdir)/lib544.c'; fi`
+../../lib/lib544-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib544-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib544-timediff.Tpo -c -o ../../lib/lib544-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib544-timediff.Tpo ../../lib/$(DEPDIR)/lib544-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib544-timediff.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) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib544-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib544-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib544-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib544-timediff.Tpo -c -o ../../lib/lib544-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib544-timediff.Tpo ../../lib/$(DEPDIR)/lib544-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib544-timediff.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) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib544-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib544-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib544-first.o -MD -MP -MF $(DEPDIR)/lib544-first.Tpo -c -o lib544-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib544-first.Tpo $(DEPDIR)/lib544-first.Po
@@ -10010,6 +13291,20 @@ lib545-lib544.obj: lib544.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib545-lib544.obj `if test -f 'lib544.c'; then $(CYGPATH_W) 'lib544.c'; else $(CYGPATH_W) '$(srcdir)/lib544.c'; fi`
+../../lib/lib545-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib545-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib545-timediff.Tpo -c -o ../../lib/lib545-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib545-timediff.Tpo ../../lib/$(DEPDIR)/lib545-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib545-timediff.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) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib545-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib545-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib545-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib545-timediff.Tpo -c -o ../../lib/lib545-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib545-timediff.Tpo ../../lib/$(DEPDIR)/lib545-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib545-timediff.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) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib545-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib545-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib545-first.o -MD -MP -MF $(DEPDIR)/lib545-first.Tpo -c -o lib545-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib545-first.Tpo $(DEPDIR)/lib545-first.Po
@@ -10038,6 +13333,20 @@ lib547-lib547.obj: lib547.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib547-lib547.obj `if test -f 'lib547.c'; then $(CYGPATH_W) 'lib547.c'; else $(CYGPATH_W) '$(srcdir)/lib547.c'; fi`
+../../lib/lib547-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib547-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib547-timediff.Tpo -c -o ../../lib/lib547-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib547-timediff.Tpo ../../lib/$(DEPDIR)/lib547-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib547-timediff.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) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib547-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib547-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib547-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib547-timediff.Tpo -c -o ../../lib/lib547-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib547-timediff.Tpo ../../lib/$(DEPDIR)/lib547-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib547-timediff.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) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib547-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib547-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib547-first.o -MD -MP -MF $(DEPDIR)/lib547-first.Tpo -c -o lib547-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib547-first.Tpo $(DEPDIR)/lib547-first.Po
@@ -10066,6 +13375,20 @@ lib548-lib547.obj: lib547.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib548-lib547.obj `if test -f 'lib547.c'; then $(CYGPATH_W) 'lib547.c'; else $(CYGPATH_W) '$(srcdir)/lib547.c'; fi`
+../../lib/lib548-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib548-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib548-timediff.Tpo -c -o ../../lib/lib548-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib548-timediff.Tpo ../../lib/$(DEPDIR)/lib548-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib548-timediff.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) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib548-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib548-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib548-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib548-timediff.Tpo -c -o ../../lib/lib548-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib548-timediff.Tpo ../../lib/$(DEPDIR)/lib548-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib548-timediff.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) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib548-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib548-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib548-first.o -MD -MP -MF $(DEPDIR)/lib548-first.Tpo -c -o lib548-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib548-first.Tpo $(DEPDIR)/lib548-first.Po
@@ -10094,6 +13417,20 @@ lib549-lib549.obj: lib549.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib549-lib549.obj `if test -f 'lib549.c'; then $(CYGPATH_W) 'lib549.c'; else $(CYGPATH_W) '$(srcdir)/lib549.c'; fi`
+../../lib/lib549-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib549-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib549-timediff.Tpo -c -o ../../lib/lib549-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib549-timediff.Tpo ../../lib/$(DEPDIR)/lib549-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib549-timediff.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) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib549-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib549-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib549-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib549-timediff.Tpo -c -o ../../lib/lib549-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib549-timediff.Tpo ../../lib/$(DEPDIR)/lib549-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib549-timediff.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) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib549-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib549-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib549-first.o -MD -MP -MF $(DEPDIR)/lib549-first.Tpo -c -o lib549-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib549-first.Tpo $(DEPDIR)/lib549-first.Po
@@ -10122,6 +13459,20 @@ lib552-lib552.obj: lib552.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-lib552.obj `if test -f 'lib552.c'; then $(CYGPATH_W) 'lib552.c'; else $(CYGPATH_W) '$(srcdir)/lib552.c'; fi`
+../../lib/lib552-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib552-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib552-timediff.Tpo -c -o ../../lib/lib552-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib552-timediff.Tpo ../../lib/$(DEPDIR)/lib552-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib552-timediff.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) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib552-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib552-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib552-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib552-timediff.Tpo -c -o ../../lib/lib552-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib552-timediff.Tpo ../../lib/$(DEPDIR)/lib552-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib552-timediff.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) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib552-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib552-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib552-first.o -MD -MP -MF $(DEPDIR)/lib552-first.Tpo -c -o lib552-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib552-first.Tpo $(DEPDIR)/lib552-first.Po
@@ -10164,6 +13515,20 @@ lib553-lib553.obj: lib553.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib553-lib553.obj `if test -f 'lib553.c'; then $(CYGPATH_W) 'lib553.c'; else $(CYGPATH_W) '$(srcdir)/lib553.c'; fi`
+../../lib/lib553-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib553-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib553-timediff.Tpo -c -o ../../lib/lib553-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib553-timediff.Tpo ../../lib/$(DEPDIR)/lib553-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib553-timediff.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) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib553-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib553-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib553-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib553-timediff.Tpo -c -o ../../lib/lib553-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib553-timediff.Tpo ../../lib/$(DEPDIR)/lib553-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib553-timediff.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) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib553-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib553-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib553-first.o -MD -MP -MF $(DEPDIR)/lib553-first.Tpo -c -o lib553-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib553-first.Tpo $(DEPDIR)/lib553-first.Po
@@ -10192,6 +13557,20 @@ lib554-lib554.obj: lib554.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib554-lib554.obj `if test -f 'lib554.c'; then $(CYGPATH_W) 'lib554.c'; else $(CYGPATH_W) '$(srcdir)/lib554.c'; fi`
+../../lib/lib554-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib554-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib554-timediff.Tpo -c -o ../../lib/lib554-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib554-timediff.Tpo ../../lib/$(DEPDIR)/lib554-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib554-timediff.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) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib554-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib554-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib554-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib554-timediff.Tpo -c -o ../../lib/lib554-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib554-timediff.Tpo ../../lib/$(DEPDIR)/lib554-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib554-timediff.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) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib554-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib554-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib554-first.o -MD -MP -MF $(DEPDIR)/lib554-first.Tpo -c -o lib554-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib554-first.Tpo $(DEPDIR)/lib554-first.Po
@@ -10220,6 +13599,20 @@ lib555-lib555.obj: lib555.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-lib555.obj `if test -f 'lib555.c'; then $(CYGPATH_W) 'lib555.c'; else $(CYGPATH_W) '$(srcdir)/lib555.c'; fi`
+../../lib/lib555-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib555-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib555-timediff.Tpo -c -o ../../lib/lib555-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib555-timediff.Tpo ../../lib/$(DEPDIR)/lib555-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib555-timediff.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) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib555-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib555-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib555-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib555-timediff.Tpo -c -o ../../lib/lib555-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib555-timediff.Tpo ../../lib/$(DEPDIR)/lib555-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib555-timediff.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) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib555-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib555-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib555-first.o -MD -MP -MF $(DEPDIR)/lib555-first.Tpo -c -o lib555-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib555-first.Tpo $(DEPDIR)/lib555-first.Po
@@ -10276,6 +13669,20 @@ lib556-lib556.obj: lib556.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-lib556.obj `if test -f 'lib556.c'; then $(CYGPATH_W) 'lib556.c'; else $(CYGPATH_W) '$(srcdir)/lib556.c'; fi`
+../../lib/lib556-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib556-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib556-timediff.Tpo -c -o ../../lib/lib556-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib556-timediff.Tpo ../../lib/$(DEPDIR)/lib556-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib556-timediff.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib556-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib556-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib556-timediff.Tpo -c -o ../../lib/lib556-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib556-timediff.Tpo ../../lib/$(DEPDIR)/lib556-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib556-timediff.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib556-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib556-first.o -MD -MP -MF $(DEPDIR)/lib556-first.Tpo -c -o lib556-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib556-first.Tpo $(DEPDIR)/lib556-first.Po
@@ -10318,6 +13725,20 @@ lib557-lib557.obj: lib557.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib557-lib557.obj `if test -f 'lib557.c'; then $(CYGPATH_W) 'lib557.c'; else $(CYGPATH_W) '$(srcdir)/lib557.c'; fi`
+../../lib/lib557-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib557-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib557-timediff.Tpo -c -o ../../lib/lib557-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib557-timediff.Tpo ../../lib/$(DEPDIR)/lib557-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib557-timediff.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) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib557-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib557-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib557-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib557-timediff.Tpo -c -o ../../lib/lib557-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib557-timediff.Tpo ../../lib/$(DEPDIR)/lib557-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib557-timediff.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) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib557-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib557-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib557-first.o -MD -MP -MF $(DEPDIR)/lib557-first.Tpo -c -o lib557-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib557-first.Tpo $(DEPDIR)/lib557-first.Po
@@ -10346,6 +13767,20 @@ lib558-lib558.obj: lib558.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib558-lib558.obj `if test -f 'lib558.c'; then $(CYGPATH_W) 'lib558.c'; else $(CYGPATH_W) '$(srcdir)/lib558.c'; fi`
+../../lib/lib558-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib558-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib558-timediff.Tpo -c -o ../../lib/lib558-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib558-timediff.Tpo ../../lib/$(DEPDIR)/lib558-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib558-timediff.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) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib558-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib558-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib558-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib558-timediff.Tpo -c -o ../../lib/lib558-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib558-timediff.Tpo ../../lib/$(DEPDIR)/lib558-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib558-timediff.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) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib558-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib558-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib558-first.o -MD -MP -MF $(DEPDIR)/lib558-first.Tpo -c -o lib558-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib558-first.Tpo $(DEPDIR)/lib558-first.Po
@@ -10374,6 +13809,20 @@ lib559-lib559.obj: lib559.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib559-lib559.obj `if test -f 'lib559.c'; then $(CYGPATH_W) 'lib559.c'; else $(CYGPATH_W) '$(srcdir)/lib559.c'; fi`
+../../lib/lib559-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib559-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib559-timediff.Tpo -c -o ../../lib/lib559-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib559-timediff.Tpo ../../lib/$(DEPDIR)/lib559-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib559-timediff.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) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib559-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib559-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib559-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib559-timediff.Tpo -c -o ../../lib/lib559-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib559-timediff.Tpo ../../lib/$(DEPDIR)/lib559-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib559-timediff.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) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib559-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib559-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib559-first.o -MD -MP -MF $(DEPDIR)/lib559-first.Tpo -c -o lib559-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib559-first.Tpo $(DEPDIR)/lib559-first.Po
@@ -10402,6 +13851,20 @@ lib560-lib560.obj: lib560.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-lib560.obj `if test -f 'lib560.c'; then $(CYGPATH_W) 'lib560.c'; else $(CYGPATH_W) '$(srcdir)/lib560.c'; fi`
+../../lib/lib560-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib560-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib560-timediff.Tpo -c -o ../../lib/lib560-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib560-timediff.Tpo ../../lib/$(DEPDIR)/lib560-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib560-timediff.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) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib560-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib560-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib560-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib560-timediff.Tpo -c -o ../../lib/lib560-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib560-timediff.Tpo ../../lib/$(DEPDIR)/lib560-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib560-timediff.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) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib560-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib560-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib560-first.o -MD -MP -MF $(DEPDIR)/lib560-first.Tpo -c -o lib560-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib560-first.Tpo $(DEPDIR)/lib560-first.Po
@@ -10458,6 +13921,20 @@ lib562-lib562.obj: lib562.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib562-lib562.obj `if test -f 'lib562.c'; then $(CYGPATH_W) 'lib562.c'; else $(CYGPATH_W) '$(srcdir)/lib562.c'; fi`
+../../lib/lib562-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib562-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib562-timediff.Tpo -c -o ../../lib/lib562-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib562-timediff.Tpo ../../lib/$(DEPDIR)/lib562-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib562-timediff.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) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib562-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib562-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib562-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib562-timediff.Tpo -c -o ../../lib/lib562-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib562-timediff.Tpo ../../lib/$(DEPDIR)/lib562-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib562-timediff.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) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib562-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib562-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib562-first.o -MD -MP -MF $(DEPDIR)/lib562-first.Tpo -c -o lib562-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib562-first.Tpo $(DEPDIR)/lib562-first.Po
@@ -10486,6 +13963,20 @@ lib564-lib564.obj: lib564.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-lib564.obj `if test -f 'lib564.c'; then $(CYGPATH_W) 'lib564.c'; else $(CYGPATH_W) '$(srcdir)/lib564.c'; fi`
+../../lib/lib564-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib564-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib564-timediff.Tpo -c -o ../../lib/lib564-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib564-timediff.Tpo ../../lib/$(DEPDIR)/lib564-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib564-timediff.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) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib564-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib564-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib564-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib564-timediff.Tpo -c -o ../../lib/lib564-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib564-timediff.Tpo ../../lib/$(DEPDIR)/lib564-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib564-timediff.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) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib564-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib564-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib564-first.o -MD -MP -MF $(DEPDIR)/lib564-first.Tpo -c -o lib564-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib564-first.Tpo $(DEPDIR)/lib564-first.Po
@@ -10542,6 +14033,20 @@ lib565-lib510.obj: lib510.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib565-lib510.obj `if test -f 'lib510.c'; then $(CYGPATH_W) 'lib510.c'; else $(CYGPATH_W) '$(srcdir)/lib510.c'; fi`
+../../lib/lib565-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib565-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib565-timediff.Tpo -c -o ../../lib/lib565-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib565-timediff.Tpo ../../lib/$(DEPDIR)/lib565-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib565-timediff.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) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib565-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib565-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib565-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib565-timediff.Tpo -c -o ../../lib/lib565-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib565-timediff.Tpo ../../lib/$(DEPDIR)/lib565-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib565-timediff.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) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib565-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib565-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib565-first.o -MD -MP -MF $(DEPDIR)/lib565-first.Tpo -c -o lib565-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib565-first.Tpo $(DEPDIR)/lib565-first.Po
@@ -10570,6 +14075,20 @@ lib566-lib566.obj: lib566.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib566-lib566.obj `if test -f 'lib566.c'; then $(CYGPATH_W) 'lib566.c'; else $(CYGPATH_W) '$(srcdir)/lib566.c'; fi`
+../../lib/lib566-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib566-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib566-timediff.Tpo -c -o ../../lib/lib566-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib566-timediff.Tpo ../../lib/$(DEPDIR)/lib566-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib566-timediff.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) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib566-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib566-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib566-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib566-timediff.Tpo -c -o ../../lib/lib566-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib566-timediff.Tpo ../../lib/$(DEPDIR)/lib566-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib566-timediff.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) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib566-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib566-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib566-first.o -MD -MP -MF $(DEPDIR)/lib566-first.Tpo -c -o lib566-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib566-first.Tpo $(DEPDIR)/lib566-first.Po
@@ -10612,6 +14131,20 @@ lib567-lib567.obj: lib567.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib567-lib567.obj `if test -f 'lib567.c'; then $(CYGPATH_W) 'lib567.c'; else $(CYGPATH_W) '$(srcdir)/lib567.c'; fi`
+../../lib/lib567-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib567-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib567-timediff.Tpo -c -o ../../lib/lib567-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib567-timediff.Tpo ../../lib/$(DEPDIR)/lib567-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib567-timediff.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) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib567-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib567-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib567-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib567-timediff.Tpo -c -o ../../lib/lib567-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib567-timediff.Tpo ../../lib/$(DEPDIR)/lib567-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib567-timediff.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) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib567-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib567-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib567-first.o -MD -MP -MF $(DEPDIR)/lib567-first.Tpo -c -o lib567-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib567-first.Tpo $(DEPDIR)/lib567-first.Po
@@ -10640,6 +14173,20 @@ lib568-lib568.obj: lib568.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib568-lib568.obj `if test -f 'lib568.c'; then $(CYGPATH_W) 'lib568.c'; else $(CYGPATH_W) '$(srcdir)/lib568.c'; fi`
+../../lib/lib568-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib568-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib568-timediff.Tpo -c -o ../../lib/lib568-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib568-timediff.Tpo ../../lib/$(DEPDIR)/lib568-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib568-timediff.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) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib568-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib568-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib568-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib568-timediff.Tpo -c -o ../../lib/lib568-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib568-timediff.Tpo ../../lib/$(DEPDIR)/lib568-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib568-timediff.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) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib568-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib568-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib568-first.o -MD -MP -MF $(DEPDIR)/lib568-first.Tpo -c -o lib568-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib568-first.Tpo $(DEPDIR)/lib568-first.Po
@@ -10682,6 +14229,20 @@ lib569-lib569.obj: lib569.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib569-lib569.obj `if test -f 'lib569.c'; then $(CYGPATH_W) 'lib569.c'; else $(CYGPATH_W) '$(srcdir)/lib569.c'; fi`
+../../lib/lib569-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib569-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib569-timediff.Tpo -c -o ../../lib/lib569-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib569-timediff.Tpo ../../lib/$(DEPDIR)/lib569-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib569-timediff.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) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib569-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib569-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib569-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib569-timediff.Tpo -c -o ../../lib/lib569-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib569-timediff.Tpo ../../lib/$(DEPDIR)/lib569-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib569-timediff.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) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib569-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib569-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib569-first.o -MD -MP -MF $(DEPDIR)/lib569-first.Tpo -c -o lib569-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib569-first.Tpo $(DEPDIR)/lib569-first.Po
@@ -10724,6 +14285,20 @@ lib570-lib570.obj: lib570.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib570-lib570.obj `if test -f 'lib570.c'; then $(CYGPATH_W) 'lib570.c'; else $(CYGPATH_W) '$(srcdir)/lib570.c'; fi`
+../../lib/lib570-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib570-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib570-timediff.Tpo -c -o ../../lib/lib570-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib570-timediff.Tpo ../../lib/$(DEPDIR)/lib570-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib570-timediff.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) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib570-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib570-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib570-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib570-timediff.Tpo -c -o ../../lib/lib570-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib570-timediff.Tpo ../../lib/$(DEPDIR)/lib570-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib570-timediff.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) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib570-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib570-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib570-first.o -MD -MP -MF $(DEPDIR)/lib570-first.Tpo -c -o lib570-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib570-first.Tpo $(DEPDIR)/lib570-first.Po
@@ -10752,6 +14327,20 @@ lib571-lib571.obj: lib571.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-lib571.obj `if test -f 'lib571.c'; then $(CYGPATH_W) 'lib571.c'; else $(CYGPATH_W) '$(srcdir)/lib571.c'; fi`
+../../lib/lib571-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib571-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib571-timediff.Tpo -c -o ../../lib/lib571-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib571-timediff.Tpo ../../lib/$(DEPDIR)/lib571-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib571-timediff.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) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib571-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib571-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib571-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib571-timediff.Tpo -c -o ../../lib/lib571-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib571-timediff.Tpo ../../lib/$(DEPDIR)/lib571-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib571-timediff.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) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib571-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib571-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib571-first.o -MD -MP -MF $(DEPDIR)/lib571-first.Tpo -c -o lib571-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib571-first.Tpo $(DEPDIR)/lib571-first.Po
@@ -10808,6 +14397,20 @@ lib572-lib572.obj: lib572.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib572-lib572.obj `if test -f 'lib572.c'; then $(CYGPATH_W) 'lib572.c'; else $(CYGPATH_W) '$(srcdir)/lib572.c'; fi`
+../../lib/lib572-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib572-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib572-timediff.Tpo -c -o ../../lib/lib572-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib572-timediff.Tpo ../../lib/$(DEPDIR)/lib572-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib572-timediff.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) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib572-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib572-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib572-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib572-timediff.Tpo -c -o ../../lib/lib572-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib572-timediff.Tpo ../../lib/$(DEPDIR)/lib572-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib572-timediff.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) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib572-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib572-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib572-first.o -MD -MP -MF $(DEPDIR)/lib572-first.Tpo -c -o lib572-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib572-first.Tpo $(DEPDIR)/lib572-first.Po
@@ -10850,6 +14453,20 @@ lib573-lib573.obj: lib573.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-lib573.obj `if test -f 'lib573.c'; then $(CYGPATH_W) 'lib573.c'; else $(CYGPATH_W) '$(srcdir)/lib573.c'; fi`
+../../lib/lib573-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib573-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib573-timediff.Tpo -c -o ../../lib/lib573-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib573-timediff.Tpo ../../lib/$(DEPDIR)/lib573-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib573-timediff.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) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib573-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib573-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib573-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib573-timediff.Tpo -c -o ../../lib/lib573-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib573-timediff.Tpo ../../lib/$(DEPDIR)/lib573-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib573-timediff.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) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib573-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib573-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib573-first.o -MD -MP -MF $(DEPDIR)/lib573-first.Tpo -c -o lib573-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib573-first.Tpo $(DEPDIR)/lib573-first.Po
@@ -10920,6 +14537,20 @@ lib574-lib574.obj: lib574.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib574-lib574.obj `if test -f 'lib574.c'; then $(CYGPATH_W) 'lib574.c'; else $(CYGPATH_W) '$(srcdir)/lib574.c'; fi`
+../../lib/lib574-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib574-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib574-timediff.Tpo -c -o ../../lib/lib574-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib574-timediff.Tpo ../../lib/$(DEPDIR)/lib574-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib574-timediff.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) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib574-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib574-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib574-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib574-timediff.Tpo -c -o ../../lib/lib574-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib574-timediff.Tpo ../../lib/$(DEPDIR)/lib574-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib574-timediff.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) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib574-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib574-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib574-first.o -MD -MP -MF $(DEPDIR)/lib574-first.Tpo -c -o lib574-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib574-first.Tpo $(DEPDIR)/lib574-first.Po
@@ -10948,6 +14579,20 @@ lib575-lib575.obj: lib575.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-lib575.obj `if test -f 'lib575.c'; then $(CYGPATH_W) 'lib575.c'; else $(CYGPATH_W) '$(srcdir)/lib575.c'; fi`
+../../lib/lib575-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib575-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib575-timediff.Tpo -c -o ../../lib/lib575-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib575-timediff.Tpo ../../lib/$(DEPDIR)/lib575-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib575-timediff.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) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib575-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib575-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib575-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib575-timediff.Tpo -c -o ../../lib/lib575-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib575-timediff.Tpo ../../lib/$(DEPDIR)/lib575-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib575-timediff.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) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib575-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib575-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib575-first.o -MD -MP -MF $(DEPDIR)/lib575-first.Tpo -c -o lib575-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib575-first.Tpo $(DEPDIR)/lib575-first.Po
@@ -11004,6 +14649,20 @@ lib576-lib576.obj: lib576.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib576-lib576.obj `if test -f 'lib576.c'; then $(CYGPATH_W) 'lib576.c'; else $(CYGPATH_W) '$(srcdir)/lib576.c'; fi`
+../../lib/lib576-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib576-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib576-timediff.Tpo -c -o ../../lib/lib576-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib576-timediff.Tpo ../../lib/$(DEPDIR)/lib576-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib576-timediff.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) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib576-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib576-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib576-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib576-timediff.Tpo -c -o ../../lib/lib576-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib576-timediff.Tpo ../../lib/$(DEPDIR)/lib576-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib576-timediff.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) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib576-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib576-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib576-first.o -MD -MP -MF $(DEPDIR)/lib576-first.Tpo -c -o lib576-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib576-first.Tpo $(DEPDIR)/lib576-first.Po
@@ -11032,6 +14691,20 @@ lib578-lib578.obj: lib578.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib578-lib578.obj `if test -f 'lib578.c'; then $(CYGPATH_W) 'lib578.c'; else $(CYGPATH_W) '$(srcdir)/lib578.c'; fi`
+../../lib/lib578-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib578-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib578-timediff.Tpo -c -o ../../lib/lib578-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib578-timediff.Tpo ../../lib/$(DEPDIR)/lib578-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib578-timediff.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) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib578-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib578-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib578-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib578-timediff.Tpo -c -o ../../lib/lib578-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib578-timediff.Tpo ../../lib/$(DEPDIR)/lib578-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib578-timediff.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) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib578-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib578-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib578-first.o -MD -MP -MF $(DEPDIR)/lib578-first.Tpo -c -o lib578-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib578-first.Tpo $(DEPDIR)/lib578-first.Po
@@ -11074,6 +14747,20 @@ lib579-lib579.obj: lib579.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib579-lib579.obj `if test -f 'lib579.c'; then $(CYGPATH_W) 'lib579.c'; else $(CYGPATH_W) '$(srcdir)/lib579.c'; fi`
+../../lib/lib579-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib579-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib579-timediff.Tpo -c -o ../../lib/lib579-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib579-timediff.Tpo ../../lib/$(DEPDIR)/lib579-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib579-timediff.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) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib579-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib579-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib579-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib579-timediff.Tpo -c -o ../../lib/lib579-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib579-timediff.Tpo ../../lib/$(DEPDIR)/lib579-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib579-timediff.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) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib579-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib579-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib579-first.o -MD -MP -MF $(DEPDIR)/lib579-first.Tpo -c -o lib579-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib579-first.Tpo $(DEPDIR)/lib579-first.Po
@@ -11116,6 +14803,20 @@ lib582-lib582.obj: lib582.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-lib582.obj `if test -f 'lib582.c'; then $(CYGPATH_W) 'lib582.c'; else $(CYGPATH_W) '$(srcdir)/lib582.c'; fi`
+../../lib/lib582-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib582-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib582-timediff.Tpo -c -o ../../lib/lib582-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib582-timediff.Tpo ../../lib/$(DEPDIR)/lib582-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib582-timediff.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) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib582-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib582-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib582-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib582-timediff.Tpo -c -o ../../lib/lib582-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib582-timediff.Tpo ../../lib/$(DEPDIR)/lib582-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib582-timediff.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) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib582-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib582-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib582-first.o -MD -MP -MF $(DEPDIR)/lib582-first.Tpo -c -o lib582-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib582-first.Tpo $(DEPDIR)/lib582-first.Po
@@ -11186,6 +14887,20 @@ lib583-lib583.obj: lib583.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib583-lib583.obj `if test -f 'lib583.c'; then $(CYGPATH_W) 'lib583.c'; else $(CYGPATH_W) '$(srcdir)/lib583.c'; fi`
+../../lib/lib583-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib583-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib583-timediff.Tpo -c -o ../../lib/lib583-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib583-timediff.Tpo ../../lib/$(DEPDIR)/lib583-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib583-timediff.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) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib583-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib583-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib583-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib583-timediff.Tpo -c -o ../../lib/lib583-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib583-timediff.Tpo ../../lib/$(DEPDIR)/lib583-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib583-timediff.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) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib583-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib583-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib583-first.o -MD -MP -MF $(DEPDIR)/lib583-first.Tpo -c -o lib583-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib583-first.Tpo $(DEPDIR)/lib583-first.Po
@@ -11214,6 +14929,20 @@ lib584-lib589.obj: lib589.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib584-lib589.obj `if test -f 'lib589.c'; then $(CYGPATH_W) 'lib589.c'; else $(CYGPATH_W) '$(srcdir)/lib589.c'; fi`
+../../lib/lib584-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib584-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib584-timediff.Tpo -c -o ../../lib/lib584-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib584-timediff.Tpo ../../lib/$(DEPDIR)/lib584-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib584-timediff.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) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib584-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib584-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib584-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib584-timediff.Tpo -c -o ../../lib/lib584-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib584-timediff.Tpo ../../lib/$(DEPDIR)/lib584-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib584-timediff.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) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib584-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib584-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib584-first.o -MD -MP -MF $(DEPDIR)/lib584-first.Tpo -c -o lib584-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib584-first.Tpo $(DEPDIR)/lib584-first.Po
@@ -11242,6 +14971,20 @@ lib585-lib500.obj: lib500.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib585-lib500.obj `if test -f 'lib500.c'; then $(CYGPATH_W) 'lib500.c'; else $(CYGPATH_W) '$(srcdir)/lib500.c'; fi`
+../../lib/lib585-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib585-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib585-timediff.Tpo -c -o ../../lib/lib585-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib585-timediff.Tpo ../../lib/$(DEPDIR)/lib585-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib585-timediff.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) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib585-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib585-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib585-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib585-timediff.Tpo -c -o ../../lib/lib585-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib585-timediff.Tpo ../../lib/$(DEPDIR)/lib585-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib585-timediff.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) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib585-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib585-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib585-first.o -MD -MP -MF $(DEPDIR)/lib585-first.Tpo -c -o lib585-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib585-first.Tpo $(DEPDIR)/lib585-first.Po
@@ -11312,6 +15055,20 @@ lib586-lib586.obj: lib586.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib586-lib586.obj `if test -f 'lib586.c'; then $(CYGPATH_W) 'lib586.c'; else $(CYGPATH_W) '$(srcdir)/lib586.c'; fi`
+../../lib/lib586-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib586-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib586-timediff.Tpo -c -o ../../lib/lib586-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib586-timediff.Tpo ../../lib/$(DEPDIR)/lib586-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib586-timediff.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) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib586-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib586-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib586-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib586-timediff.Tpo -c -o ../../lib/lib586-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib586-timediff.Tpo ../../lib/$(DEPDIR)/lib586-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib586-timediff.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) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib586-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib586-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib586-first.o -MD -MP -MF $(DEPDIR)/lib586-first.Tpo -c -o lib586-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib586-first.Tpo $(DEPDIR)/lib586-first.Po
@@ -11340,6 +15097,20 @@ lib587-lib554.obj: lib554.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib587-lib554.obj `if test -f 'lib554.c'; then $(CYGPATH_W) 'lib554.c'; else $(CYGPATH_W) '$(srcdir)/lib554.c'; fi`
+../../lib/lib587-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib587-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib587-timediff.Tpo -c -o ../../lib/lib587-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib587-timediff.Tpo ../../lib/$(DEPDIR)/lib587-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib587-timediff.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) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib587-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib587-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib587-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib587-timediff.Tpo -c -o ../../lib/lib587-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib587-timediff.Tpo ../../lib/$(DEPDIR)/lib587-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib587-timediff.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) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib587-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib587-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib587-first.o -MD -MP -MF $(DEPDIR)/lib587-first.Tpo -c -o lib587-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib587-first.Tpo $(DEPDIR)/lib587-first.Po
@@ -11368,6 +15139,20 @@ lib589-lib589.obj: lib589.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib589-lib589.obj `if test -f 'lib589.c'; then $(CYGPATH_W) 'lib589.c'; else $(CYGPATH_W) '$(srcdir)/lib589.c'; fi`
+../../lib/lib589-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib589-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib589-timediff.Tpo -c -o ../../lib/lib589-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib589-timediff.Tpo ../../lib/$(DEPDIR)/lib589-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib589-timediff.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) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib589-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib589-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib589-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib589-timediff.Tpo -c -o ../../lib/lib589-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib589-timediff.Tpo ../../lib/$(DEPDIR)/lib589-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib589-timediff.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) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib589-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib589-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib589-first.o -MD -MP -MF $(DEPDIR)/lib589-first.Tpo -c -o lib589-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib589-first.Tpo $(DEPDIR)/lib589-first.Po
@@ -11396,6 +15181,20 @@ lib590-lib590.obj: lib590.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib590-lib590.obj `if test -f 'lib590.c'; then $(CYGPATH_W) 'lib590.c'; else $(CYGPATH_W) '$(srcdir)/lib590.c'; fi`
+../../lib/lib590-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib590-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib590-timediff.Tpo -c -o ../../lib/lib590-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib590-timediff.Tpo ../../lib/$(DEPDIR)/lib590-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib590-timediff.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) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib590-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib590-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib590-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib590-timediff.Tpo -c -o ../../lib/lib590-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib590-timediff.Tpo ../../lib/$(DEPDIR)/lib590-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib590-timediff.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) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib590-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib590-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib590-first.o -MD -MP -MF $(DEPDIR)/lib590-first.Tpo -c -o lib590-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib590-first.Tpo $(DEPDIR)/lib590-first.Po
@@ -11424,6 +15223,20 @@ lib591-lib591.obj: lib591.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-lib591.obj `if test -f 'lib591.c'; then $(CYGPATH_W) 'lib591.c'; else $(CYGPATH_W) '$(srcdir)/lib591.c'; fi`
+../../lib/lib591-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib591-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib591-timediff.Tpo -c -o ../../lib/lib591-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib591-timediff.Tpo ../../lib/$(DEPDIR)/lib591-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib591-timediff.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) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib591-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib591-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib591-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib591-timediff.Tpo -c -o ../../lib/lib591-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib591-timediff.Tpo ../../lib/$(DEPDIR)/lib591-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib591-timediff.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) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib591-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib591-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib591-first.o -MD -MP -MF $(DEPDIR)/lib591-first.Tpo -c -o lib591-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib591-first.Tpo $(DEPDIR)/lib591-first.Po
@@ -11494,6 +15307,20 @@ lib597-lib597.obj: lib597.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-lib597.obj `if test -f 'lib597.c'; then $(CYGPATH_W) 'lib597.c'; else $(CYGPATH_W) '$(srcdir)/lib597.c'; fi`
+../../lib/lib597-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib597-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib597-timediff.Tpo -c -o ../../lib/lib597-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib597-timediff.Tpo ../../lib/$(DEPDIR)/lib597-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib597-timediff.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) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib597-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib597-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib597-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib597-timediff.Tpo -c -o ../../lib/lib597-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib597-timediff.Tpo ../../lib/$(DEPDIR)/lib597-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib597-timediff.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) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib597-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib597-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib597-first.o -MD -MP -MF $(DEPDIR)/lib597-first.Tpo -c -o lib597-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib597-first.Tpo $(DEPDIR)/lib597-first.Po
@@ -11550,6 +15377,20 @@ lib598-lib598.obj: lib598.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib598-lib598.obj `if test -f 'lib598.c'; then $(CYGPATH_W) 'lib598.c'; else $(CYGPATH_W) '$(srcdir)/lib598.c'; fi`
+../../lib/lib598-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib598-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib598-timediff.Tpo -c -o ../../lib/lib598-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib598-timediff.Tpo ../../lib/$(DEPDIR)/lib598-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib598-timediff.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) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib598-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib598-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib598-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib598-timediff.Tpo -c -o ../../lib/lib598-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib598-timediff.Tpo ../../lib/$(DEPDIR)/lib598-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib598-timediff.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) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib598-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib598-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib598-first.o -MD -MP -MF $(DEPDIR)/lib598-first.Tpo -c -o lib598-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib598-first.Tpo $(DEPDIR)/lib598-first.Po
@@ -11578,6 +15419,20 @@ lib599-lib599.obj: lib599.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib599-lib599.obj `if test -f 'lib599.c'; then $(CYGPATH_W) 'lib599.c'; else $(CYGPATH_W) '$(srcdir)/lib599.c'; fi`
+../../lib/lib599-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib599-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib599-timediff.Tpo -c -o ../../lib/lib599-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib599-timediff.Tpo ../../lib/$(DEPDIR)/lib599-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib599-timediff.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) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib599-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib599-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib599-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib599-timediff.Tpo -c -o ../../lib/lib599-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib599-timediff.Tpo ../../lib/$(DEPDIR)/lib599-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib599-timediff.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) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib599-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib599-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib599-first.o -MD -MP -MF $(DEPDIR)/lib599-first.Tpo -c -o lib599-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib599-first.Tpo $(DEPDIR)/lib599-first.Po
@@ -11620,6 +15475,20 @@ lib643-lib643.obj: lib643.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib643-lib643.obj `if test -f 'lib643.c'; then $(CYGPATH_W) 'lib643.c'; else $(CYGPATH_W) '$(srcdir)/lib643.c'; fi`
+../../lib/lib643-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib643-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib643-timediff.Tpo -c -o ../../lib/lib643-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib643-timediff.Tpo ../../lib/$(DEPDIR)/lib643-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib643-timediff.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) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib643-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib643-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib643-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib643-timediff.Tpo -c -o ../../lib/lib643-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib643-timediff.Tpo ../../lib/$(DEPDIR)/lib643-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib643-timediff.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) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib643-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib643-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib643-first.o -MD -MP -MF $(DEPDIR)/lib643-first.Tpo -c -o lib643-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib643-first.Tpo $(DEPDIR)/lib643-first.Po
@@ -11648,6 +15517,20 @@ lib645-lib643.obj: lib643.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib645-lib643.obj `if test -f 'lib643.c'; then $(CYGPATH_W) 'lib643.c'; else $(CYGPATH_W) '$(srcdir)/lib643.c'; fi`
+../../lib/lib645-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib645-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib645-timediff.Tpo -c -o ../../lib/lib645-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib645-timediff.Tpo ../../lib/$(DEPDIR)/lib645-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib645-timediff.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) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib645-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib645-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib645-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib645-timediff.Tpo -c -o ../../lib/lib645-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib645-timediff.Tpo ../../lib/$(DEPDIR)/lib645-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib645-timediff.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) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib645-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib645-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib645-first.o -MD -MP -MF $(DEPDIR)/lib645-first.Tpo -c -o lib645-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib645-first.Tpo $(DEPDIR)/lib645-first.Po
@@ -11676,6 +15559,20 @@ lib650-lib650.obj: lib650.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib650-lib650.obj `if test -f 'lib650.c'; then $(CYGPATH_W) 'lib650.c'; else $(CYGPATH_W) '$(srcdir)/lib650.c'; fi`
+../../lib/lib650-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib650-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib650-timediff.Tpo -c -o ../../lib/lib650-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib650-timediff.Tpo ../../lib/$(DEPDIR)/lib650-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib650-timediff.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) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib650-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib650-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib650-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib650-timediff.Tpo -c -o ../../lib/lib650-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib650-timediff.Tpo ../../lib/$(DEPDIR)/lib650-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib650-timediff.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) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib650-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib650-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib650-first.o -MD -MP -MF $(DEPDIR)/lib650-first.Tpo -c -o lib650-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib650-first.Tpo $(DEPDIR)/lib650-first.Po
@@ -11704,6 +15601,20 @@ lib651-lib651.obj: lib651.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib651-lib651.obj `if test -f 'lib651.c'; then $(CYGPATH_W) 'lib651.c'; else $(CYGPATH_W) '$(srcdir)/lib651.c'; fi`
+../../lib/lib651-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib651-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib651-timediff.Tpo -c -o ../../lib/lib651-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib651-timediff.Tpo ../../lib/$(DEPDIR)/lib651-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib651-timediff.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) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib651-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib651-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib651-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib651-timediff.Tpo -c -o ../../lib/lib651-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib651-timediff.Tpo ../../lib/$(DEPDIR)/lib651-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib651-timediff.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) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib651-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib651-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib651-first.o -MD -MP -MF $(DEPDIR)/lib651-first.Tpo -c -o lib651-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib651-first.Tpo $(DEPDIR)/lib651-first.Po
@@ -11732,6 +15643,20 @@ lib652-lib652.obj: lib652.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib652-lib652.obj `if test -f 'lib652.c'; then $(CYGPATH_W) 'lib652.c'; else $(CYGPATH_W) '$(srcdir)/lib652.c'; fi`
+../../lib/lib652-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib652-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib652-timediff.Tpo -c -o ../../lib/lib652-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib652-timediff.Tpo ../../lib/$(DEPDIR)/lib652-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib652-timediff.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) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib652-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib652-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib652-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib652-timediff.Tpo -c -o ../../lib/lib652-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib652-timediff.Tpo ../../lib/$(DEPDIR)/lib652-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib652-timediff.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) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib652-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib652-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib652-first.o -MD -MP -MF $(DEPDIR)/lib652-first.Tpo -c -o lib652-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib652-first.Tpo $(DEPDIR)/lib652-first.Po
@@ -11760,6 +15685,20 @@ lib653-lib653.obj: lib653.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib653-lib653.obj `if test -f 'lib653.c'; then $(CYGPATH_W) 'lib653.c'; else $(CYGPATH_W) '$(srcdir)/lib653.c'; fi`
+../../lib/lib653-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib653-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib653-timediff.Tpo -c -o ../../lib/lib653-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib653-timediff.Tpo ../../lib/$(DEPDIR)/lib653-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib653-timediff.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) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib653-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib653-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib653-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib653-timediff.Tpo -c -o ../../lib/lib653-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib653-timediff.Tpo ../../lib/$(DEPDIR)/lib653-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib653-timediff.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) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib653-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib653-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib653-first.o -MD -MP -MF $(DEPDIR)/lib653-first.Tpo -c -o lib653-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib653-first.Tpo $(DEPDIR)/lib653-first.Po
@@ -11788,6 +15727,20 @@ lib654-lib654.obj: lib654.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib654-lib654.obj `if test -f 'lib654.c'; then $(CYGPATH_W) 'lib654.c'; else $(CYGPATH_W) '$(srcdir)/lib654.c'; fi`
+../../lib/lib654-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib654-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib654-timediff.Tpo -c -o ../../lib/lib654-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib654-timediff.Tpo ../../lib/$(DEPDIR)/lib654-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib654-timediff.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) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib654-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib654-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib654-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib654-timediff.Tpo -c -o ../../lib/lib654-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib654-timediff.Tpo ../../lib/$(DEPDIR)/lib654-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib654-timediff.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) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib654-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib654-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib654-first.o -MD -MP -MF $(DEPDIR)/lib654-first.Tpo -c -o lib654-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib654-first.Tpo $(DEPDIR)/lib654-first.Po
@@ -11816,6 +15769,20 @@ lib655-lib655.obj: lib655.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib655-lib655.obj `if test -f 'lib655.c'; then $(CYGPATH_W) 'lib655.c'; else $(CYGPATH_W) '$(srcdir)/lib655.c'; fi`
+../../lib/lib655-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib655-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib655-timediff.Tpo -c -o ../../lib/lib655-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib655-timediff.Tpo ../../lib/$(DEPDIR)/lib655-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib655-timediff.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) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib655-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib655-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib655-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib655-timediff.Tpo -c -o ../../lib/lib655-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib655-timediff.Tpo ../../lib/$(DEPDIR)/lib655-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib655-timediff.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) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib655-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib655-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib655-first.o -MD -MP -MF $(DEPDIR)/lib655-first.Tpo -c -o lib655-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib655-first.Tpo $(DEPDIR)/lib655-first.Po
@@ -11844,6 +15811,20 @@ lib658-lib658.obj: lib658.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib658-lib658.obj `if test -f 'lib658.c'; then $(CYGPATH_W) 'lib658.c'; else $(CYGPATH_W) '$(srcdir)/lib658.c'; fi`
+../../lib/lib658-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib658-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib658-timediff.Tpo -c -o ../../lib/lib658-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib658-timediff.Tpo ../../lib/$(DEPDIR)/lib658-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib658-timediff.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) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib658-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib658-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib658-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib658-timediff.Tpo -c -o ../../lib/lib658-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib658-timediff.Tpo ../../lib/$(DEPDIR)/lib658-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib658-timediff.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) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib658-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib658-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib658-first.o -MD -MP -MF $(DEPDIR)/lib658-first.Tpo -c -o lib658-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib658-first.Tpo $(DEPDIR)/lib658-first.Po
@@ -11900,6 +15881,20 @@ lib659-lib659.obj: lib659.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib659-lib659.obj `if test -f 'lib659.c'; then $(CYGPATH_W) 'lib659.c'; else $(CYGPATH_W) '$(srcdir)/lib659.c'; fi`
+../../lib/lib659-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib659-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib659-timediff.Tpo -c -o ../../lib/lib659-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib659-timediff.Tpo ../../lib/$(DEPDIR)/lib659-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib659-timediff.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) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib659-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib659-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib659-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib659-timediff.Tpo -c -o ../../lib/lib659-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib659-timediff.Tpo ../../lib/$(DEPDIR)/lib659-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib659-timediff.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) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib659-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib659-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib659-first.o -MD -MP -MF $(DEPDIR)/lib659-first.Tpo -c -o lib659-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib659-first.Tpo $(DEPDIR)/lib659-first.Po
@@ -11956,6 +15951,20 @@ lib661-lib661.obj: lib661.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib661-lib661.obj `if test -f 'lib661.c'; then $(CYGPATH_W) 'lib661.c'; else $(CYGPATH_W) '$(srcdir)/lib661.c'; fi`
+../../lib/lib661-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib661-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib661-timediff.Tpo -c -o ../../lib/lib661-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib661-timediff.Tpo ../../lib/$(DEPDIR)/lib661-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib661-timediff.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) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib661-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib661-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib661-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib661-timediff.Tpo -c -o ../../lib/lib661-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib661-timediff.Tpo ../../lib/$(DEPDIR)/lib661-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib661-timediff.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) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib661-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib661-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib661-first.o -MD -MP -MF $(DEPDIR)/lib661-first.Tpo -c -o lib661-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib661-first.Tpo $(DEPDIR)/lib661-first.Po
@@ -11984,6 +15993,20 @@ lib666-lib666.obj: lib666.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib666-lib666.obj `if test -f 'lib666.c'; then $(CYGPATH_W) 'lib666.c'; else $(CYGPATH_W) '$(srcdir)/lib666.c'; fi`
+../../lib/lib666-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib666-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib666-timediff.Tpo -c -o ../../lib/lib666-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib666-timediff.Tpo ../../lib/$(DEPDIR)/lib666-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib666-timediff.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) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib666-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib666-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib666-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib666-timediff.Tpo -c -o ../../lib/lib666-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib666-timediff.Tpo ../../lib/$(DEPDIR)/lib666-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib666-timediff.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) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib666-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib666-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib666-first.o -MD -MP -MF $(DEPDIR)/lib666-first.Tpo -c -o lib666-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib666-first.Tpo $(DEPDIR)/lib666-first.Po
@@ -12012,6 +16035,20 @@ lib667-lib667.obj: lib667.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib667-lib667.obj `if test -f 'lib667.c'; then $(CYGPATH_W) 'lib667.c'; else $(CYGPATH_W) '$(srcdir)/lib667.c'; fi`
+../../lib/lib667-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib667-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib667-timediff.Tpo -c -o ../../lib/lib667-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib667-timediff.Tpo ../../lib/$(DEPDIR)/lib667-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib667-timediff.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) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib667-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib667-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib667-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib667-timediff.Tpo -c -o ../../lib/lib667-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib667-timediff.Tpo ../../lib/$(DEPDIR)/lib667-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib667-timediff.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) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib667-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib667-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib667-first.o -MD -MP -MF $(DEPDIR)/lib667-first.Tpo -c -o lib667-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib667-first.Tpo $(DEPDIR)/lib667-first.Po
@@ -12068,6 +16105,20 @@ lib668-lib668.obj: lib668.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib668-lib668.obj `if test -f 'lib668.c'; then $(CYGPATH_W) 'lib668.c'; else $(CYGPATH_W) '$(srcdir)/lib668.c'; fi`
+../../lib/lib668-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib668-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib668-timediff.Tpo -c -o ../../lib/lib668-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib668-timediff.Tpo ../../lib/$(DEPDIR)/lib668-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib668-timediff.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) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib668-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib668-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib668-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib668-timediff.Tpo -c -o ../../lib/lib668-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib668-timediff.Tpo ../../lib/$(DEPDIR)/lib668-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib668-timediff.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) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib668-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib668-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib668-first.o -MD -MP -MF $(DEPDIR)/lib668-first.Tpo -c -o lib668-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib668-first.Tpo $(DEPDIR)/lib668-first.Po
@@ -12124,6 +16175,20 @@ lib670-lib670.obj: lib670.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib670-lib670.obj `if test -f 'lib670.c'; then $(CYGPATH_W) 'lib670.c'; else $(CYGPATH_W) '$(srcdir)/lib670.c'; fi`
+../../lib/lib670-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib670-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib670-timediff.Tpo -c -o ../../lib/lib670-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib670-timediff.Tpo ../../lib/$(DEPDIR)/lib670-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib670-timediff.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) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib670-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib670-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib670-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib670-timediff.Tpo -c -o ../../lib/lib670-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib670-timediff.Tpo ../../lib/$(DEPDIR)/lib670-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib670-timediff.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) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib670-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib670-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib670-first.o -MD -MP -MF $(DEPDIR)/lib670-first.Tpo -c -o lib670-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib670-first.Tpo $(DEPDIR)/lib670-first.Po
@@ -12180,6 +16245,20 @@ lib671-lib670.obj: lib670.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib671-lib670.obj `if test -f 'lib670.c'; then $(CYGPATH_W) 'lib670.c'; else $(CYGPATH_W) '$(srcdir)/lib670.c'; fi`
+../../lib/lib671-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib671-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib671-timediff.Tpo -c -o ../../lib/lib671-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib671-timediff.Tpo ../../lib/$(DEPDIR)/lib671-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib671-timediff.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) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib671-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib671-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib671-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib671-timediff.Tpo -c -o ../../lib/lib671-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib671-timediff.Tpo ../../lib/$(DEPDIR)/lib671-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib671-timediff.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) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib671-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib671-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib671-first.o -MD -MP -MF $(DEPDIR)/lib671-first.Tpo -c -o lib671-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib671-first.Tpo $(DEPDIR)/lib671-first.Po
@@ -12236,6 +16315,20 @@ lib672-lib670.obj: lib670.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib672-lib670.obj `if test -f 'lib670.c'; then $(CYGPATH_W) 'lib670.c'; else $(CYGPATH_W) '$(srcdir)/lib670.c'; fi`
+../../lib/lib672-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib672-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib672-timediff.Tpo -c -o ../../lib/lib672-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib672-timediff.Tpo ../../lib/$(DEPDIR)/lib672-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib672-timediff.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) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib672-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib672-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib672-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib672-timediff.Tpo -c -o ../../lib/lib672-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib672-timediff.Tpo ../../lib/$(DEPDIR)/lib672-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib672-timediff.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) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib672-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib672-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib672-first.o -MD -MP -MF $(DEPDIR)/lib672-first.Tpo -c -o lib672-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib672-first.Tpo $(DEPDIR)/lib672-first.Po
@@ -12292,6 +16385,20 @@ lib673-lib670.obj: lib670.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib673-lib670.obj `if test -f 'lib670.c'; then $(CYGPATH_W) 'lib670.c'; else $(CYGPATH_W) '$(srcdir)/lib670.c'; fi`
+../../lib/lib673-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib673-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib673-timediff.Tpo -c -o ../../lib/lib673-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib673-timediff.Tpo ../../lib/$(DEPDIR)/lib673-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib673-timediff.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) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib673-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib673-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib673-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib673-timediff.Tpo -c -o ../../lib/lib673-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib673-timediff.Tpo ../../lib/$(DEPDIR)/lib673-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib673-timediff.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) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib673-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib673-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib673-first.o -MD -MP -MF $(DEPDIR)/lib673-first.Tpo -c -o lib673-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib673-first.Tpo $(DEPDIR)/lib673-first.Po
@@ -12348,6 +16455,20 @@ lib674-lib674.obj: lib674.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib674-lib674.obj `if test -f 'lib674.c'; then $(CYGPATH_W) 'lib674.c'; else $(CYGPATH_W) '$(srcdir)/lib674.c'; fi`
+../../lib/lib674-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib674-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib674-timediff.Tpo -c -o ../../lib/lib674-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib674-timediff.Tpo ../../lib/$(DEPDIR)/lib674-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib674-timediff.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) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib674-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib674-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib674-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib674-timediff.Tpo -c -o ../../lib/lib674-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib674-timediff.Tpo ../../lib/$(DEPDIR)/lib674-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib674-timediff.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) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib674-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib674-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib674-first.o -MD -MP -MF $(DEPDIR)/lib674-first.Tpo -c -o lib674-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib674-first.Tpo $(DEPDIR)/lib674-first.Po
@@ -12404,6 +16525,20 @@ lib676-lib676.obj: lib676.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib676-lib676.obj `if test -f 'lib676.c'; then $(CYGPATH_W) 'lib676.c'; else $(CYGPATH_W) '$(srcdir)/lib676.c'; fi`
+../../lib/lib676-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib676-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib676-timediff.Tpo -c -o ../../lib/lib676-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib676-timediff.Tpo ../../lib/$(DEPDIR)/lib676-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib676-timediff.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) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib676-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib676-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib676-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib676-timediff.Tpo -c -o ../../lib/lib676-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib676-timediff.Tpo ../../lib/$(DEPDIR)/lib676-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib676-timediff.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) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib676-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib676-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib676-first.o -MD -MP -MF $(DEPDIR)/lib676-first.Tpo -c -o lib676-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib676-first.Tpo $(DEPDIR)/lib676-first.Po
@@ -12460,6 +16595,20 @@ lib677-lib677.obj: lib677.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib677-lib677.obj `if test -f 'lib677.c'; then $(CYGPATH_W) 'lib677.c'; else $(CYGPATH_W) '$(srcdir)/lib677.c'; fi`
+../../lib/lib677-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib677-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib677-timediff.Tpo -c -o ../../lib/lib677-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib677-timediff.Tpo ../../lib/$(DEPDIR)/lib677-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib677-timediff.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) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib677-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib677-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib677-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib677-timediff.Tpo -c -o ../../lib/lib677-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib677-timediff.Tpo ../../lib/$(DEPDIR)/lib677-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib677-timediff.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) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib677-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib677-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib677-first.o -MD -MP -MF $(DEPDIR)/lib677-first.Tpo -c -o lib677-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib677-first.Tpo $(DEPDIR)/lib677-first.Po
@@ -12530,6 +16679,20 @@ lib678-lib678.obj: lib678.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib678-lib678.obj `if test -f 'lib678.c'; then $(CYGPATH_W) 'lib678.c'; else $(CYGPATH_W) '$(srcdir)/lib678.c'; fi`
+../../lib/lib678-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib678-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib678-timediff.Tpo -c -o ../../lib/lib678-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib678-timediff.Tpo ../../lib/$(DEPDIR)/lib678-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib678-timediff.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) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib678-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib678-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib678-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib678-timediff.Tpo -c -o ../../lib/lib678-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib678-timediff.Tpo ../../lib/$(DEPDIR)/lib678-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib678-timediff.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) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib678-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
lib678-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib678-first.o -MD -MP -MF $(DEPDIR)/lib678-first.Tpo -c -o lib678-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib678-first.Tpo $(DEPDIR)/lib678-first.Po
@@ -12600,6 +16763,20 @@ libauthretry-libauthretry.obj: libauthretry.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libauthretry-libauthretry.obj `if test -f 'libauthretry.c'; then $(CYGPATH_W) 'libauthretry.c'; else $(CYGPATH_W) '$(srcdir)/libauthretry.c'; fi`
+../../lib/libauthretry-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libauthretry-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/libauthretry-timediff.Tpo -c -o ../../lib/libauthretry-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libauthretry-timediff.Tpo ../../lib/$(DEPDIR)/libauthretry-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libauthretry-timediff.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) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libauthretry-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/libauthretry-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libauthretry-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/libauthretry-timediff.Tpo -c -o ../../lib/libauthretry-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libauthretry-timediff.Tpo ../../lib/$(DEPDIR)/libauthretry-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libauthretry-timediff.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) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libauthretry-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
libauthretry-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libauthretry-first.o -MD -MP -MF $(DEPDIR)/libauthretry-first.Tpo -c -o libauthretry-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libauthretry-first.Tpo $(DEPDIR)/libauthretry-first.Po
@@ -12628,6 +16805,20 @@ libntlmconnect-libntlmconnect.obj: libntlmconnect.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-libntlmconnect.obj `if test -f 'libntlmconnect.c'; then $(CYGPATH_W) 'libntlmconnect.c'; else $(CYGPATH_W) '$(srcdir)/libntlmconnect.c'; fi`
+../../lib/libntlmconnect-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libntlmconnect-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/libntlmconnect-timediff.Tpo -c -o ../../lib/libntlmconnect-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libntlmconnect-timediff.Tpo ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libntlmconnect-timediff.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) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libntlmconnect-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/libntlmconnect-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libntlmconnect-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/libntlmconnect-timediff.Tpo -c -o ../../lib/libntlmconnect-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libntlmconnect-timediff.Tpo ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libntlmconnect-timediff.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) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libntlmconnect-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
libntlmconnect-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libntlmconnect-first.o -MD -MP -MF $(DEPDIR)/libntlmconnect-first.Tpo -c -o libntlmconnect-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libntlmconnect-first.Tpo $(DEPDIR)/libntlmconnect-first.Po
@@ -12684,6 +16875,20 @@ libprereq-libprereq.obj: libprereq.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libprereq-libprereq.obj `if test -f 'libprereq.c'; then $(CYGPATH_W) 'libprereq.c'; else $(CYGPATH_W) '$(srcdir)/libprereq.c'; fi`
+../../lib/libprereq-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libprereq-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/libprereq-timediff.Tpo -c -o ../../lib/libprereq-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libprereq-timediff.Tpo ../../lib/$(DEPDIR)/libprereq-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libprereq-timediff.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) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libprereq-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/libprereq-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libprereq-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/libprereq-timediff.Tpo -c -o ../../lib/libprereq-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libprereq-timediff.Tpo ../../lib/$(DEPDIR)/libprereq-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libprereq-timediff.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) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libprereq-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
libprereq-first.o: first.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libprereq-first.o -MD -MP -MF $(DEPDIR)/libprereq-first.Tpo -c -o libprereq-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libprereq-first.Tpo $(DEPDIR)/libprereq-first.Po
@@ -12860,129 +17065,324 @@ clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-am
- -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po
- -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
+ -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-mprintf.Po
-rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-strdup.Po
-rm -f ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1156-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1156-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1500-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1501-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1501-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1502-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1502-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1503-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1503-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1504-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1504-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1505-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1505-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1506-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1506-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1507-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1507-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1508-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1508-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1509-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1509-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1510-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1510-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1511-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1511-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1512-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1512-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1513-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1513-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1514-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1514-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1515-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1515-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1517-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1518-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1520-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1521-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1522-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1523-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1525-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1525-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1526-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1526-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1527-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1527-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1528-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1528-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1529-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1529-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1530-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1530-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1531-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1531-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1532-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1532-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1533-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1533-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1534-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1534-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1535-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1535-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1536-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1536-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1537-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1537-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1538-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1538-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1539-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1539-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1540-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1540-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1542-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1542-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1543-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1550-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1551-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1552-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1553-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1554-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1555-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1556-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1557-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1564-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1564-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1565-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1565-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1567-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1568-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1569-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1591-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1592-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1596-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1905-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1906-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1907-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1908-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1908-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1910-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1910-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1911-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1911-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1912-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1912-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1913-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1913-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1915-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1915-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1916-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1916-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1917-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1917-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1918-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1918-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1919-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1919-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1933-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1933-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1934-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1934-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1935-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1935-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1936-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1936-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1937-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1938-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1939-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1940-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1945-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1946-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1947-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1948-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1955-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1955-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3010-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib3010-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3025-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib3025-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3026-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3026-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3027-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3027-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib500-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib500-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib501-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib502-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib503-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib504-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib505-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib505-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib506-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib507-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib508-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib509-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib510-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib511-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib512-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib513-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib514-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib515-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib516-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib517-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib518-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib518-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib519-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib520-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib521-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib523-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib524-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib525-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib525-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib526-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib526-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib527-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib527-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib529-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib529-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib529-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib530-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib530-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib532-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib532-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib533-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib533-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib537-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib537-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib537-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib539-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib540-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib540-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib541-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib541-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib542-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib543-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib544-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib545-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib547-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib548-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib549-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib552-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib552-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib553-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib554-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib555-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib555-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib556-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib556-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib557-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib558-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib559-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib560-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib560-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib562-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib564-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib564-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib565-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib566-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib566-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib567-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib568-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib568-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib569-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib569-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib570-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib571-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib571-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib571-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib572-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib572-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib573-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib573-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib574-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib575-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib575-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib576-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib578-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib578-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib579-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib579-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib582-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib582-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib582-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib583-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib584-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib585-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib585-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib586-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib587-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib589-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib590-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib591-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib591-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib591-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib597-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib597-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib598-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib599-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib599-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib643-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib645-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib650-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib651-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib652-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib653-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib654-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib655-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib658-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib658-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib659-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib659-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib661-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib666-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib667-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib667-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib668-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib668-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib670-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib670-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib671-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib671-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib672-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib672-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib673-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib673-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib674-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib674-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib676-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib676-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib677-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib677-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib677-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib678-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib678-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib678-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/libauthretry-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po
-rm -f ../../lib/$(DEPDIR)/libntlmconnect-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/libprereq-timediff.Po
-rm -f ../../lib/$(DEPDIR)/libprereq-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/timediff.Po
-rm -f ../../lib/$(DEPDIR)/warnless.Po
-rm -f ./$(DEPDIR)/chkdecimalpoint-chkdecimalpoint.Po
-rm -f ./$(DEPDIR)/chkhostname-chkhostname.Po
@@ -13104,6 +17504,8 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/lib1542-lib1542.Po
-rm -f ./$(DEPDIR)/lib1542-testtrace.Po
-rm -f ./$(DEPDIR)/lib1542-testutil.Po
+ -rm -f ./$(DEPDIR)/lib1543-first.Po
+ -rm -f ./$(DEPDIR)/lib1543-lib1518.Po
-rm -f ./$(DEPDIR)/lib1550-first.Po
-rm -f ./$(DEPDIR)/lib1550-lib1550.Po
-rm -f ./$(DEPDIR)/lib1551-first.Po
@@ -13151,6 +17553,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/lib1596-first.Po
-rm -f ./$(DEPDIR)/lib1596-lib1594.Po
-rm -f ./$(DEPDIR)/lib1596-testutil.Po
+ -rm -f ./$(DEPDIR)/lib1597.Po
-rm -f ./$(DEPDIR)/lib1905-first.Po
-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
-rm -f ./$(DEPDIR)/lib1905-testutil.Po
@@ -13184,6 +17587,8 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/lib1917-lib1916.Po
-rm -f ./$(DEPDIR)/lib1918-first.Po
-rm -f ./$(DEPDIR)/lib1918-lib1918.Po
+ -rm -f ./$(DEPDIR)/lib1919-first.Po
+ -rm -f ./$(DEPDIR)/lib1919-lib1919.Po
-rm -f ./$(DEPDIR)/lib1933-first.Po
-rm -f ./$(DEPDIR)/lib1933-lib1933.Po
-rm -f ./$(DEPDIR)/lib1933-testutil.Po
@@ -13202,12 +17607,33 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/lib1938-lib1938.Po
-rm -f ./$(DEPDIR)/lib1939-first.Po
-rm -f ./$(DEPDIR)/lib1939-lib1939.Po
+ -rm -f ./$(DEPDIR)/lib1940-first.Po
+ -rm -f ./$(DEPDIR)/lib1940-lib1940.Po
+ -rm -f ./$(DEPDIR)/lib1945-first.Po
+ -rm -f ./$(DEPDIR)/lib1945-lib1945.Po
+ -rm -f ./$(DEPDIR)/lib1946-first.Po
+ -rm -f ./$(DEPDIR)/lib1946-lib1940.Po
+ -rm -f ./$(DEPDIR)/lib1947-first.Po
+ -rm -f ./$(DEPDIR)/lib1947-lib1947.Po
+ -rm -f ./$(DEPDIR)/lib1948-first.Po
+ -rm -f ./$(DEPDIR)/lib1948-lib1948.Po
+ -rm -f ./$(DEPDIR)/lib1955-first.Po
+ -rm -f ./$(DEPDIR)/lib1955-lib1955.Po
+ -rm -f ./$(DEPDIR)/lib1955-testutil.Po
+ -rm -f ./$(DEPDIR)/lib2301.Po
+ -rm -f ./$(DEPDIR)/lib2302.Po
-rm -f ./$(DEPDIR)/lib3010-first.Po
-rm -f ./$(DEPDIR)/lib3010-lib3010.Po
-rm -f ./$(DEPDIR)/lib3010-testutil.Po
-rm -f ./$(DEPDIR)/lib3025-first.Po
-rm -f ./$(DEPDIR)/lib3025-lib3025.Po
-rm -f ./$(DEPDIR)/lib3025-testutil.Po
+ -rm -f ./$(DEPDIR)/lib3026-first.Po
+ -rm -f ./$(DEPDIR)/lib3026-lib3026.Po
+ -rm -f ./$(DEPDIR)/lib3026-testutil.Po
+ -rm -f ./$(DEPDIR)/lib3027-first.Po
+ -rm -f ./$(DEPDIR)/lib3027-lib3027.Po
+ -rm -f ./$(DEPDIR)/lib3027-testutil.Po
-rm -f ./$(DEPDIR)/lib500-first.Po
-rm -f ./$(DEPDIR)/lib500-lib500.Po
-rm -f ./$(DEPDIR)/lib500-testtrace.Po
@@ -13503,129 +17929,324 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po
- -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
+ -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-mprintf.Po
-rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-strdup.Po
-rm -f ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1156-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1156-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1500-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1501-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1501-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1502-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1502-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1503-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1503-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1504-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1504-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1505-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1505-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1506-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1506-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1507-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1507-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1508-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1508-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1509-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1509-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1510-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1510-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1511-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1511-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1512-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1512-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1513-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1513-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1514-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1514-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1515-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1515-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1517-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1518-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1520-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1521-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1522-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1523-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1525-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1525-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1526-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1526-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1527-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1527-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1528-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1528-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1529-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1529-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1530-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1530-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1531-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1531-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1532-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1532-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1533-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1533-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1534-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1534-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1535-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1535-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1536-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1536-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1537-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1537-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1538-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1538-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1539-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1539-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1540-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1540-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1542-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1542-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1543-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1550-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1551-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1552-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1553-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1554-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1555-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1556-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1557-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1564-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1564-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1565-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1565-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1567-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1568-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1569-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1591-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1592-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1596-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1905-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1906-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1907-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1908-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1908-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1910-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1910-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1911-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1911-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1912-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1912-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1913-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1913-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1915-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1915-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1916-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1916-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1917-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1917-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1918-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1918-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1919-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1919-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1933-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1933-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1934-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1934-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1935-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1935-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1936-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib1936-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1937-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1938-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1939-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1940-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1945-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1946-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1947-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1948-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1955-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1955-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3010-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib3010-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3025-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib3025-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3026-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3026-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3027-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib3027-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib500-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib500-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib501-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib502-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib503-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib504-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib505-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib505-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib506-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib507-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib508-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib509-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib510-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib511-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib512-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib513-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib514-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib515-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib516-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib517-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib518-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib518-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib519-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib520-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib521-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib523-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib524-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib525-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib525-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib526-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib526-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib527-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib527-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib529-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib529-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib529-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib530-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib530-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib532-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib532-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib533-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib533-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib537-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib537-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib537-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib539-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib540-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib540-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib541-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib541-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib542-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib543-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib544-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib545-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib547-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib548-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib549-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib552-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib552-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib553-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib554-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib555-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib555-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib556-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib556-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib557-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib558-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib559-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib560-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib560-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib562-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib564-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib564-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib565-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib566-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib566-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib567-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib568-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib568-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib569-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib569-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib570-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib571-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib571-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib571-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib572-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib572-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib573-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib573-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib574-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib575-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib575-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib576-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib578-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib578-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib579-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib579-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib582-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib582-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib582-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib583-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib584-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib585-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib585-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib586-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib587-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib589-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib590-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib591-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib591-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib591-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib597-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib597-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib598-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib599-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib599-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib643-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib645-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib650-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib651-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib652-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib653-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib654-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib655-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib658-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib658-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib659-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib659-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib661-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib666-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/lib667-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib667-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib668-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib668-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib670-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib670-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib671-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib671-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib672-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib672-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib673-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib673-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib674-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib674-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib676-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib676-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib677-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib677-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib677-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib678-curl_multibyte.Po
+ -rm -f ../../lib/$(DEPDIR)/lib678-timediff.Po
-rm -f ../../lib/$(DEPDIR)/lib678-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/libauthretry-timediff.Po
+ -rm -f ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po
-rm -f ../../lib/$(DEPDIR)/libntlmconnect-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/libprereq-timediff.Po
-rm -f ../../lib/$(DEPDIR)/libprereq-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/timediff.Po
-rm -f ../../lib/$(DEPDIR)/warnless.Po
-rm -f ./$(DEPDIR)/chkdecimalpoint-chkdecimalpoint.Po
-rm -f ./$(DEPDIR)/chkhostname-chkhostname.Po
@@ -13747,6 +18368,8 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/lib1542-lib1542.Po
-rm -f ./$(DEPDIR)/lib1542-testtrace.Po
-rm -f ./$(DEPDIR)/lib1542-testutil.Po
+ -rm -f ./$(DEPDIR)/lib1543-first.Po
+ -rm -f ./$(DEPDIR)/lib1543-lib1518.Po
-rm -f ./$(DEPDIR)/lib1550-first.Po
-rm -f ./$(DEPDIR)/lib1550-lib1550.Po
-rm -f ./$(DEPDIR)/lib1551-first.Po
@@ -13794,6 +18417,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/lib1596-first.Po
-rm -f ./$(DEPDIR)/lib1596-lib1594.Po
-rm -f ./$(DEPDIR)/lib1596-testutil.Po
+ -rm -f ./$(DEPDIR)/lib1597.Po
-rm -f ./$(DEPDIR)/lib1905-first.Po
-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
-rm -f ./$(DEPDIR)/lib1905-testutil.Po
@@ -13827,6 +18451,8 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/lib1917-lib1916.Po
-rm -f ./$(DEPDIR)/lib1918-first.Po
-rm -f ./$(DEPDIR)/lib1918-lib1918.Po
+ -rm -f ./$(DEPDIR)/lib1919-first.Po
+ -rm -f ./$(DEPDIR)/lib1919-lib1919.Po
-rm -f ./$(DEPDIR)/lib1933-first.Po
-rm -f ./$(DEPDIR)/lib1933-lib1933.Po
-rm -f ./$(DEPDIR)/lib1933-testutil.Po
@@ -13845,12 +18471,33 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/lib1938-lib1938.Po
-rm -f ./$(DEPDIR)/lib1939-first.Po
-rm -f ./$(DEPDIR)/lib1939-lib1939.Po
+ -rm -f ./$(DEPDIR)/lib1940-first.Po
+ -rm -f ./$(DEPDIR)/lib1940-lib1940.Po
+ -rm -f ./$(DEPDIR)/lib1945-first.Po
+ -rm -f ./$(DEPDIR)/lib1945-lib1945.Po
+ -rm -f ./$(DEPDIR)/lib1946-first.Po
+ -rm -f ./$(DEPDIR)/lib1946-lib1940.Po
+ -rm -f ./$(DEPDIR)/lib1947-first.Po
+ -rm -f ./$(DEPDIR)/lib1947-lib1947.Po
+ -rm -f ./$(DEPDIR)/lib1948-first.Po
+ -rm -f ./$(DEPDIR)/lib1948-lib1948.Po
+ -rm -f ./$(DEPDIR)/lib1955-first.Po
+ -rm -f ./$(DEPDIR)/lib1955-lib1955.Po
+ -rm -f ./$(DEPDIR)/lib1955-testutil.Po
+ -rm -f ./$(DEPDIR)/lib2301.Po
+ -rm -f ./$(DEPDIR)/lib2302.Po
-rm -f ./$(DEPDIR)/lib3010-first.Po
-rm -f ./$(DEPDIR)/lib3010-lib3010.Po
-rm -f ./$(DEPDIR)/lib3010-testutil.Po
-rm -f ./$(DEPDIR)/lib3025-first.Po
-rm -f ./$(DEPDIR)/lib3025-lib3025.Po
-rm -f ./$(DEPDIR)/lib3025-testutil.Po
+ -rm -f ./$(DEPDIR)/lib3026-first.Po
+ -rm -f ./$(DEPDIR)/lib3026-lib3026.Po
+ -rm -f ./$(DEPDIR)/lib3026-testutil.Po
+ -rm -f ./$(DEPDIR)/lib3027-first.Po
+ -rm -f ./$(DEPDIR)/lib3027-lib3027.Po
+ -rm -f ./$(DEPDIR)/lib3027-testutil.Po
-rm -f ./$(DEPDIR)/lib500-first.Po
-rm -f ./$(DEPDIR)/lib500-lib500.Po
-rm -f ./$(DEPDIR)/lib500-testtrace.Po
@@ -14143,7 +18790,7 @@ lib1521.c: $(top_srcdir)/tests/libtest/mk-lib1521.pl $(top_srcdir)/include/curl/
@PERL@ $(top_srcdir)/tests/libtest/mk-lib1521.pl < $(top_srcdir)/include/curl/curl.h > lib1521.c
checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/*.[ch]
+ $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/*.[ch]
# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc
diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
index 8721d550c..484ac178c 100644
--- a/tests/libtest/Makefile.inc
+++ b/tests/libtest/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# files used only in some libcurl test programs
TESTUTIL = testutil.c testutil.h
@@ -32,7 +34,7 @@ WARNLESS = ../../lib/warnless.c ../../lib/warnless.h
MULTIBYTE = ../../lib/curl_multibyte.c ../../lib/curl_multibyte.h
# these files are used in every single test program below
-SUPPORTFILES = first.c test.h
+SUPPORTFILES = ../../lib/timediff.c ../../lib/timediff.h first.c test.h
# These are all libcurl test programs
noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \
@@ -55,17 +57,19 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \
lib1518 lib1520 lib1521 lib1522 lib1523 \
lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
lib1534 lib1535 lib1536 lib1537 lib1538 lib1539 \
- lib1540 lib1542 \
+ lib1540 lib1542 lib1543 \
lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
lib1558 lib1559 lib1560 lib1564 lib1565 lib1567 lib1568 lib1569 \
- lib1591 lib1592 lib1593 lib1594 lib1596 \
+ lib1591 lib1592 lib1593 lib1594 lib1596 lib1597 \
lib1905 lib1906 lib1907 lib1908 lib1910 lib1911 lib1912 lib1913 \
- lib1915 lib1916 lib1917 lib1918 lib1933 lib1934 lib1935 lib1936 \
- lib1937 lib1938 lib1939 \
- lib3010 lib3025
+ lib1915 lib1916 lib1917 lib1918 lib1919 \
+ lib1933 lib1934 lib1935 lib1936 lib1937 lib1938 lib1939 lib1940 \
+ lib1945 lib1946 lib1947 lib1948 lib1955 \
+ lib2301 lib2302 \
+ lib3010 lib3025 lib3026 lib3027
chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
- ../../lib/curl_ctype.c ../../lib/dynbuf.c ../../lib/strdup.c
+ ../../lib/dynbuf.c ../../lib/strdup.c
chkdecimalpoint_LDADD =
chkdecimalpoint_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB \
-DCURLX_NO_MEMORY_CALLBACKS -DBUILDING_LIBCURL
@@ -578,6 +582,9 @@ lib1542_SOURCES = lib1542.c $(SUPPORTFILES) $(TESTUTIL) $(TSTTRACE) $(WARNLESS)
lib1542_LDADD = $(TESTUTIL_LIBS)
lib1542_CPPFLAGS = $(AM_CPPFLAGS)
+lib1543_SOURCES = lib1518.c $(SUPPORTFILES)
+lib1543_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1543
+
lib1550_SOURCES = lib1550.c $(SUPPORTFILES)
lib1550_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1517
@@ -651,6 +658,9 @@ lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1596_LDADD = $(TESTUTIL_LIBS)
lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596
+lib1597_SOURCES = lib1597.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1597_LDADD = $(TESTUTIL_LIBS)
+
lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)
@@ -696,6 +706,9 @@ lib1917_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1917
lib1918_SOURCES = lib1918.c $(SUPPORTFILES) $(WARNLESS)
lib1918_CPPFLAGS = $(AM_CPPFLAGS)
+lib1919_SOURCES = lib1919.c $(SUPPORTFILES) $(WARNLESS)
+lib1919_CPPFLAGS = $(AM_CPPFLAGS)
+
lib1933_SOURCES = lib1933.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1933_LDADD = $(TESTUTIL_LIBS)
lib1933_CPPFLAGS = $(AM_CPPFLAGS)
@@ -724,6 +737,36 @@ lib1939_SOURCES = lib1939.c $(SUPPORTFILES)
lib1939_LDADD = $(TESTUTIL_LIBS)
lib1939_CPPFLAGS = $(AM_CPPFLAGS)
+lib1940_SOURCES = lib1940.c $(SUPPORTFILES)
+lib1940_LDADD = $(TESTUTIL_LIBS)
+lib1940_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib1945_SOURCES = lib1945.c $(SUPPORTFILES)
+lib1945_LDADD = $(TESTUTIL_LIBS)
+lib1945_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib1946_SOURCES = lib1940.c $(SUPPORTFILES)
+lib1946_LDADD = $(TESTUTIL_LIBS)
+lib1946_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1946
+
+lib1947_SOURCES = lib1947.c $(SUPPORTFILES)
+lib1947_LDADD = $(TESTUTIL_LIBS)
+lib1947_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib1948_SOURCES = lib1948.c $(SUPPORTFILES)
+lib1948_LDADD = $(TESTUTIL_LIBS)
+lib1948_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib1955_SOURCES = lib1955.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1955_LDADD = $(TESTUTIL_LIBS)
+lib1955_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib2301_SOURCES = lib2301.c $(SUPPORTFILES)
+lib2301_LDADD = $(TESTUTIL_LIBS)
+
+lib2302_SOURCES = lib2302.c $(SUPPORTFILES)
+lib2302_LDADD = $(TESTUTIL_LIBS)
+
lib3010_SOURCES = lib3010.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib3010_LDADD = $(TESTUTIL_LIBS)
lib3010_CPPFLAGS = $(AM_CPPFLAGS)
@@ -731,3 +774,11 @@ lib3010_CPPFLAGS = $(AM_CPPFLAGS)
lib3025_SOURCES = lib3025.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib3025_LDADD = $(TESTUTIL_LIBS)
lib3025_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib3026_SOURCES = lib3026.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib3026_LDADD = $(TESTUTIL_LIBS)
+lib3026_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib3027_SOURCES = lib3027.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib3027_LDADD = $(TESTUTIL_LIBS)
+lib3027_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/libtest/chkdecimalpoint.c b/tests/libtest/chkdecimalpoint.c
index 4ab98cf4d..0ff0b7d6d 100644
--- a/tests/libtest/chkdecimalpoint.c
+++ b/tests/libtest/chkdecimalpoint.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_printf.h"
diff --git a/tests/libtest/chkhostname.c b/tests/libtest/chkhostname.c
index d36e8375d..04716f93b 100644
--- a/tests/libtest/chkhostname.c
+++ b/tests/libtest/chkhostname.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/tests/libtest/first.c b/tests/libtest/first.c
index ffb211fd4..5edb49bd2 100644
--- a/tests/libtest/first.c
+++ b/tests/libtest/first.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -42,6 +44,8 @@
# include "memdebug.h"
#endif
+#include "timediff.h"
+
int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
struct timeval *tv)
{
@@ -56,7 +60,7 @@ int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
* select() can not be used to sleep without a single fd_set.
*/
if(!nfds) {
- Sleep((1000*tv->tv_sec) + (DWORD)(((double)tv->tv_usec)/1000.0));
+ Sleep((DWORD)curlx_tvtoms(tv));
return 0;
}
#endif
@@ -65,11 +69,13 @@ int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
void wait_ms(int ms)
{
+#ifdef USE_WINSOCK
+ Sleep(ms);
+#else
struct timeval t;
- t.tv_sec = ms/1000;
- ms -= (int)t.tv_sec * 1000;
- t.tv_usec = ms * 1000;
+ curlx_mstotv(&t, ms);
select_wrapper(0, NULL, NULL, NULL, &t);
+#endif
}
char *libtest_arg2 = NULL;
@@ -179,5 +185,10 @@ int main(int argc, char **argv)
PR_Cleanup();
#endif
+#ifdef WIN32
+ /* flush buffers of all streams regardless of mode */
+ _flushall();
+#endif
+
return result;
}
diff --git a/tests/libtest/lib1156.c b/tests/libtest/lib1156.c
index 21d4e8704..23e3d941f 100644
--- a/tests/libtest/lib1156.c
+++ b/tests/libtest/lib1156.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1500.c b/tests/libtest/lib1500.c
index ed944a26b..9e009a3e7 100644
--- a/tests/libtest/lib1500.c
+++ b/tests/libtest/lib1500.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1501.c b/tests/libtest/lib1501.c
index a847c70d6..1deb2fdef 100644
--- a/tests/libtest/lib1501.c
+++ b/tests/libtest/lib1501.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1502.c b/tests/libtest/lib1502.c
index 32d4cb2c0..2b5ba9e2e 100644
--- a/tests/libtest/lib1502.c
+++ b/tests/libtest/lib1502.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* This source code is used for lib1502, lib1503, lib1504 and lib1505 with
diff --git a/tests/libtest/lib1506.c b/tests/libtest/lib1506.c
index a49e5b4ab..1acb7bc62 100644
--- a/tests/libtest/lib1506.c
+++ b/tests/libtest/lib1506.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1507.c b/tests/libtest/lib1507.c
index dd83fc021..0783486c6 100644
--- a/tests/libtest/lib1507.c
+++ b/tests/libtest/lib1507.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,13 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "testutil.h"
+#include "timediff.h"
#include "warnless.h"
#include "memdebug.h"
@@ -102,11 +105,11 @@ int test(char *URL)
curl_multi_timeout(mcurl, &curl_timeo);
if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
+ curlx_mstotv(&timeout, curl_timeo);
+ if(timeout.tv_sec > 1) {
timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
+ timeout.tv_usec = 0;
+ }
}
/* get file descriptors from the transfers */
diff --git a/tests/libtest/lib1508.c b/tests/libtest/lib1508.c
index bbd200b6e..732e10d2b 100644
--- a/tests/libtest/lib1508.c
+++ b/tests/libtest/lib1508.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1509.c b/tests/libtest/lib1509.c
index 02e84f56a..e64f3a37a 100644
--- a/tests/libtest/lib1509.c
+++ b/tests/libtest/lib1509.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1510.c b/tests/libtest/lib1510.c
index af01c4d82..130400a78 100644
--- a/tests/libtest/lib1510.c
+++ b/tests/libtest/lib1510.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1511.c b/tests/libtest/lib1511.c
index 82cb62974..26d308438 100644
--- a/tests/libtest/lib1511.c
+++ b/tests/libtest/lib1511.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1512.c b/tests/libtest/lib1512.c
index 6879c4d43..d88dd1c00 100644
--- a/tests/libtest/lib1512.c
+++ b/tests/libtest/lib1512.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/tests/libtest/lib1513.c b/tests/libtest/lib1513.c
index f75ca0866..04e1ecc90 100644
--- a/tests/libtest/lib1513.c
+++ b/tests/libtest/lib1513.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* Test case converted from bug report #1318 by Petr Novak.
diff --git a/tests/libtest/lib1514.c b/tests/libtest/lib1514.c
index 51302ad55..a2350030e 100644
--- a/tests/libtest/lib1514.c
+++ b/tests/libtest/lib1514.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* Make sure libcurl does not send a `Content-Length: -1` header when HTTP POST
diff --git a/tests/libtest/lib1515.c b/tests/libtest/lib1515.c
index 4aede606d..6690af4c0 100644
--- a/tests/libtest/lib1515.c
+++ b/tests/libtest/lib1515.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/tests/libtest/lib1517.c b/tests/libtest/lib1517.c
index c3a4986c2..85e027a93 100644
--- a/tests/libtest/lib1517.c
+++ b/tests/libtest/lib1517.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -79,11 +81,6 @@ int test(char *URL)
/* Now specify we want to POST data */
test_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
- /* Convert the POST data to ASCII */
- test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
/* Set the expected POST size */
test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)pooh.sizeleft);
diff --git a/tests/libtest/lib1518.c b/tests/libtest/lib1518.c
index 8c4687885..42a6db730 100644
--- a/tests/libtest/lib1518.c
+++ b/tests/libtest/lib1518.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -25,6 +27,16 @@
/* Test inspired by github issue 3340 */
+static size_t writecb(char *buffer, size_t size, size_t nitems,
+ void *outstream)
+{
+ (void)buffer;
+ (void)size;
+ (void)nitems;
+ (void)outstream;
+ return 0;
+}
+
int test(char *URL)
{
CURL *curl;
@@ -33,17 +45,34 @@ int test(char *URL)
long curlRedirectCount;
char *effectiveUrl = NULL;
char *redirectUrl = NULL;
-
+#ifdef LIB1543
+ CURLU *urlu = NULL;
+#endif
curl = curl_easy_init();
if(!curl) {
fprintf(stderr, "curl_easy_init() failed\n");
curl_global_cleanup();
return TEST_ERR_MAJOR_BAD;
}
-
+#ifdef LIB1543
+ /* set CURLOPT_URLU */
+ {
+ CURLUcode rc = CURLUE_OK;
+ urlu = curl_url();
+ if(urlu)
+ rc = curl_url_set(urlu, CURLUPART_URL, URL, CURLU_ALLOW_SPACE);
+ if(!urlu || rc) {
+ goto test_cleanup;
+ }
+ test_setopt(curl, CURLOPT_CURLU, urlu);
+ }
+ test_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+#else
test_setopt(curl, CURLOPT_URL, URL);
/* just to make it explicit and visible in this test: */
test_setopt(curl, CURLOPT_FOLLOWLOCATION, 0L);
+#endif
+
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
@@ -52,6 +81,7 @@ int test(char *URL)
curl_easy_getinfo(curl, CURLINFO_REDIRECT_COUNT, &curlRedirectCount);
curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effectiveUrl);
curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &redirectUrl);
+ res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
printf("res %d\n"
"status %d\n"
@@ -62,13 +92,15 @@ int test(char *URL)
(int)curlResponseCode,
(int)curlRedirectCount,
effectiveUrl,
- redirectUrl);
+ redirectUrl ? redirectUrl : "blank");
test_cleanup:
/* always cleanup */
curl_easy_cleanup(curl);
curl_global_cleanup();
-
+#ifdef LIB1543
+ curl_url_cleanup(urlu);
+#endif
return res;
}
diff --git a/tests/libtest/lib1520.c b/tests/libtest/lib1520.c
index b0ff08a54..248620b23 100644
--- a/tests/libtest/lib1520.c
+++ b/tests/libtest/lib1520.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2014 - 2020, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1522.c b/tests/libtest/lib1522.c
index 2532a6ca2..fa4c0c8e6 100644
--- a/tests/libtest/lib1522.c
+++ b/tests/libtest/lib1522.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1523.c b/tests/libtest/lib1523.c
index bd45b8471..d63a58fe9 100644
--- a/tests/libtest/lib1523.c
+++ b/tests/libtest/lib1523.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -75,7 +77,7 @@ int test(char *URL)
if(ret != CURLE_OPERATION_TIMEDOUT)
fprintf(stderr, "error %d: %s\n", ret, buffer);
else
- ret = 0;
+ ret = CURLE_OK;
printf("End: %d\n", time(NULL));
curl_easy_cleanup(hnd);
diff --git a/tests/libtest/lib1525.c b/tests/libtest/lib1525.c
index a2a4db226..44c52ff58 100644
--- a/tests/libtest/lib1525.c
+++ b/tests/libtest/lib1525.c
@@ -5,8 +5,8 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- * Copyright (C) 2014, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998, 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
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/tests/libtest/lib1526.c b/tests/libtest/lib1526.c
index 37abc6111..d9f11f54e 100644
--- a/tests/libtest/lib1526.c
+++ b/tests/libtest/lib1526.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/tests/libtest/lib1527.c b/tests/libtest/lib1527.c
index 9e0e452a0..6f4d7fec4 100644
--- a/tests/libtest/lib1527.c
+++ b/tests/libtest/lib1527.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/tests/libtest/lib1528.c b/tests/libtest/lib1528.c
index 98a332c5b..3401f6580 100644
--- a/tests/libtest/lib1528.c
+++ b/tests/libtest/lib1528.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1529.c b/tests/libtest/lib1529.c
index 006355233..b2fa29a16 100644
--- a/tests/libtest/lib1529.c
+++ b/tests/libtest/lib1529.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1530.c b/tests/libtest/lib1530.c
index 778dd38f5..39b2042c5 100644
--- a/tests/libtest/lib1530.c
+++ b/tests/libtest/lib1530.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1531.c b/tests/libtest/lib1531.c
index 6d7ea6aa9..c5cc54857 100644
--- a/tests/libtest/lib1531.c
+++ b/tests/libtest/lib1531.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,13 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "testutil.h"
+#include "timediff.h"
#include "warnless.h"
#include "memdebug.h"
@@ -85,11 +88,11 @@ int test(char *URL)
curl_multi_timeout(multi_handle, &curl_timeo);
if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
+ curlx_mstotv(&timeout, curl_timeo);
+ if(timeout.tv_sec > 1) {
timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
+ timeout.tv_usec = 0;
+ }
}
/* get file descriptors from the transfers */
diff --git a/tests/libtest/lib1532.c b/tests/libtest/lib1532.c
index 395732122..01ce4b445 100644
--- a/tests/libtest/lib1532.c
+++ b/tests/libtest/lib1532.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -29,7 +31,7 @@ int test(char *URL)
{
CURL *curl;
long httpcode;
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
@@ -76,5 +78,5 @@ int test(char *URL)
test_cleanup:
curl_easy_cleanup(curl);
curl_global_cleanup();
- return res;
+ return (int)res;
}
diff --git a/tests/libtest/lib1533.c b/tests/libtest/lib1533.c
index 7d978b154..b36f3a208 100644
--- a/tests/libtest/lib1533.c
+++ b/tests/libtest/lib1533.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -129,7 +131,7 @@ int test(char *URL)
{
struct cb_data data;
CURL *curl = NULL;
- CURLcode res = CURLE_FAILED_INIT;
+ int res = TEST_ERR_FAILURE;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
fprintf(stderr, "curl_global_init() failed\n");
diff --git a/tests/libtest/lib1534.c b/tests/libtest/lib1534.c
index 738d5dd63..7fc731dc9 100644
--- a/tests/libtest/lib1534.c
+++ b/tests/libtest/lib1534.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -29,7 +31,7 @@ int test(char *URL)
{
CURL *curl, *dupe = NULL;
long filetime;
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
@@ -125,5 +127,5 @@ test_cleanup:
curl_easy_cleanup(curl);
curl_easy_cleanup(dupe);
curl_global_cleanup();
- return res;
+ return (int)res;
}
diff --git a/tests/libtest/lib1535.c b/tests/libtest/lib1535.c
index 2a64242eb..e8cf67f9c 100644
--- a/tests/libtest/lib1535.c
+++ b/tests/libtest/lib1535.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -29,7 +31,7 @@ int test(char *URL)
{
CURL *curl, *dupe = NULL;
long protocol;
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
@@ -124,5 +126,5 @@ test_cleanup:
curl_easy_cleanup(curl);
curl_easy_cleanup(dupe);
curl_global_cleanup();
- return res;
+ return (int)res;
}
diff --git a/tests/libtest/lib1536.c b/tests/libtest/lib1536.c
index 1875c5b61..018c6cff4 100644
--- a/tests/libtest/lib1536.c
+++ b/tests/libtest/lib1536.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -29,7 +31,7 @@ int test(char *URL)
{
CURL *curl, *dupe = NULL;
char *scheme;
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
@@ -125,5 +127,5 @@ test_cleanup:
curl_easy_cleanup(curl);
curl_easy_cleanup(dupe);
curl_global_cleanup();
- return res;
+ return (int)res;
}
diff --git a/tests/libtest/lib1537.c b/tests/libtest/lib1537.c
index cfed3392b..30f7be243 100644
--- a/tests/libtest/lib1537.c
+++ b/tests/libtest/lib1537.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1538.c b/tests/libtest/lib1538.c
index a1d1ace99..494a4e956 100644
--- a/tests/libtest/lib1538.c
+++ b/tests/libtest/lib1538.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1540.c b/tests/libtest/lib1540.c
index 8c4304ea0..0f74931db 100644
--- a/tests/libtest/lib1540.c
+++ b/tests/libtest/lib1540.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1542.c b/tests/libtest/lib1542.c
index 4e17d9d36..19c46b59b 100644
--- a/tests/libtest/lib1542.c
+++ b/tests/libtest/lib1542.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/tests/libtest/lib1550.c b/tests/libtest/lib1550.c
index 0139cf2a5..c35e293cd 100644
--- a/tests/libtest/lib1550.c
+++ b/tests/libtest/lib1550.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1551.c b/tests/libtest/lib1551.c
index 58305ae32..aabb92a96 100644
--- a/tests/libtest/lib1551.c
+++ b/tests/libtest/lib1551.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1552.c b/tests/libtest/lib1552.c
index ce783d7f4..acab9cde1 100644
--- a/tests/libtest/lib1552.c
+++ b/tests/libtest/lib1552.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1553.c b/tests/libtest/lib1553.c
index 65292a7e5..01003c5ed 100644
--- a/tests/libtest/lib1553.c
+++ b/tests/libtest/lib1553.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1554.c b/tests/libtest/lib1554.c
index a18d548b0..021cdc9c8 100644
--- a/tests/libtest/lib1554.c
+++ b/tests/libtest/lib1554.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
diff --git a/tests/libtest/lib1555.c b/tests/libtest/lib1555.c
index 0c00574a9..eb39e96e6 100644
--- a/tests/libtest/lib1555.c
+++ b/tests/libtest/lib1555.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* Verify that some API functions are locked from being called inside callback
@@ -35,7 +37,7 @@ static int progressCallback(void *arg,
double ultotal,
double ulnow)
{
- CURLcode res = 0;
+ CURLcode res = CURLE_OK;
char buffer[256];
size_t n = 0;
(void)arg;
diff --git a/tests/libtest/lib1556.c b/tests/libtest/lib1556.c
index bd8508134..b59a0db60 100644
--- a/tests/libtest/lib1556.c
+++ b/tests/libtest/lib1556.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1557.c b/tests/libtest/lib1557.c
index 1f0ceedf3..6828d7866 100644
--- a/tests/libtest/lib1557.c
+++ b/tests/libtest/lib1557.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1558.c b/tests/libtest/lib1558.c
index 610339b63..8c95b060b 100644
--- a/tests/libtest/lib1558.c
+++ b/tests/libtest/lib1558.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -27,7 +29,7 @@
int test(char *URL)
{
- CURLcode res = 0;
+ CURLcode res = CURLE_OK;
CURL *curl = NULL;
long protocol = 0;
diff --git a/tests/libtest/lib1559.c b/tests/libtest/lib1559.c
index f099a23bb..c941ac252 100644
--- a/tests/libtest/lib1559.c
+++ b/tests/libtest/lib1559.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -28,7 +30,7 @@
#define EXCESSIVE 10*1000*1000
int test(char *URL)
{
- CURLcode res = 0;
+ CURLcode res = CURLE_OK;
CURL *curl = NULL;
char *longurl = malloc(EXCESSIVE);
CURLU *u;
diff --git a/tests/libtest/lib1560.c b/tests/libtest/lib1560.c
index 76148499d..42300cfd7 100644
--- a/tests/libtest/lib1560.c
+++ b/tests/libtest/lib1560.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -58,7 +60,7 @@ static int checkparts(CURLU *u, const char *in, const char *wanted,
{CURLUPART_PATH, "path"},
{CURLUPART_QUERY, "query"},
{CURLUPART_FRAGMENT, "fragment"},
- {0, NULL}
+ {CURLUPART_URL, NULL}
};
memset(buf, 0, sizeof(buf));
@@ -128,7 +130,63 @@ struct querycase {
CURLUcode ucode;
};
+struct clearurlcase {
+ CURLUPart part;
+ const char *in;
+ const char *out;
+ CURLUcode ucode;
+};
+
static const struct testcase get_parts_list[] ={
+ {"https://user@example.net?he l lo",
+ "https | user | [12] | [13] | example.net | [15] | / | he+l+lo | [17]",
+ CURLU_ALLOW_SPACE, CURLU_URLENCODE, CURLUE_OK},
+ {"https://user@example.net?he l lo",
+ "https | user | [12] | [13] | example.net | [15] | / | he l lo | [17]",
+ CURLU_ALLOW_SPACE, 0, CURLUE_OK},
+ {"https://exam{}[]ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam{ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam}ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam]ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam\\ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam$ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam'ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam\"ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam^ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam`ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam*ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam<ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam>ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam=ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://exam;ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://example,net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"https://example.net/}",
+ "https | [11] | [12] | [13] | example.net | [15] | /} | [16] | [17]",
+ 0, 0, CURLUE_OK},
+
+ /* blank user is blank */
+ {"https://:password@example.net",
+ "https | | password | [13] | example.net | [15] | / | [16] | [17]",
+ 0, 0, CURLUE_OK},
+ /* blank user + blank password */
+ {"https://:@example.net",
+ "https | | | [13] | example.net | [15] | / | [16] | [17]",
+ 0, 0, CURLUE_OK},
+ /* user-only (no password) */
+ {"https://user@example.net",
+ "https | user | [12] | [13] | example.net | [15] | / | [16] | [17]",
+ 0, 0, CURLUE_OK},
+#ifdef USE_WEBSOCKETS
+ {"ws://example.com/color/?green",
+ "ws | [11] | [12] | [13] | example.com | [15] | /color/ | green |"
+ " [17]",
+ CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
+ {"wss://example.com/color/?green",
+ "wss | [11] | [12] | [13] | example.com | [15] | /color/ | green |"
+ " [17]",
+ CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
+#endif
+
{"https://user:password@example.net/get?this=and#but frag then", "",
CURLU_DEFAULT_SCHEME, 0, CURLUE_BAD_FRAGMENT},
{"https://user:password@example.net/get?this=and what", "",
@@ -228,7 +286,7 @@ static const struct testcase get_parts_list[] ={
CURLU_DEFAULT_SCHEME, 0, CURLUE_NO_HOST},
{"boing:80",
"https | [11] | [12] | [13] | boing | 80 | / | [16] | [17]",
- CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
+ CURLU_DEFAULT_SCHEME|CURLU_GUESS_SCHEME, 0, CURLUE_OK},
{"http://[fd00:a41::50]:8080",
"http | [11] | [12] | [13] | [fd00:a41::50] | 8080 | / | [16] | [17]",
CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
@@ -373,7 +431,23 @@ static const struct testcase get_parts_list[] ={
};
static const struct urltestcase get_url_list[] = {
+ /* unsupported schemes with no guessing enabled */
+ {"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIEhUTUw+PG1ldGEgY",
+ "", 0, 0, CURLUE_UNSUPPORTED_SCHEME},
+ {"d:anything-really", "", 0, 0, CURLUE_UNSUPPORTED_SCHEME},
+ {"about:config", "", 0, 0, CURLUE_UNSUPPORTED_SCHEME},
+ {"example://foo", "", 0, 0, CURLUE_UNSUPPORTED_SCHEME},
+ {"mailto:infobot@example.com?body=send%20current-issue", "", 0, 0,
+ CURLUE_UNSUPPORTED_SCHEME},
+ {"about:80", "https://about:80/", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
/* percent encoded host names */
+ {"http://example.com%40127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"http://example.com%21127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"http://example.com%3f127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"http://example.com%23127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"http://example.com%3a127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"http://example.com%09127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+ {"http://example.com%2F127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
{"https://%this", "https://%25this/", 0, 0, CURLUE_OK},
{"https://h%c", "https://h%25c/", 0, 0, CURLUE_OK},
{"https://%%%%%%", "https://%25%25%25%25%25%25/", 0, 0, CURLUE_OK},
@@ -492,7 +566,7 @@ static const struct urltestcase get_url_list[] = {
"",
CURLU_DISALLOW_USER, 0, CURLUE_USER_NOT_ALLOWED},
{"http:/@example.com:123",
- "http://example.com:123/",
+ "http://@example.com:123/",
0, 0, CURLUE_OK},
{"http:/:password@example.com",
"http://:password@example.com/",
@@ -542,7 +616,7 @@ static const struct urltestcase get_url_list[] = {
{"custom-scheme://host?expected=test-still-good",
"custom-scheme://host/?expected=test-still-good",
CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY, 0, CURLUE_OK},
- {NULL, NULL, 0, 0, 0}
+ {NULL, NULL, 0, 0, CURLUE_OK}
};
static int checkurl(const char *url, const char *out)
@@ -706,7 +780,7 @@ static const struct setcase set_parts_list[] = {
CURLU_NON_SUPPORT_SCHEME, CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY,
CURLUE_OK, CURLUE_OK},
- {NULL, NULL, NULL, 0, 0, 0, 0}
+ {NULL, NULL, NULL, 0, 0, CURLUE_OK, CURLUE_OK}
};
static CURLUPart part2id(char *part)
@@ -781,35 +855,47 @@ static CURLUcode updateurl(CURLU *u, const char *cmd, unsigned int setflags)
}
static const struct redircase set_url_list[] = {
+ {"http://example.com/please/../gimme/%TESTNUMBER?foobar#hello",
+ "http://example.net/there/it/is/../../tes t case=/%TESTNUMBER0002? yes no",
+ "http://example.net/there/tes%20t%20case=/%TESTNUMBER0002?+yes+no",
+ 0, CURLU_URLENCODE|CURLU_ALLOW_SPACE, CURLUE_OK},
+ {"http://local.test?redirect=http://local.test:80?-321",
+ "http://local.test:80?-123",
+ "http://local.test:80/?-123",
+ 0, CURLU_URLENCODE|CURLU_ALLOW_SPACE, CURLUE_OK},
+ {"http://local.test?redirect=http://local.test:80?-321",
+ "http://local.test:80?-123",
+ "http://local.test:80/?-123",
+ 0, 0, CURLUE_OK},
{"http://example.org/static/favicon/wikipedia.ico",
"//fake.example.com/licenses/by-sa/3.0/",
"http://fake.example.com/licenses/by-sa/3.0/",
- 0, 0, 0},
+ 0, 0, CURLUE_OK},
{"https://example.org/static/favicon/wikipedia.ico",
"//fake.example.com/licenses/by-sa/3.0/",
"https://fake.example.com/licenses/by-sa/3.0/",
- 0, 0, 0},
+ 0, 0, CURLUE_OK},
{"file://localhost/path?query#frag",
"foo#another",
"file:///foo#another",
- 0, 0, 0},
+ 0, 0, CURLUE_OK},
{"http://example.com/path?query#frag",
"https://two.example.com/bradnew",
"https://two.example.com/bradnew",
- 0, 0, 0},
+ 0, 0, CURLUE_OK},
{"http://example.com/path?query#frag",
"../../newpage#foo",
"http://example.com/newpage#foo",
- 0, 0, 0},
+ 0, 0, CURLUE_OK},
{"http://user:foo@example.com/path?query#frag",
"../../newpage",
"http://user:foo@example.com/newpage",
- 0, 0, 0},
+ 0, 0, CURLUE_OK},
{"http://user:foo@example.com/path?query#frag",
"../newpage",
"http://user:foo@example.com/newpage",
- 0, 0, 0},
- {NULL, NULL, NULL, 0, 0, 0}
+ 0, 0, CURLUE_OK},
+ {NULL, NULL, NULL, 0, 0, CURLUE_OK}
};
static int set_url(void)
@@ -996,7 +1082,7 @@ static const struct querycase append_list[] = {
0, 0, CURLUE_OK},
{"HTTP://test/?size=2#f", "name=joe", "http://test/?size=2&name=joe#f",
0, 0, CURLUE_OK},
- {NULL, NULL, NULL, 0, 0, 0}
+ {NULL, NULL, NULL, 0, 0, CURLUE_OK}
};
static int append(void)
@@ -1217,7 +1303,7 @@ static int get_nothing(void)
fprintf(stderr, "unexpected return code line %u\n", __LINE__);
rc = curl_url_get(u, CURLUPART_ZONEID, &p, 0);
- if(rc != CURLUE_OK)
+ if(rc != CURLUE_NO_ZONEID)
fprintf(stderr, "unexpected return code %u on line %u\n", (int)rc,
__LINE__);
@@ -1226,6 +1312,54 @@ static int get_nothing(void)
return 0;
}
+static const struct clearurlcase clear_url_list[] ={
+ {CURLUPART_SCHEME, "http", NULL, CURLUE_NO_SCHEME},
+ {CURLUPART_USER, "user", NULL, CURLUE_NO_USER},
+ {CURLUPART_PASSWORD, "password", NULL, CURLUE_NO_PASSWORD},
+ {CURLUPART_OPTIONS, "options", NULL, CURLUE_NO_OPTIONS},
+ {CURLUPART_HOST, "host", NULL, CURLUE_NO_HOST},
+ {CURLUPART_ZONEID, "eth0", NULL, CURLUE_NO_ZONEID},
+ {CURLUPART_PORT, "1234", NULL, CURLUE_NO_PORT},
+ {CURLUPART_PATH, "/hello", "/", CURLUE_OK},
+ {CURLUPART_QUERY, "a=b", NULL, CURLUE_NO_QUERY},
+ {CURLUPART_FRAGMENT, "anchor", NULL, CURLUE_NO_FRAGMENT},
+ {CURLUPART_URL, NULL, NULL, CURLUE_OK},
+};
+
+static int clear_url(void)
+{
+ CURLU *u = curl_url();
+ int i, error = 0;
+ if(u) {
+ char *p = NULL;
+ CURLUcode rc;
+
+ for(i = 0; clear_url_list[i].in && !error; i++) {
+ rc = curl_url_set(u, clear_url_list[i].part, clear_url_list[i].in, 0);
+ if(rc != CURLUE_OK)
+ fprintf(stderr, "unexpected return code line %u\n", __LINE__);
+
+ rc = curl_url_set(u, CURLUPART_URL, NULL, 0);
+ if(rc != CURLUE_OK)
+ fprintf(stderr, "unexpected return code line %u\n", __LINE__);
+
+ rc = curl_url_get(u, clear_url_list[i].part, &p, 0);
+ if(rc != clear_url_list[i].ucode || (clear_url_list[i].out &&
+ 0 != strcmp(p, clear_url_list[i].out))) {
+
+ fprintf(stderr, "unexpected return code line %u\n", __LINE__);
+ error++;
+ }
+ if(rc == CURLUE_OK)
+ curl_free(p);
+ }
+ }
+
+ curl_url_cleanup(u);
+
+ return error;
+}
+
int test(char *URL)
{
(void)URL; /* not used */
@@ -1251,6 +1385,9 @@ int test(char *URL)
if(get_parts())
return 4;
+ if(clear_url())
+ return 8;
+
printf("success\n");
return 0;
}
diff --git a/tests/libtest/lib1564.c b/tests/libtest/lib1564.c
index ee19b912e..d03ffa97d 100644
--- a/tests/libtest/lib1564.c
+++ b/tests/libtest/lib1564.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1565.c b/tests/libtest/lib1565.c
index e4d1820cd..f21ec0929 100644
--- a/tests/libtest/lib1565.c
+++ b/tests/libtest/lib1565.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1567.c b/tests/libtest/lib1567.c
index a1c4a2477..ecf5c9e43 100644
--- a/tests/libtest/lib1567.c
+++ b/tests/libtest/lib1567.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1568.c b/tests/libtest/lib1568.c
index 87251d96f..7e68b5f49 100644
--- a/tests/libtest/lib1568.c
+++ b/tests/libtest/lib1568.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2021 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -48,4 +50,3 @@ int test(char *URL)
curl_global_cleanup();
return (int)ret;
}
-
diff --git a/tests/libtest/lib1569.c b/tests/libtest/lib1569.c
index 0aaba3973..b7da426eb 100644
--- a/tests/libtest/lib1569.c
+++ b/tests/libtest/lib1569.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2021 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1591.c b/tests/libtest/lib1591.c
index 8349b1db5..1a6f7c29f 100644
--- a/tests/libtest/lib1591.c
+++ b/tests/libtest/lib1591.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
diff --git a/tests/libtest/lib1592.c b/tests/libtest/lib1592.c
index 808aff6e1..3e839412d 100644
--- a/tests/libtest/lib1592.c
+++ b/tests/libtest/lib1592.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* See https://github.com/curl/curl/issues/3371
diff --git a/tests/libtest/lib1593.c b/tests/libtest/lib1593.c
index e3b838e47..01a7e2e56 100644
--- a/tests/libtest/lib1593.c
+++ b/tests/libtest/lib1593.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Test suppressing the If-Modified-Since header */
diff --git a/tests/libtest/lib1594.c b/tests/libtest/lib1594.c
index 102e0a7d7..9411f05c1 100644
--- a/tests/libtest/lib1594.c
+++ b/tests/libtest/lib1594.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Testing Retry-After header parser */
diff --git a/tests/libtest/lib1597.c b/tests/libtest/lib1597.c
new file mode 100644
index 000000000..cf2effaa1
--- /dev/null
+++ b/tests/libtest/lib1597.c
@@ -0,0 +1,115 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+/* Testing CURLOPT_PROTOCOLS_STR */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+struct pair {
+ const char *in;
+ CURLcode *exp;
+};
+
+int test(char *URL)
+{
+ CURL *curl = NULL;
+ int res = 0;
+ CURLcode result = CURLE_OK;
+ curl_version_info_data *curlinfo;
+ const char *const *proto;
+ int n;
+ int i;
+ static CURLcode ok = CURLE_OK;
+ static CURLcode bad = CURLE_BAD_FUNCTION_ARGUMENT;
+ static CURLcode unsup = CURLE_UNSUPPORTED_PROTOCOL;
+ static CURLcode httpcode = CURLE_UNSUPPORTED_PROTOCOL;
+ static CURLcode httpscode = CURLE_UNSUPPORTED_PROTOCOL;
+ static char protolist[1024];
+
+ static const struct pair prots[] = {
+ {"goobar", &unsup},
+ {"http ", &unsup},
+ {" http", &unsup},
+ {"http", &httpcode},
+ {"http,", &httpcode},
+ {"https,", &httpscode},
+ {"https,http", &httpscode},
+ {"http,http", &httpcode},
+ {"HTTP,HTTP", &httpcode},
+ {",HTTP,HTTP", &httpcode},
+ {"http,http,ft", &unsup},
+ {"", &bad},
+ {",,", &bad},
+ {protolist, &ok},
+ {"all", &ok},
+ {NULL, NULL},
+ };
+ (void)URL;
+
+ global_init(CURL_GLOBAL_ALL);
+
+ easy_init(curl);
+
+ /* Get enabled protocols.*/
+ curlinfo = curl_version_info(CURLVERSION_NOW);
+ if(!curlinfo) {
+ fputs("curl_version_info failed\n", stderr);
+ res = (int) TEST_ERR_FAILURE;
+ goto test_cleanup;
+ }
+
+ n = 0;
+ for(proto = curlinfo->protocols; *proto; proto++) {
+ if((size_t) n >= sizeof(protolist)) {
+ puts("protolist buffer too small\n");
+ res = (int) TEST_ERR_FAILURE;
+ goto test_cleanup;
+ }
+ n += msnprintf(protolist + n, sizeof(protolist) - n, ",%s", *proto);
+ if(curl_strequal(*proto, "http"))
+ httpcode = CURLE_OK;
+ if(curl_strequal(*proto, "https"))
+ httpscode = CURLE_OK;
+ }
+
+ /* Run the tests. */
+ for(i = 0; prots[i].in; i++) {
+ result = curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, prots[i].in);
+ if(result != *prots[i].exp) {
+ printf("unexpectedly '%s' returned %u\n",
+ prots[i].in, result);
+ break;
+ }
+ }
+ printf("Tested %u strings\n", i);
+ res = (int)result;
+
+ test_cleanup:
+ curl_easy_cleanup(curl);
+ curl_global_cleanup();
+
+ return (int)result;
+}
diff --git a/tests/libtest/lib1905.c b/tests/libtest/lib1905.c
index bc1acf846..162dea268 100644
--- a/tests/libtest/lib1905.c
+++ b/tests/libtest/lib1905.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,13 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "testutil.h"
+#include "timediff.h"
#include "warnless.h"
#include "memdebug.h"
@@ -73,8 +76,7 @@ int test(char *URL)
curl_multi_timeout(cm, &max_tout);
if(max_tout > 0) {
- timeout.tv_sec = max_tout / 1000;
- timeout.tv_usec = (max_tout % 1000) * 1000;
+ curlx_mstotv(&timeout, max_tout);
}
else {
timeout.tv_sec = 0;
diff --git a/tests/libtest/lib1906.c b/tests/libtest/lib1906.c
index fdcc86d48..3e237e2d4 100644
--- a/tests/libtest/lib1906.c
+++ b/tests/libtest/lib1906.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -37,7 +39,7 @@ int test(char *URL)
curl_easy_setopt(curl, CURLOPT_CURLU, curlu);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- /* set a port number that makes this reqeuest fail */
+ /* set a port number that makes this request fail */
curl_easy_setopt(curl, CURLOPT_PORT, 1L);
curl_code = curl_easy_perform(curl);
if(!curl_code)
diff --git a/tests/libtest/lib1907.c b/tests/libtest/lib1907.c
index c4f8ff07c..f0d035a95 100644
--- a/tests/libtest/lib1907.c
+++ b/tests/libtest/lib1907.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1908.c b/tests/libtest/lib1908.c
index 81267ac66..17d0e3f6a 100644
--- a/tests/libtest/lib1908.c
+++ b/tests/libtest/lib1908.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1910.c b/tests/libtest/lib1910.c
index 7f2e29917..8bb319d96 100644
--- a/tests/libtest/lib1910.c
+++ b/tests/libtest/lib1910.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1911.c b/tests/libtest/lib1911.c
index 09757fba8..a346bb0f7 100644
--- a/tests/libtest/lib1911.c
+++ b/tests/libtest/lib1911.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -45,7 +47,7 @@ int test(char *URL)
return 1;
}
- /* make it a zero terminated C string with just As */
+ /* make it a null-terminated C string with just As */
memset(buffer, 'A', MAX_INPUT_LENGTH + 1);
buffer[MAX_INPUT_LENGTH + 1] = 0;
@@ -62,6 +64,8 @@ int test(char *URL)
switch(o->id) {
case CURLOPT_PROXY_TLSAUTH_TYPE:
case CURLOPT_TLSAUTH_TYPE:
+ case CURLOPT_RANDOM_FILE:
+ case CURLOPT_EGDSOCKET:
continue;
default:
/* check this */
@@ -75,6 +79,7 @@ int test(char *URL)
case CURLE_BAD_FUNCTION_ARGUMENT: /* the most normal */
case CURLE_UNKNOWN_OPTION: /* left out from the build */
case CURLE_NOT_BUILT_IN: /* not supported */
+ case CURLE_UNSUPPORTED_PROTOCOL: /* detected by protocol2num() */
break;
default:
/* all other return codes are unexpected */
diff --git a/tests/libtest/lib1912.c b/tests/libtest/lib1912.c
index 32e5a3093..d42f80fe3 100644
--- a/tests/libtest/lib1912.c
+++ b/tests/libtest/lib1912.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1913.c b/tests/libtest/lib1913.c
index 043a5329d..3662f9835 100644
--- a/tests/libtest/lib1913.c
+++ b/tests/libtest/lib1913.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1915.c b/tests/libtest/lib1915.c
index b419ef291..5e5aace13 100644
--- a/tests/libtest/lib1915.c
+++ b/tests/libtest/lib1915.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1916.c b/tests/libtest/lib1916.c
index 0d5fa78c8..7a251bf12 100644
--- a/tests/libtest/lib1916.c
+++ b/tests/libtest/lib1916.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1918.c b/tests/libtest/lib1918.c
index 189c3710d..209eef58f 100644
--- a/tests/libtest/lib1918.c
+++ b/tests/libtest/lib1918.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1919.c b/tests/libtest/lib1919.c
new file mode 100644
index 000000000..fce4cb03b
--- /dev/null
+++ b/tests/libtest/lib1919.c
@@ -0,0 +1,53 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+int test(char *URL)
+{
+ CURL *curl;
+ curl_global_init(CURL_GLOBAL_ALL);
+
+ curl = curl_easy_init();
+ if(curl) {
+ int i;
+ curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BEARER);
+ curl_easy_setopt(curl, CURLOPT_XOAUTH2_BEARER,
+ "c4e448d652a961fda0ab64f882c8c161d5985f805d45d80c9ddca1");
+ curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID,
+ "c4e448d652a961fda0ab64f882c8c161d5985f805d45d80c9ddca2");
+ curl_easy_setopt(curl, CURLOPT_URL, URL);
+
+ for(i = 0; i < 2; i++)
+ /* the second request needs to do connection reuse */
+ curl_easy_perform(curl);
+
+ curl_easy_cleanup(curl);
+ }
+ curl_global_cleanup();
+ return 0;
+}
diff --git a/tests/libtest/lib1933.c b/tests/libtest/lib1933.c
index c489879b1..39459d001 100644
--- a/tests/libtest/lib1933.c
+++ b/tests/libtest/lib1933.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -27,6 +29,7 @@ int test(char *URL)
{
CURL *curl;
CURLcode res = TEST_ERR_MAJOR_BAD;
+ struct curl_slist *connect_to = NULL;
struct curl_slist *list = NULL;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -45,6 +48,10 @@ int test(char *URL)
test_setopt(curl, CURLOPT_AWS_SIGV4, "xxx");
test_setopt(curl, CURLOPT_HEADER, 0L);
test_setopt(curl, CURLOPT_URL, URL);
+ if(libtest_arg2) {
+ connect_to = curl_slist_append(connect_to, libtest_arg2);
+ }
+ test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
list = curl_slist_append(list, "Content-Type: application/json");
test_setopt(curl, CURLOPT_HTTPHEADER, list);
@@ -52,6 +59,7 @@ int test(char *URL)
test_cleanup:
+ curl_slist_free_all(connect_to);
curl_slist_free_all(list);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib1934.c b/tests/libtest/lib1934.c
index f4e9eec67..917f6e681 100644
--- a/tests/libtest/lib1934.c
+++ b/tests/libtest/lib1934.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -27,6 +29,7 @@ int test(char *URL)
{
CURL *curl;
CURLcode res = TEST_ERR_MAJOR_BAD;
+ struct curl_slist *connect_to = NULL;
struct curl_slist *list = NULL;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -46,6 +49,10 @@ int test(char *URL)
test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
test_setopt(curl, CURLOPT_HEADER, 0L);
test_setopt(curl, CURLOPT_URL, URL);
+ if(libtest_arg2) {
+ connect_to = curl_slist_append(connect_to, libtest_arg2);
+ }
+ test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
list = curl_slist_append(list, "Content-Type: application/json");
test_setopt(curl, CURLOPT_HTTPHEADER, list);
@@ -53,6 +60,7 @@ int test(char *URL)
test_cleanup:
+ curl_slist_free_all(connect_to);
curl_slist_free_all(list);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib1935.c b/tests/libtest/lib1935.c
index 1ef4372d9..459ead393 100644
--- a/tests/libtest/lib1935.c
+++ b/tests/libtest/lib1935.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -27,6 +29,7 @@ int test(char *URL)
{
CURL *curl;
CURLcode res = TEST_ERR_MAJOR_BAD;
+ struct curl_slist *connect_to = NULL;
struct curl_slist *list = NULL;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -46,6 +49,10 @@ int test(char *URL)
test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
test_setopt(curl, CURLOPT_HEADER, 0L);
test_setopt(curl, CURLOPT_URL, URL);
+ if(libtest_arg2) {
+ connect_to = curl_slist_append(connect_to, libtest_arg2);
+ }
+ test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
list = curl_slist_append(list, "Content-Type: application/json");
test_setopt(curl, CURLOPT_HTTPHEADER, list);
@@ -53,6 +60,7 @@ int test(char *URL)
test_cleanup:
+ curl_slist_free_all(connect_to);
curl_slist_free_all(list);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib1936.c b/tests/libtest/lib1936.c
index 75d92a770..e522e3817 100644
--- a/tests/libtest/lib1936.c
+++ b/tests/libtest/lib1936.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -27,6 +29,7 @@ int test(char *URL)
{
CURL *curl;
CURLcode res = TEST_ERR_MAJOR_BAD;
+ struct curl_slist *connect_to = NULL;
struct curl_slist *list = NULL;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -46,6 +49,10 @@ int test(char *URL)
test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
test_setopt(curl, CURLOPT_HEADER, 0L);
test_setopt(curl, CURLOPT_URL, URL);
+ if(libtest_arg2) {
+ connect_to = curl_slist_append(connect_to, libtest_arg2);
+ }
+ test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
list = curl_slist_append(list, "Content-Type: application/json");
test_setopt(curl, CURLOPT_HTTPHEADER, list);
@@ -53,6 +60,7 @@ int test(char *URL)
test_cleanup:
+ curl_slist_free_all(connect_to);
curl_slist_free_all(list);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib1937.c b/tests/libtest/lib1937.c
index d544de04b..14b968743 100644
--- a/tests/libtest/lib1937.c
+++ b/tests/libtest/lib1937.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -28,6 +30,7 @@ int test(char *URL)
{
CURL *curl;
CURLcode res = TEST_ERR_MAJOR_BAD;
+ struct curl_slist *connect_to = NULL;
struct curl_slist *list = NULL;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -48,6 +51,10 @@ int test(char *URL)
test_setopt(curl, CURLOPT_USERPWD, "keyId:SecretKey");
test_setopt(curl, CURLOPT_HEADER, 0L);
test_setopt(curl, CURLOPT_URL, URL);
+ if(libtest_arg2) {
+ connect_to = curl_slist_append(connect_to, libtest_arg2);
+ }
+ test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
list = curl_slist_append(list, "Content-Type: application/json");
test_setopt(curl, CURLOPT_HTTPHEADER, list);
test_setopt(curl, CURLOPT_POSTFIELDS, "postData");
@@ -56,6 +63,7 @@ int test(char *URL)
test_cleanup:
+ curl_slist_free_all(connect_to);
curl_slist_free_all(list);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib1938.c b/tests/libtest/lib1938.c
index 3ddd35c74..79dc6cc0e 100644
--- a/tests/libtest/lib1938.c
+++ b/tests/libtest/lib1938.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -28,6 +30,7 @@ int test(char *URL)
{
CURL *curl;
CURLcode res = TEST_ERR_MAJOR_BAD;
+ struct curl_slist *connect_to = NULL;
struct curl_slist *list = NULL;
unsigned char data[] = {0x70, 0x6f, 0x73, 0x74, 0, 0x44, 0x61, 0x74, 0x61};
@@ -49,6 +52,10 @@ int test(char *URL)
test_setopt(curl, CURLOPT_USERPWD, "keyId:SecretKey");
test_setopt(curl, CURLOPT_HEADER, 0L);
test_setopt(curl, CURLOPT_URL, URL);
+ if(libtest_arg2) {
+ connect_to = curl_slist_append(connect_to, libtest_arg2);
+ }
+ test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
list = curl_slist_append(list, "Content-Type: application/json");
test_setopt(curl, CURLOPT_HTTPHEADER, list);
test_setopt(curl, CURLOPT_POSTFIELDS, data);
@@ -58,6 +65,7 @@ int test(char *URL)
test_cleanup:
+ curl_slist_free_all(connect_to);
curl_slist_free_all(list);
curl_easy_cleanup(curl);
curl_global_cleanup();
diff --git a/tests/libtest/lib1939.c b/tests/libtest/lib1939.c
index 510215dbd..1c88f68a8 100644
--- a/tests/libtest/lib1939.c
+++ b/tests/libtest/lib1939.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib1940.c b/tests/libtest/lib1940.c
new file mode 100644
index 000000000..c2c91b541
--- /dev/null
+++ b/tests/libtest/lib1940.c
@@ -0,0 +1,119 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static const char *show[]={
+ "daTE",
+ "Server",
+ "content-type",
+ "content-length",
+ "location",
+ "set-cookie",
+ "silly-thing",
+ "fold",
+ NULL
+};
+
+#ifdef LIB1946
+#define HEADER_REQUEST 0
+#else
+#define HEADER_REQUEST -1
+#endif
+
+static void showem(CURL *easy, unsigned int type)
+{
+ int i;
+ struct curl_header *header;
+ for(i = 0; show[i]; i++) {
+ if(CURLHE_OK == curl_easy_header(easy, show[i], 0, type, HEADER_REQUEST,
+ &header)) {
+ if(header->amount > 1) {
+ /* more than one, iterate over them */
+ size_t index = 0;
+ size_t amount = header->amount;
+ do {
+ printf("- %s == %s (%u/%u)\n", header->name, header->value,
+ (int)index, (int)amount);
+
+ if(++index == amount)
+ break;
+ if(CURLHE_OK != curl_easy_header(easy, show[i], index, type,
+ HEADER_REQUEST, &header))
+ break;
+ } while(1);
+ }
+ else {
+ /* only one of this */
+ printf(" %s == %s\n", header->name, header->value);
+ }
+ }
+ }
+}
+
+static size_t write_cb(char *data, size_t n, size_t l, void *userp)
+{
+ /* take care of the data here, ignored in this example */
+ (void)data;
+ (void)userp;
+ return n*l;
+}
+int test(char *URL)
+{
+ CURL *easy;
+
+ curl_global_init(CURL_GLOBAL_DEFAULT);
+
+ easy = curl_easy_init();
+ if(easy) {
+ CURLcode res;
+ curl_easy_setopt(easy, CURLOPT_URL, URL);
+ curl_easy_setopt(easy, CURLOPT_VERBOSE, 1L);
+ curl_easy_setopt(easy, CURLOPT_FOLLOWLOCATION, 1L);
+ /* ignores any content */
+ curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, write_cb);
+
+ /* if there's a proxy set, use it */
+ if(libtest_arg2 && *libtest_arg2) {
+ curl_easy_setopt(easy, CURLOPT_PROXY, libtest_arg2);
+ curl_easy_setopt(easy, CURLOPT_HTTPPROXYTUNNEL, 1L);
+ }
+ res = curl_easy_perform(easy);
+ if(res) {
+ printf("badness: %d\n", (int)res);
+ }
+ showem(easy, CURLH_HEADER);
+ if(libtest_arg2 && *libtest_arg2) {
+ /* now show connect headers only */
+ showem(easy, CURLH_CONNECT);
+ }
+ showem(easy, CURLH_1XX);
+ showem(easy, CURLH_TRAILER);
+ curl_easy_cleanup(easy);
+ }
+ curl_global_cleanup();
+ return 0;
+}
diff --git a/tests/libtest/lib1945.c b/tests/libtest/lib1945.c
new file mode 100644
index 000000000..fad99bae4
--- /dev/null
+++ b/tests/libtest/lib1945.c
@@ -0,0 +1,81 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#include "memdebug.h"
+
+#ifdef _MSC_VER
+/* warning C4706: assignment within conditional expression */
+#pragma warning(disable:4706)
+#endif
+static void showem(CURL *easy, unsigned int type)
+{
+ struct curl_header *header = NULL;
+ struct curl_header *prev = NULL;
+
+ while((header = curl_easy_nextheader(easy, type, 0, prev))) {
+ printf(" %s == %s (%u/%u)\n", header->name, header->value,
+ (int)header->index, (int)header->amount);
+ prev = header;
+ }
+}
+
+static size_t write_cb(char *data, size_t n, size_t l, void *userp)
+{
+ /* take care of the data here, ignored in this example */
+ (void)data;
+ (void)userp;
+ return n*l;
+}
+int test(char *URL)
+{
+ CURL *easy;
+
+ curl_global_init(CURL_GLOBAL_DEFAULT);
+
+ easy = curl_easy_init();
+ if(easy) {
+ CURLcode res;
+ curl_easy_setopt(easy, CURLOPT_URL, URL);
+ curl_easy_setopt(easy, CURLOPT_VERBOSE, 1L);
+ curl_easy_setopt(easy, CURLOPT_FOLLOWLOCATION, 1L);
+ /* ignores any content */
+ curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, write_cb);
+
+ /* if there's a proxy set, use it */
+ if(libtest_arg2 && *libtest_arg2) {
+ curl_easy_setopt(easy, CURLOPT_PROXY, libtest_arg2);
+ curl_easy_setopt(easy, CURLOPT_HTTPPROXYTUNNEL, 1L);
+ }
+ res = curl_easy_perform(easy);
+ if(res) {
+ printf("badness: %d\n", (int)res);
+ }
+ showem(easy, CURLH_CONNECT|CURLH_HEADER|CURLH_TRAILER|CURLH_1XX);
+ curl_easy_cleanup(easy);
+ }
+ curl_global_cleanup();
+ return 0;
+}
diff --git a/tests/libtest/lib1947.c b/tests/libtest/lib1947.c
new file mode 100644
index 000000000..f7bd91fb3
--- /dev/null
+++ b/tests/libtest/lib1947.c
@@ -0,0 +1,89 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static size_t writecb(char *data, size_t n, size_t l, void *userp)
+{
+ /* ignore the data */
+ (void)data;
+ (void)userp;
+ return n*l;
+}
+int test(char *URL)
+{
+ CURL *curl;
+ CURLcode res;
+
+ curl_global_init(CURL_GLOBAL_DEFAULT);
+
+ curl = curl_easy_init();
+ if(curl) {
+ struct curl_header *h;
+ int count = 0;
+ int origins;
+
+ /* perform a request that involves redirection */
+ curl_easy_setopt(curl, CURLOPT_URL, URL);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+ curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+ res = curl_easy_perform(curl);
+ if(res)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+
+ /* count the number of requests by reading the first header of each
+ request. */
+ origins = (CURLH_HEADER|CURLH_TRAILER|CURLH_CONNECT|
+ CURLH_1XX|CURLH_PSEUDO);
+ do {
+ h = curl_easy_nextheader(curl, origins, count, NULL);
+ if(h)
+ count++;
+ } while(h);
+ printf("count = %u\n", count);
+
+ /* perform another request - without redirect */
+ curl_easy_setopt(curl, CURLOPT_URL, libtest_arg2);
+ res = curl_easy_perform(curl);
+ if(res)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+
+ /* count the number of requests again. */
+ count = 0;
+ do {
+ h = curl_easy_nextheader(curl, origins, count, NULL);
+ if(h)
+ count++;
+ } while(h);
+ printf("count = %u\n", count);
+ curl_easy_cleanup(curl);
+ }
+
+ curl_global_cleanup();
+ return 0;
+}
diff --git a/tests/libtest/lib1948.c b/tests/libtest/lib1948.c
new file mode 100644
index 000000000..7c891a2ca
--- /dev/null
+++ b/tests/libtest/lib1948.c
@@ -0,0 +1,79 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+typedef struct
+{
+ char *buf;
+ size_t len;
+} put_buffer;
+
+static size_t put_callback(char *ptr, size_t size, size_t nmemb, void *stream)
+{
+ put_buffer *putdata = (put_buffer *)stream;
+ size_t totalsize = size * nmemb;
+ size_t tocopy = (putdata->len < totalsize) ? putdata->len : totalsize;
+ memcpy(ptr, putdata->buf, tocopy);
+ putdata->len -= tocopy;
+ putdata->buf += tocopy;
+ return tocopy;
+}
+
+int test(char *URL)
+{
+ CURL *curl;
+ CURLcode res = CURLE_OUT_OF_MEMORY;
+
+ curl_global_init(CURL_GLOBAL_DEFAULT);
+
+ curl = curl_easy_init();
+ if(curl) {
+ const char *testput = "This is test PUT data\n";
+ put_buffer pbuf;
+
+ /* PUT */
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+ curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
+ curl_easy_setopt(curl, CURLOPT_READFUNCTION, put_callback);
+ pbuf.buf = (char *)testput;
+ pbuf.len = strlen(testput);
+ curl_easy_setopt(curl, CURLOPT_READDATA, &pbuf);
+ curl_easy_setopt(curl, CURLOPT_INFILESIZE, (long)strlen(testput));
+ res = curl_easy_setopt(curl, CURLOPT_URL, URL);
+ if(!res)
+ res = curl_easy_perform(curl);
+ if(!res) {
+ /* POST */
+ curl_easy_setopt(curl, CURLOPT_POST, 1L);
+ curl_easy_setopt(curl, CURLOPT_POSTFIELDS, testput);
+ curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(testput));
+ res = curl_easy_perform(curl);
+ }
+ curl_easy_cleanup(curl);
+ }
+
+ curl_global_cleanup();
+ return (int)res;
+}
diff --git a/tests/libtest/lib1955.c b/tests/libtest/lib1955.c
new file mode 100644
index 000000000..053c3e1ae
--- /dev/null
+++ b/tests/libtest/lib1955.c
@@ -0,0 +1,76 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "memdebug.h"
+
+int test(char *URL)
+{
+ CURL *curl;
+ CURLcode res = TEST_ERR_MAJOR_BAD;
+ struct curl_slist *list = NULL;
+ struct curl_slist *connect_to = NULL;
+
+ if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+ fprintf(stderr, "curl_global_init() failed\n");
+ return TEST_ERR_MAJOR_BAD;
+ }
+
+ curl = curl_easy_init();
+ if(!curl) {
+ fprintf(stderr, "curl_easy_init() failed\n");
+ curl_global_cleanup();
+ return TEST_ERR_MAJOR_BAD;
+ }
+
+ test_setopt(curl, CURLOPT_VERBOSE, 1L);
+ test_setopt(curl, CURLOPT_AWS_SIGV4, "xxx");
+ test_setopt(curl, CURLOPT_USERPWD, "xxx");
+ test_setopt(curl, CURLOPT_HEADER, 0L);
+ test_setopt(curl, CURLOPT_URL, URL);
+ list = curl_slist_append(list, "test2: 1234");
+ if(!list)
+ goto test_cleanup;
+ if(libtest_arg2) {
+ connect_to = curl_slist_append(connect_to, libtest_arg2);
+ }
+ test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
+ curl_slist_append(list, "Content-Type: application/json");
+ curl_slist_append(list, "test1:");
+ curl_slist_append(list, "test0");
+ curl_slist_append(list, "test_space: t\ts m\t end ");
+ curl_slist_append(list, "tesMixCase: MixCase");
+ test_setopt(curl, CURLOPT_HTTPHEADER, list);
+
+ res = curl_easy_perform(curl);
+
+test_cleanup:
+
+ curl_slist_free_all(connect_to);
+ curl_slist_free_all(list);
+ curl_easy_cleanup(curl);
+ curl_global_cleanup();
+
+ return res;
+}
diff --git a/tests/libtest/lib2301.c b/tests/libtest/lib2301.c
new file mode 100644
index 000000000..90f240e86
--- /dev/null
+++ b/tests/libtest/lib2301.c
@@ -0,0 +1,154 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#ifdef USE_WEBSOCKETS
+#if 0
+
+static int ping(CURL *curl, const char *send_payload)
+{
+ size_t sent;
+ CURLcode result =
+ curl_ws_send(curl, send_payload, strlen(send_payload), &sent, CURLWS_PING);
+ fprintf(stderr,
+ "ws: curl_ws_send returned %u, sent %u\n", (int)result, (int)sent);
+
+ return (int)result;
+}
+
+static int recv_pong(CURL *curl, const char *exected_payload)
+{
+ size_t rlen;
+ unsigned int rflags;
+ char buffer[256];
+ CURLcode result =
+ curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &rflags);
+ if(rflags & CURLWS_PONG) {
+ int same = 0;
+ fprintf(stderr, "ws: got PONG back\n");
+ if(rlen == strlen(exected_payload)) {
+ if(!memcmp(exected_payload, buffer, rlen)) {
+ fprintf(stderr, "ws: got the same payload back\n");
+ same = 1;
+ }
+ }
+ if(!same)
+ fprintf(stderr, "ws: did NOT get the same payload back\n");
+ }
+ else {
+ fprintf(stderr, "recv_pong: got %u bytes rflags %x\n", (int)rlen, rflags);
+ }
+ fprintf(stderr, "ws: curl_ws_recv returned %u, received %u\n", (int)result,
+ rlen);
+ return (int)result;
+}
+
+/* just close the connection */
+static void websocket_close(CURL *curl)
+{
+ size_t sent;
+ CURLcode result =
+ curl_ws_send(curl, "", 0, &sent, CURLWS_CLOSE);
+ fprintf(stderr,
+ "ws: curl_ws_send returned %u, sent %u\n", (int)result, (int)sent);
+}
+
+static void websocket(CURL *curl)
+{
+ int i = 0;
+ fprintf(stderr, "ws: websocket() starts\n");
+ do {
+ if(ping(curl, "foobar"))
+ return;
+ if(recv_pong(curl, "foobar"))
+ return;
+ sleep(2);
+ } while(i++ < 10);
+ websocket_close(curl);
+}
+
+#endif
+
+static size_t writecb(char *b, size_t size, size_t nitems, void *p)
+{
+ CURL *easy = p;
+ unsigned char *buffer = (unsigned char *)b;
+ size_t i;
+ size_t sent;
+ unsigned char pong[] = {
+ 0x8a, 0x0
+ };
+ size_t incoming = nitems;
+ fprintf(stderr, "Called CURLOPT_WRITEFUNCTION with %u bytes: ",
+ (int)nitems);
+ for(i = 0; i < nitems; i++)
+ fprintf(stderr, "%02x ", (unsigned char)buffer[i]);
+ fprintf(stderr, "\n");
+ (void)size;
+ if(buffer[0] == 0x89) {
+ CURLcode result;
+ fprintf(stderr, "send back a simple PONG\n");
+ result = curl_ws_send(easy, pong, 2, &sent, 0, 0);
+ if(result)
+ nitems = 0;
+ }
+ if(nitems != incoming)
+ fprintf(stderr, "returns error from callback\n");
+ return nitems;
+}
+
+int test(char *URL)
+{
+ CURL *curl;
+ CURLcode res = CURLE_OK;
+
+ global_init(CURL_GLOBAL_ALL);
+
+ curl = curl_easy_init();
+ if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, URL);
+
+ /* use the callback style */
+ curl_easy_setopt(curl, CURLOPT_USERAGENT, "webbie-sox/3");
+ curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+ curl_easy_setopt(curl, CURLOPT_WS_OPTIONS, CURLWS_RAW_MODE);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl);
+ res = curl_easy_perform(curl);
+ fprintf(stderr, "curl_easy_perform() returned %u\n", (int)res);
+#if 0
+ if(res == CURLE_OK)
+ websocket(curl);
+#endif
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ }
+ curl_global_cleanup();
+ return (int)res;
+}
+
+#else /* no websockets */
+NO_SUPPORT_BUILT_IN
+#endif
diff --git a/tests/libtest/lib2302.c b/tests/libtest/lib2302.c
new file mode 100644
index 000000000..cb4ac3531
--- /dev/null
+++ b/tests/libtest/lib2302.c
@@ -0,0 +1,157 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#ifdef USE_WEBSOCKETS
+
+#if 0
+
+static int ping(CURL *curl, const char *send_payload)
+{
+ size_t sent;
+ CURLcode result =
+ curl_ws_send(curl, send_payload, strlen(send_payload), &sent, CURLWS_PING);
+ fprintf(stderr,
+ "ws: curl_ws_send returned %u, sent %u\n", (int)result, (int)sent);
+
+ return (int)result;
+}
+
+static int recv_pong(CURL *curl, const char *exected_payload)
+{
+ size_t rlen;
+ unsigned int rflags;
+ char buffer[256];
+ CURLcode result =
+ curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &rflags);
+ if(rflags & CURLWS_PONG) {
+ int same = 0;
+ fprintf(stderr, "ws: got PONG back\n");
+ if(rlen == strlen(exected_payload)) {
+ if(!memcmp(exected_payload, buffer, rlen)) {
+ fprintf(stderr, "ws: got the same payload back\n");
+ same = 1;
+ }
+ }
+ if(!same)
+ fprintf(stderr, "ws: did NOT get the same payload back\n");
+ }
+ else {
+ fprintf(stderr, "recv_pong: got %u bytes rflags %x\n", (int)rlen, rflags);
+ }
+ fprintf(stderr, "ws: curl_ws_recv returned %u, received %u\n", (int)result,
+ rlen);
+ return (int)result;
+}
+
+/* just close the connection */
+static void websocket_close(CURL *curl)
+{
+ size_t sent;
+ CURLcode result =
+ curl_ws_send(curl, "", 0, &sent, CURLWS_CLOSE);
+ fprintf(stderr,
+ "ws: curl_ws_send returned %u, sent %u\n", (int)result, (int)sent);
+}
+
+static void websocket(CURL *curl)
+{
+ int i = 0;
+ fprintf(stderr, "ws: websocket() starts\n");
+ do {
+ if(ping(curl, "foobar"))
+ return;
+ if(recv_pong(curl, "foobar"))
+ return;
+ sleep(2);
+ } while(i++ < 10);
+ websocket_close(curl);
+}
+
+#endif
+
+static size_t writecb(char *buffer, size_t size, size_t nitems, void *p)
+{
+ CURL *easy = p;
+ size_t i;
+ size_t incoming = nitems;
+ struct curl_ws_frame *meta;
+ (void)size;
+ for(i = 0; i < nitems; i++)
+ printf("%02x ", (unsigned char)buffer[i]);
+ printf("\n");
+
+ meta = curl_ws_meta(easy);
+ if(meta)
+ printf("RECFLAGS: %x\n", meta->flags);
+ else
+ fprintf(stderr, "RECFLAGS: NULL\n");
+
+ /* this assumes we get a simple TEXT frame first */
+ {
+ CURLcode result = CURLE_OK;
+ fprintf(stderr, "send back a TEXT\n");
+ (void)easy;
+ /*result = curl_ws_send(easy, pong, 2, &sent, 0);*/
+ if(result)
+ nitems = 0;
+ }
+ if(nitems != incoming)
+ fprintf(stderr, "returns error from callback\n");
+ return nitems;
+}
+
+int test(char *URL)
+{
+ CURL *curl;
+ CURLcode res = CURLE_OK;
+
+ global_init(CURL_GLOBAL_ALL);
+
+ curl = curl_easy_init();
+ if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, URL);
+
+ /* use the callback style */
+ curl_easy_setopt(curl, CURLOPT_USERAGENT, "webbie-sox/3");
+ curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl);
+ res = curl_easy_perform(curl);
+ fprintf(stderr, "curl_easy_perform() returned %u\n", (int)res);
+#if 0
+ if(res == CURLE_OK)
+ websocket(curl);
+#endif
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ }
+ curl_global_cleanup();
+ return (int)res;
+}
+
+#else
+NO_SUPPORT_BUILT_IN
+#endif
diff --git a/tests/libtest/lib3010.c b/tests/libtest/lib3010.c
index 199d53ca9..aa5ef2a25 100644
--- a/tests/libtest/lib3010.c
+++ b/tests/libtest/lib3010.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Nicolas Sterchele, <nicolas@sterchelen.net>
+ * Copyright (C) 2020 - 2022, Nicolas Sterchele, <nicolas@sterchelen.net>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib3025.c b/tests/libtest/lib3025.c
index cbae39ec3..0e1b3df60 100644
--- a/tests/libtest/lib3025.c
+++ b/tests/libtest/lib3025.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib3026.c b/tests/libtest/lib3026.c
new file mode 100644
index 000000000..8ad7e9490
--- /dev/null
+++ b/tests/libtest/lib3026.c
@@ -0,0 +1,179 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+
+#define NUM_THREADS 100
+
+#ifdef WIN32
+#ifdef _WIN32_WCE
+static DWORD WINAPI run_thread(LPVOID ptr)
+#else
+#include <process.h>
+static unsigned int WINAPI run_thread(void *ptr)
+#endif
+{
+ CURLcode *result = ptr;
+
+ *result = curl_global_init(CURL_GLOBAL_ALL);
+ if(*result == CURLE_OK)
+ curl_global_cleanup();
+
+ return 0;
+}
+
+int test(char *URL)
+{
+#ifdef _WIN32_WCE
+ typedef HANDLE curl_win_thread_handle_t;
+#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+ typedef unsigned long curl_win_thread_handle_t;
+#else
+ typedef uintptr_t curl_win_thread_handle_t;
+#endif
+ CURLcode results[NUM_THREADS];
+ curl_win_thread_handle_t ths[NUM_THREADS];
+ unsigned tid_count = NUM_THREADS, i;
+ int test_failure = 0;
+ curl_version_info_data *ver;
+ (void) URL;
+
+ ver = curl_version_info(CURLVERSION_NOW);
+ if((ver->features & CURL_VERSION_THREADSAFE) == 0) {
+ fprintf(stderr, "%s:%d On Windows but the "
+ "CURL_VERSION_THREADSAFE feature flag is not set\n",
+ __FILE__, __LINE__);
+ return -1;
+ }
+
+ for(i = 0; i < tid_count; i++) {
+ curl_win_thread_handle_t th;
+ results[i] = CURL_LAST; /* initialize with invalid value */
+#ifdef _WIN32_WCE
+ th = CreateThread(NULL, 0, run_thread, &results[i], 0, NULL);
+#else
+ th = _beginthreadex(NULL, 0, run_thread, &results[i], 0, NULL);
+#endif
+ if(!th) {
+ fprintf(stderr, "%s:%d Couldn't create thread, errno %d\n",
+ __FILE__, __LINE__, GetLastError());
+ tid_count = i;
+ test_failure = -1;
+ goto cleanup;
+ }
+ ths[i] = th;
+ }
+
+cleanup:
+ for(i = 0; i < tid_count; i++) {
+ WaitForSingleObject((HANDLE)ths[i], INFINITE);
+ CloseHandle((HANDLE)ths[i]);
+ if(results[i] != CURLE_OK) {
+ fprintf(stderr, "%s:%d thread[%u]: curl_global_init() failed,"
+ "with code %d (%s)\n", __FILE__, __LINE__,
+ i, (int) results[i], curl_easy_strerror(results[i]));
+ test_failure = -1;
+ }
+ }
+
+ return test_failure;
+}
+
+#elif defined(HAVE_PTHREAD_H)
+#include <pthread.h>
+#include <unistd.h>
+
+static void *run_thread(void *ptr)
+{
+ CURLcode *result = ptr;
+
+ *result = curl_global_init(CURL_GLOBAL_ALL);
+ if(*result == CURLE_OK)
+ curl_global_cleanup();
+
+ return NULL;
+}
+
+int test(char *URL)
+{
+ CURLcode results[NUM_THREADS];
+ pthread_t tids[NUM_THREADS];
+ unsigned tid_count = NUM_THREADS, i;
+ int test_failure = 0;
+ curl_version_info_data *ver;
+ (void) URL;
+
+ ver = curl_version_info(CURLVERSION_NOW);
+ if((ver->features & CURL_VERSION_THREADSAFE) == 0) {
+ fprintf(stderr, "%s:%d Have pthread but the "
+ "CURL_VERSION_THREADSAFE feature flag is not set\n",
+ __FILE__, __LINE__);
+ return -1;
+ }
+
+ for(i = 0; i < tid_count; i++) {
+ int res;
+ results[i] = CURL_LAST; /* initialize with invalid value */
+ res = pthread_create(&tids[i], NULL, run_thread, &results[i]);
+ if(res) {
+ fprintf(stderr, "%s:%d Couldn't create thread, errno %d\n",
+ __FILE__, __LINE__, res);
+ tid_count = i;
+ test_failure = -1;
+ goto cleanup;
+ }
+ }
+
+cleanup:
+ for(i = 0; i < tid_count; i++) {
+ pthread_join(tids[i], NULL);
+ if(results[i] != CURLE_OK) {
+ fprintf(stderr, "%s:%d thread[%u]: curl_global_init() failed,"
+ "with code %d (%s)\n", __FILE__, __LINE__,
+ i, (int) results[i], curl_easy_strerror(results[i]));
+ test_failure = -1;
+ }
+ }
+
+ return test_failure;
+}
+
+#else /* without pthread or Windows, this test doesn't work */
+int test(char *URL)
+{
+ curl_version_info_data *ver;
+ (void)URL;
+
+ ver = curl_version_info(CURLVERSION_NOW);
+ if((ver->features & CURL_VERSION_THREADSAFE) != 0) {
+ fprintf(stderr, "%s:%d No pthread but the "
+ "CURL_VERSION_THREADSAFE feature flag is set\n",
+ __FILE__, __LINE__);
+ return -1;
+ }
+ return 0;
+}
+#endif
diff --git a/tests/libtest/lib3027.c b/tests/libtest/lib3027.c
new file mode 100644
index 000000000..2b1d8dc44
--- /dev/null
+++ b/tests/libtest/lib3027.c
@@ -0,0 +1,56 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+int test(char *URL)
+{
+ CURLcode ret = CURLE_OK;
+ CURL *hnd;
+ start_test_timing();
+
+ curl_global_init(CURL_GLOBAL_ALL);
+
+ hnd = curl_easy_init();
+ if(hnd) {
+ curl_easy_setopt(hnd, CURLOPT_URL, URL);
+ curl_easy_setopt(hnd, CURLOPT_FILETIME, 1L);
+ ret = curl_easy_perform(hnd);
+ if(CURLE_OK == ret) {
+ long filetime;
+ ret = curl_easy_getinfo(hnd, CURLINFO_FILETIME, &filetime);
+ /* MTDM fails with 550, so filetime should be -1 */
+ if((CURLE_OK == ret) && (filetime != -1)) {
+ /* we just need to return something which is not CURLE_OK */
+ ret = CURLE_UNSUPPORTED_PROTOCOL;
+ }
+ }
+ curl_easy_cleanup(hnd);
+ }
+ curl_global_cleanup();
+ return (int)ret;
+}
diff --git a/tests/libtest/lib500.c b/tests/libtest/lib500.c
index 5bb0cff44..37cd4b24a 100644
--- a/tests/libtest/lib500.c
+++ b/tests/libtest/lib500.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib501.c b/tests/libtest/lib501.c
index 798ff61a2..544be2b81 100644
--- a/tests/libtest/lib501.c
+++ b/tests/libtest/lib501.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib502.c b/tests/libtest/lib502.c
index e62b260b0..4509d1a01 100644
--- a/tests/libtest/lib502.c
+++ b/tests/libtest/lib502.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib503.c b/tests/libtest/lib503.c
index 4cb930cf8..86dce97cc 100644
--- a/tests/libtest/lib503.c
+++ b/tests/libtest/lib503.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib504.c b/tests/libtest/lib504.c
index efac42cec..a4bfe3589 100644
--- a/tests/libtest/lib504.c
+++ b/tests/libtest/lib504.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib505.c b/tests/libtest/lib505.c
index b22027a77..afa8950ed 100644
--- a/tests/libtest/lib505.c
+++ b/tests/libtest/lib505.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib506.c b/tests/libtest/lib506.c
index 559e7315d..b44a275b9 100644
--- a/tests/libtest/lib506.c
+++ b/tests/libtest/lib506.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
diff --git a/tests/libtest/lib507.c b/tests/libtest/lib507.c
index 25b4e6e17..c57a612b0 100644
--- a/tests/libtest/lib507.c
+++ b/tests/libtest/lib507.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib508.c b/tests/libtest/lib508.c
index b5391fb8e..f16e2d7a4 100644
--- a/tests/libtest/lib508.c
+++ b/tests/libtest/lib508.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -75,11 +77,6 @@ int test(char *URL)
/* Now specify we want to POST data */
test_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
- /* Convert the POST data to ASCII */
- test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
/* Set the expected POST size */
test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)pooh.sizeleft);
diff --git a/tests/libtest/lib509.c b/tests/libtest/lib509.c
index 20cadda77..63fb12fbc 100644
--- a/tests/libtest/lib509.c
+++ b/tests/libtest/lib509.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib510.c b/tests/libtest/lib510.c
index b3dd0ab84..068cdd7a8 100644
--- a/tests/libtest/lib510.c
+++ b/tests/libtest/lib510.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -93,11 +95,6 @@ int test(char *URL)
/* Now specify we want to POST data */
test_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
- /* Convert the POST data to ASCII */
- test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
/* we want to use our own read function */
test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
diff --git a/tests/libtest/lib511.c b/tests/libtest/lib511.c
index 55d8fd254..1262a6b2e 100644
--- a/tests/libtest/lib511.c
+++ b/tests/libtest/lib511.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib512.c b/tests/libtest/lib512.c
index 7b2af615a..309d0ac59 100644
--- a/tests/libtest/lib512.c
+++ b/tests/libtest/lib512.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib513.c b/tests/libtest/lib513.c
index 80fc57b9b..f757bac6d 100644
--- a/tests/libtest/lib513.c
+++ b/tests/libtest/lib513.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib514.c b/tests/libtest/lib514.c
index a1c58f77b..138bd69df 100644
--- a/tests/libtest/lib514.c
+++ b/tests/libtest/lib514.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib515.c b/tests/libtest/lib515.c
index ae30d5ecb..661bf6f0f 100644
--- a/tests/libtest/lib515.c
+++ b/tests/libtest/lib515.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib516.c b/tests/libtest/lib516.c
index e54c54166..b7c9349d0 100644
--- a/tests/libtest/lib516.c
+++ b/tests/libtest/lib516.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib517.c b/tests/libtest/lib517.c
index f0a3c8399..3726efdfd 100644
--- a/tests/libtest/lib517.c
+++ b/tests/libtest/lib517.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -124,7 +126,7 @@ static const struct dcheck dates[] = {
{"Thu, 31-Dec-1969 23:59:58 GMT", -2 },
{"Thu, 31-Dec-1969 23:59:59 GMT", 0 }, /* avoids -1 ! */
#if SIZEOF_TIME_T > 4
- {"Sun, 06 Nov 2044 08:49:37 GMT", 2362034977 },
+ {"Sun, 06 Nov 2044 08:49:37 GMT", (time_t) CURL_OFF_TU_C(2362034977) },
{"Sun, 06 Nov 3144 08:49:37 GMT", 37074617377 },
#ifndef HAVE_TIME_T_UNSIGNED
#if 0
diff --git a/tests/libtest/lib518.c b/tests/libtest/lib518.c
index bf7fe8ebf..22f727a5a 100644
--- a/tests/libtest/lib518.c
+++ b/tests/libtest/lib518.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -378,9 +380,7 @@ static int rlimit(int keep_open)
msnprintf(strbuff, sizeof(strbuff), fmt, num_open.rlim_max);
fprintf(stderr, "%s file descriptors open\n", strbuff);
-#if !defined(HAVE_POLL_FINE) && \
- !defined(USE_WINSOCK) && \
- !defined(TPF)
+#if !defined(HAVE_POLL_FINE) && !defined(USE_WINSOCK)
/*
* when using select() instead of poll() we cannot test
diff --git a/tests/libtest/lib519.c b/tests/libtest/lib519.c
index 8ed8d5c93..fecaa9844 100644
--- a/tests/libtest/lib519.c
+++ b/tests/libtest/lib519.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib520.c b/tests/libtest/lib520.c
index bf26ec5b7..ef7c59442 100644
--- a/tests/libtest/lib520.c
+++ b/tests/libtest/lib520.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib521.c b/tests/libtest/lib521.c
index 43156b2d4..8385da6d8 100644
--- a/tests/libtest/lib521.c
+++ b/tests/libtest/lib521.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib523.c b/tests/libtest/lib523.c
index 441fcec15..04285bbee 100644
--- a/tests/libtest/lib523.c
+++ b/tests/libtest/lib523.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib524.c b/tests/libtest/lib524.c
index bb7440210..af1d5cc70 100644
--- a/tests/libtest/lib524.c
+++ b/tests/libtest/lib524.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib525.c b/tests/libtest/lib525.c
index 1400b9248..51ed6581c 100644
--- a/tests/libtest/lib525.c
+++ b/tests/libtest/lib525.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib526.c b/tests/libtest/lib526.c
index a015699c5..0153d984f 100644
--- a/tests/libtest/lib526.c
+++ b/tests/libtest/lib526.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* This code sets up multiple easy handles that transfer a single file from
diff --git a/tests/libtest/lib530.c b/tests/libtest/lib530.c
index d9d10de77..22577275c 100644
--- a/tests/libtest/lib530.c
+++ b/tests/libtest/lib530.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -90,14 +92,12 @@ static int addFd(struct Sockets *sockets, curl_socket_t fd, const char *what)
sockets->max_count = 20;
}
else if(sockets->count + 1 > sockets->max_count) {
- curl_socket_t *oldptr = sockets->sockets;
- sockets->sockets = realloc(oldptr, sizeof(curl_socket_t) *
- (sockets->max_count + 20));
- if(!sockets->sockets) {
+ curl_socket_t *ptr = realloc(sockets->sockets, sizeof(curl_socket_t) *
+ (sockets->max_count + 20));
+ if(!ptr)
/* cleanup in test_cleanup */
- sockets->sockets = oldptr;
return 1;
- }
+ sockets->sockets = ptr;
sockets->max_count += 20;
}
/*
@@ -247,7 +247,7 @@ static int checkFdSet(CURLM *curl,
int evBitmask, const char *name)
{
int i;
- CURLMcode result = CURLM_OK;
+ int result = 0;
for(i = 0; i < sockets->count; ++i) {
if(FD_ISSET(sockets->sockets[i], fdset)) {
result = socket_action(curl, sockets->sockets[i], evBitmask, name);
@@ -255,7 +255,7 @@ static int checkFdSet(CURLM *curl,
break;
}
}
- return (int)result;
+ return result;
}
static int testone(char *URL, int timercb, int socketcb)
@@ -359,7 +359,6 @@ test_cleanup:
/* free local memory */
free(sockets.read.sockets);
free(sockets.write.sockets);
-
return res;
}
diff --git a/tests/libtest/lib533.c b/tests/libtest/lib533.c
index c6c014a95..ddc96f762 100644
--- a/tests/libtest/lib533.c
+++ b/tests/libtest/lib533.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* used for test case 533, 534 and 535 */
diff --git a/tests/libtest/lib537.c b/tests/libtest/lib537.c
index fd852b6b9..dbced98dc 100644
--- a/tests/libtest/lib537.c
+++ b/tests/libtest/lib537.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -34,7 +36,6 @@
#if !defined(HAVE_POLL_FINE) && \
!defined(USE_WINSOCK) && \
- !defined(TPF) && \
!defined(FD_SETSIZE)
#error "this test requires FD_SETSIZE"
#endif
@@ -382,9 +383,7 @@ static int rlimit(int keep_open)
msnprintf(strbuff, sizeof(strbuff), fmt, num_open.rlim_max);
fprintf(stderr, "%s file descriptors open\n", strbuff);
-#if !defined(HAVE_POLL_FINE) && \
- !defined(USE_WINSOCK) && \
- !defined(TPF)
+#if !defined(HAVE_POLL_FINE) && !defined(USE_WINSOCK)
/*
* when using select() instead of poll() we cannot test
diff --git a/tests/libtest/lib539.c b/tests/libtest/lib539.c
index 0b2e97f4e..9450963dc 100644
--- a/tests/libtest/lib539.c
+++ b/tests/libtest/lib539.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib540.c b/tests/libtest/lib540.c
index d34029d84..d8b7a0d84 100644
--- a/tests/libtest/lib540.c
+++ b/tests/libtest/lib540.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* This is the 'proxyauth.c' test app posted by Shmulik Regev on the libcurl
* mailing list on 10 Jul 2007, converted to a test case.
diff --git a/tests/libtest/lib541.c b/tests/libtest/lib541.c
index 9a8d19938..20d11e2dd 100644
--- a/tests/libtest/lib541.c
+++ b/tests/libtest/lib541.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib542.c b/tests/libtest/lib542.c
index 9b54bcfbe..d762b13c2 100644
--- a/tests/libtest/lib542.c
+++ b/tests/libtest/lib542.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib543.c b/tests/libtest/lib543.c
index c79295d2c..cea6dc9a5 100644
--- a/tests/libtest/lib543.c
+++ b/tests/libtest/lib543.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Based on Alex Fishman's bug report on September 30, 2007 */
diff --git a/tests/libtest/lib544.c b/tests/libtest/lib544.c
index 5b5711223..42710e1b9 100644
--- a/tests/libtest/lib544.c
+++ b/tests/libtest/lib544.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,27 +18,18 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
static char teststring[] =
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
-{ '\x54', '\x68', '\x69', '\x73', '\x00', '\x20', '\x69', '\x73', '\x20',
- '\x74', '\x65', '\x73', '\x74', '\x20', '\x62', '\x69', '\x6e', '\x61',
- '\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'};
-#else
{ '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
-
int test(char *URL)
{
diff --git a/tests/libtest/lib547.c b/tests/libtest/lib547.c
index 57a9d84dc..647afc63d 100644
--- a/tests/libtest/lib547.c
+++ b/tests/libtest/lib547.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* argv1 = URL
* argv2 = proxy
@@ -28,14 +30,7 @@
#include "memdebug.h"
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
-# define UPLOADTHIS "\x74\x68\x69\x73\x20\x69\x73\x20\x74\x68\x65\x20\x62" \
- "\x6c\x75\x72\x62\x20\x77\x65\x20\x77\x61\x6e\x74\x20" \
- "\x74\x6f\x20\x75\x70\x6c\x6f\x61\x64\x0a"
-#else
-# define UPLOADTHIS "this is the blurb we want to upload\n"
-#endif
+#define UPLOADTHIS "this is the blurb we want to upload\n"
#ifndef LIB548
static size_t readcallback(char *ptr,
diff --git a/tests/libtest/lib549.c b/tests/libtest/lib549.c
index f593f2def..d4861d885 100644
--- a/tests/libtest/lib549.c
+++ b/tests/libtest/lib549.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* argv1 = URL
* argv2 = proxy
diff --git a/tests/libtest/lib552.c b/tests/libtest/lib552.c
index 7e56ae7eb..764e861fb 100644
--- a/tests/libtest/lib552.c
+++ b/tests/libtest/lib552.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* argv1 = URL
* argv2 = proxy with embedded user+password
@@ -190,11 +192,6 @@ int test(char *URL)
/* Post */
test_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
- /* Convert the POST data to ASCII */
- test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
/* Setup read callback */
test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) sizeof(databuf));
test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
diff --git a/tests/libtest/lib553.c b/tests/libtest/lib553.c
index 31b2bdba6..0ab0e3e50 100644
--- a/tests/libtest/lib553.c
+++ b/tests/libtest/lib553.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* This test case and code is based on the bug recipe Joe Malicki provided for
@@ -92,10 +94,6 @@ int test(char *URL)
test_setopt(curl, CURLOPT_URL, URL);
test_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
test_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
- /* Convert the POST data to ASCII */
- test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)POSTLEN);
test_setopt(curl, CURLOPT_VERBOSE, 1L);
test_setopt(curl, CURLOPT_HEADER, 1L);
diff --git a/tests/libtest/lib554.c b/tests/libtest/lib554.c
index aebbb1b55..3e6f511a2 100644
--- a/tests/libtest/lib554.c
+++ b/tests/libtest/lib554.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,20 +18,15 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
- "\x74\x68\x69\x73\x20\x69\x73\x20\x77\x68\x61\x74\x20\x77\x65\x20\x70"
- "\x6f\x73\x74\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x69\x6c\x6c\x79\x20"
- "\x77\x65\x62\x20\x73\x65\x72\x76\x65\x72\x0a";
-#else
"this is what we post to the silly web server\n";
-#endif
struct WriteThis {
char *readptr;
@@ -123,14 +118,7 @@ static int once(char *URL, bool oldstyle)
formrc = curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "filename",
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape
- sequences for non-ASCII platforms */
- CURLFORM_COPYCONTENTS,
- "\x70\x6f\x73\x74\x69\x74\x32\x2e\x63",
-#else
CURLFORM_COPYCONTENTS, "postit2.c",
-#endif
CURLFORM_END);
if(formrc)
@@ -140,13 +128,7 @@ static int once(char *URL, bool oldstyle)
formrc = curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "submit",
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape
- sequences for non-ASCII platforms */
- CURLFORM_COPYCONTENTS, "\x73\x65\x6e\x64",
-#else
CURLFORM_COPYCONTENTS, "send",
-#endif
CURLFORM_CONTENTTYPE, "text/plain",
CURLFORM_END);
diff --git a/tests/libtest/lib555.c b/tests/libtest/lib555.c
index 5b38530d1..29e43f8f0 100644
--- a/tests/libtest/lib555.c
+++ b/tests/libtest/lib555.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* This test case is supposed to be identical to 547 except that this uses the
@@ -36,14 +38,7 @@
#define TEST_HANG_TIMEOUT 60 * 1000
static const char uploadthis[] =
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
- "\x74\x68\x69\x73\x20\x69\x73\x20\x74\x68\x65\x20\x62\x6c\x75\x72"
- "\x62\x20\x77\x65\x20\x77\x61\x6e\x74\x20\x74\x6f\x20\x75\x70\x6c"
- "\x6f\x61\x64\x0a";
-#else
"this is the blurb we want to upload\n";
-#endif
static size_t readcallback(char *ptr,
size_t size,
@@ -130,10 +125,6 @@ int test(char *URL)
abort_on_test_timeout();
-#ifdef TPF
- sleep(1); /* avoid ctl-10 dump */
-#endif
-
if(!running)
break; /* done */
diff --git a/tests/libtest/lib556.c b/tests/libtest/lib556.c
index 3a9a7955c..a391d5a00 100644
--- a/tests/libtest/lib556.c
+++ b/tests/libtest/lib556.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -61,15 +63,8 @@ int test(char *URL)
if(!res) {
/* we are connected, now get a HTTP document the raw way */
const char *request =
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
- "\x47\x45\x54\x20\x2f\x35\x35\x36\x20\x48\x54\x54\x50\x2f\x31\x2e"
- "\x31\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x6e\x69\x6e\x6a\x61\x0d\x0a"
- "\x0d\x0a";
-#else
"GET /556 HTTP/1.1\r\n"
"Host: ninja\r\n\r\n";
-#endif
size_t iolen = 0;
res = curl_easy_send(curl, request, strlen(request), &iolen);
@@ -82,10 +77,6 @@ int test(char *URL)
/* busy-read like crazy */
res = curl_easy_recv(curl, buf, sizeof(buf), &iolen);
-#ifdef TPF
- sleep(1); /* avoid ctl-10 dump */
-#endif
-
if(iolen) {
/* send received stuff to stdout */
if(!write(STDOUT_FILENO, buf, iolen))
diff --git a/tests/libtest/lib557.c b/tests/libtest/lib557.c
index c17fab276..578ab713b 100644
--- a/tests/libtest/lib557.c
+++ b/tests/libtest/lib557.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -125,25 +127,6 @@ static int test_unsigned_short_formatting(void)
int num_ushort_tests = 0;
int failed = 0;
-#if (SIZEOF_SHORT == 1)
-
- i = 1; us_test[i].num = 0xFFU; us_test[i].expected = "256";
- i++; us_test[i].num = 0xF0U; us_test[i].expected = "240";
- i++; us_test[i].num = 0x0FU; us_test[i].expected = "15";
-
- i++; us_test[i].num = 0xE0U; us_test[i].expected = "224";
- i++; us_test[i].num = 0x0EU; us_test[i].expected = "14";
-
- i++; us_test[i].num = 0xC0U; us_test[i].expected = "192";
- i++; us_test[i].num = 0x0CU; us_test[i].expected = "12";
-
- i++; us_test[i].num = 0x01U; us_test[i].expected = "1";
- i++; us_test[i].num = 0x00U; us_test[i].expected = "0";
-
- num_ushort_tests = i;
-
-#elif (SIZEOF_SHORT == 2)
-
i = 1; us_test[i].num = 0xFFFFU; us_test[i].expected = "65535";
i++; us_test[i].num = 0xFF00U; us_test[i].expected = "65280";
i++; us_test[i].num = 0x00FFU; us_test[i].expected = "255";
@@ -163,42 +146,6 @@ static int test_unsigned_short_formatting(void)
num_ushort_tests = i;
-#elif (SIZEOF_SHORT == 4)
-
- i = 1; us_test[i].num = 0xFFFFFFFFU; us_test[i].expected = "4294967295";
- i++; us_test[i].num = 0xFFFF0000U; us_test[i].expected = "4294901760";
- i++; us_test[i].num = 0x0000FFFFU; us_test[i].expected = "65535";
-
- i++; us_test[i].num = 0xFF000000U; us_test[i].expected = "4278190080";
- i++; us_test[i].num = 0x00FF0000U; us_test[i].expected = "16711680";
- i++; us_test[i].num = 0x0000FF00U; us_test[i].expected = "65280";
- i++; us_test[i].num = 0x000000FFU; us_test[i].expected = "255";
-
- i++; us_test[i].num = 0xF0000000U; us_test[i].expected = "4026531840";
- i++; us_test[i].num = 0x0F000000U; us_test[i].expected = "251658240";
- i++; us_test[i].num = 0x00F00000U; us_test[i].expected = "15728640";
- i++; us_test[i].num = 0x000F0000U; us_test[i].expected = "983040";
- i++; us_test[i].num = 0x0000F000U; us_test[i].expected = "61440";
- i++; us_test[i].num = 0x00000F00U; us_test[i].expected = "3840";
- i++; us_test[i].num = 0x000000F0U; us_test[i].expected = "240";
- i++; us_test[i].num = 0x0000000FU; us_test[i].expected = "15";
-
- i++; us_test[i].num = 0xC0000000U; us_test[i].expected = "3221225472";
- i++; us_test[i].num = 0x0C000000U; us_test[i].expected = "201326592";
- i++; us_test[i].num = 0x00C00000U; us_test[i].expected = "12582912";
- i++; us_test[i].num = 0x000C0000U; us_test[i].expected = "786432";
- i++; us_test[i].num = 0x0000C000U; us_test[i].expected = "49152";
- i++; us_test[i].num = 0x00000C00U; us_test[i].expected = "3072";
- i++; us_test[i].num = 0x000000C0U; us_test[i].expected = "192";
- i++; us_test[i].num = 0x0000000CU; us_test[i].expected = "12";
-
- i++; us_test[i].num = 0x00000001U; us_test[i].expected = "1";
- i++; us_test[i].num = 0x00000000U; us_test[i].expected = "0";
-
- num_ushort_tests = i;
-
-#endif
-
for(i = 1; i <= num_ushort_tests; i++) {
for(j = 0; j<BUFSZ; j++)
@@ -232,33 +179,6 @@ static int test_signed_short_formatting(void)
int num_sshort_tests = 0;
int failed = 0;
-#if (SIZEOF_SHORT == 1)
-
- i = 1; ss_test[i].num = 0x7F; ss_test[i].expected = "127";
-
- i++; ss_test[i].num = 0x70; ss_test[i].expected = "112";
- i++; ss_test[i].num = 0x07; ss_test[i].expected = "7";
-
- i++; ss_test[i].num = 0x50; ss_test[i].expected = "80";
- i++; ss_test[i].num = 0x05; ss_test[i].expected = "5";
-
- i++; ss_test[i].num = 0x01; ss_test[i].expected = "1";
- i++; ss_test[i].num = 0x00; ss_test[i].expected = "0";
-
- i++; ss_test[i].num = -0x7F -1; ss_test[i].expected = "-128";
-
- i++; ss_test[i].num = -0x70 -1; ss_test[i].expected = "-113";
- i++; ss_test[i].num = -0x07 -1; ss_test[i].expected = "-8";
-
- i++; ss_test[i].num = -0x50 -1; ss_test[i].expected = "-81";
- i++; ss_test[i].num = -0x05 -1; ss_test[i].expected = "-6";
-
- i++; ss_test[i].num = 0x00 -1; ss_test[i].expected = "-1";
-
- num_sshort_tests = i;
-
-#elif (SIZEOF_SHORT == 2)
-
i = 1; ss_test[i].num = 0x7FFF; ss_test[i].expected = "32767";
i++; ss_test[i].num = 0x7FFE; ss_test[i].expected = "32766";
i++; ss_test[i].num = 0x7FFD; ss_test[i].expected = "32765";
@@ -300,75 +220,6 @@ static int test_signed_short_formatting(void)
num_sshort_tests = i;
-#elif (SIZEOF_SHORT == 4)
-
- i = 1; ss_test[i].num = 0x7FFFFFFF; ss_test[i].expected = "2147483647";
- i++; ss_test[i].num = 0x7FFFFFFE; ss_test[i].expected = "2147483646";
- i++; ss_test[i].num = 0x7FFFFFFD; ss_test[i].expected = "2147483645";
- i++; ss_test[i].num = 0x7FFF0000; ss_test[i].expected = "2147418112";
- i++; ss_test[i].num = 0x00007FFF; ss_test[i].expected = "32767";
-
- i++; ss_test[i].num = 0x7F000000; ss_test[i].expected = "2130706432";
- i++; ss_test[i].num = 0x007F0000; ss_test[i].expected = "8323072";
- i++; ss_test[i].num = 0x00007F00; ss_test[i].expected = "32512";
- i++; ss_test[i].num = 0x0000007F; ss_test[i].expected = "127";
-
- i++; ss_test[i].num = 0x70000000; ss_test[i].expected = "1879048192";
- i++; ss_test[i].num = 0x07000000; ss_test[i].expected = "117440512";
- i++; ss_test[i].num = 0x00700000; ss_test[i].expected = "7340032";
- i++; ss_test[i].num = 0x00070000; ss_test[i].expected = "458752";
- i++; ss_test[i].num = 0x00007000; ss_test[i].expected = "28672";
- i++; ss_test[i].num = 0x00000700; ss_test[i].expected = "1792";
- i++; ss_test[i].num = 0x00000070; ss_test[i].expected = "112";
- i++; ss_test[i].num = 0x00000007; ss_test[i].expected = "7";
-
- i++; ss_test[i].num = 0x50000000; ss_test[i].expected = "1342177280";
- i++; ss_test[i].num = 0x05000000; ss_test[i].expected = "83886080";
- i++; ss_test[i].num = 0x00500000; ss_test[i].expected = "5242880";
- i++; ss_test[i].num = 0x00050000; ss_test[i].expected = "327680";
- i++; ss_test[i].num = 0x00005000; ss_test[i].expected = "20480";
- i++; ss_test[i].num = 0x00000500; ss_test[i].expected = "1280";
- i++; ss_test[i].num = 0x00000050; ss_test[i].expected = "80";
- i++; ss_test[i].num = 0x00000005; ss_test[i].expected = "5";
-
- i++; ss_test[i].num = 0x00000001; ss_test[i].expected = "1";
- i++; ss_test[i].num = 0x00000000; ss_test[i].expected = "0";
-
- i++; ss_test[i].num = -0x7FFFFFFF -1; ss_test[i].expected = "-2147483648";
- i++; ss_test[i].num = -0x7FFFFFFE -1; ss_test[i].expected = "-2147483647";
- i++; ss_test[i].num = -0x7FFFFFFD -1; ss_test[i].expected = "-2147483646";
- i++; ss_test[i].num = -0x7FFF0000 -1; ss_test[i].expected = "-2147418113";
- i++; ss_test[i].num = -0x00007FFF -1; ss_test[i].expected = "-32768";
-
- i++; ss_test[i].num = -0x7F000000 -1; ss_test[i].expected = "-2130706433";
- i++; ss_test[i].num = -0x007F0000 -1; ss_test[i].expected = "-8323073";
- i++; ss_test[i].num = -0x00007F00 -1; ss_test[i].expected = "-32513";
- i++; ss_test[i].num = -0x0000007F -1; ss_test[i].expected = "-128";
-
- i++; ss_test[i].num = -0x70000000 -1; ss_test[i].expected = "-1879048193";
- i++; ss_test[i].num = -0x07000000 -1; ss_test[i].expected = "-117440513";
- i++; ss_test[i].num = -0x00700000 -1; ss_test[i].expected = "-7340033";
- i++; ss_test[i].num = -0x00070000 -1; ss_test[i].expected = "-458753";
- i++; ss_test[i].num = -0x00007000 -1; ss_test[i].expected = "-28673";
- i++; ss_test[i].num = -0x00000700 -1; ss_test[i].expected = "-1793";
- i++; ss_test[i].num = -0x00000070 -1; ss_test[i].expected = "-113";
- i++; ss_test[i].num = -0x00000007 -1; ss_test[i].expected = "-8";
-
- i++; ss_test[i].num = -0x50000000 -1; ss_test[i].expected = "-1342177281";
- i++; ss_test[i].num = -0x05000000 -1; ss_test[i].expected = "-83886081";
- i++; ss_test[i].num = -0x00500000 -1; ss_test[i].expected = "-5242881";
- i++; ss_test[i].num = -0x00050000 -1; ss_test[i].expected = "-327681";
- i++; ss_test[i].num = -0x00005000 -1; ss_test[i].expected = "-20481";
- i++; ss_test[i].num = -0x00000500 -1; ss_test[i].expected = "-1281";
- i++; ss_test[i].num = -0x00000050 -1; ss_test[i].expected = "-81";
- i++; ss_test[i].num = -0x00000005 -1; ss_test[i].expected = "-6";
-
- i++; ss_test[i].num = 0x00000000 -1; ss_test[i].expected = "-1";
-
- num_sshort_tests = i;
-
-#endif
-
for(i = 1; i <= num_sshort_tests; i++) {
for(j = 0; j<BUFSZ; j++)
@@ -1530,8 +1381,8 @@ static int test_weird_arguments(void)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 11 */
0, 1, 2, 3, 4, 5, 6, 7, 8); /* 9 */
- if(rc != -1) {
- printf("curl_mprintf() returned %d and not -1!\n", rc);
+ if(rc) {
+ printf("curl_mprintf() returned %d and not 0\n", rc);
errors++;
}
diff --git a/tests/libtest/lib558.c b/tests/libtest/lib558.c
index 1134a4d72..30792c99d 100644
--- a/tests/libtest/lib558.c
+++ b/tests/libtest/lib558.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib559.c b/tests/libtest/lib559.c
index bcc9a8fae..89dbc2d26 100644
--- a/tests/libtest/lib559.c
+++ b/tests/libtest/lib559.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib560.c b/tests/libtest/lib560.c
index 74a25cd5f..7dd48e4b5 100644
--- a/tests/libtest/lib560.c
+++ b/tests/libtest/lib560.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib562.c b/tests/libtest/lib562.c
index 000fa302c..d99010820 100644
--- a/tests/libtest/lib562.c
+++ b/tests/libtest/lib562.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib564.c b/tests/libtest/lib564.c
index 9c2b27144..9516a2575 100644
--- a/tests/libtest/lib564.c
+++ b/tests/libtest/lib564.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib566.c b/tests/libtest/lib566.c
index a619be7f1..ea3ec42ae 100644
--- a/tests/libtest/lib566.c
+++ b/tests/libtest/lib566.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib567.c b/tests/libtest/lib567.c
index a0ebead87..de03f5ef2 100644
--- a/tests/libtest/lib567.c
+++ b/tests/libtest/lib567.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib568.c b/tests/libtest/lib568.c
index 59e9dec24..271738b0c 100644
--- a/tests/libtest/lib568.c
+++ b/tests/libtest/lib568.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib569.c b/tests/libtest/lib569.c
index e5605d3eb..7daea8470 100644
--- a/tests/libtest/lib569.c
+++ b/tests/libtest/lib569.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
diff --git a/tests/libtest/lib570.c b/tests/libtest/lib570.c
index 5d2f5b5b5..ccd152b8d 100644
--- a/tests/libtest/lib570.c
+++ b/tests/libtest/lib570.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
diff --git a/tests/libtest/lib571.c b/tests/libtest/lib571.c
index ec9dce9fa..8027c90d5 100644
--- a/tests/libtest/lib571.c
+++ b/tests/libtest/lib571.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib572.c b/tests/libtest/lib572.c
index a9cf34133..0cc56eed4 100644
--- a/tests/libtest/lib572.c
+++ b/tests/libtest/lib572.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib573.c b/tests/libtest/lib573.c
index 7126dfa73..02b0aa74c 100644
--- a/tests/libtest/lib573.c
+++ b/tests/libtest/lib573.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib574.c b/tests/libtest/lib574.c
index d27f1519c..dbe5c9458 100644
--- a/tests/libtest/lib574.c
+++ b/tests/libtest/lib574.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib575.c b/tests/libtest/lib575.c
index f511835c5..1c0475075 100644
--- a/tests/libtest/lib575.c
+++ b/tests/libtest/lib575.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib576.c b/tests/libtest/lib576.c
index fa75e7813..34677b1c5 100644
--- a/tests/libtest/lib576.c
+++ b/tests/libtest/lib576.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib578.c b/tests/libtest/lib578.c
index ec3bc01e9..89c5bf7c6 100644
--- a/tests/libtest/lib578.c
+++ b/tests/libtest/lib578.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -71,11 +73,6 @@ int test(char *URL)
/* Now specify we want to POST data */
test_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
- /* Convert the POST data to ASCII */
- test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
/* Set the expected POST size */
test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)data_size);
test_setopt(curl, CURLOPT_POSTFIELDS, data);
diff --git a/tests/libtest/lib579.c b/tests/libtest/lib579.c
index 46894fa9a..f8f1ae31d 100644
--- a/tests/libtest/lib579.c
+++ b/tests/libtest/lib579.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -117,11 +119,6 @@ int test(char *URL)
/* Now specify we want to POST data */
test_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
- /* Convert the POST data to ASCII */
- test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
/* we want to use our own read function */
test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
diff --git a/tests/libtest/lib582.c b/tests/libtest/lib582.c
index 135aa1ad0..3af6e73ae 100644
--- a/tests/libtest/lib582.c
+++ b/tests/libtest/lib582.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib583.c b/tests/libtest/lib583.c
index 0ff0c09dc..65a2fc48c 100644
--- a/tests/libtest/lib583.c
+++ b/tests/libtest/lib583.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
* This test case is based on the sample code provided by Saqib Ali
diff --git a/tests/libtest/lib586.c b/tests/libtest/lib586.c
index da63e7cb8..8f14869e2 100644
--- a/tests/libtest/lib586.c
+++ b/tests/libtest/lib586.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
diff --git a/tests/libtest/lib589.c b/tests/libtest/lib589.c
index 06cc375f9..017b7dfd7 100644
--- a/tests/libtest/lib589.c
+++ b/tests/libtest/lib589.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib590.c b/tests/libtest/lib590.c
index 4414ae7cd..1a885406d 100644
--- a/tests/libtest/lib590.c
+++ b/tests/libtest/lib590.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib591.c b/tests/libtest/lib591.c
index 318cc071e..93e30be75 100644
--- a/tests/libtest/lib591.c
+++ b/tests/libtest/lib591.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib597.c b/tests/libtest/lib597.c
index 3f9964723..4dcf2639d 100644
--- a/tests/libtest/lib597.c
+++ b/tests/libtest/lib597.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib598.c b/tests/libtest/lib598.c
index 8c1c3e04c..e75cad06c 100644
--- a/tests/libtest/lib598.c
+++ b/tests/libtest/lib598.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib599.c b/tests/libtest/lib599.c
index 3f2b61c39..5b35cca03 100644
--- a/tests/libtest/lib599.c
+++ b/tests/libtest/lib599.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib643.c b/tests/libtest/lib643.c
index 3c75108e2..5326d6d4b 100644
--- a/tests/libtest/lib643.c
+++ b/tests/libtest/lib643.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,18 +18,15 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
- "\x64\x75\x6d\x6d\x79\x0a";
-#else
"dummy\n";
-#endif
struct WriteThis {
char *readptr;
@@ -178,15 +175,8 @@ static int once(char *URL, bool oldstyle)
/* Fill in the filename field */
res = curl_mime_name(part, "filename");
if(!res)
- res = curl_mime_data(part,
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape
- sequences for non-ASCII platforms */
- "\x70\x6f\x73\x74\x69\x74\x32\x2e\x63",
-#else
- "postit2.c",
-#endif
- CURL_ZERO_TERMINATED);
+ res = curl_mime_data(part, "postit2.c",
+ CURL_ZERO_TERMINATED);
if(res)
printf("curl_mime_xxx(3) = %s\n", curl_easy_strerror(res));
@@ -202,15 +192,8 @@ static int once(char *URL, bool oldstyle)
}
res = curl_mime_name(part, "submit");
if(!res)
- res = curl_mime_data(part,
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape
- sequences for non-ASCII platforms */
- "\x73\x65\x6e\x64",
-#else
- "send",
-#endif
- CURL_ZERO_TERMINATED);
+ res = curl_mime_data(part, "send",
+ CURL_ZERO_TERMINATED);
if(res)
printf("curl_mime_xxx(4) = %s\n", curl_easy_strerror(res));
diff --git a/tests/libtest/lib650.c b/tests/libtest/lib650.c
index f0e6b81cd..cc2c0edd3 100644
--- a/tests/libtest/lib650.c
+++ b/tests/libtest/lib650.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,20 +18,15 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
static char data[] =
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
- "\x74\x68\x69\x73\x20\x69\x73\x20\x77\x68\x61\x74\x20\x77\x65\x20\x70"
- "\x6f\x73\x74\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x69\x6c\x6c\x79\x20"
- "\x77\x65\x62\x20\x73\x65\x72\x76\x65\x72";
-#else
"this is what we post to the silly web server";
-#endif
static const char name[] = "fieldname";
diff --git a/tests/libtest/lib651.c b/tests/libtest/lib651.c
index 489331a29..8b2d23b47 100644
--- a/tests/libtest/lib651.c
+++ b/tests/libtest/lib651.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib652.c b/tests/libtest/lib652.c
index 4e23dfa33..ff5cb3fbf 100644
--- a/tests/libtest/lib652.c
+++ b/tests/libtest/lib652.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib653.c b/tests/libtest/lib653.c
index 878ed7725..46348ae38 100644
--- a/tests/libtest/lib653.c
+++ b/tests/libtest/lib653.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib654.c b/tests/libtest/lib654.c
index e7e957c46..0d99dd66f 100644
--- a/tests/libtest/lib654.c
+++ b/tests/libtest/lib654.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,18 +18,15 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
- "\x64\x75\x6d\x6d\x79\x0a";
-#else
"dummy\n";
-#endif
struct WriteThis {
char *readptr;
diff --git a/tests/libtest/lib655.c b/tests/libtest/lib655.c
index 751eccdf8..7f4053bd1 100644
--- a/tests/libtest/lib655.c
+++ b/tests/libtest/lib655.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib658.c b/tests/libtest/lib658.c
index 1d10c6d33..d6b9935dd 100644
--- a/tests/libtest/lib658.c
+++ b/tests/libtest/lib658.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -32,9 +34,9 @@
int test(char *URL)
{
CURL *handle = NULL;
- CURLcode res = 0;
+ CURLcode res = CURLE_OK;
CURLU *urlp = NULL;
- CURLUcode uc = 0;
+ CURLUcode uc = CURLUE_OK;
global_init(CURL_GLOBAL_ALL);
easy_init(handle);
diff --git a/tests/libtest/lib659.c b/tests/libtest/lib659.c
index d06986c39..0b6dddff1 100644
--- a/tests/libtest/lib659.c
+++ b/tests/libtest/lib659.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -32,7 +34,7 @@
int test(char *URL)
{
CURL *handle = NULL;
- CURLcode res = 0;
+ CURLcode res = CURLE_OK;
CURLU *urlp = NULL;
global_init(CURL_GLOBAL_ALL);
diff --git a/tests/libtest/lib661.c b/tests/libtest/lib661.c
index 7d2b69c0c..f12a98068 100644
--- a/tests/libtest/lib661.c
+++ b/tests/libtest/lib661.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
diff --git a/tests/libtest/lib666.c b/tests/libtest/lib666.c
index 3c9cfe0a6..29ddb50a4 100644
--- a/tests/libtest/lib666.c
+++ b/tests/libtest/lib666.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib667.c b/tests/libtest/lib667.c
index d30b9534e..d8c14da9e 100644
--- a/tests/libtest/lib667.c
+++ b/tests/libtest/lib667.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,18 +18,15 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
- "\x64\x75\x6d\x6d\x79";
-#else
"dummy";
-#endif
struct WriteThis {
char *readptr;
diff --git a/tests/libtest/lib668.c b/tests/libtest/lib668.c
index bd8ae3b3a..e58f49de9 100644
--- a/tests/libtest/lib668.c
+++ b/tests/libtest/lib668.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,18 +18,14 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
-static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
- /* ASCII representation with escape sequences for non-ASCII platforms */
- "\x64\x75\x6d\x6d\x79";
-#else
- "dummy";
-#endif
+static char data[]= "dummy";
struct WriteThis {
char *readptr;
diff --git a/tests/libtest/lib670.c b/tests/libtest/lib670.c
index e00a13923..0e6d52500 100644
--- a/tests/libtest/lib670.c
+++ b/tests/libtest/lib670.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include <time.h>
@@ -140,10 +142,6 @@ int test(char *URL)
mime = curl_mime_init(pooh.easy);
part = curl_mime_addpart(mime);
result = curl_mime_name(part, name);
- if(!result)
- res = curl_mime_data_cb(part, (curl_off_t) 2, read_callback,
- NULL, NULL, &pooh);
-
if(result) {
fprintf(stderr,
"Something went wrong when building the mime structure: %d\n",
@@ -151,6 +149,9 @@ int test(char *URL)
goto test_cleanup;
}
+ res = curl_mime_data_cb(part, (curl_off_t) 2, read_callback,
+ NULL, NULL, &pooh);
+
/* Bind mime data to its easy handle. */
if(!res)
test_setopt(pooh.easy, CURLOPT_MIMEPOST, mime);
diff --git a/tests/libtest/lib674.c b/tests/libtest/lib674.c
index 1b8d28710..454d5c023 100644
--- a/tests/libtest/lib674.c
+++ b/tests/libtest/lib674.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -33,9 +35,9 @@ int test(char *URL)
{
CURL *handle = NULL;
CURL *handle2;
- CURLcode res = 0;
+ CURLcode res = CURLE_OK;
CURLU *urlp = NULL;
- CURLUcode uc = 0;
+ CURLUcode uc = CURLUE_OK;
global_init(CURL_GLOBAL_ALL);
easy_init(handle);
diff --git a/tests/libtest/lib676.c b/tests/libtest/lib676.c
index 2d0b31c5c..aac034a05 100644
--- a/tests/libtest/lib676.c
+++ b/tests/libtest/lib676.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib677.c b/tests/libtest/lib677.c
index a4ec667f2..4102677c5 100644
--- a/tests/libtest/lib677.c
+++ b/tests/libtest/lib677.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/lib678.c b/tests/libtest/lib678.c
index 89ceb8573..23c7f4d4d 100644
--- a/tests/libtest/lib678.c
+++ b/tests/libtest/lib678.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/libauthretry.c b/tests/libtest/libauthretry.c
index a19801080..3de5b3f1d 100644
--- a/tests/libtest/libauthretry.c
+++ b/tests/libtest/libauthretry.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* argv1 = URL
* argv2 = main auth type
diff --git a/tests/libtest/libntlmconnect.c b/tests/libtest/libntlmconnect.c
index 11da56f41..18b1443ab 100644
--- a/tests/libtest/libntlmconnect.c
+++ b/tests/libtest/libntlmconnect.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/libprereq.c b/tests/libtest/libprereq.c
index 11eb18c06..3aa475c5e 100644
--- a/tests/libtest/libprereq.c
+++ b/tests/libtest/libprereq.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2021, Max Dymond, <max.dymond@microsoft.com>
+ * Copyright (C) 2021 - 2022, Max Dymond, <max.dymond@microsoft.com>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
@@ -95,4 +97,3 @@ test_cleanup:
return ret;
}
-
diff --git a/tests/libtest/mk-lib1521.pl b/tests/libtest/mk-lib1521.pl
index 0122fc375..1e00be834 100755
--- a/tests/libtest/mk-lib1521.pl
+++ b/tests/libtest/mk-lib1521.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2017 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2017 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Usage:
@@ -51,6 +53,8 @@ print <<HEADER
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
#include "memdebug.h"
@@ -128,6 +132,7 @@ static curl_sockopt_callback sockoptcb;
static curl_opensocket_callback opensocketcb;
static curl_seek_callback seekcb;
static curl_sshkeycallback ssh_keycb;
+static curl_sshhostkeycallback ssh_hostkeycb;
static curl_chunk_bgn_callback chunk_bgn_cb;
static curl_chunk_end_callback chunk_end_cb;
static curl_fnmatch_callback fnmatch_cb;
diff --git a/tests/libtest/notexists.pl b/tests/libtest/notexists.pl
index 8f09598e8..e4c13b748 100755
--- a/tests/libtest/notexists.pl
+++ b/tests/libtest/notexists.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Check that given arguments do not exist on filesystem.
my $code = 0;
diff --git a/tests/libtest/sethostname.c b/tests/libtest/sethostname.c
index 1a1fdfd67..3ab1241a9 100644
--- a/tests/libtest/sethostname.c
+++ b/tests/libtest/sethostname.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/tests/libtest/sethostname.h b/tests/libtest/sethostname.h
index 7b2f2ed13..a0bbc14d5 100644
--- a/tests/libtest/sethostname.h
+++ b/tests/libtest/sethostname.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#ifdef CURL_STATICLIB
diff --git a/tests/libtest/stub_gssapi.c b/tests/libtest/stub_gssapi.c
index 6cc1697cd..1e9c80081 100644
--- a/tests/libtest/stub_gssapi.c
+++ b/tests/libtest/stub_gssapi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2017 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2017 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Only provides the bare minimum to link with libcurl */
diff --git a/tests/libtest/stub_gssapi.h b/tests/libtest/stub_gssapi.h
index 5a89102d0..36460e90c 100644
--- a/tests/libtest/stub_gssapi.h
+++ b/tests/libtest/stub_gssapi.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2017 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2017 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Roughly based on Heimdal's gssapi.h */
diff --git a/tests/libtest/test.h b/tests/libtest/test.h
index e3bad1748..badad1d10 100644
--- a/tests/libtest/test.h
+++ b/tests/libtest/test.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/* Now include the curl_setup.h file from libcurl's private libdir (the source
@@ -38,10 +40,6 @@
#include <unistd.h>
#endif
-#ifdef TPF
-# include "select.h"
-#endif
-
#include "curl_printf.h"
#define test_setopt(A,B,C) \
@@ -487,4 +485,12 @@ extern int unitfail;
#define global_init(A) \
chk_global_init((A), (__FILE__), (__LINE__))
+#define NO_SUPPORT_BUILT_IN \
+ int test(char *URL) \
+ { \
+ (void)URL; \
+ fprintf(stderr, "Missing support\n"); \
+ return 1; \
+ }
+
/* ---------------------------------------------------------------- */
diff --git a/tests/libtest/test1013.pl b/tests/libtest/test1013.pl
index 58f7c9623..37f798fb6 100755
--- a/tests/libtest/test1013.pl
+++ b/tests/libtest/test1013.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Determine if curl-config --protocols/--features matches the
# curl --version protocols/features
diff --git a/tests/libtest/test1022.pl b/tests/libtest/test1022.pl
index 573834baf..7339bb4ed 100755
--- a/tests/libtest/test1022.pl
+++ b/tests/libtest/test1022.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Determine if curl-config --version matches the curl --version
if ( $#ARGV != 2 )
diff --git a/tests/libtest/test307.pl b/tests/libtest/test307.pl
index b5da4ffaa..688d93446 100755
--- a/tests/libtest/test307.pl
+++ b/tests/libtest/test307.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Determine if the given curl executable supports the 'openssl' SSL engine
if ( $#ARGV != 0 )
diff --git a/tests/libtest/test610.pl b/tests/libtest/test610.pl
index a3ac8c6ea..86c95b890 100755
--- a/tests/libtest/test610.pl
+++ b/tests/libtest/test610.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Perform simple file and directory manipulation in a portable way
if ( $#ARGV <= 0 )
diff --git a/tests/libtest/test613.pl b/tests/libtest/test613.pl
index 368d7beb2..8d97ed9f7 100755
--- a/tests/libtest/test613.pl
+++ b/tests/libtest/test613.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Prepare a directory with known files and clean up afterwards
use Time::Local;
diff --git a/tests/libtest/testtrace.c b/tests/libtest/testtrace.c
index d17136548..6f0ae4ade 100644
--- a/tests/libtest/testtrace.c
+++ b/tests/libtest/testtrace.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/libtest/testtrace.h b/tests/libtest/testtrace.h
index f715ef540..b0773dc8d 100644
--- a/tests/libtest/testtrace.h
+++ b/tests/libtest/testtrace.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
struct libtest_trace_cfg {
diff --git a/tests/libtest/testutil.c b/tests/libtest/testutil.c
index a37a1b1b8..a46e0f9fc 100644
--- a/tests/libtest/testutil.c
+++ b/tests/libtest/testutil.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
#include <curl/curl.h>
diff --git a/tests/libtest/testutil.h b/tests/libtest/testutil.h
index e766ad4a0..94550fc01 100644
--- a/tests/libtest/testutil.h
+++ b/tests/libtest/testutil.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curl_setup.h"
diff --git a/tests/manpage-scan.pl b/tests/manpage-scan.pl
index 219c4a463..040d5177e 100755
--- a/tests/manpage-scan.pl
+++ b/tests/manpage-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2016 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2016 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# Scan symbols-in-version (which is verified to be correct by test 1119), then
@@ -146,6 +148,7 @@ my %opts = (
'--no-sessionid' => 1,
'--no-keepalive' => 1,
'--no-progress-meter' => 1,
+ '--no-clobber' => 1,
# pretend these options without -no exist in curl.1 and tool_listhelp.c
'--alpn' => 6,
@@ -156,8 +159,9 @@ my %opts = (
'-N, --buffer' => 6,
'--sessionid' => 6,
'--progress-meter' => 6,
+ '--clobber' => 6,
- # deprecated options do not need to be in tool_listhelp.c nor curl.1
+ # deprecated options do not need to be in tool_help.c nor curl.1
'--krb4' => 6,
'--ftp-ssl' => 6,
'--ftp-ssl-reqd' => 6,
diff --git a/tests/manpage-syntax.pl b/tests/manpage-syntax.pl
index 22d93e5d1..a83223d94 100644
--- a/tests/manpage-syntax.pl
+++ b/tests/manpage-syntax.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# Scan man page(s) and detect some simple and yet common formatting mistakes.
@@ -60,12 +62,29 @@ my @funcorder = (
my %shline; # section => line number
my %symbol;
+
+# some CURLINFO_ symbols are not actual options for curl_easy_getinfo,
+# mark them as "deprecated" to hide them from link-warnings
+my %deprecated = (
+ CURLINFO_TEXT => 1,
+ CURLINFO_HEADER_IN => 1,
+ CURLINFO_HEADER_OUT => 1,
+ CURLINFO_DATA_IN => 1,
+ CURLINFO_DATA_OUT => 1,
+ CURLINFO_SSL_DATA_IN => 1,
+ CURLINFO_SSL_DATA_OUT => 1,
+ );
sub allsymbols {
open(F, "<$symbolsinversions") ||
die "$symbolsinversions: $|";
while(<F>) {
- if($_ =~ /^([^ ]*)/) {
- $symbol{$1}=$1;
+ if($_ =~ /^([^ ]*) +(.*)/) {
+ my ($name, $info) = ($1, $2);
+ $symbol{$name}=$name;
+
+ if($info =~ /([0-9.]+) +([0-9.]+)/) {
+ $deprecated{$name}=$info;
+ }
}
}
close(F);
@@ -81,6 +100,7 @@ sub scanmanpage {
my $shc = 0;
my $optpage = 0; # option or function
my @sh;
+ my $SH="";
open(M, "<$file") || die "no such file: $file";
if($file =~ /[\/\\](CURL|curl_)[^\/\\]*.3/) {
@@ -129,6 +149,7 @@ sub scanmanpage {
$n =~ s/\"(.*)\"\z/$1/;
push @sh, $n;
$shline{$n} = $line;
+ $SH = $n;
}
if($_ =~ /^\'/) {
@@ -142,6 +163,27 @@ sub scanmanpage {
$errors++;
}
}
+ if($_ =~ /(.*)\\f([^BIP])/) {
+ my ($pre, $format) = ($1, $2);
+ if($pre !~ /\\\z/) {
+ # only if there wasn't another backslash before the \f
+ print STDERR "$file:$line suspicious \\f format!\n";
+ $errors++;
+ }
+ }
+ if($optpage && $SH && ($SH !~ /^(SYNOPSIS|EXAMPLE|NAME|SEE ALSO)/i) &&
+ ($_ =~ /(.*)(CURL(OPT_|MOPT_|INFO_)[A-Z0-9_]*)/)) {
+ # an option with its own man page, check that it is tagged
+ # for linking
+ my ($pref, $symbol) = ($1, $2);
+ if($deprecated{$symbol}) {
+ # let it be
+ }
+ elsif($pref !~ /\\fI\z/) {
+ print STDERR "$file:$line option $symbol missing \\fI tagging\n";
+ $errors++;
+ }
+ }
if($_ =~ /[ \t]+$/) {
print STDERR "$file:$line trailing whitespace\n";
$errors++;
diff --git a/tests/markdown-uppercase.pl b/tests/markdown-uppercase.pl
new file mode 100644
index 000000000..fe298d473
--- /dev/null
+++ b/tests/markdown-uppercase.pl
@@ -0,0 +1,100 @@
+#!/usr/bin/env perl
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2016 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+my $root=$ARGV[0] || "..";
+
+my @m = `git ls-files -- $root`;
+
+my $errors;
+
+my %accepted=('curl' => 1,
+ 'libcurl' => 1);
+
+sub checkfile {
+ my ($f) = @_;
+ chomp $f;
+ if($f !~ /\.md\z/) {
+ return;
+ }
+ open(F, "<$f");
+ my $l = 1;
+ my $prevl;
+ my $ignore = 0;
+ while(<F>) {
+ my $line = $_;
+ chomp $line;
+ if($line =~ /^(\`\`\`|\~\~\~)/) {
+ # start or stop ignore-mode
+ $ignore ^= 1;
+ }
+ if(!$ignore) {
+ if(($prevl =~ /\.\z/) && ($line =~ /^( *)([a-z]+)/)) {
+ my ($prefix, $word) = ($1, $2);
+ if(!$accepted{$word}) {
+ my $c = length($prefix);
+ print STDERR
+ "$f:$l:$c:error: lowercase $word after period\n";
+ print STDERR "$line\n";
+ print STDERR ' ' x $c;
+ print STDERR "^\n";
+ $errors++;
+ }
+ }
+ elsif($line =~ /^(.*)\. +([a-z]+)/) {
+ my ($prefix, $word) = ($1, $2);
+
+ if(($prefix =~ /\.\.\z/) ||
+ ($prefix =~ /[0-9]\z/) ||
+ ($prefix =~ /e.g\z/) ||
+ ($prefix =~ /i.e\z/) ||
+ ($prefix =~ /etc\z/) ||
+ $accepted{$word}) {
+ }
+ else {
+ my $c = length($prefix) + 2;
+ print STDERR
+ "$f:$l:$c:error: lowercase $word after period\n";
+ print STDERR "$line\n";
+ print STDERR ' ' x $c;
+ print STDERR "^\n";
+ $errors++;
+ }
+ }
+ }
+ $prevl = $line;
+ $l++;
+ }
+ close(F);
+}
+
+
+for my $f (@m) {
+ checkfile($f);
+}
+
+if($errors) {
+ exit 1;
+}
+print "ok\n";
diff --git a/tests/mem-include-scan.pl b/tests/mem-include-scan.pl
index 44c261b9c..52b8155dc 100755
--- a/tests/mem-include-scan.pl
+++ b/tests/mem-include-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2010 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# This script scans C source files. If they seem to use memory functions,
diff --git a/tests/memanalyze.pl b/tests/memanalyze.pl
index 714594a17..ee344f733 100755
--- a/tests/memanalyze.pl
+++ b/tests/memanalyze.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# Example input:
@@ -56,7 +58,8 @@ while(1) {
}
}
-my $maxmem;
+my $memsum; # the total number of memory allocated over the lifetime
+my $maxmem; # the high water mark
sub newtotal {
my ($newtot)=@_;
@@ -150,6 +153,7 @@ while(<FILE>) {
$sizeataddr{$addr}=$size;
$totalmem += $size;
+ $memsum += $size;
if($trace) {
print "MALLOC: malloc($size) at $source:$linenum",
@@ -175,6 +179,7 @@ while(<FILE>) {
$sizeataddr{$addr}=$size;
$totalmem += $size;
+ $memsum += $size;
if($trace) {
print "CALLOC: calloc($arg1,$arg2) at $source:$linenum",
@@ -196,6 +201,7 @@ while(<FILE>) {
$sizeataddr{$oldaddr}=0;
$totalmem += $newsize;
+ $memsum += $size;
$sizeataddr{$newaddr}=$newsize;
if($trace) {
@@ -218,6 +224,7 @@ while(<FILE>) {
$sizeataddr{$addr}=$size;
$totalmem += $size;
+ $memsum += $size;
if($trace) {
printf("STRDUP: $size bytes at %s, makes totally: %d bytes\n",
@@ -237,6 +244,7 @@ while(<FILE>) {
$sizeataddr{$addr}=$size;
$totalmem += $size;
+ $memsum += $size;
if($trace) {
printf("WCSDUP: $size bytes at %s, makes totally: %d bytes\n",
@@ -422,4 +430,5 @@ if($verbose) {
"Operations: ".($mallocs + $callocs + $reallocs + $strdups + $wcsdups + $sends + $recvs + $sockets)."\n";
print "Maximum allocated: $maxmem\n";
+ print "Total allocated: $memsum\n";
}
diff --git a/tests/negtelnetserver.py b/tests/negtelnetserver.py
index 4f80e3dd7..2b748aff3 100755
--- a/tests/negtelnetserver.py
+++ b/tests/negtelnetserver.py
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2017 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2017 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
""" A telnet server which negotiates"""
from __future__ import (absolute_import, division, print_function,
diff --git a/tests/nroff-scan.pl b/tests/nroff-scan.pl
index 1112783fb..161721ffa 100755
--- a/tests/nroff-scan.pl
+++ b/tests/nroff-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2016 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2016 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# scan nroff pages to find basic syntactic problems such as unbalanced \f
diff --git a/tests/options-scan.pl b/tests/options-scan.pl
index 1a644a77e..de8412307 100644
--- a/tests/options-scan.pl
+++ b/tests/options-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
#
diff --git a/tests/pathhelp.pm b/tests/pathhelp.pm
index e1908d0b3..2c6594705 100644
--- a/tests/pathhelp.pm
+++ b/tests/pathhelp.pm
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2016 - 2021, Evgeny Grin (Karlson2k), <k2k@narod.ru>.
+# Copyright (C) 2016 - 2022, Evgeny Grin (Karlson2k), <k2k@narod.ru>.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# This Perl package helps with path transforming when running curl tests on
diff --git a/tests/rtspserver.pl b/tests/rtspserver.pl
index da75ccca1..40b1bc779 100755
--- a/tests/rtspserver.pl
+++ b/tests/rtspserver.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
BEGIN {
diff --git a/tests/runtests.1 b/tests/runtests.1
index 5b0694551..8ab67245b 100644
--- a/tests/runtests.1
+++ b/tests/runtests.1
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH runtests.pl 1 "June 02, 2021" "Curl 7.81.0" "runtests"
+.TH runtests.pl 1 "September 02, 2022" "Curl 7.86.0" "runtests"
.SH NAME
runtests.pl \- run one or more test cases
@@ -87,7 +89,7 @@ Keep output and log files in log/ after a test run, even if no error was
detected. Useful for debugging.
.IP "-L <file>"
Load and execute the specified file which should contain perl code.
-This option allows to change \fIruntests.pl\fP behaviour by overwriting
+This option allows one to change \fIruntests.pl\fP behaviour by overwriting
functions and variables and is useful when testing external proxies
using curl's regression test suite.
.IP "-l"
@@ -100,7 +102,7 @@ Useful to change variables that didn't get a dedicated flag to change them.
Check the source to see which variables are available.
.IP "-P <proxy>"
Use the specified HTTP proxy when executing tests, even if the tests
-themselves don't specify a proxy. This option allows to test external
+themselves don't specify a proxy. This option allows one to test external
proxies using curl's regression test suite.
.IP "-p"
Prints out all files in "log/" to stdout when a test case fails. Very
diff --git a/tests/runtests.pl b/tests/runtests.pl
index 7ac22035b..3f6197249 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# Experimental hooks are available to run tests remotely on machines that
@@ -162,6 +164,7 @@ my $SMBPORT=$noport; # SMB server port
my $SMBSPORT=$noport; # SMBS server port
my $TELNETPORT=$noport; # TELNET server port with negotiation
my $HTTPUNIXPATH; # HTTP server Unix domain socket path
+my $SOCKSUNIXPATH; # socks server Unix domain socket path
my $use_external_proxy = 0;
my $proxy_address;
@@ -172,10 +175,12 @@ my $SSHSRVSHA256 = "[uninitialized]"; # SHA256 of ssh server public key
my $VERSION=""; # curl's reported version number
my $srcdir = $ENV{'srcdir'} || '.';
-my $CURL="../src/curl".exe_ext('TOOL'); # what curl executable to run on the tests
+my $CURL="../src/curl".exe_ext('TOOL'); # what curl binary to run on the tests
my $VCURL=$CURL; # what curl binary to use to verify the servers with
# VCURL is handy to set to the system one when the one you
# just built hangs or crashes and thus prevent verification
+my $ACURL=$VCURL; # what curl binary to use to talk to APIs (relevant for CI)
+ # ACURL is handy to set to the system one for reliability
my $DBGCURL=$CURL; #"../src/.libs/curl"; # alternative for debugging
my $LOGDIR="log";
my $TESTDIR="$srcdir/data";
@@ -256,6 +261,7 @@ 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_http2; # set if libcurl is built with HTTP2 support
+my $has_h2c; # set if libcurl is built with h2c support
my $has_httpsproxy; # set if libcurl is built with HTTPS-proxy support
my $has_crypto; # set if libcurl is built with cryptographic support
my $has_cares; # set if built with c-ares
@@ -271,22 +277,25 @@ my $has_mingw; # set if built with MinGW (as opposed to MinGW-w64)
my $has_hyper = 0; # set if built with Hyper
my $has_libssh2; # set if built with libssh2
my $has_libssh; # set if built with libssh
+my $has_oldlibssh; # set if built with libssh < 0.9.4
my $has_wolfssh; # set if built with wolfssh
my $has_unicode; # set if libcurl is built with Unicode support
+my $has_threadsafe; # set if libcurl is built with thread-safety support
# this version is decided by the particular nghttp2 library that is being used
my $h2cver = "h2c";
+my $has_rustls; # built with rustls
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_wolfssl; # built with wolfSSL
+my $has_bearssl; # built with BearSSL
my $has_schannel; # built with Schannel
my $has_sectransp; # built with Secure Transport
my $has_boringssl; # built with BoringSSL
my $has_libressl; # built with libressl
my $has_mbedtls; # built with mbedTLS
-my $has_mesalink; # built with MesaLink
my $has_sslpinning; # built with a TLS backend that supports pinning
@@ -426,6 +435,7 @@ foreach $protocol (('ftp', 'http', 'ftps', 'https', 'no', 'all')) {
delete $ENV{'SSL_CERT_DIR'} if($ENV{'SSL_CERT_DIR'});
delete $ENV{'SSL_CERT_PATH'} if($ENV{'SSL_CERT_PATH'});
+delete $ENV{'DEBUGINFOD_URLS'} if($ENV{'DEBUGINFOD_URLS'});
delete $ENV{'CURL_CA_BUNDLE'} if($ENV{'CURL_CA_BUNDLE'});
#######################################################################
@@ -585,9 +595,11 @@ sub checkcmd {
#######################################################################
# Get the list of tests that the tests/data/Makefile.am knows about!
#
-my $disttests;
+my $disttests = "";
sub get_disttests {
- open(D, "<$TESTDIR/Makefile.inc");
+ # If a non-default $TESTDIR is being used there may not be any
+ # Makefile.inc in which case there's nothing to do.
+ open(D, "<$TESTDIR/Makefile.inc") or return;
while(<D>) {
chomp $_;
if(($_ =~ /^#/) ||($_ !~ /test/)) {
@@ -665,7 +677,7 @@ sub torture {
my @ttests = (1 .. $count);
if($shallow && ($shallow < $count)) {
my $discard = scalar(@ttests) - $shallow;
- my $percent = sprintf("%.2f%%", $shallow * 100 / scalar(@ttests));;
+ my $percent = sprintf("%.2f%%", $shallow * 100 / scalar(@ttests));
logmsg " $count functions found, but only fail $shallow ($percent)\n";
while($discard) {
my $rm;
@@ -1429,6 +1441,7 @@ my %protofunc = ('http' => \&verifyhttp,
'tftp' => \&verifyftp,
'ssh' => \&verifyssh,
'socks' => \&verifysocks,
+ 'socks5unix' => \&verifysocks,
'gopher' => \&verifyhttp,
'httptls' => \&verifyhttptls,
'dict' => \&verifyftp,
@@ -2185,6 +2198,11 @@ sub runsshserver {
my $logfile;
my $port = 20000; # no lower port
+ if(!$USER) {
+ logmsg "Can't start ssh server due to lack of USER name";
+ return (0,0,0);
+ }
+
$server = servername_id($proto, $ipvnum, $idnum);
$pidfile = $serverpidfile{$server};
@@ -2373,7 +2391,7 @@ sub runmqttserver {
# Start the socks server
#
sub runsocksserver {
- my ($id, $verbose, $ipv6) = @_;
+ my ($id, $verbose, $ipv6, $is_unix) = @_;
my $ip=$HOSTIP;
my $proto = 'socks';
my $ipvnum = 4;
@@ -2405,12 +2423,21 @@ sub runsocksserver {
$logfile = server_logfilename($LOGDIR, $proto, $ipvnum, $idnum);
# start our socks server, get commands from the FTP cmd file
- my $cmd="server/socksd".exe_ext('SRV').
- " --port 0 ".
- " --pidfile $pidfile".
- " --portfile $portfile".
- " --backend $HOSTIP".
- " --config $FTPDCMD";
+ my $cmd="";
+ if($is_unix) {
+ $cmd="server/socksd".exe_ext('SRV').
+ " --pidfile $pidfile".
+ " --unix-socket $SOCKSUNIXPATH".
+ " --backend $HOSTIP".
+ " --config $FTPDCMD";
+ } else {
+ $cmd="server/socksd".exe_ext('SRV').
+ " --port 0 ".
+ " --pidfile $pidfile".
+ " --portfile $portfile".
+ " --backend $HOSTIP".
+ " --config $FTPDCMD";
+ }
my ($sockspid, $pid2) = startnew($cmd, $pidfile, 30, 0);
if($sockspid <= 0 || !pidexists($sockspid)) {
@@ -2860,35 +2887,38 @@ sub compare {
}
sub setupfeatures {
- $feature{"hyper"} = $has_hyper;
- $feature{"c-ares"} = $has_cares;
$feature{"alt-svc"} = $has_altsvc;
- $feature{"HSTS"} = $has_hsts;
+ $feature{"bearssl"} = $has_bearssl;
$feature{"brotli"} = $has_brotli;
+ $feature{"c-ares"} = $has_cares;
$feature{"crypto"} = $has_crypto;
$feature{"debug"} = $debug_build;
$feature{"getrlimit"} = $has_getrlimit;
$feature{"GnuTLS"} = $has_gnutls;
$feature{"GSS-API"} = $has_gssapi;
+ $feature{"h2c"} = $has_h2c;
+ $feature{"HSTS"} = $has_hsts;
$feature{"http/2"} = $has_http2;
$feature{"https-proxy"} = $has_httpsproxy;
+ $feature{"hyper"} = $has_hyper;
$feature{"idn"} = $has_idn;
$feature{"ipv6"} = $has_ipv6;
$feature{"Kerberos"} = $has_kerberos;
$feature{"large_file"} = $has_largefile;
$feature{"ld_preload"} = ($has_ldpreload && !$debug_build);
- $feature{"libz"} = $has_libz;
- $feature{"libssh2"} = $has_libssh2;
$feature{"libssh"} = $has_libssh;
- $feature{"wolfssh"} = $has_wolfssh;
+ $feature{"libssh2"} = $has_libssh2;
+ $feature{"libz"} = $has_libz;
$feature{"manual"} = $has_manual;
$feature{"MinGW"} = $has_mingw;
$feature{"MultiSSL"} = $has_multissl;
$feature{"NSS"} = $has_nss;
$feature{"NTLM"} = $has_ntlm;
$feature{"NTLM_WB"} = $has_ntlm_wb;
+ $feature{"oldlibssh"} = $has_oldlibssh;
$feature{"OpenSSL"} = $has_openssl || $has_libressl || $has_boringssl;
$feature{"PSL"} = $has_psl;
+ $feature{"rustls"} = $has_rustls;
$feature{"Schannel"} = $has_schannel;
$feature{"sectransp"} = $has_sectransp;
$feature{"SPNEGO"} = $has_spnego;
@@ -2896,12 +2926,15 @@ sub setupfeatures {
$feature{"SSLpinning"} = $has_sslpinning;
$feature{"SSPI"} = $has_sspi;
$feature{"threaded-resolver"} = $has_threadedres;
+ $feature{"threadsafe"} = $has_threadsafe;
$feature{"TLS-SRP"} = $has_tls_srp;
$feature{"TrackMemory"} = $has_memory_tracking;
$feature{"Unicode"} = $has_unicode;
$feature{"unittest"} = $debug_build;
$feature{"unix-sockets"} = $has_unix;
$feature{"win32"} = $has_win32;
+ $feature{"wolfssh"} = $has_wolfssh;
+ $feature{"wolfssl"} = $has_wolfssl;
$feature{"zstd"} = $has_zstd;
# make each protocol an enabled "feature"
@@ -2924,7 +2957,8 @@ sub setupfeatures {
$feature{"typecheck"} = 1;
$feature{"verbose-strings"} = 1;
$feature{"wakeup"} = 1;
-
+ $feature{"headers-api"} = 1;
+ $feature{"xattr"} = 1;
}
#######################################################################
@@ -2999,6 +3033,9 @@ sub checksystem {
$has_gnutls=1;
$has_sslpinning=1;
}
+ elsif ($libcurl =~ /rustls-ffi/i) {
+ $has_rustls=1;
+ }
elsif ($libcurl =~ /nss/i) {
$has_nss=1;
$has_sslpinning=1;
@@ -3007,6 +3044,9 @@ sub checksystem {
$has_wolfssl=1;
$has_sslpinning=1;
}
+ elsif ($libcurl =~ /bearssl/i) {
+ $has_bearssl=1;
+ }
elsif ($libcurl =~ /securetransport/i) {
$has_sectransp=1;
$has_sslpinning=1;
@@ -3027,17 +3067,25 @@ sub checksystem {
$has_cares=1;
$resolver="c-ares";
}
- if ($libcurl =~ /mesalink/i) {
- $has_mesalink=1;
- }
if ($libcurl =~ /Hyper/i) {
$has_hyper=1;
}
+ if ($libcurl =~ /nghttp2/i) {
+ # nghttp2 supports h2c, hyper does not
+ $has_h2c=1;
+ }
if ($libcurl =~ /libssh2/i) {
$has_libssh2=1;
}
- if ($libcurl =~ /libssh\//i) {
+ if ($libcurl =~ /libssh\/([0-9.]*)\//i) {
$has_libssh=1;
+ if($1 =~ /(\d+)\.(\d+).(\d+)/) {
+ my $v = $1 * 100 + $2 * 10 + $3;
+ if($v < 94) {
+ # before 0.9.4
+ $has_oldlibssh = 1;
+ }
+ }
}
if ($libcurl =~ /wolfssh/i) {
$has_wolfssh=1;
@@ -3174,6 +3222,9 @@ sub checksystem {
if($feat =~ /Unicode/i) {
$has_unicode = 1;
}
+ if($feat =~ /threadsafe/i) {
+ $has_threadsafe = 1;
+ }
}
#
# Test harness currently uses a non-stunnel server in order to
@@ -3311,6 +3362,7 @@ sub checksystem {
logmsg "* Unix socket paths:\n";
if($http_unix) {
logmsg sprintf("* HTTP-Unix:%s\n", $HTTPUNIXPATH);
+ logmsg sprintf("* Socks-Unix:%s\n", $SOCKSUNIXPATH);
}
}
}
@@ -3371,6 +3423,7 @@ sub subVariables {
# server Unix domain socket paths
$$thing =~ s/${prefix}HTTPUNIXPATH/$HTTPUNIXPATH/g;
+ $$thing =~ s/${prefix}SOCKSUNIXPATH/$SOCKSUNIXPATH/g;
# client IP addresses
$$thing =~ s/${prefix}CLIENT6IP/$CLIENT6IP/g;
@@ -3738,10 +3791,10 @@ sub singletest {
# create test result in CI services
if(azure_check_environment() && $AZURE_RUN_ID) {
- $AZURE_RESULT_ID = azure_create_test_result($VCURL, $AZURE_RUN_ID, $testnum, $testname);
+ $AZURE_RESULT_ID = azure_create_test_result($ACURL, $AZURE_RUN_ID, $testnum, $testname);
}
elsif(appveyor_check_environment()) {
- appveyor_create_test_result($VCURL, $testnum, $testname);
+ appveyor_create_test_result($ACURL, $testnum, $testname);
}
# remove test server commands file before servers are started/verified
@@ -3763,7 +3816,9 @@ sub singletest {
# save the new version
open(D, ">$otest");
- print D @entiretest;
+ foreach my $bytes (@entiretest) {
+ print D pack('a*', $bytes) or die "Failed to print '$bytes': $!";
+ }
close(D);
# in case the process changed the file, reload it
@@ -3881,6 +3936,13 @@ sub singletest {
else {
# check against the data section
@reply = getpart("reply", "data");
+ if(@reply) {
+ my %hash = getpartattr("reply", "data");
+ if($hash{'nonewline'}) {
+ # cut off the final newline from the final line of the data
+ chomp($reply[$#reply]);
+ }
+ }
# get the mode attribute
my $filemode=$replyattr{'mode'};
if($filemode && ($filemode eq "text") && $has_textaware) {
@@ -3974,6 +4036,20 @@ sub singletest {
return -1;
}
my $fileContent = join('', @inputfile);
+
+ # make directories if needed
+ my $path = $filename;
+ # cut off the file name part
+ $path =~ s/^(.*)\/[^\/]*/$1/;
+ my @parts = split(/\//, $path);
+ if($parts[0] eq "log") {
+ # the file is in log/
+ my $d = shift @parts;
+ for(@parts) {
+ $d .= "/$_";
+ mkdir $d; # 0777
+ }
+ }
open(OUTFILE, ">$filename");
binmode OUTFILE; # for crapage systems, use binary
if($fileattr{'nonewline'}) {
@@ -4079,6 +4155,12 @@ sub singletest {
$DBGCURL=$CMDLINE;
}
+ if($fail_due_event_based) {
+ logmsg "This test cannot run event based\n";
+ timestampskippedevents($testnum);
+ return -1;
+ }
+
if($gdbthis) {
# gdb is incompatible with valgrind, so disable it when debugging
# Perhaps a better approach would be to run it under valgrind anyway
@@ -4086,11 +4168,6 @@ sub singletest {
$disablevalgrind=1;
}
- if($fail_due_event_based) {
- logmsg "This test cannot run event based\n";
- return -1;
- }
-
my @stdintest = getpart("client", "stdin");
if(@stdintest) {
@@ -5224,6 +5301,16 @@ sub startservers {
$run{'socks'}="$pid $pid2";
}
}
+ elsif($what eq "socks5unix") {
+ if(!$run{'socks5unix'}) {
+ ($pid, $pid2) = runsocksserver("2", $verbose, "", "unix");
+ if($pid <= 0) {
+ return "failed starting socks5unix server";
+ }
+ printf ("* pid socks5unix => %d %d\n", $pid, $pid2) if($verbose);
+ $run{'socks5unix'}="$pid $pid2";
+ }
+ }
elsif($what eq "mqtt" ) {
if(!$run{'mqtt'}) {
($pid, $pid2) = runmqttserver("", $verbose);
@@ -5513,6 +5600,11 @@ while(@ARGV) {
$VCURL="\"$ARGV[1]\"";
shift @ARGV;
}
+ elsif ($ARGV[0] eq "-ac") {
+ # use this curl only to talk to APIs (currently only CI test APIs)
+ $ACURL="\"$ARGV[1]\"";
+ shift @ARGV;
+ }
elsif ($ARGV[0] eq "-d") {
# have the servers display protocol output
$debugprotocol=1;
@@ -5671,6 +5763,7 @@ while(@ARGV) {
print <<EOHELP
Usage: runtests.pl [options] [test selection(s)]
-a continue even if a test fails
+ -ac path use this curl only to talk to APIs (currently only CI test APIs)
-am automake style output PASS/FAIL: [number] [name]
-c path use this curl executable
-d display server debug info
@@ -5691,6 +5784,7 @@ Usage: runtests.pl [options] [test selection(s)]
-r run time statistics
-rf full run time statistics
-rm force removal of files by killing locking processes (Windows only)
+ --repeat=[num] run the given tests this many times
-s short output
--seed=[num] set the random seed to a fixed number
--shallow=[num] randomly makes the torture tests "thinner"
@@ -5818,6 +5912,7 @@ if ($gdbthis) {
}
$HTTPUNIXPATH = "http$$.sock"; # HTTP server Unix domain socket path
+$SOCKSUNIXPATH = $pwd."/socks$$.sock"; # HTTP server Unix domain socket path, absolute path
#######################################################################
# clear and create logging directory:
@@ -6053,7 +6148,7 @@ sub displaylogs {
#
if(azure_check_environment()) {
- $AZURE_RUN_ID = azure_create_test_run($VCURL);
+ $AZURE_RUN_ID = azure_create_test_run($ACURL);
logmsg "Azure Run ID: $AZURE_RUN_ID\n" if ($verbose);
}
@@ -6082,11 +6177,11 @@ foreach $testnum (@at) {
# update test result in CI services
if(azure_check_environment() && $AZURE_RUN_ID && $AZURE_RESULT_ID) {
- $AZURE_RESULT_ID = azure_update_test_result($VCURL, $AZURE_RUN_ID, $AZURE_RESULT_ID, $testnum, $error,
+ $AZURE_RESULT_ID = azure_update_test_result($ACURL, $AZURE_RUN_ID, $AZURE_RESULT_ID, $testnum, $error,
$timeprepini{$testnum}, $timevrfyend{$testnum});
}
elsif(appveyor_check_environment()) {
- appveyor_update_test_result($VCURL, $testnum, $error, $timeprepini{$testnum}, $timevrfyend{$testnum});
+ appveyor_update_test_result($ACURL, $testnum, $error, $timeprepini{$testnum}, $timevrfyend{$testnum});
}
if($error < 0) {
@@ -6131,7 +6226,7 @@ my $sofar = time() - $start;
#
if(azure_check_environment() && $AZURE_RUN_ID) {
- $AZURE_RUN_ID = azure_update_test_run($VCURL, $AZURE_RUN_ID);
+ $AZURE_RUN_ID = azure_update_test_run($ACURL, $AZURE_RUN_ID);
}
# Tests done, stop the servers
@@ -6149,7 +6244,7 @@ if($all) {
if($skipped && !$short) {
my $s=0;
# Temporary hash to print the restraints sorted by the number
- # of their occurences
+ # of their occurrences
my %restraints;
logmsg "TESTINFO: $skipped tests were skipped due to these restraints:\n";
@@ -6191,7 +6286,7 @@ if($total) {
logmsg sprintf("TESTDONE: $ok tests out of $total reported OK: %d%%\n",
$ok/$total*100);
- if($ok != $total) {
+ if($failed && ($ok != $total)) {
logmsg "\nTESTFAIL: These test cases failed: $failed\n\n";
}
}
diff --git a/tests/secureserver.pl b/tests/secureserver.pl
index 90a9a9733..3d2ab1531 100755
--- a/tests/secureserver.pl
+++ b/tests/secureserver.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
# This is the HTTPS, FTPS, POP3S, IMAPS, SMTPS, server used for curl test
diff --git a/tests/server/CMakeLists.txt b/tests/server/CMakeLists.txt
index 8e4806b5d..bad6edf4d 100644
--- a/tests/server/CMakeLists.txt
+++ b/tests/server/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2009 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
set(TARGET_LABEL_PREFIX "Test server ")
@@ -34,6 +36,7 @@ function(SETUP_EXECUTABLE TEST_NAME) # ARGN are the files in the test
${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/curl.h"
+ ${CURL_SOURCE_DIR}/src # To be able to reach "tool_xattr.h"
)
if(USE_ARES)
include_directories(${CARES_INCLUDE_DIR})
diff --git a/tests/server/Makefile.am b/tests/server/Makefile.am
index 944cd0295..45ccf231d 100644
--- a/tests/server/Makefile.am
+++ b/tests/server/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
@@ -29,20 +31,13 @@ AUTOMAKE_OPTIONS = foreign nostdinc
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" 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_srcdir)/include \
- -I$(top_builddir)/lib \
- -I$(top_srcdir)/lib \
- -I$(top_builddir)/ares \
- -I$(top_srcdir)/ares
-else
AM_CPPFLAGS = -I$(top_srcdir)/include \
-I$(top_builddir)/lib \
-I$(top_srcdir)/lib
-endif
+
+disabled_CPPFLAGS = $(AM_CPPFLAGS) \
+ -I$(top_srcdir)/src
# Prevent LIBS from being used for all link targets
LIBS = $(BLANK_AT_MAKETIME)
@@ -62,7 +57,7 @@ CS_1 =
CS_ = $(CS_0)
checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]
+ $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl $(srcdir)/*.[ch]
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/tests/server/Makefile.in b/tests/server/Makefile.in
index 718318520..c51dcea9d 100644
--- a/tests/server/Makefile.in
+++ b/tests/server/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2009 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
VPATH = @srcdir@
@@ -117,15 +119,13 @@ noinst_PROGRAMS = getpart$(EXEEXT) resolve$(EXEEXT) rtspd$(EXEEXT) \
mqttd$(EXEEXT)
subdir = tests/server
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -153,7 +153,7 @@ CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
-am_disabled_OBJECTS = disabled.$(OBJEXT)
+am_disabled_OBJECTS = disabled-disabled.$(OBJEXT)
disabled_OBJECTS = $(am_disabled_OBJECTS)
disabled_LDADD = $(LDADD)
AM_V_lt = $(am__v_lt_@AM_V@)
@@ -165,7 +165,7 @@ am__objects_1 = ../../lib/fake_ntlm-mprintf.$(OBJEXT) \
../../lib/fake_ntlm-nonblock.$(OBJEXT) \
../../lib/fake_ntlm-strtoofft.$(OBJEXT) \
../../lib/fake_ntlm-warnless.$(OBJEXT) \
- ../../lib/fake_ntlm-curl_ctype.$(OBJEXT) \
+ ../../lib/fake_ntlm-timediff.$(OBJEXT) \
../../lib/fake_ntlm-dynbuf.$(OBJEXT) \
../../lib/fake_ntlm-strdup.$(OBJEXT) \
../../lib/fake_ntlm-curl_multibyte.$(OBJEXT)
@@ -186,7 +186,7 @@ am__objects_5 = ../../lib/getpart-mprintf.$(OBJEXT) \
../../lib/getpart-nonblock.$(OBJEXT) \
../../lib/getpart-strtoofft.$(OBJEXT) \
../../lib/getpart-warnless.$(OBJEXT) \
- ../../lib/getpart-curl_ctype.$(OBJEXT) \
+ ../../lib/getpart-timediff.$(OBJEXT) \
../../lib/getpart-dynbuf.$(OBJEXT) \
../../lib/getpart-strdup.$(OBJEXT) \
../../lib/getpart-curl_multibyte.$(OBJEXT)
@@ -204,7 +204,7 @@ am__objects_7 = ../../lib/mqttd-mprintf.$(OBJEXT) \
../../lib/mqttd-nonblock.$(OBJEXT) \
../../lib/mqttd-strtoofft.$(OBJEXT) \
../../lib/mqttd-warnless.$(OBJEXT) \
- ../../lib/mqttd-curl_ctype.$(OBJEXT) \
+ ../../lib/mqttd-timediff.$(OBJEXT) \
../../lib/mqttd-dynbuf.$(OBJEXT) \
../../lib/mqttd-strdup.$(OBJEXT) \
../../lib/mqttd-curl_multibyte.$(OBJEXT)
@@ -224,7 +224,7 @@ am__objects_10 = ../../lib/resolve-mprintf.$(OBJEXT) \
../../lib/resolve-nonblock.$(OBJEXT) \
../../lib/resolve-strtoofft.$(OBJEXT) \
../../lib/resolve-warnless.$(OBJEXT) \
- ../../lib/resolve-curl_ctype.$(OBJEXT) \
+ ../../lib/resolve-timediff.$(OBJEXT) \
../../lib/resolve-dynbuf.$(OBJEXT) \
../../lib/resolve-strdup.$(OBJEXT) \
../../lib/resolve-curl_multibyte.$(OBJEXT)
@@ -243,7 +243,7 @@ am__objects_13 = ../../lib/rtspd-mprintf.$(OBJEXT) \
../../lib/rtspd-nonblock.$(OBJEXT) \
../../lib/rtspd-strtoofft.$(OBJEXT) \
../../lib/rtspd-warnless.$(OBJEXT) \
- ../../lib/rtspd-curl_ctype.$(OBJEXT) \
+ ../../lib/rtspd-timediff.$(OBJEXT) \
../../lib/rtspd-dynbuf.$(OBJEXT) \
../../lib/rtspd-strdup.$(OBJEXT) \
../../lib/rtspd-curl_multibyte.$(OBJEXT)
@@ -262,7 +262,7 @@ am__objects_16 = ../../lib/sockfilt-mprintf.$(OBJEXT) \
../../lib/sockfilt-nonblock.$(OBJEXT) \
../../lib/sockfilt-strtoofft.$(OBJEXT) \
../../lib/sockfilt-warnless.$(OBJEXT) \
- ../../lib/sockfilt-curl_ctype.$(OBJEXT) \
+ ../../lib/sockfilt-timediff.$(OBJEXT) \
../../lib/sockfilt-dynbuf.$(OBJEXT) \
../../lib/sockfilt-strdup.$(OBJEXT) \
../../lib/sockfilt-curl_multibyte.$(OBJEXT)
@@ -283,7 +283,7 @@ am__objects_19 = ../../lib/socksd-mprintf.$(OBJEXT) \
../../lib/socksd-nonblock.$(OBJEXT) \
../../lib/socksd-strtoofft.$(OBJEXT) \
../../lib/socksd-warnless.$(OBJEXT) \
- ../../lib/socksd-curl_ctype.$(OBJEXT) \
+ ../../lib/socksd-timediff.$(OBJEXT) \
../../lib/socksd-dynbuf.$(OBJEXT) \
../../lib/socksd-strdup.$(OBJEXT) \
../../lib/socksd-curl_multibyte.$(OBJEXT)
@@ -303,7 +303,7 @@ am__objects_22 = ../../lib/sws-mprintf.$(OBJEXT) \
../../lib/sws-nonblock.$(OBJEXT) \
../../lib/sws-strtoofft.$(OBJEXT) \
../../lib/sws-warnless.$(OBJEXT) \
- ../../lib/sws-curl_ctype.$(OBJEXT) \
+ ../../lib/sws-timediff.$(OBJEXT) \
../../lib/sws-dynbuf.$(OBJEXT) ../../lib/sws-strdup.$(OBJEXT) \
../../lib/sws-curl_multibyte.$(OBJEXT)
am__objects_23 = sws-getpart.$(OBJEXT) ../../lib/sws-base64.$(OBJEXT) \
@@ -321,7 +321,7 @@ am__objects_25 = ../../lib/tftpd-mprintf.$(OBJEXT) \
../../lib/tftpd-nonblock.$(OBJEXT) \
../../lib/tftpd-strtoofft.$(OBJEXT) \
../../lib/tftpd-warnless.$(OBJEXT) \
- ../../lib/tftpd-curl_ctype.$(OBJEXT) \
+ ../../lib/tftpd-timediff.$(OBJEXT) \
../../lib/tftpd-dynbuf.$(OBJEXT) \
../../lib/tftpd-strdup.$(OBJEXT) \
../../lib/tftpd-curl_multibyte.$(OBJEXT)
@@ -352,7 +352,6 @@ DEFAULT_INCLUDES =
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
- ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po \
../../lib/$(DEPDIR)/fake_ntlm-curl_multibyte.Po \
../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Po \
../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po \
@@ -360,9 +359,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po \
../../lib/$(DEPDIR)/fake_ntlm-strdup.Po \
../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po \
+ ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po \
../../lib/$(DEPDIR)/fake_ntlm-warnless.Po \
../../lib/$(DEPDIR)/getpart-base64.Po \
- ../../lib/$(DEPDIR)/getpart-curl_ctype.Po \
../../lib/$(DEPDIR)/getpart-curl_multibyte.Po \
../../lib/$(DEPDIR)/getpart-dynbuf.Po \
../../lib/$(DEPDIR)/getpart-memdebug.Po \
@@ -370,9 +369,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/getpart-nonblock.Po \
../../lib/$(DEPDIR)/getpart-strdup.Po \
../../lib/$(DEPDIR)/getpart-strtoofft.Po \
+ ../../lib/$(DEPDIR)/getpart-timediff.Po \
../../lib/$(DEPDIR)/getpart-warnless.Po \
../../lib/$(DEPDIR)/mqttd-base64.Po \
- ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po \
../../lib/$(DEPDIR)/mqttd-curl_multibyte.Po \
../../lib/$(DEPDIR)/mqttd-dynbuf.Po \
../../lib/$(DEPDIR)/mqttd-inet_pton.Po \
@@ -381,9 +380,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/mqttd-nonblock.Po \
../../lib/$(DEPDIR)/mqttd-strdup.Po \
../../lib/$(DEPDIR)/mqttd-strtoofft.Po \
+ ../../lib/$(DEPDIR)/mqttd-timediff.Po \
../../lib/$(DEPDIR)/mqttd-warnless.Po \
../../lib/$(DEPDIR)/resolve-base64.Po \
- ../../lib/$(DEPDIR)/resolve-curl_ctype.Po \
../../lib/$(DEPDIR)/resolve-curl_multibyte.Po \
../../lib/$(DEPDIR)/resolve-dynbuf.Po \
../../lib/$(DEPDIR)/resolve-memdebug.Po \
@@ -391,9 +390,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/resolve-nonblock.Po \
../../lib/$(DEPDIR)/resolve-strdup.Po \
../../lib/$(DEPDIR)/resolve-strtoofft.Po \
+ ../../lib/$(DEPDIR)/resolve-timediff.Po \
../../lib/$(DEPDIR)/resolve-warnless.Po \
../../lib/$(DEPDIR)/rtspd-base64.Po \
- ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po \
../../lib/$(DEPDIR)/rtspd-curl_multibyte.Po \
../../lib/$(DEPDIR)/rtspd-dynbuf.Po \
../../lib/$(DEPDIR)/rtspd-memdebug.Po \
@@ -401,9 +400,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/rtspd-nonblock.Po \
../../lib/$(DEPDIR)/rtspd-strdup.Po \
../../lib/$(DEPDIR)/rtspd-strtoofft.Po \
+ ../../lib/$(DEPDIR)/rtspd-timediff.Po \
../../lib/$(DEPDIR)/rtspd-warnless.Po \
../../lib/$(DEPDIR)/sockfilt-base64.Po \
- ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po \
../../lib/$(DEPDIR)/sockfilt-curl_multibyte.Po \
../../lib/$(DEPDIR)/sockfilt-dynbuf.Po \
../../lib/$(DEPDIR)/sockfilt-inet_pton.Po \
@@ -412,9 +411,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/sockfilt-nonblock.Po \
../../lib/$(DEPDIR)/sockfilt-strdup.Po \
../../lib/$(DEPDIR)/sockfilt-strtoofft.Po \
+ ../../lib/$(DEPDIR)/sockfilt-timediff.Po \
../../lib/$(DEPDIR)/sockfilt-warnless.Po \
../../lib/$(DEPDIR)/socksd-base64.Po \
- ../../lib/$(DEPDIR)/socksd-curl_ctype.Po \
../../lib/$(DEPDIR)/socksd-curl_multibyte.Po \
../../lib/$(DEPDIR)/socksd-dynbuf.Po \
../../lib/$(DEPDIR)/socksd-inet_pton.Po \
@@ -423,9 +422,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/socksd-nonblock.Po \
../../lib/$(DEPDIR)/socksd-strdup.Po \
../../lib/$(DEPDIR)/socksd-strtoofft.Po \
+ ../../lib/$(DEPDIR)/socksd-timediff.Po \
../../lib/$(DEPDIR)/socksd-warnless.Po \
../../lib/$(DEPDIR)/sws-base64.Po \
- ../../lib/$(DEPDIR)/sws-curl_ctype.Po \
../../lib/$(DEPDIR)/sws-curl_multibyte.Po \
../../lib/$(DEPDIR)/sws-dynbuf.Po \
../../lib/$(DEPDIR)/sws-inet_pton.Po \
@@ -434,9 +433,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/sws-nonblock.Po \
../../lib/$(DEPDIR)/sws-strdup.Po \
../../lib/$(DEPDIR)/sws-strtoofft.Po \
+ ../../lib/$(DEPDIR)/sws-timediff.Po \
../../lib/$(DEPDIR)/sws-warnless.Po \
../../lib/$(DEPDIR)/tftpd-base64.Po \
- ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po \
../../lib/$(DEPDIR)/tftpd-curl_multibyte.Po \
../../lib/$(DEPDIR)/tftpd-dynbuf.Po \
../../lib/$(DEPDIR)/tftpd-memdebug.Po \
@@ -444,7 +443,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
../../lib/$(DEPDIR)/tftpd-nonblock.Po \
../../lib/$(DEPDIR)/tftpd-strdup.Po \
../../lib/$(DEPDIR)/tftpd-strtoofft.Po \
- ../../lib/$(DEPDIR)/tftpd-warnless.Po ./$(DEPDIR)/disabled.Po \
+ ../../lib/$(DEPDIR)/tftpd-timediff.Po \
+ ../../lib/$(DEPDIR)/tftpd-warnless.Po \
+ ./$(DEPDIR)/disabled-disabled.Po \
./$(DEPDIR)/fake_ntlm-fake_ntlm.Po \
./$(DEPDIR)/fake_ntlm-getpart.Po ./$(DEPDIR)/fake_ntlm-util.Po \
./$(DEPDIR)/getpart-getpart.Po ./$(DEPDIR)/getpart-testpart.Po \
@@ -554,6 +555,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -571,6 +573,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -630,6 +633,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -648,12 +652,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -720,7 +725,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -734,7 +738,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -747,11 +751,10 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
-@USE_EMBEDDED_ARES_FALSE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_FALSE@ -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_FALSE@ -I$(top_srcdir)/lib $(am__append_1)
# 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
@@ -761,19 +764,17 @@ AUTOMAKE_OPTIONS = foreign nostdinc
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" 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
-@USE_EMBEDDED_ARES_TRUE@AM_CPPFLAGS = -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 $(am__append_1)
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
+ -I$(top_srcdir)/lib $(am__append_1)
+disabled_CPPFLAGS = $(AM_CPPFLAGS) \
+ -I$(top_srcdir)/src
+
CURLX_SRCS = \
../../lib/mprintf.c \
../../lib/nonblock.c \
../../lib/strtoofft.c \
../../lib/warnless.c \
- ../../lib/curl_ctype.c \
+ ../../lib/timediff.c \
../../lib/dynbuf.c \
../../lib/strdup.c \
../../lib/curl_multibyte.c
@@ -783,6 +784,7 @@ CURLX_HDRS = \
../../lib/nonblock.h \
../../lib/strtoofft.h \
../../lib/warnless.h \
+ ../../lib/timediff.h \
../../lib/curl_ctype.h \
../../lib/dynbuf.h \
../../lib/strdup.h \
@@ -924,7 +926,7 @@ disabled$(EXEEXT): $(disabled_OBJECTS) $(disabled_DEPENDENCIES) $(EXTRA_disabled
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/fake_ntlm-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/fake_ntlm-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/fake_ntlm-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/fake_ntlm-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -948,7 +950,7 @@ fake_ntlm$(EXEEXT): $(fake_ntlm_OBJECTS) $(fake_ntlm_DEPENDENCIES) $(EXTRA_fake_
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/getpart-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/getpart-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/getpart-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/getpart-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -972,7 +974,7 @@ getpart$(EXEEXT): $(getpart_OBJECTS) $(getpart_DEPENDENCIES) $(EXTRA_getpart_DEP
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/mqttd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/mqttd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/mqttd-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/mqttd-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -998,7 +1000,7 @@ mqttd$(EXEEXT): $(mqttd_OBJECTS) $(mqttd_DEPENDENCIES) $(EXTRA_mqttd_DEPENDENCIE
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/resolve-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/resolve-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/resolve-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/resolve-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1022,7 +1024,7 @@ resolve$(EXEEXT): $(resolve_OBJECTS) $(resolve_DEPENDENCIES) $(EXTRA_resolve_DEP
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/rtspd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/rtspd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/rtspd-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/rtspd-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1046,7 +1048,7 @@ rtspd$(EXEEXT): $(rtspd_OBJECTS) $(rtspd_DEPENDENCIES) $(EXTRA_rtspd_DEPENDENCIE
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/sockfilt-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/sockfilt-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/sockfilt-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/sockfilt-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1072,7 +1074,7 @@ sockfilt$(EXEEXT): $(sockfilt_OBJECTS) $(sockfilt_DEPENDENCIES) $(EXTRA_sockfilt
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/socksd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/socksd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/socksd-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/socksd-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1098,7 +1100,7 @@ socksd$(EXEEXT): $(socksd_OBJECTS) $(socksd_DEPENDENCIES) $(EXTRA_socksd_DEPENDE
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/sws-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/sws-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/sws-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/sws-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1124,7 +1126,7 @@ sws$(EXEEXT): $(sws_OBJECTS) $(sws_DEPENDENCIES) $(EXTRA_sws_DEPENDENCIES)
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/tftpd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/tftpd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/tftpd-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
../../lib/tftpd-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1149,7 +1151,6 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po@am__quote@ # am--include-marker
@@ -1157,9 +1158,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-memdebug.Po@am__quote@ # am--include-marker
@@ -1167,9 +1168,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-inet_pton.Po@am__quote@ # am--include-marker
@@ -1178,9 +1179,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-memdebug.Po@am__quote@ # am--include-marker
@@ -1188,9 +1189,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-memdebug.Po@am__quote@ # am--include-marker
@@ -1198,9 +1199,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-inet_pton.Po@am__quote@ # am--include-marker
@@ -1209,9 +1210,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-inet_pton.Po@am__quote@ # am--include-marker
@@ -1220,9 +1221,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-inet_pton.Po@am__quote@ # am--include-marker
@@ -1231,9 +1232,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-curl_ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-curl_multibyte.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-dynbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-memdebug.Po@am__quote@ # am--include-marker
@@ -1241,8 +1242,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-nonblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-timediff.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-warnless.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disabled.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disabled-disabled.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-fake_ntlm.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-getpart.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-util.Po@am__quote@ # am--include-marker
@@ -1300,6 +1302,20 @@ am--depfiles: $(am__depfiles_remade)
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+disabled-disabled.o: disabled.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(disabled_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT disabled-disabled.o -MD -MP -MF $(DEPDIR)/disabled-disabled.Tpo -c -o disabled-disabled.o `test -f 'disabled.c' || echo '$(srcdir)/'`disabled.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/disabled-disabled.Tpo $(DEPDIR)/disabled-disabled.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='disabled.c' object='disabled-disabled.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) $(disabled_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o disabled-disabled.o `test -f 'disabled.c' || echo '$(srcdir)/'`disabled.c
+
+disabled-disabled.obj: disabled.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(disabled_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT disabled-disabled.obj -MD -MP -MF $(DEPDIR)/disabled-disabled.Tpo -c -o disabled-disabled.obj `if test -f 'disabled.c'; then $(CYGPATH_W) 'disabled.c'; else $(CYGPATH_W) '$(srcdir)/disabled.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/disabled-disabled.Tpo $(DEPDIR)/disabled-disabled.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='disabled.c' object='disabled-disabled.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) $(disabled_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o disabled-disabled.obj `if test -f 'disabled.c'; then $(CYGPATH_W) 'disabled.c'; else $(CYGPATH_W) '$(srcdir)/disabled.c'; fi`
+
../../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
@@ -1356,19 +1372,19 @@ am--depfiles: $(am__depfiles_remade)
@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 ../../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`
-../../lib/fake_ntlm-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Tpo -c -o ../../lib/fake_ntlm-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Tpo ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/fake_ntlm-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-timediff.Tpo -c -o ../../lib/fake_ntlm-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-timediff.Tpo ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/fake_ntlm-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.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-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/fake_ntlm-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Tpo -c -o ../../lib/fake_ntlm-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Tpo ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/fake_ntlm-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-timediff.Tpo -c -o ../../lib/fake_ntlm-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-timediff.Tpo ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/fake_ntlm-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/fake_ntlm-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Tpo -c -o ../../lib/fake_ntlm-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -1538,19 +1554,19 @@ 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) $(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`
-../../lib/getpart-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-curl_ctype.Tpo -c -o ../../lib/getpart-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-curl_ctype.Tpo ../../lib/$(DEPDIR)/getpart-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/getpart-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-timediff.Tpo -c -o ../../lib/getpart-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-timediff.Tpo ../../lib/$(DEPDIR)/getpart-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/getpart-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/getpart-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-curl_ctype.Tpo -c -o ../../lib/getpart-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-curl_ctype.Tpo ../../lib/$(DEPDIR)/getpart-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/getpart-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-timediff.Tpo -c -o ../../lib/getpart-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-timediff.Tpo ../../lib/$(DEPDIR)/getpart-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/getpart-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/getpart-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-dynbuf.Tpo -c -o ../../lib/getpart-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -1706,19 +1722,19 @@ 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) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-../../lib/mqttd-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-curl_ctype.Tpo -c -o ../../lib/mqttd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/mqttd-curl_ctype.Tpo ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/mqttd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/mqttd-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-timediff.Tpo -c -o ../../lib/mqttd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/mqttd-timediff.Tpo ../../lib/$(DEPDIR)/mqttd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/mqttd-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/mqttd-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-curl_ctype.Tpo -c -o ../../lib/mqttd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/mqttd-curl_ctype.Tpo ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/mqttd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/mqttd-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-timediff.Tpo -c -o ../../lib/mqttd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/mqttd-timediff.Tpo ../../lib/$(DEPDIR)/mqttd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/mqttd-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/mqttd-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-dynbuf.Tpo -c -o ../../lib/mqttd-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -1902,19 +1918,19 @@ mqttd-mqttd.obj: mqttd.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 ../../lib/resolve-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-../../lib/resolve-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-curl_ctype.Tpo -c -o ../../lib/resolve-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-curl_ctype.Tpo ../../lib/$(DEPDIR)/resolve-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/resolve-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-timediff.Tpo -c -o ../../lib/resolve-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-timediff.Tpo ../../lib/$(DEPDIR)/resolve-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/resolve-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/resolve-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-curl_ctype.Tpo -c -o ../../lib/resolve-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-curl_ctype.Tpo ../../lib/$(DEPDIR)/resolve-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/resolve-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-timediff.Tpo -c -o ../../lib/resolve-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-timediff.Tpo ../../lib/$(DEPDIR)/resolve-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/resolve-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/resolve-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-dynbuf.Tpo -c -o ../../lib/resolve-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2084,19 +2100,19 @@ 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) $(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`
-../../lib/rtspd-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-curl_ctype.Tpo -c -o ../../lib/rtspd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-curl_ctype.Tpo ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/rtspd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-timediff.Tpo -c -o ../../lib/rtspd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-timediff.Tpo ../../lib/$(DEPDIR)/rtspd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/rtspd-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/rtspd-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-curl_ctype.Tpo -c -o ../../lib/rtspd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-curl_ctype.Tpo ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/rtspd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-timediff.Tpo -c -o ../../lib/rtspd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-timediff.Tpo ../../lib/$(DEPDIR)/rtspd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/rtspd-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/rtspd-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-dynbuf.Tpo -c -o ../../lib/rtspd-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2266,19 +2282,19 @@ 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) $(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`
-../../lib/sockfilt-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Tpo -c -o ../../lib/sockfilt-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Tpo ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/sockfilt-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-timediff.Tpo -c -o ../../lib/sockfilt-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-timediff.Tpo ../../lib/$(DEPDIR)/sockfilt-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/sockfilt-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/sockfilt-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Tpo -c -o ../../lib/sockfilt-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Tpo ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/sockfilt-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-timediff.Tpo -c -o ../../lib/sockfilt-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-timediff.Tpo ../../lib/$(DEPDIR)/sockfilt-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/sockfilt-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/sockfilt-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-dynbuf.Tpo -c -o ../../lib/sockfilt-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2462,19 +2478,19 @@ 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) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-../../lib/socksd-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo -c -o ../../lib/socksd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo ../../lib/$(DEPDIR)/socksd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/socksd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/socksd-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-timediff.Tpo -c -o ../../lib/socksd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-timediff.Tpo ../../lib/$(DEPDIR)/socksd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/socksd-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/socksd-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo -c -o ../../lib/socksd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo ../../lib/$(DEPDIR)/socksd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/socksd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/socksd-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-timediff.Tpo -c -o ../../lib/socksd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-timediff.Tpo ../../lib/$(DEPDIR)/socksd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/socksd-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/socksd-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-dynbuf.Tpo -c -o ../../lib/socksd-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2658,19 +2674,19 @@ socksd-socksd.obj: socksd.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 ../../lib/sws-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-../../lib/sws-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-curl_ctype.Tpo -c -o ../../lib/sws-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-curl_ctype.Tpo ../../lib/$(DEPDIR)/sws-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/sws-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-timediff.Tpo -c -o ../../lib/sws-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-timediff.Tpo ../../lib/$(DEPDIR)/sws-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/sws-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/sws-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-curl_ctype.Tpo -c -o ../../lib/sws-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-curl_ctype.Tpo ../../lib/$(DEPDIR)/sws-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/sws-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-timediff.Tpo -c -o ../../lib/sws-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-timediff.Tpo ../../lib/$(DEPDIR)/sws-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/sws-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/sws-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-dynbuf.Tpo -c -o ../../lib/sws-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2854,19 +2870,19 @@ 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) $(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`
-../../lib/tftpd-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-curl_ctype.Tpo -c -o ../../lib/tftpd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-curl_ctype.Tpo ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/tftpd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-timediff.Tpo -c -o ../../lib/tftpd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-timediff.Tpo ../../lib/$(DEPDIR)/tftpd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/tftpd-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
-../../lib/tftpd-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-curl_ctype.Tpo -c -o ../../lib/tftpd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-curl_ctype.Tpo ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/tftpd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-timediff.Tpo -c -o ../../lib/tftpd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-timediff.Tpo ../../lib/$(DEPDIR)/tftpd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/tftpd-timediff.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.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-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
../../lib/tftpd-dynbuf.o: ../../lib/dynbuf.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-dynbuf.Tpo -c -o ../../lib/tftpd-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -3114,7 +3130,6 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-base64.Po
- -rm -f ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po
@@ -3122,9 +3137,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-strdup.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-warnless.Po
-rm -f ../../lib/$(DEPDIR)/getpart-base64.Po
- -rm -f ../../lib/$(DEPDIR)/getpart-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/getpart-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/getpart-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/getpart-memdebug.Po
@@ -3132,9 +3147,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/getpart-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/getpart-strdup.Po
-rm -f ../../lib/$(DEPDIR)/getpart-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/getpart-timediff.Po
-rm -f ../../lib/$(DEPDIR)/getpart-warnless.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-base64.Po
- -rm -f ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-inet_pton.Po
@@ -3143,9 +3158,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/mqttd-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-strdup.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/mqttd-timediff.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-warnless.Po
-rm -f ../../lib/$(DEPDIR)/resolve-base64.Po
- -rm -f ../../lib/$(DEPDIR)/resolve-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/resolve-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/resolve-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/resolve-memdebug.Po
@@ -3153,9 +3168,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/resolve-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/resolve-strdup.Po
-rm -f ../../lib/$(DEPDIR)/resolve-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/resolve-timediff.Po
-rm -f ../../lib/$(DEPDIR)/resolve-warnless.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-base64.Po
- -rm -f ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-memdebug.Po
@@ -3163,9 +3178,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/rtspd-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-strdup.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/rtspd-timediff.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-warnless.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-base64.Po
- -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po
@@ -3174,9 +3189,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/sockfilt-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-strdup.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/sockfilt-timediff.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-warnless.Po
-rm -f ../../lib/$(DEPDIR)/socksd-base64.Po
- -rm -f ../../lib/$(DEPDIR)/socksd-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/socksd-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/socksd-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/socksd-inet_pton.Po
@@ -3185,9 +3200,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/socksd-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/socksd-strdup.Po
-rm -f ../../lib/$(DEPDIR)/socksd-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/socksd-timediff.Po
-rm -f ../../lib/$(DEPDIR)/socksd-warnless.Po
-rm -f ../../lib/$(DEPDIR)/sws-base64.Po
- -rm -f ../../lib/$(DEPDIR)/sws-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/sws-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/sws-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/sws-inet_pton.Po
@@ -3196,9 +3211,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/sws-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/sws-strdup.Po
-rm -f ../../lib/$(DEPDIR)/sws-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/sws-timediff.Po
-rm -f ../../lib/$(DEPDIR)/sws-warnless.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-base64.Po
- -rm -f ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-memdebug.Po
@@ -3206,8 +3221,9 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/tftpd-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-strdup.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/tftpd-timediff.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-warnless.Po
- -rm -f ./$(DEPDIR)/disabled.Po
+ -rm -f ./$(DEPDIR)/disabled-disabled.Po
-rm -f ./$(DEPDIR)/fake_ntlm-fake_ntlm.Po
-rm -f ./$(DEPDIR)/fake_ntlm-getpart.Po
-rm -f ./$(DEPDIR)/fake_ntlm-util.Po
@@ -3280,7 +3296,6 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-base64.Po
- -rm -f ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po
@@ -3288,9 +3303,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-strdup.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po
-rm -f ../../lib/$(DEPDIR)/fake_ntlm-warnless.Po
-rm -f ../../lib/$(DEPDIR)/getpart-base64.Po
- -rm -f ../../lib/$(DEPDIR)/getpart-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/getpart-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/getpart-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/getpart-memdebug.Po
@@ -3298,9 +3313,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/getpart-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/getpart-strdup.Po
-rm -f ../../lib/$(DEPDIR)/getpart-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/getpart-timediff.Po
-rm -f ../../lib/$(DEPDIR)/getpart-warnless.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-base64.Po
- -rm -f ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-inet_pton.Po
@@ -3309,9 +3324,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/mqttd-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-strdup.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/mqttd-timediff.Po
-rm -f ../../lib/$(DEPDIR)/mqttd-warnless.Po
-rm -f ../../lib/$(DEPDIR)/resolve-base64.Po
- -rm -f ../../lib/$(DEPDIR)/resolve-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/resolve-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/resolve-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/resolve-memdebug.Po
@@ -3319,9 +3334,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/resolve-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/resolve-strdup.Po
-rm -f ../../lib/$(DEPDIR)/resolve-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/resolve-timediff.Po
-rm -f ../../lib/$(DEPDIR)/resolve-warnless.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-base64.Po
- -rm -f ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-memdebug.Po
@@ -3329,9 +3344,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/rtspd-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-strdup.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/rtspd-timediff.Po
-rm -f ../../lib/$(DEPDIR)/rtspd-warnless.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-base64.Po
- -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po
@@ -3340,9 +3355,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/sockfilt-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-strdup.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/sockfilt-timediff.Po
-rm -f ../../lib/$(DEPDIR)/sockfilt-warnless.Po
-rm -f ../../lib/$(DEPDIR)/socksd-base64.Po
- -rm -f ../../lib/$(DEPDIR)/socksd-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/socksd-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/socksd-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/socksd-inet_pton.Po
@@ -3351,9 +3366,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/socksd-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/socksd-strdup.Po
-rm -f ../../lib/$(DEPDIR)/socksd-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/socksd-timediff.Po
-rm -f ../../lib/$(DEPDIR)/socksd-warnless.Po
-rm -f ../../lib/$(DEPDIR)/sws-base64.Po
- -rm -f ../../lib/$(DEPDIR)/sws-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/sws-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/sws-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/sws-inet_pton.Po
@@ -3362,9 +3377,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/sws-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/sws-strdup.Po
-rm -f ../../lib/$(DEPDIR)/sws-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/sws-timediff.Po
-rm -f ../../lib/$(DEPDIR)/sws-warnless.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-base64.Po
- -rm -f ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-curl_multibyte.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-dynbuf.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-memdebug.Po
@@ -3372,8 +3387,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/tftpd-nonblock.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-strdup.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-strtoofft.Po
+ -rm -f ../../lib/$(DEPDIR)/tftpd-timediff.Po
-rm -f ../../lib/$(DEPDIR)/tftpd-warnless.Po
- -rm -f ./$(DEPDIR)/disabled.Po
+ -rm -f ./$(DEPDIR)/disabled-disabled.Po
-rm -f ./$(DEPDIR)/fake_ntlm-fake_ntlm.Po
-rm -f ./$(DEPDIR)/fake_ntlm-getpart.Po
-rm -f ./$(DEPDIR)/fake_ntlm-util.Po
@@ -3438,7 +3454,7 @@ uninstall-am:
checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]
+ $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl $(srcdir)/*.[ch]
# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc
diff --git a/tests/server/Makefile.inc b/tests/server/Makefile.inc
index 35d4dbaa1..ccc65d2b8 100644
--- a/tests/server/Makefile.inc
+++ b/tests/server/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2009 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
noinst_PROGRAMS = getpart resolve rtspd sockfilt sws tftpd fake_ntlm \
@@ -28,7 +30,7 @@ CURLX_SRCS = \
../../lib/nonblock.c \
../../lib/strtoofft.c \
../../lib/warnless.c \
- ../../lib/curl_ctype.c \
+ ../../lib/timediff.c \
../../lib/dynbuf.c \
../../lib/strdup.c \
../../lib/curl_multibyte.c
@@ -38,6 +40,7 @@ CURLX_HDRS = \
../../lib/nonblock.h \
../../lib/strtoofft.h \
../../lib/warnless.h \
+ ../../lib/timediff.h \
../../lib/curl_ctype.h \
../../lib/dynbuf.h \
../../lib/strdup.h \
diff --git a/tests/server/base64.pl b/tests/server/base64.pl
index e1b88cf58..b0252551e 100755
--- a/tests/server/base64.pl
+++ b/tests/server/base64.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2004 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2004 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
use MIME::Base64 qw(encode_base64);
diff --git a/tests/server/disabled.c b/tests/server/disabled.c
index 6f7c10f18..8a4a17ce5 100644
--- a/tests/server/disabled.c
+++ b/tests/server/disabled.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
/*
@@ -31,6 +33,7 @@
#include "curl_setup.h"
#include "multihandle.h" /* for ENABLE_WAKEUP */
+#include "tool_xattr.h" /* for USE_XATTR */
#include <stdio.h>
static const char *disabled[]={
@@ -70,6 +73,12 @@ static const char *disabled[]={
#ifndef ENABLE_WAKEUP
"wakeup",
#endif
+#ifdef CURL_DISABLE_HEADERS_API
+ "headers-api",
+#endif
+#ifndef USE_XATTR
+ "xattr",
+#endif
NULL
};
diff --git a/tests/server/fake_ntlm.c b/tests/server/fake_ntlm.c
index ae281ca1c..976096a9c 100644
--- a/tests/server/fake_ntlm.c
+++ b/tests/server/fake_ntlm.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2010, Mandy Wu, <mandy.wu@intel.com>
- * Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
diff --git a/tests/server/getpart.c b/tests/server/getpart.c
index 32b55bc61..fb54bfe8b 100644
--- a/tests/server/getpart.c
+++ b/tests/server/getpart.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
@@ -96,6 +98,33 @@ CURLcode Curl_convert_clone(struct Curl_easy *data,
}
/*
+ * line_length()
+ *
+ * Counts the number of characters in a line including a new line.
+ * Unlike strlen() it does not stop at nul bytes.
+ *
+ */
+static size_t line_length(const char *buffer, int bytestocheck)
+{
+ size_t length = 1;
+
+ while(*buffer != '\n' && --bytestocheck) {
+ length++;
+ buffer++;
+ }
+ if(*buffer != '\n') {
+ /*
+ * We didn't find a new line so the last byte must be a
+ * '\0' character inserted by fgets() which we should not
+ * count.
+ */
+ length--;
+ }
+
+ return length;
+}
+
+/*
* readline()
*
* Reads a complete line from a file into a dynamically allocated buffer.
@@ -113,7 +142,8 @@ CURLcode Curl_convert_clone(struct Curl_easy *data,
* GPE_OK
*/
-static int readline(char **buffer, size_t *bufsize, FILE *stream)
+static int readline(char **buffer, size_t *bufsize, size_t *length,
+ FILE *stream)
{
size_t offset = 0;
char *newptr;
@@ -126,17 +156,16 @@ static int readline(char **buffer, size_t *bufsize, FILE *stream)
}
for(;;) {
- size_t length;
int bytestoread = curlx_uztosi(*bufsize - offset);
if(!fgets(*buffer + offset, bytestoread, stream))
return (offset != 0) ? GPE_OK : GPE_END_OF_FILE;
- length = offset + strlen(*buffer + offset);
- if(*(*buffer + length - 1) == '\n')
+ *length = offset + line_length(*buffer + offset, bytestoread);
+ if(*(*buffer + *length - 1) == '\n')
break;
- offset = length;
- if(length < *bufsize - 1)
+ offset = *length;
+ if(*length < *bufsize - 1)
continue;
newptr = realloc(*buffer, *bufsize * 2);
@@ -179,10 +208,10 @@ static int appenddata(char **dst_buf, /* dest buffer */
size_t *dst_len, /* dest buffer data length */
size_t *dst_alloc, /* dest buffer allocated size */
char *src_buf, /* source buffer */
+ size_t src_len, /* source buffer length */
int src_b64) /* != 0 if source is base64 encoded */
{
size_t need_alloc = 0;
- size_t src_len = strlen(src_buf);
if(!src_len)
return GPE_OK;
@@ -293,8 +322,10 @@ int getpart(char **outbuf, size_t *outlen,
} len;
size_t bufsize = 0;
size_t outalloc = 256;
+ size_t datalen;
int in_wanted_part = 0;
int base64 = 0;
+ int nonewline = 0;
int error;
enum {
@@ -313,7 +344,7 @@ int getpart(char **outbuf, size_t *outlen,
couter[0] = cmain[0] = csub[0] = ptag[0] = patt[0] = '\0';
- while((error = readline(&buffer, &bufsize, stream)) == GPE_OK) {
+ while((error = readline(&buffer, &bufsize, &datalen, stream)) == GPE_OK) {
ptr = buffer;
EAT_SPACE(ptr);
@@ -321,7 +352,8 @@ int getpart(char **outbuf, size_t *outlen,
if('<' != *ptr) {
if(in_wanted_part) {
show(("=> %s", buffer));
- error = appenddata(outbuf, outlen, &outalloc, buffer, base64);
+ error = appenddata(outbuf, outlen, &outalloc, buffer, datalen,
+ base64);
if(error)
break;
}
@@ -360,6 +392,8 @@ int getpart(char **outbuf, size_t *outlen,
if(error)
return error;
}
+ if(nonewline)
+ (*outlen)--;
break;
}
}
@@ -377,6 +411,8 @@ int getpart(char **outbuf, size_t *outlen,
if(error)
return error;
}
+ if(nonewline)
+ (*outlen)--;
break;
}
}
@@ -451,6 +487,10 @@ int getpart(char **outbuf, size_t *outlen,
/* bit rough test, but "mostly" functional, */
/* treat wanted part data as base64 encoded */
base64 = 1;
+ if(strstr(patt, "nonewline=")) {
+ show(("* setting nonewline\n"));
+ nonewline = 1;
+ }
}
continue;
}
@@ -459,7 +499,7 @@ int getpart(char **outbuf, size_t *outlen,
if(in_wanted_part) {
show(("=> %s", buffer));
- error = appenddata(outbuf, outlen, &outalloc, buffer, base64);
+ error = appenddata(outbuf, outlen, &outalloc, buffer, datalen, base64);
if(error)
break;
}
diff --git a/tests/server/getpart.h b/tests/server/getpart.h
index 211139205..bb71c2d2d 100644
--- a/tests/server/getpart.h
+++ b/tests/server/getpart.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
diff --git a/tests/server/mqttd.c b/tests/server/mqttd.c
index 600497ba0..d653917ef 100644
--- a/tests/server/mqttd.c
+++ b/tests/server/mqttd.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
#include <stdlib.h>
diff --git a/tests/server/resolve.c b/tests/server/resolve.c
index 6905b7e78..492ffdeef 100644
--- a/tests/server/resolve.c
+++ b/tests/server/resolve.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
diff --git a/tests/server/rtspd.c b/tests/server/rtspd.c
index 88f96a08f..32ab0afb0 100644
--- a/tests/server/rtspd.c
+++ b/tests/server/rtspd.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
diff --git a/tests/server/server_setup.h b/tests/server/server_setup.h
index e406a3d83..8c642e5d8 100644
--- a/tests/server/server_setup.h
+++ b/tests/server/server_setup.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#define CURL_NO_OLDIES
diff --git a/tests/server/server_sockaddr.h b/tests/server/server_sockaddr.h
index e72531179..024cf70dd 100644
--- a/tests/server/server_sockaddr.h
+++ b/tests/server/server_sockaddr.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c
index ccd9c4782..39cca069f 100644
--- a/tests/server/sockfilt.c
+++ b/tests/server/sockfilt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
@@ -107,6 +109,7 @@
#include "inet_pton.h"
#include "util.h"
#include "server_sockaddr.h"
+#include "timediff.h"
#include "warnless.h"
/* include memdebug.h last */
@@ -401,13 +404,17 @@ static void lograw(unsigned char *buffer, ssize_t len)
struct select_ws_wait_data {
HANDLE handle; /* actual handle to wait for during select */
HANDLE signal; /* internal event to signal handle trigger */
- HANDLE abort; /* internal event to abort waiting thread */
- HANDLE mutex; /* mutex to prevent event race-condition */
+ HANDLE abort; /* internal event to abort waiting threads */
};
+#ifdef _WIN32_WCE
static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
+#else
+#include <process.h>
+static unsigned int WINAPI select_ws_wait_thread(void *lpParameter)
+#endif
{
struct select_ws_wait_data *data;
- HANDLE mutex, signal, handle, handles[2];
+ HANDLE signal, handle, handles[2];
INPUT_RECORD inputrecord;
LARGE_INTEGER size, pos;
DWORD type, length, ret;
@@ -419,7 +426,6 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
handles[0] = data->abort;
handles[1] = handle;
signal = data->signal;
- mutex = data->mutex;
free(data);
}
else
@@ -439,41 +445,29 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
*/
while(WaitForMultipleObjectsEx(1, handles, FALSE, 0, FALSE)
== WAIT_TIMEOUT) {
- ret = WaitForSingleObjectEx(mutex, 0, FALSE);
- if(ret == WAIT_OBJECT_0) {
- /* 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);
- ReleaseMutex(mutex);
- continue;
- }
+ /* 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 */
- logmsg("[select_ws_wait_thread] data available, DISK: %p", handle);
- SetEvent(signal);
- ReleaseMutex(mutex);
- break;
- }
- else if(ret == WAIT_ABANDONED) {
- /* we are not allowed to process this event, because select_ws
- is post-processing the signalled events and we must exit. */
- break;
}
+ /* there is some data available, stop waiting */
+ logmsg("[select_ws_wait_thread] data available, DISK: %p", handle);
+ SetEvent(signal);
}
break;
@@ -487,33 +481,22 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
*/
while(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
== WAIT_OBJECT_0 + 1) {
- ret = WaitForSingleObjectEx(mutex, 0, FALSE);
- if(ret == WAIT_OBJECT_0) {
- /* check if this is an actual console handle */
- if(GetConsoleMode(handle, &ret)) {
- /* 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);
- ReleaseMutex(mutex);
- continue;
- }
+ /* check if this is an actual console handle */
+ if(GetConsoleMode(handle, &ret)) {
+ /* 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 */
- logmsg("[select_ws_wait_thread] data available, CHAR: %p", handle);
- SetEvent(signal);
- ReleaseMutex(mutex);
- break;
- }
- else if(ret == WAIT_ABANDONED) {
- /* we are not allowed to process this event, because select_ws
- is post-processing the signalled events and we must exit. */
- break;
}
+ /* there is some data available, stop waiting */
+ logmsg("[select_ws_wait_thread] data available, CHAR: %p", handle);
+ SetEvent(signal);
}
break;
@@ -527,45 +510,33 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
*/
while(WaitForMultipleObjectsEx(1, handles, FALSE, 0, FALSE)
== WAIT_TIMEOUT) {
- ret = WaitForSingleObjectEx(mutex, 0, FALSE);
- if(ret == WAIT_OBJECT_0) {
- /* 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);
- ReleaseMutex(mutex);
- continue;
- }
- else {
- logmsg("[select_ws_wait_thread] PeekNamedPipe len: %d", length);
- }
+ /* 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 NOT been closed, sleep and continue waiting */
- ret = GetLastError();
- if(ret != ERROR_BROKEN_PIPE) {
- logmsg("[select_ws_wait_thread] PeekNamedPipe error: %d", ret);
- SleepEx(0, FALSE);
- ReleaseMutex(mutex);
- continue;
- }
- else {
- logmsg("[select_ws_wait_thread] pipe closed, PIPE: %p", handle);
- }
+ logmsg("[select_ws_wait_thread] PeekNamedPipe len: %d", length);
}
- /* there is some data available, stop waiting */
- logmsg("[select_ws_wait_thread] data available, PIPE: %p", handle);
- SetEvent(signal);
- ReleaseMutex(mutex);
- break;
}
- else if(ret == WAIT_ABANDONED) {
- /* we are not allowed to process this event, because select_ws
- is post-processing the signalled events and we must exit. */
- break;
+ else {
+ /* if the pipe has NOT been closed, sleep and continue waiting */
+ ret = GetLastError();
+ if(ret != ERROR_BROKEN_PIPE) {
+ logmsg("[select_ws_wait_thread] PeekNamedPipe error: %d", ret);
+ SleepEx(0, FALSE);
+ continue;
+ }
+ else {
+ logmsg("[select_ws_wait_thread] pipe closed, PIPE: %p", handle);
+ }
}
+ /* there is some data available, stop waiting */
+ logmsg("[select_ws_wait_thread] data available, PIPE: %p", handle);
+ SetEvent(signal);
}
break;
@@ -573,22 +544,25 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
/* The handle has an unknown type, try to wait on it */
if(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
== WAIT_OBJECT_0 + 1) {
- if(WaitForSingleObjectEx(mutex, 0, FALSE) == WAIT_OBJECT_0) {
- logmsg("[select_ws_wait_thread] data available, HANDLE: %p", handle);
- SetEvent(signal);
- ReleaseMutex(mutex);
- }
+ logmsg("[select_ws_wait_thread] data available, HANDLE: %p", handle);
+ SetEvent(signal);
}
break;
}
return 0;
}
-static HANDLE select_ws_wait(HANDLE handle, HANDLE signal,
- HANDLE abort, HANDLE mutex)
+static HANDLE select_ws_wait(HANDLE handle, HANDLE signal, HANDLE abort)
{
+#ifdef _WIN32_WCE
+ typedef HANDLE curl_win_thread_handle_t;
+#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+ typedef unsigned long curl_win_thread_handle_t;
+#else
+ typedef uintptr_t curl_win_thread_handle_t;
+#endif
struct select_ws_wait_data *data;
- HANDLE thread = NULL;
+ curl_win_thread_handle_t thread;
/* allocate internal waiting data structure */
data = malloc(sizeof(struct select_ws_wait_data));
@@ -596,20 +570,21 @@ static HANDLE select_ws_wait(HANDLE handle, HANDLE signal,
data->handle = handle;
data->signal = signal;
data->abort = abort;
- data->mutex = mutex;
/* launch waiting thread */
- thread = CreateThread(NULL, 0,
- &select_ws_wait_thread,
- data, 0, NULL);
+#ifdef _WIN32_WCE
+ thread = CreateThread(NULL, 0, &select_ws_wait_thread, data, 0, NULL);
+#else
+ thread = _beginthreadex(NULL, 0, &select_ws_wait_thread, data, 0, NULL);
+#endif
/* free data if thread failed to launch */
if(!thread) {
free(data);
}
+ return (HANDLE)thread;
}
-
- return thread;
+ return NULL;
}
struct select_ws_data {
int fd; /* provided file descriptor (indexed by nfd) */
@@ -622,8 +597,8 @@ struct select_ws_data {
static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *tv)
{
- HANDLE abort, mutex, signal, handle, *handles;
DWORD timeout_ms, wait, nfd, nth, nws, i;
+ HANDLE abort, signal, handle, *handles;
fd_set readsock, writesock, exceptsock;
struct select_ws_data *data;
WSANETWORKEVENTS wsaevents;
@@ -639,7 +614,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
/* convert struct timeval to milliseconds */
if(tv) {
- timeout_ms = (tv->tv_sec*1000) + (DWORD)(((double)tv->tv_usec)/1000.0);
+ timeout_ms = (DWORD)curlx_tvtoms(tv);
}
else {
timeout_ms = INFINITE;
@@ -658,19 +633,10 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
return -1;
}
- /* create internal mutex to lock event handling in threads */
- mutex = CreateMutex(NULL, FALSE, NULL);
- if(!mutex) {
- CloseHandle(abort);
- errno = ENOMEM;
- return -1;
- }
-
/* allocate internal array for the internal data */
data = calloc(nfds, sizeof(struct select_ws_data));
if(!data) {
CloseHandle(abort);
- CloseHandle(mutex);
errno = ENOMEM;
return -1;
}
@@ -679,7 +645,6 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
handles = calloc(nfds + 1, sizeof(HANDLE));
if(!handles) {
CloseHandle(abort);
- CloseHandle(mutex);
free(data);
errno = ENOMEM;
return -1;
@@ -720,7 +685,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
signal = CreateEvent(NULL, TRUE, FALSE, NULL);
if(signal) {
handle = GetStdHandle(STD_INPUT_HANDLE);
- handle = select_ws_wait(handle, signal, abort, mutex);
+ handle = select_ws_wait(handle, signal, abort);
if(handle) {
handles[nfd] = signal;
data[nth].signal = signal;
@@ -774,7 +739,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
signal = CreateEvent(NULL, TRUE, FALSE, NULL);
if(signal) {
handle = (HANDLE)wsasock;
- handle = select_ws_wait(handle, signal, abort, mutex);
+ handle = select_ws_wait(handle, signal, abort);
if(handle) {
handles[nfd] = signal;
data[nth].signal = signal;
@@ -805,8 +770,12 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
/* wait for one of the internal handles to trigger */
wait = WaitForMultipleObjectsEx(wait, handles, FALSE, timeout_ms, FALSE);
- /* wait for internal mutex to lock event handling in threads */
- WaitForSingleObjectEx(mutex, INFINITE, FALSE);
+ /* signal the abort event handle and join the other waiting threads */
+ SetEvent(abort);
+ for(i = 0; i < nth; i++) {
+ WaitForSingleObjectEx(data[i].thread, INFINITE, FALSE);
+ CloseHandle(data[i].thread);
+ }
/* loop over the internal handles returned in the descriptors */
ret = 0; /* number of ready file descriptors */
@@ -865,9 +834,6 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
}
}
- /* signal the event handle for the other waiting threads */
- SetEvent(abort);
-
for(fd = 0; fd < nfds; fd++) {
if(FD_ISSET(fd, readfds))
logmsg("[select_ws] %d is readable", fd);
@@ -883,13 +849,9 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
}
for(i = 0; i < nth; i++) {
- WaitForSingleObjectEx(data[i].thread, INFINITE, FALSE);
- CloseHandle(data[i].thread);
CloseHandle(data[i].signal);
}
-
CloseHandle(abort);
- CloseHandle(mutex);
free(handles);
free(data);
diff --git a/tests/server/socksd.c b/tests/server/socksd.c
index 6867141e3..d49efcf80 100644
--- a/tests/server/socksd.c
+++ b/tests/server/socksd.c
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
#include <stdlib.h>
@@ -140,13 +142,10 @@ struct configurable {
static struct configurable config;
const char *serverlogfile = DEFAULT_LOGFILE;
-const char *reqlogfile = DEFAULT_REQFILE;
+static const char *reqlogfile = DEFAULT_REQFILE;
static const char *configfile = DEFAULT_CONFIG;
-#ifdef ENABLE_IPV6
-static bool use_ipv6 = FALSE;
-#endif
-static const char *ipv_inuse = "IPv4";
+static const char *socket_type = "IPv4";
static unsigned short port = DEFAULT_PORT;
static void resetdefaults(void)
@@ -177,6 +176,16 @@ static unsigned short shortval(char *value)
return num & 0xffff;
}
+static enum {
+ socket_domain_inet = AF_INET
+#ifdef ENABLE_IPV6
+ , socket_domain_inet6 = AF_INET6
+#endif
+#ifdef USE_UNIX_SOCKETS
+ , socket_domain_unix = AF_UNIX
+#endif
+} socket_domain = AF_INET;
+
static void getconfig(void)
{
FILE *fp = fopen(configfile, FOPEN_READTEXT);
@@ -777,7 +786,11 @@ static bool incoming(curl_socket_t listenfd)
}
static curl_socket_t sockdaemon(curl_socket_t sock,
- unsigned short *listenport)
+ unsigned short *listenport
+#ifdef USE_UNIX_SOCKETS
+ , const char *unix_socket
+#endif
+ )
{
/* passive daemon style */
srvr_sockaddr_union_t listener;
@@ -828,24 +841,29 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
/* When the specified listener port is zero, it is actually a
request to let the system choose a non-zero available port. */
+ switch(socket_domain) {
+ case AF_INET:
+ memset(&listener.sa4, 0, sizeof(listener.sa4));
+ listener.sa4.sin_family = AF_INET;
+ listener.sa4.sin_addr.s_addr = INADDR_ANY;
+ listener.sa4.sin_port = htons(*listenport);
+ rc = bind(sock, &listener.sa, sizeof(listener.sa4));
+ break;
#ifdef ENABLE_IPV6
- if(!use_ipv6) {
+ case AF_INET6:
+ memset(&listener.sa6, 0, sizeof(listener.sa6));
+ listener.sa6.sin6_family = AF_INET6;
+ listener.sa6.sin6_addr = in6addr_any;
+ listener.sa6.sin6_port = htons(*listenport);
+ rc = bind(sock, &listener.sa, sizeof(listener.sa6));
+ break;
+#endif /* ENABLE_IPV6 */
+#ifdef USE_UNIX_SOCKETS
+ case AF_UNIX:
+ rc = bind_unix_socket(sock, unix_socket, &listener.sau);
#endif
- memset(&listener.sa4, 0, sizeof(listener.sa4));
- listener.sa4.sin_family = AF_INET;
- listener.sa4.sin_addr.s_addr = INADDR_ANY;
- listener.sa4.sin_port = htons(*listenport);
- rc = bind(sock, &listener.sa, sizeof(listener.sa4));
-#ifdef ENABLE_IPV6
- }
- else {
- memset(&listener.sa6, 0, sizeof(listener.sa6));
- listener.sa6.sin6_family = AF_INET6;
- listener.sa6.sin6_addr = in6addr_any;
- listener.sa6.sin6_port = htons(*listenport);
- rc = bind(sock, &listener.sa, sizeof(listener.sa6));
}
-#endif /* ENABLE_IPV6 */
+
if(rc) {
error = SOCKERRNO;
logmsg("Error binding socket on port %hu: (%d) %s",
@@ -854,19 +872,21 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
return CURL_SOCKET_BAD;
}
- if(!*listenport) {
+ if(!*listenport
+#ifdef USE_UNIX_SOCKETS
+ && !unix_socket
+#endif
+ ) {
/* The system was supposed to choose a port number, figure out which
port we actually got and update the listener port value with it. */
curl_socklen_t la_size;
srvr_sockaddr_union_t localaddr;
#ifdef ENABLE_IPV6
- if(!use_ipv6)
-#endif
- la_size = sizeof(localaddr.sa4);
-#ifdef ENABLE_IPV6
- else
+ if(socket_domain == AF_INET6)
la_size = sizeof(localaddr.sa6);
+ else
#endif
+ la_size = sizeof(localaddr.sa4);
memset(&localaddr.sa, 0, (size_t)la_size);
if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
error = SOCKERRNO;
@@ -924,6 +944,11 @@ int main(int argc, char *argv[])
int error;
int arg = 1;
+#ifdef USE_UNIX_SOCKETS
+ const char *unix_socket = NULL;
+ bool unlink_socket = false;
+#endif
+
while(argc>arg) {
if(!strcmp("--version", argv[arg])) {
printf("socksd IPv4%s\n",
@@ -972,19 +997,36 @@ int main(int argc, char *argv[])
}
else if(!strcmp("--ipv6", argv[arg])) {
#ifdef ENABLE_IPV6
- ipv_inuse = "IPv6";
- use_ipv6 = TRUE;
+ socket_domain = AF_INET6;
+ socket_type = "IPv6";
#endif
arg++;
}
else if(!strcmp("--ipv4", argv[arg])) {
/* for completeness, we support this option as well */
#ifdef ENABLE_IPV6
- ipv_inuse = "IPv4";
- use_ipv6 = FALSE;
+ socket_type = "IPv4";
#endif
arg++;
}
+ else if(!strcmp("--unix-socket", argv[arg])) {
+ arg++;
+ if(argc>arg) {
+#ifdef USE_UNIX_SOCKETS
+ struct sockaddr_un sau;
+ unix_socket = argv[arg];
+ if(strlen(unix_socket) >= sizeof(sau.sun_path)) {
+ fprintf(stderr,
+ "socksd: socket path must be shorter than %zu chars\n",
+ sizeof(sau.sun_path));
+ return 0;
+ }
+ socket_domain = AF_UNIX;
+ socket_type = "unix";
+#endif
+ arg++;
+ }
+ }
else if(!strcmp("--port", argv[arg])) {
arg++;
if(argc>arg) {
@@ -1006,6 +1048,7 @@ int main(int argc, char *argv[])
" --reqfile [file]\n"
" --ipv4\n"
" --ipv6\n"
+ " --unix-socket [file]\n"
" --bindonly\n"
" --port [port]\n");
return 0;
@@ -1023,14 +1066,7 @@ int main(int argc, char *argv[])
install_signal_handlers(false);
-#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);
if(CURL_SOCKET_BAD == sock) {
error = SOCKERRNO;
@@ -1041,14 +1077,27 @@ int main(int argc, char *argv[])
{
/* passive daemon style */
- sock = sockdaemon(sock, &port);
+ sock = sockdaemon(sock, &port
+#ifdef USE_UNIX_SOCKETS
+ , unix_socket
+#endif
+ );
if(CURL_SOCKET_BAD == sock) {
goto socks5_cleanup;
}
+#ifdef USE_UNIX_SOCKETS
+ unlink_socket = true;
+#endif
msgsock = CURL_SOCKET_BAD; /* no stream socket yet */
}
- logmsg("Running %s version", ipv_inuse);
+ logmsg("Running %s version", socket_type);
+
+#ifdef USE_UNIX_SOCKETS
+ if(socket_domain == AF_UNIX)
+ logmsg("Listening on unix socket %s", unix_socket);
+ else
+#endif
logmsg("Listening on port %hu", port);
wrotepidfile = write_pidfile(pidname);
@@ -1075,6 +1124,13 @@ socks5_cleanup:
if(sock != CURL_SOCKET_BAD)
sclose(sock);
+#ifdef USE_UNIX_SOCKETS
+ if(unlink_socket && socket_domain == AF_UNIX) {
+ error = unlink(unix_socket);
+ logmsg("unlink(%s) = %d (%s)", unix_socket, error, strerror(error));
+ }
+#endif
+
if(wrotepidfile)
unlink(pidname);
if(wroteportfile)
diff --git a/tests/server/sws.c b/tests/server/sws.c
index 6ce0d3b9f..55c1c1d60 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
@@ -83,6 +85,8 @@ static bool is_proxy = FALSE;
#define REQBUFSIZ (2*1024*1024)
+#define MAX_SLEEP_TIME_MS 250
+
static long prevtestno = -1; /* previous test number we served */
static long prevpartno = -1; /* previous part number we served */
static bool prevbounce = FALSE; /* instructs the server to increase the part
@@ -108,7 +112,7 @@ struct httprequest {
size_t cl; /* Content-Length of the incoming request */
bool digest; /* Authorization digest header found */
bool ntlm; /* Authorization ntlm header found */
- int writedelay; /* if non-zero, delay this number of seconds between
+ int writedelay; /* if non-zero, delay this number of milliseconds between
writes in the response */
int skip; /* if non-zero, the server is instructed to not read this
many bytes from a PUT/POST request. Ie the client sends N
@@ -120,7 +124,7 @@ struct httprequest {
bool skipall; /* skip all incoming data */
bool noexpect; /* refuse Expect: (don't read the body) */
bool connmon; /* monitor the state of the connection, log disconnects */
- bool upgrade; /* test case allows upgrade to http2 */
+ bool upgrade; /* test case allows upgrade */
bool upgrade_request; /* upgrade request found and allowed */
bool close; /* similar to swsclose in response: close connection after
response is sent */
@@ -178,7 +182,7 @@ const char *cmdfile = DEFAULT_CMDFILE;
proper point - like with NTLM */
#define CMD_CONNECTIONMONITOR "connection-monitor"
-/* upgrade to http2 */
+/* upgrade to http2/websocket/xxxx */
#define CMD_UPGRADE "upgrade"
/* close connection */
@@ -307,7 +311,7 @@ static int parse_servercmd(struct httprequest *req)
req->connmon = TRUE;
}
else if(!strncmp(CMD_UPGRADE, cmd, strlen(CMD_UPGRADE))) {
- logmsg("enabled upgrade to http2");
+ logmsg("enabled upgrade");
req->upgrade = TRUE;
}
else if(!strncmp(CMD_SWSCLOSE, cmd, strlen(CMD_SWSCLOSE))) {
@@ -323,7 +327,7 @@ static int parse_servercmd(struct httprequest *req)
req->noexpect = TRUE;
}
else if(1 == sscanf(cmd, "writedelay: %d", &num)) {
- logmsg("instructed to delay %d secs between packets", num);
+ logmsg("instructed to delay %d msecs between packets", num);
req->writedelay = num;
}
else {
@@ -358,9 +362,9 @@ static int ProcessRequest(struct httprequest *req)
char *line = &req->reqbuf[req->checkindex];
bool chunked = FALSE;
static char request[REQUEST_KEYWORD_SIZE];
- static char doc[MAXDOCNAMELEN];
char logbuf[456];
- int prot_major, prot_minor;
+ int prot_major = 0;
+ int prot_minor = 0;
char *end = strstr(line, end_of_headers);
req->callcount++;
@@ -379,175 +383,168 @@ static int ProcessRequest(struct httprequest *req)
return 1; /* done */
}
- else if((req->testno == DOCNUMBER_NOTHING) &&
- sscanf(line,
- "%" REQUEST_KEYWORD_SIZE_TXT"s %" MAXDOCNAMELEN_TXT "s HTTP/%d.%d",
- request,
- doc,
- &prot_major,
- &prot_minor) == 4) {
- char *ptr;
-
- req->prot_version = prot_major*10 + prot_minor;
-
- /* find the last slash */
- ptr = strrchr(doc, '/');
+ else if(req->testno == DOCNUMBER_NOTHING) {
+ char *http;
+ bool fine = FALSE;
+ char *httppath = NULL;
+ size_t npath = 0; /* httppath length */
- /* get the number after it */
- if(ptr) {
- if((strlen(doc) + strlen(request)) < 400)
- msnprintf(logbuf, sizeof(logbuf), "Got request: %s %s HTTP/%d.%d",
- request, doc, prot_major, prot_minor);
- else
- msnprintf(logbuf, sizeof(logbuf), "Got a *HUGE* request HTTP/%d.%d",
- prot_major, prot_minor);
- logmsg("%s", logbuf);
+ if(sscanf(line,
+ "%" REQUEST_KEYWORD_SIZE_TXT"s ", request)) {
+ http = strstr(line + strlen(request), "HTTP/");
- if(!strncmp("/verifiedserver", ptr, 15)) {
- logmsg("Are-we-friendly question received");
- req->testno = DOCNUMBER_WERULEZ;
- return 1; /* done */
- }
+ if(http && sscanf(http, "HTTP/%d.%d",
+ &prot_major,
+ &prot_minor) == 2) {
+ /* between the request keyword and HTTP/ there's a path */
+ httppath = line + strlen(request);
+ npath = http - httppath;
- if(!strncmp("/quit", ptr, 5)) {
- logmsg("Request-to-quit received");
- req->testno = DOCNUMBER_QUIT;
- return 1; /* done */
+ /* trim leading spaces */
+ while(npath && ISSPACE(*httppath)) {
+ httppath++;
+ npath--;
+ }
+ /* trim ending spaces */
+ while(npath && ISSPACE(httppath[npath - 1])) {
+ npath--;
+ }
+ if(npath)
+ fine = TRUE;
}
+ }
- ptr++; /* skip the slash */
-
- /* skip all non-numericals following the slash */
- while(*ptr && !ISDIGIT(*ptr))
- ptr++;
+ if(fine) {
+ char *ptr;
- req->testno = strtol(ptr, &ptr, 10);
+ req->prot_version = prot_major*10 + prot_minor;
- if(req->testno > 10000) {
- req->partno = req->testno % 10000;
- req->testno /= 10000;
+ /* find the last slash */
+ ptr = &httppath[npath];
+ while(ptr >= httppath) {
+ if(*ptr == '/')
+ break;
+ ptr--;
}
- else
- req->partno = 0;
-
- if(req->testno) {
- msnprintf(logbuf, sizeof(logbuf), "Requested test number %ld part %ld",
- req->testno, req->partno);
+ /* get the number after it */
+ if(*ptr == '/') {
+ if((npath + strlen(request)) < 400)
+ msnprintf(logbuf, sizeof(logbuf), "Got request: %s %.*s HTTP/%d.%d",
+ request, npath, httppath, prot_major, prot_minor);
+ else
+ msnprintf(logbuf, sizeof(logbuf), "Got a *HUGE* request HTTP/%d.%d",
+ prot_major, prot_minor);
logmsg("%s", logbuf);
- }
- else {
- logmsg("No test number");
- req->testno = DOCNUMBER_NOTHING;
- }
- }
+ if(!strncmp("/verifiedserver", ptr, 15)) {
+ logmsg("Are-we-friendly question received");
+ req->testno = DOCNUMBER_WERULEZ;
+ return 1; /* done */
+ }
- if(req->testno == DOCNUMBER_NOTHING) {
- /* didn't find any in the first scan, try alternative test case
- number placements */
+ if(!strncmp("/quit", ptr, 5)) {
+ logmsg("Request-to-quit received");
+ req->testno = DOCNUMBER_QUIT;
+ return 1; /* done */
+ }
- if(sscanf(req->reqbuf, "CONNECT %" MAXDOCNAMELEN_TXT "s HTTP/%d.%d",
- doc, &prot_major, &prot_minor) == 3) {
- char *portp = NULL;
+ ptr++; /* skip the slash */
- msnprintf(logbuf, sizeof(logbuf),
- "Received a CONNECT %s HTTP/%d.%d request",
- doc, prot_major, prot_minor);
- logmsg("%s", logbuf);
+ req->testno = strtol(ptr, &ptr, 10);
- req->connect_request = TRUE;
-
- if(req->prot_version == 10)
- req->open = FALSE; /* HTTP 1.0 closes connection by default */
-
- if(doc[0] == '[') {
- char *p = &doc[1];
- unsigned long part = 0;
- /* scan through the hexgroups and store the value of the last group
- in the 'part' variable and use as test case number!! */
- while(*p && (ISXDIGIT(*p) || (*p == ':') || (*p == '.'))) {
- char *endp;
- part = strtoul(p, &endp, 16);
- if(ISXDIGIT(*p))
- p = endp;
- else
- p++;
- }
- if(*p != ']')
- logmsg("Invalid CONNECT IPv6 address format");
- else if(*(p + 1) != ':')
- logmsg("Invalid CONNECT IPv6 port format");
- else
- portp = p + 1;
-
- req->testno = part;
+ if(req->testno > 10000) {
+ req->partno = req->testno % 10000;
+ req->testno /= 10000;
}
else
- portp = strchr(doc, ':');
+ req->partno = 0;
- if(portp && (*(portp + 1) != '\0') && ISDIGIT(*(portp + 1))) {
- unsigned long ulnum = strtoul(portp + 1, NULL, 10);
- if(!ulnum || (ulnum > 65535UL))
- logmsg("Invalid CONNECT port received");
- else
- req->connect_port = curlx_ultous(ulnum);
+ if(req->testno) {
+ msnprintf(logbuf, sizeof(logbuf), "Serve test number %ld part %ld",
+ req->testno, req->partno);
+ logmsg("%s", logbuf);
+ }
+ else {
+ logmsg("No test number in path");
+ req->testno = DOCNUMBER_NOTHING;
}
- logmsg("Port number: %d, test case number: %ld",
- req->connect_port, req->testno);
- }
- }
-
- if(req->testno == DOCNUMBER_NOTHING) {
- /* Still no test case number. Try to get the number off the last dot
- instead, IE we consider the TLD to be the test number. Test 123 can
- then be written as "example.com.123". */
-
- /* find the last dot */
- ptr = strrchr(doc, '.');
-
- /* get the number after it */
- if(ptr) {
- long num;
- ptr++; /* skip the dot */
-
- num = strtol(ptr, &ptr, 10);
- if(num) {
- req->testno = num;
- if(req->testno > 10000) {
- req->partno = req->testno % 10000;
- req->testno /= 10000;
+ }
- logmsg("found test %d in requested host name", req->testno);
+ if(req->testno == DOCNUMBER_NOTHING) {
+ /* didn't find any in the first scan, try alternative test case
+ number placements */
+ static char doc[MAXDOCNAMELEN];
+ if(sscanf(req->reqbuf, "CONNECT %" MAXDOCNAMELEN_TXT "s HTTP/%d.%d",
+ doc, &prot_major, &prot_minor) == 3) {
+ char *portp = NULL;
+
+ msnprintf(logbuf, sizeof(logbuf),
+ "Received a CONNECT %s HTTP/%d.%d request",
+ doc, prot_major, prot_minor);
+ logmsg("%s", logbuf);
+
+ req->connect_request = TRUE;
+
+ if(req->prot_version == 10)
+ req->open = FALSE; /* HTTP 1.0 closes connection by default */
+
+ if(doc[0] == '[') {
+ char *p = &doc[1];
+ unsigned long part = 0;
+ /* scan through the hexgroups and store the value of the last group
+ in the 'part' variable and use as test case number!! */
+ while(*p && (ISXDIGIT(*p) || (*p == ':') || (*p == '.'))) {
+ char *endp;
+ part = strtoul(p, &endp, 16);
+ if(ISXDIGIT(*p))
+ p = endp;
+ else
+ p++;
+ }
+ if(*p != ']')
+ logmsg("Invalid CONNECT IPv6 address format");
+ else if(*(p + 1) != ':')
+ logmsg("Invalid CONNECT IPv6 port format");
+ else
+ portp = p + 1;
+ req->testno = part;
}
else
- req->partno = 0;
- }
+ portp = strchr(doc, ':');
- if(req->testno != DOCNUMBER_NOTHING) {
- logmsg("Requested test number %ld part %ld (from host name)",
- req->testno, req->partno);
+ if(portp && (*(portp + 1) != '\0') && ISDIGIT(*(portp + 1))) {
+ unsigned long ulnum = strtoul(portp + 1, NULL, 10);
+ if(!ulnum || (ulnum > 65535UL))
+ logmsg("Invalid CONNECT port received");
+ else
+ req->connect_port = curlx_ultous(ulnum);
+
+ }
+ logmsg("Port number: %d, test case number: %ld",
+ req->connect_port, req->testno);
}
}
- }
- if(req->testno == DOCNUMBER_NOTHING)
- /* might get the test number */
- parse_cmdfile(req);
+ if(req->testno == DOCNUMBER_NOTHING)
+ /* might get the test number */
+ parse_cmdfile(req);
- if(req->testno == DOCNUMBER_NOTHING) {
- logmsg("Did not find test number in PATH");
- req->testno = DOCNUMBER_404;
+ if(req->testno == DOCNUMBER_NOTHING) {
+ logmsg("Did not find test number in PATH");
+ req->testno = DOCNUMBER_404;
+ }
+ else
+ parse_servercmd(req);
+ }
+ else if((req->offset >= 3)) {
+ unsigned char *l = (unsigned char *)line;
+ logmsg("** Unusual request. Starts with %02x %02x %02x (%c%c%c)",
+ l[0], l[1], l[2], l[0], l[1], l[2]);
}
- else
- parse_servercmd(req);
- }
- else if((req->offset >= 3) && (req->testno == DOCNUMBER_NOTHING)) {
- logmsg("** Unusual request. Starts with %02x %02x %02x (%c%c%c)",
- line[0], line[1], line[2], line[0], line[1], line[2]);
}
if(!end) {
@@ -767,8 +764,9 @@ static int ProcessRequest(struct httprequest *req)
if(req->upgrade && strstr(req->reqbuf, "Upgrade:")) {
/* we allow upgrade and there was one! */
- logmsg("Found Upgrade: in request and allows it");
+ logmsg("Found Upgrade: in request and allow it");
req->upgrade_request = TRUE;
+ return 0; /* not done */
}
if(req->cl > 0) {
@@ -861,6 +859,8 @@ static void init_httprequest(struct httprequest *req)
req->upgrade_request = 0;
}
+static int send_doc(curl_socket_t sock, struct httprequest *req);
+
/* returns 1 if the connection should be serviced again immediately, 0 if there
is no data waiting, or < 0 if it should be closed */
static int get_request(curl_socket_t sock, struct httprequest *req)
@@ -870,6 +870,56 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
ssize_t got = 0;
int overflow = 0;
+ if(req->upgrade_request) {
+ /* upgraded connection, work it differently until end of connection */
+ logmsg("Upgraded connection, this is a no longer HTTP/1");
+ send_doc(sock, req);
+
+ /* dump the request received so far to the external file */
+ reqbuf[req->offset] = '\0';
+ storerequest(reqbuf, req->offset);
+ req->offset = 0;
+
+ /* read websocket traffic */
+ do {
+
+ got = sread(sock, reqbuf + req->offset, REQBUFSIZ - req->offset);
+ if(got > 0)
+ req->offset += got;
+ logmsg("Got: %d", (int)got);
+
+ if((got == -1) && ((EAGAIN == errno) || (EWOULDBLOCK == errno))) {
+ int rc;
+ fd_set input;
+ fd_set output;
+ struct timeval timeout = {1, 0}; /* 1000 ms */
+
+ FD_ZERO(&input);
+ FD_ZERO(&output);
+ got = 0;
+ FD_SET(sock, &input);
+ do {
+ logmsg("Wait until readable");
+ rc = select((int)sock + 1, &input, &output, NULL, &timeout);
+ } while(rc < 0 && errno == EINTR && !got_exit_signal);
+ logmsg("readable %d", rc);
+ if(rc)
+ got = 1;
+ }
+ } while(got > 0);
+
+ if(req->offset) {
+ logmsg("log the websocket traffic");
+ /* dump the incoming websocket traffic to the external file */
+ reqbuf[req->offset] = '\0';
+ storerequest(reqbuf, req->offset);
+ req->offset = 0;
+ }
+ init_httprequest(req);
+
+ return -1;
+ }
+
if(req->offset >= REQBUFSIZ-1) {
/* buffer is already full; do nothing */
overflow = 1;
@@ -877,7 +927,7 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
else {
if(req->skip)
/* we are instructed to not read the entire thing, so we make sure to
- only read what we're supposed to and NOT read the enire thing the
+ only read what we're supposed to and NOT read the entire thing the
client wants to send! */
got = sread(sock, reqbuf + req->offset, req->cl);
else
@@ -1126,11 +1176,18 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
buffer += written;
if(req->writedelay) {
- int quarters = req->writedelay * 4;
- logmsg("Pausing %d seconds", req->writedelay);
- while((quarters > 0) && !got_exit_signal) {
- quarters--;
- wait_ms(250);
+ int msecs_left = req->writedelay;
+ int intervals = msecs_left / MAX_SLEEP_TIME_MS;
+ if(msecs_left%MAX_SLEEP_TIME_MS)
+ intervals++;
+ logmsg("Pausing %d milliseconds after writing %d bytes",
+ msecs_left, written);
+ while((intervals > 0) && !got_exit_signal) {
+ int sleep_time = msecs_left > MAX_SLEEP_TIME_MS ?
+ MAX_SLEEP_TIME_MS : msecs_left;
+ intervals--;
+ wait_ms(sleep_time);
+ msecs_left -= sleep_time;
}
}
} while((count > 0) && !got_exit_signal);
@@ -1705,10 +1762,10 @@ http_connect_cleanup:
*infdp = CURL_SOCKET_BAD;
}
-static void http2(struct httprequest *req)
+static void http_upgrade(struct httprequest *req)
{
(void)req;
- logmsg("switched to http2");
+ logmsg("Upgraded to ... %u", req->upgrade_request);
/* left to implement */
}
@@ -1849,9 +1906,9 @@ 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;
+ /* an upgrade request, switch to another protocol here */
+ http_upgrade(req);
+ return 1;
}
/* if we got a CONNECT, loop and get another request as well! */
@@ -2066,59 +2123,7 @@ int main(int argc, char *argv[])
#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) - 1);
- rc = bind(sock, &me.sa, sizeof(me.sau));
- if(0 != rc && errno == EADDRINUSE) {
- struct_stat statbuf;
- /* socket already exists. Perhaps it is stale? */
- curl_socket_t 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;
- sclose(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. */
-#ifdef WIN32
- /* Windows does not have lstat function. */
- rc = curlx_win32_stat(unix_socket, &statbuf);
-#else
- rc = lstat(unix_socket, &statbuf);
-#endif
- if(0 != rc) {
- logmsg("Error binding socket, failed to stat %s: (%d) %s",
- unix_socket, errno, strerror(errno));
- goto sws_cleanup;
- }
-#ifdef S_IFSOCK
- 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;
- }
-#endif
- /* 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;
+ rc = bind_unix_socket(sock, unix_socket, &me.sau);
#endif /* USE_UNIX_SOCKETS */
}
if(0 != rc) {
@@ -2322,7 +2327,7 @@ int main(int argc, char *argv[])
}
/* Reset the request, unless we're still in the middle of reading */
- if(rc)
+ if(rc && !req->upgrade_request)
init_httprequest(req);
} while(rc > 0);
}
diff --git a/tests/server/testpart.c b/tests/server/testpart.c
index 1ea9c2004..f54c71281 100644
--- a/tests/server/testpart.c
+++ b/tests/server/testpart.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
diff --git a/tests/server/tftp.h b/tests/server/tftp.h
index 569967222..d8328dcf4 100644
--- a/tests/server/tftp.h
+++ b/tests/server/tftp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
diff --git a/tests/server/tftpd.c b/tests/server/tftpd.c
index 4c1585497..c97c5a71f 100644
--- a/tests/server/tftpd.c
+++ b/tests/server/tftpd.c
@@ -15,7 +15,7 @@
*/
/*
- * Copyright (C) 2005 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2005 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (c) 1983, Regents of the University of California.
* All rights reserved.
*
@@ -46,6 +46,8 @@
* 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.
+ *
+ * SPDX-License-Identifier: BSD-4-Clause-UC
*/
#include "server_setup.h"
@@ -86,6 +88,8 @@
#include <pwd.h>
#endif
+#include <ctype.h>
+
#define ENABLE_CURLX_PRINTF
/* make the curlx header define all printf() functions to use the curlx_*
versions instead */
diff --git a/tests/server/util.c b/tests/server/util.c
index 81e705c15..d2214ee6e 100644
--- a/tests/server/util.c
+++ b/tests/server/util.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
@@ -159,11 +161,10 @@ void win32_perror(const char *msg)
fprintf(stderr, "%s: ", msg);
fprintf(stderr, "%s\n", buf);
}
-#endif /* WIN32 */
-#ifdef USE_WINSOCK
void win32_init(void)
{
+#ifdef USE_WINSOCK
WORD wVersionRequested;
WSADATA wsaData;
int err;
@@ -184,14 +185,20 @@ void win32_init(void)
logmsg("No suitable winsock.dll found -- aborting");
exit(1);
}
+#endif /* USE_WINSOCK */
}
void win32_cleanup(void)
{
+#ifdef USE_WINSOCK
WSACleanup();
-}
#endif /* USE_WINSOCK */
+ /* flush buffers of all streams regardless of their mode */
+ _flushall();
+}
+#endif /* WIN32 */
+
/* set by the main code to point to where the test dir is */
const char *path = ".";
@@ -364,66 +371,8 @@ void clear_advisor_read_lock(const char *filename)
its behavior is altered by the current locale. */
static char raw_toupper(char in)
{
-#if !defined(CURL_DOES_CONVERSIONS)
if(in >= 'a' && in <= 'z')
return (char)('A' + in - 'a');
-#else
- switch(in) {
- case 'a':
- return 'A';
- case 'b':
- return 'B';
- case 'c':
- return 'C';
- case 'd':
- return 'D';
- case 'e':
- return 'E';
- case 'f':
- return 'F';
- case 'g':
- return 'G';
- case 'h':
- return 'H';
- case 'i':
- return 'I';
- case 'j':
- return 'J';
- case 'k':
- return 'K';
- case 'l':
- return 'L';
- case 'm':
- return 'M';
- case 'n':
- return 'N';
- case 'o':
- return 'O';
- case 'p':
- return 'P';
- case 'q':
- return 'Q';
- case 'r':
- return 'R';
- case 's':
- return 'S';
- case 't':
- return 'T';
- case 'u':
- return 'U';
- case 'v':
- return 'V';
- case 'w':
- return 'W';
- case 'x':
- return 'X';
- case 'y':
- return 'Y';
- case 'z':
- return 'Z';
- }
-#endif
-
return in;
}
@@ -572,7 +521,11 @@ static SIGHANDLER_T old_sigbreak_handler = SIG_ERR;
#endif
#ifdef WIN32
+#ifdef _WIN32_WCE
static DWORD thread_main_id = 0;
+#else
+static unsigned int thread_main_id = 0;
+#endif
static HANDLE thread_main_window = NULL;
static HWND hidden_main_window = NULL;
#endif
@@ -675,7 +628,12 @@ static LRESULT CALLBACK main_window_proc(HWND hwnd, UINT uMsg,
}
/* Window message queue loop for hidden main window, details see above.
*/
+#ifdef _WIN32_WCE
static DWORD WINAPI main_window_loop(LPVOID lpParameter)
+#else
+#include <process.h>
+static unsigned int WINAPI main_window_loop(void *lpParameter)
+#endif
{
WNDCLASS wc;
BOOL ret;
@@ -756,6 +714,14 @@ static SIGHANDLER_T set_signal(int signum, SIGHANDLER_T handler,
void install_signal_handlers(bool keep_sigalrm)
{
#ifdef WIN32
+#ifdef _WIN32_WCE
+ typedef HANDLE curl_win_thread_handle_t;
+#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+ typedef unsigned long curl_win_thread_handle_t;
+#else
+ typedef uintptr_t curl_win_thread_handle_t;
+#endif
+ curl_win_thread_handle_t thread;
/* setup windows exit event before any signal can trigger */
exit_event = CreateEvent(NULL, TRUE, FALSE, NULL);
if(!exit_event)
@@ -804,10 +770,14 @@ void install_signal_handlers(bool keep_sigalrm)
#ifdef WIN32
if(!SetConsoleCtrlHandler(ctrl_event_handler, TRUE))
logmsg("cannot install CTRL event handler");
- thread_main_window = CreateThread(NULL, 0,
- &main_window_loop,
- (LPVOID)GetModuleHandle(NULL),
- 0, &thread_main_id);
+#ifdef _WIN32_WCE
+ thread = CreateThread(NULL, 0, &main_window_loop,
+ (LPVOID)GetModuleHandle(NULL), 0, &thread_main_id);
+#else
+ thread = _beginthreadex(NULL, 0, &main_window_loop,
+ (void *)GetModuleHandle(NULL), 0, &thread_main_id);
+#endif
+ thread_main_window = (HANDLE)thread;
if(!thread_main_window || !thread_main_id)
logmsg("cannot start main window loop");
#endif
@@ -862,3 +832,66 @@ void restore_signal_handlers(bool keep_sigalrm)
}
#endif
}
+
+#ifdef USE_UNIX_SOCKETS
+
+int bind_unix_socket(curl_socket_t sock, const char *unix_socket,
+ struct sockaddr_un *sau) {
+ int error;
+ int rc;
+
+ memset(sau, 0, sizeof(struct sockaddr_un));
+ sau->sun_family = AF_UNIX;
+ strncpy(sau->sun_path, unix_socket, sizeof(sau->sun_path) - 1);
+ rc = bind(sock, (struct sockaddr*)sau, sizeof(struct sockaddr_un));
+ if(0 != rc && errno == EADDRINUSE) {
+ struct_stat statbuf;
+ /* socket already exists. Perhaps it is stale? */
+ curl_socket_t 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));
+ return rc;
+ }
+ /* check whether the server is alive */
+ rc = connect(unixfd, (struct sockaddr*)sau, sizeof(struct sockaddr_un));
+ error = errno;
+ sclose(unixfd);
+ if(ECONNREFUSED != error) {
+ logmsg("Error binding socket, failed to connect to %s: (%d) %s",
+ unix_socket, error, strerror(error));
+ return rc;
+ }
+ /* socket server is not alive, now check if it was actually a socket. */
+#ifdef WIN32
+ /* Windows does not have lstat function. */
+ rc = curlx_win32_stat(unix_socket, &statbuf);
+#else
+ rc = lstat(unix_socket, &statbuf);
+#endif
+ if(0 != rc) {
+ logmsg("Error binding socket, failed to stat %s: (%d) %s",
+ unix_socket, errno, strerror(errno));
+ return rc;
+ }
+#ifdef S_IFSOCK
+ if((statbuf.st_mode & S_IFSOCK) != S_IFSOCK) {
+ logmsg("Error binding socket, failed to stat %s: (%d) %s",
+ unix_socket, error, strerror(error));
+ return rc;
+ }
+#endif
+ /* 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));
+ return rc;
+ }
+ /* stale socket is gone, retry bind */
+ rc = bind(sock, (struct sockaddr*)sau, sizeof(struct sockaddr_un));
+ }
+ return rc;
+}
+#endif
diff --git a/tests/server/util.h b/tests/server/util.h
index 140e349f3..76ca37140 100644
--- a/tests/server/util.h
+++ b/tests/server/util.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "server_setup.h"
@@ -40,7 +42,7 @@ extern const char *serverlogfile;
extern const char *cmdfile;
-#if defined(WIN32) || defined(_WIN32)
+#ifdef WIN32
#include <process.h>
#include <fcntl.h>
@@ -49,12 +51,10 @@ extern const char *cmdfile;
#undef perror
#define perror(m) win32_perror(m)
void win32_perror(const char *msg);
-#endif /* WIN32 or _WIN32 */
-#ifdef USE_WINSOCK
void win32_init(void);
void win32_cleanup(void);
-#endif /* USE_WINSOCK */
+#endif /* WIN32 */
/* fopens the test case file */
FILE *test2fopen(long testno);
@@ -81,4 +81,16 @@ extern HANDLE exit_event;
void install_signal_handlers(bool keep_sigalrm);
void restore_signal_handlers(bool keep_sigalrm);
+#ifdef USE_UNIX_SOCKETS
+
+#include <curl/curl.h> /* for curl_socket_t */
+
+#ifdef HAVE_SYS_UN_H
+#include <sys/un.h> /* for sockaddr_un */
+#endif /* HAVE_SYS_UN_H */
+
+int bind_unix_socket(curl_socket_t sock, const char *unix_socket,
+ struct sockaddr_un *sau);
+#endif /* USE_UNIX_SOCKETS */
+
#endif /* HEADER_CURL_SERVER_UTIL_H */
diff --git a/tests/serverhelp.pm b/tests/serverhelp.pm
index 77eceec1a..7d312cc03 100644
--- a/tests/serverhelp.pm
+++ b/tests/serverhelp.pm
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
package serverhelp;
diff --git a/tests/smbserver.py b/tests/smbserver.py
index 3c4b96ed2..62f2d7a0f 100755
--- a/tests/smbserver.py
+++ b/tests/smbserver.py
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2017 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2017 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
"""Server for testing SMB"""
from __future__ import (absolute_import, division, print_function,
diff --git a/tests/sshhelp.pm b/tests/sshhelp.pm
index dd8814224..2d419c184 100644
--- a/tests/sshhelp.pm
+++ b/tests/sshhelp.pm
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
package sshhelp;
diff --git a/tests/sshserver.pl b/tests/sshserver.pl
index 526ed099f..576b70635 100644
--- a/tests/sshserver.pl
+++ b/tests/sshserver.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
# Starts sshd for use in the SCP and SFTP curl test harness tests.
diff --git a/tests/symbol-scan.pl b/tests/symbol-scan.pl
index d3058b190..8efa30791 100755
--- a/tests/symbol-scan.pl
+++ b/tests/symbol-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2010 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# This script grew out of help from Przemyslaw Iskra and Balint Szilakszi
@@ -51,48 +53,95 @@ my $root=$ARGV[0] || ".";
# need an include directory when building out-of-tree
my $i = ($ARGV[1]) ? "-I$ARGV[1] " : '';
-my $h = "$root/include/curl/curl.h";
-my $mh = "$root/include/curl/multi.h";
-my $ua = "$root/include/curl/urlapi.h";
-
my $verbose=0;
my $summary=0;
my $misses=0;
+my @manrefs;
my @syms;
my %doc;
my %rem;
-open H_IN, "-|", "$Cpreprocessor $i$h" || die "Cannot preprocess curl.h";
-while ( <H_IN> ) {
- if ( /enum\s+(\S+\s+)?{/ .. /}/ ) {
- s/^\s+//;
- next unless /^CURL/;
- chomp;
- s/[,\s].*//;
- push @syms, $_;
+# scanenum runs the preprocessor on curl.h so it will process all enums
+# included by it, which *should* be all headers
+sub scanenum {
+ my ($file) = @_;
+ open H_IN, "-|", "$Cpreprocessor $i$file" || die "Cannot preprocess $file";
+ while ( <H_IN> ) {
+ if ( /enum\s+(\S+\s+)?{/ .. /}/ ) {
+ s/^\s+//;
+ next unless /^CURL/;
+ chomp;
+ s/[,\s].*//;
+ push @syms, $_;
+ }
}
+ close H_IN || die "Error preprocessing $file";
}
-close H_IN || die "Error preprocessing curl.h";
sub scanheader {
my ($f)=@_;
open H, "<$f";
while(<H>) {
- if (/^#define (CURL[A-Za-z0-9_]*)/) {
+ if (/^#define ((LIB|)CURL[A-Za-z0-9_]*)/) {
push @syms, $1;
}
}
close H;
}
-scanheader($h);
-scanheader($mh);
-scanheader($ua);
+sub scanallheaders {
+ my $d = "$root/include/curl";
+ opendir(my $dh, $d) ||
+ die "Can't opendir: $!";
+ my @headers = grep { /.h\z/ } readdir($dh);
+ closedir $dh;
+ foreach my $h (@headers) {
+ scanenum("$d/$h");
+ scanheader("$d/$h");
+ }
+}
+
+sub checkmanpage {
+ my ($m) = @_;
+
+ open(M, "<$m");
+ my $line = 1;
+ while(<M>) {
+ # strip off formatting
+ $_ =~ s/\\f[BPRI]//;
+ # detect global-looking 'CURL[BLABLA]_*' symbols
+ while(s/\W(CURL(AUTH|E|H|MOPT|OPT|SHOPT|UE|M|SSH|SSLBACKEND|HEADER|FORM|FTP|PIPE|MIMEOPT|GSSAPI|ALTSVC|PROTO|PROXY|UPART|USESSL|_READFUNC|_WRITEFUNC|_CSELECT|_FORMADD|_IPRESOLVE|_REDIR|_RTSPREQ|_TIMECOND|_VERSION)_[a-zA-Z0-9_]+)//) {
+ my $s = $1;
+ # skip two "special" ones
+ if($s !~ /^(CURLE_OBSOLETE|CURLOPT_TEMPLATE)/) {
+ push @manrefs, "$1:$m:$line";
+ }
+ }
+ $line++;
+ }
+ close(M);
+}
+
+sub scanman3dir {
+ my ($d) = @_;
+ opendir(my $dh, $d) ||
+ die "Can't opendir: $!";
+ my @mans = grep { /.3\z/ } readdir($dh);
+ closedir $dh;
+ for my $m (@mans) {
+ checkmanpage("$d/$m");
+ }
+}
+
+
+scanallheaders();
+scanman3dir("$root/docs/libcurl");
+scanman3dir("$root/docs/libcurl/opts");
open S, "<$root/docs/libcurl/symbols-in-versions";
while(<S>) {
- if(/(^CURL[^ \n]*) *(.*)/) {
+ if(/(^[^ \n]+) +(.*)/) {
my ($sym, $rest)=($1, $2);
if($doc{$sym}) {
print "Detected duplicate symbol: $sym\n";
@@ -165,6 +214,17 @@ for my $e (sort keys %doc) {
}
}
+my %warned;
+for my $r (@manrefs) {
+ if($r =~ /^([^:]+):(.*)/) {
+ my ($sym, $file)=($1, $2);
+ if(!$doc{$sym} && !$warned{$sym, $file}) {
+ print "$file: $sym is not a public symbol\n";
+ $warned{$sym, $file} = 1;
+ }
+ }
+}
+
if($summary) {
print "Summary:\n";
printf "%d symbols in headers (out of which %d are ignored)\n", scalar(@syms),
diff --git a/tests/testcurl.1 b/tests/testcurl.1
index c06e4f1a9..75374447b 100644
--- a/tests/testcurl.1
+++ b/tests/testcurl.1
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -18,9 +18,11 @@
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
.\" **************************************************************************
.\"
-.TH testcurl.pl 1 "November 05, 2020" "Curl 7.81.0" "testcurl"
+.TH testcurl.pl 1 "May 17, 2022" "Curl 7.86.0" "testcurl"
.SH NAME
testcurl.pl \- (automatically) test curl
@@ -76,7 +78,7 @@ store the info in a 'setup' file, which it will look for on each invoke. Use
\fI--name\fP, \fI--email\fP, \fI--configure\fP and \fI--desc\fP instead.
.IP "--target=[your os]"
Specify your target environment. Recognized strings include 'vc', 'mingw32',
-\&'borland' and 'netware'.
+and \&'borland'.
.SH "INITIAL SETUP"
First you make a checkout from git (or you write a script that downloads daily
snapshots automatically, find inspiration in
diff --git a/tests/testcurl.pl b/tests/testcurl.pl
index 541ff9d8c..acf2c6b06 100755
--- a/tests/testcurl.pl
+++ b/tests/testcurl.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
###########################
@@ -151,7 +153,7 @@ if ($^O eq 'MSWin32' || $targetos) {
# If no target defined on Win32 lets assume vc
$targetos = 'vc';
}
- if ($targetos =~ /vc/ || $targetos =~ /borland/ || $targetos =~ /watcom/) {
+ if ($targetos =~ /vc/ || $targetos =~ /borland/) {
$binext = '.exe';
$libext = '.lib';
}
@@ -161,21 +163,11 @@ if ($^O eq 'MSWin32' || $targetos) {
$libext = '.a';
}
}
- elsif ($targetos =~ /netware/) {
- $configurebuild = 0;
- $binext = '.nlm';
- if ($^O eq 'MSWin32') {
- $libext = '.lib';
- }
- else {
- $libext = '.a';
- }
- }
}
if (($^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys') &&
($targetos =~ /vc/ || $targetos =~ /mingw32/ ||
- $targetos =~ /borland/ || $targetos =~ /watcom/)) {
+ $targetos =~ /borland/)) {
# Set these things only when building ON Windows and for Win32 platform.
# FOR Windows since we might be cross-compiling on another system. Non-
@@ -476,8 +468,8 @@ if ($git) {
unlink "autom4te.cache";
# generate the build files
- logit "invoke buildconf";
- open(F, "./buildconf 2>&1 |") or die;
+ logit "invoke autoreconf";
+ open(F, "autoreconf -fi 2>&1 |") or die;
open(LOG, ">$buildlog") or die;
while (<F>) {
my $ll = $_;
@@ -546,8 +538,6 @@ if(!$make) {
}
# force to 'nmake' for VC builds
$make = "nmake" if ($targetos =~ /vc/);
-# force to 'wmake' for Watcom builds
-$make = "wmake" if ($targetos =~ /watcom/);
logit "going with $make as make";
# change to build dir
@@ -564,19 +554,10 @@ if ($configurebuild) {
}
} else {
logit "copying files to build dir ...";
- if (($^O eq 'MSWin32') && ($targetos !~ /netware/)) {
+ if ($^O eq 'MSWin32') {
system("xcopy /s /q \"$CURLDIR\" .");
system("buildconf.bat");
}
- elsif ($targetos =~ /netware/) {
- system("cp -afr $CURLDIR/* .");
- system("cp -af $CURLDIR/Makefile.dist Makefile");
- system("$make -i -C lib -f Makefile.netware prebuild");
- system("$make -i -C src -f Makefile.netware prebuild");
- if (-d "$CURLDIR/ares") {
- system("$make -i -C ares -f Makefile.netware prebuild");
- }
- }
elsif ($^O eq 'linux') {
system("cp -afr $CURLDIR/* .");
system("cp -af $CURLDIR/Makefile.dist Makefile");
diff --git a/tests/tftpserver.pl b/tests/tftpserver.pl
index 9486539b8..9db734330 100755
--- a/tests/tftpserver.pl
+++ b/tests/tftpserver.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
BEGIN {
diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt
index cc4b7bf46..8798165c8 100644
--- a/tests/unit/CMakeLists.txt
+++ b/tests/unit/CMakeLists.txt
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# TODO build a special libcurlu library for unittests.
diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am
index e2fdd8760..a0d7a9495 100644
--- a/tests/unit/Makefile.am
+++ b/tests/unit/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
@@ -29,24 +31,12 @@ AUTOMAKE_OPTIONS = foreign nostdinc
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" 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_srcdir)/include \
- -I$(top_builddir)/lib \
- -I$(top_srcdir)/lib \
- -I$(top_srcdir)/src \
- -I$(top_srcdir)/tests/libtest \
- -I$(top_builddir)/ares \
- -I$(top_srcdir)/ares
-else
AM_CPPFLAGS = -I$(top_srcdir)/include \
-I$(top_builddir)/lib \
-I$(top_srcdir)/lib \
-I$(top_srcdir)/src \
-I$(top_srcdir)/tests/libtest
-endif
EXTRA_DIST = Makefile.inc CMakeLists.txt README.md
@@ -57,7 +47,7 @@ LIBS = $(BLANK_AT_MAKETIME)
LDADD = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la \
- @LDFLAGS@ @LIBCURL_LIBS@
+ @LDFLAGS@ @LIBCURL_LIBS@ @NSS_LIBS@
AM_CPPFLAGS += -DCURL_STATICLIB -DUNITTESTS
@@ -70,7 +60,7 @@ CS_1 =
CS_ = $(CS_0)
checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]
+ $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl $(srcdir)/*.[ch]
if BUILD_UNITTESTS
noinst_PROGRAMS = $(UNITPROGS)
diff --git a/tests/unit/Makefile.in b/tests/unit/Makefile.in
index ed7f41047..30ab92a3b 100644
--- a/tests/unit/Makefile.in
+++ b/tests/unit/Makefile.in
@@ -21,7 +21,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# 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 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# these files are used in every single unit test program
@@ -115,15 +117,13 @@ host_triplet = @host@
@BUILD_UNITTESTS_TRUE@noinst_PROGRAMS = $(am__EXEEXT_1)
subdir = tests/unit
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
- $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
$(top_srcdir)/m4/curl-bearssl.m4 \
$(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-gnutls.m4 \
- $(top_srcdir)/m4/curl-mbedtls.m4 \
- $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
$(top_srcdir)/m4/curl-openssl.m4 \
$(top_srcdir)/m4/curl-override.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 \
@@ -160,10 +160,10 @@ am__EXEEXT_1 = unit1300$(EXEEXT) unit1301$(EXEEXT) unit1302$(EXEEXT) \
unit1604$(EXEEXT) unit1605$(EXEEXT) unit1606$(EXEEXT) \
unit1607$(EXEEXT) unit1608$(EXEEXT) unit1609$(EXEEXT) \
unit1610$(EXEEXT) unit1611$(EXEEXT) unit1612$(EXEEXT) \
- unit1620$(EXEEXT) unit1621$(EXEEXT) unit1650$(EXEEXT) \
- unit1651$(EXEEXT) unit1652$(EXEEXT) unit1653$(EXEEXT) \
- unit1654$(EXEEXT) unit1655$(EXEEXT) unit1660$(EXEEXT) \
- unit1661$(EXEEXT)
+ unit1614$(EXEEXT) unit1620$(EXEEXT) unit1621$(EXEEXT) \
+ unit1650$(EXEEXT) unit1651$(EXEEXT) unit1652$(EXEEXT) \
+ unit1653$(EXEEXT) unit1654$(EXEEXT) unit1655$(EXEEXT) \
+ unit1660$(EXEEXT) unit1661$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_1 = ../libtest/unit1300-first.$(OBJEXT)
@@ -351,61 +351,67 @@ unit1612_OBJECTS = $(am_unit1612_OBJECTS)
unit1612_LDADD = $(LDADD)
unit1612_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_31 = ../libtest/unit1620-first.$(OBJEXT)
-am_unit1620_OBJECTS = unit1620-unit1620.$(OBJEXT) $(am__objects_31)
+am__objects_31 = ../libtest/unit1614-first.$(OBJEXT)
+am_unit1614_OBJECTS = unit1614-unit1614.$(OBJEXT) $(am__objects_31)
+unit1614_OBJECTS = $(am_unit1614_OBJECTS)
+unit1614_LDADD = $(LDADD)
+unit1614_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+ $(top_builddir)/lib/libcurlu.la
+am__objects_32 = ../libtest/unit1620-first.$(OBJEXT)
+am_unit1620_OBJECTS = unit1620-unit1620.$(OBJEXT) $(am__objects_32)
unit1620_OBJECTS = $(am_unit1620_OBJECTS)
unit1620_LDADD = $(LDADD)
unit1620_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_32 = ../libtest/unit1621-first.$(OBJEXT)
-am_unit1621_OBJECTS = unit1621-unit1621.$(OBJEXT) $(am__objects_32)
+am__objects_33 = ../libtest/unit1621-first.$(OBJEXT)
+am_unit1621_OBJECTS = unit1621-unit1621.$(OBJEXT) $(am__objects_33)
unit1621_OBJECTS = $(am_unit1621_OBJECTS)
unit1621_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurl.la
-am__objects_33 = ../libtest/unit1650-first.$(OBJEXT)
-am_unit1650_OBJECTS = unit1650-unit1650.$(OBJEXT) $(am__objects_33)
+am__objects_34 = ../libtest/unit1650-first.$(OBJEXT)
+am_unit1650_OBJECTS = unit1650-unit1650.$(OBJEXT) $(am__objects_34)
unit1650_OBJECTS = $(am_unit1650_OBJECTS)
unit1650_LDADD = $(LDADD)
unit1650_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_34 = ../libtest/unit1651-first.$(OBJEXT)
-am_unit1651_OBJECTS = unit1651-unit1651.$(OBJEXT) $(am__objects_34)
+am__objects_35 = ../libtest/unit1651-first.$(OBJEXT)
+am_unit1651_OBJECTS = unit1651-unit1651.$(OBJEXT) $(am__objects_35)
unit1651_OBJECTS = $(am_unit1651_OBJECTS)
unit1651_LDADD = $(LDADD)
unit1651_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_35 = ../libtest/unit1652-first.$(OBJEXT)
-am_unit1652_OBJECTS = unit1652-unit1652.$(OBJEXT) $(am__objects_35)
+am__objects_36 = ../libtest/unit1652-first.$(OBJEXT)
+am_unit1652_OBJECTS = unit1652-unit1652.$(OBJEXT) $(am__objects_36)
unit1652_OBJECTS = $(am_unit1652_OBJECTS)
unit1652_LDADD = $(LDADD)
unit1652_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_36 = ../libtest/unit1653-first.$(OBJEXT)
-am_unit1653_OBJECTS = unit1653-unit1653.$(OBJEXT) $(am__objects_36)
+am__objects_37 = ../libtest/unit1653-first.$(OBJEXT)
+am_unit1653_OBJECTS = unit1653-unit1653.$(OBJEXT) $(am__objects_37)
unit1653_OBJECTS = $(am_unit1653_OBJECTS)
unit1653_LDADD = $(LDADD)
unit1653_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_37 = ../libtest/unit1654-first.$(OBJEXT)
-am_unit1654_OBJECTS = unit1654-unit1654.$(OBJEXT) $(am__objects_37)
+am__objects_38 = ../libtest/unit1654-first.$(OBJEXT)
+am_unit1654_OBJECTS = unit1654-unit1654.$(OBJEXT) $(am__objects_38)
unit1654_OBJECTS = $(am_unit1654_OBJECTS)
unit1654_LDADD = $(LDADD)
unit1654_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_38 = ../libtest/unit1655-first.$(OBJEXT)
-am_unit1655_OBJECTS = unit1655-unit1655.$(OBJEXT) $(am__objects_38)
+am__objects_39 = ../libtest/unit1655-first.$(OBJEXT)
+am_unit1655_OBJECTS = unit1655-unit1655.$(OBJEXT) $(am__objects_39)
unit1655_OBJECTS = $(am_unit1655_OBJECTS)
unit1655_LDADD = $(LDADD)
unit1655_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_39 = ../libtest/unit1660-first.$(OBJEXT)
-am_unit1660_OBJECTS = unit1660-unit1660.$(OBJEXT) $(am__objects_39)
+am__objects_40 = ../libtest/unit1660-first.$(OBJEXT)
+am_unit1660_OBJECTS = unit1660-unit1660.$(OBJEXT) $(am__objects_40)
unit1660_OBJECTS = $(am_unit1660_OBJECTS)
unit1660_LDADD = $(LDADD)
unit1660_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la
-am__objects_40 = ../libtest/unit1661-first.$(OBJEXT)
-am_unit1661_OBJECTS = unit1661-unit1661.$(OBJEXT) $(am__objects_40)
+am__objects_41 = ../libtest/unit1661-first.$(OBJEXT)
+am_unit1661_OBJECTS = unit1661-unit1661.$(OBJEXT) $(am__objects_41)
unit1661_OBJECTS = $(am_unit1661_OBJECTS)
unit1661_LDADD = $(LDADD)
unit1661_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
@@ -455,6 +461,7 @@ am__depfiles_remade = ../libtest/$(DEPDIR)/unit1300-first.Po \
../libtest/$(DEPDIR)/unit1610-first.Po \
../libtest/$(DEPDIR)/unit1611-first.Po \
../libtest/$(DEPDIR)/unit1612-first.Po \
+ ../libtest/$(DEPDIR)/unit1614-first.Po \
../libtest/$(DEPDIR)/unit1620-first.Po \
../libtest/$(DEPDIR)/unit1621-first.Po \
../libtest/$(DEPDIR)/unit1650-first.Po \
@@ -495,6 +502,7 @@ am__depfiles_remade = ../libtest/$(DEPDIR)/unit1300-first.Po \
./$(DEPDIR)/unit1610-unit1610.Po \
./$(DEPDIR)/unit1611-unit1611.Po \
./$(DEPDIR)/unit1612-unit1612.Po \
+ ./$(DEPDIR)/unit1614-unit1614.Po \
./$(DEPDIR)/unit1620-unit1620.Po \
./$(DEPDIR)/unit1621-unit1621.Po \
./$(DEPDIR)/unit1650-unit1650.Po \
@@ -534,10 +542,10 @@ SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) $(unit1302_SOURCES) \
$(unit1604_SOURCES) $(unit1605_SOURCES) $(unit1606_SOURCES) \
$(unit1607_SOURCES) $(unit1608_SOURCES) $(unit1609_SOURCES) \
$(unit1610_SOURCES) $(unit1611_SOURCES) $(unit1612_SOURCES) \
- $(unit1620_SOURCES) $(unit1621_SOURCES) $(unit1650_SOURCES) \
- $(unit1651_SOURCES) $(unit1652_SOURCES) $(unit1653_SOURCES) \
- $(unit1654_SOURCES) $(unit1655_SOURCES) $(unit1660_SOURCES) \
- $(unit1661_SOURCES)
+ $(unit1614_SOURCES) $(unit1620_SOURCES) $(unit1621_SOURCES) \
+ $(unit1650_SOURCES) $(unit1651_SOURCES) $(unit1652_SOURCES) \
+ $(unit1653_SOURCES) $(unit1654_SOURCES) $(unit1655_SOURCES) \
+ $(unit1660_SOURCES) $(unit1661_SOURCES)
DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
$(unit1302_SOURCES) $(unit1303_SOURCES) $(unit1304_SOURCES) \
$(unit1305_SOURCES) $(unit1307_SOURCES) $(unit1308_SOURCES) \
@@ -548,10 +556,10 @@ DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
$(unit1603_SOURCES) $(unit1604_SOURCES) $(unit1605_SOURCES) \
$(unit1606_SOURCES) $(unit1607_SOURCES) $(unit1608_SOURCES) \
$(unit1609_SOURCES) $(unit1610_SOURCES) $(unit1611_SOURCES) \
- $(unit1612_SOURCES) $(unit1620_SOURCES) $(unit1621_SOURCES) \
- $(unit1650_SOURCES) $(unit1651_SOURCES) $(unit1652_SOURCES) \
- $(unit1653_SOURCES) $(unit1654_SOURCES) $(unit1655_SOURCES) \
- $(unit1660_SOURCES) $(unit1661_SOURCES)
+ $(unit1612_SOURCES) $(unit1614_SOURCES) $(unit1620_SOURCES) \
+ $(unit1621_SOURCES) $(unit1650_SOURCES) $(unit1651_SOURCES) \
+ $(unit1652_SOURCES) $(unit1653_SOURCES) $(unit1654_SOURCES) \
+ $(unit1655_SOURCES) $(unit1660_SOURCES) $(unit1661_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -620,6 +628,7 @@ 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@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
CYGPATH_W = @CYGPATH_W@
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -637,6 +646,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
GCOV = @GCOV@
GREP = @GREP@
@@ -696,6 +706,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
+RC = @RC@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -714,12 +725,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
USE_NGHTTP2 = @USE_NGHTTP2@
USE_NGHTTP3 = @USE_NGHTTP3@
USE_NGTCP2 = @USE_NGTCP2@
USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
USE_QUICHE = @USE_QUICHE@
@@ -786,7 +798,6 @@ runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -800,7 +811,7 @@ top_srcdir = @top_srcdir@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -813,14 +824,10 @@ top_srcdir = @top_srcdir@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
-@USE_EMBEDDED_ARES_FALSE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_FALSE@ -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_FALSE@ -I$(top_srcdir)/lib \
-@USE_EMBEDDED_ARES_FALSE@ -I$(top_srcdir)/src \
-@USE_EMBEDDED_ARES_FALSE@ -I$(top_srcdir)/tests/libtest \
-@USE_EMBEDDED_ARES_FALSE@ -DCURL_STATICLIB -DUNITTESTS
# 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
@@ -830,20 +837,13 @@ AUTOMAKE_OPTIONS = foreign nostdinc
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" 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
-@USE_EMBEDDED_ARES_TRUE@AM_CPPFLAGS = -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_srcdir)/src \
-@USE_EMBEDDED_ARES_TRUE@ -I$(top_srcdir)/tests/libtest \
-@USE_EMBEDDED_ARES_TRUE@ -I$(top_builddir)/ares \
-@USE_EMBEDDED_ARES_TRUE@ -I$(top_srcdir)/ares -DCURL_STATICLIB \
-@USE_EMBEDDED_ARES_TRUE@ -DUNITTESTS
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
+ -I$(top_srcdir)/lib -I$(top_srcdir)/src \
+ -I$(top_srcdir)/tests/libtest -DCURL_STATICLIB -DUNITTESTS
EXTRA_DIST = Makefile.inc CMakeLists.txt README.md
LDADD = $(top_builddir)/src/libcurltool.la \
$(top_builddir)/lib/libcurlu.la \
- @LDFLAGS@ @LIBCURL_LIBS@
+ @LDFLAGS@ @LIBCURL_LIBS@ @NSS_LIBS@
UNITFILES = curlcheck.h \
../libtest/test.h \
@@ -856,7 +856,7 @@ UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
unit1399 \
unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
- unit1608 unit1609 unit1610 unit1611 unit1612 \
+ unit1608 unit1609 unit1610 unit1611 unit1612 unit1614 \
unit1620 unit1621 \
unit1650 unit1651 unit1652 unit1653 unit1654 unit1655 \
unit1660 unit1661
@@ -924,11 +924,13 @@ unit1611_SOURCES = unit1611.c $(UNITFILES)
unit1611_CPPFLAGS = $(AM_CPPFLAGS)
unit1612_SOURCES = unit1612.c $(UNITFILES)
unit1612_CPPFLAGS = $(AM_CPPFLAGS)
+unit1614_SOURCES = unit1614.c $(UNITFILES)
+unit1614_CPPFLAGS = $(AM_CPPFLAGS)
unit1620_SOURCES = unit1620.c $(UNITFILES)
unit1620_CPPFLAGS = $(AM_CPPFLAGS)
unit1621_SOURCES = unit1621.c $(UNITFILES)
unit1621_CPPFLAGS = $(AM_CPPFLAGS)
-unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la
+unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la @NSS_LIBS@
unit1650_SOURCES = unit1650.c $(UNITFILES)
unit1650_CPPFLAGS = $(AM_CPPFLAGS)
unit1651_SOURCES = unit1651.c $(UNITFILES)
@@ -1180,6 +1182,12 @@ unit1611$(EXEEXT): $(unit1611_OBJECTS) $(unit1611_DEPENDENCIES) $(EXTRA_unit1611
unit1612$(EXEEXT): $(unit1612_OBJECTS) $(unit1612_DEPENDENCIES) $(EXTRA_unit1612_DEPENDENCIES)
@rm -f unit1612$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(unit1612_OBJECTS) $(unit1612_LDADD) $(LIBS)
+../libtest/unit1614-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+ ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1614$(EXEEXT): $(unit1614_OBJECTS) $(unit1614_DEPENDENCIES) $(EXTRA_unit1614_DEPENDENCIES)
+ @rm -f unit1614$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unit1614_OBJECTS) $(unit1614_LDADD) $(LIBS)
../libtest/unit1620-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
../libtest/$(DEPDIR)/$(am__dirstamp)
@@ -1278,6 +1286,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1610-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1611-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1612-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1614-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1620-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1621-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1650-first.Po@am__quote@ # am--include-marker
@@ -1318,6 +1327,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1610-unit1610.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1611-unit1611.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1612-unit1612.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1614-unit1614.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1620-unit1620.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1621-unit1621.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1650-unit1650.Po@am__quote@ # am--include-marker
@@ -2199,6 +2209,34 @@ unit1612-unit1612.obj: unit1612.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1612_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1612-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+unit1614-unit1614.o: unit1614.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1614-unit1614.o -MD -MP -MF $(DEPDIR)/unit1614-unit1614.Tpo -c -o unit1614-unit1614.o `test -f 'unit1614.c' || echo '$(srcdir)/'`unit1614.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1614-unit1614.Tpo $(DEPDIR)/unit1614-unit1614.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unit1614.c' object='unit1614-unit1614.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) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1614-unit1614.o `test -f 'unit1614.c' || echo '$(srcdir)/'`unit1614.c
+
+unit1614-unit1614.obj: unit1614.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1614-unit1614.obj -MD -MP -MF $(DEPDIR)/unit1614-unit1614.Tpo -c -o unit1614-unit1614.obj `if test -f 'unit1614.c'; then $(CYGPATH_W) 'unit1614.c'; else $(CYGPATH_W) '$(srcdir)/unit1614.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1614-unit1614.Tpo $(DEPDIR)/unit1614-unit1614.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unit1614.c' object='unit1614-unit1614.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) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1614-unit1614.obj `if test -f 'unit1614.c'; then $(CYGPATH_W) 'unit1614.c'; else $(CYGPATH_W) '$(srcdir)/unit1614.c'; fi`
+
+../libtest/unit1614-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1614-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1614-first.Tpo -c -o ../libtest/unit1614-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1614-first.Tpo ../libtest/$(DEPDIR)/unit1614-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1614-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) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1614-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1614-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1614-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1614-first.Tpo -c -o ../libtest/unit1614-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)/unit1614-first.Tpo ../libtest/$(DEPDIR)/unit1614-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1614-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) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1614-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
unit1620-unit1620.o: unit1620.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1620_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1620-unit1620.o -MD -MP -MF $(DEPDIR)/unit1620-unit1620.Tpo -c -o unit1620-unit1620.o `test -f 'unit1620.c' || echo '$(srcdir)/'`unit1620.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unit1620-unit1620.Tpo $(DEPDIR)/unit1620-unit1620.Po
@@ -2641,6 +2679,7 @@ distclean: distclean-am
-rm -f ../libtest/$(DEPDIR)/unit1610-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1611-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1612-first.Po
+ -rm -f ../libtest/$(DEPDIR)/unit1614-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1620-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1621-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1650-first.Po
@@ -2681,6 +2720,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/unit1610-unit1610.Po
-rm -f ./$(DEPDIR)/unit1611-unit1611.Po
-rm -f ./$(DEPDIR)/unit1612-unit1612.Po
+ -rm -f ./$(DEPDIR)/unit1614-unit1614.Po
-rm -f ./$(DEPDIR)/unit1620-unit1620.Po
-rm -f ./$(DEPDIR)/unit1621-unit1621.Po
-rm -f ./$(DEPDIR)/unit1650-unit1650.Po
@@ -2766,6 +2806,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ../libtest/$(DEPDIR)/unit1610-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1611-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1612-first.Po
+ -rm -f ../libtest/$(DEPDIR)/unit1614-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1620-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1621-first.Po
-rm -f ../libtest/$(DEPDIR)/unit1650-first.Po
@@ -2806,6 +2847,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/unit1610-unit1610.Po
-rm -f ./$(DEPDIR)/unit1611-unit1611.Po
-rm -f ./$(DEPDIR)/unit1612-unit1612.Po
+ -rm -f ./$(DEPDIR)/unit1614-unit1614.Po
-rm -f ./$(DEPDIR)/unit1620-unit1620.Po
-rm -f ./$(DEPDIR)/unit1621-unit1621.Po
-rm -f ./$(DEPDIR)/unit1650-unit1650.Po
@@ -2854,7 +2896,7 @@ uninstall-am:
checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]
+ $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl $(srcdir)/*.[ch]
# 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.
diff --git a/tests/unit/Makefile.inc b/tests/unit/Makefile.inc
index 3354f454d..831a82033 100644
--- a/tests/unit/Makefile.inc
+++ b/tests/unit/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
# these files are used in every single unit test program
@@ -32,7 +34,7 @@ UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
unit1399 \
unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
- unit1608 unit1609 unit1610 unit1611 unit1612 \
+ unit1608 unit1609 unit1610 unit1611 unit1612 unit1614 \
unit1620 unit1621 \
unit1650 unit1651 unit1652 unit1653 unit1654 unit1655 \
unit1660 unit1661
@@ -130,12 +132,15 @@ unit1611_CPPFLAGS = $(AM_CPPFLAGS)
unit1612_SOURCES = unit1612.c $(UNITFILES)
unit1612_CPPFLAGS = $(AM_CPPFLAGS)
+unit1614_SOURCES = unit1614.c $(UNITFILES)
+unit1614_CPPFLAGS = $(AM_CPPFLAGS)
+
unit1620_SOURCES = unit1620.c $(UNITFILES)
unit1620_CPPFLAGS = $(AM_CPPFLAGS)
unit1621_SOURCES = unit1621.c $(UNITFILES)
unit1621_CPPFLAGS = $(AM_CPPFLAGS)
-unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la
+unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la @NSS_LIBS@
unit1650_SOURCES = unit1650.c $(UNITFILES)
unit1650_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/unit/README.md b/tests/unit/README.md
index 2880d1979..d17b249a0 100644
--- a/tests/unit/README.md
+++ b/tests/unit/README.md
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
# Unit tests
The goal is to add tests for *all* functions in libcurl. If functions are too
@@ -27,40 +33,41 @@ start up gdb and run the same case using that.
## Write Unit Tests
We put tests that focus on an area or a specific function into a single C
-source file. The source file should be named 'unitNNNN.c' where NNNN is a
+source file. The source file should be named `unitNNNN.c` where `NNNN` is a
previously unused number.
-Add your test to `tests/unit/Makefile.inc` (if it is a unit test). Add your
+Add your test to `tests/unit/Makefile.inc` (if it is a unit test). Add your
test data file name to `tests/data/Makefile.inc`
You also need a separate file called `tests/data/testNNNN` (using the same
number) that describes your test case. See the test1300 file for inspiration
and the `tests/FILEFORMAT.md` documentation.
-For the actual C file, here's a very simple example:
+For the actual C file, here's a simple example:
~~~c
-#include "curlcheck.h"
-#include "a libcurl header.h" /* from the lib dir */
+ #include "curlcheck.h"
+
+ #include "a libcurl header.h" /* from the lib dir */
-static CURLcode unit_setup( void )
-{
- /* whatever you want done first */
- return CURLE_OK;
-}
+ static CURLcode unit_setup( void )
+ {
+ /* whatever you want done first */
+ return CURLE_OK;
+ }
-static void unit_stop( void )
-{
- /* done before shutting down and exiting */
-}
+ static void unit_stop( void )
+ {
+ /* done before shutting down and exiting */
+ }
-UNITTEST_START
+ UNITTEST_START
- /* here you start doing things and checking that the results are good */
+ /* here you start doing things and checking that the results are good */
- fail_unless( size == 0 , "initial size should be zero" );
- fail_if( head == NULL , "head should not be initiated to NULL" );
+ fail_unless( size == 0 , "initial size should be zero" );
+ fail_if( head == NULL , "head should not be initiated to NULL" );
- /* you end the test code like this: */
+ /* you end the test code like this: */
-UNITTEST_STOP
+ UNITTEST_STOP
diff --git a/tests/unit/curlcheck.h b/tests/unit/curlcheck.h
index 3651551b3..1e8ca0e8e 100644
--- a/tests/unit/curlcheck.h
+++ b/tests/unit/curlcheck.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "test.h"
diff --git a/tests/unit/unit1300.c b/tests/unit/unit1300.c
index aba068a00..493a2f11a 100644
--- a/tests/unit/unit1300.c
+++ b/tests/unit/unit1300.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1301.c b/tests/unit/unit1301.c
index ec5787405..17b2700ba 100644
--- a/tests/unit/unit1301.c
+++ b/tests/unit/unit1301.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1302.c b/tests/unit/unit1302.c
index af337cedf..afc571662 100644
--- a/tests/unit/unit1302.c
+++ b/tests/unit/unit1302.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -30,7 +32,7 @@ static struct Curl_easy *data;
static CURLcode unit_setup(void)
{
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
data = curl_easy_init();
@@ -55,55 +57,67 @@ size_t size = 0;
unsigned char anychar = 'x';
CURLcode rc;
-rc = Curl_base64_encode(data, "i", 1, &output, &size);
+rc = Curl_base64_encode("i", 1, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 4, "size should be 4");
verify_memory(output, "aQ==", 4);
Curl_safefree(output);
-rc = Curl_base64_encode(data, "ii", 2, &output, &size);
+rc = Curl_base64_encode("ii", 2, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 4, "size should be 4");
verify_memory(output, "aWk=", 4);
Curl_safefree(output);
-rc = Curl_base64_encode(data, "iii", 3, &output, &size);
+rc = Curl_base64_encode("iii", 3, &output, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 4, "size should be 4");
verify_memory(output, "aWlp", 4);
Curl_safefree(output);
-rc = Curl_base64_encode(data, "iiii", 4, &output, &size);
+rc = Curl_base64_encode("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);
-rc = Curl_base64_encode(data, "\xff\x01\xfe\x02", 4, &output, &size);
+rc = Curl_base64_encode("\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);
+rc = Curl_base64url_encode("\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);
+fail_unless(size == 6, "size should be 6");
+verify_memory(output, "_wH-Ag", 6);
Curl_safefree(output);
-rc = Curl_base64url_encode(data, "iiii", 4, &output, &size);
+rc = Curl_base64url_encode("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);
+fail_unless(size == 6, "size should be 6");
+verify_memory(output, "aWlpaQ", 6);
Curl_safefree(output);
/* 0 length makes it do strlen() */
-rc = Curl_base64_encode(data, "iiii", 0, &output, &size);
+rc = Curl_base64_encode("iiii", 0, &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);
+rc = Curl_base64_encode("", 0, &output, &size);
+fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
+fail_unless(size == 0, "size should be 0");
+fail_unless(output && !output[0], "output should be a zero-length string");
+Curl_safefree(output);
+
+rc = Curl_base64url_encode("", 0, &output, &size);
+fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
+fail_unless(size == 0, "size should be 0");
+fail_unless(output && !output[0], "output should be a zero-length string");
+Curl_safefree(output);
+
rc = Curl_base64_decode("aWlpaQ==", &decoded, &size);
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
fail_unless(size == 4, "size should be 4");
diff --git a/tests/unit/unit1303.c b/tests/unit/unit1303.c
index 4c25fb963..acc3ed7bf 100644
--- a/tests/unit/unit1303.c
+++ b/tests/unit/unit1303.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -29,7 +31,7 @@ static struct Curl_easy *data;
static CURLcode unit_setup(void)
{
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
data = curl_easy_init();
@@ -99,10 +101,10 @@ UNITTEST_START
{BASE + 12, 0, 10000, 0, FALSE, -2000, "-2000, overdue 2 seconds"},
/* no connect timeout set, connecting */
- {BASE + 4, 0, 10000, 0, FALSE, 6000, "6 seconds should be left"},
- {BASE + 4, 990000, 10000, 0, FALSE, 5010, "5010 ms should be left"},
- {BASE + 10, 0, 10000, 0, FALSE, -1, "timeout is -1, expired"},
- {BASE + 12, 0, 10000, 0, FALSE, -2000, "-2000, overdue 2 seconds"},
+ {BASE + 4, 0, 10000, 0, TRUE, 6000, "6 seconds should be left"},
+ {BASE + 4, 990000, 10000, 0, TRUE, 5010, "5010 ms should be left"},
+ {BASE + 10, 0, 10000, 0, TRUE, -1, "timeout is -1, expired"},
+ {BASE + 12, 0, 10000, 0, TRUE, -2000, "-2000, overdue 2 seconds"},
/* only connect timeout set, not connecting */
{BASE + 4, 0, 0, 10000, FALSE, 0, "no timeout active"},
diff --git a/tests/unit/unit1304.c b/tests/unit/unit1304.c
index a6dc64d6c..3fab94b85 100644
--- a/tests/unit/unit1304.c
+++ b/tests/unit/unit1304.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
#include "netrc.h"
@@ -47,8 +49,6 @@ static void unit_stop(void)
UNITTEST_START
int result;
- bool login_changed;
- bool password_changed;
static const char * const filename1 = "log/netrc1304";
memcpy(filename, filename1, strlen(filename1));
@@ -57,7 +57,7 @@ UNITTEST_START
* Test a non existent host in our netrc file.
*/
result = Curl_parsenetrc("test.example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ filename);
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");
@@ -71,15 +71,13 @@ UNITTEST_START
login = strdup("me");
abort_unless(login != NULL, "returned NULL!");
result = Curl_parsenetrc("example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ filename);
fail_unless(result == 0, "Host should have been found");
abort_unless(password != NULL, "returned NULL!");
fail_unless(password[0] == 0, "password should not have been changed");
- fail_unless(!password_changed, "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");
- fail_unless(!login_changed, "login should not have been changed");
/*
* Test a non existent login and host in our netrc file.
@@ -88,7 +86,7 @@ UNITTEST_START
login = strdup("me");
abort_unless(login != NULL, "returned NULL!");
result = Curl_parsenetrc("test.example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ filename);
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");
@@ -104,15 +102,13 @@ UNITTEST_START
login = strdup("admi");
abort_unless(login != NULL, "returned NULL!");
result = Curl_parsenetrc("example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ filename);
fail_unless(result == 0, "Host should have been found");
abort_unless(password != NULL, "returned NULL!");
fail_unless(password[0] == 0, "password should not have been changed");
- fail_unless(!password_changed, "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");
- fail_unless(!login_changed, "login should not have been changed");
/*
* Test a non existent login (superstring of an existing one)
@@ -122,15 +118,13 @@ UNITTEST_START
login = strdup("adminn");
abort_unless(login != NULL, "returned NULL!");
result = Curl_parsenetrc("example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ filename);
fail_unless(result == 0, "Host should have been found");
abort_unless(password != NULL, "returned NULL!");
fail_unless(password[0] == 0, "password should not have been changed");
- fail_unless(!password_changed, "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");
- fail_unless(!login_changed, "login should not have been changed");
/*
* Test for the first existing host in our netrc file
@@ -140,15 +134,13 @@ UNITTEST_START
login = strdup("");
abort_unless(login != NULL, "returned NULL!");
result = Curl_parsenetrc("example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ filename);
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(password_changed, "password should have been changed");
abort_unless(login != NULL, "returned NULL!");
fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
- fail_unless(login_changed, "login should have been changed");
/*
* Test for the first existing host in our netrc file
@@ -157,16 +149,13 @@ UNITTEST_START
free(password);
password = strdup("");
abort_unless(password != NULL, "returned NULL!");
- result = Curl_parsenetrc("example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ result = Curl_parsenetrc("example.com", &login, &password, filename);
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(password_changed, "password should have been changed");
abort_unless(login != NULL, "returned NULL!");
fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
- fail_unless(!login_changed, "login should not have been changed");
/*
* Test for the second existing host in our netrc file
@@ -179,15 +168,13 @@ UNITTEST_START
login = strdup("");
abort_unless(login != NULL, "returned NULL!");
result = Curl_parsenetrc("curl.example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ filename);
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(password_changed, "password should have been changed");
abort_unless(login != NULL, "returned NULL!");
fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
- fail_unless(login_changed, "login should have been changed");
/*
* Test for the second existing host in our netrc file
@@ -197,14 +184,12 @@ UNITTEST_START
password = strdup("");
abort_unless(password != NULL, "returned NULL!");
result = Curl_parsenetrc("curl.example.com", &login, &password,
- &login_changed, &password_changed, filename);
+ filename);
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(password_changed, "password should have been changed");
abort_unless(login != NULL, "returned NULL!");
fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
- fail_unless(!login_changed, "login should not have been changed");
UNITTEST_STOP
diff --git a/tests/unit/unit1305.c b/tests/unit/unit1305.c
index 8e551c790..a4f70d1d5 100644
--- a/tests/unit/unit1305.c
+++ b/tests/unit/unit1305.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -52,7 +54,7 @@ static CURLcode unit_setup(void)
return CURLE_OUT_OF_MEMORY;
}
- Curl_init_dnscache(&hp);
+ Curl_init_dnscache(&hp, 7);
return CURLE_OK;
}
@@ -73,7 +75,7 @@ static struct Curl_addrinfo *fake_ai(void)
{
static struct Curl_addrinfo *ai;
static const char dummy[]="dummy";
- size_t namelen = sizeof(dummy); /* including the zero terminator */
+ size_t namelen = sizeof(dummy); /* including the null-terminator */
ai = calloc(1, sizeof(struct Curl_addrinfo) + sizeof(struct sockaddr_in) +
namelen);
diff --git a/tests/unit/unit1307.c b/tests/unit/unit1307.c
index a657b61cf..d8fcb8016 100644
--- a/tests/unit/unit1307.c
+++ b/tests/unit/unit1307.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1308.c b/tests/unit/unit1308.c
index b19555bc0..2a866e78a 100644
--- a/tests/unit/unit1308.c
+++ b/tests/unit/unit1308.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1309.c b/tests/unit/unit1309.c
index 6d6a3274f..121dfedec 100644
--- a/tests/unit/unit1309.c
+++ b/tests/unit/unit1309.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1323.c b/tests/unit/unit1323.c
index 165825323..b089282f3 100644
--- a/tests/unit/unit1323.c
+++ b/tests/unit/unit1323.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1330.c b/tests/unit/unit1330.c
index b365798b8..ea6f99699 100644
--- a/tests/unit/unit1330.c
+++ b/tests/unit/unit1330.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1394.c b/tests/unit/unit1394.c
index 035ccf584..f4f05a06c 100644
--- a/tests/unit/unit1394.c
+++ b/tests/unit/unit1394.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1395.c b/tests/unit/unit1395.c
index c362cc3be..c37f942d3 100644
--- a/tests/unit/unit1395.c
+++ b/tests/unit/unit1395.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,13 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
-#include "dotdot.h"
+/* copied from urlapi.c */
+extern char *dedotdotify(const char *input, size_t clen);
#include "memdebug.h"
@@ -75,7 +78,7 @@ UNITTEST_START
};
for(i = 0; i < sizeof(pairs)/sizeof(pairs[0]); i++) {
- char *out = Curl_dedotdotify(pairs[i].input);
+ char *out = dedotdotify(pairs[i].input, strlen(pairs[i].input));
abort_unless(out != NULL, "returned NULL!");
if(strcmp(out, pairs[i].output)) {
diff --git a/tests/unit/unit1396.c b/tests/unit/unit1396.c
index 66f8fc156..05b3323da 100644
--- a/tests/unit/unit1396.c
+++ b/tests/unit/unit1396.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -25,7 +27,7 @@ static CURL *hnd;
static CURLcode unit_setup(void)
{
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
return res;
diff --git a/tests/unit/unit1397.c b/tests/unit/unit1397.c
index 508f41af9..90ec31c68 100644
--- a/tests/unit/unit1397.c
+++ b/tests/unit/unit1397.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,12 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
-#include "hostcheck.h" /* from the lib dir */
+#include "vtls/hostcheck.h" /* from the lib dir */
static CURLcode unit_setup(void)
{
@@ -40,36 +42,49 @@ UNITTEST_START
/* 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"),
+fail_unless(Curl_cert_hostcheck(STRCONST("www.example.com"),
+ STRCONST("www.example.com")), "good 1");
+fail_unless(Curl_cert_hostcheck(STRCONST("*.example.com"),
+ STRCONST("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_unless(Curl_cert_hostcheck(STRCONST("xxx*.example.com"),
+ STRCONST("xxxwww.example.com")), "good 3");
+fail_unless(Curl_cert_hostcheck(STRCONST("f*.example.com"),
+ STRCONST("foo.example.com")), "good 4");
+fail_unless(Curl_cert_hostcheck(STRCONST("192.168.0.0"),
+ STRCONST("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");
+fail_if(Curl_cert_hostcheck(STRCONST("xxx.example.com"),
+ STRCONST("www.example.com")), "bad 1");
+fail_if(Curl_cert_hostcheck(STRCONST("*"),
+ STRCONST("www.example.com")),"bad 2");
+fail_if(Curl_cert_hostcheck(STRCONST("*.*.com"),
+ STRCONST("www.example.com")), "bad 3");
+fail_if(Curl_cert_hostcheck(STRCONST("*.example.com"),
+ STRCONST("baa.foo.example.com")), "bad 4");
+fail_if(Curl_cert_hostcheck(STRCONST("f*.example.com"),
+ STRCONST("baa.example.com")), "bad 5");
+fail_if(Curl_cert_hostcheck(STRCONST("*.com"),
+ STRCONST("example.com")), "bad 6");
+fail_if(Curl_cert_hostcheck(STRCONST("*fail.com"),
+ STRCONST("example.com")), "bad 7");
+fail_if(Curl_cert_hostcheck(STRCONST("*.example."),
+ STRCONST("www.example.")), "bad 8");
+fail_if(Curl_cert_hostcheck(STRCONST("*.example."),
+ STRCONST("www.example")), "bad 9");
+fail_if(Curl_cert_hostcheck(STRCONST(""), STRCONST("www")), "bad 10");
+fail_if(Curl_cert_hostcheck(STRCONST("*"), STRCONST("www")), "bad 11");
+fail_if(Curl_cert_hostcheck(STRCONST("*.168.0.0"),
+ STRCONST("192.168.0.0")), "bad 12");
+fail_if(Curl_cert_hostcheck(STRCONST("www.example.com"),
+ STRCONST("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");
+fail_if(Curl_cert_hostcheck(STRCONST("*::3285:a9ff:fe46:b619"),
+ STRCONST("fe80::3285:a9ff:fe46:b619")), "bad 14");
+fail_unless(Curl_cert_hostcheck(STRCONST("fe80::3285:a9ff:fe46:b619"),
+ STRCONST("fe80::3285:a9ff:fe46:b619")),
+ "good 6");
#endif
#endif
diff --git a/tests/unit/unit1398.c b/tests/unit/unit1398.c
index e73ce24b0..662e3bdbc 100644
--- a/tests/unit/unit1398.c
+++ b/tests/unit/unit1398.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -87,4 +89,8 @@ rc = curl_msnprintf(output, 16, "%8d%8d", 1234, 5678);
fail_unless(rc == 15, "return code should be 15");
fail_unless(!strcmp(output, " 1234 567"), "wrong output");
+/* double precision */
+rc = curl_msnprintf(output, 24, "%.*1$.99d", 3, 5678);
+fail_unless(rc == 0, "return code should be 0");
+
UNITTEST_STOP
diff --git a/tests/unit/unit1399.c b/tests/unit/unit1399.c
index 261e0b115..c364650fc 100644
--- a/tests/unit/unit1399.c
+++ b/tests/unit/unit1399.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1600.c b/tests/unit/unit1600.c
index 506a120b2..544744840 100644
--- a/tests/unit/unit1600.c
+++ b/tests/unit/unit1600.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -28,7 +30,7 @@ static CURL *easy;
static CURLcode unit_setup(void)
{
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
easy = curl_easy_init();
@@ -51,20 +53,20 @@ UNITTEST_START
defined(USE_WIN32_CRYPTO))
unsigned char output[21];
unsigned char *testp = output;
- Curl_ntlm_core_mk_nt_hash(easy, "1", output);
+ Curl_ntlm_core_mk_nt_hash("1", output);
verify_memory(testp,
"\x69\x94\x3c\x5e\x63\xb4\xd2\xc1\x04\xdb"
"\xbc\xc1\x51\x38\xb7\x2b\x00\x00\x00\x00\x00", 21);
- Curl_ntlm_core_mk_nt_hash(easy, "hello-you-fool", output);
+ Curl_ntlm_core_mk_nt_hash("hello-you-fool", output);
verify_memory(testp,
"\x39\xaf\x87\xa6\x75\x0a\x7a\x00\xba\xa0"
"\xd3\x4f\x04\x9e\xc1\xd0\x00\x00\x00\x00\x00", 21);
/* !checksrc! disable LONGLINE 2 */
- Curl_ntlm_core_mk_nt_hash(easy, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", output);
+ Curl_ntlm_core_mk_nt_hash("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", output);
verify_memory(testp,
"\x36\x9d\xae\x06\x84\x7e\xe1\xc1\x4a\x94\x39\xea\x6f\x44\x8c\x65\x00\x00\x00\x00\x00", 21);
diff --git a/tests/unit/unit1601.c b/tests/unit/unit1601.c
index 4bee3f078..c598c0cf7 100644
--- a/tests/unit/unit1601.c
+++ b/tests/unit/unit1601.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1602.c b/tests/unit/unit1602.c
index bb6e504c4..aa2b463aa 100644
--- a/tests/unit/unit1602.c
+++ b/tests/unit/unit1602.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1603.c b/tests/unit/unit1603.c
index 86641d61f..e8640a760 100644
--- a/tests/unit/unit1603.c
+++ b/tests/unit/unit1603.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2015 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1604.c b/tests/unit/unit1604.c
index d811858df..f7f8cee3d 100644
--- a/tests/unit/unit1604.c
+++ b/tests/unit/unit1604.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1605.c b/tests/unit/unit1605.c
index 26115a834..34a3690fa 100644
--- a/tests/unit/unit1605.c
+++ b/tests/unit/unit1605.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -27,7 +29,7 @@ static CURL *easy;
static CURLcode unit_setup(void)
{
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
easy = curl_easy_init();
diff --git a/tests/unit/unit1606.c b/tests/unit/unit1606.c
index 8dee3b46e..0519b7c89 100644
--- a/tests/unit/unit1606.c
+++ b/tests/unit/unit1606.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -28,7 +30,7 @@ static CURL *easy;
static CURLcode unit_setup(void)
{
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
easy = curl_easy_init();
diff --git a/tests/unit/unit1607.c b/tests/unit/unit1607.c
index 8da06f1d0..7295f1883 100644
--- a/tests/unit/unit1607.c
+++ b/tests/unit/unit1607.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -34,7 +36,7 @@ static void unit_stop(void)
static CURLcode unit_setup(void)
{
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
diff --git a/tests/unit/unit1608.c b/tests/unit/unit1608.c
index 45ca7a3a8..64ef90fe8 100644
--- a/tests/unit/unit1608.c
+++ b/tests/unit/unit1608.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1609.c b/tests/unit/unit1609.c
index a8458329a..cab8383d0 100644
--- a/tests/unit/unit1609.c
+++ b/tests/unit/unit1609.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -34,7 +36,7 @@ static void unit_stop(void)
static CURLcode unit_setup(void)
{
- int res = CURLE_OK;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
diff --git a/tests/unit/unit1610.c b/tests/unit/unit1610.c
index 2a18f5c5f..78d415c18 100644
--- a/tests/unit/unit1610.c
+++ b/tests/unit/unit1610.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -25,12 +27,14 @@
static CURLcode unit_setup(void)
{
- return CURLE_OK;
+ CURLcode res = CURLE_OK;
+ global_init(CURL_GLOBAL_ALL);
+ return res;
}
static void unit_stop(void)
{
-
+ curl_global_cleanup();
}
UNITTEST_START
diff --git a/tests/unit/unit1611.c b/tests/unit/unit1611.c
index 948484b53..46f9aa85a 100644
--- a/tests/unit/unit1611.c
+++ b/tests/unit/unit1611.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1612.c b/tests/unit/unit1612.c
index caddd02a0..d0e221cbd 100644
--- a/tests/unit/unit1612.c
+++ b/tests/unit/unit1612.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1614.c b/tests/unit/unit1614.c
new file mode 100644
index 000000000..60285450c
--- /dev/null
+++ b/tests/unit/unit1614.c
@@ -0,0 +1,133 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#include "noproxy.h"
+
+static CURLcode unit_setup(void)
+{
+ return CURLE_OK;
+}
+
+static void unit_stop(void)
+{
+
+}
+
+struct check {
+ const char *a;
+ const char *n;
+ unsigned int bits;
+ bool match;
+};
+
+struct noproxy {
+ const char *a;
+ const char *n;
+ bool match;
+};
+
+UNITTEST_START
+#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_PROXY)
+{
+ int i;
+ int err = 0;
+ struct check list4[]= {
+ { "192.160.0.1", "192.160.0.1", 33, FALSE},
+ { "192.160.0.1", "192.160.0.1", 32, TRUE},
+ { "192.160.0.1", "192.160.0.1", 0, TRUE},
+ { "192.160.0.1", "192.160.0.1", 24, TRUE},
+ { "192.160.0.1", "192.160.0.1", 26, TRUE},
+ { "192.160.0.1", "192.160.0.1", 20, TRUE},
+ { "192.160.0.1", "192.160.0.1", 18, TRUE},
+ { "192.160.0.1", "192.160.0.1", 12, TRUE},
+ { "192.160.0.1", "192.160.0.1", 8, TRUE},
+ { "192.160.0.1", "10.0.0.1", 8, FALSE},
+ { "192.160.0.1", "10.0.0.1", 32, FALSE},
+ { "192.160.0.1", "10.0.0.1", 0, FALSE},
+ { NULL, NULL, 0, FALSE} /* end marker */
+ };
+ struct check list6[]= {
+ { "::1", "::1", 0, TRUE},
+ { "::1", "::1", 128, TRUE},
+ { "::1", "0:0::1", 128, TRUE},
+ { "::1", "0:0::1", 129, FALSE},
+ { "fe80::ab47:4396:55c9:8474", "fe80::ab47:4396:55c9:8474", 64, TRUE},
+ { NULL, NULL, 0, FALSE} /* end marker */
+ };
+ struct noproxy list[]= {
+ { "foobar", "barfoo", FALSE},
+ { "foobar", "foobar", TRUE},
+ { "192.168.0.1", "foobar", FALSE},
+ { "192.168.0.1", "192.168.0.0/16", TRUE},
+ { "192.168.0.1", "192.168.0.0/24", TRUE},
+ { "192.168.0.1", "192.168.0.0/32", FALSE},
+ { "192.168.0.1", "192.168.0.0", FALSE},
+ { "192.168.1.1", "192.168.0.0/24", FALSE},
+ { "192.168.1.1", "foo, bar, 192.168.0.0/24", FALSE},
+ { "192.168.1.1", "foo, bar, 192.168.0.0/16", TRUE},
+ { "[::1]", "foo, bar, 192.168.0.0/16", FALSE},
+ { "[::1]", "foo, bar, ::1/64", TRUE},
+ { "bar", "foo, bar, ::1/64", TRUE},
+ { "BAr", "foo, bar, ::1/64", TRUE},
+ { "BAr", "foo,,,,, bar, ::1/64", TRUE},
+ { "www.example.com", "foo, .example.com", TRUE},
+ { "www.example.com", "www2.example.com, .example.net", FALSE},
+ { "example.com", ".example.com, .example.net", TRUE},
+ { "nonexample.com", ".example.com, .example.net", FALSE},
+ { NULL, NULL, FALSE}
+ };
+ for(i = 0; list4[i].a; i++) {
+ bool match = Curl_cidr4_match(list4[i].a, list4[i].n, list4[i].bits);
+ if(match != list4[i].match) {
+ fprintf(stderr, "%s in %s/%u should %smatch\n",
+ list4[i].a, list4[i].n, list4[i].bits,
+ list4[i].match ? "": "not ");
+ err++;
+ }
+ }
+ for(i = 0; list6[i].a; i++) {
+ bool match = Curl_cidr6_match(list6[i].a, list6[i].n, list6[i].bits);
+ if(match != list6[i].match) {
+ fprintf(stderr, "%s in %s/%u should %smatch\n",
+ list6[i].a, list6[i].n, list6[i].bits,
+ list6[i].match ? "": "not ");
+ err++;
+ }
+ }
+ for(i = 0; list[i].a; i++) {
+ bool match = Curl_check_noproxy(list[i].a, list[i].n);
+ if(match != list[i].match) {
+ fprintf(stderr, "%s in %s should %smatch\n",
+ list[i].a, list[i].n,
+ list[i].match ? "": "not ");
+ err++;
+ }
+ }
+ return err;
+}
+#else
+return 0;
+#endif
+UNITTEST_STOP
diff --git a/tests/unit/unit1620.c b/tests/unit/unit1620.c
index 4f1aaaf0a..cd4623d6b 100644
--- a/tests/unit/unit1620.c
+++ b/tests/unit/unit1620.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -28,11 +30,14 @@
static CURLcode unit_setup(void)
{
- return CURLE_OK;
+ CURLcode res = CURLE_OK;
+ global_init(CURL_GLOBAL_ALL);
+ return res;
}
static void unit_stop(void)
{
+ curl_global_cleanup();
}
UNITTEST_START
diff --git a/tests/unit/unit1621.c b/tests/unit/unit1621.c
index 87550d137..9147d4070 100644
--- a/tests/unit/unit1621.c
+++ b/tests/unit/unit1621.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -45,7 +47,7 @@ UNITTEST_START
UNITTEST_STOP
#else
-bool stripcredentials(char **url);
+char *stripcredentials(const char *url);
struct checkthis {
const char *input;
@@ -65,25 +67,22 @@ static const struct checkthis tests[] = {
UNITTEST_START
{
- bool cleanup;
- char *url;
int i;
int rc = 0;
for(i = 0; tests[i].input; i++) {
- url = (char *)tests[i].input;
- cleanup = stripcredentials(&url);
+ const char *url = tests[i].input;
+ char *stripped = stripcredentials(url);
printf("Test %u got input \"%s\", output: \"%s\"\n",
- i, tests[i].input, url);
+ i, tests[i].input, stripped);
- if(strcmp(tests[i].output, url)) {
+ if(stripped && strcmp(tests[i].output, stripped)) {
fprintf(stderr, "Test %u got input \"%s\", expected output \"%s\"\n"
" Actual output: \"%s\"\n", i, tests[i].input, tests[i].output,
- url);
+ stripped);
rc++;
}
- if(cleanup)
- curl_free(url);
+ curl_free(stripped);
}
return rc;
}
diff --git a/tests/unit/unit1650.c b/tests/unit/unit1650.c
index 0e74845c3..ae748a971 100644
--- a/tests/unit/unit1650.c
+++ b/tests/unit/unit1650.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1651.c b/tests/unit/unit1651.c
index 9de583930..3f92f820c 100644
--- a/tests/unit/unit1651.c
+++ b/tests/unit/unit1651.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,10 +18,12 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
-#include "x509asn1.h"
+#include "vtls/x509asn1.h"
static CURLcode unit_setup(void)
{
@@ -32,8 +34,8 @@ static void unit_stop(void)
{
}
-#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
- defined(USE_WOLFSSL) || defined(USE_SCHANNEL)
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
+ defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
/* cert captured from gdb when connecting to curl.se on October 26
2018 */
diff --git a/tests/unit/unit1652.c b/tests/unit/unit1652.c
index 56dad0c34..761bf8c64 100644
--- a/tests/unit/unit1652.c
+++ b/tests/unit/unit1652.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -59,7 +61,7 @@ debugf_cb(CURL *handle, curl_infotype type, char *buf, size_t size,
static CURLcode
unit_setup(void)
{
- int res = 0;
+ CURLcode res = CURLE_OK;
global_init(CURL_GLOBAL_ALL);
data = curl_easy_init();
@@ -69,7 +71,7 @@ unit_setup(void)
}
curl_easy_setopt(data, CURLOPT_DEBUGFUNCTION, debugf_cb);
curl_easy_setopt(data, CURLOPT_VERBOSE, 1L);
- return CURLE_OK;
+ return res;
}
static void
diff --git a/tests/unit/unit1653.c b/tests/unit/unit1653.c
index 7d02ae6de..40a21dd06 100644
--- a/tests/unit/unit1653.c
+++ b/tests/unit/unit1653.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -42,6 +44,19 @@ unit_stop(void)
#define free_and_clear(x) free(x); x = NULL
+static CURLUcode parse_port(CURLU *url,
+ char *h, bool has_scheme)
+{
+ struct dynbuf host;
+ CURLUcode ret;
+ Curl_dyn_init(&host, 10000);
+ if(Curl_dyn_add(&host, h))
+ return CURLUE_OUT_OF_MEMORY;
+ ret = Curl_parse_port(url, &host, has_scheme);
+ Curl_dyn_free(&host);
+ return ret;
+}
+
UNITTEST_START
{
CURLUcode ret;
@@ -55,8 +70,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15]");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret == CURLUE_OK, "parse_port returned error");
ret = curl_url_get(u, CURLUPART_PORT, &portnum, CURLU_NO_DEFAULT_PORT);
fail_unless(ret != CURLUE_OK, "curl_url_get portnum returned something");
free_and_clear(ipv6port);
@@ -69,8 +84,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15|");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret != CURLUE_OK, "Curl_parse_port true on error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret != CURLUE_OK, "parse_port true on error");
free_and_clear(ipv6port);
curl_url_cleanup(u);
@@ -80,8 +95,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff;fea7:da15]:80");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret != CURLUE_OK, "Curl_parse_port true on error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret != CURLUE_OK, "parse_port true on error");
free_and_clear(ipv6port);
curl_url_cleanup(u);
@@ -92,8 +107,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15%25eth3]:80");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret == CURLUE_OK, "parse_port returned error");
ret = curl_url_get(u, CURLUPART_PORT, &portnum, 0);
fail_unless(ret == CURLUE_OK, "curl_url_get portnum returned error");
fail_unless(portnum && !strcmp(portnum, "80"), "Check portnumber");
@@ -108,8 +123,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15%25eth3]");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret == CURLUE_OK, "parse_port returned error");
free_and_clear(ipv6port);
curl_url_cleanup(u);
@@ -120,8 +135,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15]:81");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret == CURLUE_OK, "parse_port returned error");
ret = curl_url_get(u, CURLUPART_PORT, &portnum, 0);
fail_unless(ret == CURLUE_OK, "curl_url_get portnum returned error");
fail_unless(portnum && !strcmp(portnum, "81"), "Check portnumber");
@@ -136,8 +151,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15];81");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret != CURLUE_OK, "Curl_parse_port true on error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret != CURLUE_OK, "parse_port true on error");
free_and_clear(ipv6port);
curl_url_cleanup(u);
@@ -147,8 +162,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15]80");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret != CURLUE_OK, "Curl_parse_port true on error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret != CURLUE_OK, "parse_port true on error");
free_and_clear(ipv6port);
curl_url_cleanup(u);
@@ -160,8 +175,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15]:");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, TRUE);
- fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+ ret = parse_port(u, ipv6port, TRUE);
+ fail_unless(ret == CURLUE_OK, "parse_port returned error");
free_and_clear(ipv6port);
curl_url_cleanup(u);
@@ -172,8 +187,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15!25eth3]:80");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret != CURLUE_OK, "Curl_parse_port returned non-error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret != CURLUE_OK, "parse_port returned non-error");
free_and_clear(ipv6port);
curl_url_cleanup(u);
@@ -184,8 +199,8 @@ UNITTEST_START
ipv6port = strdup("[fe80::250:56ff:fea7:da15%eth3]:80");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret == CURLUE_OK, "parse_port returned error");
free_and_clear(ipv6port);
curl_url_cleanup(u);
@@ -198,8 +213,8 @@ UNITTEST_START
"aaaaaaaaaaaaaaaaaaaaaa:");
if(!ipv6port)
goto fail;
- ret = Curl_parse_port(u, ipv6port, FALSE);
- fail_unless(ret == CURLUE_BAD_PORT_NUMBER, "Curl_parse_port did wrong");
+ ret = parse_port(u, ipv6port, FALSE);
+ fail_unless(ret == CURLUE_BAD_PORT_NUMBER, "parse_port did wrong");
fail:
free(ipv6port);
curl_url_cleanup(u);
diff --git a/tests/unit/unit1654.c b/tests/unit/unit1654.c
index acd2cd62f..1e4a53550 100644
--- a/tests/unit/unit1654.c
+++ b/tests/unit/unit1654.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/unit/unit1655.c b/tests/unit/unit1655.c
index 1d7880d58..b5c9a3672 100644
--- a/tests/unit/unit1655.c
+++ b/tests/unit/unit1655.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -45,7 +47,7 @@ UNITTEST_START
* Prove detection of other invalid input.
*/
do {
- const char *max =
+ static const char max[] =
/* ..|....1.........2.........3.........4.........5.........6... */
/* 3456789012345678901234567890123456789012345678901234567890123 */
"this.is.a.maximum-length.hostname." /* 34: 34 */
@@ -57,7 +59,7 @@ do {
"that.is.two-hundred.and.fifty-six." /* 34: 231 */
"including.the.last.null." /* 24: 255 */
"";
- const char *toolong =
+ static const char toolong[] =
/* ..|....1.........2.........3.........4.........5.........6... */
/* 3456789012345678901234567890123456789012345678901234567890123 */
"here.is.a.hostname.which.is.just.barely.too.long." /* 49: 49 */
@@ -68,10 +70,10 @@ do {
"a.trailing.dot.may.have.up.to." /* 30: 230 */
"255.characters.never.more." /* 26: 256 */
"";
- const char *emptylabel =
+ static const char emptylabel[] =
"this.is.an.otherwise-valid.hostname."
".with.an.empty.label.";
- const char *outsizelabel =
+ static const char outsizelabel[] =
"this.is.an.otherwise-valid.hostname."
"with-a-label-of-greater-length-than-the-sixty-three-characters-"
"specified.in.the.RFCs.";
@@ -103,7 +105,7 @@ do {
struct demo victim;
DOHcode d;
- victim.canary1 = 87; /* magic numbers, arbritrarily picked */
+ victim.canary1 = 87; /* magic numbers, arbitrarily picked */
victim.canary2 = 35;
victim.canary3 = 41;
d = doh_encode(name, DNS_TYPE_A, victim.dohbuffer,
diff --git a/tests/unit/unit1660.c b/tests/unit/unit1660.c
index 43efa24b3..4ef7faa73 100644
--- a/tests/unit/unit1660.c
+++ b/tests/unit/unit1660.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
@@ -101,7 +103,7 @@ static const struct testit headers[] = {
/* make this live for 7 seconds */
{ "expire.example", NULL, "max-age=\"7\"\r\n", CURLE_OK },
- { NULL, NULL, NULL, 0 }
+ { NULL, NULL, NULL, CURLE_OK }
};
static void showsts(struct stsentry *e, const char *chost)
diff --git a/tests/unit/unit1661.c b/tests/unit/unit1661.c
index c32d6f164..59cc5a9ec 100644
--- a/tests/unit/unit1661.c
+++ b/tests/unit/unit1661.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
+ * SPDX-License-Identifier: curl
+ *
***************************************************************************/
#include "curlcheck.h"
diff --git a/tests/util.py b/tests/util.py
index 3c2fb6b7c..b8c4ebd53 100755
--- a/tests/util.py
+++ b/tests/util.py
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2017 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2017 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
"""Module for extracting test data from the test data folder and other utils"""
from __future__ import (absolute_import, division, print_function,
diff --git a/tests/valgrind.pm b/tests/valgrind.pm
index 6d457259d..8916b5925 100644
--- a/tests/valgrind.pm
+++ b/tests/valgrind.pm
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
use File::Basename;
diff --git a/tests/version-scan.pl b/tests/version-scan.pl
index 566436556..b52459d0a 100755
--- a/tests/version-scan.pl
+++ b/tests/version-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
###########################################################################
#
# Verify that curl_version_info.3 documents all the CURL_VERSION_ bits
diff --git a/winbuild/Makefile.vc b/winbuild/Makefile.vc
index 098561333..594b16fcc 100644
--- a/winbuild/Makefile.vc
+++ b/winbuild/Makefile.vc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
!IF "$(MODE)"=="static"
@@ -149,6 +151,23 @@ NGHTTP2 = static
USE_NGHTTP2 = false
!ENDIF
+!IF "$(ENABLE_MSH3)"=="yes"
+# compatibility bit, WITH_MSH3 is the correct flag
+WITH_MSH3 = dll
+USE_MSH3 = true
+MSH3 = dll
+!ELSEIF "$(WITH_MSH3)"=="dll"
+USE_MSH3 = true
+MSH3 = dll
+!ELSEIF "$(WITH_MSH3)"=="static"
+USE_MSH3 = true
+MSH3 = static
+!ENDIF
+
+!IFNDEF USE_MSH3
+USE_MSH3 = false
+!ENDIF
+
!IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
USE_MBEDTLS = true
MBEDTLS = $(WITH_MBEDTLS)
@@ -178,6 +197,14 @@ USE_SSH2 = true
SSH2 = static
!ENDIF
+!IF "$(WITH_SSH)"=="dll"
+USE_SSH = true
+SSH = dll
+!ELSEIF "$(WITH_SSH)"=="static"
+USE_SSH = true
+SSH = static
+!ENDIF
+
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-vc$(VC)-$(MACHINE)
!IF "$(DEBUG)"=="yes"
@@ -212,6 +239,10 @@ CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB)
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh2-$(SSH2)
!ENDIF
+!IF "$(USE_SSH)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh-$(SSH)
+!ENDIF
+
!IF "$(USE_IPV6)"=="true"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6
!ENDIF
@@ -228,6 +259,10 @@ CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-schannel
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-nghttp2-$(NGHTTP2)
!ENDIF
+!IF "$(USE_MSH3)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-msh3
+!ENDIF
+
!MESSAGE configuration name: $(CONFIG_NAME_LIB)
BUILD_DIR=../builds/$(CONFIG_NAME_LIB)
@@ -249,6 +284,7 @@ $(MODE):
@SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
@SET MACHINE=$(MACHINE)
@SET USE_NGHTTP2=$(USE_NGHTTP2)
+ @SET USE_MSH3=$(USE_MSH3)
@SET USE_IDN=$(USE_IDN)
@SET USE_IPV6=$(USE_IPV6)
@SET USE_SSPI=$(USE_SSPI)
diff --git a/winbuild/MakefileBuild.vc b/winbuild/MakefileBuild.vc
index fa26d7f16..727ef0850 100644
--- a/winbuild/MakefileBuild.vc
+++ b/winbuild/MakefileBuild.vc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
+# SPDX-License-Identifier: curl
+#
#***************************************************************************
###########################################################################
@@ -164,6 +166,26 @@ NGHTTP2_LIBS = nghttp2.lib
!ENDIF
!ENDIF
+!IFDEF MSH3_PATH
+MSH3_INC_DIR = $(MSH3_PATH)\include
+MSH3_LIB_DIR = $(MSH3_PATH)\lib
+MSH3_LFLAGS = $(MSH3_LFLAGS) "/LIBPATH:$(MSH3_LIB_DIR)"
+!ELSE
+MSH3_INC_DIR = $(DEVEL_INCLUDE)
+MSH3_LIB_DIR = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_MSH3)"=="dll"
+MSH3_CFLAGS = /DUSE_MSH3 /I"$(MSH3_INC_DIR)"
+MSH3_LIBS = msh3.lib
+!ELSEIF "$(WITH_MSH3)"=="static"
+MSH3_CFLAGS = /DUSE_MSH3 /DMSH3_STATICLIB /I"$(MSH3_INC_DIR)"
+!IF EXISTS("$(NGHTTP2_LIB_DIR)\msh3_static.lib")
+MSH3_LIBS = msh3_static.lib
+!ELSE
+MSH3_LIBS = msh3.lib
+!ENDIF
+!ENDIF
!IFDEF MBEDTLS_PATH
MBEDTLS_INC_DIR = $(MBEDTLS_PATH)\include
@@ -253,7 +275,7 @@ ZLIB = static
!ENDIF
!IFDEF USE_ZLIB
-ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ $(ADDITIONAL_ZLIB_CFLAGS) /I"$(ZLIB_INC_DIR)"
+ZLIB_CFLAGS = /DHAVE_LIBZ $(ADDITIONAL_ZLIB_CFLAGS) /I"$(ZLIB_INC_DIR)"
!ENDIF
@@ -283,8 +305,29 @@ SSH2 = static
!ENDIF
!IFDEF USE_SSH2
-SSH2_CFLAGS = /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /DUSE_LIBSSH2
-SSH2_CFLAGS = $(SSH2_CFLAGS) /I$(SSH2_INC_DIR)
+SSH2_CFLAGS = /DUSE_LIBSSH2
+SSH2_CFLAGS = $(SSH2_CFLAGS) /I"$(SSH2_INC_DIR)"
+!ENDIF
+
+
+!IFDEF SSH_PATH
+SSH_INC_DIR= $(SSH_PATH)\include
+SSH_LIB_DIR= $(SSH_PATH)\lib
+SSH_LFLAGS = $(SSH_LFLAGS) "/LIBPATH:$(SSH_LIB_DIR)"
+!ELSE
+SSH_LIB_DIR= $(DEVEL_LIB)
+SSH_INC_DIR= $(DEVEL_INCLUDE)
+!ENDIF
+
+!IF "$(WITH_SSH)"=="dll" || "$(WITH_SSH)"=="static"
+SSH_LIBS = ssh.lib
+USE_SSH = true
+SSH = $(WITH_SSH)
+!ENDIF
+
+!IFDEF USE_SSH
+SSH_CFLAGS = /DUSE_LIBSSH
+SSH_CFLAGS = $(SSH_CFLAGS) /I"$(SSH_INC_DIR)"
!ENDIF
@@ -449,6 +492,11 @@ CFLAGS = $(CFLAGS) $(SSH2_CFLAGS)
LFLAGS = $(LFLAGS) $(SSH2_LFLAGS) $(SSH2_LIBS)
!ENDIF
+!IF "$(USE_SSH)"=="true"
+CFLAGS = $(CFLAGS) $(SSH_CFLAGS)
+LFLAGS = $(LFLAGS) $(SSH_LFLAGS) $(SSH_LIBS)
+!ENDIF
+
!IF "$(USE_IDN)"=="true"
CFLAGS = $(CFLAGS) $(IDN_CFLAGS)
!ENDIF
@@ -466,6 +514,11 @@ CFLAGS = $(CFLAGS) $(NGHTTP2_CFLAGS)
LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS)
!ENDIF
+!IF "$(USE_MSH3)"=="true"
+CFLAGS = $(CFLAGS) $(MSH3_CFLAGS)
+LFLAGS = $(LFLAGS) $(MSH3_LFLAGS) $(MSH3_LIBS)
+!ENDIF
+
!IF "$(GEN_PDB)"=="true"
CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"
LFLAGS = $(LFLAGS) $(LFLAGS_PDB)
@@ -519,8 +572,10 @@ package: $(TARGET)
$(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DIRDIST)
@echo Using SSL: $(USE_SSL)
@echo Using NGHTTP2: $(USE_NGHTTP2)
+ @echo Using MSH3: $(USE_MSH3)
@echo Using c-ares: $(USE_CARES)
@echo Using SSH2: $(USE_SSH2)
+ @echo Using SSH: $(USE_SSH)
@echo Using ZLIB: $(USE_ZLIB)
@echo Using IDN: $(USE_IDN)
@echo Using IPv6: $(USE_IPV6)
@@ -566,20 +621,20 @@ $(CURL_DIROBJ):
.SUFFIXES: .c .obj .res
-{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj:
- $(CURL_CC) $(CFLAGS) /Fo"$@" $<
+{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\\" $<
-{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj:
- $(CURL_CC) $(CFLAGS) /Fo"$@" $<
+{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vauth\\" $<
-{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj:
- $(CURL_CC) $(CFLAGS) /Fo"$@" $<
+{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vtls\\" $<
-{$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj:
- $(CURL_CC) $(CFLAGS) /Fo"$@" $<
+{$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vssh\\" $<
-{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj:
- $(CURL_CC) $(CFLAGS) /Fo"$@" $<
+{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vquic\\" $<
$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc
$(RC) $(RC_FLAGS)
@@ -607,7 +662,6 @@ CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \
$(CURL_DIROBJ)\nonblock.obj \
$(CURL_DIROBJ)\strtoofft.obj \
$(CURL_DIROBJ)\warnless.obj \
- $(CURL_DIROBJ)\curl_ctype.obj \
$(CURL_DIROBJ)\curl_multibyte.obj \
$(CURL_DIROBJ)\version_win32.obj \
$(CURL_DIROBJ)\dynbuf.obj
@@ -616,8 +670,8 @@ $(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
$(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
$(MANIFESTTOOL)
-{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj:
- $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" $<
+{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj::
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$(CURL_DIROBJ)\\" $<
$(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c
$(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c
@@ -627,8 +681,6 @@ $(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c
$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c
$(CURL_DIROBJ)\warnless.obj: ../lib/warnless.c
$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/warnless.c
-$(CURL_DIROBJ)\curl_ctype.obj: ../lib/curl_ctype.c
- $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curl_ctype.c
$(CURL_DIROBJ)\curl_multibyte.obj: ../lib/curl_multibyte.c
$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curl_multibyte.c
$(CURL_DIROBJ)\version_win32.obj: ../lib/version_win32.c
diff --git a/winbuild/README.md b/winbuild/README.md
index 3684a382d..fe35a2145 100644
--- a/winbuild/README.md
+++ b/winbuild/README.md
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
# Building curl with Visual C++
This document describes how to compile, build and install curl and libcurl
@@ -15,8 +21,8 @@
## Prerequisites
- If you wish to support zlib, openssl, c-ares, ssh2, you will have to download
- them separately and copy them to the deps directory as shown below:
+ If you wish to support zlib, OpenSSL, c-ares, ssh2, you will have to download
+ them separately and copy them to the `deps` directory as shown below:
somedirectory\
|_curl-src
@@ -27,8 +33,8 @@
|_ include
|_ bin
- It is also possible to create the deps directory in some other random places
- and tell the Makefile its location using the WITH_DEVEL option.
+ It is also possible to create the `deps` directory in some other random places
+ and tell the `Makefile` its location using the `WITH_DEVEL` option.
## Building straight from git
@@ -53,10 +59,10 @@ Open a Visual Studio Command prompt:
Using the **'VS [version] [platform] [type] Command Prompt'** menu entry:
where [version] is the Visual Studio version, [platform] is e.g. x64 and
- [type] Native of Cross platform build. This type of command prompt may not
+ [type] Native of Cross platform build. This type of command prompt may not
exist in all Visual Studio versions.
- See also: [Set the Path and Environment Variables for Command-Line Builds](https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx)
+ See also: [Set the Path and Environment Variables for Command-Line Builds](https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line)
## Build in the console
@@ -75,14 +81,14 @@ where `<options>` is one or many of:
- `VC=<num>` - VC version. 6 or later.
- `WITH_DEVEL=<path>` - Paths for the development files (SSL, zlib, etc.)
- Defaults to sibbling directory deps: ../deps
- Libraries can be fetched at https://windows.php.net/downloads/php-sdk/deps/
- Uncompress them into the deps folder.
+ Defaults to sibling directory: `../deps`
- `WITH_SSL=<dll/static>` - Enable OpenSSL support, DLL or static
- `WITH_NGHTTP2=<dll/static>` - Enable HTTP/2 support, DLL or static
+ - `WITH_MSH3=<dll/static>` - Enable (experimental) HTTP/3 support, DLL or static
- `WITH_MBEDTLS=<dll/static>` - Enable mbedTLS support, DLL or static
- `WITH_CARES=<dll/static>` - Enable c-ares support, DLL or static
- `WITH_ZLIB=<dll/static>` - Enable zlib support, DLL or static
+ - `WITH_SSH=<dll/static>` - Enable libSSH support, DLL or static
- `WITH_SSH2=<dll/static>` - Enable libSSH2 support, DLL or static
- `WITH_PREFIX=<dir>` - Where to install the build
- `ENABLE_SSPI=<yes/no>` - Enable SSPI support, defaults to yes
@@ -102,27 +108,87 @@ where `<options>` is one or many of:
- `CARES_PATH=<path>` - Custom path for c-ares
- `MBEDTLS_PATH=<path>` - Custom path for mbedTLS
- `NGHTTP2_PATH=<path>` - Custom path for nghttp2
+ - `MSH3_PATH=<path>` - Custom path for msh3
- `SSH2_PATH=<path>` - Custom path for libSSH2
- `SSL_PATH=<path>` - Custom path for OpenSSL
- `ZLIB_PATH=<path>` - Custom path for zlib
-## Static linking of Microsoft's C RunTime (CRT):
+## Static linking of Microsoft's C runtime (CRT):
If you are using mode=static nmake will create and link to the static build
of libcurl but *not* the static CRT. If you must you can force nmake to link
- in the static CRT by passing RTLIBCFG=static. Typically you shouldn't use
- that option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used
- and therefore rarely tested. When passing RTLIBCFG for a configuration that
+ in the static CRT by passing `RTLIBCFG=static`. Typically you shouldn't use
+ that option, and nmake will default to the DLL CRT. `RTLIBCFG` is rarely used
+ and therefore rarely tested. When passing `RTLIBCFG` for a configuration that
was already built but not with that option, or if the option was specified
differently, you must destroy the build directory containing the
configuration so that nmake can build it from scratch.
+ This option is not recommended unless you have enough development experience
+ to know how to match the runtime library for linking (that is, the CRT). If
+ `RTLIBCFG=static` then release builds use `/MT` and debug builds use `/MTd`.
+
+## Building your own application with libcurl (Visual Studio example)
+
+ When you build curl and libcurl, nmake will show the relative path where the
+ output directory is. The output directory is named from the options nmake used
+ when building. You may also see temp directories of the same name but with
+ suffixes -obj-curl and -obj-lib.
+
+ For example let's say you've built curl.exe and libcurl.dll from the Visual
+ Studio 2010 x64 Win64 Command Prompt:
+
+ nmake /f Makefile.vc mode=dll VC=10
+
+ The output directory will have a name similar to
+ `..\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel`.
+
+ The output directory contains subdirectories bin, lib and include. Those are
+ the directories to set in your Visual Studio project. You can either copy the
+ output directory to your project or leave it in place. Following the example,
+ let's assume you leave it in place and your curl top source directory is
+ `C:\curl-7.82.0`. You would set these options for configurations using the
+ x64 platform:
+
+~~~
+ - Configuration Properties > Debugging > Environment
+ PATH=C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\bin;%PATH%
+
+ - C/C++ > General > Additional Include Directories
+ C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\include;
+
+ - Linker > General > Additional Library Directories
+ C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\lib;
+
+ - Linker > Input > Additional Dependencies
+ libcurl.lib;
+~~~
+
+ For configurations using the x86 platform (aka Win32 platform) you would
+ need to make a separate x86 build of libcurl.
+
+ If you build libcurl static (`mode=static`) or debug (`DEBUG=yes`) then the
+ library name will vary and separate builds may be necessary for separate
+ configurations of your project within the same platform. This is discussed in
+ the next section.
+
## Building your own application with a static libcurl
When building an application that uses the static libcurl library on Windows,
- you must define CURL_STATICLIB. Otherwise the linker will look for dynamic
+ you must define `CURL_STATICLIB`. Otherwise the linker will look for dynamic
import symbols.
+ The static library name has an `_a` suffix in the basename and the debug
+ library name has a `_debug` suffix in the basename. For example,
+ `libcurl_a_debug.lib` is a static debug build of libcurl.
+
+ You may need a separate build of libcurl for each VC configuration combination
+ (for example: Debug|Win32, Debug|x64, Release|Win32, Release|x64).
+
+ You must specify any additional dependencies needed by your build of static
+ libcurl (for example:
+ `advapi32.lib;crypt32.lib;normaliz.lib;ws2_32.lib;wldap32.lib`).
+
## Legacy Windows and SSL
When you build curl using the build files in this directory the default SSL
diff --git a/winbuild/gen_resp_file.bat b/winbuild/gen_resp_file.bat
index 77f30bc3c..f8fe5625f 100755
--- a/winbuild/gen_resp_file.bat
+++ b/winbuild/gen_resp_file.bat
@@ -6,7 +6,7 @@ rem * / __| | | | |_) | |
rem * | (__| |_| | _ <| |___
rem * \___|\___/|_| \_\_____|
rem *
-rem * Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+rem * Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
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
@@ -18,6 +18,8 @@ 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 * SPDX-License-Identifier: curl
rem *
rem ***************************************************************************